当前位置:文档之家› 基于MATLAB的简单音乐合成

基于MATLAB的简单音乐合成

基于MATLAB的简单音乐合成
基于MATLAB的简单音乐合成

《数字信号处理》课程设计

说明书

设计题目:基于MATLAB的简单音乐合成

姓名:

专业年级:

学号:

指导老师:

时间:2015年6月25日

《数字信号处理课程设计》任务书

指导老师(签名):__________________________

福建农林大学数字信号处理课程设计说明书

目录

1 设计基础 ........................................................................................................................... - 4 - 1.1 MATLAB软件简介 .................................................................................................... - 4 -

1.2 乐曲解析..................................................................................................................... - 4 -

2 设计与实现 .......................................................................................... 错误!未定义书签。

2.1 简单的音乐合成............................................................................ 错误!未定义书签。

2.1.1原理分析 .................................................................................. 错误!未定义书签。

2.1.2 Matlab 源代码......................................................................... 错误!未定义书签。

2.1.3 运行结果分析 ......................................................................... 错误!未定义书签。

2.2 除噪音,加包络............................................................................ 错误!未定义书签。

2.2.1 原理分析 ................................................................................. 错误!未定义书签。

2.2.2 Matlab 源代码......................................................................... 错误!未定义书签。

2.2.3 运行结果分析 ......................................................................... 错误!未定义书签。

2.3 加谐波............................................................................................ 错误!未定义书签。

2.3.1 原理分析 ................................................................................. 错误!未定义书签。

2.3.2 Matlab 源代码......................................................................... 错误!未定义书签。

2.3.2 运行结果分析 ......................................................................... 错误!未定义书签。

3 总结与体会 ....................................................................................................................... -

4 -

4 参考文献 ......................................................................................................................... - 12 -

1 设计基础

1.1 MATLAB软件简介

MATLAB是matrix&laboratory两个词的组合,意为矩阵工厂(矩阵实验室MATLAB 工作界面)。是由美国mathworks公司发布的主要面对科学计算、可视化以及交互式程序设计的高科技计算环境。它将数值分析、矩阵计算、科学数据可视化以及非线性动态系统的建模和仿真等诸多强大功能集成在一个易于使用的视窗环境中,为科学研究、工程设计以及必须进行有效数值计算的众多科学领域提供了一种全面的解决方案,并在很大程度上摆脱了传统非交互式程序设计语言(如C、Fortran)的编辑模式,代表了当今国际科学计算软件的先进水平。

MATLAB和Mathematica、Maple并称为三大数学软件。它在数学类科技应用软件中在数值计算方面首屈一指。MATLAB可以进行矩阵运算、绘制函数和数据、实现算法、创建用户界面、连接其他编程语言的程序等,主要应用于工程计算、控制设计、信号处理与通讯、图像处理、信号检测、金融建模设计与分析等领域。

MATLAB的基本数据单位是矩阵,它的指令表达式与数学、工程中常用的形式十分相似,故用MATLAB来解算问题要比用C,FORTRAN等语言完成相同的事情简捷得多,并且MATLAB也吸收了像Maple等软件的优点,使MATLAB成为一个强大的数学软件。在新的版本中也加入了对C,FORTRAN,C++,JA V A的支持。可以直接调用,用户也可以将自己编写的实用程序导入到MATLAB函数库中方便自己以后调用,此外许多的MATLAB爱好者都编写了一些经典的程序,用户可以直接进行下载就可以用。

1.2 乐曲解析

乐音的基本特征可以用基波频率、谐波频率和包络波形三个方面来描述,我们用大写英文字母CDEFGAB 表示每个音的“音名”(或称为“音调”),当指定某一音名时,它对应固定的基波信号频率。

图 1 表示钢琴的键盘结构,并注明了每个琴键对应的音名和基波频率值。这些频率值是按“十二平均律”计算导出,下面解释计算规则:

图1-1 钢琴键盘和相应频率

从图1-1 可以看到,靠下边的 A 键称为小字组A,它的频率值fA0= 220Hz,而靠上面的另一个 A 键是小字一组A,它的频率值是fA1= 440Hz。两者为二倍频率关系,即fA1 相当于fA0 的二次谐波。也称为8 度音或倍频程Octave(即我们画频响

特性图时所用的术语“倍频程”)。

根据《两只老虎》简谱和十二平均律计算出该小节每个乐音的频率,在MATLAB 中生成幅度为1,抽样频率为8000kHz的正弦信号表示这些乐音,用sound播放合成的音乐

图1-2 乐曲《两只老虎》曲谱

由图可知《两只老虎》的曲调定为C,即1=C,对应的频率为261.63Hz,据此可以计算出其他乐音的频率,类推计算出各乐音对应的频率见表1-1 部分乐音对应的频率:

表1-1 部分乐音对应的频率

乐音 1 2 3 1 1 2 3 1 3 4

乐音 5 3 4 5

在确定了各乐音的频率之后需要确定每个乐音的持续时间。每小节有两拍,一拍的时间是0.5此部分乐音的持续时间见表1-2部分乐音对应的时间:

表1-2 部分乐音对应的时间

乐音 1 2 3 1 1 2 3 1 3 4

乐音 4 5 3 4 5

而在MATLAB中表示乐音所用的抽样频率为fs=8000Hz,也就是所1s钟内有8000个点,抽样点数的多少就可表示出每个乐音的持续时间的长短。用一个行向量来存储这段音乐对应的抽样点,在用sound函数播放即可。

根据以上分析在MATLAB中编写如下程序:

sound_1_1.m

clear;clc;

fs=8000; %抽样频率

f=[261.63 293.66 329.63 261.63 261.63 293.66 329.63 261.63 329.63 349.23 392 329.63 349.23 392];

%各个乐音对应的频率

time=fs*[0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,1,0.5,0.5,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); %播放音乐

2 设计与实现

2.1 简单的音乐合成

2.1.1原理分析

根据《两只老虎》片段的简谱和“十二平均律”计算出该片段中各个乐音的频率,在MATLAB 中生成幅度为1、抽样频率为8000kHz 的正弦信号表示这些乐音。请用sound 函数播放每个乐音,听一听音调是否正确,最后用这一系列乐音信号拼出《两只老虎》片段,注意控制每个乐音持续的时间要符合节拍,用sound 函数播放合成的乐音。

2.12 Matlab 源代码

clear;clc;

fs=8000; %抽样频率

f=[261.63 293.66 329.63 261.63 261.63 293.66 329.63 261.63 329.63 349.23 392 329.63 349.23 392];

%各个乐音对应的频率

