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

下载本文档

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

文档简介

数字信号处理课程设计课程设计 说明书说明书 设计题目:设计题目: 基于基于 MATLAB 的简单音乐合成的简单音乐合成 姓姓 名:名: 专业年级:专业年级: 学学 号:号: 指导老师:指导老师: 时时 间:间: 2015 年年 6 月月 25 日日 数字信号处理课程设计任务书 题目题目基于 MATLAB 的简单音乐合成 主要主要 内容内容 1、自学 Matlab 软件,了解相关编译语句; 2、利用 Matlab 完成简单的音乐合成; 3、分析仿真结果,得出合理结论。 设计设计 要求要求 1、利用 Matlab 实现对自选乐曲的简单音乐合成,生成 .wav 文件; 2、给各个乐音加载包络,生成.wav,并显示音乐信号的包络图像; 3、在音乐中加上二、三、四次谐波,基波幅度为 1,高次谐波幅度分别为 0.388、0.1557、0.2424,并生成.wav 文件。 4、按要求完成设计报告。 主要主要 仪器仪器 设备设备 1、计算机 1 台,Matlab 仿真软件一套。 主要主要 参考参考 文献文献 1 高西全,丁玉美数字信号处理(第三版) M西安:西安电子科技大 学出版社,2008 2 程佩青. 数字信号处理教程(第四版) M北京:清华大学出版社, 2013 3 余成波等.数字信号处理及 MATLAB 实现(第二版) M北京:清华大 学出版社,2008 课程设计进度安排(起止时间、工作内容)课程设计进度安排(起止时间、工作内容) 单人一组,每组选择不同乐曲进行音乐合成,每人 1 套实验环境。整个课程设 计共 1 周 20 学时,具体安排如下: 前期准备工作 4 学时 学习设计题目相关知识,查阅资料,掌握实现的原理; 计划内上机 14 学时 按要求,完成设计方案,编写并调试仿真程序; 计划内上机 2 学时 结果验收,并完成课程设计报告。 课程设计开始日期课程设计开始日期2015.06.23课程设计完成日期课程设计完成日期2015.06.30 指导老师(签名):指导老师(签名):_ 福建农林大学数字信号处理课程设计说明书 目目 录录 1 设计基础.- 1 - 1.1 MATLAB 软件简介 .- 1 - 1.2 乐曲解析 .- 1 - 2 设计与实现.- 2 - 2.1 简单的音乐合成 .- 2 - 2.1.1 原理分析.- 2 - 2.1.2 Matlab 源代码.- 2 - 2.1.3 运行结果分析.- 2 - 2.2 除噪音,加包络 .- 2 - 2.2.1 原理分析.- 2 - 2.2.2 Matlab 源代码.- 2 - 2.2.3 运行结果分析.- 2 - 2.3 加谐波 .- 2 - 2.3.1 原理分析.- 2 - 2.3.2 Matlab 源代码.- 2 - 2.3.2 运行结果分析.- 3 - 3 总结与体会.- 4 - 4 参考文献.- 5 - 基于 MATLAB 的简单音乐合成 - - 4 - - 4 - 1 设计基础设计基础 1.1 MATLAB 软件简介软件简介 MATLAB 是 matrixclc; fs=8000;%抽样频率 f=261.63293.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);%播放音乐 基于 MATLAB 的简单音乐合成 - - 7 - - 7 - 2 设计与实现 2.1 简单的音乐合成 2.1.1 原理分析 根据两只老虎片段的简谱和“十二平均律”计算出该片段中各个乐音的频率, 在 MATLAB 中生成幅度为 1、抽样频率为 8000kHz 的正弦信号表示这些乐音。请 用 sound 函数播放每个乐音,听一听音调是否正确,最后用这一系列乐音信号拼出 两只老虎片段,注意控制每个乐音持续的时间要符合节拍,用 sound 函数播放合 成的乐音。 2.12 Matlab 源代码 clear;clc; fs=8000;%抽样频率 f=261.63293.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 基于 MATLAB 的简单音乐合成 - - 8 - - 8 - 中首先加的是的衰减,这种衰减方法使用的是相同速度的衰减,但是发现噪音并 1.5t e 没有完全消除,播放的音乐效果不是很好,感觉音乐起伏性不强。于是采用不同速度 的衰减,根据乐音持续时间的长短来确定衰减的快慢,乐音持续时间越长,衰减的越 慢,持续时间越短,衰减的越快。 2.2.2 Matlab 源代码 clear;clc; fs=8000;%抽样频率 f=261.63293.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); 基于 MATLAB 的简单音乐合成 - - 9 - - 9 - 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.63293.66329.63261.63261.63293.66329.63261.63329.63349.23 392 329.63349.23392; %各个乐音对应的频率 基于 MATLAB 的简单音乐合成 - - 10 - - 10 - 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 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) 基于 MATLAB 的简单音乐合成 - - 11 - - 11 - 2.3.2 运行结果分析 音乐中加上二、三、四次谐波,基波幅度为 1,高次谐波幅度分别为 0.2、0.3、0.1,如图为 2-2 波形图。 图 2-1 laohu2 加谐波波形图 基于 MATLAB 的简单音乐合成 - - 12 - - 12 - 3 总结与体会总结与体会 通过这次的课程设计,加深了我们对数字信号处理所学知识的了解,增强了我们 对教学知识的运用和主动研究的能力。让我们掌握信号处理过程的仿真设计方法。 通过模仿老师所给的例题和所收集的资料例题,编写 Matlab 仿真程序,主要利用 matlab 软件来实现对乐音信号的仿真,从而加深我们对模拟信号数字化处理的理解, 了解音乐信号时间特性、频率特性变化所带来的影响,初步学会改善音乐播放效果。 在运用所学知识和学习 Matlab 软件的同时也学习到音乐的基本组成 4 参考文献参考文献 1 王力宁.MATLAB 与通信仿真M.北京:人民邮电出版社,1999 2 陈亚勇等.MATLAB 信号处理详解M.北京:人民邮电出版社,2001 3 高西全,丁玉美数字信号处理(第三版) M西安:西安电子科技大学出版社,2008 4 程佩青. 数字信号处理教程(第四版) M北京:清华大学出版社,2013 5 余成波等.数字信号处理及 MATLAB 实现(第二版) M北京:清华大学出版社,2008 6 美Vinay K.Ingle、John G.Proakis数字信号处理应用 Matla b(第 3 版) M北京

温馨提示

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

评论

0/150

提交评论