基于MATLAB软件的音乐合成毕业论文讲解_第1页
基于MATLAB软件的音乐合成毕业论文讲解_第2页
基于MATLAB软件的音乐合成毕业论文讲解_第3页
基于MATLAB软件的音乐合成毕业论文讲解_第4页
基于MATLAB软件的音乐合成毕业论文讲解_第5页
已阅读5页,还剩32页未读 继续免费阅读

下载本文档

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

文档简介

1、河北经贸大学毕业论文 基于 MATLAB 软件的音乐合成 专业名称: 电子信息工程 班 级:201102 学生姓名:王 雪 指导老师:章瑞平 完成时间: 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

4、of reducing music noise,the treatment of music with harmonic,the processing of raising and lower octave,displaying waveform in time domain and frequencyd omain and synthesiso f music based on Fourier series.This system takes the idea of modular design,dividedi nto four modules, respectively includin

5、g the module of music of simple synthesis and processing,the module of music spectrum analysis through using the Fourier transform,the module of music synthesis based on Fourier series,them odule of displaying music subtitle dynamically.This paper,including the principle and program design and simul

6、ation results demonstrate, describest he design process of the system in detail.Eachm odule has a detailed theoretical basis for support.As a teaching aid software can provide some help for the speechs ignal processingc oursei n teaching,whichc an help studentsu nderstandt he signal and system cours

7、e and give full play to stud einntsovation 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

8、 is friendly and easy to operate. Select different methods and set different parametersf or users by using the menu,controls.Througah variety of demonstrationso f effects,thes ystem also makes users understand several ways of dealing with music more intuitively and in compare with before and after t

9、he all treatments,we can accept the corresponding methods and characteristics more easily. KeywordsM usic synthesis; MTALAB;GUI;Fourier transform II 河北经贸大学毕业论文 目录 1 绪论 1.1 研究背景及意义 1 1.2 研究的主要内容 1 2 MATLAB 软件的简介 3 2.1 MATLAB 的发展史 3 2.2 MATLAB 的系统构成 4 3 MATLAB 音乐合成的原理 5 3.1 所涉及的乐理知识简述 5 3.1.1 音调与唱名 5

10、3.1.2 音色与谐波 5 3.1.3 十二平均律 5 3.2 傅里叶变换与频谱分析 6 4 MATLAB 音乐合成系统的总体设计 7 4.1 系统的总体设计 7 4.2 GUI 界面的设计 7 4.2.1 启动GUIDE 8 4.2.2 GUIDE设计环境 8 4.2.3 GUI界面的功能设计 9 5 MATLAB 音乐合成系统的设计与实现 11 5.1 简单合成及处理音乐模块的设计与实现 11 5.1.1 合成社会主义好 11 5.1.2 加包络,除噪音 12 5.1.3 音乐升降度处理 13 5.1.4 音乐加谐波处理 15 5.2 用傅里叶变换分析音乐频谱模块的设计与实现 16 5.3

11、 基于傅里叶级数合成的音乐模块的设计与实现 20 5.4 音乐小星星字幕动态显示模块的设计与实现 21 6 系统的调试与运行 24 河北经贸大学毕业论文 6.1 音乐的播放、暂停的调试与运行 24 6.2 傅里叶变换分析音乐的调试与运行 25 总 结 2 参考文献 27 II 河北经贸大学毕业论文 基于MATLAB 软件的音乐合成 1 绪论 1.1 研究背景及意义 如今,信息化、数字化程度越来越高,语音信号的处理技术作为基于数字信 号处理技术与语音学知识对语音信号进行处理的新兴技术被越来越多的高科技产 业广泛应用,这项技术成为信息科学工程与研究领域的核心技术之一。 MATLAB 在信号处理与通