time=fs*[0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,1,0.5,0.5,1];%各个乐音的抽样点数

N=length(time);

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); %播放音乐

2.1.3 运行结果分析

初步合成的音乐音调符合曲谱,能听出《两只老虎》的旋律。

2.2 除噪音,加包络

2.2.1 原理分析

你一定注意到(1)的乐曲中相邻乐音之间有“啪”的杂声,这是由于相位不连续产生了高频分量。这种噪声严重影响合成音乐的质量,丧失真实感,下面通过加包络来消噪音。

最简单的包络为指数衰减。最简单的指数衰减是对每个音乘以

t

eα-因子,在实验中

首先加的是

1.5t

e 的衰减,这种衰减方法使用的是相同速度的衰减,但是发现噪音并没

有完全消除,播放的音乐效果不是很好,感觉音乐起伏性不强。于是采用不同速度的衰减,根据乐音持续时间的长短来确定衰减的快慢,乐音持续时间越长,衰减的越慢,持续时间越短,衰减的越快。

2.2.2 Matlab 源代码

clear;clc;

fs=8000; %抽样频率

f=[261.63 293.66 329.63 261.63 261.63 293.66 329.63 261.63 329.63

349.23 392 329.63 349.23 392]; %各个乐音对应的频率

time=fs*[0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,1,0.5,0.5,1];%各个乐音的抽样点数

%各个乐音对应的频率

N=length(time); %这段音乐的总抽样点数

xio=zeros(1,N); %用east向量来储存抽样点

n=1;

for num=1:N %利用循环产生抽样数据,num表示乐音编号

t=1/fs:1/fs:(time(num))/fs; %产生第num个乐音的抽样点

P=zeros(1,time(num)); %P为存储包络数据的向量

L=(time(num))*[0 1/5 3/8 5/8 1];

%包络线端点对应的横坐标

T=[0 1.5 1 1 0]; %包络线端点对应的纵坐标

s=1;

b=1:1:time(num); %产生包络线抽样点

for

k=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

laohu(n:n+time(num)-1)=sin(2*pi*f(num)*t).*P(1:time(num));

%给第num个乐音加上包络

n=n+time(num);

end

sound(laohu,8000);

plot(laohu);

wavwrite(laohu,' laohu 2')

2.2.3 运行结果分析

播放后可以听出噪音已经消除,同时因为不同时长的乐音衰减的快慢不一样,音乐听起来更有起伏感,如图为2-1波形图。

图2-1 laohu1加包络波形图

2.3 加谐波

2.3.1 原理分析

在音乐中加上二、三、四次谐波,基波幅度为1,高次谐波幅度分别为0.2、0.3、0.1。

2.3.2 Matlab 源代码

clear;clc;

fs=8000; %抽样频率

f=[261.63 293.66 329.63 261.63 261.63 293.66 329.63 261.63 329.63 349.23

392 329.63 349.23 392]; %各个乐音对应的频率

time=fs*[0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,1,0.5,0.5,1];%各个乐音的抽样点数

%各个乐音对应的频率

N=length(time); %这段音乐的总抽样点数

xio=zeros(1,N); %用east向量来储存抽样点

n=1;

for num=1:N %利用循环产生抽样数据,num表示乐音编号

t=1/fs:1/fs:(time(num))/fs; %产生第num个乐音的抽样点

P=zeros(1,time(num)); %P为存储包络数据的向量

L=(time(num))*[0 1/5 3/8 5/81];

%包络线端点对应的横坐标

T=[0 1.5 1 1 0]; %包络线端点对应的纵坐标

s=1;

b=1:1:time(num); %产生包络线抽样点

for k=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=[1 0.3 0.2]; %波形幅值矩阵

ss=zeros(1,length(t));

for i=1:length(m)

ss=ss+m(i)*sin(2*i*pi*f(num)*t); %加谐波

end

laohu(n:n+time(num)-1)=ss.*P(1:time(num));

%给第num个乐音加上包络

laohu (n:n+time(num)-1)=sin(2*pi*f(num)*t).*P(1:time(num));

%给第num个乐音加上包络

n=n+time(num);

end

sound(laohu,8000);

plot(laohu);

wavwrite(laohu,' laohu 3')

2.3.2 运行结果分析

音乐中加上二、三、四次谐波,基波幅度为1,高次谐波幅度分别为0.2、0.3、0.1,如图为2-2波形图。

图2-1 laohu2加谐波波形图

3 总结与体会

通过这次的课程设计,加深了我们对数字信号处理所学知识的了解,增强了我们对教学知识的运用和主动研究的能力。让我们掌握信号处理过程的仿真设计方法。通过模仿老师所给的例题和所收集的资料例题,编写Matlab 仿真程序,主要利用matlab软件来实现对乐音信号的仿真,从而加深我们对模拟信号数字化处理的理解,了解音乐信号时间特性、频率特性变化所带来的影响,初步学会改善音乐播放效果。在运用所学知识和学习Matlab软件的同时也学习到音乐的基本组成

4 参考文献

[1] 王力宁..MATLAB与通信仿真[M].北京:人民邮电出版社,1999

[2] 陈亚勇等..MA TLAB信号处理详解[M].北京:人民邮电出版社,2001

[3] 高西全,丁玉美.数字信号处理(第三版) [M].西安:西安电子科技大学出版社,2008

[4] 程佩青. 数字信号处理教程(第四版) [M].北京:清华大学出版社,2013

[5] 余成波等.数字信号处理及MATLAB实现(第二版) [M].北京:清华大学出版社,2008

[6] 〔美〕Vinay K.Ingle、John G.Proakis.数字信号处理——应用Matla b(第3版) [M].北京:科学

出版社,2012

[7]

关于目录的生成:参考“https://www.doczj.com/doc/a6709789.html,/qdike/item/ed2c1dc3c2d5b2340831c658”,“目录”标题两字(宋体,小二,加粗,居中,段前段后1行);目录正文部分,全选编辑(宋体+Times new Roman,小四,1.25倍行距)

补充说明:这是一次小论文,不要求各位同学能够一步到位,排版编辑多么的漂亮,但是可以当作是下学期毕业设计论文的一次练习,一个学习的过程,希望大家能尽可能用心做好。期末评分时,老师关键看的是论文的内容,章节的安排。所以请同学们抓紧时间完成,能做多少做多少,做到哪步算哪步,只要你回头检查时,可以无愧道“我尽力了”!

matlab音乐合成葫芦娃

