音乐的合成.docx
- 文档编号:23102840
- 上传时间:2023-04-30
- 格式:DOCX
- 页数:20
- 大小:393.93KB
音乐的合成.docx
《音乐的合成.docx》由会员分享,可在线阅读,更多相关《音乐的合成.docx(20页珍藏版)》请在冰豆网上搜索。
音乐的合成
学号:
信号与系统
设计性实验报告
学院电信学院专业
班级
学生
指导教师(职称)
完成时间2016年5月30日至2016年6月16日
目录
乐曲解析………………………………………………………………………………………..
音乐的合成……………………………………………………………………………………
1.1音乐的简单合成…………………………………………………….
1.2音乐中噪声的消除…………………………………………………………………..
1.3升高、降低八度…………………………………………………….
1.4加入谐波……………………………………………………………………………..
音乐的傅里叶分析…………………………………………………………………………
总结………………………………………………………………………
乐曲解析
乐音的基本特征可以用基波频率、谐波频率和包络波形三个方面来描述,我们用大写英文字母CDEFGAB表示每个音的“音名”(或称为“音调”),当指定某一音名时,它对应固定的基波信号频率。
图1表示钢琴的键盘结构,并注明了每个琴键对应的音名和基波频率值。
这些频率值是按“十二平均律”计算导出,下面解释计算规则:
图1钢琴键盘和相应频率
从图1可以看到,靠下边的G键称为小字组G,它的频率值f0=196Hz,而靠上面的另一个G键是小字一组G,它的频率值是f1=392Hz。
两者为二倍频率关系,即f1相当于f0的二次谐波。
也称为8度音或倍频程Octave(即我们画频响特性图时所用的术语“倍频程”)。
根据《seeyouagain》简谱和十二平均律计算出该小节每个乐音的频率,在MATLAB中生成幅度为1,抽样频率为4000kHz的正弦信号表示这些乐音,用sound播放合成的音乐。
由图可知《seeyouagain》的曲调定为G,即1=G,对应的频率为293.66Hz,据此可以计算出其他乐音的频率,类推计算出各乐音对应的频率与时间见表2
乐音对应的频率
乐音
5
2
1
5
5
1
2
3
频率
293.66
440
392
293.66
293.66
392
440
493.88
乐音
2
1
2
5
2
1
5
5
频率
440
392
440
293.66
440
392
293.66
392
乐音
1
2
3
2
1
2
5
2
频率
440
493.88
440
392
440
293.66
440
392
乐音
1
5
5
1
2
3
2
1
频率
293.66
392
293.66
293.66
392
440
493.88
440
乐音
2
5
2
1
5
5
1
3
频率
392
440
293.66
440
392
293.66
293.66
196
乐音
5
6
5
5
0
1
2
2
频率
246.94
293.66
349.63
293.66
293.66
0
196
220
乐音对应的时间
乐音
5
2
1
5
5
1
2
3
时间
0.5
0.5
0.5
0.25
0.25
0.25
0.25
0.25
乐音
2
1
2
5
2
1
5
5
时间
0.25
0.5
0.5
0.5
0.5
0.5
0.25
0.25
乐音
1
2
3
2
1
2
5
2
时间
0.25
0.25
0.25
0.25
0.5
0.5
0.5
0.5
乐音
1
5
5
1
2
3
2
1
时间
0.5
0.25
0.25
0.25
0.25
0.25
0.25
0.5
乐音
2
5
2
1
5
5
1
3
时间
0.5
0.5
0.5
0.5
0.5
0.5
0.5
0.5
乐音
5
6
5
5
0
1
2
2
时间
0.5
1.5
0.5
1
0.75
0.25
0.5
0.5
表2
在MATLAB中表示乐音所用的抽样频率为fs=3800Hz,也就是所1s钟内有3800个点,抽样点数的多少就可表示出每个乐音的持续时间的长短。
用一个行向量来存储这段音乐对应的抽样点,在用sound函数播放即可。
第1章音乐的合成
1.1音乐的简单合成
根据《seeyouagain》片段的简谱和“十二平均律”计算出该片段中各个乐音的频率,在MATLAB中生成幅度为1、抽样频率为3800kHz的正弦信号表示这些乐音。
请用sound函数播放每个乐音,听一听音调是否正确,最后用这一系列乐音信号拼出《seeyouagain》片段,注意控制每个乐音持续的时间要符合节拍,用sound函数播放合成的乐音。
clear;clc;
fs=3800;%抽样频率
f=[293.66440392293.66293.66392440493.88440392440293.66440392293.66293.66392440493.88440392440293.66440392293.66293.66392440493.88440392440293.66440392293.66293.66196246.94293.66329.63293.66293.660196220220196220246.940246.94293.66329.63349.23329.63293.66246.9422022019622022022019600196246.94293.66329.63293.66293.660196220220196246.940220246.94293.66329.63392440493.88440392293.66329.63392];
%各个乐音对应的频率
time=(3/2)*fs*[1/2,1/2,1/2,1/2,1/2,1/4,1/4,1/4,1/4,1/4,1/4,1/2,1/2,1/2,1/2,1/2,1/4,1/4,1/4,1/4,1/4,1/4,1/2,1/2,1/2,1/2,1/2,1/4,1/4,1/4,1/4,1/4,1/4,1/2,1/2,1/2,1/2,1/2,1/2,1/2,1/2,3/2,1/2,1,3/4,1/4,1/2,1/2,1/2,1/2,1,1/2,1/4,1/4,1/2,1/2,1/2,1/2,1/2,1/2,1/2,1/2,1/2,1/2,1/2,1/2,1,1/4,1/4,1/4,1/4,3/2,1/2,1,3/4,1/4,1/2,1/2,1/2,1/2,1,1/4,1/4,1/2,1/2,1/2,1/2,1/2,1/2,1/2,1/4,1/4,1/2];%各个乐音的抽样点数
N=length(time);%这段音乐的总抽样点数
east=zeros(1,N);%用east向量来储存抽样点
n=1;
fornum=1:
N%利用循环产生抽样数据,num表示乐音编号
t=1/fs:
1/fs:
time(num)/fs;%产生第num个乐音的抽样点
east(n:
n+time(num)-1)=sin(2*pi*f(num)*t);%抽样点对应的幅值
n=n+time(num);
end
sound(east,8000);%播放音乐
分析:
从运行结果可以听出,在每个乐音之间会有比较明显的“啪啪”声,这就是杂音,所以接下来要把杂音消除。
1.2音乐中噪声的消除
原理分析:
每个乐音之间有比较明显的“啪啪”声,是由于相位不连续产生了高频分量。
这种噪声严重影响合成音乐的质量,丧失真实感,下面通过加包络来消除杂音。
最简单的包络为指数衰减。
最简单的指数衰减是对每个音乘以
因子,在实验中首先加的是
的衰减,这种衰减方法使用的是相同速度的衰减,但是发现噪音并没有完全消除,播放的音乐效果不是很好,感觉音乐起伏性不强。
于是采用不同速度的衰减,根据乐音持续时间的长短来确定衰减的快慢,乐音持续时间越长,衰减的越慢,持续时间越短,衰减的越快。
clear;clc;
fs=3800;%抽样频率
f=[293.66440392293.66293.66392440493.88440392440293.66440392293.66293.66392440493.88440392440293.66440392293.66293.66392440493.88440392440293.66440392293.66293.66196246.94293.66329.63293.66293.660196220220196220246.940246.94293.66329.63349.23329.63293.66246.9422022019622022022019600196246.94293.66329.63293.66293.660196220220196246.940220246.94293.66329.63392440493.88440392293.66329.63392];
time=(3/2)*fs*[1/2,1/2,1/2,1/2,1/2,1/4,1/4,1/4,1/4,1/4,1/4,1/2,1/2,1/2,1/2,1/2,1/4,1/4,1/4,1/4,1/4,1/4,1/2,1/2,1/2,1/2,1/2,1/4,1/4,1/4,1/4,1/4,1/4,1/2,1/2,1/2,1/2,1/2,1/2,1/2,1/2,3/2,1/2,1,3/4,1/4,1/2,1/2,1/2,1/2,1,1/2,1/4,1/4,1/2,1/2,1/2,1/2,1/2,1/2,1/2,1/2,1/2,1/2,1/2,1/2,1,1/4,1/4,1/4,1/4,3/2,1/2,1,3/4,1/4,1/2,1/2,1/2,1/2,1,1/4,1/4,1/2,1/2,1/2,1/2,1/2,1/2,1/2,1/4,1/4,1/2];%各个乐音对应的频
N=length(time);%这段音乐的总抽样点数
xio=zeros(1,N);%用east向量来储存抽样点
n=1;
fornum=1:
N%利用循环产生抽样数据,num表示乐音编号
t=1/fs:
1/fs:
(time(num))/fs;%产生第num个乐音的抽样点
P=zeros(1,time(num));%P为存储包络数据的向量
L=(time(num))*[01/5333/1000333/5001];%包络线端点对应的横坐标
T=[01.5110];%包络线端点对应的纵坐标
s=1;
b=1:
1:
time(num);%产生包络线抽样点
fork=1:
4
P(s:
L(k+1)-1)=(T(k+1)-T(k))/(L(k+1)-L(k))*(b(s:
L(k+1)-1)-L(k+1)*ones(1,L(k+1)-s))+T(k+1)*ones(1,L(k+1)-s);%包络线直线方程通式
s=L(k+1);
end
hetangyese(n:
n+time(num)-1)=sin(2*pi*f(num)*t).*P(1:
time(num));
%给第num个乐音加上包络
n=n+time(num);
end
sound(hetangyese,8000);
plot(hetangyese);
wavwrite(hetangyese,'hetangyese2')
从播放的的声音可以听出,杂音已经基本消除,听起来更有节奏感。
1.3升高、降低八度
升高八度
clear;clc;
fs=3800;%抽样频率
f=2*[293.66440392293.66293.66392440493.88440392440293.66440392293.66293.66392440493.88440392440293.66440392293.66293.66392440493.88440392440293.66440392293.66293.66196246.94293.66329.63293.66293.660196220220196220246.940246.94293.66329.63349.23329.63293.66246.9422022019622022022019600196246.94293.66329.63293.66293.660196220220196246.940220246.94293.66329.63392440493.88440392293.66329.63392];
%各个乐音对应的频率
time=(3/2)*fs*[1/2,1/2,1/2,1/2,1/2,1/4,1/4,1/4,1/4,1/4,1/4,1/2,1/2,1/2,1/2,1/2,1/4,1/4,1/4,1/4,1/4,1/4,1/2,1/2,1/2,1/2,1/2,1/4,1/4,1/4,1/4,1/4,1/4,1/2,1/2,1/2,1/2,1/2,1/2,1/2,1/2,3/2,1/2,1,3/4,1/4,1/2,1/2,1/2,1/2,1,1/2,1/4,1/4,1/2,1/2,1/2,1/2,1/2,1/2,1/2,1/2,1/2,1/2,1/2,1/2,1,1/4,1/4,1/4,1/4,3/2,1/2,1,3/4,1/4,1/2,1/2,1/2,1/2,1,1/4,1/4,1/2,1/2,1/2,1/2,1/2,1/2,1/2,1/4,1/4,1/2];%各个乐音的抽样点数
N=length(time);%这段音乐的总抽样点数
xio=zeros(1,N);%用east向量来储存抽样点
n=1;
fornum=1:
N%利用循环产生抽样数据,num表示乐音编号
t=1/fs:
1/fs:
(time(num))/fs;%产生第num个乐音的抽样点
P=zeros(1,time(num));%P为存储包络数据的向量
L=(time(num))*[01/5333/1000333/5001];%包络线端点对应的横坐标
T=[01.5110];%包络线端点对应的纵坐标
s=1;
b=1:
1:
time(num);%产生包络线抽样点
for
k=1:
4P(s:
L(k+1)-1)=(T(k+1)-T(k))/(L(k+1)-L(k))*(b(s:
L(k+1)-1)-L(k+1)*ones(1,L(k+1)-s))+T(k+1)*ones(1,L(k+1)-s);%包络线直线方程通式
s=L(k+1);
end
hetangyese(n:
n+time(num)-1)=sin(2*pi*f(num)*t).*P((3/2):
time(num));
%给第num个乐音加上包络
n=n+time(num);
end
sound(hetangyese,8000);
plot(hetangyese);
wavwrite(hetangyese,'hetangyese2')
降低八度
clear;clc;
fs=3800;%抽样频率
f=(1/2)*[293.66440392293.66293.66392440493.88440392440293.66440392293.66293.66392440493.88440392440293.66440392293.66293.66392440493.88440392440293.66440392293.66293.66196246.94293.66329.63293.66293.660196220220196220246.940246.94293.66329.63349.23329.63293.66246.9422022019622022022019600196246.94293.66329.63293.66293.660196220220196246.940220246.94293.66329.63392440493.88440392293.66329.63392];
%各个乐音对应的频率
time=(3/2)*fs*[1/2,1/2,1/2,1/2,1/2,1/4,1/4,1/4,1/4,1/4,1/4,1/2,1/2,1/2,1/2,1/2,1/4,1/4,1/4,1/4,1/4,1/4,1/2,1/2,1/2,1/2,1/2,1/4,1/4,1/4,1/4,1/4,1/4,1/2,1/2,1/2,1/2,1/2,1/2,1/2,1/2,3/2,1/2,1,3/4,1/4,1/2,1/2,1/2,1/2,1,1/2,1/4,1/4,1/2,1/2,1/2,1/2,1/2,1/2,1/2,1/2,1/2,1/2,1/2,1/2,1,1/4,1/4,1/4,1/4,3/2,1/2,1,3/4,1/4,1/2,1/2,1/2,1/2,1,1/4,1/4,1/2,1/2,1/2,1/2,1/2,1/2,1/2,1/4,1/4,1/2];%各个乐音的抽样点数
N=length(time);%这段音乐的总抽样点数
xio=zeros(1,N);%用east向量来储存抽样点
n=1;
fornum=1:
N%利用循环产生抽样数据,num表示乐音编号
t=1/fs:
1/fs:
(time(num))/fs;%产生第num个乐音的抽样点
P=zeros(1,time(num));%P为存储包络数据的向量
L=(time(num))*[01/5333/1000333/5001];%包络线端点对应的横坐标
T=[01.5110];%包络线端点对应的纵坐标
s=1;
b=1:
1:
time(num);%产生包络线抽样点
for
k=1:
4P(s:
L(k+1)-1)=(T(k+1)-T(k))/(L(k+1)-L(k))*(b(s:
L(k+1)-1)-L(k+1)*ones(1,L(k+1)-s))+T(k+1)*ones(1,L(k+1)-s);%包络线直线方程通式
s=L(k+1);
end
hetangyese(n:
n+time(num)-1)=sin(2*pi*f(num)*t).*P((3/2):
time(num));
%给第num个乐音加上包络
n=n+time(num);
end
sound(hetangyese,8000);
plot(hetangyese);
wavwrite(hetangyese,'hetangyese2')
1.4加入谐波
clear;clc;
fs=3800;%抽样频率
f=[293.66440392293.66293.66392440493.88440392440293.66440392293.66293.66392440493.88440392440293.66440392293.66293.66392440493.88440392440293.66440392293.66293.66196246.94293.66329.63293.66293.660196220220196220246.940246.94293.66329.63349.23329.63293.66246.9422022019622022022019600196246.94293.66329.63293.66293.660196220220196246.940220246.94293.66329.63392440493.88440392293.66329.63392];
time=(7/4)*fs*[1/2,1/2,1/2,1/2,1/2,1/4,1/4,1/4,1/4,1/4,1/4,1/2,1/2,1/2,1/2,1/2,1/4,1/4,1/4,1/4,1/4,1/4,1/2,1/2,1/2,1/2,1/2,1/4,1/4,1/4,1/4,1/4,1/4,1/2,1/2,1/2,1/2,1/2,1/2,1/2,1/2,3/2,1/2,1,3/4,1/4,1/2,1/2,1/2,1/2,1,1/2,1/4,1/4,1/2,1/2,1/2,1/2,1/2,1/2,1/2,1/2,1/2,1/2,1/2,1/2,1,1/4,1/4,1/4,1/4,3/2,1/2,1,3/4,1/4,1/2,1/2,1/2,1/2,1,1/4,1/4,1/2,1/2,1/2,1/2,1/2,1/2,1/2,1/4,1/4,1/2];%各个乐音对应的频率
N=length(time);%这段音乐的总抽样点数
xio=zeros(1,N);%用east向量来储存抽样点
n=1;
fornum=1:
N%利用循环产生抽样数据,num表示乐音编号
t=1/fs:
1/fs:
(time(num))/fs;%产生第num个乐音的抽样点
P=zeros(1,time(num));%P为存储包络数据的向量
L=(time(num))*[01/5333/1000333/5001];%包络线端点对应的横坐标
T=[01.5110];%包络线端点对应的纵坐标
s=1;
b=1:
1:
time(num);%产生包络线抽样点
fork=1:
4
P(s:
L(k+1)-1)=(T(k+1)-T(k))/(L(k+1)-L(k))*(b(s:
L(k+1)-1)-L(k+1)*ones(1,L(k+1)-s))+T(k+1)*ones(1,L(k+1)-s);%包络线直线方程通式
s=L(k+1);
end
m=[10.30.2];%波形幅值矩阵
ss=zeros(1,lengt
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 音乐 合成
![提示](https://static.bdocx.com/images/bang_tan.gif)