音乐合成综合实验实验报告 本文关键词:实验,合成,报告,综合,音乐
音乐合成综合实验实验报告 本文简介:音乐合成综合报告电信08-10804020102张伟一、实验名称:音乐合成综合实验。二、实验目的:应用《信号与系统——MATLAB综合实验》(高等教育出版社)第一章中所讲的MATLAB编程技术,在电子音乐合成领域做一些练习。通过本实验,熟练运用MATLAB基本指令,以及加强对傅里叶级数、变换的理解。
音乐合成综合实验实验报告 本文内容:
音乐合成综合报告
电信08-1
0804020102
张伟
一、实验名称:音乐合成综合实验。
二、实验目的:应用《信号与系统——MATLAB综合实验》(高等教育出版社)第一章中所讲的MATLAB编程技术,在电子音乐合成领域做一些练习。通过本实验,熟练运用MATLAB基本指令,以及加强对傅里叶级数、变换的理解。
三、实验设备仪器及材料:《信号与系统——MATLAB综合实验》(高等教育出版社)、搭载windows
xp操作系统的pc一台、MATLAB
7.0。
四、试验方法及步骤(根据《信号与系统——MATLAB综合实验》第六章第二节要求所作)
6.2.1
简单的合成音乐
(1)
请根据《东方红》片断的简谱和“十二平均律”计算出该片断中各个乐音的频率,在MATLAB
中生成幅度为1
、抽样频率为8kHz
的正弦信号表示这些乐音。请用sound
函数播放每个乐音,听一听音调是否正确。最后用这一系列乐音信号拼出《东方红》片断,注意控制每个乐音持续的时间要符合节拍,用sound
播放你合成的音乐,听起来感觉如何?
音调正确。
根据图6.1和图6.2,得出相应频率:
“5”——“C”:523.25Hz
“6”——“D”:587.33Hz
“1”——“F”:349.23Hz
“2”——“G”:392Hz
“6(低音)”频率是“6”的一半:93.66Hz
用所给正弦信号生成各个乐音,拼出《东方红》片段,乐感不强,听起来感觉不出好坏,但通过与后面修改的所比较,还是能听出有区别。
源代码:
f=8000;
t=[0:1/f:4-1/f];
t1=t(1:0.5*f);
t2=t(0.5*f+1:0.75*f);
t3=t(0.75*f+1:1*f);
t4=t(1*f+1:2*f);
t5=t(2*f+1:2.5*f);
t6=t(2.5*f+1:2.75*f);
t7=t(2.75*f+1:3*f);
t8=t(3*f+1:4*f);
voiceice1=sin(2*pi*523.25*t1);
voiceice2=sin(2*pi*523.25*t2);
voiceice3=sin(2*pi*587.33*t3);
voiceice4=sin(2*pi*392*t4);
voiceice5=sin(2*pi*349.23*t5);
voiceice6=sin(2*pi*349.23*t6);
voiceice7=sin(2*pi*293.66*t7);
voiceice8=sin(2*pi*392*t8);
voiceice=[voiceice1,voiceice2,voiceice3,voiceice4,voiceice5,voiceice6,voiceice7,voiceice8];
sound(voiceice);
(2)你一定注意到
(1)
的乐曲中相邻乐音之间有“啪”的杂声,这是由于相位不连续产生了高频分量。这种噪声严重影响合成音乐的质量,丧失真实感。为了消除它,我们可以用图
6.5
所示包络修正每个乐音,以保证在乐音的邻接处信号幅度为零。此外建议用指数衰减的包络来表示。
我采用指数衰减来处理此问题。给每个乐音加一个指数衰减的包络:
保持每个语音的第一个采样点的值不变,最后一个采样点的值衰减至原来的1/e2,处理后有效使“啪啪”声音变小。
源代码:
f=8000;
t=[0:1/f:4-1/f];
t1=t(1:0.5*f);
t2=t(0.5*f+1:0.75*f);
t3=t(0.75*f+1:1*f);
t4=t(1*f+1:2*f);
t5=t(2*f+1:2.5*f);
t6=t(2.5*f+1:2.75*f);
t7=t(2.75*f+1:3*f);
t8=t(3*f+1:4*f);
voice1=exp(-2*t1).*sin(2*pi*523.25*t1);
voice2=exp(4*(0.5-t2)).*sin(2*pi*523.25*t2);
voice3=exp(4*(0.75-t3)).*sin(2*pi*587.33*t3);
voice4=exp(1*(1-t4)).*sin(2*pi*392*t4);
voice5=exp(2*(2-t5)).*sin(2*pi*349.23*t5);
voice6=exp(4*(2.5-t6)).*sin(2*pi*349.23*t6);
voice7=exp(4*(2.75-t7)).*sin(2*pi*293.66*t7);
voice8=exp(1*(3-t8)).*sin(2*pi*392*t8);
voice=[voice1,voice2,voice3,voice4,voice5,voice6,voice7,voice8];
sound(voice);
(3)请用最简单的方法将
(2)
中的音乐分别升高和降低一个八度。
(提示:音乐播放的时间可以变化)再难一些,请用resample
函数(也可以用
interp
和
decimate
函数)
将上述音乐升高半个音阶。
间隔八度的音的频率是2倍关系,在合成声音时,在正弦信号内添加系数改变其频率,这样可到升高和降低八度的音乐。升高半个音阶:
用resample函数本采样频率。
源代码:
升高八度
f=8000;
t=[0:1/f:4-1/f];
t1=t(1:0.5*f);
t2=t(0.5*f+1:0.75*f);
t3=t(0.75*f+1:1*f);
t4=t(1*f+1:2*f);
t5=t(2*f+1:2.5*f);
t6=t(2.5*f+1:2.75*f);
t7=t(2.75*f+1:3*f);
t8=t(3*f+1:4*f);
voiceice1=exp(-4*t1).*sin(4*pi*523.25*t1);
voiceice2=exp(8*(0.5-t2)).*sin(4*pi*523.25*t2);
voiceice3=exp(8*(0.75-t3)).*sin(4*pi*587.33*t3);
voiceice4=exp(2*(1-t4)).*sin(4*pi*392*t4);
voiceice5=exp(4*(2-t5)).*sin(4*pi*349.23*t5);
voiceice6=exp(8*(2.5-t6)).*sin(4*pi*349.23*t6);
voiceice7=exp(8*(2.75-t7)).*sin(4*pi*293.66*t7);
voiceice8=exp(2*(3-t8)).*sin(4*pi*392*t8);
voiceice=[voiceice1,voiceice2,voiceice3,voiceice4,voiceice5,voiceice6,voiceice7,voiceice8];
sound(voiceice);
降低八度
f=8000;
t=[0:1/f:4-1/f];
t1=t(1:0.5*f);
t2=t(0.5*f+1:0.75*f);
t3=t(0.75*f+1:1*f);
t4=t(1*f+1:2*f);
t5=t(2*f+1:2.5*f);
t6=t(2.5*f+1:2.75*f);
t7=t(2.75*f+1:3*f);
t8=t(3*f+1:4*f);
voiceice1=exp(-4*t1).*sin(pi*523.25*t1);
voiceice2=exp(8*(0.5-t2)).*sin(pi*523.25*t2);
voiceice3=exp(8*(0.75-t3)).*sin(pi*587.33*t3);
voiceice4=exp(2*(1-t4)).*sin(pi*392*t4);
voiceice5=exp(4*(2-t5)).*sin(pi*349.23*t5);
voiceice6=exp(8*(2.5-t6)).*sin(pi*349.23*t6);
voiceice7=exp(8*(2.75-t7)).*sin(pi*293.66*t7);
voiceice8=exp(2*(3-t8)).*sin(pi*392*t8);
voiceice=[voiceice1,voiceice2,voiceice3,voiceice4,voiceice5,voiceice6,voiceice7,voiceice8];
sound(voiceice);
(4)试着在(2)的音乐中增加一些谐波分量,听一听音乐是否更有“厚度”了?注意谐波分量的能量要小,否则掩盖住基音反而听不清音调了。(如果选择基波幅度为
1
,二次谐波幅度0.2,三次谐波幅度0.3,听起来像不像风琴?)
没有听过单独听过风琴,所以不太清楚像不像风琴。
f=8000;
t=[0:1/f:4-1/f];
t1=t(1:0.5*f);
t2=t(0.5*f+1:0.75*f);
t3=t(0.75*f+1:1*f);
t4=t(1*f+1:2*f);
t5=t(2*f+1:2.5*f);
t6=t(2.5*f+1:2.75*f);
t7=t(2.75*f+1:3*f);
t8=t(3*f+1:4*f);
p1=523.25;
p2=523.25;
p3=587.33;
p4=392;
p5=349.23;
p6=349.23;
p7=293.66;
p8=392;
voiceice1=exp(-4*t1).*(sin(2*pi*p1*t1)+0.2*sin(4*pi*p1*t1)+0.3*sin(6*pi*p1*t1));
voiceice2=exp(8*(0.5-t2)).*(sin(2*pi*p2*t2)+0.2*sin(4*pi*p2*t2)+0.3*sin(6*pi*p2*t2));
voiceice3=exp(8*(0.75-t3)).*(sin(2*pi*p3*t3)+0.2*sin(4*pi*p3*t3)+0.3*sin(6*pi*p3*t3));
voiceice4=exp(2*(1-t4)).*(sin(2*pi*p4*t4)+0.2*sin(4*pi*p4*t4)+0.3*sin(6*pi*p4*t4));
voiceice5=exp(4*(2-t5)).*(sin(2*pi*p5*t5)+0.2*sin(4*pi*p5*t5)+0.3*sin(6*pi*p5*t5));
voiceice6=exp(8*(2.5-t6)).*(sin(2*pi*p6*t6)+0.2*sin(4*pi*p6*t6)+0.3*sin(6*pi*p6*t6));
voiceice7=exp(8*(2.75-t7)).*(sin(2*pi*p7*t7)+0.2*sin(4*pi*p7*t7)+0.3*sin(6*pi*p7*t7));
voiceice8=exp(2*(3-t8)).*(sin(2*pi*p8*t8)+0.2*sin(4*pi*p8*t8)+0.3*sin(6*pi*p8*t8));
voiceice=[voiceice1,voiceice2,voiceice3,voiceice4,voiceice5,voiceice6,voiceice7,voiceice8];
sound(voiceice);
(5)自选其它音乐合成,例如贝多芬第五交响乐的开头两小节。
我选择的是《一分钱》的主要旋律,简谱如下:
1=D
2/4
5
1
|
6
1
5
|
3
5
2
3
|
5
0
|
3
5
6
1
|
5
6
5
3
|
5
1
3
|
2
0
|
源代码:
f=8000;
t=[0:1/f:3.5-1/f];
t1=t(1:0.5*f);
t2=t(0.5*f+1:1*f);
t3=t(1*f+1:1.25*f);
t4=t(1.25*f+1:1.5*f);
t5=t(1.5*f+1:2*f);
t6=t(2*f+1:2.25*f);
t7=t(2.25*f+1:2.5*f);
t8=t(2.5*f+1:2.75*f);
t9=t(2.75*f+1:3*f);
t10=t(3*f+1:3.5*f);
voiceice1=exp(-2*t1).*sin(2*pi*392*t1);
voiceice2=exp(2*(0.5-t2)).*sin(2*pi*261.63*t2);
voiceice3=exp(4*(1-t3)).*sin(2*pi*440*t3);
voiceice4=exp(4*(1.25-t4)).*sin(2*pi*261.63*t4);
voiceice5=exp(2*(1.5-t5)).*sin(2*pi*392*t5);
voiceice6=exp(4*(2-t6)).*sin(2*pi*329.63*t6);
voiceice7=exp(4*(2.25-t7)).*sin(2*pi*392*t7);
voiceice8=exp(4*(2.5-t8)).*sin(2*pi*293.66*t8);
voiceice9=exp(4*(2.75-t9)).*sin(2*pi*329.63*t9);
voiceice10=exp(2*(3-t10)).*sin(2*pi*392*t10);
voiceice=[voiceice1,voiceice2,voiceice3,voiceice4,voiceice5,voiceice6,voiceice7,voiceice8,voiceice9,voiceice10];
sound(voiceice);
后面附上《东方红》和《一分钱》的源文件Untitled.m与YFQ.m