目录 音乐合成实验................................................................................................. 错误!未定义书签。 摘要: (1) 第一部分简单的合成音乐 (1) 1.1合成《葫芦娃》 (1) 1.2 除噪音,加包络 (5) 1.3改变程序,实现1.2中的音乐升高和降低一个八度 (8) 1.4在1.2的音乐中加入谐波 (9) 摘要: 本文共有三大部分:第一部分,简单的音乐合成;第二部分,用傅里叶变换分析音乐;第三部分,基于傅里叶级数的音乐合成。由潜入深,一步一步分析了用MATLAB进行音乐合成的过程。通过本实验达到了加深对傅里叶级数和傅里叶分析的理解,熟悉对MATLAB 基本使用的目标。 第一部分简单的合成音乐 1.1 合成《葫芦娃》 根据《葫芦娃》第一小节的简谱和十二平均律计算出该小节每个乐音的频率,在MATLAB中生成幅度为1,抽样频率为8kHz的正弦信号表示这些乐音,用sound播放合成的音乐

而在MATLAB中表示乐音所用的抽样频率为fs=8000Hz,也就是所1s钟内有8000个点,抽样点数的多少就可表示出每个乐音的持续时间的长短。用一个行向量来存储这段音乐对应的抽样点,在用sound函数播放即可。 clear all;clc; freq=8000; %抽样频率 T=1/freq; pattime=0.5; %节拍的时间 note2=0:T:2*pattime; note4=0:T:1*pattime; note8=0:T:0.5*pattime; note_1=261.63; %各个音乐对应的频率 note_2=293.67; note_3=329.63; note_5=391.99; note_6=440; note_7=493.88; note_1b=523.25; wave1=sin(2*pi*note_1*note4); %各个音符所对应的节拍 wave2=sin(2*pi*note_1*note4); wave3=sin(2*pi*note_3*note2); wave4=sin(2*pi*note_1*note4); wave5=sin(2*pi*note_1*note4); wave6=sin(2*pi*note_3*note2); wave7=sin(2*pi*note_6*note4); wave8=sin(2*pi*note_6*note4); wave9=sin(2*pi*note_6*note8); wave10=sin(2*pi*note_5*note8); wave11=sin(2*pi*note_6*note4); wave12=sin(2*pi*note_5*note4);

matlab音乐处理合成实验报告

MATLAB高级编程与工程应用语音合成综合实验 姓名: 班级: 学号: 日期:

1.2.1 简单的合成音乐 (1) 请根据《东方红》片断的简谱和“十二平均律”计算出该片断中各个乐音的频率,在MATLAB 中生成幅度为1 、抽样频率为8kHz 的正弦信号表示这些乐音。请用sound 函数播放每个乐音,听一听音调是否正确。最后用这一系列乐音信号拼出《东方红》片断,注意控制每个乐音持续的时间要符合节拍,用sound 播放你合成的音乐,听起来感觉如何 由“十二平均律”计算得到各个乐音的频率: “5”——“C”: “6”——“D”: “1”——“F”: “2”——“G”:392Hz “6.”频率是“6”的一半: 代码:() f=8000; T=1/f; t8=0:T:1*; t4=0:T:2*; t2=0:T:4*; t1=0:T:8*; part1=sin(2*pi**t4); part2=sin(2*pi**t8); part3=sin(2*pi**t8); part4=sin(2*pi**t2); part5=sin(2*pi**t4); part6=sin(2*pi**t8); part7=sin(2*pi**t8); part8=sin(2*pi**t2); total=[part1,part2,part3,part4,part5,part6,part7,part8]; sound(total); 试听发现,合成后的音乐基本保持了《东方红》的音调,但声音比较沉闷,相邻乐音之间有比较明显的“啪”的杂音。 (2) 你一定注意到(1) 的乐曲中相邻乐音之间有“啪”的杂声,这是由于相位不连续产生了高频分量。这种噪声严重影响合成音乐的质量,丧失真实感。为了消除它,我们可以用图所示包络修正每个乐音,以保证在乐音的邻接处信号幅度为零。此外建议用指数衰减的包络来表示。 首先尝试用折线包络,编写函数生成所需折线: function envelope = envelope_line(t) envelope(1:floor(t/8)) = linspace(0,1,floor(t/8)); envelope(floor(t/8)+1:floor(t/4)) = linspace(1,,floor(t/4)-floor(t/8))); envelope(floor(t/4)+1:floor(3*t/4)) = linspace,,floor(t*3/4)-floor(t/4)); envelope(floor(3*t/4)+1:t) = linspace,0,floor(t)-floor(3*t/4)); 对中的部分代码进行修改,调用envelope_line实现折线包络:() part1=sin(2*pi**t4).*envelope_line(t4);

Matlab音乐合成实验报告

音乐合成实验 目录 音乐合成实验 (1) 摘要: (1) 第一部分简单的合成音乐 (2) 1.1合成《东方红》 (2) 1.2 除噪音,加包络 (3) 1.3改变程序,实现1.2中的音乐升高和降低一个八度 (8) 1.4在1.2的音乐中加入谐波 (9) 1.5自选音乐合成——《两只老虎》 (10) 第二部分用傅里叶变换分析音乐 (11) 2.1载入fmt.wav并播放 (11) 2.2载入文件Guitar.mat,处理原始数据realwave (11) 2.3分析wave2proc的基波和谐波 (13) 2.4自动分析fmt.wav的音调和节拍 (16) 第三部分基于傅里叶级数的音乐合成 (19) 3.1 用2.3分析出来的结果重新加谐波 (19) 3.2 通过2.4提取的吉他音调信息弹奏《东方红》 (19) 实验收获 (21) 摘要:

本文共有三大部分:第一部分,简单的音乐合成;第二部分,用傅里叶变换分析音乐;第三部分,基于傅里叶级数的音乐合成。由潜入深,一步一步分析了用MATLAB 进行音乐合成的过程。通过本实验达到了加深对傅里叶级数和傅里叶分析的理解,熟悉对MATLAB 基本使用的目标。 第一部分 简单的合成音乐 1.1 合成《东方红》 根据《东方红》第一小节的简谱和十二平均律计算出该小节每个乐音的频率,在MATLAB 中生成幅度为1,抽样频率为8kHz 的正弦信号表示这些乐音,用sound 播放合成的音乐 由图可知《东方红》的曲调定为F ,即1=F ,对应的频率为349.23Hz ,据此可以计算出其他乐音的频率,例如5对应的频率为 7/125349.232523.25f =?=,一次类推计算出第一小节各乐音对应的频率为: 乐音 5 5 6 2 1 1 6 2 在确定了各乐音的频率之后需要确定每个乐音的持续时间。每小节有两拍, 一拍的时间是0.5s ,因此各乐音的持续时间为: 乐音 5 5 6 2 1 1 6 2 而在MATLAB 中表示乐音所用的抽样频率为fs=8000Hz ,也就是所1s 钟内有8000个点,抽样点数的多少就可表示出每个乐音的持续时间的长短。用一个行向量来存储这段音乐对应的抽样点,在用sound 函数播放即可。 根据以上分析在MATLAB 中编写如下程序: sound_1_1.m

