ImageVerifierCode 换一换
格式:DOCX , 页数:33 ,大小:898.59KB ,
资源ID:9138900      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/9138900.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(毕业设计基于matlab软件的音乐合成.docx)为本站会员(b****8)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

毕业设计基于matlab软件的音乐合成.docx

1、毕业设计基于matlab软件的音乐合成河北经贸大学毕业论文基于MATLAB软件的音乐合成专业名称: 电子信息工程 班 级: 学生姓名: 指导老师: 完成时间: 2015年5月 摘 要 本设计利用MATLAB软件,通过MATLAB GUI构建一个具有图形用户界面的音乐合成系统。该系统能实现音乐的简单合成、音乐的降噪处理、音乐的加谐波处理、音乐的升降度处理、音乐的时域和频域波形图显示及利用傅里叶级数原理合成音乐的操作。本系统应用模块化的思路进行设计,将系统分为四个模块,分别为简单合成及处理音乐的模块、利用傅里叶变换分析音乐频谱的模块、基于傅里叶级数合成音乐的模块和音乐字幕动态显示的模块。本论文阐述

2、了整个系统详细的设计过程,而针对每个模块的设计都有详细的理论基础为依托,包括原理及设计程序,并且有仿真效果的演示。该软件系统作为教学辅助软件可以为语音信号处理课程的教学提供一定的帮助,可以让学生们更好地深入理解信号与系统等主干课程的内容,充分发挥自身的创新能力与实践能力。该系统可以通过选取不同的算法,对音乐分别进行处理,基本做到抑制噪声,提高音乐质量,有利于更高层次的处理与应用。此外,从整体效果上看,该系统的用户应用界面友好、便于操作,通过菜单、控件的使用可以方便的选取不同的方法,设置不同的参数以便于用户操作使用。系统通过对各种处理效果的演示,也可以让用户更直观地了解简单音乐处理的几种方法,并

3、在各种相应处理前后的对比中让用户更容易接受与其对应的方法及特点。关键词 音乐合成;MTALAB;GUI;傅里叶变换Abstract The design in this paper uses the MATLAB software to construct a music synthesis system with a graphical user interface by MATLAB GUI.The system can achieve simple music synthesis,the processing of reducing music noise,the treatment o

4、f music with harmonic,the processing of raising and lower octave,displaying waveform in time domain and frequency domain and synthesis of music based on Fourier series.This system takes the idea of modular design,divided into four modules, respectively including the module of music of simple synthes

5、is and processing,the module of music spectrum analysis through using the Fourier transform,the module of music synthesis based on Fourier series,the module of displaying music subtitle dynamically.This paper,including the principle and program design and simulation results demonstrate, describes th

6、e design process of the system in detail.Each module has a detailed theoretical basis for support.As a teaching aid software can provide some help for the speech signal processing course in teaching,which can help students understand the signal and system course and give full play to students innova

7、tion ability and practice ability.Through selecting different algorithms,the system can dispose music respectively, suppress noise basically,improve the quality of music and avail to deal with the higher level.In addition,the graphic user interface of the system is friendly and easy to operate. Sele

8、ct different methods and set different parameters for users by using the menu,controls.Through a variety of demonstrations of effects,the system also makes users understand several ways of dealing with music more intuitively and in compare with before and after the all treatments,we can accept the c

9、orresponding methods and characteristics more easily.Keywords Music synthesis; MTALAB;GUI;Fourier transform 基于MATLAB软件的音乐合成1 绪论1.1 研究背景及意义 如今,信息化、数字化程度越来越高,语音信号的处理技术作为基于数字信号处理技术与语音学知识对语音信号进行处理的新兴技术被越来越多的高科技产业广泛应用,这项技术成为信息科学工程与研究领域的核心技术之一。MATLAB在信号处理与通信领域应用广泛,是一款数值计算和编程语言结合的优秀计算机软件。音乐信号合成作为语音信号处理的一部分

