音乐的合成Word格式文档下载.docx
《音乐的合成Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《音乐的合成Word格式文档下载.docx(20页珍藏版)》请在冰点文库上搜索。
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
3
频率
293.66
440
392
493.88
3
2
196
6
246.94
349.63
220
乐音对应的时间
时间
0.5
0.25
1.5
0.75
表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音乐中噪声的消除
原理分析:
每个乐音之间有比较明显的“啪啪”声,是由于相位不连续产生了高频分量。
这种噪声严重影响合成音乐的质量,丧失真实感,下面通过加包络来消除杂音。
最简单的包络为指数衰减。
最简单的指数衰减是对每个音乘以
因子,在实验中首先加的是
的衰减,这种衰减方法使用的是相同速度的衰减,但是发现噪音并没有完全消除,播放的音乐效果不是很好,感觉音乐起伏性不强。
于是采用不同速度的衰减,根据乐音持续时间的长短来确定衰减的快慢,乐音持续时间越长,衰减的越慢,持续时间越短,衰减的越快。
%各个乐音对应的频
xio=zeros(1,N);
N%利用循环产生抽样数据,num表示乐音编号
(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个乐音加上包络
sound(hetangyese,8000);
plot(hetangyese);
wavwrite(hetangyese,'
hetangyese2'
)
从播放的的声音可以听出,杂音已经基本消除,听起来更有节奏感。
1.3升高、降低八度
升高八度
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];
%各个乐音的抽样点数
P=zeros(1,time(num));
%包络线端点对应的横坐标
for
k=1:
4P(s:
%包络线直线方程通式
s=L(k+1);
n+time(num)-1)=sin(2*pi*f(num)*t).*P((3/2):
%给第num个乐音加上包络
降低八度
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];
for
4P(s:
1.4加入谐波
%抽样频率
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];
fork=1:
m=[10.30.2];
%波形幅值矩阵
ss=zeros(1,lengt