Matlab音乐合成实验报告

课程设计《音乐合成》实验报告 专业:测控技术与仪器 班级:测控11-2 班 姓名:谷晓峰 学号: 11034010219 指导教师:贺婷 广东石油化工学院计算机与电子信息学院

信号与系统课程设计 -------利用matlab合成音乐 一、实验目的 1. 熟悉MATLAB的软件和语言指令的使用; 2. 学习利用MATLAB进行连续信号的时域、频域分析; 3. 熟悉抽样信号与连续信号的区别。 二、实验内容 1.请根据《画心》片断的简谱和“十二平均律”计算出该片断中各个乐音的频率,在MATLAB 中生成幅度为1抽样频率为8kHz 的正弦信号表示这些乐音。请用sound 函数播放每个乐音,听一听音调是否正确。最后用这一系列乐音信号拼出《画心》片断,注意控制每个乐音持续的时间要符合节拍,用sound 播放你合成的音乐,听起来感觉如何?并用图显示生成的音乐信号。 相关知识: ①《画心》完整曲谱,实验时从中随机截取几节用于编程。

②利用十二平均律计算频率以及相关音乐知识。 如图1,其中错误!未找到引用源。,错误!未找到引用源。,错误!未找到引用源。相当于错误!未找到引用源。的二次谐波,二者是倍频的关系。从A 到A1共有12个键,7个白色键,5个黑色键。中间这些频率值得计算规律为相邻音倍乘系数错误!未找到引用源。。即错误!未找到引用源。,别的依次类推。 图1 钢琴键盘 图1中各键对应的频率如下表: bG表示的F升高半音,在乐谱中用#表示。或者G降低半音,用b表示。乐谱这中的4/4表示每小节有四拍,一个1/4音符的持续时间为一拍,一拍大概0.5s左右。 eg: y=0*t; %初始化 y(t<0.25)=sin(440*2*pi*t(t<0.25)); %第一个音 5,持续时间0.25s y(0.25

基于MATLAB软件的音乐合成毕业设计论文

毕业设计(论文) 基于MATLAB的软件的音乐合成 Music Synthesis Based On MATLAB Software

毕业设计(论文)原创性声明和使用授权说明 原创性声明 本人郑重承诺:所呈交的毕业设计(论文),是我个人在指导教师的指导下进行的研究工作及取得的成果。尽我所知,除文中特别加以标注和致谢的地方外,不包含其他人或组织已经发表或公布过的研究成果,也不包含我为获得及其它教育机构的学位或学历而使用过的材料。对本研究提供过帮助和做出过贡献的个人或集体,均已在文中作了明确的说明并表示了谢意。 作者签名:日期: 指导教师签名:日期: 使用授权说明 本人完全了解大学关于收集、保存、使用毕业设计(论文)的规定,即:按照学校要求提交毕业设计(论文)的印刷本和电子版本;学校有权保存毕业设计(论文)的印刷本和电子版,并提供目录检索与阅览服务;学校可以采用影印、缩印、数字化或其它复制手段保存论文;在不以赢利为目的前提下,学校可以公布论文的部分或全部内容。 作者签名:日期:

学位论文原创性声明 本人郑重声明:所呈交的论文是本人在导师的指导下独立进行研究所取得的研究成果。除了文中特别加以标注引用的内容外,本论文不包含任何其他个人或集体已经发表或撰写的成果作品。对本文的研究做出重要贡献的个人和集体,均已在文中以明确方式标明。本人完全意识到本声明的法律后果由本人承担。 作者签名:日期:年月日 学位论文版权使用授权书 本学位论文作者完全了解学校有关保留、使用学位论文的规定,同意学校保留并向国家有关部门或机构送交论文的复印件和电子版,允许论文被查阅和借阅。本人授权大学可以将本学位论文的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或扫描等复制手段保存和汇编本学位论文。 涉密论文按学校规定处理。 作者签名:日期:年月日 导师签名:日期:年月日

基于MATLAB的简单音乐合成

《数字信号处理》课程设计 说明书 设计题目:基于MATLAB 的简单音乐合成 姓名:_________________________________________ 专业年级:______________________________________ 学号:_________________________________________ 指导老师:______________________________________ 时间:2015 年 6 月25 日

《数字信号处理课程设计》任务书 指导老师(签名):

1设计基础.................................... 1.1 MATLAB软件简介.............................. 1.2乐曲解析.................................. 2设计与实现................................... 2.1 简单的音乐合成 ................................ 2.1.1原理分析 ................................ 2.1.2 Matlab 源代码 .............................. 2.1.3运行结果分析 ............................... 2.2除噪音,加包络................................. 2.2.1原理分析 ................................ 2.2.2 Matlab 源代码 .............................. 2.2.3运行结果分析 .............................. 2.3加谐波.................................... 2.3.1原理分析 ................................ 2.3.2 Matlab 源代码 .............................. 2.3.2运行结果分析 .............................. 3总结与体会................................... 4参考文献....................................

Matlab音乐合成实验报告(重大 通院)

重庆大学Matlab音乐合成实验报告 班级:实验班 指导老师:印勇 学生: 覃继良 20114909 学号:

音乐合成实验 介绍 本文共有三大部分:第一部分,简单的音乐合成;第二部分,用傅里叶变换分析音乐;第三部分,基于傅里叶级数的音乐合成。由潜入深,一步一步分析了用MATLAB 进行音乐合成的过程。通过本实验达到了加深对傅里叶级数和傅里叶分析的理解,熟悉对MATLAB 基本使用的目标。 第一部分 简单的合成音乐 1.1 合成《东方红》 根据《东方红》第一小节的简谱和十二平均律计算出该小节每个乐音的频率,在MATLAB 中生成幅度为1,抽样频率为8kHz 的正弦信号表示这些乐音,用sound 播放合成的音乐 由图可知《东方红》的曲调定为F ,即1=F ,对应的频率为349.23Hz ,据此可以计算出其他乐音的频率,例如5对应的频率为7/125349.232523.25f =?=,一次类推计算出第一小节各乐音对应的频率为: 在确定了各乐音的频率之后需要确定每个乐音的持续时间。每小节有两拍,一拍的时间是0.5s ,因此各乐音的持续时间为: 而在MATLAB 中表示乐音所用的抽样频率为fs=8000Hz ,也就是所1s 钟内有8000个点,抽样点数的多少就可表示出每个乐音的持续时间的长短。用一个行向量来存储这段音乐对应的抽样点,

