: .
音乐合成实验
目录
音乐合成实验 1
摘要: 2
第一部分简单的合成音乐 2
《东方红》 2
,加包络 4
, 11
12
1. 5 自选音乐合成一一《两只老虎》
第二部分 用傅里叶变换分析音乐 .
2. 1 载入 fmt. wav 并播放 15.
2. 2 载入文件Guitar, mat,处理原始数据realwave 16
2. 3 分析wave2proc的基波和谐波 1. 9
2. 4 自动分析fmt. wav的音调和节拍 23
第三部分基于傅里叶级数的音乐合成 27
. 3分析出来的结果重新加谐波 27
3. 2 通过2. 4提取的吉他音调信息弹奏《东方红》 2 8
31
实验收获
摘要:
本文共有三大部分:第一部分,简单的音乐合成;第二部分,用傅里叶变换分析音 乐;第三部分,基于傅里叶级数的音乐合成。由潜入深,一步一步分析了用MATLAB进行 音乐合成的过程。通过本实验达到了加深对傅里叶级数和傅里 叶分析的理解,熟悉对 MATLAB基本使用的目标。
第一部分 简单的合成音乐
合成《东方红》
根据《东方红》第一小节的简谱和十二平均律计算出该小节每个乐音的频率,在
MATLAB中生成幅度为1,抽样频率为8kHz的正弦信号表示这些乐音,用sou nd播放合成的
音乐
】=F十 「1 2 — 1邑 2
帽花3城曲一巾务曲就
由图可知《东方红》的曲调定为F,即仁F,对应的频率为349. 23Hz,据
此可以计算出其他乐音的频率,例如5对应的频率为
f5 349. 23 2“ , 一次类推计算出第一小节各乐音对应的频率为:
乐音 5 5
6 2 116 2
频率 587. 3 392 392
5
5
3
3
3
6
在确定了各乐音的频率之后需要确定每个乐音的持续时间。每小节有两拍,
一拍的时间是o. 5s,因此各乐音的持续时间为:
乐音
5
5
6
2
1
1
6
2
时间
0. 25
1
0. 25
0. 25
1
而在MATLAB中表示乐音所用的抽样频率为fs二8000Hz,也就是所Is钟内有
8000个点,抽样点数的多少就可表示出每个乐音的持续时间的长短。用一个行向量来存 储这段音乐对应的抽样点,在用sou nd函数播放即可。
根据以上分析在MATLAB中编写如下程序:
clear;clc;
fs二8000; %t 样频率
f二[ 392 392];
%各个乐音对应的频率 time二fs*[1/2, 1/4, 1/4, 1, 1/2, 1/4, 1/4, 1]; %各个乐音的抽样点数
腕段音乐的总抽样点数%用east向量来储存抽样点
N=le ngth(time);
east二zeros (1, N); n=l;
for num=l:N %利用循环产生抽样数据,nun表Z5乐首编号
t=l/fs: l/fs:time( num)/fs; %产生第nun个 乐昔的抽样点
east( n:n+time( nu m)T)二s in (2*pi*f( nu m)*t);
%抽样点对应的幅值
n=n+time( nu m);
end
sou nd (east, 8000);
%播放音乐
,播放出了《东方红》的第一段,但是可以听出效果很不 好,只能听出具有《东方红》的调子而已。
除噪音,加包络
在1. 1中听到有“啪”的杂声,下面通过加包络来消噪音。
最简单的包络为指数衰减。最简单的指数衰减是对每个音乘以 e,因子,在
1 51
实验中首先加的是e •的衰减,这种衰减方法使用的是相同速度的衰减,但是 发现噪音并 没有完全消除,播放的音乐效果不是很好,感觉音乐起伏性不强。于是采用不同速度的 衰减,根据乐音持续时间的长短来确定衰减的快慢,乐音持续时间越长,衰减的越慢, 持续时间越短,衰减的越快。在
包络,编写如下程序:
sound 1 21・m
clear;clc;
fs二8000; %t 样频率
Matlab音乐合成实验报告 来自淘豆网m.daumloan.com转载请标明出处.