10、,属于MATLAB软件重要应用领域之一。MATLAB音乐合成系统的设计针对于许多其他的音乐合成处理软件不易学习、操作不便等问题,利用MATLAB语言编程以及GUI界面设计来实现音乐信号的简单合成以及各种加工处理,程序更加易懂,操作更加简便,在各类教学工作中具有很大的实际应用意义。由于音乐信号可以看成是一系列频率与振幅不同的正弦波叠加并加以不同包络形成的,所以,可以基于这个特点利用MATLAB软件分析处理不同音频信号来进行简单的音乐合成。该软件系统作为教学辅助软件可以为语音信号处理课程的教学提供一定的帮助,可以让学生们更好地深入理解信号与系统等主干课程的内容,充分发挥自身的创新能力与实践能力。如

11、今在各高校,MATLAB作为语音信号处理的学习工具已经成为学生们必须学习与掌握的软件。1.2 研究的主要内容 本设计运用MATLAB软件要实现的功能:第一是要利用相关的语音处理函数进行简单的音乐合成,对音乐进行降噪、加谐波以及升降度处理;第二是用傅里叶变换分析经相应处理后的各音乐频谱;第三是运用傅里叶级数的原理来再次合成音乐;第四是实现音乐字幕的动态显示。整个过程利用MATLAB GUI图形应用界面进行显示,完成基本操作,界面友好,能实现良好的人机交互。 在设计中解决的主要问题:简单音乐的合成由于相位不连续产生高频分量而使其质量不佳的问题可通过包络修正,消除噪音。音乐的基波所对应频率的计算。必

12、须充分了解音乐的节拍,即每个音调的持续时间,减少失真。在设计GUI界面时的布局、各种参数设置以及各个模块演示编程的问题。 本设计使用的是MATLAB2013a软件,设计所实现的功能都在GUI图形应用界面体现出来,便于研究与操作。通过本设计让用户更直观地了解简单音乐处理的几种方法,并在各种相应处理前后的对比中更容易接受与其对应的方法及特点,学会并掌握 MATLAB信号处理的编程以及MATLAB下GUI的设计。2 MATLAB软件的简介 MATLAB(matrix&laboratory)矩阵实验室,作为一款拥有算法开发、数据分析及数值计算、创建用户界面等强大功能的仿真软件,被美国Math Work

13、s公司发行,将众多功能合成在一个便于操作的视窗交互化环境中。在科学研究、工程计算、信号处理、图像处理等方面得到广泛应用。而在本设计中用到的是MATLAB2013a时频域分析、音乐合成及GUI图形应用界面等信号处理方面的功能。2.1 MATLAB的发展史 1980年,身为美国New Mexico大学计算机系系主任的Cleve Moler为了让学生方便地调用EISPACK和LINPACK,编写了它们的接口程序,命名为MATLAB。在此之后,国内外许多大学将MATLAB作为教学辅助软件广泛使用。Cleve Moler和John Little在1984年创建了Math Works并推出了MATLAB

14、DOS版,即第一版,其核心是用C语言编写。自此之后,MATLAB不断发展,功能愈加强大。MATLAB5.x版本于20世纪90年代末期推出,可以处理更多的数据结构。2000年,MATLAB6.0被发行,其操作界面拥有了程序、历史信息及变量管理三个窗口。并且替换为FFTW系统,使得计算速度更佳。2001年,MATLAB6.1及Simulink4.0问世和2002年,公司推出MATLAB6.5,其功能更加强大。2004年发行了MATLAB7.0版本,在编程环境、数据可视化、计算和文件I/O等方面的功能进行了改善。随后几年,公司陆续推出了MATLAB7.17.14版本,不断优化性能。近几年公司推出了M

