《使用matlab进行简单音乐合成.docx》由会员分享,可在线阅读,更多相关《使用matlab进行简单音乐合成.docx(10页珍藏版)》请在优知文库上搜索。
1、信号与系统-综合试验之音乐合成(1)请依据东方红片断的简诏和“十二平均律”计算出该片断中各个乐音的频隼,AMAT1.AB中生成幅度为1、抽样频率为8kHz的正弦信号表示这些乐音。isound函数播放每个乐音,听一听音调是否正确。最终用这一系列乐音信号拼出东方红片断,留意限制每个乐音持续的时间要符合节拍,Jf1.sound播放你合成的音乐,听起来感觉如何?代码如F:f-8000;t2=(0:1./f:1.;t4-0:1./f:0.5;t8-(0:1./f:0.2S);ng5=523.35;omg6=587.33;omg2-i392;omg1.-349.23;Omg6129366;m1.=sin(
2、2*pi*omg5*t4);m2三sin(2*pi*omg5fcrt8);m3-si(2*pi*omg6*t8);m4=sin(2*i*omg2*t2);m6=sin(2*pi*omg1.*t4);m7-sin(2fcpiAo?ng1.*t8);m8-si(2*pi*omg61*t8);m9三sin(2*i*ong2*t2);m=m1.m2m3m4m6m7m8m9;sound(m);听的时候发觉在相邻乐音之间有杂音,这是由于相位不连续造成的。你为定留恚到(1)的乐曲中和守乐音之间有“啪”的杂声,这是由于相位不连续产生了高频重量。这种噪声严峻影响合成音乐的质量,丢失其实感。为了消退它,我们可以用
3、图1.5所示包络修正每个乐音,以保证在乐音的邻接处信号幅度为零。此外城议用指数求成的包络来表示,我采纳的是指数衰减的包络代码如下:f-8000;t2=0:1./f:1.;t4=0:1./f:0.5J;t8-(0:1./f:0.25;Omg5-523.35;Cmg6-587.33;On1.g2=392;Oeg1.-349.23;Omg61-29366;m1.三e(-2*t4).*sin(2*i*omg5*t4);m2=exp(-4*t8).*sin(2*pi*omg5*t8);m3-ep(-4t8).*sin(2*pi*omg6*t8);m4-ep(-1.*t2).*sin(2*pi*omg2*
4、t2);m6三e(-2*t4).*sin(2*i*omg1.*t4);m7=exp(-4*t8).*sin(2*pi*omg1.*t8);m8-exp(-4*t8).*sin(2*pi*o.*sin(2*i*2*xng5*t4)0.3*exp-2*t4).*sin;m2三ep(-4*t8).*sin(2fcpi*omg5fct8)+0.2*exp(-4*t8.*sin(2*pi*2*o11g5fct8)0.3*e-4*t8.*sin.*sin(2*i*2*xng6*t8)+0.3*exp(-4*t8).*sin;m4=ep(-1.*t2).*sin(2fcpiAomg2*t2)0.2*exp(
5、-1*t2,sin(2*pi*2*omg2*t2)0.3*ep-1.*t2).*sing2*t2;m6=e(-2*t4).*sin(2*i*.*sin(2*i*2*omg1.*t4)0.3*exp(-2*t4).*sing1.*t4;m7三ep(-4t).*sin(2*pi*omg1.fct8)0.2*exp(-4*t8.fcain(2*pi2*omg1.fct8)0.3*e1-4*t8.*sin.*sin(2*pi2*xng2*t2)0.3*e.*sin;m=m1.m2m3m4m6m7m8m9;sound(m);加入谐波正量后,音色有所改变,感觉更加曝亮一些。(5)自选其它音乐合成.例如贝多
6、芬第五交响乐的开头两小节。我选取的是哈天的第一句代码如下:f-000;t2=0:1./f:1.;t4=0:1./f:0.5J;t8-(0:1./f:0.25;t-O三1.f:0.125);OEg1.-392;Ofng2=440;omg3*493.8;omg4-S23.2S;Omg5=58733;On1.g6=659.25;On1.g7-698.45;的g51-293.66;m0三0;m1.=exp(-2*t4).*sin(2*pi*xng5*t4);m2-ep(-2t4).*sin(2fcpi*of11g54ft4);m3-ep(-2t4).*sin(2*pi*omg1.*t4);m4=e(-
7、1.*t2).*sin(2*i*omg1.*t2);m5=exp(-2*t4).*sin(2*pi*ong2*t4);m6三ep(-2t2).*sin(2fcpi*omg3*t2);m7-ep(-2*t4).*sin(2*pi*omg5*t4);m8=e(-2*t4).*sin(2*i*omg5*t4);m9=exp(-2*t4).*sin(2*pi*omg1.*t4);m1.三ep(-2*t4).*sin(2*pi*omg1.*t4);m1.1.-e-4*t81.*sin2i*omg2t);m1.2三(-4*t8).*sin(2*i*omg3*t8);m!3=exp(-4*t8).*sin2
8、*pi*omg2*t8);m1.4-ep-4*t8).*sin2*pi*omg1.t8);m1.S-ep-2*t2).*sin2i*omg51*t2);m-mm1.m2m3m4m5m6m7r11m9m1.m1.1m1.2m1.3m1.4m15J;sound(m);(6)先用WaVread函数栽入光盘中的fmt.wav文件,播放出来听听效果如何?是否比刚才的合成音乐真实多了?三wavread(fr.w.v);sound(x);(7)你知道后处理的WaVe2proc是如何从4实值rea1.wave中得到的么?这个ffi处理过程可以去除其实乐为中的非线性谐波和噪声,对于正确分析音调是特别交要的。提示
9、:从时域做,可以接着运用resamp1.e的数。roahavQ中的波形有十个周期,要除去其中的噪声可以采纳时域求均值的方法。步骤如下:首先用JreSamP1.e函数将其采样率增大为十倍,再等分十份取平均,然后重狂这个平均后的波形十次,还原其长度,最终在用resamp1.e函数还原采样率到1/10。代码如下:1.oadCGuitar.51AT,);wavetemp-zeros(1.ength/10;endmywave2proc=repcnat(wavetemp,10/1);mywave2proc-resamp1.e(mywave2procr1.t10);figure;subp1.ot3,1z1);piot(rea1.wave);subp1.ot3/1,2);p1.ot(wave2proc);subp1.ot3j1/3);p1.ot(mywave2proc);0.50-0.5050100150200250-0.E1.1J1.1050WO1502002500.5-0.511,110501001502250(8)这段音乐的基频是多少?是哪个音调?请用傅里叶级致或者变换的方法分析它的谐波点量分别是什么。提示:筠洁的方法是近似取出一个周期求傅里叶蛟数但这样明显不精确,因为你应当已经发觉卷音周期不是筌数(这里不允许运用resamp1.e函数)。困难