在用sound函数播放即可。 根据以上分析在MATLAB中编写如下程序: east1.m 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中运行east1.m,播放出了《东方红》的第一段,但是可以听出效很不好,只能听出具有《东方红》的调子而已。 图1-1 由图1-1我们可以看到,每一个调子并没有能够区分出来,就是连续一片的。幅度也是相当的,都是1。

基于Matlab的MP3播放器

基于Matlab的MP3播放器 1.概述 MP3的全称为MPEG1(Moving Picture Experts Group) Layer – 3音频文件。它根据压缩质量和编码复杂程度划为三层,Layer –1 、Layer –2 、Layer –3 ,且分别对应MP1 、MP2\ MP3 这三种声音文件,并根据不同的用途,使用不同层次的编码。MPEG音频的层次越高,编码器越复杂,压缩率也越高,MP3的压缩率则高达10:1 – 12:1。 MA TLAB 是国际上公认的最优秀的科技应用软件,它在数据分析和处理功能都是很强大,利用它可以灵活方便地处理音频信号。本文将使用matlab对MP3进行解码,做一个简易的MP3播放器。 2.MP3文件格式 MP3文件大体分为三部分:TAG_V2(ID3V2),frame,TAG_V1(ID3V1) 一个MPEG音频文件是许多的称为帧的较小部分组成的,通常,帧是独立的组成部分,每个帧都拥有之间的头和音频信息,没有文件头。所以我们可以剪切MPEG文件的任何部分并且能够正常播放。但在LayerIII中就并不总是正确的。 2.1、帧头格式 下面是一个头内容图示,使用字符A到M表示不同的区域

AAAAAAAAAAA BB CC D EEEE FF G H II JJ K L MM A表示帧同步,都为1,长度为11; B 表示MPEG音频版本ID (00 – MPEG 2.5; 01 –保留;10 – MPEG 2; 11 – MPEG 1); C 表示Layer描述,(00 –保留;01- LayerIII;10 – LayerII;11 - LayerI); D 表示校验位(0 有跟16位CRC校验位;1 无校验位); E 位率索引,长度为4,对不同的版本,不同层索引值表示不同的位率;单位Kbit

matlab音乐合成报告

MATLAB音乐合成综合实验 学院: 班级: 指导老师:吴宪祥 同做者: 二0一六年十二月

摘要 本实验共有三部分:1.简单的音乐合成;2.用傅里叶变换分析音乐;3.基于傅里叶级数的音乐合成。一步一步分析了用MATLAB进行音乐合成的过程。通过本实验达到加深对傅里叶级数和傅里叶分析的理解,熟悉对MATLAB基本使用的目标。该实验采用MATLAB软件仿真来实现。首先,通过编程对一段真实的音乐进行分析、处理,求得这段音乐的基频、谐波分量、等数据;然后,通过对乐理的研究,根据分析中求得的数据编写程序,进行基于傅里叶分析的音乐合成设计,并设计了图形用户界面。

目录 1.绪论 1.1 引言 (3) 1.2 实验要求 (3) 1.3 实验原理 (3) 2.简单的合成音乐 2.1 乐理知识介绍 (4) 2.2 利用MATLAB实现音乐合成器,生成 WAV文件 (5) 2.3 除噪音,加包络 (5) 2.4 音乐升高和降八度 (9) 2.5 加入谐波 (9) 3.用傅里叶变换分析音乐 3.1 载入fmt.wav并播放 (11) 3.2 处理realware (11) 3.3 分析wave2proc的基波和谐波 (13) 3.4 自动分析fmt.wav的音调和节拍 (16) 4.基于傅里叶级数的音乐合成 4.1 重新加谐波 (17) 4.2 通过音调信息弹奏《送别》 (19) 5.制作GUI界面 (20) 6.实验难点及问题 (21) 7.实验收获 (22)

1.绪论 1.1 引言 信号与系统的概念及分析方法广泛应用于通信、自动控制、航空航天、电子信息、地震学、生物工程等领域,因此“信号与系统”是一门电子信息学科相关专业的主干技术课程。MATLAB 是国际上公认的优秀的科技应用软件,随着版本的不断升级,内容也在不断扩充。基于MATLAB 的音乐分析与合成实验是针对“信号与系统”课程的重点和难点之一的傅里叶变换和傅里叶级数等内容而设计的。由于该实验是真实音乐的实际应用,可以增进对傅里叶级数和傅里叶变换的理解,加深对信号分析工程应用的理解,提高在信号分析领域的应用能力。 1.2 实验要求 1、3-5人一组,选择不同乐曲,利用MATLAB 实现音乐合成器,生成WAV 文件; 2、给乐音加包络消噪; 3、实现音乐的升八度和降八度; 4、在音乐中添加谐波; 5、用傅里叶级数分析音乐的基频、音调和节拍; 6、模仿一些常用乐器(如钢琴、吉他等)实现音乐合成; 7、设计GUI 界面; 8、提交设计报告。 1.3实验原理 傅里叶变换建立了信号频谱的概念。所谓傅里叶分析即分析信号的频谱(频率构成)、频带宽度等。要想合成出一段音乐,就要了解该段音乐的基波频率、谐波构成等。因此,必须采用傅里叶变换这一工具。对于连续时间信号f(t),其傅里叶变换为: dt jwt e t f w ?∞ ∞--=)(F )( 由于其变换两边的函数f (t) 和F (w )都是连续函数,不适合于计算机处理。MATLAB 语言提供了符号函数FOURIER 来实现傅里叶变换,但该函数需要信号的解析表达式。而工程应用中经常需要对抽样数据进行傅里叶分析,这种情况下往往无法得到信号的解析表达式,必须采用傅里叶变换的数值计算方法。

基于MATLAB的简单音乐合成仿真设计

本科生毕业论文(设计)基于MATLAB的简单音乐合成仿真设计

学士学位论文原创性声明 本人郑重声明:所呈交的论文(设计)是本人在指导老师的指导下独立进行研究,所取得的研究成果。除了文中特别加以标注引用的内容外,本论文(设计)不包含任何其他个人或集体已经发表或撰写的成果作品。对本文的研究做出重要贡献的个人和集体,均已在文中以明确方式表明。本人完全意识到本申明的法律后果由本人承担。 学位论文作者签名(手写):签字日期:年月日 学位论文版权使用授权书 本学位论文作者完全了解学校有关保留、使用学位论文的规定,同意学校保留并向国家有关部门或机构送交论文的复印件和电子版,允许论文被查阅和借阅。本人授权可以将本论文的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或扫描等复制手段保存和汇编本学位论文。 (请在以上相应方框内打“√”) 学位论文作者签名(手写):指导老师签名(手写): 签字日期:年月日签字日期:年

摘要 科学技术的发展使得社会生活越来越趋于信息化和数字化,在此基础上语音信号也可以基于数字信号处理技术和语音学相关知识进行信息化处理,此类技术因应用性广便捷性高受到社会的广泛关注,已成为信息科学工程与研究领域的核心技术,被越来越多的高科技产业广泛使用。计算机合成音乐也在其基础上得以迅速普及,而且理论上可以创造出任何一种声音。 MATLAB是一种用于数据分析和处理的计算机应用软件,它可以将语音文件进行信息化处理转化为离散的数据文件,再通过内置强大的矩阵运算能力如数字滤波、时域和频域分析、傅里叶变换、时域和频域分析、声音合成以及各种图形的呈现等处理数据。利用MATLAB自带的功能函数可以快捷而又方便地完成语音信号的处理和分析以及信号的可视化,使人机交互更加便捷。音乐可视为不同频率与振幅的正弦波叠加并加以不同包络所形成的信号,它的这个特点使得MATLAB的处理有了可能,通过处理不同的音频MATLAB可以进行简单的音乐合成。 本文主要是基于MATLAB环境下的音乐合成研究,首先基于相关的处理函数合成简单的音乐,并且对音乐进行降噪、升降度和加谐波等处理;然后基于傅里叶变换分析处理后的音乐频谱;最后根据傅里叶级数的原理来再次合成音乐。 关键词:音乐合成;MATLAB;傅里叶分析

matlab音乐合成

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);

