--------------------------校验:_____________-----------------------日期:_____________matlab音乐处理合成实验报告MATLAB高级编程与工程应用语音合成综合实验姓名:班级:学号:日期:简单的合成音乐(1)请根据《东方红》片断的简谱和“十二平均律”计算出该片断中各个乐音的频率,在MATLAB中生成幅度为1、抽样频率为8kHz的正弦信号表示这些乐音。请用sound函数播放每个乐音,听一听音调是否正确。最后用这一系列乐音信号拼出《东方红》片断,注意控制每个乐音持续的时间要符合节拍,用sound播放你合成的音乐,听起来感觉如何?由“十二平均律”计算得到各个乐音的频率:“5”——“C”:“6”——“D”:“1”——“F”:“2”——“G”:392Hz“6.”频率是“6”的一半:2f=8000;T=1/f;);total=[part1,part2,part3,part4,part5,part6,part7,part8];sound(total); 试听发现,合成后的音乐基本保持了《东方红》的音调,但声音比较沉闷,相邻乐音之间有比较明显的“啪”的杂音。 (2)你一定注意到(1)的乐曲中相邻乐音之间有“啪”的杂声,这是由于相位不连续产生了高频分量。这种噪声严重影响合成音乐的质量,丧失真实感。为了消除它,我们可以用图所示包络修正每个乐音,以保证在乐音的邻接处信号幅度为零。此外建议用指数衰减的包络来表示。functionenvelope=envelope_line(t)envelope(1:floor(t/8))=linspace(0,1,floor(t/8));part5=s 试听结果杂音明显减少,但声音还比较生硬,尝试用指数衰减的包络来表示。 试听结果比较好,声音很圆润,但仔细听的话也能发现杂音。 (3)请用最简单的方法将(2)中的音乐分别升高和降低一个八度。(提示:音乐播放的时间可以变化)再难一些,请用resample函数(也可以用interp和decimate函数)将上述音乐升高半个音阶。(提示:视计算复杂度,不必特别精确)方法一:在正弦信号内添加系数改变其频率。升高八度:;high8_total=[part1,part2,part3,part4,part5,part6,part7,part8];sound(high8_total);降低八度:part7=sin(1*pi**t8).*exp(2*t8);low8_total=[part1,part2,part3,part4,part5,part6,part7,part8];sound(low8_total);方法二: 直接调用resample函数。升高八度:high8_total=resample(total,1,2);降低八度:low8_total=resample(total,2,1);升高半个音阶:根据“十二平均律”highhalf_total=resample(total,1,2); (4)试着在(2)的音乐中增加一些谐波分量,听一听音乐是否更有“厚度”了?注意谐波分量的能量要小,否则掩盖住基音反而听不清音调了。(如果选择基波幅度为1,二次谐波幅度0:2,三次谐波幅度0:3,听起来像不像象风琴?)试听结果确实变得醇厚了,有风琴的感觉。 (5)自选其它音乐合成,例如贝多芬第五交响乐的开头两小节。 我选取了一首儿歌《粉刷匠》f=8000;T=1/f;5*t8).*exp(4*t8);total=[part1,part2,part3,part4,part5,part6,part7,part8,part9,part10,part11,part12];plot(total);sound(total);用傅里叶级数分析音乐(6)先用wavread函数载入光盘中的文件,播放出来听听效果如何?是否比刚才的合成音乐真实多了?()x=wavread();plot(x);sound(x);试听结果的确真实许多。(7)你知道待处理的wave2proc是如何从真实值realwave中得到的么?这个预处理过程可以去除真实乐曲中的非线性谐波和噪声,对于正确分析音调是非常重要的。提示:从时域做,可以继续使用resample函数。 这题开始时没有理解题目要求,不知道如何入手,于是在CSDN上查找帮助。要去除非线性杂波和噪声,首先要找出它们与真实乐曲的区别。非线性杂波和噪声都是随机产生的,不具有周期性,因此要在周期性的乐音中将其去除,可以考虑将真实乐曲多次叠加再取平均值。乐音可以想象,叠加次数越多,最后得到的平均后的乐音越具有周期性。 读出realwave波形,发现采样点为243,重复10次,可得
matlab音乐处理合成实验报告 来自淘豆网m.daumloan.com转载请标明出处.