1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
| clear all A4=440; pt=44100;p0=pt/2; scale=A4/2^(9/12)*2.^((-12:11)/12); map=[1 3 5 6 8 10 12 13 15 17 18 20 22 24 25]; score=[5 5 6 5 8 7 5 5 6 5 9 8 5 5 12 10 8 7 6 6 11 11 10 8 9 8]; rhythm=[0.5 0.5 1 1 1 2 0.5 0.5 1 1 1 2 0.5 0.5 1 1 1 0.5 0.5 2 0.5 0.5 1 1 1 2]; lyric=['祝你生日快乐祝你生日快乐祝你生日快乐祝你生日快乐 ']; for i=1:length(score) if(i<19) fprintf(1,'%c',lyric(i)) elseif (i>20) fprintf(1,'%c',lyric(i-2)) end
if (i==6||i==12||i==18) disp('!'); fprintf(1,'\n'); end if i==26 disp('!'); end wavplay(sin((1:rhythm(i)*p0)/pt*2*pi*scale(map(score(i)))),pt);
end
|
注意:该文章是在2014年所写,代码中的wavplay函数在matlab2014之后的版本被移除,需要自己下载该函数文件,详情见https://ww2.mathworks.cn/matlabcentral/fileexchange/71798-wavplay?s_tid=srchtitle