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

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

密级:

学号:2013248731

本科生毕业论文(设计)基于MATLAB的简单音乐合成仿真设计

学院:信息工程

年级:13级

专业:通信工程

学生姓名:何世欣

指导教师:魏涛

学士学位论文原创性声明

本人郑重声明:所呈交的论文(设计)是本人在指导老师的指导下独立进行研究,所取得的研究成果。除了文中特别加以标注引用的内容外,本论文(设计)不包含任何其他个人或集体已经发表或撰写的成果作品。对本文的研究做出重要贡献的个人和集体,均已在文中以明确方式表明。本人完全意识到本申明的法律后果由本人承担。

学位论文作者签名(手写):签字日期:年月日

学位论文版权使用授权书

本学位论文作者完全了解学校有关保留、使用学位论文的规定,同意学校保留并向国家有关部门或机构送交论文的复印件和电子版,允许论文被查阅和借阅。本人授权江西科技学院可以将本论文的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或扫描等复制手段保存和汇编本学位论文。

(请在以上相应方框内打“√”)

学位论文作者签名(手写):指导老师签名(手写):

签字日期:年月日签字日期:年

摘要

科学技术的发展使得社会生活越来越趋于信息化和数字化,在此基础上语音信号也可以基于数字信号处理技术和语音学相关知识进行信息化处理,此类技术因应用性广便捷性高受到社会的广泛关注,已成为信息科学工程与研究领域的核心技术,被越来越多的高科技产业广泛使用。计算机合成音乐也在其基础上得以迅速普及,而且理论上可以创造出任何一种声音。

MATLAB是一种用于数据分析和处理的计算机应用软件,它可以将语音文件进行信息化处理转化为离散的数据文件,再通过内置强大的矩阵运算能力如数字滤波、时域和频域分析、傅里叶变换、时域和频域分析、声音合成以及各种图形的呈现等处理数据。利用MATLAB自带的功能函数可以快捷而又方便地完成语音信号的处理和分析以及信号的可视化,使人机交互更加便捷。音乐可视为不同频率与振幅的正弦波叠加并加以不同包络所形成的信号,它的这个特点使得MATLAB的处理有了可能,通过处理不同的音频MATLAB可以进行简单的音乐合成。

本文主要是基于MATLAB环境下的音乐合成研究,首先基于相关的处理函数合成简单的音乐,并且对音乐进行降噪、升降度和加谐波等处理;然后基于傅里叶变换分析处理后的音乐频谱;最后根据傅里叶级数的原理来再次合成音乐。

关键词:音乐合成;MATLAB;傅里叶分析

Abstract

In the current society, information technology and digitization become more and more high. As a new technology to process speech signals based on digital signal processing technology and phonetic knowledge, voice signal processing technology is widely used in more and more high-tech industries. Technology has become one of the core technologies in the field of information science engineering and research. Computer synthesis of music to the rapid spread, in theory, you can create any kind of sound.

MATLAB is a computer application for data analysis and processing that transforms sound files into discrete data files and then processes their data with powerful matrix operations such as digital filtering, Fourier transform, time domain and Frequency domain analysis, sound synthesis and a variety of graphics rendering. Using MATLAB's own function function can quickly and easily complete the voice signal processing and analysis and signal visualization, human-computer interaction more convenient. As the music signal can be seen as a series of different frequency and amplitude of the sine wave superposition and the formation of different envelopes, so you can use this feature based on MATLAB software analysis and processing of different audio signals for simple music synthesis.

This paper is mainly based on the study of music composition under MATLAB environment, using the relevant audio processing functions for simple music synthesis, the music noise reduction, plus harmonic and lifting processing; Fourier transform with the corresponding treatment of the Music spectrum; Finally, re-synthesis the music according to the principle of Fourier series.

Key Word:Music synthesis; MATLAB; Fourier analysis

目录

第1章绪论 (1)

1.1 选题意义及背景 (1)

1.2 国内外研究现状 (1)

1.3 本文主要研究内容 (2)

1.4 MATLAB音乐合成的原理 (4)

1.4.1所涉及的乐理知识简述 (4)

1.4.2 音调与唱名 (4)

1.4.3音色与谐波 (4)

1.4.4十二平均律 (5)

1.4.5傅里叶变换与频谱分析 (5)

1.5 MATLAB的发展史 (3)

第2章音乐合成的相关算法 (6)

2.1 基于统计声学模型的合成算法 (6)

2.2 基于离散变换的合成算法 (7)

2.3 本文算法 (7)

第3章基于MATLAB的简单音乐合成设计 (9)

3.1 MATLAB简介 (9)

3.1.1MATLAB的运行 (11)

3.1.2变量、语句、矩阵与函数 (12)

3.1.3 绘制三维图形 (12)

3.3 核心算法实现 (13)

3.4 算法设计 (14)

3.4.1 调用相关的MATLAB函数 (14)

3.4.2 音乐初步处理 (14)

3.4.3 音乐合成 (15)

第4章基于MATLAB的简单音乐合成仿真 (17)

4.1 合成音乐 (17)

4.1.1 初始音乐合成 (17)

4.1.2 消除噪音 (17)

4.1.3 重新生成音乐 (19)

4.2 原始声测试和傅里叶分析 (20)

4.2.1 原始声测试 (20)

4.2.2 傅里叶分析 (23)

4.2.3 重新合成新音乐 (25)

第5章总结与展望 (26)

5.1 总结 (26)

5.2 展望 (27)

参考文献 (29)

致谢 (30)

第1章绪论

1.1 选题意义及背景

半个多世纪以来,音乐家们一直致力于利用当今的科技和新材料来探索新的音乐,在原来的基础上进行不断的创新,音乐合成此项技术由于其强大的数据处理能力和创造能力便随之进入音乐家们的视野。音乐合成技术,不仅可以巧妙模仿现有乐器的音色,还能够创造新的声音,极大地丰富了人类的音乐,给我们带来了无穷无尽的新音乐体验。

随着科技的发展,计算机合成音乐迅速在音乐界流传并普及。作曲家和音乐家们为了创新和追求个性,往往选择在音乐中加入新的声音,而计算机合成音乐技术即为其提供了可能,因为在理论上它可以创造出任何一种声音。现在,合成音乐已经逐渐脱离模仿现有乐器音色的道路,转而向创造音色方面发展。

虽然合成音乐在现代音乐领域已有相对广泛的应用,但是发展仍有所受限,国内在该方面的权威理论著作也很少。这是因为它其涉及音色、声学、计算机等相关学科,是一门综合性强且专业性高的学科。通过分析近年来使用合成音乐的现代音乐,可以发现合成音乐相较声学乐器在层次和音色上都具有显现的独特性,这些分析也能为计算机合成音乐在现代音乐制作的应用提供相对有实践价值的参考。

MATLAB是英文MATrix LABoratory(矩阵实验室)的缩写。自1984年由美国MathWorks公司推向市场以来,得到了广泛的关注和发展。在发达国家,MATLAB已经是大学以上学历者所必须具备的一项技能,是数字信号处理、时间序列分析、线性代数、自动化控制理论、动态系统仿真等诸多课程的基本教学工具。而在设计和工业部门,MATLAB也有广泛的应用,主要用于解决各种具体的工程和交互问题。根据国外的发展历史和近几年MATLAB在中国的发展趋势,可以预见其在不久的将来,将会在科学研究和工程应用领域发挥越来越大的作用。

1.2 国内外研究现状

音乐合成技术是语音合成技术的一个分支。国外对于语音合成的研究已长达200多年,虽然研究时间长但是显著的研究成果是在计算机技术和数字信号处理

技术发展之后才出现的,主要表现为让计算机能够输出高清晰度和自然度的连续音乐。近几十年,该技术在国内外的研究重点为规则文语转化,也就是将书面语转化为口语。

在语音合成技术的历史发展过程中,早期研究主要应用参数合成法。其中最具意义的就是Holmes的并联共振峰合成器(1973)和Klatt的串/并联共振峰合成器(1980),这两个合成器只需要细致的参数调节即可合成自然的语音。美国DEC 公司的DECtalk,是当时最具代表性的文语转换系统,它就是搭载串/并联共振峰合成器,从而使得人机交互有了更大的便捷和可能,该系统可以通过计算机联网或者接入电话网来提供各项语音服务,不仅发音标准清楚,而且还具备7种不同的音色,受到了当时的广泛追捧。但是后来人们发现,共振峰合成器尽管可以提供逼真的合成语音,但是其音质却因为提取共振峰参数的困难存在较大的缺陷,并不能满足当下需求。因此在不断的研究下,语音合成技术又有了新的发展——基音同步叠加(PSOLA)方法(1990)。这项技术基于时域波形的拼接,大大提高了合成音乐的音色和自然度,因此在九十年代初受到了广泛的关注,包括法语、英语、日语、德语等在内的文语转换系统都被成功开发研制出来,而且此项技术结构简单易于实时实现,有着非常美好的商用前景。近年来的研究,也开发出一种基于数据库的新的语音合成方法。该数据库为预先录下的庞大语音数据库,每个合成语句的语音单元都能从数据库中进行调取和拼接,因此只要数据库足够庞大,那么理论上任何语音都可以被合成出来且具有不同语境下的语气和音调差别,清晰度和自然度将会有质的提升!

1.3 本文主要研究内容

在本设计中,MATLAB软件通过对音乐信号频率与时长的分析与组合来简单合成音乐。频率表现音调,时长体现时长,基于该基础MATLAB在编程中能够存储音乐的频率和时长,并且通过将正弦波形的不同叠加与包络设置来仿真实现音乐的音调与节奏的变化。

主要特色:1、直观而集中的显示各运行参数,能分析音乐合成的运行。2、参数便于修改,从而方便改变音色和音调。

论文的主要结构分为五个部分:

第一章为绪论,简单介绍了选题背景和意义,同时介绍了国内外关于语音合成的研究状况,也描述了本文的主要研究内容和方向;

第二章是介绍了一些合成算法,本文的研究算法是从这些算法中综合而来;

第三章是简单音乐合成的设计思路,同时对基本原理进行了分析;

第四章是仿真实验部分,介绍了本文的实验成果;

第五章是总结;

最后部分是致谢。

1.4 MATLAB的发展史

MATLAB由美国New Mexico大学Cleve Moler教授编写并命名,起初他是为了方便学生调用EISPACK和LINPACK从而编写了其接口软件。MATLAB的便捷性使其之后成为了国内外许多大学的教学辅助软件。

1984年,Cleve Moler和John Little创建了Math Works并推出了第一版MATLAB DOS,核心使用C语言编写。随着MATLAB的不断发展,20世纪90年代末推出了MATLAB5.x版本,功能更加强大,能处理更多的数据结构。2000年,MATLAB6.0出现,操作界面有了三个窗口:程序、历史信息及变量管理,而FFTW 系统的应用使得其计算速度上了一个台阶。一年后(2001),MATLAB6.1及Simulink4.0相继问世,功能更强大的MATLAB6.5也在2002年推出。2004年,MATLAB7.0版本发行,优化了编程环境、数据可视化、计算和文件I/O等方面的功能。此后几年,MATLAB7.1~7.14也不断更新迭代,性能不断优化,功能不断完善。

近几年推出的MATLAB2012b(8.0版)及MATLAB2013a相较之前有了较大的改变,主窗口中工具条替代了菜单和工具栏显得更加齐整和简洁,帮助文档在搜索、浏览和筛选功能上也有了大幅度的提升。MATLAB2014a和MATLAB2014b 版本也在之后推出。

本设计使用的是MATLAB2013a,它功能强大而且方便快捷。

1.5 MATLAB音乐合成的原理

在本设计中,MATLAB软件通过对音乐信号频率与时长的分析与组合来简单合成音乐。频率表现音调,时长体现时长,基于该基础MATLAB在编程中能够存储音乐的频率和时长,并且通过将正弦波形的不同叠加与包络设置来仿真实现音乐的音调与节奏的变化。

1.4.1所涉及的乐理知识简述

音乐合成过程中不可避免需要考虑音乐的三大特性:音调、响度、音色。音调就是音的高低,其主要影响因素为声波的频率。响度为音的强弱,其主要影响因素为声波的振动幅度。音色是声音的感觉特性,其变化是由音乐波形中谐波的作用产生的。

1.4.2 音调与唱名

音乐曲谱中所对应的的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。

1.4.3音色与谐波

音色是声音的感觉特性,其变化是由音乐波形中谐波的作用产生的。在专业术语中,“泛音”指谐波,音调确认后可以确定唱名的基波频率,但是谐波频率的却无法确定。乐器不同,所发出声音的音乐也不同,这是因为不同乐器会产生不同的谐波成分和频谱结构。不仅如此,不同乐器多产生的音乐包络波形也迥乎不同,在合成音乐时常将音乐的复杂包络函数直线化,这是便于用程序来表示波形包络,因而常呈折线型。

1.4.4十二平均律