15、ATLAB2012b(8.0版)及MATLAB2013a版本,有了很大改变,最明显的是其桌面,在主窗口中,工具条取代了菜单和工具栏。重新设计了帮助文档,在搜索、浏览及筛选功能上有进一步的提高。到目前为止,还有MATLAB2014a和MATLAB2014b版本。在本设计中用到的是MATLAB2013a版本,此版本较之前版本添加了许多新函数,功能也更加强大,使用更加方便快捷。2.2 MATLAB的系统构成 MATLAB软件可以说是由以下五大部分组成,分别是:软件的开发环境、数学函数库、软件的编程语言、图形处理系统以及该软件的应用接口(API)。MATLAB开发环境是一个方便用户使用的集成工作空间,

16、拥有M文件的编程与调试环境,许可用户进行数据的输入与输出。MATLAB软件的数学函数库拥有全面的计算算法,可以说从加减法最基本的算法到傅里叶变换等复杂算法都涵括在内。所以说,MATLAB能够解决很多复杂的数据计算与工程设计仿真运算。MATLAB语言的语法特征与C+语言非常相似,是在矩阵与数组的基础上进行设计的语言。操作者能够在命令窗口输入命令语句后就可执行该命令,也能够先编写好程序,保存为.M文件后再执行程序。MATLAB的图形处理系统的功能应用主要体现在GUI图形用户应用界面,能够使向量与矩阵完成图形化显示,满足用户的特殊要求。MATLAB软件应用程序接口主要完成的功能是能让MATLAB语言

17、与其他编程语言进行交互,例如在MATLAB中调用C语言程序等。3 MATLAB音乐合成的原理 在本设计中,通过MATLAB软件对音乐信号频率与时长的分析与组合来完成音乐的简单合成。所以在设计过程中,根据音调用频率来体现,节拍用时长来体现的原理,用MATLAB软件进行编程来存储音乐的频率与时长,通过将正弦波形的不同叠加与包络设置来仿真实现音乐的音调与节奏的变化。3.1 所涉及的乐理知识简述 要想实现音乐的合成,就要了解合成音乐所需要的相关数据,也就是音乐的三个特性:音调、响度、音色。音乐的音调就是音的高低,需要考虑影响音调的主要因素即声波的频率。音乐的响度是音的强弱,需要考虑影响响度的主要因素即

18、声波的振动幅度。而音乐音色的变化是由音乐波形中谐波的作用产生的。3.1.1 音调与唱名在日常生活中,读音乐曲谱时发出的1( do)、2( re)、3(mi)、4(fa).这些就称作为唱名。这些唱名分别代表着相应的基波频率。但是只有当确定了音乐的音调之后才能确切的知道各个唱名所真正代表的基波频率值。例如乐谱为1=C,代表着音调为C调则“1( do)”的基波频率是261.6Hz,若乐谱为1=E则“1( do)”频率是239.6Hz,乐谱为1=G则“1( do)”的频率是392.1Hz,“3(mi)”的频率是493.9Hz。3.1.2 音色与谐波 音色的变化是由音乐波形中谐波的作用产生的。在音乐的专

19、业中所指的“泛音”指的就是谐波,在得知音调之后,只能确定音乐信号的基波频率值,但是谐波频率无法确定。不同的乐器会发出不同的音色,这是由于不同的谐波成分和频谱结构导致的。并且不同的乐器所发出的的音乐包络波形是不同的,为了便于用程序来表示波形包络,通常把音乐的复杂包络函数近似直线化,所以音乐波形的包络通常都是折线型。3.1.3 十二平均律 十二平均律,在音乐领域中作为一种音乐定律的方法,指将音乐的八度按照频率等比例地分成十二份。由于“五度相生律”和“十二平均律”发音非常相似而且十二平均律能够解决转调问题,所以,它被广泛应用在键盘乐器与交响乐队中。根据国际标准音的规定,相邻的半音之间的频率之比定为2

20、(1/12)1.059,作为最常见的应用十二平均律而制成的乐器就是钢琴,钢琴的琴键a1的频率规定为440Hz,那么就可以根据比值得出钢琴其他的琴键音对应的频率。例如与a1左边相邻#g1频率是440/1.059=415.03Hz,同理,与a1右边相邻的半音#a1的频率是466.16Hz,也可以算出不同音调下“1(do)”的对应的基波频率,即C:261.63Hz ,F:349.23Hz和G:392Hz 等 。3.2 傅里叶变换与频谱分析合成一段简单的音乐,需要综合考虑音乐的三要素,也就是必须知道该段音乐的基波与谐波频率成分以及包络的形状特征。为了便于分析上述特征,就要进行信号的频谱分析,也就是利用

21、傅里叶变化,得出该音乐信号的频谱结构,来进行其频谱特征的提取。有限长序列的离散傅氏变换(DFT),在信号处理的理论上有重要意义,它将频域也离散化,是现代信号频谱分析主要方法。N点DFT实质上是其频谱的离散频域采样,对频率具有选择性(k=2k/N),在这些点上反映了信号的频谱。 但DFT计算量大,处理复杂,所以引用了快速傅里叶变化(FFT)算法最简单、编程最容易的是基2FFT,还有基4FFT、基8FFT等快速算法。根据采样定律,FFT变换相当于对有限长序列进行频域采样,而不丢失任何信息。所以只要时域序列的长度足够长,采样的点数足够多,频域采样也可以很好地反映信号的频谱趋势,所以在设计中可以用FF

22、T进行语音信号的频谱分析。 4 MATLAB音乐合成系统的总体设计4.1 系统的总体设计 MATLAB音乐合成系统,能实现音乐的简单合成、音乐的降噪处理、音乐的加谐波处理、音乐的升八度处理、音乐的降八度处理、音乐时域与频域波形显示、利用傅里叶级数合成音乐以及音乐字幕的动态显示的操作。该系统的全部功能都通过GUI图形用户界面显示出来,并且使用模块化的设计方法,将系统分为四个模块,如图4-1所示。图4-1 系统总体设计结构图4.2 GUI界面的设计GUIDE(Graphic User Interface Design Environment)是专门设计图形用户界面GUI的集成开发环境。GUI界面一

23、般包括窗口、菜单、按钮和文本框等各种图形对象。在设计GUI时,可以通过鼠标操作就能产生各种GUI控件,这样让用户对图形界面的生成与管理变得直接、方便,能让用户定制用户与MATLAB2013a的交互方式。可以形成一种除命令窗口之外的与MATLAB2013a的交互方式。4.2.1 启动GUIDE在MATLAB2013a中Command窗口里面输入guide 按回车键,或者从菜单里面均可进入GUIDE。MATLAB2013a为GUI图形应用界面的设计准备了以下四种模板,如图4-2所示。图4-2 GUI设计模板选择对话框在GUI设计模板中选中第一个模板,新建并且保存为yinyuehecheng后,MA

24、TLAB2013a会自动产生相应的.fig文件和.m文件。4.2.2 GUIDE设计环境 在进入GUI界面之后,下一步就是进行界面设计编辑。在GUIDE设计环境中用到的事Layout编辑器,操作者可以通过鼠标移动模板左边的控件到中间布局区域,如按钮、坐标轴、文本框等。接下来,通过属性编辑器和对齐编辑器对各控件设置相关属性和进行界面布置,以完善界面功能。本设计总体布局如下图4-3所示。图4-3 GUI设计面板布局4.2.3 GUI界面的功能设计 设计好GUI界面的整体布局之后,接下来就该利用程序代码的编写进行各个按钮功能的设置。找到上述的GUI 的M文件yinyuehecheng.m,打开之后,

25、会看到里面已经存在许多自动生成的程序代码,只需要找到各个按钮及文本编辑框对应的函数。在对应的函数名下输入要实现相应功能所需要的程序。例如在yinyuehecheng.m文件中找到函数:function button1_Callback在这个函数名称下面写入具有简单音乐合成功能的程序。 global flag global west fs f time f_flag; flag = 1; f_flag=0; fs=8000;%该段音乐抽样频率 F=493.88 493.88 493.88 587.33 493.88 440 392 329.63 392 440 493.88; %各个唱名对应的频

