📄 pvplay.m
字号:
function pvPlay(pv, timeStep, fs, plotOpt)
% pvPlay: Play a pitch vector (pv)
% Usage: pvPlay(pv, timeStep, fs)
%
% For example:
% pv=[57.661699 58.680365 58.680365 58.680365 58.680365 58.680365 58.680365 58.680365 58.680365 58.680365 59.213095 58.680365 59.213095 59.213095 59.213095 59.213095 59.213095 59.213095 59.213095 58.680365 58.680365 58.163541 60.917323 60.917323 60.917323 60.917323 60.330408 58.680365 57.661699 0.000000 57.173995 58.163541 58.680365 58.680365 58.680365 58.680365 58.680365 58.680365 58.680365 58.680365 58.163541 0.000000 0.000000 57.173995 56.699654 56.699654 57.173995 56.699654 56.699654 56.699654 56.699654 56.699654 57.173995 57.173995 57.173995 56.237965 0.000000 55.788268 0.000000 55.788268 55.788268 56.237965 55.788268 55.788268 55.788268 56.237965 56.237965 56.237965 55.788268 55.349958 54.097918 0.000000 56.237965 57.661699 57.661699 57.661699 57.661699 57.661699 57.661699 57.173995 57.173995 57.173995 57.173995 57.661699 57.173995 57.173995 57.173995 57.661699 58.680365 59.213095 59.213095 59.213095 59.213095 59.213095 59.213095 59.762739 59.762739 59.762739 59.762739 59.213095 59.213095 58.680365 57.661699 55.349958 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 52.930351 53.310858 53.310858 53.699915 53.699915 53.699915 53.699915 53.699915 53.699915 53.310858 52.193545 50.807818 0.000000 57.661699 56.237965 56.237965 56.237965 56.237965 56.237965 56.237965 56.237965 56.237965 56.237965 56.237965 56.237965 56.237965 56.237965 55.788268 56.699654 57.173995 57.173995 57.173995 57.173995 57.173995 57.173995 57.661699 57.661699 57.661699 57.661699 57.661699 57.173995 56.699654 55.788268 54.097918 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 54.097918 54.922471 55.349958 55.788268 56.237965 56.237965 56.237965 56.237965 56.237965 55.788268 54.922471 0.000000 0.000000 0.000000 57.661699 57.661699 57.661699 57.661699 57.173995 57.173995 57.173995 57.173995 57.173995 57.173995 57.173995 57.173995 57.173995 58.163541 58.680365 58.680365 59.213095 59.762739 59.213095 59.213095 59.762739 59.762739 59.762739 59.762739 59.762739 59.762739 59.213095 58.680365 57.173995];
% timeStep=256/8000;
% fs=8000;
% plotOpt=1;
% pvPlay(pv, timeStep, fs, plotOpt);
% Roger Jang, 20001209, 20070531
if nargin<1, selfdemo; return; end
if nargin<2, timeStep = 1/16; end
if nargin<3, fs = 8000; end
if nargin<4, plotOpt=0; end
pv = double(pv);
pv(isnan(pv)) = 0; % Convert NaN to 0
wave=pitch2waveMex(pv, timeStep, fs);
sound(wave, fs);
if plotOpt
subplot(2,1,1);
temp=pv;
temp(temp==0)=nan;
plot((1:length(temp))*timeStep, temp, (1:length(temp))*timeStep, temp, '.');
subplot(2,1,2);
plot((1:length(wave))/fs, wave);
end
% ====== Self demo
function selfdemo
pv=[57.661699 58.680365 58.680365 58.680365 58.680365 58.680365 58.680365 58.680365 58.680365 58.680365 59.213095 58.680365 59.213095 59.213095 59.213095 59.213095 59.213095 59.213095 59.213095 58.680365 58.680365 58.163541 60.917323 60.917323 60.917323 60.917323 60.330408 58.680365 57.661699 0.000000 57.173995 58.163541 58.680365 58.680365 58.680365 58.680365 58.680365 58.680365 58.680365 58.680365 58.163541 0.000000 0.000000 57.173995 56.699654 56.699654 57.173995 56.699654 56.699654 56.699654 56.699654 56.699654 57.173995 57.173995 57.173995 56.237965 0.000000 55.788268 0.000000 55.788268 55.788268 56.237965 55.788268 55.788268 55.788268 56.237965 56.237965 56.237965 55.788268 55.349958 54.097918 0.000000 56.237965 57.661699 57.661699 57.661699 57.661699 57.661699 57.661699 57.173995 57.173995 57.173995 57.173995 57.661699 57.173995 57.173995 57.173995 57.661699 58.680365 59.213095 59.213095 59.213095 59.213095 59.213095 59.213095 59.762739 59.762739 59.762739 59.762739 59.213095 59.213095 58.680365 57.661699 55.349958 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 52.930351 53.310858 53.310858 53.699915 53.699915 53.699915 53.699915 53.699915 53.699915 53.310858 52.193545 50.807818 0.000000 57.661699 56.237965 56.237965 56.237965 56.237965 56.237965 56.237965 56.237965 56.237965 56.237965 56.237965 56.237965 56.237965 56.237965 55.788268 56.699654 57.173995 57.173995 57.173995 57.173995 57.173995 57.173995 57.661699 57.661699 57.661699 57.661699 57.661699 57.173995 56.699654 55.788268 54.097918 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 54.097918 54.922471 55.349958 55.788268 56.237965 56.237965 56.237965 56.237965 56.237965 55.788268 54.922471 0.000000 0.000000 0.000000 57.661699 57.661699 57.661699 57.661699 57.173995 57.173995 57.173995 57.173995 57.173995 57.173995 57.173995 57.173995 57.173995 58.163541 58.680365 58.680365 59.213095 59.762739 59.213095 59.213095 59.762739 59.762739 59.762739 59.762739 59.762739 59.762739 59.213095 58.680365 57.173995];
timeStep=256/8000;
fs=8000;
plotOpt=1;
feval(mfilename, pv, timeStep, fs, plotOpt);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -