音乐基于matlab演奏《青花瓷》含Matlab源码 1873期
Posted 海神之光
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了音乐基于matlab演奏《青花瓷》含Matlab源码 1873期相关的知识,希望对你有一定的参考价值。
一、获取代码方式
获取代码方式1:
【音乐】基于matlab演奏《青花瓷》【含Matlab源码 1873期】
获取代码方式2:
通过订阅紫极神光博客付费专栏,凭支付凭证,私信博主,可获得此代码。
备注:
订阅紫极神光博客付费专栏,可免费获得1份代码(有效期为订阅日起,三天内有效);
二、音乐生成研究简介
1 前言
近年来在网络上出现了许多虚拟歌姬, 例如索尼的虚拟歌姬索尼子, 以卡通、CG形象角色展现, 结合声音由语音合成引擎 (例如VOCALOID 2) 为基础开发的虚拟歌手软件角色。最近腾讯视频也推出了《明日之子》节目, 节目中惊现二次元虚拟选手“荷兹He Z”, 荷兹He Z以一首原创歌曲《罐头》参赛, 一出现就引起了广大网民的纷纷讨论。由此可见, 音乐合成具有很大的娱乐意义。
音乐合成作为语音信号处理的一部分, 属于Matlab软件的重要应用领域之一, Matlab具有强大的绘图和计算能力, 掌握Matlab软件的使用, 为今后电子信息方向的研究奠定了基础, 于是便希望能自己动手操作在计算机上基于Matlab实现对自己喜欢的音乐的合成。
2 音乐生成技术的发展概述
计算机音乐, 顾名思义, 就是指利用计算机软件并配合MIDI键盘制作出开的音乐, 他既能合成并表现音乐, 同样也是一种新的音乐表现形式, 近几年在国内外尤其火热。在我国近几年, 计算机音乐也同样成为了一股潮流。
2.1音乐生成技术的萌芽
早期的游戏音乐不像现在可以使用CD级别音质的高品质录音, 因为当时的游戏机没有足够的技术支持。所以游戏音乐就需要合成, 设计师们必须将基本的声音合成引擎植入到游戏机的硬件当中。芯片音乐由此产生, 这也就是音乐生成技术的萌芽。
2.2 Matlab在音乐生成
Matlab (矩阵实验室) 是MATrix LABoratory的缩写, 其可用于算法开发, 数据可视化, 数据分析以及数值计算等等许多方面, 是一款非常优秀的科技应用软件。
针对不同乐器演奏的音乐, 用音频软件进行分析, 可以得到不同乐器的音频信号的差别, 然后便可通过Matlab对于音频信号进行模拟, 来得到不同乐器的声音, 实现虚拟演奏。
3 音乐生成研究的背景及意义
3.1音乐生成的研究背景
电脑音乐技术的应用领域非常广泛, 例如音乐创作, 音乐教育和乐谱制作等, 并大大提高了音乐的创作和制作的效率。同时人们对作曲, 演奏的流程得以简化, 并且可以参与创作和制作, 能聆听欣赏自己创作的音乐。现代科技使得每个人成为音乐家的这个梦想得以成真。这有利于对音乐以及计算机技术的普及和推广, 对未来的发展有着不可估量的作用。
3.2音乐生成的娱乐意义
目前随着技术的进步和发展, 已经出现了许多虚拟歌手, 在这其中最有名的是初音未来。它是由CRYPTON FUTUREMEDIA利用YAMAHA的VOCALOID系列语音合成程序进行卡法的音频源。这款软件为人工合成技术带来了巨大变革, 但有些部分仍需要进一步完善。“虚拟歌姬”和“赫兹He Z”虚拟歌手的出现, 也给娱乐圈带了了很大活力, 由此可见, 音乐合成的研究具有巨大的娱乐意义。
3.3音乐生成对音乐创作的意义
传统的音乐创作是一个长期的, 复杂的, 需要多方合作的一项工作。然而通过计算机生成音乐, 作曲家自己一个人便可完成这项工作, 同时也可在创作过程中更好地体现自己的音乐思想。制作人在创作过程中也可不断的对自己的音乐进行修改, 创作音乐的效率便得到了提高。
4 音乐生成的研究方法
4.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来创作音乐了。
表1 声音的频率
4.2 傅里叶级数实现音乐生成
要想实现音乐的合成, 首先应了解声音的三个特性:音调, 响度和音色[。
音调就是音的高低, 影响音调的主要因素即声波的频率。响度是音的强弱, 影响响度的主要因素即声波的振动幅度。音色的变化是由音乐波形中谐波的作用产生的, 不同的乐器会有不同的音色, 所以谐波也各不相同。
4.2.1音调
每一首乐曲都有一个音调, 每个唱名 (do re mi) 并未固定基波频率, 音调则确定了乐曲中等唱名的基波频率值。例如乐谱为1=C, 代表着音调为C调则“1 (do) ”的基波频率是261.6Hz, 若乐谱为1=E则“1 (do) ”频率是239.6Hz, 乐谱为1=G则“1 (do) ”的频率是392.1Hz, “3 (mi) ”的频率是493.9Hz。
4.2.2音色
音色的不同是由于谐波的作用产生的, 在音乐领域中我们往往把谐波称作泛音。当我们确定了乐谱的音调之后, 我们仅仅指定了唱名的基波频率, 而听不出来声音是由什么乐器发出的, 仅仅只有单调的do re mi。而且不同乐器, 他的包络波形也各不相同。由于音乐的包络波形十分复杂, 我们会将复杂的包络函数近似直线化, 所以音乐波形的包络通常都是折线型。
4.2.3十二平均律
十二平均律, 又称十二等程律, 是一种音乐的定律方法, 将一个八度平均分成十二等份, 每等分称为半音, 是最主要的调音法。由于“五度相生律”和“十二平均律”发音非常相似而且十二平均律能够解决转调问题, 所以, 它被广泛应用在键盘乐器与交响乐队中。
为了便于分析以上三个特征, 我们就需要对信号的频谱进行分析, 也就是利用傅里叶变换, 得出该音乐信号的频谱结构, 提取它的频谱特征。
要想合成一段音乐, 需要了解该段音乐的基波频率、谐波构成等。因此必须进行傅里叶分析[4]。
利用该公式, 可以计算任意频点的傅里叶变换值。
4 乐谱解析原理
本实验选取歌曲despacito进行解析并合成创作。首先来介绍一下乐谱的一些基本知识, 如图1所示:歌曲本身的节拍为四分之一拍, 音符下有一条横线的为八分之一拍, 两条横线即为十六分之一拍, 节拍可理解为速率。
在每个音符的下方的小黑点表示音调降一个八度, 两个则表示降两个八度。
每个音符后方的小点表示这个音符再重复一遍但提高了一个节拍 (如四分之一拍变为八分之一拍) 。而如果音符后是一个横线, 则表示这个音符再重复一遍, 节拍相同。
因为本首歌曲曲调为D调, 所以根据12平均律的计算方法, 首先A=440Hz。12个半音阶相邻关系是12 2 (122≈1.0594631) 然后B=440Hz x 1.0594631=466.16Hz B=466.16Hz x 1.0594631=493.88Hz C=493.88Hz x1.0594631=523.25Hz所以D=554.36Hz。
三、部分源代码
fs = 44100; % 采样率
dt = 1/fs;
T16 = 0.25;
t16 = [0:dt:T16];
[temp k] = size(t16);
t8=linspace(0,2*T16,2*k);
t8fd=linspace(0,3*T16,3*k);
t4=linspace(0,4*T16,4*k);
t4fd=linspace(0,5*T16,5*k);
t2fd=linspace(0,7*T16,7*k);
t2=linspace(0,6*T16,6*k);
[temp i] = size(t4);
[temp j] = size(t8);
四、运行结果
只有音乐效果,无视觉效果
五、matlab版本及参考文献
1 matlab版本
2014a
2 参考文献
[1] 张子豪.基于Matlab的音乐生成研究[J].电子制作. 2018,(16)
3 备注
简介此部分摘自互联网,仅供参考,若侵权,联系删除
以上是关于音乐基于matlab演奏《青花瓷》含Matlab源码 1873期的主要内容,如果未能解决你的问题,请参考以下文章
音乐基于matlab演奏《天空之城》含Matlab源码 1874期
游戏基于matlab GUI音乐闹钟设计含Matlab源码 1105期
游戏基于matlab GUI音乐时钟设计含Matlab源码 1104期
游戏基于matlab GUI贪吃蛇游戏(难度地图音乐)含Matlab源码 1160期