12、信领域应用广泛,是一款数值计算和编程语言结合 的优秀计算机软件。音乐信号合成作为语音信号处理的一部分,属于 MATLAB 软件重要应用领域之一。MATLAB 音乐合成系统的设计针对于许多其他的音乐合 成处理软件不易学习、操作不便等问题,利用MATLAB 语言编程以及 GUI 界面 设计来实现音乐信号的简单合成以及各种加工处理,程序更加易懂,操作更加简 便,在各类教学工作中具有很大的实际应用意义。由于音乐信号可以看成是一系 列频率与振幅不同的正弦波叠加并加以不同包络形成的,所以,可以基于这个特 点利用 MATLAB 软件分析处理不同音频信号来进行简单的音乐合成。该软件系 统作为教学辅助软件可以为

13、语音信号处理课程的教学提供一定的帮助,可以让学 生们更好地深入理解信号与系统等主干课程的内容,充分发挥自身的创新能力与 实践能力。如今在各高校,MATLAB 作为语音信号处理的学习工具已经成为学 生们必须学习与掌握的软件。 1.2 研究的主要内容 本设计运用 MATLAB 软件要实现的功能:第一是要利用相关的语音处理函 数进行简单的音乐合成,对音乐进行降噪、加谐波以及升降度处理;第二是用傅 里叶变换分析经相应处理后的各音乐频谱;第三是运用傅里叶级数的原理来再次 合成音乐;第四是实现音乐字幕的动态显示。整个过程利用MATLAB GUI 图形 应用界面进行显示,完成基本操作,界面友好,能实现良好的

14、人机交互。 在设计中解决的主要问题: 简单音乐的合成由于相位不连续产生高频分 量而使其质量不佳的问题可通过包络修正,消除噪音。 音乐的基波所对应频 率的计算。必须充分了解音乐的节拍,即每个音调的持续时间,减少失真。 河北经贸大学毕业论文 在设计GUI 界面时的布局、各种参数设置以及各个模块演示编程的问题。 本设计使用的是MATLAB2013a软件,设计所实现的功能都在GUI 图形应用 界面体现出来,便于研究与操作。通过本设计让用户更直观地了解简单音乐处理 的几种方法,并在各种相应处理前后的对比中更容易接受与其对应的方法及特点, 学会并掌握 MATLAB 信号处理的编程以及MATLAB 下GUI

15、 的设计。 河北经贸大学毕业论文 2 MATLAB 软件的简介 MATLAB(matrix %各个唱名对应的频率 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)*

16、t); %抽样点对应的幅值 n=n+time(a); End 然后定位相应的简单音乐合成按钮的坐标程序。 t1=linspace(0,length(west)/fs,length(west); set(handles.axes1,HandleVisibility,O;N%开) 始使用坐标,便于操作 axes(handles.axes;1%)使用图像,操作在坐标1 plot(t1,west);axis(-0.2 4.2 -1.2 1.2); xlabel(t/s);ylabe幅l( 度); 这样相应设置好各个功能按钮所对应的程序,就算基本完成了GUI 界面的设 10 河北经贸大学毕业论文 5 M

17、ATLAB 音乐合成系统的设计与实现 5.1 简单合成及处理音乐模块的设计与实现 通过给定的音乐简谱和掌握的乐理知识与频谱分析来进行简单音乐的合成。 并且在此基础上对音乐进行相应的处理,来比较经不同处理后的音乐播放效果。 5.1.1 合成社会主义好 依据音乐社会主义好一小段的音乐简谱和国际规定的十二平均律的计算 方法对应地得到此小段音乐中各个唱名的频率,利用 MATLAB 软件来编程仿真 实现音乐的简单合成。音乐简谱如图5-1 所示。 图 5-1 音乐简谱 由图 5- 1可知社会主义好的曲调定为G,也就是说1=G,那么可以知道 其对应的频率为329.1Hz,其中 6 是低音的意思,即对应G调“

18、6”的频率 659.26Hz, 取其频率的一半,即659.26/2=329.63H。z 根据“十二平均律”计算得到各个唱名对应的频率如下表5-1。 表 5-1 唱名对应的频率表 唱名 3 3 3 5 3 2 1 6 1 2 3 频率 493. 493.8 493.8 587.3 493.8 440 392 329.6 392 440 493.8 88 8 8 3 8 3 8 得到该小段音乐各个唱名对应的频率之后,还有很重要的一个数据需要得 到,那就是根据乐理知识推算出各个唱名对应的持续时间。由图 5-1 中 1=G2/4 可以知道各唱名的持续时间如下表5-2所示 11 河北经贸大学毕业论文 表

19、 5-2 唱名持续时间表 唱名 3 3 3 5 3 2 1 6 1 2 3 时间 0.25 0.25 0.25 0.25 0.75 0.25 0.25 0.25 0.25 0.25 1 依据上述得到的数据可以编写如下程序。 function button1_Callback(hObject, eventdata, ha%n简dle单s)音乐的合成 global flag 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

20、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 %利用循环产生抽样数据,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); e

