0%

【Matlab编程】生日快乐歌(显示歌词)

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;%标准音A4 不同的曲调音调不同scale的取值范围不同
pt=44100;p0=pt/2;%频率
scale=A4/2^(9/12)*2.^((-12:11)/12);%这里可以调节音调高低,eg:改变式子中的-12:11为0:23
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

坚持原创技术分享,您的支持将鼓励我继续创作!