《东方红音乐合成》由会员分享,可在线阅读,更多相关《东方红音乐合成(8页珍藏版)》请在金锄头文库上搜索。
1、附录:实验一: ?合成东方红的前四小节?计算各乐音的频率?用幅度为 1,抽样频率为 8kHz 的正弦信号表示乐音?用 sound 函数播放?对音乐进行修正(谐波、包络、升降调)1、 计算各乐音的频率:东方红前四小节的曲谱如下图:.则通过比对下面规则:可得出频率依次为:C=523.25;C= 523.25;D= 587.33;G=392;F=349.23;F=349.23;D/2=293.66;G=392每小节有两拍,一拍的时间是0.5s,因此各乐音的持续时间为:乐音55621162时间0.50.250.2510.50.250.2512、 根据 2、 3 实验要求:用幅度为 1,抽样频率为 8k
2、Hz 的正弦信号表示乐音;用 sound 函数播放。编写得到如下程序:clearall;clc;closeall;endT=1/8000;DFH=zeros(1,32/T);F=349.23;G=392;A=440;B=493.88;C=for n=1:32;523.25;D=587.33;E=659.25;t=0:T:ml(n)/2-T;mm=C C D G F F D/2 G C C D 2*F Dz=sin(2*pi*mm(n)*t);CFFD/2G CGFE/2D/2C/2CGAGFFD/2G;DFH(1,(l(n)/2/T+1):(l(n)/2/T+ml(ml=10.50.5210.
3、50.52110.5n)/2/T)=DFH(1,(l(n)/2/T+1):(l(n0.50.5 0.5 1 0.5 0.5 2 1 1 1 0.5)/2/T+ml(n)/2/T)+z;0.51110.50.510.50.50.50.5end0.50.5 0.5 0.5 0.5 0.5 2;sound(DFH);l=zeros(1,32);plot(DFH);forn=2:32axis(15000,18000,-1.5,1.5)l(n)=l(n-1)+ml(n-1);播放的音乐比较生硬没有连续过渡感,与自然音乐差别极大。分析音乐的频谱可得到如下图:整个时域的波形图:10.80.60.40.20-
4、0.2-0.4-0.6-0.8-100.511.522.535x 10部分时域的波形图:1.510.50-0.5-1-1.51.551.61.651.71.751.81.54x 103、 根据实验要求 4:对音乐进行修正(谐波、包络、升降调)对已编写的程序进行完善:升调:在末尾修改为:DFHh1=resample(DFH,100,106);DFHh2=resample(DFHh1,100,106);DFHh3=resample(DFHh2,100,106);sound(DFHh3);plot(DFHh3);axis(15000,18000,-1.5,1.5);1.510.50-0.5-1-1.
5、500.511.522.55x 101.510.50-0.5-1-1.51.551.61.651.71.751.81.54x 10升调之后,可看到对频谱影响不大, 只有部分频率的幅值增加, 但是音乐的整体音调上升了许多。加入谐波,程序如下:clearall;clc;closeall;for n=1:32;T=1/8000;t=0:T:ml(n)/2-T;F=349.23;G=392;A=440;B=493.88;C=z0=0.8*sin(2*pi*mm(n)*t);523.25;D=587.33;H=293.66,E=659.2z1=0.2*sin(4*pi*mm(n)*t);5;z2=0.1
6、*sin(8*pi*mm(n)*t);mm=C C D G F F D/2 G C C D 2*F Dz3=0.05*sin(12*pi*mm(n)*t);CFFD/2G CGFE/2D/2C/2CGz4=0.01*sin(20*pi*mm(n)*t);AGFFD/2G;z=z0+z1+z2+z3+z4;ml=10.50.5210.50.52110.5DFH(1,(l(n)/2/T+1):(l(n)/2/T+ml(0.5 0.5 0.5 1 0.5 0.5 2 1 1 1 0.5n)/2/T)=DFH(1,(l(n)/2/T+1):(l(n0.511 10.50.51 0.50.50.50.5
7、)/2/T+ml(n)/2/T)+z.*exp(-3*t);0.5 0.5 0.5 0.5 0.5 0.5 2;endl=zeros(1,32);DFHl1=resample(DFH,106,100);forn=2:32sound(DFHl1);l(n)=l(n-1)+ml(n-1);plot(DFHl1);endaxis(15000,18000,-1.5,1.5);DFH=zeros(1,32/T);10.80.60.40.20-0.2-0.4-0.6-0.8-100.511.522.55x 10加入谐波后,频谱的波形中各个音调较为明显,且音调之间都有包络,过渡,合成的音乐更加柔和有节奏,贴
8、近自然声音。部分时间的波形:1.510.50-0.5-1-1.51.451.51.551.61.651.71.751.81.44x 10这部分频谱可看到在音调过渡上的细节, 相比未经处理的音乐, 更加贴切自然音乐的频谱。实验二、 ?用傅里叶变换分析音乐Guitar.mat1、载入文件 Guitar.mat,分析 wave2proc 是怎么由 realwave 得到的。利用loadGuitar.mat;载入并用 plot 函数将 realwave、wave2proc 分别画出,得到以下两幅图:源程序如下:clear all ;clc;close load Guitar.mat ;all;wave
9、=resample(realwave,100,243);w=zeros(1,10);fori=1:10fork=0:9w(i)=w(i)+wave(10*k+i);endendw=w/10;wave2=repmat(w,1,10);wave2=resample(wave2,243,100);plot(wave2);xlabel(realwave);figure;plot(wave2proc);xlabel(wave2proc);0.250.20.150.10.050-0.05-0.1-0.150102030405060708090100realwave0.250.20.150.10.050-0
10、.05-0.1-0.15050100150200250wave2proc可以看到, wave2proc 比 realwave 的周期性好得多,去掉了非线性谐波和噪声。在时域做,从图上可以看到, realwave 的数据大约是 10 个周期的共 243 个数据,因此可以用 resample 函数对 realwave 进行重新采样,将采样点提高到 250 个,那么重采样后每个周期有 25 个点,将这 25 个点对应相加求平均值后得到一个周期的值,然后将两个图像重叠显示比较:源程序画图部分改为:clearall ;clc;closeall ;endclear;clc;endloadGuitar.mat;w=w/10;wave=res