matlab音乐合成

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

M A T L A B

数学实验报告

姓名:

学号:

指导老师:

专业班级:

音乐合成

学号班级姓名指导教师实验题目音乐合成评分

1.实验目的:

1.熟悉MATLAB的软件和语言指令的使用;

2. 学习利用MATLAB进行连续信号的时域、频域分析;

3. 通过电子音乐合成方面的练习增进对傅里叶级数的理解

2.实验内容:

使用matlab演奏《当你孤单你会想起谁》

3.详细设计:

1.本次音乐合成所作曲目为《当你孤单你会想起谁》简谱

首先介绍matlab函数的玩法:

matlab播放音乐是由sound(Y,fs,bits)函数完成的,该函数的3个参数代表输入信号、采样率、比特率。先说采样率fs的设置,人耳能够听到的声音范围是20~20000Hz。根据采样定理fs只需要大于40000即可。此处采样率的设置采用了MP3的标准,即fs=44.1k.再说输入信号Y,Y一般是一个正弦波,如A*sin(2*pi*w*t)。其中A控制着声音的大小,w控制着声音的高低,t的范围控制着声音的长短,所以理论上利用这个公式可以发出任何声音,只是不能控制音色和音质(音色音质很难用参数量化,我问了一下学语音的同学,这个东西跟音频谱重心,音频扩展度和音频谱平坦度有关系,这里不作讨论)。比特率采用默认值即可,该参数省略。

于是用下面的公式就可以播放出标准音la:

fs=44100;

t=0: 1/fs: 0.5;

la = sin(2*pi*440*t);

sound(la, fs)

据所知,音高和频率是指数的关系,它们满足下面的公式,其中p是音高,f是频率

标准音la,即钢琴的A4键,定义为p=69。音高每上升一个半音,p加1。

设计代码:

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

% when you are lonely,who will you think about? //当你孤单你会想起谁 on Matlab fs = 44100; % sample rate

dt = 1/fs;

T16 = 0.125;

t16 = [0:dt:T16];

[temp k] = size(t16);

t4 = linspace(0,4*T16,4*k);

t8 = linspace(0,2*T16,2*k);

[temp i] = size(t4);

[temp j] = size(t8);

% Modification functions

mod4=(t4.^4).*exp(-30*(t4.^0.5));

mod4=mod4*(1/max(mod4));

mod8=(t8.^4).*exp(-50*(t8.^0.5));

mod8=mod8*(1/max(mod8));

mod16=(t16.^4).*exp(-90*(t16.^0.5));

mod16=mod16*(1/max(mod16));

f0 = 2*146.8; % reference frequency ScaleTable = [2/3 3/4 5/6 15/16 ...

1 9/8 5/4 4/3 3/

2 5/

3 9/5 15/8 ...

2 9/4 5/2 8/

3 3 10/3 15/

4 4 ...

1/2 9/16 5/8];

% 1/4 notes

do0f = mod4.*cos(2*pi*ScaleTable(21)*f0*t4); re0f = mod4.*cos(2*pi*ScaleTable(22)*f0*t4); mi0f = mod4.*cos(2*pi*ScaleTable(23)*f0*t4); fa0f = mod4.*cos(2*pi*ScaleTable(1)*f0*t4); so0f = mod4.*cos(2*pi*ScaleTable(2)*f0*t4); la0f = mod4.*cos(2*pi*ScaleTable(3)*f0*t4); ti0f = mod4.*cos(2*pi*ScaleTable(4)*f0*t4); do1f = mod4.*cos(2*pi*ScaleTable(5)*f0*t4); re1f = mod4.*cos(2*pi*ScaleTable(6)*f0*t4); mi1f = mod4.*cos(2*pi*ScaleTable(7)*f0*t4); fa1f = mod4.*cos(2*pi*ScaleTable(8)*f0*t4); so1f = mod4.*cos(2*pi*ScaleTable(9)*f0*t4); la1f = mod4.*cos(2*pi*ScaleTable(10)*f0*t4); tb1f = mod4.*cos(2*pi*ScaleTable(11)*f0*t4); ti1f = mod4.*cos(2*pi*ScaleTable(12)*f0*t4); do2f = mod4.*cos(2*pi*ScaleTable(13)*f0*t4); re2f = mod4.*cos(2*pi*ScaleTable(14)*f0*t4); mi2f = mod4.*cos(2*pi*ScaleTable(15)*f0*t4); fa2f = mod4.*cos(2*pi*ScaleTable(16)*f0*t4); so2f = mod4.*cos(2*pi*ScaleTable(17)*f0*t4); la2f = mod4.*cos(2*pi*ScaleTable(18)*f0*t4); ti2f = mod4.*cos(2*pi*ScaleTable(19)*f0*t4); do3f = mod4.*cos(2*pi*ScaleTable(20)*f0*t4); blkf = zeros(1,i);

% 1/8 notes

do0e = mod8.*cos(2*pi*ScaleTable(21)*f0*t8); re0e = mod8.*cos(2*pi*ScaleTable(22)*f0*t8); mi0e = mod8.*cos(2*pi*ScaleTable(23)*f0*t8); fa0e = mod8.*cos(2*pi*ScaleTable(1)*f0*t8); so0e = mod8.*cos(2*pi*ScaleTable(2)*f0*t8);

相关文档
最新文档