音乐合成_matlab

MATLAB音乐合成 一、简单音乐合成 1、根据音乐简谱和十二平均律计算出每个乐音的频率,在 MATLAB中生成幅度为 1,抽样频率为 8kHz 的正弦信号表示这些乐音,用 sound 播放合成的音乐 A=[174.61 196 220 246.94 261.62 293.66 329.63 349.23 392 440 493.88 523.25 587.33 659.25 698.45 739.99 783.99]; % 定义各调频率 fs=8000; %修改频率 pu=[1 1 1 3 5 5 5 5 6 6 6 8 5 4 4 6 6 3 3 3 3 2 2 2 2 5 5 1 1 1 3 5 5 5 5 6 6 6 8 5 4 4 4 6 3 3 3 3 3 2 2 2 3 1 ]; %在pu中只需输入乐谱数字,在下面B=A-什么什么那部分调整音调,省去了写频率的麻烦 p=0.5; last_time=[p/2 p/2 p/2 p/2 p/2 p/2 p/2 p/2 p/2 p/2 p/2 p/2 p p/2 p/2 p/2 p/2 p/2 p/2 p/2 p/2 p/2 p/2 p/2 p/2 p p p/2 p/2 p/2 p/2 p/2 p/2 p/2 p/2 p/2 p/2 p/2 p/2 p p/2 p/2 p/2 p/2 p/2 p/2 p/2 p/2 p/2 p/2 p/2 p/2 p/2 p ]; %各乐音持续时间为节省空间,用p代替 N=length(pu); f=zeros(1,N); B=A-5; for i=1:N f(i)=B(pu(i)); %f为各个乐音对应的频率,修改其它调 end point=fs*last_time; %各个乐音的抽样点数 total_point=sum(point); %这段音乐的总抽样点数 store=zeros(1,total_point); %用store向量来储存抽样点 m=1; for num=1:N %利用循环产生抽样数据,num表示乐音编号 t=1/fs:1/fs:point(num)/fs; %产生第num个乐音的抽样点 store(m:m+point(num)-1)=sin(2*pi*f(num)*t); %抽样点对应的幅值 m=m+point(num); end sound(store,8000); %播放出store plot(store); %画出store图像 2、除噪音,加包络 在1.1中听到有“啪”的杂声,这是由于相位不连续产生了高频分量,下面通过加包络来消噪 音。比较科学的包络如下图所示,每个乐音都经过冲激、衰减、持续、消失四个阶段。

Matlab音乐合成实验报告

音乐合成实验 目录 摘要: 本文共有三大部分:第一部分,简单的音乐合成;第二部分,用傅里叶变换分析音乐;第三部分,基于傅里叶级数的音乐合成。由潜入深,一步一步分析了用MATLAB进行音乐合成的过程。通过本实验达到了加深对傅里叶级数和傅里叶分析的理解,熟悉对MATLAB基本使用的目标。 第一部分简单的合成音乐

1.1 合成《东方红》 根据《东方红》第一小节的简谱和十二平均律计算出该小节每个乐音的频率,在MATLAB 中生成幅度为1,抽样频率为8kHz 的正弦信号表示这些乐音,用soun d 播放合成的音乐 由图可知《东方红》的曲调定为F ,即1=F ,对应的频率为349.23Hz ,据此可以计算出其他乐音的频率,例如5对应的频率为 7/125349.232523.25f =?=,一次类推计算出第一小节各乐音对应的频率为 : 乐音 5 5 6 2 1 1 6 2 在确定了各乐音的频率之后需要确定每个乐音的持续时间。每小节有两拍,一拍的时间是0.5s ,因此各乐音的持续时间为: 乐音 5 5 6 2 1 1 6 2 而在MATLAB 中表示乐音所用的抽样频率为fs=8000Hz ,也就是所1s 钟内有8000个点,抽样点数的多少就可表示出每个乐音的持续时间的长短。用一个行向量来存储这段音乐对应的抽样点,在用sound 函数播放即可。 根据以上分析在MATLAB 中编写如下程序: sound_1_1.m

在MATLAB中运行sound_1_1.m,播放出了《东方红》的第一段,但是可以听出效果很不好,只能听出具有《东方红》的调子而已。 1.2 除噪音,加包络 在1.1中听到有“啪”的杂声,下面通过加包络来消噪音。 eα-因子,在最简单的包络为指数衰减。最简单的指数衰减是对每个音乘以t e-衰减,这种衰减方法使用的是相同速度的衰减,但是实验中首先加的是的 1.5t 发现噪音并没有完全消除,播放的音乐效果不是很好,感觉音乐起伏性不强。于是采用不同速度的衰减,根据乐音持续时间的长短来确定衰减的快慢,乐音持续时间越长,衰减的越慢,持续时间越短,衰减的越快。在1.1程序的基础上加上包络,编写如下程序: sound_1_21.m