21、nd 5.1.2 加包络,除噪音 在 MATLAB 中,播放出了社会主义好的第一小节,但可听出声音不是 很好,只能听出具有社会主义好的调子而已。会听到有“啪”的杂声,声音 比较刺耳,下面通过加上外形相似的包络来消噪音,使不同音的连接处的响度为 零即可。编写如下程序。 function button4_Callback(hObject, eventdata, ha%n音dle乐s)的降噪 global flag global west fs f time f_flag; if flag =1 f_flag=0; N=length(time);% 这段音乐的总抽样点数 12 河北经贸大学毕业论文

22、west=zeros(1,N); %用 west向量来储存抽样点 n=1; for a=1:N %利用循环产生抽样数据,a 表示乐音编号 t=1/fs:1/fs:time(a)/;f s % 产生第 a 个乐音的抽样点 G=zeros(1,time(a);%G 为存储包络数据的向量 G(1:time(a)=exp(1:(-1/time(a):1/80;0%0产) 生包络点 west(n:n+time(a)-1)=sin(2*pi*f(a)*t).*G(1:time(a); n=n+time(a); end 加包络后的仿真时域波形如图5-2所示。 图 5-2 音乐降噪时域图形 由图可见,通过加包

23、络,使每个音的连接处的幅度有所减小,使音乐听起来 更加连续,悦耳。 5.1.3 音乐升降度处理 升高一个八度即每个唱名的频率都提高一倍,变为原来的2倍;降低一个八 度即每个唱名的频率都减小一倍,变为原来的 1/2。因此最简单的办法是将存储 该段音乐的各个乐音频率的向量中每个元素改变为原来的2 或 1/2倍即可。编写 程序如下。 function button6_Callback(hObject, eventdata, ha%n音dle乐s)升八度 13 河北经贸大学毕业论文 global flag %定义全局变量 global west fs time f_flag; if flag =1 f

24、_flag=1; f=493.88 493.88 493.88 587.33 493.88 440 392 329.63 392 440 493%.频88率*2; 升高 N=length(time);% 这段音乐的总抽样点数 west=zeros(1,N); %用 west向量来储存抽样点 n=1; for a=1:N %利用循环产生抽样数据,a 表示乐音编号 t=1/fs:1/fs:(time(a)/fs; %产生第 a 个乐音的抽样点 P=zeros(1,time(a);%P 为存储包络数据的向量 L=(time(a)*0 1/5 333/1000 333/500% 1包; 络线端点对应的

25、横坐标 T=0.2 1.5 1 1 0.2;%包络线端点对应的纵坐标 s=1; b=1:1:time(a);%产生包络线抽样点 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 west(n:n+time(a)-1)=sin(2*pi*f(a)*t).*P(1:time(a); n=n+time(a); end 将音乐升八度之后的仿真时域波形如下图5-3所示。 14

26、河北经贸大学毕业论文 图 5-3 音乐升八度时域图 同样地,将音乐进行降八度处理只需改变上述程序中的一条语句即可。即将 f=493.88 493.88 493.88 587.33 493.88 440 392 329.63 392 440 49改3.8为8:*2 f=493.88 493.88 493.88 587.33 493.88 440 392 329.63 392 440 4。93.88/2 5.1.4 音乐加谐波处理 在 5.1.1的音乐中加上二、三、四次谐波,基波幅度为 1,高次谐波幅度分别 为 0.2、 0.3、 0.1。主要的功能程序如下。 function button5_C

27、allback(hObject, eventdata, ha%n音dle乐s)加谐波 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(a)*t);%加谐波 end west(n:n+time(a)-1)=ss.*P(1:time(a); n=n+time(a); end 加入谐波之后的仿真时域波形如图5-5。 15 河北经贸大学毕业论文 图 5-5 音乐加谐波的时域图形 由图可见,每个音的连接处同样是衰减到一较小值而不是 0,同时音乐听起 来更加真是实,效果更好。 5.2 用

28、傅里叶变换分析音乐频谱模块的设计与实现 为了更加清晰地了解经过不同处理的音乐所发生的变化,就要研究音乐的基 波与谐波,即每种音乐的频谱图,可以对音乐时域波形进行傅里叶变换,得到的 幅值谱,在频谱图上的第一个突出的波峰对应的频率即为基频。编写了如下程序。 function button10_Callback(hObject, eventdata, ha%n傅dle里s叶) 分析 global flag global west fs f f_flag%;定 义全局变量 if flag=1 if f_flag=1 f1=f*2; else if f_flag=2 f1=f/2; else if f_

29、flag=0 f1=f; end %所用到的抽样频率为 8000. NFFT = 2nextpow2(length(west); 16 河北经贸大学毕业论文 Y = fft(west,NFFT)*2/length(west); g = fs/2*linspace(0,1,NFFT/2+1); set(handles.axes2,HandleVisibility,O;%N开)始使用坐标,更便于操作 axes(handles.axes%2开 ;始用图像,在坐标2 处进行操作 plot(g,2*abs(Y(1:NFFT/2+1);axis(-0.1 max(f1)+50 -0.1 max(2*abs

30、(Y(1:NFFT/2+1)+0.2); xlabel(f/Hz);ylabel幅( 度); else errordlg(请 您先点击简单音乐合成按钮!,温馨提示); end 经过分别处理的音乐通过调用该段程序就会分别显示出相对应的频谱图,以 便从视觉上更加直观地了解各个音乐的不同之处,在各种相应处理前后的对比中 更容易让用户接受与其对应的方法及特点。 音乐社会主义好简单合成后的仿真频谱图形如下图5-6所示。 图 5-6 简单音乐合成频谱图 由图5-6可知,该段音乐的基波频率为329.1Hz,它的幅度值是0.125,以此类 推,它对应的各个高次谐波幅度值如下表5-3所示。 表5-3 高次谐波幅

31、值表 谐波 2 3 4 5 6 7 幅度 0.25 0.256 0.755 0.025 0.125 0.01 17 河北经贸大学毕业论文 图 5-7 为音乐加谐波之后的仿真频谱图。 图 5-7 音乐加谐波频谱图 该图与图 5-6所示的简单音乐合成有明显的区别,波形边缘更加平缓,音乐 听起来更加清晰,效果更好。 图5-8与图 5-9分别为音乐升八度和降八度处理的仿真频谱图。 图 5-8 音乐升八度频谱图 18 河北经贸大学毕业论文 图 5-9 音乐降八度处理频谱图 由上述图 5-8与图 5-9所示频谱图可以清楚地看到,升八度处理是在简单音 乐合成图 5-6的基础上频率增加了一倍,并且各个幅值有所

32、升高,降八度处理是 在图 5-6的基础上频率降低了一倍,并且幅值有轻微的下降。 利用傅里叶级数的原理合成的音乐的仿真频谱图形,如图5-10所示。 图 5-10 基于傅里叶级数合成的音乐频谱 由上图 5-10与 5-6频谱图的比较,可以直观的看出,利用傅里叶级数分析原 19 河北经贸大学毕业论文 理合成的音乐频谱曲线愈加光滑,噪声干扰少,只是幅值很小,质量较简单音乐 合成的高。 5.3 基于傅里叶级数合成的音乐模块的设计与实现 运用傅里叶级数变换的原理来再次合成音乐社会主义好的第一小节,只 需将5.1.4中音乐加谐波的程序幅度修改一下。 将 m=1 0.3 0.2;% 波形幅值矩阵改为: m=0

33、.125 0.25 0.256 0.755 0.025 0.125 0.%0波1形; 幅值矩阵 运行后可以听出声音更加真实了。仿真时域波形如图5-11。 图 5-11 基于傅里叶级数合成音乐的时域波形 利用傅里叶级数合成音乐的部分程序。 function button11_Callback(hObject, eventdata, ha%n傅dle里s叶) 级数合成的 音乐 % m=1 0.3 0.2;%波形幅值矩阵 m=0.125 0.25 0.256 0.755 0.025 0.125 0.01*1; ss=zeros(1,length(t); for i=1:length(m) ss=ss

34、+m(i)*sin(2*i*pi*f(a)*t); %加谐波 20 河北经贸大学毕业论文 end west(n:n+time(a)-1)=ss.*P(1:time(a%)给); 第 a个乐音加上包络 n=n+time(a); end t1=linspace(0,length(west)/fs,length(west); set(handles.axes1,HandleVisibility,O%N开)始; 使用坐标,便于操作 axes(handles.axes%1操);作在坐标1 plot(t1,west);axis(-0.2 4.2 -1.7 1.7); xlabel(t/s);ylabe幅l

35、( 度); 5.4 音乐小星星字幕动态显示模块的设计与实现 运用前面的简单音乐合成的相关原理及方法来合成音乐小星星并且实现 小星星歌词字幕的动态显示。小星星的音乐简谱如图5-12所示。 图 5-12 小星星音乐简谱 用钢琴的标准音A4=440Hz,根据国际上规定的十二平均律,相邻的半音之 间频率之比是 1.059463,而且由图可知乐谱的基调是1=C,即该段音乐的基准频 率设置为 Pt=44100Hz。在编写程序的过程中运用十二平均律的计算方法 即:scale12=A4/2(9/12)*2.(0:11)/1。2)由上图 5-12的音乐简谱可知,此音乐为 七音符,程序中设置为map=1 3 5

36、6 8 10 1。2 21 河北经贸大学毕业论文 其中的乐谱写为:score=1 1 5 5 6 6, 54 4 3 3 2 2 ,15 5 4 4 3 3 ,25 5 4 4 3 3 ,2 1 1 5 5 6 6 ,54 4 3 3 2 2 1。音乐的每个唱名持续的时间设置为rhythm=repma(t 1 1 1 1 1 1 2, 1,6)。 针对于音乐小星星的歌词在 GUI 界面实现边播放边显示,用到的是 GUI 中的 edit1文本框,应用语句 se(t handles.edit,1 string,变量名)来达到显示 的目的,其中歌词的文字用矩阵lyric=一闪一闪亮晶晶满天都是小星星

37、 挂在天上放光明它是我们的小眼睛一闪一闪亮晶晶满天都是小星 星来完成编辑。 其中该段音乐合成及频谱显示的程序如下。 y = ; for i=1:length(score) %length(score)为 score的长度为 7*6=42 y =y sin(1:rhythm(i)*p0)/pt*2*pi*scale12(map(score(i);%)音 乐合成 end t = linspace(0,length(y)/pt,length(%y时);域波形在界面坐标显示 set(handles.axes1,HandleVisibility,O%N开)始; 启动坐标,便于操作 axes(handle

38、s.axes%1开);始图像的使用,基本操作在坐标1 plot(t(1:pt/10),y(1:pt/10); axis(-0.01 0.11 -1.2 1.2); xlabel(t/s);ylabe幅l( 度); NFFT = 2nextpow2(length(y%)傅; 里叶频谱分析 Y = fft(y,NFFT)*2/length(y); g = pt/2*linspace(0,1,NFFT/2+1); set(handles.axes2,HandleVisibility,O%N开)始; 启动坐标,便于操作 axes(handles.axes%2开);始使用图像,操作在坐标2 plot(g

39、,2*abs(Y(1:NFFT/2+1);axis(-0.1 550 -0.1 max(2*abs(Y(1:NFFT/2+1)+0.2); xlabel(f/Hz);ylabel幅( 度); str = ; for i=1:length(score) if mod(i,7)=0 s=sprintf(%1c,lyric(i); str=strcat(str,s); str=str,10; set(handles.edit1,String,str); pause(0); wavplay(sin(1:rhythm(i)*p0)/pt*2*pi*scale12(map(score(i),pet)l;s

40、 e 22 河北经贸大学毕业论文 wavplay(sin(1:rhythm(i)*p0)/pt*2*pi*scale12(map(score(i),pt); s = sprintf(%1c,lyric(i); str=strcat(str,s);s et(handles.edit1,String,str) pause(0); End 图 5-13为音乐小星星在 GUI 界面的字幕显示。 图 5-13 小星星的字幕显示 图5-13中的字幕显示在GUI 界面中实现的是边播放边显示 图 5-14 是音乐小星星的时域与频域仿真实现图。 图 5-14 小星星时域与频域图形 23 河北经贸大学毕业论文 6

41、 系统的调试与运行 本设计利用MATLAB 软件,通过MATLAB GUI 构建一个具有图形用户界面 的音乐合成系统,界面友好、操作方便。该系统成功地实现了音乐的简单合成、 音乐的降噪处理、音乐的加谐波处理、音乐的升降度处理、音乐的时域和频域波 形显示分析及基于傅里叶级数分析合成的音乐的操作。但这些操作并不是轻松实 现的,在编程与设计过程中,各个模块也是经过验证与调试才达到如今的效果。 6.1 音乐的播放、暂停的调试与运行 在设计音乐的播放与暂停这个功能时,一开始是用MATLAB 中的 sound函 数,将向量转换成声音,进行音乐的播放,但是它的不足之处是在播放的过程中 不能中途暂停,也就是暂

42、停的功能不能体现出来,因此,将 sound 函数的语句 sound(west,8000替)换,分别有播放、暂停、继续播放,实现了音乐的暂停与播放 功能。编写程序如下。 function button8_Callback(hObject, eventdata, ha%n音dle乐s)的播放 global flag global west fs p; if flag=1 p=audio player(west,fs%)将; 向量转换成声音 play(p);%播放音乐 end function button9_Callback(hObject, eventdata, hand音le乐s)%的暂停 g

43、lobal p flag; if flag=1 pause(p);%音乐的暂停 end function button12_Callback(hObject, eventdata, hand音le乐s)的% 继续播放 global p; if flag =1 reae(p);%音乐的继续播放 end 24 河北经贸大学毕业论文 6.2 傅里叶变换分析音乐的调试与运行 在用傅里叶分析合成的音乐的模块中,一开始计划使用 MATLAB 中的 wavread函数来读取.wav 文件,实现相应功能,但是总不成功,后来通过查阅资 料和 MATLAB help的帮助才意识到那个光盘中并不存在现成的 fmt.

44、wav 文件, 所以用另一种方法实现音乐傅里叶频谱显示,通过学习了 MATLAB 中快速傅里 叶变换函数 FFT的用法,利用FFT函数实现了该功能,编写程序如下。 NFFT = 2nextpow2(length(west); Y = fft(west,NFFT)*2/length(west); g = fs/2*linspace(0,1,NFFT/2+1); set(handles.axes2,HandleVisibility,ON打);开%坐标,方便操作 axes(handles.axes2)使;%用图像,操作在坐标2 plot(g,2*abs(Y(1:NFFT/2+1);axis(-0.1 max(f1)+50 -0.1 max(2*abs(Y(1:NFFT/2+1)+0.2); xlabel(f/Hz);ylabel幅( 度); 在该系统各个模块设计的过程中,都会也遇到或大或小的问题,比如,在合 成音乐的过程中,4节拍对应的频率与持续时间的计算问题;在GUI界面设计过 程中参数的设置问题等,这些问题都通过查阅资料,进一步的调试与运行,成功 地实现了要达到的功能。成功地实现了音乐的播放以及经过各种处理之后的音乐 播放。 25 河北经贸大学毕业论文 总结 本设计利用PC机,通过MATLAB GUI 构建了一个具有图形用户界面的

温馨提示

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

评论

0/150

提交评论