matlab音乐合成葫芦娃

合集下载

在Matlab中实现音乐合成和音乐分析的方法

在Matlab中实现音乐合成和音乐分析的方法

在Matlab中实现音乐合成和音乐分析的方法音乐作为一种艺术形式,是人类情感和创造力的结晶。

如何在Matlab中实现音乐合成和音乐分析的方法,成为了许多音乐爱好者和研究者所关注的问题。

本文将介绍一些常用的音乐合成和音乐分析的方法,并说明它们在Matlab中的实现。

首先,我们来讨论音乐合成的方法。

音乐合成的目标是通过人工的方式生成音乐声音信号。

这可以通过基于规则的方法或基于样本的方法实现。

基于规则的音乐合成常常依赖于合成器,通过调整音色、音高、音量等参数来实现声音生成。

在Matlab中,我们可以利用`audioplayer`函数和音频波形生成函数来实现基于规则的音乐合成。

首先,我们需要定义一个音频波形生成函数,它可以根据输入的参数生成对应的音频波形。

然后,我们可以使用`audioplayer`函数将生成的音频波形播放出来。

通过调整参数可以实现不同的音乐效果。

而基于样本的音乐合成则是利用已有的音频样本来合成音乐。

在Matlab中,我们可以使用`audioread`函数来读取音频样本,然后通过重复拼接、叠加和变调等方式来生成新的音乐。

此外,我们还可以利用`resample`函数来改变音频的采样率,从而实现音乐的时间拉伸或压缩。

通过调整样本的选择和变换方式,我们可以获得不同风格和效果的音乐合成结果。

接下来,我们来讨论音乐分析的方法。

音乐分析的目标是对音乐进行特征提取和结构分析,以便深入理解音乐的内在规律和风格特点。

在Matlab中,有许多用于音乐分析的工具箱和函数可供使用。

一种常用的音乐分析方法是通过频谱分析来提取音乐的频率和强度信息。

在Matlab中,我们可以利用`fft`函数对音频信号进行傅里叶变换,得到音频信号的频谱。

通过分析频谱的峰值频率、能量分布等特征,我们可以获得音乐的基本音高、音色和音量等信息。

此外,我们还可以利用`spectrogram`函数来生成音频的时频谱图,以便更直观地观察音乐信号的时变特征。

如何在MATLAB中进行音频合成与分析

如何在MATLAB中进行音频合成与分析

如何在MATLAB中进行音频合成与分析在MATLAB中进行音频合成与分析音频合成与分析在音乐制作、声音特效处理、语音识别等领域起着重要作用。

MATLAB作为一款强大的数值分析和数据可视化软件,在音频处理方面具有丰富的功能和工具。

本文将介绍如何在MATLAB中进行音频合成与分析。

一、音频合成音频合成是指通过各种声音合成方法和算法生成人造音频的过程。

在MATLAB中,我们可以利用其丰富的信号处理工具箱来进行音频合成。

首先,我们需要了解音频合成中的一些基本概念和技术。

例如,有源声音合成,通过模拟振动源(如声乐器)的物理特性来生成声音;无源声音合成,通过合成算法生成各种声音效果;叠加合成,将多个声音信号叠加在一起;频率合成,通过操纵音频信号的频谱来生成新的声音效果等等。

了解这些概念和技术将帮助我们更好地进行音频合成。

在MATLAB中,可以通过调用信号处理工具箱中的函数来实现音频合成。

例如,可以使用fft函数来进行频谱分析和合成;使用wavread和audioread函数来读取和写入音频文件;使用声音合成函数synth和sound来生成和播放音频等等。

这些函数提供了丰富的参数选项,可以满足不同合成需求。

二、音频分析音频分析是指对音频信号进行各种分析和挖掘的过程。

在MATLAB中,我们可以利用其强大的信号处理和数据分析功能来进行音频分析。

音频分析的目的可以包括频谱分析、音高检测、节奏分析、音频特征提取等等。

这些分析可以帮助我们了解音频信号的特点、提取其中的有用信息,并为后续的处理和应用提供支持。

在MATLAB中,可以使用fft函数来进行频谱分析。

该函数可以将时域信号转换为频域信号,并得到信号的频率和幅度信息。

在进行频谱分析时,我们可以使用窗函数对信号进行窗口截断和平滑处理,从而得到更准确的频谱分析结果。

除了频谱分析,我们还可以使用自相关函数、互相关函数等来进行时域分析和相关分析。

MATLAB中提供了丰富的函数和算法,例如autocorr、xcorr等,可以满足不同分析需求。

基于MATLAB的简单音乐合成

基于MATLAB的简单音乐合成

《数字信号处理》课程设计说明书设计题目:基于MATLAB的简单音乐合成姓名:专业年级:学号:指导老师:时间:2015年6月25日《数字信号处理课程设计》任务书指导老师(签名):__________________________目录1.1MATLAB软件简介.......................................................1.2乐曲解析............................................................. 2设计与实现...............................................................2.1简单的音乐合成.......................................................2.1.1原理分析 .........................................................2.1.2Matlab源代码 .....................................................2.1.3运行结果分析 .....................................................2.2除噪音,加包络.......................................................2.2.1原理分析 .........................................................2.2.2Matlab源代码 .....................................................2.2.3运行结果分析 .....................................................2.3加谐波...............................................................2.3.1原理分析 .........................................................2.3.2Matlab源代码 .....................................................2.3.2运行结果分析 ..................................................... 3总结与体会............................................................... 4参考文献.................................................................1设计基础1.1MATLAB软件简介MATLAB是matrix&laboratory两个词的组合,意为矩阵工厂(矩阵实验室MATLAB 工作界面)。

【哈理工电信】MATLAB在音乐合成中的应用大作业

【哈理工电信】MATLAB在音乐合成中的应用大作业

MATLAB及应用大作业MATLAB在音乐合成中的应用题目要求:编写程序,用图中给出的包络消除任务2中音乐中的噪音;这个包络如下图所示,每个乐音都经过冲激、衰减、持续、消失四个阶段。