最新使用matlab进行简单音乐合成

精品文档 信号与系统 -综合实验之音乐合成 (1)请根据《东方红》片断的简谱和“十二平均律”计算出该片断中各个乐音的 频率,在MATLAB 中生成幅度为1 、抽样频率为8kHz 的正弦信号表示这些乐音。请用sound 函数播放每个乐音,听一听音调是否正确。最后用这一系列乐音信号拼出《东方红》片断,注意控制每个乐音持续的时间要符合节拍,用sound 播放你合成的音乐,听起来感觉如何? 代码如下: f =8000;t2=[0:1/f:1];t4=[0:1/f:0.5];t8=[0:1/f:0.25];omg5=523.35; omg6=587.33;omg2=392;omg1=349.23;omg6l=293.66;m1=sin(2*pi*omg5*t4); m2=sin(2*pi*omg5*t8);m3=sin(2*pi*omg6*t8);m4=sin(2*pi*omg2*t2); m6=sin(2*pi*omg1*t4);m7=sin(2*pi*omg1*t8);m8=sin(2*pi*omg6l*t8); m9=sin(2*pi*omg2*t2);m=[m1 m2 m3 m4 m6 m7 m8 m9];sound(m);听的时候发现在相邻乐音之间有杂音,这是由于相位不连续造成的。 你一定注意到(1) 的乐曲中相邻乐音之间有“啪”的杂声,这是由于相位不连续 (2)产生了高频分量。这种噪声严重影响合成音乐的质量,丧失真实感。为了消除它,我们可以用图1.5 所示包络修正每个乐音,以保证在乐音的邻接处信号幅 度为零。此外建议用指数衰减的包络来表示。 精品文档. 精品文档 我采用的是指数衰减的包络。 代码如下: f =8000;t2=[0:1/f:1];t4=[0:1/f:0.5];t8=[0:1/f:0.25];omg5=523.35; omg6=587.33;omg2=392;omg1=349.23;omg6l=293.66; m1=exp(-2*t4).*sin(2*pi*omg5*t4);m2=exp(-4*t8).*sin(2*pi*omg5*t8); m3=exp(-4*t8).*sin(2*pi*omg6*t8);m4=exp(-1*t2).*sin(2*pi*omg2*t2); m6=exp(-2*t4).*sin(2*pi*omg1*t4);m7=exp(-4*t8).*sin(2*pi*omg1*t8); m8=exp(-4*t8).*sin(2*pi*omg6l*t8);m9=exp(-1*t2).*sin(2*pi*omg2*t2);m=[m1 m2 m3 m4 m6 m7 m8 m9];sound(m);第一次我采用的指数衰减没有时间前面的系数,即每个都只乘exp(t),没有系数;后来根据不同节拍,更改了不同的衰减系数,这样声音听起来感觉更加圆润。 (3)请用最简单的方法将(2) 中的音乐分别升高和降低一个八度。(提示:音乐播

基于Matlab的音乐生成研究

实验研究 0 前言 近年来在网络上出现了许多虚拟歌姬,例如索尼的虚拟歌姬索尼子,以卡通、CG形象角色展现,结合声音由语音合成引擎(例如VOCALOID 2)为基础开发的虚拟歌手软件角色。最近腾讯视频也推出了《明日之子》节目,节目中惊现二次元虚拟选手“荷兹HeZ”,荷兹HeZ以一首原创歌曲《罐头》参赛,一出现就引起了广大网民的纷纷讨论。由此可见,音乐合成具有很大的娱乐意义。 音乐合成作为语音信号处理的一部分,属于Matlab软件的重要应用领域之一,Matlab具有强大的绘图和计算能力,掌握Matlab软件的使用,为今后电子信息方向的研究奠定了基础,于是便希望能自己动手操作在计算机上基于Matlab实现对自己喜欢的音乐的合成。 1 音乐生成技术的发展概述 计算机音乐[1],顾名思义,就是指利用计算机软件并配合MIDI键盘制作出开的音乐,他既能合成并表现音乐,同样也是一种新的音乐表现形式,近几年在国内外尤其火热。在我国近几年,计算机音乐也同样成为了一股潮流。 ■1.1 音乐生成技术的萌芽 早期的游戏音乐不像现在可以使用CD级别音质的高品质录音,因为当时的游戏机没有足够的技术支持。所以游戏音乐就需要合成,设计师们必须将基本的声音合成引擎植入到游戏机的硬件当中。芯片音乐由此产生,这也就是音乐生成技术的萌芽。 ■1.2 Matlab在音乐生成 Matlab(矩阵实验室)是MATrix LABoratory的缩写,其可用于算法开发,数据可视化,数据分析以及数值计算等等许多方面,是一款非常优秀的科技应用软件。 针对不同乐器演奏的音乐,用音频软件进行分析,可以得到不同乐器的音频信号的差别,然后便可通过Matlab对于音频信号进行模拟,来得到不同乐器的声音,实现虚拟演奏。 2 音乐生成研究的背景及意义 ■2.1 音乐生成的研究背景 电脑音乐技术的应用领域非常广泛,例如音乐创作,音乐教育和乐谱制作等,并大大提高了音乐的创作和制作的效率。同时人们对作曲,演奏的流程得以简化,并且可以参与创作和制作,能聆听欣赏自己创作的音乐。现代科技使得每个人成为音乐家的这个梦想得以成真。这有利于对音乐以及计算机技术的普及和推广,对未来的发展有着不可估量的作用。 ■2.2 音乐生成的娱乐意义 目前随着技术的进步和发展,已经出现了许多虚拟歌手,在这其中最有名的是初音未来。它是由CRYPTON FUTUREMEDIA利用YAMAHA的VOCALOID系列语音合成程序进行卡法的音频源。这款软件为人工合成技术带来了巨大变革,但有些部分仍需要进一步完善。“虚拟歌姬”和“赫兹HeZ”虚拟歌手的出现,也给娱乐圈带了了很大活力,由此可见,音乐合成的研究具有巨大的娱乐意义。 ■2.3 音乐生成对音乐创作的意义 传统的音乐创作是一个长期的,复杂的,需要多方合作的一项工作。然而通过计算机生成音乐,作曲家自己一个人便可完成这项工作,同时也可在创作过程中更好地体现自己的音乐思想。制作人在创作过程中也可不断的对自己的音乐进行修改,创作音乐的效率便得到了提高。 3 音乐生成的研究方法 ■3.1 实现音乐生成 Matlab中实现音乐的播放可由sound 函数实现,其中有三个变量(Y,fs,bits)分别代表着输入信号、采样率、比特率。此处采样率的设置为fs=44100.输入信号Y一般是一个正弦波,如A·sin(2·pi·w·t)。其中A控制着声音的大小,w控制着声音的高低,t的范围控制着声音的长短。比特率采用默认值。此处不涉及对声音音色与音质的编辑。 声音的频率如表1所示,音高和频率是指数的关系,他们满足下面的关系,p是音高,f是频率。f=440x2(p-69)/12,音高每上升一个半音,p+1。 通过对以上知识的了解,我们便可以利用matlab来创作音乐了。 基于Matlab的音乐生成研究 张子豪 (徐州市撷秀中学,江苏徐州,221000) 摘要:本论文介绍了音乐生成技术的历史以及广阔的应用领域,通过查阅音乐十二平均律知识,并借助matlab软件进行了研究和设计,完成了对于歌曲despacito基于matlab的初步合成。同时,还对歌曲的音色方面因素,进行了分析与探讨,对进一步的深入研究提供了发展方向。关键词:Matlab;音乐合成 www?ele169?com | 27

基于MATLAB的简单音乐合成

基于M A T L A B的简单音 乐合成 This model paper was revised by the Standardization Office on December 10, 2020

《数字信号处理》课程设计 说明书 设计题目:基于MATLAB的简单音乐合成 姓名: 专业年级: 学号: 指导老师: 时间: 2015年6月25日

《数字信号处理课程设计》任务书 指导老师(签名):__________________________

目录

1 设计基础 MATLAB软件简介 MATLAB是matrix&laboratory两个词的组合,意为矩阵工厂(矩阵实验室MATLAB工作界面)。是由美国mathworks公司发布的主要面对科学计算、可视化以及交互式程序设计的高科技计算环境。它将数值分析、矩阵计算、科学数据可视化以及非线性动态系统的建模和仿真等诸多强大功能集成在一个易于使用的视窗环境中,为科学研究、工程设计以及必须进行有效数值计算的众多科学领域提供了一种全面的解决方案,并在很大程度上摆脱了传统非交互式程序设计语言(如C、Fortran)的编辑模式,代表了当今国际科学计算软件的先进水平。 MATLAB和Mathematica、Maple并称为三大数学软件。它在数学类科技应用软件中在数值计算方面首屈一指。MATLAB可以进行矩阵运算、绘制函数和数据、实现算法、创建用户界面、连接其他编程语言的程序等,主要应用于工程计算、控制设计、信号处理与通讯、图像处理、信号检测、金融建模设计与分析等领域。 MATLAB的基本数据单位是矩阵,它的指令表达式与数学、工程中常用的形式十分相似,故用MATLAB来解算问题要比用C,FORTRAN等语言完成相同的事情简捷得多,并且MATLAB也吸收了像Maple等软件的优点,使MATLAB成为一个强大的数学软件。在新的版本中也加入了对C,FORTRAN,C++,JAVA的支持。可以直接调用,用户也可以将自己编写的实用程序导入到MATLAB函数库中方便自己以后调用,此外许多的MATLAB爱好者都编写了一些经典的程序,用户可以直接进行下载就可以用。 乐曲解析 乐音的基本特征可以用基波频率、谐波频率和包络波形三个方面来描述,我们用大写英文字母 CDEFGAB 表示每个音的“音名”(或称为“音调”),当指定某一音名时,它对应固定的基波信号频率。 图 1 表示钢琴的键盘结构,并注明了每个琴键对应的音名和基波频率值。这些频率值是按“十二平均律”计算导出,下面解释计算规则: 图 1-1 钢琴键盘和相应频率 从图 1-1 可以看到,靠下边的 A 键称为小字组 A,它的频率值 fA0= 220Hz,而靠上面的另一个 A 键是小字一组 A,它的频率值是 fA1= 440Hz。两者为二倍频率关系,即 fA1 相当于 fA0 的二次谐波。也称为 8 度音或倍频程 Octave(即我们画频响特性图时所用的术语“倍频程”)。

基于MATLAB的简单音乐合成仿真设计

本科生毕业论文(设计)基于MATLAB 的简单音乐合成仿真设计

学士学位论文原创性声明 本人郑重声明:所呈交的论文(设计)是本人在指导老师的指导下独立进行研究,所取得的研究成果。除了文中特别加以标注引用的内容外,本论文(设计)不包含任何其他个人或集体已经发表或撰写的成果作品。对本文的研究做出重要贡献的个人和集体,均已在文中以明确方式表明。本人完全意识到本申明的法律后果由本人承担。 学位论文作者签名(手写):签字日期:年月日 学位论文版权使用授权书 本学位论文作者完全了解学校有关保留、使用学位论文的规定,同意学校保留并向国家有关部门或机构送交论文的复印件和电子版,允许论文被查阅和借阅。本人授权可以将本论文的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或扫描等复制手段保存和汇编本学位论文。 保密□,在年解密后适用本授权书本学位论文属于 不保密□。

请在以上相应方框内打“√” ) 学位论文作者签名(手写):指导老师签名(手写):签字日期:年月日签字日期:

