精品文档
音乐合成实验
目录
音乐合成实验........................................................ 1
摘要:.......................................................... 1 第一部分 简单的合成音乐....................................... 2
1.1 合成《东方红》 ......................................... 2 1.2 除噪音,加包络 ........................................ 3 1.3 改变程序,实现1.2中的音乐升高和降低一个八度 ........... 7 1.4 在1.2的音乐中加入谐波 ................................ 8 1.5 自选音乐合成——《两只老虎》 .......................... 8 第二部分 用傅里叶变换分析音乐................................. 9
2.1 载入fmt.wav并播放 .................................... 9 2.2 载入文件Guitar.mat,处理原始数据realwave ............ 9 2.3 分析wave2proc的基波和谐波 ........................... 11 2.4 自动分析fmt.wav的音调和节拍 ......................... 14 第三部分 基于傅里叶级数的音乐合成............................. 16
3.1 用2.3分析出来的结果重新加谐波 ......................... 16 3.2 通过2.4提取的吉他音调信息弹奏《东方红》 ............. 17 实验收获....................................................... 17
摘要:
精品文档
精品文档
本文共有三大部分:第一部分,简单的音乐合成;第二部分,用傅里叶变换分析音乐;第三部分,基于傅里叶级数的音乐合成。由潜入深,一步一步分析了用MATLAB进行音乐合成的过程。通过本实验达到了加深对傅里叶级数和傅里叶分析的理解,熟悉对MATLAB基本使用的目标。
第一部分 简单的合成音乐
1.1 合成《东方红》
根据《东方红》第一小节的简谱和十二平均律计算出该小节每个乐音的频率,在MATLAB中生成幅度为1,抽样频率为8kHz的正弦信号表示这些乐音,用sound播放合成的音乐
由图可知《东方红》的曲调定为F,即1=F,对应的频率为349.23Hz,据此可以计算出其他乐音的频率,例如5对应的频率为
f5?349.23?27/12?523.25,一次类推计算出第一小节各乐音对应的频率为: 乐音
在确定了各乐音的频率之后需要确定每个乐音的持续时间。每小节有两拍,
一拍的时间是0.5s,因此各乐音的持续时间为: 乐音 时间
而在MATLAB中表示乐音所用的抽样频率为fs=8000Hz,也就是所1s钟内有8000个点,抽样点数的多少就可表示出每个乐音的持续时间的长短。用一个行向量来存储这段音乐对应的抽样点,在用sound函数播放即可。 根据以上分析在MATLAB中编写如下程序: sound_1_1.m
5 0.5 5 0.25 6 0.25 2 1 1 0.5 1 0.25 6 0.25 2 1 5
5
6
2 392 1
1
6
2 392 频率 523.25 523.25 587.33 349.23 349.23 293.66 精品文档
精品文档
clear;clc; fs=8000; %抽样频率 f=[523.25 523.25 587.33 392 349.23 349.23 293.66 392]; %各个乐音对应的频率 time=fs*[1/2,1/4,1/4,1,1/2,1/4,1/4,1]; %各个乐音的抽样点数 N=length(time); %这段音乐的总抽样点数 east=zeros(1,N); %用east向量来储存抽样点 n=1; for num=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); %播放音乐
在MATLAB中运行sound_1_1.m,播放出了《东方红》的第一段,但是可以听出效果很不好,只能听出具有《东方红》的调子而已。
1.2 除噪音,加包络
在1.1中听到有“啪”的杂声,下面通过加包络来消噪音。 最简单的包络为指数衰减。最简单的指数衰减是对每个音乘以e实验中首先加的是e?1.5t??t因子,在
的衰减,这种衰减方法使用的是相同速度的衰减,但是
发现噪音并没有完全消除,播放的音乐效果不是很好,感觉音乐起伏性不强。于是采用不同速度的衰减,根据乐音持续时间的长短来确定衰减的快慢,乐音持续时间越长,衰减的越慢,持续时间越短,衰减的越快。在1.1程序的基础上加上包络,编写如下程序:
sound_1_21.m 精品文档