十二平均律,是指将音乐的八度按照频率等比例地分成十二份,是一种音乐定律的方法。它被广泛应用在键盘乐器与交响乐队中,因为它不仅与“五度相生律”发音相似,而且能轻松解决转调问题。国际标准音的规定显示,相邻的半音之间的频率之比定为2^(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 等。

1.4.5傅里叶变换与频谱分析

音乐合成过程中不可避免需要考虑音乐的三大特性:音调、响度、音色,因此必须了解音乐的基波、谐波频率成分以及包络的形状特征。应用傅里叶变化理论对音乐信号的频谱结构进行分析处理,有利于提取其频谱特征。

现代信号频谱的主要分析方法为有限长序列的离散傅氏变换(DFT),它能够将频域也离散化。N点DFT实质上是其频谱的离散频域采样,对频率具有选择性(ωk=2πk/N),在这些点上反映了信号的频谱。N点DFT虽然能克服时间域与频率域之间相互转换的计算障碍,但是其计算量大计算复杂。因此引用快速傅里叶变化(FFT)算法最简单、编程最容易的基2FFT,还有基4FFT、基8FFT等快速算法。采样定律说明,FFT变换相当于对有限长序列进行频域采样,计算速度快而且也不会丢失信息,具有双重作用。所以只要时域序列的长度足够长,采样的点数足够多,频域采样也可以很好地反映信号的频谱趋势,基于以上优点,在设计中可以用FFT进行语音信号的频谱分析。

第2章音乐合成的相关算法

音乐合成是语音合成的一种,因此语音合成的算法思路可以直接运用于音乐合成中。对于语音合成的研究已经到了一个比较深入的阶段,也出现了多种不同的算法,但是归结起来,主要是两个大的方向,其中一种是通过统计学建立声学模型来进行语音合成,另一种是挑选语音的特征参数来识别并合成新的语音。

2.1 基于统计声学模型的合成算法

这种算法的思路是在模型训练阶段,首先提取语料库中语音数据的频谱、基频等声学相关指数,与统计声学模型可以用于匹配之前和之后的内容,并通过语料库中音位以及韵律予以注释。使用的模型结构为隐马尔柯夫模型。当进入到合成阶段时,以使目标合成句对应的声学模型具有最大的似然值输出为准则,来进行最佳合成单元的挑选,最后通过平滑连接各备选单元波形来生成合成语音。

其核心在于对录入过程中中,对待合成字符产生的研究数据,需要将匹配的单元从前期进行录制的语料库中进行筛选,得到的结果为由波形进行编辑而成的语音成品。这种效果制作的语音成品相比普通算法在自然度上有所超越,原因在于波形自身便具备自然的特性。前期筹划的语料库的内容越广泛,自然度的优势就越明显,甚至会影响到语音合成未来的前进发展问题。随着对语音合成技术的不断探究,目前以隐马尔柯夫模型作为主流算法,并且得到快速的推广。类似统计建模的统计模型,范围在语音识别方面以获得广泛推广。在这种参数的操作原理中,即是在参数合成的方式以统计模型为主,声学模型为辅的方式进行模拟,其中参数生成的方式为最大似然,通过对生成语音成品需求的频谱和韵律进行评估,再通过参数合成的方式转化语音。以这种方式为原则,将提升系统的应用性,在运算期间,可以无视语种的区别以及进行自动化训练,最终使综合的自然度质量提高。

通常在自动化训练环节,在前期筹备的语料库里,可针对音素声学参数匹配音段、韵律进行内容注释,对HMM模型中之前和之后的内容进行信号频率、基频和时间长度进行训练。在最后的合成环节,需要进行录入文本的解析,才可获取目标合成句中所有语音最小单位进行上下内容的注释,测试已优化好的模型与声学模型的匹配程度。可以参照Kullback-Leibler算法原则进行单元的选择和MLE 算法原则下进行单元值的选择,生成的最终单元序列可达到合成语音的平滑输出。

详细训练算法以及合成算法如图2.1所示。

图2.1基于统计声学模型的合成算法

2.2 基于离散变换的合成算法

这种算法是在离散变换域中合成语音信号,建立语音线性预测模型,信号经过加窗后随着信号帧推进逐一展开处理,随之对语音取样值的线性组合进行预测以及运行基音检测算法择取语音帧,对语音信号进行模拟重建。其主要特质为,通过对样本进行频率滤除,进而通过预测器进行预测,以语音线性预测模型进行优化,以达到控制信号的带宽,加窗后随着信号帧推进逐一展开处理,音频的重构合成将在声道模型中进行。

采用此种算法的亮点在于传输能力方面要好过模拟信号。通常情况下,信号在转换过程中需要将模拟变为数字,而语音信号也不例外,作为对语音信号进行重构合成的变换域(即Z域),就是由离散系统转变而成。

2.3 本文算法

通过结合实际情况,本文的算法思路是:首先利用相关的语音处理函数进行简单的音乐合成,对音乐进行降噪、加谐波以及升降度处理;然后用傅里叶变换

分析经相应处理后的各音乐频谱;最后运用傅里叶级数的原理来再次合成音乐针对语音音频进行对应的优化合成,对音乐频率中产生的噪音、非正弦电量、音调等参数进行分析优化。采用此种的亮点在于,方便快捷,可以使普通音频合成的效果显著。只不过,如果面对非常复杂的音频,就会出现诟病。在噪音、音调等方面受到阻碍。下文将着重通过博里叶技术变化进行剖析,证明此种方法的合理性。

第3章基于MATLAB的简单音乐合成设计

本章主要简单音乐合成设计,并对设计的基本原理进行分析,在介绍之前先对MATLAB进行一个简介。

3.1 MATLAB简介

Matlab为缩写的英文名,而它中文命名为矩阵实验室(MATrix LABoratory),(矩阵实验室)的缩写。在1979年的时候,克里夫?莫勒尔正在为美国新墨西哥大学任教,当他在授课的时候,希望自己的学生可以运用EISPACK和LINPACK 进行运算,当时他发现自己的学生在对接口进行编程经常要花费大量精力,给运算带来极大的不便。为了解决这一问题,方便学生的运算,他便自己编写出程序库的接口程序,并且根据程序库的运算方式命名为矩阵实验室。

雏形时期的Matlab是用FORTRAN语言进行简编,用途比较单一,因为无偿使用又在学生中有良好的口碑,经常被各个大学所应用。工程师John Little敏锐地觉察到Matlab在工程领域的广阔前景。同年,他和Cleve Moler、Sieve Bangert 一起合作成立了公司。以C语言开发使之成为专业进行数据运算以及图表显示功能的专业软件。在九十年代初期,公司不断对Matlab进行更新、升级、换代,使之成为多功能化计算软件,在软件超凡的数据运算能力为前提,增加了符号运算以及模拟建模等功能。使编程更方便。1999年初推出了的5.3版本在很多方面又进行了进一步改进。2001年7月,MathWorks公司退了Matlab最新版本6.1版,

6.1版对计算机配置要求比较高。之后又推出了

7.0版本。现在用户用的最多的是

7.0版本。

截止到目前,Mat lab已经逐步成为专业功能更强大的软件,它所具备的灵活运算能力以及通俗易懂的语言使之更为实用,其中在各个国家知名大学中被普及应用,并受到广泛的好评。主要运用于数学、机械自动化、自然科学、工程科技、测量测绘等多种学科,是众多学科专家教授以及学生都需要必备的应用软件,并在一些更为专业的学术部门被普及运用,进行专业性的科研开发。在国内的科研项目之中,Matlab也被普遍应用,而本文中主要需要Matlab的通讯处理和仿真模式。

Matlab的计算功能分两个方面,一方面是数值计算,一方面则以针对数据中的符号计算进而提供分析数据,对于精度以及解析进行求解。另外它包含的函数

内容以及函数算法等兼容性较强,算法公式为经过专业计算专家进行审核认可,并经过精心设计。另外,对于符号计算的分析功能也十分强大,在通过与MAPLE 软件进行强强联手,并以其明显的功能优势成为计算软件中的主流软件。

Matlab在制图方面的功能也非常完整,可进行两种层次的制图进行操作:首先可以对图形变量进行低层制图,再次也可以在此基础上进行高层制图。尤其是在高层制图方面,不仅在制图的功能上比较丰富,在操作上设计中也合理便捷。图片的变量在绘制过程中可随意的进行控制。此外,Matlab的额外亮点还在于它会用户提供的工具箱,在进行基础的计算制图等功能时,可使用基础款工具,就完全能满足需求。而在扩展工具箱中,包括功能、学科等多种针对性操作工具,例如:模拟建模、符号处理、系统操作、通讯信号、金融数据等多种专业性工具。

Matlab能够在数据计算软件中占据主流的位置,在科研单位以及高校各学科中得到如此的普及运用得益于它的可视化图表、数值运算、算法测试等。其中包含Matlab和Simulink,两者可以将诸多专业性工具可视化图表、数值运算、模拟建模等在软件视图内进行优化,以达到更高的客户体验。主要运用于数学、机械自动化、自然科学、工程科技、测量测绘等多种学科。

Mat lab的主要特点分析如下:

1.编程语言简单,应变能力强大;依靠其种类繁多、数量大、涉及范围较广的数据库,可以通过便利的函数应用进行制作测试,对初学者基本无太多要求,而且非常容易上手。

2. 用户体验良好,在Matlab能将基础功能进行掌握之后,基本对程序调试也非常熟练,开发人员对程序的编制更加得心应手,而且其具备通俗易懂的操作界面,以人性化和实用化的开发环境满足开发人员的实际需求,可以尽快对于错误进行修复和排除,另外由于学习难度降低,使之成为比VB更为简单的语言系统。。

3.扩展兼容能力强,Matlab强大的数据库使开发人员对程序的编制更加得心应手,并且库函数兼容能力强,针对可以根据用户的体验进行自行改变,调动、翻阅。根据开发人员的实际需求,还可以自行对一些元素进行自定义的建设和扩展,使其具有的多元化的特征跟拓展性的功能。

4.语句简单,内容综合体现,Matlab主要依靠函数成为自身重要语言,通常用以下表示:(a,6,c…)= fun(d,e ,f,…),含义为函数在函数命数之内,输入变量d,e,f,…和输出变量a,b,c… .组成,同一函数名F,不同数目的输入变量(包括无输入变量)及不同数据存在的变量。其中每一种变量,有存在

针对性的数值,使之将繁杂的运算符转化更加精简,从而大量减少字符的数量,提供了良好的编辑和调试的环境。

5.矩阵和数组运算能力强Basic、Fortra一样规定了矩阵的一系列运算符,它不需定义数组的维数,并给出矩阵函数、特殊矩阵专门的库函数,将其用于在通讯方式、模拟建模、语音识别等角度的应用,可以提高研究的效率,尤其是科研类软件的开发,它具有的功能性以及可控制性使一些专业范围内的软件得到更好的研发及应用。

6.制图功能简单有效,对于制图的功能性,Matlab的优势在于简单,通过输入制图函数的指令,就可以对其图形、颜色、线、点等多重要素进行绘制。而且对于制图表标题、注释也仅需要简单指令就可以达成。

3.1.1MATLAB的运行

启动MATLAB 点击MATLAB图标,进入到MATLAB命令窗(MATLAB Command Window).在命令窗内,可以输入命令、编程、进行计算.

学会使用help命令

在命令窗内输入help命令,再敲回车键.在屏幕上出现了在线帮助总览.(注意:MATLAB命令被输入后,必需敲回车键才能执行.为行文方便,以后不再每次提醒“敲回车键”.)

学会使用help命令,是学习MATLAB的有效方法.例如:要想知道MATLAB 中的基本数学函数有哪些,可以在总览的第五行查到:MATLAB中的“基本数学函数”用elfun表示,于是,可进一步键入:“help elfun”,屏幕上将出现“基本数学函数”表.(注意:help elfun之间有空格,以后不再每次提醒.)如果想了解sin函数怎样使用,可进一步键入help sin.在工具栏中点击help按扭,或点击?号按扭,与上面获取帮助信息的方法是等效的.

学会使用demo命令

在命令窗内输入demo命令,再敲回车,键屏幕上将出现演示窗口. (MATLAB Demo Window)一共有三个窗口,左边的窗口显示欲演示内容的大标题,选定其中一项,右下方的小窗口显示欲演示的具体内容,选中其中一栏,再点击run按扭,屏幕上将演示选定的演示程序.右上方的窗口显示关于大标题的一些说明.在命令窗内输入type (文tob_id_4294 2 件名),将显示演示程序的M文件,仔细研究演示程序的M文件,是学习MATLAB的又一有效方法.

进入演示窗还有另一方法:在工具栏中点击Help栏,下拉式菜单中点击

examples and demos项,即可进入演示窗口.

退出在工具栏中点击File按钮,在下拉式菜单中单击Exit MATLAB项即可

3.1.2变量、语句、矩阵与函数

1.变量在MATLAB中,变量由字母、数和下划线组成.第一个字符必须是字母.一个变量最多由31个字符组成,并区分大小写.下面是MATLAB中表示特殊量的字符:pi(圆周率)、eps(最小浮点数)、Inf(正无穷大)、NaN(表示0/0或inf-inf等不定值)、i,j(虚数单位)

2.语句MATLAB语句的一般形式为:变量=表达式.当某一语句的输入完成后,按回车键,计算机就执行该命令.如果该语句末没输入其它符号或输入了逗号,将显示结果;如果句末输入了分号,将不显示结果.如果语句中省略了变量和等号,那么计算机将结果赋值给变量ans.

3.矩阵把m×n个数排成m行n列的数表,此数表被称为m行n列的矩阵,记为mnmnnmaaaaA1111 MATLAB 中矩阵的输入方法如下:A=[a11,…,a1n;…;am1,…,amn].逗号是数之间的分隔符(也可用空格代替);分号是换行符.

3.1.3 绘制三维图形

⑴空间曲线的绘制

绘制空间曲线的基本命令为: plot3(x,y,z);plot3(x,y,z,'s')或

plot3(x1,y1,z1,'s1',x2,y2,z2,'s2',…) 其中x,y,z是同维的向量或矩阵.当它们是

矩阵时,以它们的列对应元素为空间曲线上点的坐标.s是线形、颜色开关,

这一点与二维曲线时的情形相同.

⑵曲面的绘制

绘制空间曲面的基本命令为mesh(x,y,z). 如果x、y是向量,则要求x的长

度=矩阵z的列维;y的长度=矩阵z的行维.以zij为竖坐标,x的第i个分

量为横坐标,y的第j个分量为纵坐标绘网格图

⑶多幅图形的创建

有时同一曲面或曲线需要从不同的角度去观察,或用不同的表现方式去

表现,这时,为了便于比较,往往在一个窗口内画多幅图形.MATLAB用

subplot命令实现这一目的.具体格式为:subplot(m,n,p)使用此命令后,把窗口分为m×n个图形区域,p表示当前区域号. 例如把

sinx,cosx,atanx,sinxcosy画在一个窗口内,可键入:x=0:pi/6:2*pi;y=x; z1=sin(x);z2=cos(x);z3=atan(x); subplot(2,2,1); plot(x,z1,'r',x,z2,'g') subplot(2,2,2);plot(x,z3,'m') subplot(2,2,3);[x,y]=meshgrid(x,y);z4=sin(x).*cos(y); mesh(x,y,z4);subplot(2,2,4);surfc(x,y,z4)

3.3 核心算法设计

这个算法核心就是傅里叶变换,傅里叶变换本来是数学专业的内容,但是在MATLAB中运用的非常广泛,本文根据福利叶变换创建了信号频谱的概念。傅里叶分析就是将信号的频率构成、频率宽度等特征进行分析。音乐的基波频率和谐波构成是合成一段音乐的基本。所以,傅里叶变换是在处理时必须要使用到的基本工具。

当时间信号是连续时,根据傅里叶变换有如下公式:

。因为等式两边都是连续性函数,并不能用作计算机来进行计算。需要MATLAB提供的符号函数fourier来进行计算。但是有一个前提要求,就是需要信号解析的表达式。但是在工程实际应用中,并不能得到信号是解析表达式,在这种情况下,就需要傅里叶变换的数值计算的方法。

如果f(t)的主要取值区间为[t1,t2],那么将T=t2-t1定义为区间长度。

在该区间内抽样N个点,抽样间隔为?t=T/N,那么

通过上述公式那么可以计算出任意频点的傅里叶变换值。

假设F(ω)的主要取值区间是[ ω1,ω2 ],要计算其间均匀抽样的k个值,故

在上面的式子中有如下表达式

其表达的意思为频域抽样间隔。

3.4 算法实现

3.4.1 调用相关的MATLAB函数

相关的几个声音信号分析与处理的MATLAB函数及其功能,见下表

函数功能

wavread读.wav文件

sound将向量转换成声音

kron矩阵的张量积(叉乘)

resample改变信号的采样率

interp上采样(提高采样率)

decimate下采样(降低采样率)

3.4.2 音乐初步处理

要注意音乐时间的分割。在进行音乐信号处理时,需要考虑样品数据是否是该软件接受范围内的点。假设以8000Hz为取样样品,意味着在一秒内就有8000个取样数据点。需要再进行相当长时间的数学计算。由于时间较长,可能会出现死机的情况。

所以,需要对音乐进行分割成若干个小段落后在进行分析计算。并且分割的段落越多,其计算分析的速度越快,效率越高。科学时间段落为0.5秒一个段落。在进行音乐分析工作时,分析的重点应该落在每一小段的最高幅度周围,其他处当做幅度衰减其频率不变,可以不用重复分析。能够减少工作时间。减少无用功。

matlab音乐合成葫芦娃

目录 音乐合成实验................................................................................................. 错误!未定义书签。 摘要: (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);

matlab音乐处理合成实验报告

MATLAB高级编程与工程应用语音合成综合实验 姓名: 班级: 学号: 日期:

1.2.1 简单的合成音乐 (1) 请根据《东方红》片断的简谱和“十二平均律”计算出该片断中各个乐音的频率,在MATLAB 中生成幅度为1 、抽样频率为8kHz 的正弦信号表示这些乐音。请用sound 函数播放每个乐音,听一听音调是否正确。最后用这一系列乐音信号拼出《东方红》片断,注意控制每个乐音持续的时间要符合节拍,用sound 播放你合成的音乐,听起来感觉如何 由“十二平均律”计算得到各个乐音的频率: “5”——“C”: “6”——“D”: “1”——“F”: “2”——“G”:392Hz “6.”频率是“6”的一半: 代码:() f=8000; T=1/f; t8=0:T:1*; t4=0:T:2*; t2=0:T:4*; t1=0:T:8*; part1=sin(2*pi**t4); part2=sin(2*pi**t8); part3=sin(2*pi**t8); part4=sin(2*pi**t2); part5=sin(2*pi**t4); part6=sin(2*pi**t8); part7=sin(2*pi**t8); part8=sin(2*pi**t2); total=[part1,part2,part3,part4,part5,part6,part7,part8]; sound(total); 试听发现,合成后的音乐基本保持了《东方红》的音调,但声音比较沉闷,相邻乐音之间有比较明显的“啪”的杂音。 (2) 你一定注意到(1) 的乐曲中相邻乐音之间有“啪”的杂声,这是由于相位不连续产生了高频分量。这种噪声严重影响合成音乐的质量,丧失真实感。为了消除它,我们可以用图所示包络修正每个乐音,以保证在乐音的邻接处信号幅度为零。此外建议用指数衰减的包络来表示。 首先尝试用折线包络,编写函数生成所需折线: function envelope = envelope_line(t) envelope(1:floor(t/8)) = linspace(0,1,floor(t/8)); envelope(floor(t/8)+1:floor(t/4)) = linspace(1,,floor(t/4)-floor(t/8))); envelope(floor(t/4)+1:floor(3*t/4)) = linspace,,floor(t*3/4)-floor(t/4)); envelope(floor(3*t/4)+1:t) = linspace,0,floor(t)-floor(3*t/4)); 对中的部分代码进行修改,调用envelope_line实现折线包络:() part1=sin(2*pi**t4).*envelope_line(t4);