结果图展示:程序特点:1.输入:各音音高frequency(1*number_syllables的向量),各音音符对应时长note_time(1*number_syllables的向量),乐音数number_syllables单位音节采样点量num_sample,各音时长time(1*number_syllables的向量),谐波harmonic(1*number_harmonic的向量),谐波数number_harmonic.包络特殊点special_points(包括开始点S0、转折点T1,T2,T3、终点E4,number_sp*2的数组)特殊点数number_sp状态数num_status2.过程:2.1建立包络2.1.1建立单音包络函数envelope_single()输入:此单音时长type,包络特殊点special_points(包括开始点S0、转折点T1,T2,T3、终点E4)2.1.1.1包络特殊点处理成创立此音节的特殊点special_points_single 2.1.1.2算线段参数line_parameter=[斜率slope 截距intercept]2.1.1.3创立各线端的对应开头与结束点status_list2.1.1.4 每个不同的状态都逐点遍历,赋值符号表达式进行计算输出:此单音包络对应的各点值:结果存储点time_storage_result (type(type_index)*1)2.1.2总音包络区段找出到底有几个类型的音长和总时长type_array 向量(1*num_type)num_typenum_time_all=sum(time,'all');结构矩阵type_structure (2×type struct )有:音长字段type(<-----type_cell),结果向量字段type_index(<-----num_type)type_structure(type_index).time_storage_result=envelope_single (type,special_points)更改time矩阵,使其便于索引type_index(<-----num_type)time(type_array(type_index)==time)=type_index;遍历位置得出所有点的包络,同时用泛波填充包络result_all (num_time_all*1)使用type_time_structure和type_frequency_structure每个结构体内置type和template两个成员result_all是最终结果点,有result_index遍历指针syllables_index遍历音节指针type_time_structure(time(syllables_index)).type/template找出当前time类型type和templatetype_frequency_structure(frequency(syllables_index)).type/template找出当前frequency类型type和templatenum_current_Ttype=type_time_structure(time(syllables_index)).type; result_index=1;result_index_end=result_index-1+num_current_Ttype;result_all(result_index:result_index_end)=...type_frequency_structure(frequency(syllables_index)).template(1:num_ current_Ttype)....*type_time_structure(time(syllables_index)).template;harmonic_template的函数编程:输入:最大时长Tmax,谐波的倍数n和对应幅值A,此刻的基频角频率w根据1到最大时长Tmax创造存储行向量storage_result基频角频率.*谐波的倍数构造出对角阵diag_nwstorage_result=repmat(存储矩阵storage_result,length(谐波的倍数行向量矩阵),1)对角阵diag_nw与storage_result相乘得出storage_result,正弦函数化幅值对角阵diag_A与storage_result相乘得出storage_result按行累加得存储矩阵storage_result3.输出:有谐波、经包络修正后的乐音程序部分1(之前做的,从网上的已有程序更正包络后得到的,比较慢,胜在便于理解的简单):clc;clear;close all;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];%各个乐音对应的频率fs=8000;%各个乐音的抽样点数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);%这段音乐的音数time个sample_point_storage=zeros(1,N);%储存time个零元n=1;m=[1 0.2 0.3];%谐波for num=1:N%处理第num个音t=1/fs:1/fs:time(num)/fs;%展开这个音使它变成time(num)个的展开的抽样点P=zeros(1,time(num));%P为存储该包络数据的向量L=(time(num)*[0,1/5,333/1000,333/500,1]);%包络线端点对应的横坐标,333/1000,333/500如此处理是为了防止不出现整数,影响包络线处理T=[0,1.5,1,1,0];%包络线端点对应的纵坐标s=1;for k=1:4k1=k+1;%k1用作标识下一个元素L10=L(k1);%L10用作标识下一个横坐标元素L1=L10-1; %L1用作界定此次包络线段右端范围kk=(T(k1)-T(k))/(L(k1)-L(k));%斜率,纵坐标差比横坐标差b=1:L10-s;%产生包络线抽样点P(s:L1)=kk*b(1:end);%L10-s个c=ones(1,(L10-s));P(s:L1)=P(s:L1)+(T(k))*c;%包络线直线方程通式,就是造出有斜率的过原点的直线,然后向右移动,向上移动s=L10; %处理下一个包络线段end% plot(P);ss=zeros(1,time(num));%创造这个展开后的抽样点for mi=1:length(m)%展开的抽样点上每个谐波相加ss=ss+m(mi)*sin(2*mi*pi*f(num)*t);endsample_point_storage(n:n+time(num)-1)=ss.*P;%最终的该音的谐波n=n+time(num);%plot(sample_point_storage);end% sound(sample_point_storage, 8000);plot(sample_point_storage);%播放音乐audiowrite('music_assignment_04.wav',sample_point_storage,8000) ;程序部分2(之后做的,从头到尾自己写的,参数自己调的,比较快,缺点是编程繁琐和空间耗费大,以及自己调的参数走音严重)% 第零步:清场准备clc;clear all;close all;% 第一步:输入% 各音音高frequency(1*number_syllables的向量),g3_35=196.028;a3_37=220.0501;c4_40=262.0355;d4_42=291.9626;e4_44=330.0452;g4_47=392.0533;frequency=[c4_40 g4_47 c4_40 g4_47 c4_40 d4_42...e4_44 c4_40 g4_47 c4_40 g4_47 c4_40...d4_42 d4_42 c4_40 g4_47 c4_40 g4_47...d4_42 c4_40 a3_37 a3_37 g3_35 c4_40...d4_42 c4_40 g4_47 c4_40 g4_47 c4_40...a3_37 c4_40];% 各音音符对应时长(1*number_syllables的向量),note_time=[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];% 乐音数,num_syllables=length(note_time);% 单位音节采样点量num_sample,num_sample=8000;% 各音时长time(1*number_syllables的向量),time=num_sample*note_time;%谐波harmonic(1*number_harmonic的向量),谐波的倍数n和对应幅值Aglobal n;global A;n=[1 3 5 7];A=[1 0.4 0.2 0.1];%包络特殊点special_points(包括开始点S0、转折点T1,T2,T3、终点E4,number_sp*2的数组)global special_points;special_points=[0 0;0.20 1.50;0.333 1.00;0.666 1.00;1.00 0];% 第二步:% 构造时长/频率类型矩阵和找出总时长type_time_array=unique(time);type_frequency_array=unique(frequency);num_time_all=sum(time,'all');% 构造时长/频率结构数据变量,存储模板,以便免除重复计算% 更改时长/频率矩阵,使其便于索引type_time_structure=struct('type',num2cell(type_time_array));for type_index=1:length(type_time_array)type_time_structure(type_index).template=...envelope(type_time_array(type_index));time(type_time_array(type_index)==time)=type_index;endtype_frequency_structure=struct('type',num2cell(type_frequency_array) );global Tmax;Tmax=type_time_array(end);for type_index=1:length(type_frequency_array)type_frequency_structure(type_index).template=...harmonic_template(2*pi*(type_frequency_array(type_index)));frequency(type_frequency_array(type_index)==frequency)=type_index;end% 第三步:% 遍历位置得出所有点的结果result_all=zeros(num_time_all,1);result_index=1;for syllables_index=1:num_syllablesnum_current_Ttype=type_time_structure(time(syllables_index)).type;result_index_end=result_index-1+num_current_Ttype;result_all(result_index:result_index_end)=...type_time_structure(time(syllables_index)).template....*type_frequency_structure(frequency(syllables_index)).t emplate(1:num_current_Ttype);result_index=result_index_end+1;endaudiowrite('music_htys.wav',result_all,8000) ;plot(result_all);function [envelope]=envelope(type)global special_points;%创立结果存储点envelope=ones(1,type);%创立此音节的特殊点special_points_single=[special_points(:,1)*typespecial_points(:,2)];%创立各线端的对应开头与结束点status_list=[special_points_single(1:end-1,1)+1special_points_single(2:end,1)];%每个不同的状态都逐点遍历for status_index=1:length(special_points)-1envelope(status_list(status_index,1):status_list(status_index,2))=...interp1(special_points_single(status_index:status_index+1,1),special_poi nts_single(status_index:status_index+1,2),status_list(status_index,1):stat us_list(status_index,2),'linear');endfunction [storage_result]=harmonic_template(w) global n;global A;global Tmax;storage_result=1:Tmax;diag_nw=diag(w*n);storage_result=repmat(storage_result,length(n),1);storage_result=diag_nw*storage_result;storage_result=sin(storage_result);storage_result=diag(A)*storage_result;storage_result=sum(storage_result);end第一步:输入初始设定有音高和各音高出现的序列表frequency,各音符对应时长出现的序列表note_time,经过单位音节采样点量num_sample拉伸的时间点表time,每一个元素的大小代表接下来创造有多少个点的向量。

(总)基于MATLAB的简单音乐合成仿真设计.

(总)基于MATLAB的简单音乐合成仿真设计.

密级:学号:2013248731本科生毕业论文(设计)基于MATLAB的简单音乐合成仿真设计学院:信息工程年级: 13级专业:通信工程学生姓名:何世欣指导教师:魏涛学士学位论文原创性声明本人郑重声明:所呈交的论文(设计)是本人在指导老师的指导下独立进行研究,所取得的研究成果。

除了文中特别加以标注引用的内容外,本论文(设计)不包含任何其他个人或集体已经发表或撰写的成果作品。

对本文的研究做出重要贡献的个人和集体,均已在文中以明确方式表明。

本人完全意识到本申明的法律后果由本人承担。

学位论文作者签名(手写):签字日期:年月日学位论文版权使用授权书本学位论文作者完全了解学校有关保留、使用学位论文的规定,同意学校保留并向国家有关部门或机构送交论文的复印件和电子版,允许论文被查阅和借阅。

本人授权江西科技学院可以将本论文的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或扫描等复制手段保存和汇编本学位论文。

(请在以上相应方框内打“√”)学位论文作者签名(手写):指导老师签名(手写):签字日期:年月日签字日期:年摘要科学技术的发展使得社会生活越来越趋于信息化和数字化,在此基础上语音信号也可以基于数字信号处理技术和语音学相关知识进行信息化处理,此类技术因应用性广便捷性高受到社会的广泛关注,已成为信息科学工程与研究领域的核心技术,被越来越多的高科技产业广泛使用。

计算机合成音乐也在其基础上得以迅速普及,而且理论上可以创造出任何一种声音。

MATLAB是一种用于数据分析和处理的计算机应用软件,它可以将语音文件进行信息化处理转化为离散的数据文件,再通过内置强大的矩阵运算能力如数字滤波、时域和频域分析、傅里叶变换、时域和频域分析、声音合成以及各种图形的呈现等处理数据。

利用MATLAB自带的功能函数可以快捷而又方便地完成语音信号的处理和分析以及信号的可视化,使人机交互更加便捷。

音乐可视为不同频率与振幅的正弦波叠加并加以不同包络所形成的信号,它的这个特点使得MATLAB的处理有了可能,通过处理不同的音频MATLAB可以进行简单的音乐合成。

MATLAB音乐合成

