一、获取代码方式

获取代码方式1:
【音乐】基于matlab演奏《过火》【含Matlab源码 1875期】

获取代码方式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源码 1875期】相关推荐

  1. 【Matlab生物电信号】生物电信号仿真【含GUI源码 684期】

    一.代码运行视频(哔哩哔哩) [Matlab生物电信号]生物电信号仿真[含GUI源码 684期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1]董兵,超于毅,李 ...

  2. 【Matlab语音分析】语音信号分析【含GUI源码 1718期】

    一.代码运行视频(哔哩哔哩) [Matlab语音分析]语音信号分析[含GUI源码 1718期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1]韩纪庆,张磊,郑铁 ...

  3. 【Matlab验证码识别】遗传算法和最大熵优化+大津法(OTSU)+自定义阈值数字验证码识别【含GUI源码 1694期】

    一.代码运行视频(哔哩哔哩) [Matlab验证码识别]遗传算法和最大熵优化+大津法(OTSU)+自定义阈值数字验证码识别[含GUI源码 1694期] 二.matlab版本及参考文献 1 matlab ...

  4. 【Matlab人脸识别】BP神经网络人脸识别(含识别率)【含GUI源码 891期】

    一.代码运行视频(哔哩哔哩) [Matlab人脸识别]BP神经网络人脸识别(含识别率)[含GUI源码 891期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1] ...

  5. 【Matlab人脸识别】形态学教室人数统计(带面板)【含GUI源码 1703期】

    一.代码运行视频(哔哩哔哩) [Matlab人脸识别]形态学教室人数统计(带面板)[含GUI源码 1703期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1]孟 ...

  6. 【Matlab人脸识别】人脸实时检测与跟踪【含GUI源码 673期】

    一.代码运行视频(哔哩哔哩) [Matlab人脸识别]人脸实时检测与跟踪[含GUI源码 673期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1]孟逸凡,柳益君 ...

  7. 【Matlab图像融合】小波变换遥感图像融合【含GUI源码 744期】

    一.代码运行视频(哔哩哔哩) [Matlab图像融合]小波变换遥感图像融合[含GUI源码 744期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1] 包子阳,余 ...

  8. 【Matlab语音加密】语音信号加密解密(带面板)【含GUI源码 181期】

    一.代码运行视频(哔哩哔哩) [Matlab语音加密]语音信号加密解密(带面板)[含GUI源码 181期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1]韩纪庆 ...

  9. 【Matlab身份证识别】身份证号码识别【含GUI源码 014期】

    一.代码运行视频(哔哩哔哩) [Matlab身份证识别]身份证号码识别[含GUI源码 014期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1] 蔡利梅.MAT ...

最新文章

  1. 观点|重磅出炉!29页《业内观点:机器人行业的未来》
  2. python3.6.5安装教程-Centos7 安装Python3.6.5步骤
  3. Dataset:机器学习和深度学习中对数据集进行高级绘图(数据集可视化,箱线图等)的简介、应用之详细攻略——daidingdaiding
  4. Kaldi内存泄漏问题排查
  5. 手机上用的是的WAP协议 电脑上的是HTTP协议 这两个有什么不同
  6. 高阶篇:8.1)开模前评审及提交资料;
  7. LeetCode MySQL 1511. Customer Order Frequency
  8. 一个DirectSound的例子
  9. dhcp snooping华为_使用DHCP snooping 功能防止DHCP Server仿冒者攻击(华为交换机)
  10. gitee怎么仓库间传文件_薄书的Gitee 码云使用教程学习纪录 - 薄书
  11. [Linux]学习笔记3:用户及文件权限管理
  12. k8s Container资源控制: requests和limits
  13. 团队作业——团队项目Alpha版本发布
  14. Android安卓——Android程序生命周期
  15. 基于大数据分析技术实现对信用卡盗刷的预防
  16. MATLAB中求传递函数代码
  17. POJ 1915(双向广搜)
  18. 机器学习数据集(训练集、测试集)划分方法
  19. BackTrack5完全配置
  20. 自己写的java excel导出工具类

热门文章

  1. 梦幻西游卖号显示该服务器没有角色,《梦幻西游》第一神豪秦奋要卖号了,35个角色价值过亿现四折出售,是因为没钱了吗?...
  2. 这款网红编辑器竟然能约会谈恋爱,找对象不看脸,主要看编程水平!
  3. PC版万能图片格式转换工具
  4. 天天拍车运营主体公司董事发生变更:邹钧退出,邵海峰接任
  5. sql.gz还原mysql_mysql 数据备份还原
  6. 多媒体技术 || 自适应的霍夫曼编码与原始的霍夫曼编码的比较
  7. 《雷曼大冒险》之游戏的分析与设计
  8. 笔记:caption标签中的文字为什么会是竖着的。
  9. C# 生成校验解析token
  10. dnf服务器炸团门票怎么找回,dnf超级福利!自助门票补偿系统上线,打团掉线献祭已成过去式...