摘要 科学技术的发展使得社会生活越来越趋于信息化和数字化,在此基础上语音信号也可以基于数字信号处理技术和语音学相关知识进行信息化处理,此类技术因应用性广便捷性高受到社会的广泛关注,已成为信息科学工程与研究领域的核心技术,被越来越多的高科技产业广泛使用。计算机合成音乐也在其基础上得以迅速普及,而且理论上可以创造出任何一种声音。 MATLAB 是一种用于数据分析和处理的计算机应用软件,它可以将语音文件进行信息化处理转化为离散的数据文件,再通过内置强大的矩阵运算能力如数字滤波、时域和频域分析、傅里叶变换、时域和频域分析、声音合成以及各种图形的呈现等处理数据。利用MATLAB 自带的功能函数可以快捷而又方便地完成语音信号的处理和分析以及信号的可视化,使人机交互更加便捷。音乐可视为 不同频率与振幅的正弦波叠加并加以不同包络所形成的信号,它的这个特点使得 MATLAB 的处理有了可能,通过处理不同的音频MATLAB 可以进行简单的音乐合成。 本文主要是基于MATLAB 环境下的音乐合成研究,首先基于相关的处理函数合成简单的音乐,并且对音乐进行降噪、升降度和加谐波等处理;然后基于傅里叶变换分析处理后的音乐频谱;最后根据傅里叶级数的原理来再次合成音乐。

相关主题
文本预览
相关文档 最新文档