MATLAB音乐合成
x=x+E*(sin(a(music(n)).*t)).*u{n}; end sound(x,32000);
包络波形:
1.5 1
0.5 0
-0.5
0
0.5
1
1.5
2
2.5
3
3.5
4
用指数衰减也不行。经过与同学对比,发现对音符间隔理解不用。如果向( 1) 中那样,第一个 5 演奏后,停顿一个音符,虽然更好听些,但是加包络以后,还 是会造成有高频分量。 所以改变方法,将 5 延长至下一个 5.
figure; subplot(3,1,1); plot(wave2proc); title( 'wave2proc' ); subplot(3,1,2); plot(sample2); title( 'sample2' ); subplot(3,1,3); plot(sample2-wave2proc'); title( 'sample2-wa ve2proc' );
K=2^(1/12); a0=220*pi/2; for n=1:20
a(n)=a0.*K^n; end b0=a0*2; for n=1:20
b(n)=b0.*K^n; end c0=a0*3; for n=1:20
c(n)=c0.*K^n; end
a(25)=0; b(25)=0; c(25)=0;
因为非线性谐波和噪声有一个共同点,就是随机产生,无周期性变化。 所以可以把波形进行若干次叠加,然后取平均值,可以想到,叠加次数越多,其 平均值就越接近于周期波形。 读出realwave波形,发现采样点为243,重复十次,可得周期为24.3,所以可 以将其延长至十倍,这样,周期就是整数。

Matlab音乐合成实验报告

Matlab音乐合成实验报告

课程设计《音乐合成》实验报告专业:测控技术与仪器班级:测控11-2 班*名:***学号: ***********指导教师:**广东石油化工学院计算机与电子信息学院信号与系统课程设计-------利用matlab合成音乐一、实验目的1. 熟悉MATLAB的软件和语言指令的使用;2. 学习利用MATLAB进行连续信号的时域、频域分析;3. 熟悉抽样信号与连续信号的区别。

二、实验内容1.请根据《画心》片断的简谱和“十二平均律”计算出该片断中各个乐音的频率,在MATLAB 中生成幅度为1抽样频率为8kHz 的正弦信号表示这些乐音。

请用sound 函数播放每个乐音,听一听音调是否正确。

最后用这一系列乐音信号拼出《画心》片断,注意控制每个乐音持续的时间要符合节拍,用sound 播放你合成的音乐,听起来感觉如何?并用图显示生成的音乐信号。

相关知识:①《画心》完整曲谱,实验时从中随机截取几节用于编程。

②利用十二平均律计算频率以及相关音乐知识。

如图1,其中错误!未找到引用源。

,错误!未找到引用源。

,错误!未找到引用源。

相当于错误!未找到引用源。

的二次谐波,二者是倍频的关系。

从A到A1共有12个键,7个白色键,5个黑色键。

中间这些频率值得计算规律为相邻音倍乘系数错误!未找到引用源。

即错误!未找到引用源。

,别的依次类推。

图1 钢琴键盘图1中各键对应的频率如下表:bG表示的F升高半音,在乐谱中用#表示。

或者G降低半音,用b表示。

乐谱这中的4/4表示每小节有四拍,一个1/4音符的持续时间为一拍,一拍大概0.5s左右。

eg:y=0*t; %初始化y(t<0.25)=sin(440*2*pi*t(t<0.25)); %第一个音 5,持续时间0.25sy(0.25<t&t<0.5)=sin(392*2*pi*t(0.25<t&t<0.5)); %第二个音3,持续时间0.25ssound(y,8000) %播放音乐三.实验步骤3.1音乐合成根据《画心》第一小节的简谱和十二平均律计算出该小节每个乐音的频率,在MATLAB中生成幅度为1,抽样频率为8kHz的正弦信号表示这些乐音,用sound播放合成的音乐。

利用Matlab进行语音合成和音频增强处理

利用Matlab进行语音合成和音频增强处理

利用Matlab进行语音合成和音频增强处理引言人类语音是一种重要的交流工具,语音合成和音频增强处理是利用计算机技术来模拟和改善语音信号的质量和特征的方法。

在实际应用中,利用Matlab进行语音合成和音频增强处理可以帮助我们实现更好的语音识别、语音合成和音频处理效果。

本文将介绍如何利用Matlab进行语音合成和音频增强处理,并探讨其在实际应用中的潜在价值。

一、语音合成语音合成是指通过计算机技术将文本转化为与人类语音相似的声音信号。

利用Matlab可以通过多种方法进行语音合成,其中最常用的方法之一是基于合成过程的参数提取和重构。

在语音合成中,首先需要从文本中提取语音的特征参数,例如基频、共振峰频率等。

然后,根据这些参数和合成模型,可以通过数字信号处理技术将这些特征参数转化为声音信号。

最后,可以应用数字信号处理算法来改善合成声音的质量。

除了基于合成过程的方法,利用深度学习和神经网络等技术进行语音合成也是一种常见的方法。

这些方法可以通过训练模型来实现高质量的语音合成,但是需要大量的数据和计算资源。

二、音频增强处理音频增强处理是指通过算法和技术改善音频信号的质量和清晰度。

利用Matlab 可以进行多种音频增强处理,例如降噪、去混响、音频增益调整等。

降噪是一种常见的音频增强处理方法,它可以通过去除环境噪声和其他干扰声音来提升语音信号的清晰度。

利用Matlab可以应用数字滤波器和自适应滤波器等算法来实现降噪处理。

去混响是另一种常见的音频增强处理方法,它可以通过去除声音的反射和共振效应来改善音频信号的质量。

利用Matlab可以应用卷积混响模型和数字滤波器等算法来实现去混响处理。

除了降噪和去混响,音频增益调整也是一种常见的音频增强处理方法。

它可以通过调整音频信号的增益来改变音频信号的音量和动态范围。

三、实例应用利用Matlab进行语音合成和音频增强处理在实际应用中具有广泛的潜在价值。

下面举例说明几个应用场景:1. 语音合成应用于自动语音电话系统。

如何使用MATLAB进行语音识别与合成

如何使用MATLAB进行语音识别与合成

如何使用MATLAB进行语音识别与合成引言:随着人工智能技术的迅速发展,语音识别与合成逐渐成为我们日常生活中不可或缺的一部分。

借助于MATLAB这一强大的工具,我们可以轻松实现语音识别与合成的功能。

本文将介绍如何使用MATLAB进行语音识别与合成,以及一些相关的算法和技巧。

一、MATLAB中的语音处理工具箱MATLAB提供了一系列强大的语音处理工具箱,其中包括音频数据导入、音频显示、频谱分析、语音识别、语音合成等功能。

我们可以使用这些工具箱来快速进行语音处理的各个环节。

二、语音信号的特征提取与预处理语音信号是一种时间序列信号,我们需要将其转化为数值特征来进行处理。

常用的语音特征包括语音音素、频率、时域和频域特征等。

在MATLAB中,我们可以使用MFCC(Mel-Frequency Cepstral Coefficients)来提取语音信号的特征。

MFCC是一种重要且有效的语音特征提取方法,可以在一定程度上帮助我们区分不同的语音信号。

三、语音识别算法的实现语音识别是将语音信号转化为相应的文本或命令的过程。

常见的语音识别算法包括模型基于高斯混合模型(Gaussian Mixture Model,GMM)的HMM(Hidden Markov Model)、深度神经网络(Deep Neural Networks,DNN)等。

在MATLAB 中,我们可以使用Speech Recognition Toolbox来实现这些算法。

例如,我们可以使用HMM来训练一个语音识别模型,然后将新的语音信号输入模型中进行识别。

四、语音合成算法的实现语音合成是将文本或命令转化为相应的语音信号的过程。

主流的语音合成算法包括基于规则的方法和基于统计的方法。

基于规则的方法是通过事先定义一些语音合成的规则来实现,而基于统计的方法则是通过学习大量的语音样本来生成合成语音。

在MATLAB中,我们可以使用Speech Synthesis Toolbox来实现语音合成算法。

利用MATLAB合成音乐的函数模拟实现与比对

利用MATLAB合成音乐的函数模拟实现与比对
1 相 关 知 识
先 介绍 一下 乐理 方面 的相 关知识 ,关 于简 谱 和琴键 的对 应关 系 :基 本音 阶 (是 以全 音 、半音 以及 其他音 程 顺 次排 列 的一 串音)为 C调 大音 阶 ,在 钢琴 上 弹奏时 全用 白键 ,中央 C是 小 字一 组 的 do,也 有 D调 、F调 等. 音 阶分 为“大音 阶”和 “小音 阶 ”,即“大调 式”和“靶 >魇 ”.大音 阶 由 7个 音 组成 ,其 中第 3,4(即 mi和 fa)音 之 间和第 7,8(即 xi和高音 do)音 之 间是半 音程 ,其他 音 之 间是 全音 程.小 音 阶第 2,3(即 re和 mi)音 之 间和 5, 6(即 SO和 la)音 之 间为半音 程 .这里 不 同 的音 高决 定不 同 的声 音 频 率 ,在 软件 中用不 同的数 值 体现 ,起 到 调 节 音调 的作用 ,经过 数 学公式 调 整可 以模 仿 出原 唱 的167i0 0)l:






3· 17654312 1 0:



J: J 』
第 17卷
{ ?l;{4 7口 2 3 4 5 6
fa SO la xi do re mi fa SO la xi do re mi fa so 1a xi
图 1 琴 键 与 简 谱 的 对 应
如 图 ,4/4分母 的 4表示 曲谱 以 四分音 符 为一拍 ,分子 的 4表示 每 小节 4拍 .利 用 MATLAB编写 乐音 需 要 区别每 个音 的节 拍 ,确定 其震 动 时 间 ,数字 下 两横 表示 这个 音是 四分之 一拍 ,4个 这 样 的音 为 一拍 ;数 字 下 一 横 表示 这个 音是 二 分之 一拍 ,即半 拍 ,两个 这样 的音为 一拍 ;数 字下 方无 横线 表示 这个 音是 一拍 .数字 之 间 的点 代表 半拍 ,这样 可 知每 小 节各个 音 节均 为 四拍.1一F表示 小字 一组 的 f1对 应 do的音 ,依 次 向前 向后类

matlab音乐合成

matlab音乐合成

M A T L A B数学实验报告姓名:学号:指导老师:专业班级:音乐合成学号班级姓名指导教师实验题目音乐合成评分1.实验目的:1.熟悉MATLAB的软件和语言指令的使用;2. 学习利用MATLAB进行连续信号的时域、频域分析;3. 通过电子音乐合成方面的练习增进对傅里叶级数的理解2.实验内容:使用matlab演奏《当你孤单你会想起谁》3.详细设计:1.本次音乐合成所作曲目为《当你孤单你会想起谁》简谱首先介绍matlab函数的玩法:matlab播放音乐是由sound(Y,fs,bits)函数完成的,该函数的3个参数代表输入信号、采样率、比特率。

先说采样率fs的设置,人耳能够听到的声音范围是20~20000Hz。

根据采样定理fs只需要大于40000即可。

此处采样率的设置采用了MP3的标准,即fs=44.1k.再说输入信号Y,Y一般是一个正弦波,如A*sin(2*pi*w*t)。

其中A控制着声音的大小,w控制着声音的高低,t的范围控制着声音的长短,所以理论上利用这个公式可以发出任何声音,只是不能控制音色和音质(音色音质很难用参数量化,我问了一下学语音的同学,这个东西跟音频谱重心,音频扩展度和音频谱平坦度有关系,这里不作讨论)。

比特率采用默认值即可,该参数省略。

于是用下面的公式就可以播放出标准音la:fs=44100;t=0: 1/fs: 0.5;la = sin(2*pi*440*t);sound(la, fs)据所知,音高和频率是指数的关系,它们满足下面的公式,其中p是音高,f是频率标准音la,即钢琴的A4键,定义为p=69。

音高每上升一个半音,p加1。

设计代码:%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% when you are lonely,who will you think about? //当你孤单你会想起谁 on Matlab fs = 44100; % sample ratedt = 1/fs;T16 = 0.125;t16 = [0:dt:T16];[temp k] = size(t16);t4 = linspace(0,4*T16,4*k);t8 = linspace(0,2*T16,2*k);[temp i] = size(t4);[temp j] = size(t8);% Modification functionsmod4=(t4.^4).*exp(-30*(t4.^0.5));mod4=mod4*(1/max(mod4));mod8=(t8.^4).*exp(-50*(t8.^0.5));mod8=mod8*(1/max(mod8));mod16=(t16.^4).*exp(-90*(t16.^0.5));mod16=mod16*(1/max(mod16));f0 = 2*146.8; % reference frequency ScaleTable = [2/3 3/4 5/6 15/16 ...1 9/8 5/4 4/3 3/2 5/3 9/5 15/8 ...2 9/4 5/2 8/3 3 10/3 15/4 4 ...1/2 9/16 5/8];% 1/4 notesdo0f = mod4.*cos(2*pi*ScaleTable(21)*f0*t4); re0f = mod4.*cos(2*pi*ScaleTable(22)*f0*t4); mi0f = mod4.*cos(2*pi*ScaleTable(23)*f0*t4); fa0f = mod4.*cos(2*pi*ScaleTable(1)*f0*t4); so0f = mod4.*cos(2*pi*ScaleTable(2)*f0*t4); la0f = mod4.*cos(2*pi*ScaleTable(3)*f0*t4); ti0f = mod4.*cos(2*pi*ScaleTable(4)*f0*t4); do1f = mod4.*cos(2*pi*ScaleTable(5)*f0*t4); re1f = mod4.*cos(2*pi*ScaleTable(6)*f0*t4); mi1f = mod4.*cos(2*pi*ScaleTable(7)*f0*t4); fa1f = mod4.*cos(2*pi*ScaleTable(8)*f0*t4); so1f = mod4.*cos(2*pi*ScaleTable(9)*f0*t4); la1f = mod4.*cos(2*pi*ScaleTable(10)*f0*t4); tb1f = mod4.*cos(2*pi*ScaleTable(11)*f0*t4); ti1f = mod4.*cos(2*pi*ScaleTable(12)*f0*t4); do2f = mod4.*cos(2*pi*ScaleTable(13)*f0*t4); re2f = mod4.*cos(2*pi*ScaleTable(14)*f0*t4); mi2f = mod4.*cos(2*pi*ScaleTable(15)*f0*t4); fa2f = mod4.*cos(2*pi*ScaleTable(16)*f0*t4); so2f = mod4.*cos(2*pi*ScaleTable(17)*f0*t4); la2f = mod4.*cos(2*pi*ScaleTable(18)*f0*t4); ti2f = mod4.*cos(2*pi*ScaleTable(19)*f0*t4); do3f = mod4.*cos(2*pi*ScaleTable(20)*f0*t4); blkf = zeros(1,i);% 1/8 notesdo0e = mod8.*cos(2*pi*ScaleTable(21)*f0*t8); re0e = mod8.*cos(2*pi*ScaleTable(22)*f0*t8); mi0e = mod8.*cos(2*pi*ScaleTable(23)*f0*t8); fa0e = mod8.*cos(2*pi*ScaleTable(1)*f0*t8); so0e = mod8.*cos(2*pi*ScaleTable(2)*f0*t8);la0e = mod8.*cos(2*pi*ScaleTable(3)*f0*t8);ti0e = mod8.*cos(2*pi*ScaleTable(4)*f0*t8);do1e = mod8.*cos(2*pi*ScaleTable(5)*f0*t8);re1e = mod8.*cos(2*pi*ScaleTable(6)*f0*t8);mi1e = mod8.*cos(2*pi*ScaleTable(7)*f0*t8);fa1e = mod8.*cos(2*pi*ScaleTable(8)*f0*t8);so1e = mod8.*cos(2*pi*ScaleTable(9)*f0*t8);la1e = mod8.*cos(2*pi*ScaleTable(10)*f0*t8);tb1e = mod8.*cos(2*pi*ScaleTable(11)*f0*t8);ti1e = mod8.*cos(2*pi*ScaleTable(12)*f0*t8); do2e = mod8.*cos(2*pi*ScaleTable(13)*f0*t8);re2e = mod8.*cos(2*pi*ScaleTable(14)*f0*t8); mi2e = mod8.*cos(2*pi*ScaleTable(15)*f0*t8);fa2e = mod8.*cos(2*pi*ScaleTable(16)*f0*t8); so2e = mod8.*cos(2*pi*ScaleTable(17)*f0*t8);la2e = mod8.*cos(2*pi*ScaleTable(18)*f0*t8);ti2e = mod8.*cos(2*pi*ScaleTable(19)*f0*t8); do3e = mod8.*cos(2*pi*ScaleTable(20)*f0*t8); blke = zeros(1,j);% 1/16 notesdo0s = mod16.*cos(2*pi*ScaleTable(21)*f0*t16); re0s = mod16.*cos(2*pi*ScaleTable(22)*f0*t16); mi0s = mod16.*cos(2*pi*ScaleTable(23)*f0*t16); fa0s = mod16.*cos(2*pi*ScaleTable(1)*f0*t16); so0s = mod16.*cos(2*pi*ScaleTable(2)*f0*t16); la0s = mod16.*cos(2*pi*ScaleTable(3)*f0*t16); ti0s = mod16.*cos(2*pi*ScaleTable(4)*f0*t16); do1s = mod16.*cos(2*pi*ScaleTable(5)*f0*t16); re1s = mod16.*cos(2*pi*ScaleTable(6)*f0*t16); mi1s = mod16.*cos(2*pi*ScaleTable(7)*f0*t16); fa1s = mod16.*cos(2*pi*ScaleTable(8)*f0*t16); so1s = mod16.*cos(2*pi*ScaleTable(9)*f0*t16); la1s = mod16.*cos(2*pi*ScaleTable(10)*f0*t16); tb1s = mod16.*cos(2*pi*ScaleTable(11)*f0*t16); ti1s = mod16.*cos(2*pi*ScaleTable(12)*f0*t16); do2s = mod16.*cos(2*pi*ScaleTable(13)*f0*t16); re2s = mod16.*cos(2*pi*ScaleTable(14)*f0*t16); mi2s = mod16.*cos(2*pi*ScaleTable(15)*f0*t16); fa2s = mod16.*cos(2*pi*ScaleTable(16)*f0*t16); so2s = mod16.*cos(2*pi*ScaleTable(17)*f0*t16); la2s = mod16.*cos(2*pi*ScaleTable(18)*f0*t16); ti2s = mod16.*cos(2*pi*ScaleTable(19)*f0*t16); do3s = mod16.*cos(2*pi*ScaleTable(20)*f0*t16); blks = zeros(1,k);% Melody by Schau_malpart1 = [mi1e fa1e so1e so1e so1e so1e so1f mi1e fa1e...so1e so1e so1e so1e so1f la1e ti1e...do2f mi1f mi1e re1e mi1e mi1e mi1e mi1e ...];part2=[ so1e so1e fa1e fa1e mi1e re1e do1e do1e mi1e...mi1e fa1e mi1e do1e do1f so1e so1e...so1e fa1e fa1e mi1e fa1e so1e so1e mi1e mi1e re1e re1e re1e ...];part3 = [mi1e fa1e so1e so1e so1e so1e so1f so1e so1e...so1e so1e so1e so1e so1f la1e ti1e...do2f mi1f mi1e re1e mi1e mi1e mi1e mi1e mi1e so1e...];part4 = [ so1e so1e fa1e fa1e mi1e re1e do1e do1e mi1e mi1e fa1e mi1e do1e so1e so1e...so1e fa1e fa1e mi1e fa1e so1e so1e la1e la1e so1e so1e la1f ti1f...do2e do2e re2e do2e do2f do2e do2e...ti1e do2e ti1e so1e so1e so1e so1e...la1f do1f do1f re1e mi1e mi1e so1e so1e mi1e re1f la1e ti1e...do2e do2e re2e do2e do2f do2e do2e...ti1e do2e ti1e so1e so1f so1e so1e...la1e do2e do2e do2e do2e do2e do2e...do2e re2s re2e do2e mi2e re2e re2f re2f re2f re2f re2f ...];part5 = [mi2f mi2e fa2e mi2e re2f do2e re2e so2e re2e re2f re2f...do2f do2e re2e do2f ti1e la1e...ti1f mi2e ti1e ti1e ...la1f re2e mi2e re2e do2e la1f ...so1f re2e mi2e re2e do2e la1f...];% Combination, v1 is complete version, v2 is simple version.v1 = [part1 part2 part3 part4 part5];s = v1;sound(s,fs);输入此代码后,即可使《当你孤单你会想起谁》以matlab的形式播放出来4:实验结果:经过matlab的处理后,《当你孤单你会想起谁》通过matlab播放了出来,并可以画出如下图片。

MATLAB中的音乐合成和音频处理技术

MATLAB中的音乐合成和音频处理技术

MATLAB中的音乐合成和音频处理技术音乐是人类文化的一部分,而音频处理和音乐合成则是现代技术的重要应用之一。

在MATLAB中,我们可以利用其强大的信号处理功能和数值计算能力,实现高质量的音频处理和音乐合成。

本文将探讨MATLAB中的音乐合成和音频处理技术,并介绍一些常用的方法和工具。

一、音频处理技术音频处理技术是指对音频信号进行各种操作和处理,以改善音频质量或提取有用信息。

MATLAB提供了许多处理音频信号的函数和工具箱,例如音频导入、滤波、降噪、特征提取等。

1. 音频导入和播放在MATLAB中,我们可以使用audioread函数将音频文件导入到工作空间中,并使用sound函数或audioplayer对象来播放音频。

2. 滤波和均衡器滤波是音频处理中常用的技术之一,用于去除噪声或强调特定频率的信号。

MATLAB提供了一系列滤波器设计和滤波函数,如低通滤波、高通滤波、带通滤波等。

此外,还可以使用均衡器调整音频频谱的均衡度。

3. 降噪和音频增益降噪是一项重要的音频处理任务,用于减少噪声对音频质量的影响。

MATLAB 中有多种降噪算法可供选择,如傅里叶变换降噪、小波降噪等。

此外,还可以通过调节音频增益来增强信号的强度和清晰度。

4. 音频特征提取音频特征提取是指从音频信号中提取与语音内容、音乐信息等相关的特征。

MATLAB中可以使用信号处理工具箱的功能来提取音频特征,如时域特征(如能量、过零率等)、频域特征(如频谱、谱图等)、光谱特征(如梅尔频率倒谱系数、线性预测编码系数等)等。

5. 音频合成和效果处理除了信号处理和特征提取外,MATLAB还提供了强大的音频合成和效果处理功能。

我们可以使用音频合成算法生成各种音频信号,如正弦波、白噪声、方波等。

此外,还可以使用音频效果处理算法实现音频混响、合唱、失真等效果。

二、音乐合成技术音乐合成是指通过声音的合成和处理,生成逼真的音乐作品。

在MATLAB中,我们可以利用其丰富的信号处理和数值计算功能,实现各种音乐合成技术。

(完整word版)使用matlab进行简单音乐合成

(完整word版)使用matlab进行简单音乐合成

信号与系统-综合实验之音乐合成(1)请根据《东方红》片断的简谱和“十二平均律”计算出该片断中各个乐音的频率,在MATLAB中生成幅度为1 、抽样频率为8kHz 的正弦信号表示这些乐音.请用sound 函数播放每个乐音,听一听音调是否正确。

最后用这一系列乐音信号拼出《东方红》片断,注意控制每个乐音持续的时间要符合节拍,用sound 播放你合成的音乐,听起来感觉如何?代码如下:f =8000;t2=[0:1/f:1];t4=[0:1/f:0。

5];t8=[0:1/f:0.25];omg5=523.35;omg6=587.33;omg2=392;omg1=349。

23;omg6l=293.66;m1=sin(2*pi*omg5*t4);m2=sin(2*pi*omg5*t8);m3=sin(2*pi*omg6*t8);m4=sin(2*pi*omg2*t2);m6=sin(2*pi*omg1*t4);m7=sin(2*pi*omg1*t8);m8=sin(2*pi*omg6l*t8);m9=sin(2*pi*omg2*t2);m=[m1 m2 m3 m4 m6 m7 m8 m9];sound(m);听的时候发现在相邻乐音之间有杂音,这是由于相位不连续造成的。

(2)你一定注意到(1) 的乐曲中相邻乐音之间有“啪”的杂声,这是由于相位不连续产生了高频分量.这种噪声严重影响合成音乐的质量,丧失真实感。

为了消除它,我们可以用图1。

5 所示包络修正每个乐音,以保证在乐音的邻接处信号幅度为零。

此外建议用指数衰减的包络来表示.我采用的是指数衰减的包络.代码如下:f =8000;t2=[0:1/f:1];t4=[0:1/f:0。

5];t8=[0:1/f:0.25];omg5=523。

35;omg6=587。

33;omg2=392;omg1=349。

23;omg6l=293.66;m1=exp(—2*t4)。

*sin(2*pi*omg5*t4);m2=exp(-4*t8).*sin(2*pi*omg5*t8);m3=exp(—4*t8)。

如何利用Matlab进行语音合成

如何利用Matlab进行语音合成

如何利用Matlab进行语音合成引言语音合成是一种将电子信号转化为可听的语音的技术,广泛应用于语音助手、自动售货机、智能客服等领域。

在语音合成技术的发展中,Matlab作为一种强大的数学计算工具,为我们提供了实现语音合成的丰富功能和灵活性。

本文将介绍如何利用Matlab进行语音合成,通过对声音的处理和调整,创建自然、流畅的语音合成系统。

背景语音合成的目标是生成自然、流畅、易于理解的语音。

为了实现这一目标,需要将输入的文本转化为相应的声音信号。

Matlab提供了一些强大的工具和函数,可用于分析和处理声音信号,从而实现语音合成。

声音处理在进行语音合成之前,我们首先需要对声音信号进行处理。

声音信号一般以数字化的形式存储,在Matlab中可以通过音频采样技术获取声音信号,并将其转化为数字信号。

分析声音信号在利用Matlab进行声音处理时,我们可以使用一些函数来分析声音信号的特征。

例如,通过采样率和位深度等参数获取声音信号的基本信息。

此外,还可以使用快速傅里叶变换(FFT)等技术,对声音信号进行频谱分析,从而获得声音信号的频率特征。

调整声音信号Matlab还提供了一些函数和工具,可用于调整声音信号的特性。

通过改变声音信号的频率、振幅和相位等参数,我们可以实现对声音信号的调整和变换。

例如,可以利用能量归一化方法,提高声音信号的音量,使其更加清晰可听。

语音合成算法在处理完声音信号后,我们可以利用Matlab中的语音合成算法生成自然的语音。

其中,一个常用的算法是基于频域的方法——加法合成算法。

该算法通过将不同频率的声音信号按照一定比例叠加,生成最终的合成语音。

参数调整语音合成的实现通常需要调整一些参数,以获取更自然、流畅的语音效果。

在Matlab中,我们可以通过调整声音信号的频谱分布、共振特性和谐波关系等参数来实现。

这些参数的调整可以通过修改算法中各个模块的参数值来完成。

优化与评估在进行语音合成之后,我们需要对合成语音进行优化和评估。

如何利用MATLAB进行音频信号处理与合成

如何利用MATLAB进行音频信号处理与合成

如何利用MATLAB进行音频信号处理与合成MATLAB是一款非常强大的软件工具,它具备丰富的音频信号处理和合成功能。

利用MATLAB进行音频信号处理和合成,可以帮助人们实现各种音频效果的创造和优化。

本文将介绍如何利用MATLAB进行音频信号处理与合成,并着重讨论一些常用的技术和方法。

一、音频信号处理的基础知识1.1 音频信号的特点音频信号是一种连续的、时间域上的信号,通常以波形的形式呈现。

音频信号的特点是具有频率、振幅和相位等信息,可以通过快速傅里叶变换(FFT)将其转换为频域信号进行分析和处理。

1.2 音频信号处理的基本步骤音频信号处理的基本步骤包括音频读取、信号预处理、特征提取、效果处理和音频输出等。

其中,音频读取是将音频文件加载到MATLAB中进行处理的第一步,信号预处理是对音频信号进行滤波、降噪等预处理操作,特征提取是提取音频信号的一些特征参数,如音高、音调等,效果处理是对音频信号进行各种音效处理,音频输出是将处理后的音频信号保存为新的音频文件。

二、MATLAB音频信号处理函数介绍2.1 音频读取函数在MATLAB中,可以使用audioread函数将音频文件读取到MATLAB中进行处理。

该函数的输入为音频文件路径,输出为音频信号的采样数据和采样率。

例如,以下代码将读取一段音频文件到MATLAB中:```[signal, Fs] = audioread('audio.wav');```2.2 音频预处理函数MATLAB提供了一系列的滤波函数,例如低通滤波、高通滤波、降噪滤波等。

通过使用这些滤波函数,可以对音频信号进行去噪、降噪等预处理操作。

例如,以下代码将使用低通滤波器对音频信号进行预处理:```[b, a] = butter(4, 2000/(Fs/2), 'low');signal_filtered = filtfilt(b, a, signal);```2.3 音频特征提取函数MATLAB提供了多种音频特征提取函数,例如短时能量、过零率、频谱特征等。

matlab音乐合成综合实验

matlab音乐合成综合实验

voice5=exp(6-3*t5).*(sin(4*pi*349.23*t5)+sin(2*pi*349.23*t5)+sin(pi*349.23*t5)); voice6=exp(7.5-3*t6).*(sin(4*pi*349.23*t6)+sin(2*pi*349.23*t6)+sin(pi*349.23*t6)); voice7=exp(8.25-3*t7).*(sin(4*pi*293.66*t7)+sin(2*pi*293.66*t7)+sin(pi*293.66*t7)); voice8=exp(9-3*t8).*(sin(4*pi*392*t8)+sin(2*pi*392*t8)+sin(pi*392*t8)); voice=[voice1,voice2,voice3,voice4,voice5,voice6,voice7,voice8]; sound(voice); 这里我将三个频率合到了一块再听了一下演奏出来的音乐,觉得稍微厚实了一点,但 是由于各频率的幅度取值是相同的, 所以听起来高八度与低八度的音就有点宣兵夺主了, 还 是有一些奇怪。 (4)试着在(2)的音乐中增加一些谐波分量,听一听音乐是否更有“厚度”了?注意谐 波分量的能量要小,否则掩盖住基音反而听不清音调了。 代码如下: f=8000; t=[0:1/f:4-1/f]; t1=t(1:0.5*f); t2=t(0.5*f+1:0.75*f); t3=t(0.75*f+1:f); t4=t(f+1:2*f); t5=t(2*f+1:2.5*f); t6=t(2.5*f+1:2.75*f); t7=t(2.75*f+1:3*f); t8=t(3*f+1:4*f); voice1=exp(-3*t1).*sin(2*pi*523.25*t1)+exp(-5*t1).*sin(4*pi*523.25*t1)+exp(-2)*exp(-5*t1).*si n(6*pi*523.25*t1); voice2=exp(1.5-3*t2).*sin(2*pi*523.25*t2)+exp(2.5-5*t2).*sin(4*pi*523.25*t2)+exp(-2)*exp(2.55*t2).*sin(6*pi*523.25*t2); voice3=exp(2.25-3*t3).*sin(2*pi*587.33*t3)+exp(3.75-5*t3).*sin(4*pi*587.33*t3)+exp(-2)*exp(3. 75-5*t3).*sin(6*pi*587.33*t3); voice4=exp(3-3*t4).*sin(2*pi*392*t4)+exp(5-5*t4).*sin(4*pi*392*t4)+exp(-2)*exp(5-5*t4).*sin(6 *pi*392*t4); voice5=exp(6-3*t5).*sin(2*pi*349.23*t5)+exp(10-5*t5).*sin(4*pi*349.23*t5)+exp(-2)*exp(10-5* t5).*sin(6*pi*349.23*t5); voice6=exp(7.5-3*t6).*sin(2*pi*349.23*t6)+exp(12.5-5*t6).*sin(4*pi*349.23*t6)+exp(-2)*exp(12. 5-5*t6).*sin(6*pi*349.23*t6); voice7=exp(8.25-3*t7).*sin(2*pi*293.66*t7)+exp(13.75-5*t7).*sin(4*pi*293.66*t7)+exp(-2)*exp( 13.75-5*t7).*sin(6*pi*293.66*t7); voice8=exp(9-3*t8).*sin(2*pi*392*t8)+exp(15-5*t8).*sin(4*pi*392*t8)+exp(-2)*exp(15-5*t8).*si n(6*pi*392*t8); voice=[voice1,voice2,voice3,voice4,voice5,voice6,voice7,voice8]; sound(voice); 在该代码中,我引入了二次谐波与三次谐波,并且高次谐波的衰减幅度比基波快一些 避免其盖过基波的情况发生。 plot(t,voice);

Matlab技术在音乐处理和音乐生成中的应用

Matlab技术在音乐处理和音乐生成中的应用

Matlab技术在音乐处理和音乐生成中的应用引言音乐作为一种艺术表达形式,已经伴随着人类文明的发展演变了数千年之久。

而随着科技的不断进步,特别是计算机技术的发展,Matlab作为一种功能强大的编程语言和数值计算环境,为音乐处理和音乐生成领域带来了许多创新。

本文将探讨Matlab技术在音乐处理和音乐生成方面的应用,从数字信号处理到音乐创作,从音频处理到音乐分析,展示Matlab在音乐领域中的重要角色。

一、数字信号处理与音乐1. 数字信号处理概述数字信号处理(DSP)是将连续时间信号转换成离散形式,进而对其进行处理和分析的技术。

在音乐领域,数字信号处理被广泛应用于音频信号的采样、压缩、编码等,以及音乐效果的增强和修正。

Matlab提供了丰富的DSP工具箱,为音乐处理提供了强大的支持。

2. 音频信号采样与重构在音乐领域,我们经常需要将音频信号从连续的模拟形式转换为离散的数字形式。

Matlab提供了多种采样和重构方法,比如最常见的离散时间采样和线性插值。

这些方法可以帮助我们实现高质量的音频信号采样和重构,有效地保存和还原音频信息。

3. 音频信号压缩与编码由于音频信号数据量较大,传输和存储成本较高。

因此,音频信号的压缩和编码对于音乐领域来说非常重要。

Matlab提供了一系列有效的音频压缩和编码算法,如MP3、AAC等。

利用这些算法,我们可以将音频信号压缩到较小的尺寸,同时保持较高的音质。

二、音乐效果处理与音乐生成1. 音频效果处理音频效果处理是通过改变音频信号的音色、音调、混响等参数,以达到良好听感的处理方法。

Matlab提供了多种音频效果处理算法和工具箱,如均衡器、混响器、合唱效果器等。

这些算法可以在音乐处理中实现各种音频效果,从而提升音乐作品的质量。

2. 音乐生成与合成音乐生成是指通过算法和模型来生成新的音乐作品。

Matlab提供了丰富的音乐合成和音乐生成工具,如合成器、音乐驱动器、音乐学习算法等。

利用这些工具,音乐家可以根据自己的需求来生成独特的音乐创作,大大提高了音乐创作的效率和创造力。

清华大学谷源涛MATLAB音乐合成

清华大学谷源涛MATLAB音乐合成

大作业一音乐合成第一部分1.1 合成东方红合成源程序如下,程序参考谷老师上课内容(自己编完代码后跟老师的差不多,而且实在是不知道还能做什么改进了。

)function k= play()rhythm = [5 5 6 2 1 1 6 2;0 0 0 0 0 0 -1 0 ; 0.5 0.25 0.25 1 0.5 0.25 0.25 1;];y=generaterhythm(rhythm, 8);sound(y);endfunction y = generaterhythm(rhythm, basetune)fs = 8000;soundpos = [0 2 4 5 7 9 11 0:12];y = zeros(1, sum(rhythm(3,:))*fs + 1);curpos = 1;for count = 1 : length(rhythm)cursoundname = rhythm(1, count);cursoundpos = soundpos(cursoundname);curfreq = 220 * 2 .^ ((cursoundpos + basetune + 3) / 12 + rhythm(2, count)); cursound = generatetune(curfreq, rhythm(3, count), fs);y(1,curpos:(curpos + length(cursound) - 1)) = cursound;curpos = curpos + length(cursound);endendfunction y = generatetune (freq, time, fs)t = 0:1/fs:(time - 1/fs);y = zeros(1, length(t));y=sin(t*freq*2*pi);end1.2 用包络修正每个乐音,消除噪音在1.1中听到有“啪”的杂声,下面通过加包络来消噪音。

利用MATLAB合成音乐的函数模拟实现与比对

利用MATLAB合成音乐的函数模拟实现与比对

利用MATLAB合成音乐的函数模拟实现与比对宋晓婷【摘要】文章将音乐的发声原理与数值巧妙联系,给出具体的定义及函数关系.利用数学公式计算出每个音符在不同曲调下的频率,再由MATLAB软件编译程序,结合乐理知识,结合钢琴键盘上各音符的间隔规律表示出各声调高低、延续时间、及音调间的衔接,停顿时间如果简单地用频率为0来设置,就不会有原曲的效果,经过调试,将其与时间函数联系再用0作积,可以任意控制每小节节拍,使其达到曲目要求.在此基础上,通过改进模型程序,加入指数函数使乐音听起来不再生硬,句尾会以光滑形式逐渐消失.改用傅里叶级数模拟出歌曲的原声效果,曲调欢快流畅,重音清晰,可以让人很快听出节拍,哼出曲调.文章以维吾尔族民歌《阿拉木汗》为例,通过4种不同方案的程序比对,肯定了傅里叶级数在波动模拟效果方面的优势,充分证实高等数学知识及相关软件在音乐谱曲方面的巨大作用.【期刊名称】《太原师范学院学报(自然科学版)》【年(卷),期】2018(017)001【总页数】6页(P27-32)【关键词】MATLAB;音高频率;包络;傅里叶变换【作者】宋晓婷【作者单位】山西建筑职业技术学院,山西太原 030619【正文语种】中文【中图分类】O242.1MATLAB 是一种用于算法开发、符号运算、数据可视化、数据分析以及数值运算的高级技术计算语言和交互式环境.它的应用范围非常广,包括信号和图像处理、仿真、通讯、控制系统设计、测量和测试、建模和分析以及计算生物学等众多应用领域.它还被称为矩阵实验软件,可以进行矩阵运算、绘制函数和数据、实现算法、创建用户界面、连接其他编程语言的程序等.可以编写程序或调用存储函数解决数学问题,如初等数学的代数计算、三角函数求值;高等数学中的微积分计算;线性代数求解行列式、矩阵、线性方程组;微分方程求通解、特解;进行拉普拉斯变换,傅里叶级数的计算;还可以进行数据的筛检、对数据进行插值拟合、对未来数据的估测、给出误差分析等等多方面的应用,可以说是涉及面广,功能强大.1 相关知识先介绍一下乐理方面的相关知识,关于简谱和琴键的对应关系:基本音阶(是以全音、半音以及其他音程顺次排列的一串音)为C调大音阶,在钢琴上弹奏时全用白键,中央C是小字一组的do,也有D调、F调等.音阶分为“大音阶”和“小音阶”,即“大调式”和“靶〉魇”.大音阶由7个音组成,其中第3,4(即mi和fa)音之间和第7,8(即xi和高音do)音之间是半音程,其他音之间是全音程.小音阶第2,3(即re和mi)音之间和5,6(即so和la)音之间为半音程.这里不同的音高决定不同的声音频率,在软件中用不同的数值体现,起到调节音调的作用,经过数学公式调整可以模仿出原唱的效果.2 曲谱的公式化本文在MATLAB中表示乐音所用的抽样频率为fs=22 050 Hz,也就是所1 s钟内有22 050个点,根据抽样点数的多少就可表示出每个乐音持续时间的长短.给每个乐音定义存储对应的抽样点,再用sound函数播放即可.选编歌曲《阿拉木汗》部分简谱1=F 4/4图1 琴键与简谱的对应如图,4/4分母的4表示曲谱以四分音符为一拍,分子的4表示每小节4拍.利用MATLAB编写乐音需要区别每个音的节拍,确定其震动时间,数字下两横表示这个音是四分之一拍,4个这样的音为一拍;数字下一横表示这个音是二分之一拍,即半拍,两个这样的音为一拍;数字下方无横线表示这个音是一拍.数字之间的点代表半拍,这样可知每小节各个音节均为四拍.1=F表示小字一组的f1对应do的音,依次向前向后类推得表1.表1 常用琴键调高、音高、频率的关系F调5·低音so6·低音la7·低音xi1do2re3mi4fa琴键c1d1e1f1g1a1b1降1音高60626465676970频率Hz261 6293 7329 6349 2392 0440 0466 25so6la7xi1·高音do2·高音re3·高音mi4·高音fa5·高音soc2d2e2f2g2a2b2降1c37274767779818284523 3587 3659 3698 5784 0880 0932 31046.5注:1)频率是由公式f=440×2(p-69)/12根据p的值用MATLAB计算得到的. 2)由于mi与fa、高音mi与fa均是半音程,b1降1 和b2降1表示该键左侧上方的黑键,音高只相差1.虽然低音xi与do的音高也只相差1,但在琴键上此处正好分别位于e1和f1的位置,它们正好也是半音程,所以无需降1.3)表格只列出需要音高的数据,可根据实际向前或向后适当扩展.3 函数模拟音乐效果比对利用MATLAB的m文件编写音调和节拍程序如下,这里将低音so到高音so每个音调的一拍、半拍和四分之一拍给出定义,这个范围可以包括大多数歌曲的使用.若想保证所有曲谱的编写,只需将琴键上各个组别的音调类比给出定义即可.编写m文件如下[1]:3.1 有敲击声音,没空拍function g=key(p,n,fs)t=0∶1/fs∶4/n;g=(sin(2*pi*fre(p)*t));plot(g); %画出函数图像function f=fre(p)f=440*2^((p-69)/12).3.2 有敲击声音,有空拍由于每小节之间停顿的时间不同,要使歌曲听起来更逼真,就需要将此部分也考虑上.在前段程序中加入条件语句if和else,给空拍增加定义,且不能简单地定义为0,它的时间受节拍的控制,因此表达式与时间t有关,用0去乘之后,既有音调的无声体现,又涵盖相应的时间延续,控制每个乐音持续的时间要符合节拍,在歌曲播放出来时就会有空拍了.function g=key(p,n,fs)t=0∶1/fs∶4/n;if p==-1 %定义空拍g=0*(sin(2*pi*fre(p)*t));elseg=(sin(2*pi*fre(p)*t));endplot(g)function f=fre(p)f=440*2^((p-69)/12);3.3 指数函数对音乐的影响效果消除敲击声音这是由于相位不连续产生了高频分量[2].这里可以类比实际中铁轨的弯道和直线衔接处,如果直接相连则会产生曲率的突变,导致火车侧翻或出轨,通常使用一个和轨道长度及曲率半径相关的三次函数来衔接,使曲率由0逐渐增大至弯道值再相连,这样就不会有危险.我们可以采用指数衰减的包络修正每个乐音,以保证在乐音的邻接处信号幅度为0.给每个乐音加一个指数衰减的包络,使声音有个减弱的过程,音调的清晰度增加,似有回声效果.function g=key(p,n,fs)t=0∶1/fs∶4/n;tt=4/n∶-1/fs∶0;g=(sin(2*pi*fre(p)*t)).*exp(tt);plot(g);function f=fre(p)f=440*2^((p-69)/12).3.4 傅里叶技术对音乐的影响效果利用傅里叶技术在音乐中增加一些谐波分量[2],幅度要小于基波,不能掩盖住主体的音乐声调,需要加强声音的连贯程度.各个音结束时都有相对拉长的一个减弱过程,尾部音尤其明显.添加后声音比较浑厚,圆润饱满,在不会弹钢琴的情况下也能自己谱曲,享受一下自己的劳动果实.function g=key(p,n,fs)t=0∶1/fs∶4/n;tt=4/n∶-1/fs∶0;if p==-1g=0*(sin(2*pi*fre(p)*t)+0.2*sin(6*pi*fre(p)*t)).*exp(tt);elseg=(sin(2*pi*fre(p)*t)+0.2*sin(6*pi*fre(p)*t)).*exp(tt);endplot(g);function f=fre(p)f=440*2^((p-69)/12).如果声音还比较尖锐,有些许刺耳,可能是选择的基波频率不合适,或者可以再加入另一种频率的谐波,变换他们的系数进行调试可达到良好的效果.3.5 定义各音符频率、节拍、音调及空拍fs=22 050; %每秒振动次数,即频率t=0∶1/fs∶0.5; %每拍时间c1-4=key(60,4,fs); %低音so一拍c1-8=key(60,8,fs); %低音so半拍c1-16=key(60,16,fs); %低音so四分之一拍d1-4=key(62,4,fs); %低音la一拍d1-8=key(62,8,fs); %低音la半拍d1-16=key(62,16,fs); %低音la四分之一拍e1-4=key(64,4,fs); %低音xi一拍e1-8=key(64,8,fs); %低音xi半拍e1-16=key(64,16,fs); %低音xi四分之一拍f1-4=key(65,4,fs); %do一拍f1-8=key(65,8,fs); %do半拍f1-16=key(65,16,fs); %do四分之一拍g1-4=key(67,4,fs); %re一拍g1-8=key(67,8,fs); %re半拍g1-16=key(67,16,fs); %re 四分之一拍a1-83=key(69,8/3,fs); %mi 一拍半a1-4=key(69,4,fs); %mi 一拍a1-8=key(69,8,fs); %mi 半拍a1-16=key(69,16,fs); %mi 四分之一拍b1-4=key(70,4,fs); %fa 一拍b1-8=key(70,8,fs); %fa 半拍b1-16=key(70,16,fs); %fa 四分之一拍c2-4=key(72,4,fs); %so 一拍c2-8=key(72,8,fs); %so 半拍c2-16=key(72,16,fs); %so四分之一拍d2-4=key(74,4,fs); % la一拍d2-8=key(74,8,fs); % la半拍d2-16=key(74,16,fs); %la四分之一拍e2-4=key(76,4,fs); %xi一拍e2-8=key(76,8,fs); %xi半拍e2-16=key(76,16,fs); %xi四分之一拍f2-4=key(77,4,fs); %高音do一拍f2-8=key(77,8,fs); %高音do半拍f2-16=key(77,16,fs); %高音do四分之一拍g2-4=key(79,4,fs); %高音re一拍g2-8=key(79,8,fs); %高音re半拍g2-16=key(79,16,fs); %高音re四分之一拍a2-83=key(81,8/3,fs); %高音mi一拍半a2-4=key(81,4,fs); %高音mi一拍a2-8=key(81,8,fs); %高音mi半拍a2-16=key(81,16,fs); %高音mi四分之一拍b2-4=key(82,4,fs); %高音fa一拍b2-8=key(82,8,fs); %高音fa半拍b2-16=key(82,16,fs); %高音fa四分之一拍c3-4=key(84,4,fs); %高音so一拍c3-8=key(84,8,fs); %高音so半拍c3-16=key(84,16,fs); %高音so四分之一拍k-4=key (-1,4,fs); %空一拍k-8=key (-1,8,fs); %空半拍k-16=key (-1,16,fs); %空四分之一拍3.6 合成音乐part1=[c2-16 c2-16 c2-16 c2-16 c2-8 b1-8 a1-83 f2-8];%第十一部分重复part2=[e2-16 d2-16 a2-16 g2-16 f2-16 d2-16 e2-8 f2-8 k-8 k-4];part3=[c1-16 f1-16 f1-16 f1-16 e1-16 f1-16 g1-8 a1-83 f2-8];part4=[e2-16 d2-16 c2-16 b1-16 a1-16 f1-16 g1-8 f1-4 k-4];%第十部分重复part5=[k-8 c2-16 c2-16 c2-8 d2-8 f2-16 f2-16 f2-8 k-4];part6=[k-4 f2-16 f2-16 f2-8 d2-16 f2-16 d2-16 c2-16 c2-8 k-4];part7=[k-8 f2-16 f2-16 f2-8 f2-8 d2-16 f2-16 d2-16 c2-16 c2-8 a1-8]; part8=[k-8 c2-16 c2-16 a1-8 a1-8 g1-16 g1-16 a1-8 k-4];part9=[c1-16 f1-16 f1-16 f1-16 f1-8 g1-8 a1-83 f2-8];part12=[e2-16 d2-16 a2-16 g2-16 f2-16 d2-16 e2-8 f2-4 k-4];part13=[c2-16 c2-16 c2-16 c2-16 c2-8 b1-8 a2-83 f2-8];part14=[e2-16 f2-16 g2-16 a2-16 g2-16 d2-16 e2-8 f2-4 k-4];line1=[part3 part4 part3 part4 part5 part6 part7 part8 part9 part4];line2=[part1 part12];line3=[part13 part14];legend=[line1 line2 line3];sound(legend,fs)4 频谱分析图2 fs=1000波形振动图像频率可适当调整,图2是当fs=1 000临界值时的波形振动图像.频率越大图像越密,声音越流畅,更接近原声,通常取8 000,14 400等;频率取值越小图像分割越粗糙,声音不流畅,间隔明显,听起来与原声相差甚远.如fs=200则出错,低于1 000为无效的样本率.利用clear sound命令可以随时停止音乐播放.5 总结本设计用MATLAB构建的音乐合成程序简单易懂,可灵活多变,成功地实现了音乐的简单合成、音乐的降噪处理以及音乐的加傅里叶变换谐波处理,使得生涩的音乐逐步调整为优美动听的声音.利用软件的强大功能实时给出相应频率分析图像,更清晰地显示曲子的频率与曲调的关系.我们可以充分发挥自己的创新能力,通过选取不同的加工算法,对音乐分别处理,抑制噪声,改善音乐质量,便于人们欣赏品鉴.参考文献:【相关文献】[1] 杨晓华,孔令泉,王志刚,等.MATLAB权威指南[M].北京:机械工业出版社,2013[2] 李敏,张维维,姜明新,等.基于MATLAB的音乐分析与合成实验设计[J].大连民族学院学报,2010,12(3):269-271。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

