基于MATLAB的简单音乐合成_第1页
基于MATLAB的简单音乐合成_第2页
基于MATLAB的简单音乐合成_第3页
基于MATLAB的简单音乐合成_第4页
基于MATLAB的简单音乐合成_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、精选优质文档-倾情为你奉上福建农林大学金山学院课程设计课程名称:通讯原理与技术系 别:信息与机电工程系专业班级:学 号:姓 名:题 目:基于MATLAB的简单音乐合成 2013年 月 日专心-专注-专业通讯原理与技术课程设计任务书题目基于MATLAB的简单音乐合成主要内容1、自学Matlab软件,了解相关编译语句;2、利用Matlab完成简单的音乐合成;3、分析仿真结果,得出合理结论。设计要求1、利用Matlab实现对自选乐曲的简单音乐合成,生成 .wav文件;2、给各个乐音加载包络,生成.wav,并显示音乐信号的包络图像;3、在音乐中加上二、三、四次谐波,基波幅度为1,高次谐波幅度分别为0.

2、2、0.3、0.1,并生成.wav文件。4、按要求完成设计报告。主要仪器设备1、计算机1台,Matlab 仿真软件一套。主要参考文献1 樊昌信等.通信原理(第6版)M. 北京:国防工业出版社,2006.2 肖伟等.MATLAB程序设计与应用M.北京:清华大学出版社,北京交通大学出版社,2005. 3 赵鸿图等.通信原理MATLAB仿真教程M.北京:人民邮电出版社,2010. 课程设计进度安排(起止时间、工作内容)每位同学选择不同乐曲进行音乐合成,每人1套实验环境。整个课程设计共1周20学时,具体安排如下:前期准备工作 4学时 学习设计题目相关知识,查阅资料,掌握实现的原理;计划内上机14学时

3、按要求,完成设计方案,编写并调试仿真程序;计划内上机2学时 结果验收,并完成课程设计报告。课程设计开始日期2013.11.25课程设计完成日期2013.12.01指导老师(签名):_目 录1 设计基础 1.1 MATLAB软件简介MATLAB是matrix&laboratory两个词的组合,意为矩阵工厂(矩阵实验室MATLAB工作界面)。是由美国mathworks公司发布的主要面对科学计算、可视化以及交互式程序设计的高科技计算环境。它将数值分析、矩阵计算、科学数据可视化以及非线性动态系统的建模和仿真等诸多强大功能集成在一个易于使用的视窗环境中,为科学研究、工程设计以及必须进行有效数值计算的众多

4、科学领域提供了一种全面的解决方案,并在很大程度上摆脱了传统非交互式程序设计语言(如C、Fortran)的编辑模式,代表了当今国际科学计算软件的先进水平。MATLAB和Mathematica、Maple并称为三大数学软件。它在数学类科技应用软件中在数值计算方面首屈一指。MATLAB可以进行矩阵运算、绘制函数和数据、实现算法、创建用户界面、连接其他编程语言的程序等,主要应用于工程计算、控制设计、信号处理与通讯、图像处理、信号检测、金融建模设计与分析等领域。MATLAB的基本数据单位是矩阵,它的指令表达式与数学、工程中常用的形式十分相似,故用MATLAB来解算问题要比用C,FORTRAN等语言完成相

5、同的事情简捷得多,并且MATLAB也吸收了像Maple等软件的优点,使MATLAB成为一个强大的数学软件。在新的版本中也加入了对C,FORTRAN,C+,JAVA的支持。可以直接调用,用户也可以将自己编写的实用程序导入到MATLAB函数库中方便自己以后调用,此外许多的MATLAB爱好者都编写了一些经典的程序,用户可以直接进行下载就可以用。1.2 1.2 乐曲解析乐音的基本特征可以用基波频率、谐波频率和包络波形三个方面来描述,我们用大写英文字母 CDEFGAB 表示每个音的“音名”(或称为“音调”),当指定某一音名时,它对应固定的基波信号频率。图 1 表示钢琴的键盘结构,并注明了每个琴键对应的音

6、名和基波频率值。这些频率值是按“十二平均律”计算导出,下面解释计算规则:图 1-1 钢琴键盘和相应频率从图 1-1 可以看到,靠下边的 A 键称为小字组 A,它的频率值 fA0= 220Hz,而靠上面的另一个 A 键是小字一组 A,它的频率值是 fA1= 440Hz。两者为二倍频率关系,即 fA1 相当于 fA0 的二次谐波。也称为 8 度音或倍频程 Octave(即我们画频响特性图时所用的术语“倍频程”)。根据荷塘夜色简谱和十二平均律计算出该小节每个乐音的频率,在MATLAB中生成幅度为1,抽样频率为4000kHz的正弦信号表示这些乐音,用sound播放合成的音乐图1-2 乐曲荷塘夜色曲谱由

7、图可知荷塘夜色的曲调定为C,即1=C,对应的频率为261.63Hz,据此可以计算出其他乐音的频率,类推计算出各乐音对应的频率见表1-1 部分乐音对应的频率:表1-1 部分乐音对应的频率乐音1515123频率261.63392261.63392261.63293.66329.63乐音1515122频率261.63392261.63392261.63293.66293.66在确定了各乐音的频率之后需要确定每个乐音的持续时间。每小节有两拍,一拍的时间是0.5s,因此部分乐音的持续时间见表1-2部分乐音对应的时间:表1-2 部分乐音对应的时间乐音1515123时间1.50.50.50.50.50.54