Matlab音乐合成实验报告

音乐合成实验 目录 音乐合成实验 (1) 摘要: (1) 第一部分简单的合成音乐 (2) 1.1合成《东方红》 (2) 1.2 除噪音,加包络 (3) 1.3改变程序,实现1.2中的音乐升高和降低一个八度 (8) 1.4在1.2的音乐中加入谐波 (9) 1.5自选音乐合成——《两只老虎》 (10) 第二部分用傅里叶变换分析音乐 (11) 2.1载入fmt.wav并播放 (11) 2.2载入文件Guitar.mat,处理原始数据realwave (11) 2.3分析wave2proc的基波和谐波 (13) 2.4自动分析fmt.wav的音调和节拍 (16) 第三部分基于傅里叶级数的音乐合成 (19) 3.1 用2.3分析出来的结果重新加谐波 (19) 3.2 通过2.4提取的吉他音调信息弹奏《东方红》 (19) 实验收获 (21) 摘要:

本文共有三大部分:第一部分,简单的音乐合成;第二部分,用傅里叶变换分析音乐;第三部分,基于傅里叶级数的音乐合成。由潜入深,一步一步分析了用MATLAB 进行音乐合成的过程。通过本实验达到了加深对傅里叶级数和傅里叶分析的理解,熟悉对MATLAB 基本使用的目标。 第一部分 简单的合成音乐 1.1 合成《东方红》 根据《东方红》第一小节的简谱和十二平均律计算出该小节每个乐音的频率,在MATLAB 中生成幅度为1,抽样频率为8kHz 的正弦信号表示这些乐音,用sound 播放合成的音乐 由图可知《东方红》的曲调定为F ,即1=F ,对应的频率为349.23Hz ,据此可以计算出其他乐音的频率,例如5对应的频率为 7/125349.232523.25f =?=,一次类推计算出第一小节各乐音对应的频率为: 乐音 5 5 6 2 1 1 6 2 在确定了各乐音的频率之后需要确定每个乐音的持续时间。每小节有两拍, 一拍的时间是0.5s ,因此各乐音的持续时间为: 乐音 5 5 6 2 1 1 6 2 而在MATLAB 中表示乐音所用的抽样频率为fs=8000Hz ,也就是所1s 钟内有8000个点,抽样点数的多少就可表示出每个乐音的持续时间的长短。用一个行向量来存储这段音乐对应的抽样点,在用sound 函数播放即可。 根据以上分析在MATLAB 中编写如下程序: sound_1_1.m