目录音乐合成实验................................................................................................. 错误!未定义书签。

摘要: (1)第一部分简单的合成音乐 (1)1.1合成《葫芦娃》 (1)1.2 除噪音,加包络 (5)1.3改变程序,实现1.2中的音乐升高和降低一个八度 (8)1.4在1.2的音乐中加入谐波 (9)摘要:本文共有三大部分:第一部分,简单的音乐合成;第二部分,用傅里叶变换分析音乐;第三部分,基于傅里叶级数的音乐合成。

由潜入深,一步一步分析了用MATLAB进行音乐合成的过程。

通过本实验达到了加深对傅里叶级数和傅里叶分析的理解,熟悉对MATLAB 基本使用的目标。

第一部分简单的合成音乐1.1 合成《葫芦娃》根据《葫芦娃》第一小节的简谱和十二平均律计算出该小节每个乐音的频率,在MATLAB中生成幅度为1,抽样频率为8kHz的正弦信号表示这些乐音,用sound播放合成的音乐而在MATLAB中表示乐音所用的抽样频率为fs=8000Hz,也就是所1s钟内有8000个点,抽样点数的多少就可表示出每个乐音的持续时间的长短。

用一个行向量来存储这段音乐对应的抽样点,在用sound函数播放即可。

clear all;clc;freq=8000; %抽样频率T=1/freq;pattime=0.5; %节拍的时间note2=0:T:2*pattime;note4=0:T:1*pattime;note8=0:T:0.5*pattime;note_1=261.63; %各个音乐对应的频率note_2=293.67;note_3=329.63;note_5=391.99;note_6=440;note_7=493.88;note_1b=523.25;wave1=sin(2*pi*note_1*note4); %各个音符所对应的节拍wave2=sin(2*pi*note_1*note4);wave3=sin(2*pi*note_3*note2);wave4=sin(2*pi*note_1*note4);wave5=sin(2*pi*note_1*note4);wave6=sin(2*pi*note_3*note2);wave7=sin(2*pi*note_6*note4);wave8=sin(2*pi*note_6*note4);wave9=sin(2*pi*note_6*note8);wave10=sin(2*pi*note_5*note8);wave11=sin(2*pi*note_6*note4);wave12=sin(2*pi*note_5*note4);wave14=sin(2*pi*note_3*note4); wave15=sin(2*pi*note_1b*note8); wave16=sin(2*pi*note_6*note8); wave17=sin(2*pi*note_6*note8); wave18=sin(2*pi*note_5*note8); wave19=sin(2*pi*note_6*note2); wave20=sin(2*pi*note_5*note4); wave21=sin(2*pi*note_1*note4); wave22=sin(2*pi*note_2*note2); wave23=sin(2*pi*note_7*note2); wave24=sin(2*pi*note_7*note8); wave25=sin(2*pi*note_5*note8); wave26=sin(2*pi*note_3*note4); wave27=sin(2*pi*note_5*note2); wave28=sin(2*pi*note_1b*note8); wave29=sin(2*pi*note_6*note8); wave30=sin(2*pi*note_6*note8); wave31=sin(2*pi*note_5*note8); wave32=sin(2*pi*note_5*note8); wave33=sin(2*pi*note_6*note8); wave34=sin(2*pi*note_6*note8); wave35=sin(2*pi*note_5*note4); wave36=sin(2*pi*note_1*note4); wave37=sin(2*pi*note_3*note2); wave38=sin(2*pi*note_1b*note8); wave39=sin(2*pi*note_6*note8); wave40=sin(2*pi*note_6*note8); wave41=sin(2*pi*note_5*note8); wave42=sin(2*pi*note_5*note8); wave43=sin(2*pi*note_6*note8); wave44=sin(2*pi*note_6*note8); wave45=sin(2*pi*note_5*note4); wave46=sin(2*pi*note_1*note4); wave47=sin(2*pi*note_2*note2); wave48=sin(2*pi*note_3*note2); wave49=sin(2*pi*note_3*note8); wave50=sin(2*pi*note_1*note8); wave51=sin(2*pi*note_6*note4); wave52=sin(2*pi*note_1*note2); wave53=sin(2*pi*note_3*note4); wave54=sin(2*pi*note_5*note4); wave55=sin(2*pi*note_6*note4); wave56=sin(2*pi*note_6*note8);wave58=sin(2*pi*note_5*note4);wave59=sin(2*pi*note_6*note4);wave60=sin(2*pi*note_6*note8);wave61=sin(2*pi*note_1b*note2);wave62=sin(2*pi*note_7*note8);wave63=sin(2*pi*note_5*note4);wave64=sin(2*pi*note_6*note2);wave=[wave1 wave2 wave3 wave4 wave5 wave6 wave7 wave8 wave9 wave10 wave11 wave12 wave13 wave14 wave15 wave16 wave17 wave18 wave19 wave20 wave21 wave22 wave23 wave24 wave25 wave26 wave27 wave28 wave29 wave30 wave31 wave32 wave33 wave34 wave35 wave36 wave37 wave38 wave39 wave40 wave41 wave42 wave43 wave44 wave45 wave46 wave47 wave48 wave49 wave50 wave51 wave52 wave53 wave54 wave55 wave56 wave57 wave58 wave59 wave60 wave61 wave62 wave63 wave64]; %歌曲wave数组sound(wave,8000); %播放waveplot(wave); %描画函数在MA TLAB中运行,播放出了《葫芦娃》,但是可以听出效果很不好,只能听出具有《葫芦娃》的调子而已。