8、乐音1515122时间1.50.50.50.50.50.54而在MATLAB中表示乐音所用的抽样频率为fs=3800Hz,也就是所1s钟内有3800个点,抽样点数的多少就可表示出每个乐音的持续时间的长短。用一个行向量来存储这段音乐对应的抽样点,在用sound函数播放即可。根据以上分析在MATLAB中编写如下程序:sound_1_1.mclear;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;%各个乐音的抽样点数

9、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);endsound(east,8000);%播放音乐2 设计与实现 2.1 简单的音乐合成2.1.1原理分析根据荷塘夜色片段的简谱和“十二平均律”计算出该片段中各个乐音的频率,在 MATLAB 中生成幅度为

10、1、抽样频率为 3800kHz 的正弦信号表示这些乐音。请用 sound 函数播放每个乐音,听一听音调是否正确,最后用这一系列乐音信号拼出荷塘夜色片段,注意控制每个乐音持续的时间要符合节拍,用 sound 函数播放合成的乐音。2.12 Matlab 源代码clear;clc;fs=8000;%抽样频率f=261.63 392 261.63 392 261.63 293.66 329.63 261.63 392 261.63 392 261.63 293.66 293.66 261.63 392 261.63 392 293.66 261.63 220 220 196 261.63 293.66

11、 261.63 392 261.63 392 261.63 220 261.63; %各个乐音对应的频率time=fs*3/2,1/2,1/2,1/2,1/2,1/2,4,3/2,1/2,1/2,1/2,1/2,1/2,4,3/2,1/2,1/2,1/2,1/2,1/2,2,1/2,1/2,1/2,1/2,3/2,1/2,1/2,1/2,1/2,1/2,4;%各个乐音的抽样点数N=length(time);n=1;for num=1:N%利用循环产生抽样数据,num表示乐音编号 t=1/fs:1/fs:time(num)/fs;%产生第num个乐音的抽样点east(n:n+time(num)-

12、1)=sin(2*pi*f(num)*t);%抽样点对应的幅值 n=n+time(num);endsound(east,8000);%播放音乐2.1.3 运行结果分析初步合成的音乐音调符合曲谱,能听出荷塘夜色的旋律。但是每个乐音之间有“啪”的杂声,且无法分辨是何种乐器演奏。2.2 除噪音,加包络2.2.1 原理分析你一定注意到(1)的乐曲中相邻乐音之间有“啪”的杂声,这是由于相位不连续产生了高频分量。这种噪声严重影响合成音乐的质量,丧失真实感,下面通过加包络来消噪音。最简单的包络为指数衰减。最简单的指数衰减是对每个音乘以因子,在实验中首先加的是的衰减,这种衰减方法使用的是相同速度的衰减,但是发

13、现噪音并没有完全消除,播放的音乐效果不是很好,感觉音乐起伏性不强。于是采用不同速度的衰减,根据乐音持续时间的长短来确定衰减的快慢,乐音持续时间越长,衰减的越慢,持续时间越短,衰减的越快。2.2.2 Matlab 源代码clear;clc;fs=3800;%抽样频率f=261.63 392 261.63 392 261.63 293.66 329.63 261.63 392 261.63 392 261.63 293.66 293.66 261.63 392 261.63 392 293.66 261.63 220 220 196 261.63 293.66 261.63 392 261.63

14、392 261.63 220 261.63;time=fs*3/2,1/2,1/2,1/2,1/2,1/2,4,3/2,1/2,1/2,1/2,1/2,1/2,4,3/2,1/2,1/2,1/2,1/2,1/2,2,1/2,1/2,1/2,1/2,3/2,1/2,1/2,1/2,1/2,1/2,4;%各个乐音对应的频率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

15、(1,time(num);%P为存储包络数据的向量L=(time(num)*0 1/5 333/1000 333/500 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 hetangyese(n:n+time(num)-1)=

16、sin(2*pi*f(num)*t).*P(1:time(num);%给第num个乐音加上包络 n=n+time(num);endsound(hetangyese,8000);plot(hetangyese);wavwrite(hetangyese,hetangyese2)2.2.3 运行结果分析播放后可以听出噪音已经消除,同时因为不同时长的乐音衰减的快慢不一样,音乐听起来更有起伏感,如图为2-1波形图。图2-1hetangyese2加包络波形图2.3 加谐波2.3.1 原理分析在音乐中加上二、三、四次谐波,基波幅度为1,高次谐波幅度分别为0.2、0.3、0.1。2.3.2 Matlab 源代

17、码clear;clc;fs=3800;%抽样频率f=261.63 392 261.63 392 261.63 293.66 329.63 261.63 392 261.63 392 261.63 293.66 293.66 261.63 392 261.63 392 293.66 261.63 220 220 196 261.63 293.66 261.63 392 261.63 392 261.63 220 261.63;time=fs*3/2,1/2,1/2,1/2,1/2,1/2,4,3/2,1/2,1/2,1/2,1/2,1/2,4,3/2,1/2,1/2,1/2,1/2,1/2,2,

18、1/2,1/2,1/2,1/2,3/2,1/2,1/2,1/2,1/2,1/2,4;%各个乐音对应的频率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 333/1000 333/500 1;%包络线端点对应的横坐标 T=0 1.5 1 1 0;%包络线端点对应的纵坐标 s=1;

19、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);%加谐波 endhetangyese(n:n+time(num)-1)=ss.*P(1:time(num); %给第num个乐音加上包络 hetangyese(n:n+time(num)-1)=sin(2*pi*f(num)*t).*P(1:time(num);%给第num个乐音加上包络 n=n+time(num);endsound(hetangyese,8000);plot(hetangyese);wavwrite(hetangyese,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论