matlab音乐合成报告汇总.doc
《matlab音乐合成报告汇总.doc》由会员分享,可在线阅读,更多相关《matlab音乐合成报告汇总.doc(23页珍藏版)》请在咨信网上搜索。
1、MATLAB音乐合成综合实验 学院: 班级: 指导老师:吴宪祥 同做者: 二0一六年十二月24摘 要 本实验共有三部分:1.简单的音乐合成;2.用傅里叶变换分析音乐;3.基于傅里叶级数的音乐合成。一步一步分析了用MATLAB进行音乐合成的过程。通过本实验达到加深对傅里叶级数和傅里叶分析的理解,熟悉对MATLAB基本使用的目标。该实验采用MATLAB软件仿真来实现。首先,通过编程对一段真实的音乐进行分析、处理,求得这段音乐的基频、谐波分量、等数据;然后,通过对乐理的研究,根据分析中求得的数据编写程序,进行基于傅里叶分析的音乐合成设计,并设计了图形用户界面。目 录1. 绪论 1.1 引言.3 1.
2、2 实验要求.3 1.3 实验原理.32. 简单的合成音乐 2.1 乐理知识介绍.4 2.2 利用MATLAB实现音乐合成器,生成 WAV文件.5 2.3 除噪音,加包络.5 2.4 音乐升高和降八度.9 2.5 加入谐波.93. 用傅里叶变换分析音乐 3.1 载入fmt.wav并播放.11 3.2 处理realware.11 3.3 分析wave2proc的基波和谐波.13 3.4 自动分析fmt.wav的音调和节拍.164. 基于傅里叶级数的音乐合成 4.1 重新加谐波.17 4.2 通过音调信息弹奏送别.195. 制作GUI界面.206.实验难点及问题.217.实验收获.22 1.绪论1
3、.1 引言信号与系统的概念及分析方法广泛应用于通信、自动控制、航空航天、电子信息、地震学、生物工程等领域,因此“信号与系统”是一门电子信息学科相关专业的主干技术课程。MATLAB是国际上公认的优秀的科技应用软件,随着版本的不断升级,内容也在不断扩充。基于MATLAB的音乐分析与合成实验是针对“信号与系统”课程的重点和难点之一的傅里叶变换和傅里叶级数等内容而设计的。由于该实验是真实音乐的实际应用,可以增进对傅里叶级数和傅里叶变换的理解,加深对信号分析工程应用的理解,提高在信号分析领域的应用能力。1.2 实验要求1、3-5人一组,选择不同乐曲,利用MATLAB实现音乐合成器,生成WAV文件;2、给
4、乐音加包络消噪;3、实现音乐的升八度和降八度;4、在音乐中添加谐波;5、用傅里叶级数分析音乐的基频、音调和节拍;6、模仿一些常用乐器(如钢琴、吉他等)实现音乐合成;7、设计GUI界面;8、提交设计报告。1.3实验原理 傅里叶变换建立了信号频谱的概念。所谓傅里叶分析即分析信号的频谱(频率构成)、频带宽度等。要想合成出一段音乐,就要了解该段音乐的基波频率、谐波构成等。因此,必须采用傅里叶变换这一工具。对于连续时间信号f(t),其傅里叶变换为:由于其变换两边的函数f (t) 和F(w)都是连续函数,不适合于计算机处理。MATLAB语言提供了符号函数FOURIER来实现傅里叶变换,但该函数需要信号的解
5、析表达式。而工程应用中经常需要对抽样数据进行傅里叶分析,这种情况下往往无法得到信号的解析表达式,必须采用傅里叶变换的数值计算方法。如果f(t)的主要取值区间为t1,t2,定义T=t2-t1为区间长度。在该区间内抽样N个点,抽样间隔为: 则有:可以计算出任意频点的傅里叶变换值,假设F()的主要取值区间位于1,2,要计算其间均匀抽样的k个值,则有:式中 ,为频域抽样间隔。2. 简单的合成音乐2.1 乐理知识介绍 乐音的基本特征可以用基波频率、谐波频谱和包络波形3个方面来描述。基波频率:每个指定音调的唱名都对应固定的基波信号频率。所谓唱名是指平日读乐谱唱出的1(do)、2(re)、3(mi) ,每个
6、唱名并未固定基波频率。当指定乐曲的音调时才知道此时唱名对应的频率值。如C调“ 1”的基波频率为261.63HZ,F调“1”的基波频率为349.23HZ,F调“ 5”的基波频率为523.25HZ。谐波频谱:在音乐领域中称谐波为“泛音”,由谐波产生的作用称为音色变化。当指定音调之后,仅指定了乐音信号的基波频率,谐波情况并未说明。各种乐器,如钢琴或单簧管,都可以发出某一音调下的唱名,而人的听觉会明显感觉两者不同,这是由于谐波成分有所区别,频谱结构各异。包络波形:不同类型的乐器,包络形状也不相同。在音乐合成实验中,为简化编程描述,通常把复杂的包络函数用少量直线近似。于是,乐音波形的包络呈拆线。有时为了
7、保证在乐音的邻接处信号幅度为零,也可以用指数衰减的包络来表示,这也是最简单的办法。2.2 利用MATLAB实现音乐合成器,生成 WAV文件而在MATLAB中表示乐音所用的抽样频率为fs=10000Hz,也就是所1s钟内有1000个点,抽样点数的多少就可表示出每个乐音的持续时间的长短。用一个行向量来存储这段音乐对应的抽样点,在用sound函数播放即可。根据以上分析在MATLAB中编写如下程序:Clear clc;fs=10000;f=784 659 784 1047 880 1047 784 784 523 587 659 587 523 587 784 659 784 1047 988 880
8、 1047 784 784 587 659 698 494 523 880 1047 1047 988 880 988 1047 880 988 1047 880 880 784 659 523 587 ;time=fs*1 0.5 0.5 2 1 1 2 1 0.5 0.5 1 0.5 0.5 4 1 0.5 0.5 1 0.5 1 1 2 1 0.5 0.5 1 0.5 4 1 1 2 1 0.5 0.5 2 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 4 ;N=length(time); %这段音乐的总抽样点数y=zeros(1,N); %用y向量来储存抽样点n=1;
9、for num=1:N %利用循环产生抽样数据,num表示乐音编号 t=1/fs:1/fs:time(num)/fs; %产生第num个乐音的抽样点y(n:n+time(num)-1)=sin(2*pi*f(num)*t); %抽样点对应的幅值 n=n+time(num);endsound(y,fs); Wavwrite(y,test4);在MATLAB中运行,但是可以听出效果不是很好。2.3 除噪音,加包络下面通过加包络来消噪音。最简单的包络为指数衰减。最简单的指数衰减是对每个音乘以因子,在实验中首先加的是的衰减,这种衰减方法使用的是相同速度的衰减,但是发现噪音并没有完全消除,播放的音乐效果
10、不是很好,感觉音乐起伏性不强。于是采用不同速度的衰减,根据乐音持续时间的长短来确定衰减的快慢,乐音持续时间越长,衰减的越慢,持续时间越短,衰减的越快。在1.1程序的基础上加上包络,编写如下程序:加包络前:clear;clc;fs=10000;f=784 659 784 1047 880 1047 784 784 523 587 659 587 523 587 784 659 784 1047 988 880 1047 784 784 587 659 698 494 523 880 1047 1047 988 880 988 1047 880 988 1047 880 880 784 659 5
11、23 587 ;time=fs*1 0.5 0.5 2 1 1 2 1 0.5 0.5 1 0.5 0.5 4 1 0.5 0.5 1 0.5 1 1 2 1 0.5 0.5 1 0.5 4 1 1 2 1 0.5 0.5 2 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 4 ;N=length(time); %这段音乐的总抽样点数y=zeros(1,N); %用y向量来储存抽样点n=1;for num=1:N %利用循环产生抽样数据,num表示乐音编号 t=1/fs:1/fs:time(num)/fs; %产生第num个乐音的抽样点y(n:n+time(num)-1)=si
12、n(2*pi*f(num)*t); %抽样点对应的幅值 n=n+time(num);endsound(y,fs); 播放后可以听出噪音已经消除,同时因为不同时长的乐音衰减的快慢不一样,音乐听起来更有起伏感,下图是加包络后的east图像(未放大):更科学的包络如下图所示,每个乐音都经过冲激、衰减、持续、消失四个阶段。由上图可以看出这个包络是四段直线段构成的,因此只要确定了每段线段的端点,即可用端点数据写出直线方程,因为直线方程可以用通式写出(我用的是斜截式),因此这段包络可以用简单的循环来完成。例如认为包络线上的数据如下图所示:据此在MATLAB中编写如下程序:clear;clc;fs=1000
13、0;f=784 659 784 1047 880 1047 784 784 523 587 659 587 523 587 784 659 784 1047 988 880 1047 784 784 587 659 698 494 523 880 1047 1047 988 880 988 1047 880 988 1047 880 880 784 659 523 587 ;time=fs*1 0.5 0.5 2 1 1 2 1 0.5 0.5 1 0.5 0.5 4 1 0.5 0.5 1 0.5 1 1 2 1 0.5 0.5 1 0.5 4 1 1 2 1 0.5 0.5 2 0.5 0
14、.5 0.5 0.5 0.5 0.5 0.5 0.5 4 ; N=length(time); %这段音乐的总抽样点数y=zeros(1,N); %用y向量来储存抽样点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 0.5 0.5 0; %包络线端点对应的纵坐标 s=1; b=1:1:time(num);
15、%产生包络线抽样点 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 y(n:n+time(num)-1)=sin(2*pi*f(num)*t).*P(1:time(num); %给第num个乐音加上包络 n=n+time(num);endsound(y,fs);plot(y);运行得到的图像为:下图是两个乐音交接处的局部放大图,可以看到前一个乐音一直衰减到0,后一个乐
16、音从0开始增加,因此消除了噪音。 2.4 音乐升高和降八度升高一个八度即每个乐音的频率都提高一倍,变为原来的2被;降低一个八度即每个乐音的频率都减小一倍,变为原来的1/2。因此最简单的办法是将存储乐音频率的向量每个元素改变为2或1/2倍。即将程序中的f=784 659 784 1047 880 1047 784 784 523 587 659 587 523 587 784 659 784 1047 988 880 1047 784 784 587 659 698 494 523 880 1047 1047 988 880 988 1047 880 988 1047 880 880 784 6
17、59 523 587 改为f=784 659 784 1047 880 1047 784 784 523 587 659 587 523 587 784 659 784 1047 988 880 1047 784 784 587 659 698 494 523 880 1047 1047 988 880 988 1047 880 988 1047 880 880 784 659 523 587 *2或f=784 659 784 1047 880 1047 784 784 523 587 659 587 523 587 784 659 784 1047 988 880 1047 784 784
18、587 659 698 494 523 880 1047 1047 988 880 988 1047 880 988 1047 880 880 784 659 523 587 /2.将上述音乐上高半个音阶,即将频率变为原来的(1.06)倍,可以利用resamlpe函数对原来的数据点进行重采样来实现,因为resample进行重新采样后会使每个乐音的持续时间改变,但是因为升高半个音阶,频率改变不大,所以每个音的持续时间是基本不变的。2.5 加入谐波在1.2的音乐中加上二、三、四次谐波,基波幅度为1,高次谐波幅度分别为0.2、0.3、0.1。只需将1.2程序改为:clear;clc;fs=10000
19、;%抽样频率f=784 659 784 1047 880 1047 784 784 523 587 659 587 523 587 784 659 784 1047 988 880 1047 784 784 587 659 698 494 523 880 1047 1047 988 880 988 1047 880 988 1047 880 880 784 659 523 587 ;time=fs*1 0.5 0.5 2 1 1 2 1 0.5 0.5 1 0.5 0.5 4 1 0.5 0.5 1 0.5 1 1 2 1 0.5 0.5 1 0.5 4 1 1 2 1 0.5 0.5 2 0
20、.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 4 ;N=length(time);%这段音乐的总抽样点数east=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; b=1:1:time(num);%
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- matlab 音乐 合成 报告 汇总
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【人****来】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【人****来】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。