1.2 除噪音,加包络在1.1中听到有“啪”的杂声,下面通过加包络来消噪音。

eα-因子,采用不同速最简单的包络为指数衰减。

最简单的指数衰减是对每个音乘以t度的衰减,根据乐音持续时间的长短来确定衰减的快慢,乐音持续时间越长,衰减的越慢,持续时间越短,衰减的越快。

在1.1程序的基础上加上包络程序:function y=shape_env2(x_length)x=0:x_length-1;x0=x/x_length*7;y=x0./exp(x0);y=y/max(y);Return主函数如下:clear all;clc;freq=8000; %抽样频率T=1/freq;pattime=0.5; %节拍的时间note2=0:T:2*pattime;note4=0:T:1*pattime;note8=0:T:0.5*pattime;note_1=261.63; %各个音乐对应的频率note_2=293.67;note_3=329.63;note_5=391.99;note_6=440;note_7=493.88;note_1b=523.25;wave1=sin(2*pi*note_1*note4);wave1=wave1.*shape_env2(length(wave1)); %各个音节加上包络wave2=sin(2*pi*note_1*note4);wave2=wave2.*shape_env2(length(wave2)); wave3=sin(2*pi*note_3*note2);wave3=wave3.*shape_env2(length(wave3)); wave4=sin(2*pi*note_1*note4);wave4=wave4.*shape_env2(length(wave4)); wave5=sin(2*pi*note_1*note4);wave5=wave5.*shape_env2(length(wave5)); wave6=sin(2*pi*note_3*note2);wave6=wave6.*shape_env2(length(wave6)); wave7=sin(2*pi*note_6*note4);wave7=wave7.*shape_env2(length(wave7)); wave8=sin(2*pi*note_6*note4);wave8=wave8.*shape_env2(length(wave8)); wave9=sin(2*pi*note_6*note8);wave9=wave9.*shape_env2(length(wave9)); wave10=sin(2*pi*note_5*note8);wave10=wave10.*shape_env2(length(wave10 ));wave11=sin(2*pi*note_6*note4);wave11=wave11.*shape_env2(length(wave11 ));wave12=sin(2*pi*note_5*note4);wave12=wave12.*shape_env2(length(wave12 ));wave13=sin(2*pi*note_1*note4);wave13=wave13.*shape_env2(length(wave13 ));wave14=sin(2*pi*note_3*note4);wave14=wave14.*shape_env2(length(wave14 ));wave15=sin(2*pi*note_1b*note8);wave15=wave15.*shape_env2(length(wave1 5));wave16=sin(2*pi*note_6*note8);wave16=wave16.*shape_env2(length(wave16 ));wave17=sin(2*pi*note_6*note8);wave17=wave17.*shape_env2(length(wave17 ));wave18=sin(2*pi*note_5*note8);wave18=wave18.*shape_env2(length(wave18 ));wave19=sin(2*pi*note_6*note2);wave19=wave19.*shape_env2(length(wave19 ));wave20=sin(2*pi*note_5*note4);wave20=wave20.*shape_env2(length(wave20 ));wave21=sin(2*pi*note_1*note4);wave21=wave21.*shape_env2(length(wave21 ));wave22=sin(2*pi*note_2*note2);wave22=wave22.*shape_env2(length(wave22 ));));wave24=sin(2*pi*note_7*note8);wave24=wave24.*shape_env2(length(wave24 ));;wave25=sin(2*pi*note_5*note8);wave25=wave25.*shape_env2(length(wave25 ));wave26=sin(2*pi*note_3*note4);wave26=wave26.*shape_env2(length(wave26 ));wave27=sin(2*pi*note_5*note2);wave27=wave27.*shape_env2(length(wave27 ));wave28=sin(2*pi*note_1b*note8);wave28=wave28.*shape_env2(length(wave2 8));wave29=sin(2*pi*note_6*note8);wave29=wave29.*shape_env2(length(wave29 ));wave30=sin(2*pi*note_6*note8);wave30=wave30.*shape_env2(length(wave30 ));wave31=sin(2*pi*note_5*note8);wave31=wave31.*shape_env2(length(wave31 ));wave32=sin(2*pi*note_5*note8);wave32=wave32.*shape_env2(length(wave32 ));wave33=sin(2*pi*note_6*note8);wave33=wave33.*shape_env2(length(wave33 ));wave34=sin(2*pi*note_6*note8);wave34=wave34.*shape_env2(length(wave34 ));wave35=sin(2*pi*note_5*note4);wave35=wave35.*shape_env2(length(wave35 ));wave36=sin(2*pi*note_1*note4);wave36=wave36.*shape_env2(length(wave36 ));wave37=sin(2*pi*note_3*note2);wave37=wave37.*shape_env2(length(wave37 ));wave38=sin(2*pi*note_1b*note8);wave38=wave38.*shape_env2(length(wave3 8));wave39=sin(2*pi*note_6*note8);wave39=wave39.*shape_env2(length(wave39 ));wave40=sin(2*pi*note_6*note8);wave40=wave40.*shape_env2(length(wave40 ));wave41=sin(2*pi*note_5*note8);wave41=wave41.*shape_env2(length(wave41 ));wave42=sin(2*pi*note_5*note8);wave42=wave42.*shape_env2(length(wave42 ));wave43=sin(2*pi*note_6*note8);wave43=wave43.*shape_env2(length(wave43 ));wave44=sin(2*pi*note_6*note8);wave44=wave44.*shape_env2(length(wave44 ));));wave46=sin(2*pi*note_1*note4);wave46=wave46.*shape_env2(length(wave46 ));wave47=sin(2*pi*note_2*note2);wave47=wave47.*shape_env2(length(wave47 ));wave48=sin(2*pi*note_3*note2);wave48=wave48.*shape_env2(length(wave48 ));wave49=sin(2*pi*note_3*note8);wave49=wave49.*shape_env2(length(wave49 ));wave50=sin(2*pi*note_1*note8);wave50=wave50.*shape_env2(length(wave50 ));wave51=sin(2*pi*note_6*note4);wave51=wave51.*shape_env2(length(wave51 ));wave52=sin(2*pi*note_1*note2);wave52=wave52.*shape_env2(length(wave52 ));wave53=sin(2*pi*note_3*note4);wave53=wave53.*shape_env2(length(wave53 ));wave54=sin(2*pi*note_5*note4);wave54=wave54.*shape_env2(length(wave54 ));wave55=sin(2*pi*note_6*note4);wave55=wave55.*shape_env2(length(wave55 ));wave56=sin(2*pi*note_6*note8);wave56=wave56.*shape_env2(length(wave56 ));wave57=sin(2*pi*note_3*note4);wave57=wave57.*shape_env2(length(wave57 ));wave58=sin(2*pi*note_5*note4);wave58=wave58.*shape_env2(length(wave58 ));wave59=sin(2*pi*note_6*note4);wave59=wave59.*shape_env2(length(wave59 ));wave60=sin(2*pi*note_6*note8);wave60=wave60.*shape_env2(length(wave60 ));wave61=sin(2*pi*note_1b*note2);wave61=wave61.*shape_env2(length(wave6 1));wave62=sin(2*pi*note_7*note8);wave62=wave62.*shape_env2(length(wave62 ));wave63=sin(2*pi*note_5*note4);wave63=wave63.*shape_env2(length(wave63 ));wave64=sin(2*pi*note_6*note2);wave64=wave64.*shape_env2(length(wave64 ));wave=[wave1 wave2 wave3 wave4 wave5 wave6 wave7 wave8 wave9 wave10 wave11 wave12 wave13 wave14 wave15 wave16 wave17 wave18 wave19 wave20 wave21 wave22 wave23 wave24 wave25 wave26 wave27 wave28 wave29 wave30 wave31 wave32 wave33 wave34 wave35 wave36 wave37 wave38 wave39 wave40 wave41wave42 wave43 wave44 wave45 wave46 wave47 wave48 wave49 wave50 wave51 wave52 wave53 wave54 wave55 wave56 wave57 wave58 wave59 wave60 wave61 wave62 wave63 wave64];sound(wave,8000);plot(wave);播放后可以听出噪音已经消除,同时因为不同时长的乐音衰减的快慢不一样,音乐听起来更有起伏感,下图是加包络后的wave图像。

相关文档
最新文档