Matlab音乐合成实验报告

课程设计《音乐合成》实验报告 专业:测控技术与仪器 班级:测控11-2 班 姓名:谷晓峰 学号: 11034010219 指导教师:贺婷 广东石油化工学院计算机与电子信息学院

信号与系统课程设计 -------利用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.25s y(0.25

基于MATLAB软件的音乐合成毕业设计论文

毕业设计(论文) 基于MATLAB的软件的音乐合成 Music Synthesis Based On MATLAB Software

毕业设计(论文)原创性声明和使用授权说明 原创性声明 本人郑重承诺:所呈交的毕业设计(论文),是我个人在指导教师的指导下进行的研究工作及取得的成果。尽我所知,除文中特别加以标注和致谢的地方外,不包含其他人或组织已经发表或公布过的研究成果,也不包含我为获得及其它教育机构的学位或学历而使用过的材料。对本研究提供过帮助和做出过贡献的个人或集体,均已在文中作了明确的说明并表示了谢意。 作者签名:日期: 指导教师签名:日期: 使用授权说明 本人完全了解大学关于收集、保存、使用毕业设计(论文)的规定,即:按照学校要求提交毕业设计(论文)的印刷本和电子版本;学校有权保存毕业设计(论文)的印刷本和电子版,并提供目录检索与阅览服务;学校可以采用影印、缩印、数字化或其它复制手段保存论文;在不以赢利为目的前提下,学校可以公布论文的部分或全部内容。 作者签名:日期:

学位论文原创性声明 本人郑重声明:所呈交的论文是本人在导师的指导下独立进行研究所取得的研究成果。除了文中特别加以标注引用的内容外,本论文不包含任何其他个人或集体已经发表或撰写的成果作品。对本文的研究做出重要贡献的个人和集体,均已在文中以明确方式标明。本人完全意识到本声明的法律后果由本人承担。 作者签名:日期:年月日 学位论文版权使用授权书 本学位论文作者完全了解学校有关保留、使用学位论文的规定,同意学校保留并向国家有关部门或机构送交论文的复印件和电子版,允许论文被查阅和借阅。本人授权大学可以将本学位论文的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或扫描等复制手段保存和汇编本学位论文。 涉密论文按学校规定处理。 作者签名:日期:年月日 导师签名:日期:年月日

电机与拖动基础及MATLAB仿真习题答案(第四章)

4-14 一台直流电动机技术数据如下:额定功率PN=40kW ,额定电压UN=220V ,额定转速nN=1500r/min ,额定效率η=87.5%,求电动机的额定电流和额定负载时的输入功率? 解: (1)额定电流 (2)输入功率 4-15 一台直流发电机技术数据如下:额定功率PN=82kW ,额定电压UN=230V ,额定转速nN=970r/min ,额定效率η=90%,求发电机的额定电流和额定负载时的输入功率? 解: (1)额定电流 (2)输入功率 4-16 已知一台直流电机极对数p=2,槽数Z 和换向片数K 均等于22,采用单叠绕组。试求:(1)绕组各节距;(2)并联支路数。 解:(1)第一节距54 24222y 1=-=±=εp z ,为短距绕组。 单叠绕组的合成节距及换向器节距均为1,即1y ==k y 第二节距415y 12=-=-=y y (2)并联支路数等于磁极数,为4。 4-17 已知直流电机极数2p=6,电枢绕组总导体数N=400,电枢电流Ia=10A ,气隙每极磁通Φ=2.1×10-2Wb ,试求:(1)采用单叠绕组时电枢所受电磁转矩;(2)绕组改为单波保持支路电流ia 不变时的电磁转矩。 解: 电枢绕组为单叠绕组时,并联支路对数a=p=3, 电磁转矩 m N I a pN T a ?=?????=Φ=38.1310021.03 14.3240032π 如果把电枢绕组改为单波绕组, 保持支路电流a i 的数值不变,则电磁转矩也不变,仍为 13.369m N ?,因为无论是叠绕组还是波绕组,所有导体产生的电磁转矩的方向是一致 的, 保持支路电流a i 不变,就保持了导体电流不变,也就保持了电磁转矩不变。 也可以用计算的方法: 单叠绕组时并联支路数为6, 支路电流 A I i a a 6106== 改为单波绕组, 保持支路电流a i 的数值不变,仍为 A 610,而并联支路数为2 (a=1), 电枢电流A i I a a 3 102== 电磁转矩 m N T ?=?????=38.133 10021.0114.324003。 A U P I N N N N 79.207875.022010403 =??==ηkW I U P N N 71.4579.2072201=?=?=A U P I N N N 5.35623010823 =?==KW P P N 11.911==η

基于MATLAB的简单音乐合成

《数字信号处理》课程设计 说明书 设计题目:基于MATLAB 的简单音乐合成 姓名:_________________________________________ 专业年级:______________________________________ 学号:_________________________________________ 指导老师:______________________________________ 时间:2015 年 6 月25 日

《数字信号处理课程设计》任务书 指导老师(签名):

1设计基础.................................... 1.1 MATLAB软件简介.............................. 1.2乐曲解析.................................. 2设计与实现................................... 2.1 简单的音乐合成 ................................ 2.1.1原理分析 ................................ 2.1.2 Matlab 源代码 .............................. 2.1.3运行结果分析 ............................... 2.2除噪音,加包络................................. 2.2.1原理分析 ................................ 2.2.2 Matlab 源代码 .............................. 2.2.3运行结果分析 .............................. 2.3加谐波.................................... 2.3.1原理分析 ................................ 2.3.2 Matlab 源代码 .............................. 2.3.2运行结果分析 .............................. 3总结与体会................................... 4参考文献....................................

Matlab音乐合成实验报告(重大 通院)

重庆大学Matlab音乐合成实验报告 班级:实验班 指导老师:印勇 学生: 覃继良 20114909 学号:

音乐合成实验 介绍 本文共有三大部分:第一部分,简单的音乐合成;第二部分,用傅里叶变换分析音乐;第三部分,基于傅里叶级数的音乐合成。由潜入深,一步一步分析了用MATLAB 进行音乐合成的过程。通过本实验达到了加深对傅里叶级数和傅里叶分析的理解,熟悉对MATLAB 基本使用的目标。 第一部分 简单的合成音乐 1.1 合成《东方红》 根据《东方红》第一小节的简谱和十二平均律计算出该小节每个乐音的频率,在MATLAB 中生成幅度为1,抽样频率为8kHz 的正弦信号表示这些乐音,用sound 播放合成的音乐 由图可知《东方红》的曲调定为F ,即1=F ,对应的频率为349.23Hz ,据此可以计算出其他乐音的频率,例如5对应的频率为7/125349.232523.25f =?=,一次类推计算出第一小节各乐音对应的频率为: 在确定了各乐音的频率之后需要确定每个乐音的持续时间。每小节有两拍,一拍的时间是0.5s ,因此各乐音的持续时间为: 而在MATLAB 中表示乐音所用的抽样频率为fs=8000Hz ,也就是所1s 钟内有8000个点,抽样点数的多少就可表示出每个乐音的持续时间的长短。用一个行向量来存储这段音乐对应的抽样点,

在用sound函数播放即可。 根据以上分析在MATLAB中编写如下程序: east1.m clear;clc; fs=8000; %抽样频率 f=[523.25 523.25 587.33 392 349.23 349.23 293.66 392]; %各个乐音对应的频率 time=fs*[1/2,1/4,1/4,1,1/2,1/4,1/4,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中运行east1.m,播放出了《东方红》的第一段,但是可以听出效很不好,只能听出具有《东方红》的调子而已。 图1-1 由图1-1我们可以看到,每一个调子并没有能够区分出来,就是连续一片的。幅度也是相当的,都是1。

基于Matlab的MP3播放器

基于Matlab的MP3播放器 1.概述 MP3的全称为MPEG1(Moving Picture Experts Group) Layer – 3音频文件。它根据压缩质量和编码复杂程度划为三层,Layer –1 、Layer –2 、Layer –3 ,且分别对应MP1 、MP2\ MP3 这三种声音文件,并根据不同的用途,使用不同层次的编码。MPEG音频的层次越高,编码器越复杂,压缩率也越高,MP3的压缩率则高达10:1 – 12:1。 MA TLAB 是国际上公认的最优秀的科技应用软件,它在数据分析和处理功能都是很强大,利用它可以灵活方便地处理音频信号。本文将使用matlab对MP3进行解码,做一个简易的MP3播放器。 2.MP3文件格式 MP3文件大体分为三部分:TAG_V2(ID3V2),frame,TAG_V1(ID3V1) 一个MPEG音频文件是许多的称为帧的较小部分组成的,通常,帧是独立的组成部分,每个帧都拥有之间的头和音频信息,没有文件头。所以我们可以剪切MPEG文件的任何部分并且能够正常播放。但在LayerIII中就并不总是正确的。 2.1、帧头格式 下面是一个头内容图示,使用字符A到M表示不同的区域

AAAAAAAAAAA BB CC D EEEE FF G H II JJ K L MM A表示帧同步,都为1,长度为11; B 表示MPEG音频版本ID (00 – MPEG 2.5; 01 –保留;10 – MPEG 2; 11 – MPEG 1); C 表示Layer描述,(00 –保留;01- LayerIII;10 – LayerII;11 - LayerI); D 表示校验位(0 有跟16位CRC校验位;1 无校验位); E 位率索引,长度为4,对不同的版本,不同层索引值表示不同的位率;单位Kbit

MATLAB仿真 课后习题

第一章习题 3.请指出以下的变量名(函数名、M文件名)中,哪些是合法的?Abc 2004x lil-1 wu_2004 a&b qst.u _xyz 解:合法的变量名有:Abc wu_2004 4.指令窗操作 (1)求[12+2×(7-4)]÷32的运算结果 解:>> [12+2*(7-4)]/3^2 ans = 2 (2)输入矩阵A=[1,2,3;4,5,6;7,8,9],观察输出。 解:>> A=[1,2,3;4,5,6;7,8,9] A = 1 2 3 4 5 6 7 8 9 (3)输入以下指令,观察运算结果; clear;x=-8:0.5:8; y=x'; X=ones(size(y))*x; Y=y*ones(size(x)); R=sqrt(X.^2+Y.^2)+eps; Z=sin(R)./R; mesh(X,Y,Z); colormap(hot) xlabel('x'),ylabel('y'),zlabel('z') 解:

7.指令行编辑 (1)依次键入以下字符并运行:y1=2*sin(0.3*pi)/(1+sqrt(5)) 解:>>y1=2*sin(0.3*pi)/(1+sqrt(5)) y1 = 0.5000 (2)通过反复按键盘的箭头键,实现指令回调和编辑,进行新的计算;y2=2*cos(0.3*pi)/(1+sqrt(5)) 解:>>y2=2*cos(0.3*pi)/(1+sqrt(5)) y2 = 0.3633 11.编写题4中(3)的M脚本文件,并运行之。 解:

第二章习题 1.在指令窗中键入x=1:0.2:2和y=2:0.2:1,观察所生成的数组。 解:>> x=1:0.2:2 x = 1.0000 1.2000 1.4000 1.6000 1.8000 2.0000 >> y=2:0.2:1 y = Empty matrix: 1-by-0 2.要求在[0,2π]上产生50个等距采样数据的一维数组,试用两种不同的指令实现。 解: y1=0:2*pi/49:2*pi y2=linspace(0,2*pi,50) 3.计算e -2t sint ,其中t 为[0,2π]上生成的10个等距采样的数组。 解:>> t=linspace(0,2*pi,10); x=exp(-2*t).*sin(t) x = 0 0.1591 0.0603 0.0131 0.0013 -0.0003 -0.0002 -0.0001 -0.0000 -0.0000 4.已知A=??????4321 , B=?? ? ???8765,计算矩阵A 、B 乘积和点乘. 解:>> A=[1,2;3,4]; B=[5,6;7,8]; x=A*B x = 19 22 43 50 >> x=A.*B x = 5 12 21 32 5.已知A=??????05314320,B=?? ? ???05314320,计算A&B, A|B, ~A, A==B, A>B. 解:>> A=[0,2,3,4;1,3,5,0]; B=[1,0,5,3;1,5,0,5]; a1=A&B

matlab音乐合成报告

MATLAB音乐合成综合实验 学院: 班级: 指导老师:吴宪祥 同做者: 二0一六年十二月

摘要 本实验共有三部分:1.简单的音乐合成;2.用傅里叶变换分析音乐;3.基于傅里叶级数的音乐合成。一步一步分析了用MATLAB进行音乐合成的过程。通过本实验达到加深对傅里叶级数和傅里叶分析的理解,熟悉对MATLAB基本使用的目标。该实验采用MATLAB软件仿真来实现。首先,通过编程对一段真实的音乐进行分析、处理,求得这段音乐的基频、谐波分量、等数据;然后,通过对乐理的研究,根据分析中求得的数据编写程序,进行基于傅里叶分析的音乐合成设计,并设计了图形用户界面。

目录 1.绪论 1.1 引言 (3) 1.2 实验要求 (3) 1.3 实验原理 (3) 2.简单的合成音乐 2.1 乐理知识介绍 (4) 2.2 利用MATLAB实现音乐合成器,生成 WAV文件 (5) 2.3 除噪音,加包络 (5) 2.4 音乐升高和降八度 (9) 2.5 加入谐波 (9) 3.用傅里叶变换分析音乐 3.1 载入fmt.wav并播放 (11) 3.2 处理realware (11) 3.3 分析wave2proc的基波和谐波 (13) 3.4 自动分析fmt.wav的音调和节拍 (16) 4.基于傅里叶级数的音乐合成 4.1 重新加谐波 (17) 4.2 通过音调信息弹奏《送别》 (19) 5.制作GUI界面 (20) 6.实验难点及问题 (21) 7.实验收获 (22)

1.绪论 1.1 引言 信号与系统的概念及分析方法广泛应用于通信、自动控制、航空航天、电子信息、地震学、生物工程等领域,因此“信号与系统”是一门电子信息学科相关专业的主干技术课程。MATLAB 是国际上公认的优秀的科技应用软件,随着版本的不断升级,内容也在不断扩充。基于MATLAB 的音乐分析与合成实验是针对“信号与系统”课程的重点和难点之一的傅里叶变换和傅里叶级数等内容而设计的。由于该实验是真实音乐的实际应用,可以增进对傅里叶级数和傅里叶变换的理解,加深对信号分析工程应用的理解,提高在信号分析领域的应用能力。 1.2 实验要求 1、3-5人一组,选择不同乐曲,利用MATLAB 实现音乐合成器,生成WAV 文件; 2、给乐音加包络消噪; 3、实现音乐的升八度和降八度; 4、在音乐中添加谐波; 5、用傅里叶级数分析音乐的基频、音调和节拍; 6、模仿一些常用乐器(如钢琴、吉他等)实现音乐合成; 7、设计GUI 界面; 8、提交设计报告。 1.3实验原理 傅里叶变换建立了信号频谱的概念。所谓傅里叶分析即分析信号的频谱(频率构成)、频带宽度等。要想合成出一段音乐,就要了解该段音乐的基波频率、谐波构成等。因此,必须采用傅里叶变换这一工具。对于连续时间信号f(t),其傅里叶变换为: dt jwt e t f w ?∞ ∞--=)(F )( 由于其变换两边的函数f (t) 和F (w )都是连续函数,不适合于计算机处理。MATLAB 语言提供了符号函数FOURIER 来实现傅里叶变换,但该函数需要信号的解析表达式。而工程应用中经常需要对抽样数据进行傅里叶分析,这种情况下往往无法得到信号的解析表达式,必须采用傅里叶变换的数值计算方法。

基于MATLAB的简单音乐合成仿真设计

本科生毕业论文(设计)基于MATLAB的简单音乐合成仿真设计

学士学位论文原创性声明 本人郑重声明:所呈交的论文(设计)是本人在指导老师的指导下独立进行研究,所取得的研究成果。除了文中特别加以标注引用的内容外,本论文(设计)不包含任何其他个人或集体已经发表或撰写的成果作品。对本文的研究做出重要贡献的个人和集体,均已在文中以明确方式表明。本人完全意识到本申明的法律后果由本人承担。 学位论文作者签名(手写):签字日期:年月日 学位论文版权使用授权书 本学位论文作者完全了解学校有关保留、使用学位论文的规定,同意学校保留并向国家有关部门或机构送交论文的复印件和电子版,允许论文被查阅和借阅。本人授权可以将本论文的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或扫描等复制手段保存和汇编本学位论文。 (请在以上相应方框内打“√”) 学位论文作者签名(手写):指导老师签名(手写): 签字日期:年月日签字日期:年

摘要 科学技术的发展使得社会生活越来越趋于信息化和数字化,在此基础上语音信号也可以基于数字信号处理技术和语音学相关知识进行信息化处理,此类技术因应用性广便捷性高受到社会的广泛关注,已成为信息科学工程与研究领域的核心技术,被越来越多的高科技产业广泛使用。计算机合成音乐也在其基础上得以迅速普及,而且理论上可以创造出任何一种声音。 MATLAB是一种用于数据分析和处理的计算机应用软件,它可以将语音文件进行信息化处理转化为离散的数据文件,再通过内置强大的矩阵运算能力如数字滤波、时域和频域分析、傅里叶变换、时域和频域分析、声音合成以及各种图形的呈现等处理数据。利用MATLAB自带的功能函数可以快捷而又方便地完成语音信号的处理和分析以及信号的可视化,使人机交互更加便捷。音乐可视为不同频率与振幅的正弦波叠加并加以不同包络所形成的信号,它的这个特点使得MATLAB的处理有了可能,通过处理不同的音频MATLAB可以进行简单的音乐合成。 本文主要是基于MATLAB环境下的音乐合成研究,首先基于相关的处理函数合成简单的音乐,并且对音乐进行降噪、升降度和加谐波等处理;然后基于傅里叶变换分析处理后的音乐频谱;最后根据傅里叶级数的原理来再次合成音乐。 关键词:音乐合成;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 rate dt = 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);

音乐合成_matlab

MATLAB音乐合成 一、简单音乐合成 1、根据音乐简谱和十二平均律计算出每个乐音的频率,在 MATLAB中生成幅度为 1,抽样频率为 8kHz 的正弦信号表示这些乐音,用 sound 播放合成的音乐 A=[174.61 196 220 246.94 261.62 293.66 329.63 349.23 392 440 493.88 523.25 587.33 659.25 698.45 739.99 783.99]; % 定义各调频率 fs=8000; %修改频率 pu=[1 1 1 3 5 5 5 5 6 6 6 8 5 4 4 6 6 3 3 3 3 2 2 2 2 5 5 1 1 1 3 5 5 5 5 6 6 6 8 5 4 4 4 6 3 3 3 3 3 2 2 2 3 1 ]; %在pu中只需输入乐谱数字,在下面B=A-什么什么那部分调整音调,省去了写频率的麻烦 p=0.5; last_time=[p/2 p/2 p/2 p/2 p/2 p/2 p/2 p/2 p/2 p/2 p/2 p/2 p p/2 p/2 p/2 p/2 p/2 p/2 p/2 p/2 p/2 p/2 p/2 p/2 p p p/2 p/2 p/2 p/2 p/2 p/2 p/2 p/2 p/2 p/2 p/2 p/2 p p/2 p/2 p/2 p/2 p/2 p/2 p/2 p/2 p/2 p/2 p/2 p/2 p/2 p ]; %各乐音持续时间为节省空间,用p代替 N=length(pu); f=zeros(1,N); B=A-5; for i=1:N f(i)=B(pu(i)); %f为各个乐音对应的频率,修改其它调 end point=fs*last_time; %各个乐音的抽样点数 total_point=sum(point); %这段音乐的总抽样点数 store=zeros(1,total_point); %用store向量来储存抽样点 m=1; for num=1:N %利用循环产生抽样数据,num表示乐音编号 t=1/fs:1/fs:point(num)/fs; %产生第num个乐音的抽样点 store(m:m+point(num)-1)=sin(2*pi*f(num)*t); %抽样点对应的幅值 m=m+point(num); end sound(store,8000); %播放出store plot(store); %画出store图像 2、除噪音,加包络 在1.1中听到有“啪”的杂声,这是由于相位不连续产生了高频分量,下面通过加包络来消噪 音。比较科学的包络如下图所示,每个乐音都经过冲激、衰减、持续、消失四个阶段。

控制系统的MATLAB仿真与设计课后答案

第二章 1>>x=[15 22 33 94 85 77 60] >>x(6) >>x([1 3 5]) >>x(4:end) >>x(find(x>70)) 2>>T=[1 -2 3 -4 2 -3] ; >>n=length(T); >>TT=T'; >>for k=n-1:-1:0 >>B(:,n-k)=TT.^k; >>end >>B >>test=vander(T) 3>>A=zeros(2,5); >>A(:)=-4:5 >>L=abs(A)>3 >>islogical(L) >>X=A(L) 4>>A=[4,15,-45,10,6;56,0,17,-45,0] >>find(A>=10&A<=20) 5>>p1=conv([1,0,2],conv([1,4],[1,1])); >>p2=[1 0 1 1]; >>[q,r]=deconv(p1,p2); >>cq='商多项式为 '; cr='余多项式为 '; >>disp([cq,poly2str(q,'s')]),disp([cr,poly2str(r,'s')]) 6>>A=[11 12 13;14 15 16;17 18 19]; >>PA=poly(A) >>PPA=poly2str(PA,'s') 第三章 1>>n=(-10:10)'; >>y=abs(n); >>plot(n,y,'r.','MarkerSize',20) >>axis equal >>grid on >>xlabel('n') 2>>x=0:pi/100:2*pi; >>y=2*exp(-0.5*x).*sin(2*pi*x); >>plot(x,y),grid on; 3>>t=0:pi/50:2*pi; >>x=8*cos(t); >>y=4*sqrt(2)*sin(t);

Matlab音乐合成实验报告

音乐合成实验 目录 摘要: 本文共有三大部分:第一部分,简单的音乐合成;第二部分,用傅里叶变换分析音乐;第三部分,基于傅里叶级数的音乐合成。由潜入深,一步一步分析了用MATLAB进行音乐合成的过程。通过本实验达到了加深对傅里叶级数和傅里叶分析的理解,熟悉对MATLAB基本使用的目标。 第一部分简单的合成音乐

1.1 合成《东方红》 根据《东方红》第一小节的简谱和十二平均律计算出该小节每个乐音的频率,在MATLAB 中生成幅度为1,抽样频率为8kHz 的正弦信号表示这些乐音,用soun d 播放合成的音乐 由图可知《东方红》的曲调定为F ,即1=F ,对应的频率为349.23Hz ,据此可以计算出其他乐音的频率,例如5对应的频率为 7/125349.232523.25f =?=,一次类推计算出第一小节各乐音对应的频率为 : 乐音 5 5 6 2 1 1 6 2 在确定了各乐音的频率之后需要确定每个乐音的持续时间。每小节有两拍,一拍的时间是0.5s ,因此各乐音的持续时间为: 乐音 5 5 6 2 1 1 6 2 而在MATLAB 中表示乐音所用的抽样频率为fs=8000Hz ,也就是所1s 钟内有8000个点,抽样点数的多少就可表示出每个乐音的持续时间的长短。用一个行向量来存储这段音乐对应的抽样点,在用sound 函数播放即可。 根据以上分析在MATLAB 中编写如下程序: sound_1_1.m

在MATLAB中运行sound_1_1.m,播放出了《东方红》的第一段,但是可以听出效果很不好,只能听出具有《东方红》的调子而已。 1.2 除噪音,加包络 在1.1中听到有“啪”的杂声,下面通过加包络来消噪音。 eα-因子,在最简单的包络为指数衰减。最简单的指数衰减是对每个音乘以t e-衰减,这种衰减方法使用的是相同速度的衰减,但是实验中首先加的是的 1.5t 发现噪音并没有完全消除,播放的音乐效果不是很好,感觉音乐起伏性不强。于是采用不同速度的衰减,根据乐音持续时间的长短来确定衰减的快慢,乐音持续时间越长,衰减的越慢,持续时间越短,衰减的越快。在1.1程序的基础上加上包络,编写如下程序: sound_1_21.m

最新使用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);听的时候发现在相邻乐音之间有杂音,这是由于相位不连续造成的。 你一定注意到(1) 的乐曲中相邻乐音之间有“啪”的杂声,这是由于相位不连续 (2)产生了高频分量。这种噪声严重影响合成音乐的质量,丧失真实感。为了消除它,我们可以用图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).*sin(2*pi*omg6*t8);m4=exp(-1*t2).*sin(2*pi*omg2*t2); m6=exp(-2*t4).*sin(2*pi*omg1*t4);m7=exp(-4*t8).*sin(2*pi*omg1*t8); m8=exp(-4*t8).*sin(2*pi*omg6l*t8);m9=exp(-1*t2).*sin(2*pi*omg2*t2);m=[m1 m2 m3 m4 m6 m7 m8 m9];sound(m);第一次我采用的指数衰减没有时间前面的系数,即每个都只乘exp(t),没有系数;后来根据不同节拍,更改了不同的衰减系数,这样声音听起来感觉更加圆润。 (3)请用最简单的方法将(2) 中的音乐分别升高和降低一个八度。(提示:音乐播

基于Matlab的音乐生成研究

实验研究 0 前言 近年来在网络上出现了许多虚拟歌姬,例如索尼的虚拟歌姬索尼子,以卡通、CG形象角色展现,结合声音由语音合成引擎(例如VOCALOID 2)为基础开发的虚拟歌手软件角色。最近腾讯视频也推出了《明日之子》节目,节目中惊现二次元虚拟选手“荷兹HeZ”,荷兹HeZ以一首原创歌曲《罐头》参赛,一出现就引起了广大网民的纷纷讨论。由此可见,音乐合成具有很大的娱乐意义。 音乐合成作为语音信号处理的一部分,属于Matlab软件的重要应用领域之一,Matlab具有强大的绘图和计算能力,掌握Matlab软件的使用,为今后电子信息方向的研究奠定了基础,于是便希望能自己动手操作在计算机上基于Matlab实现对自己喜欢的音乐的合成。 1 音乐生成技术的发展概述 计算机音乐[1],顾名思义,就是指利用计算机软件并配合MIDI键盘制作出开的音乐,他既能合成并表现音乐,同样也是一种新的音乐表现形式,近几年在国内外尤其火热。在我国近几年,计算机音乐也同样成为了一股潮流。 ■1.1 音乐生成技术的萌芽 早期的游戏音乐不像现在可以使用CD级别音质的高品质录音,因为当时的游戏机没有足够的技术支持。所以游戏音乐就需要合成,设计师们必须将基本的声音合成引擎植入到游戏机的硬件当中。芯片音乐由此产生,这也就是音乐生成技术的萌芽。 ■1.2 Matlab在音乐生成 Matlab(矩阵实验室)是MATrix LABoratory的缩写,其可用于算法开发,数据可视化,数据分析以及数值计算等等许多方面,是一款非常优秀的科技应用软件。 针对不同乐器演奏的音乐,用音频软件进行分析,可以得到不同乐器的音频信号的差别,然后便可通过Matlab对于音频信号进行模拟,来得到不同乐器的声音,实现虚拟演奏。 2 音乐生成研究的背景及意义 ■2.1 音乐生成的研究背景 电脑音乐技术的应用领域非常广泛,例如音乐创作,音乐教育和乐谱制作等,并大大提高了音乐的创作和制作的效率。同时人们对作曲,演奏的流程得以简化,并且可以参与创作和制作,能聆听欣赏自己创作的音乐。现代科技使得每个人成为音乐家的这个梦想得以成真。这有利于对音乐以及计算机技术的普及和推广,对未来的发展有着不可估量的作用。 ■2.2 音乐生成的娱乐意义 目前随着技术的进步和发展,已经出现了许多虚拟歌手,在这其中最有名的是初音未来。它是由CRYPTON FUTUREMEDIA利用YAMAHA的VOCALOID系列语音合成程序进行卡法的音频源。这款软件为人工合成技术带来了巨大变革,但有些部分仍需要进一步完善。“虚拟歌姬”和“赫兹HeZ”虚拟歌手的出现,也给娱乐圈带了了很大活力,由此可见,音乐合成的研究具有巨大的娱乐意义。 ■2.3 音乐生成对音乐创作的意义 传统的音乐创作是一个长期的,复杂的,需要多方合作的一项工作。然而通过计算机生成音乐,作曲家自己一个人便可完成这项工作,同时也可在创作过程中更好地体现自己的音乐思想。制作人在创作过程中也可不断的对自己的音乐进行修改,创作音乐的效率便得到了提高。 3 音乐生成的研究方法 ■3.1 实现音乐生成 Matlab中实现音乐的播放可由sound 函数实现,其中有三个变量(Y,fs,bits)分别代表着输入信号、采样率、比特率。此处采样率的设置为fs=44100.输入信号Y一般是一个正弦波,如A·sin(2·pi·w·t)。其中A控制着声音的大小,w控制着声音的高低,t的范围控制着声音的长短。比特率采用默认值。此处不涉及对声音音色与音质的编辑。 声音的频率如表1所示,音高和频率是指数的关系,他们满足下面的关系,p是音高,f是频率。f=440x2(p-69)/12,音高每上升一个半音,p+1。 通过对以上知识的了解,我们便可以利用matlab来创作音乐了。 基于Matlab的音乐生成研究 张子豪 (徐州市撷秀中学,江苏徐州,221000) 摘要:本论文介绍了音乐生成技术的历史以及广阔的应用领域,通过查阅音乐十二平均律知识,并借助matlab软件进行了研究和设计,完成了对于歌曲despacito基于matlab的初步合成。同时,还对歌曲的音色方面因素,进行了分析与探讨,对进一步的深入研究提供了发展方向。关键词:Matlab;音乐合成 www?ele169?com | 27

相关文档
最新文档