26、率 time=fs*1/4,1/4,1/4,1/4,3/4,1/4,1/4,1/4,1/4,1/4,1;%各个唱名的持续时间值 N=length(time); %这段音乐的总抽样点数 west=zeros(1,N); %用west向量来储存抽样点 n=1; for a=1:N %利用循环产生抽样数据,a表示乐音编号 t=1/fs:1/fs:time(a)/fs; %产生第a个乐音的抽样点 west(n:n+time(a)-1)=sin(2*pi*f(a)*t); %抽样点对应的幅值 n=n+time(a); End然后定位相应的简单音乐合成按钮的坐标程序。 t1=linspace(0,leng

27、th(west)/fs,length(west); set(handles.axes1,HandleVisibility,ON);%开始使用坐标,便于操作 axes(handles.axes1);%使用图像,操作在坐标1 plot(t1,west);axis(-0.2 4.2 -1.2 1.2); xlabel(t/s);ylabel(幅度); 这样相应设置好各个功能按钮所对应的程序,就算基本完成了GUI界面的设置。5 MATLAB音乐合成系统的设计与实现5.1 简单合成及处理音乐模块的设计与实现通过给定的音乐简谱和掌握的乐理知识与频谱分析来进行简单音乐的合成。并且在此基础上对音乐进行相应的处

28、理,来比较经不同处理后的音乐播放效果。5.1.1 合成社会主义好 依据音乐社会主义好一小段的音乐简谱和国际规定的十二平均律的计算方法对应地得到此小段音乐中各个唱名的频率,利用MATLAB软件来编程仿真实现音乐的简单合成。音乐简谱如图5-1所示。图5-1 音乐简谱由图5-1可知社会主义好的曲调定为G,也就是说1=G,那么可以知道其对应的频率为329.1Hz,其中 6是低音的意思,即对应G调“6”的频率659.26Hz,取其频率的一半,即659.26/2=329.63Hz。根据“十二平均律”计算得到各个唱名对应的频率如下表5-1。表5-1 唱名对应的频率表唱名3335321 6123频率493.8

29、8493.88493.88587.33493.88440392329.63392440493.88得到该小段音乐各个唱名对应的频率之后,还有很重要的一个数据需要得到,那就是根据乐理知识推算出各个唱名对应的持续时间。由图5-1中1=G2/4可以知道各唱名的持续时间如下表5-2所示。表5-2 唱名持续时间表唱名33353216123时间0.250.250.250.250.750.250.250.250.250.251 依据上述得到的数据可以编写如下程序。 function button1_Callback(hObject, eventdata, handles)%简单音乐的合成 global fl

30、ag global west fs f time f_flag; f lag = 1; f_flag=0; fs=8000; %该段音乐抽样的频率 f=493.88 493.88 493.88 587.33 493.88 440 392 329.63 392 440 493.88; %各个唱名所对应的频率值 time=fs*1/4,1/4,1/4,1/4,3/4,1/4,1/4,1/4,1/4,1/4,1; %各个唱名的持续时间 N=length(time); %这段音乐的总抽样点数 west=zeros(1,N); %用west向量来储存抽样点 n=1; for a=1:N %利用循环产生抽

31、样数据,a表示乐音编号 t=1/fs:1/fs:time(a)/fs; %产生第a个乐音的抽样点 west(n:n+time(a)-1)=sin(2*pi*f(a)*t); %抽样点对应的幅值 n=n+time(a); end5.1.2 加包络,除噪音 在MATLAB中,播放出了社会主义好的第一小节,但可听出声音不是很好,只能听出具有社会主义好的调子而已。会听到有“啪”的杂声,声音比较刺耳,下面通过加上外形相似的包络来消噪音,使不同音的连接处的响度为零即可。编写如下程序。 function button4_Callback(hObject, eventdata, handles)%音乐的降噪global flag global west fs f time f_flag; if flag =1 f_flag=0; N=length(time); %这段音乐的总抽样点数 west=zeros(1,N); %用west向量来储存抽样点 n=1; for

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1