matlab频谱合成音乐《追光者》

选择你喜欢的一首钢琴曲,下载并分析曲谱,用matlab工具用频谱合成方法完成这首曲子的音乐合成。

前言:此文章为个人使用Matlab合成一首《追光者》音乐,且带混响和声效果

文章目录

  • 一.题目
  • 二.要求
  • 三.课程设计目的
  • 四.概要设计
  • 五.详细设计
  • 六.测试分析
  • 七.Matlab频谱合成音乐实验源文件

一.题目

选择你喜欢的一首钢琴曲,下载并分析曲谱,用matlab工具用频谱合成方法完成这首曲子的音乐合成。

二.要求

1、研究音乐合成的原理
2、比较合成后的音乐与原始音乐的频谱区别
3、提出逼近原始音乐的方法,并编程实现。
4、提交电子版课程设计报告和matlab可执行文件
5、若加入混响、和声等效果可以加附加分
5、每位同学提交一份压缩文件,命名格式如下:学号+姓名+曲名名

三.课程设计目的

1.研究音乐合成的原理
2.比较合成后的音乐与原始音乐的频谱区别
3.提出逼近原始音乐的方法,并编程实现。

四.概要设计

通过网上相关资料的查询,让我对使用matlab合成音乐有了一定的了解和思路。声音是一种波,在matlab里面只要将音乐的波形绘制出来,就可以使用sound()函数将其播放。以下是本次课程设计音乐合成的思路:
1.首先需要下载目标音乐的简谱,利用乐谱的音阶,拍子等基本乐理知识,按铺子对应的每个音阶输出频率,对应每个音阶的街拍。
2.设置采样率,采样率是一秒的声音里我们采样了多少个点(matlab默认的采样率是8192,播放区段是1000Hz384000Hz)。人耳能听到的声音范围是202000Hz,根据采样定理采样频率fs应该大于40000Hz,采样频率越高则采样带来的失真就会越小,但音频文件也会更大。
3.设置输入信号,通过网上学习,发现音乐合成的输入信号一般用正弦波,即Y=Asin(2piwt)。其中,A控制声音的大小,w控制声调的高低,t的范围控制声音的长短。
4.对照十二平均律表谱出音乐,在代码里编写音乐的频率合集以合成音乐。
在这里插入图片描述
5.对信号进行包络处理。正常的声音发出来是有衰减的,要想让声音更自然连贯地播放需要对信号做包络处理,否则我们只能实现单个音的特定时长的发声。
6.增加混音效果,将左右声道合并。
7.将合成的音乐导出,保存为wav音乐格式,这里使用的是audiowrite()文件。
8.绘制合成音乐的频谱。

音乐合成的编程程序流程图如下:
在这里插入图片描述

五.详细设计

1.选择乐曲并下载,利用matlab工具查看下载音乐的频谱。
在此次课程设计中,我选择的是一首比较轻缓舒适的曲子,这里选择的是歌曲《追光者》的钢琴伴奏,下载平台是网易云音乐,下载的歌曲格式为mp3。
在这里插入图片描述
matlab绘制原音乐频谱图的程序如下:
在这里插入图片描述
该代码的运行结果如下:
在这里插入图片描述
可以看到左右声道频谱图几乎相同,有略微差别。

2.合成音乐的参数准备
在这里插入图片描述

3.根据十二律表绘制各个音的频率:
在这里插入图片描述
这里频率的生成是按照以下十二律表生成的:
C、D、E、F、G、A分别对应前八度的do,re,mi,fa,so,la,xi,从左往右音调依次变高。将频率按列表保存方便后续合成音乐的编写。
在这里插入图片描述
4.根据音乐的曲谱和第3步中音的频率编写歌曲
由于我选择的是歌曲《追光者》的伴奏音乐,因此在歌曲的合成代码中我编写了两个部分,一个是歌曲的唱音,一个是歌曲背后的伴奏音乐,参考的曲谱为百度搜索得到。代码部分如下:
在这里插入图片描述
在这里插入图片描述
5.设置输入信号:
为了将音乐演奏出来需要先将合成音乐的信号创建出来,这里将唱音部分和伴奏部分的输入信号分开设置,在后续音乐的合成中同时演奏出来。
在这里插入图片描述
6.编写包络信号,设置包络:
为了减小信号的衰减,需要编写包络函数。
在这里插入图片描述
7.将编写的合成音乐增加混音效果并结合起来。
唱音和伴奏均为双声道,将唱音和伴奏结合起来再演奏。
在这里插入图片描述
8.导出音乐并保存
由于合成的音乐是双声道,一开始我将音乐的左右声道分别导出,但导出的声音聆听效果基本相同,听不出差别。
在这里插入图片描述
9.绘制合成音乐的频谱图:
合成的音乐是两个声道,这里分别绘制左声道和右声道。
在这里插入图片描述
在这里插入图片描述
由上图可以看出,合成的音乐左声道和右声道的频谱图并无差别。

六.测试分析

代码正常运行,且播放的音乐也正常,且合成音乐导出的.wav文件也正常。
出现的问题:点击运行之后代码运行较为缓慢,需等待30s左右音乐才开始播放,这里我用的是MATLAB R2021a软件,问题出现的原因尚不明确。
如下图所示为合成音乐和原音频音乐的频谱对比:
在这里插入图片描述
可以看到,我代码合成的音乐频谱的幅值更高,音乐的音调更高,频率也更高。

七.Matlab频谱合成音乐实验源文件

Matlab频谱合成追光者

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/229643.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

GC算法和常见垃圾回收器

一、GC算法 GC Algorithms(常见的垃圾回收算法),找到这个垃圾之后怎么进行清除的算法 。GC常用的算法有三 种如下: 1:Copying(拷贝) 2:Mark-Sweep(标记清除) 3:Mark-Compact(标记压缩) 第一个是Copying(拷…

VUE本地idea启动

安装yarn(也可以用npm) 问题:yarn : 无法加载文件 C:\Users\xx/yarn.ps1,因为在此系统上禁止运行脚本 解决办法:管理员身份运行【 PowerShell】,然后执行【Set-ExecutionPolicy RemoteSigned】&#xff0c…

数组元素积的符号

数组元素积的符号 描述 : 已知函数 signFunc(x) 将会根据 x 的正负返回特定值: 如果 x 是正数,返回 1 。如果 x 是负数,返回 -1 。如果 x 是等于 0 ,返回 0 。 给你一个整数数组 nums 。令 product 为数组 nums 中所有元素值的…

【华为数通HCIP | 网络工程师】821刷题日记-BFD和VRRP 及重点(1)

个人名片: 🐼作者简介:一名大三在校生,喜欢AI编程🎋 🐻‍❄️个人主页🥇:落798. 🐼个人WeChat:hmmwx53 🕊️系列专栏:🖼️…

解决electron-builder打包不成功只能输出tgz文件的问题

现象: 对应项目里配的指令: 但就是死活不成功,只能输出tgz压缩文件。 最后一咬牙下载了官方的electron-quick-start拿来试试,结果还是一样。 一时间没想法了。 后来突然脑袋灵光一闪,去他妈的直接npx 执行看看&…

基于模块暴露和Hilt的Android模块化方案

ModuleExpose 项目地址:https://github.com/JailedBird/ModuleExpose 序言 Android模块化必须要解决的问题是 如何实现模块间通信 ?而模块之间通信往往需要获取相同的实体类和接口,造成部分涉及模块通信的接口和实体类被迫下沉到基础模块&…

力扣hot100 最大子数组和 动态规划 分治 无后效性 子问题划分

👨‍🏫 题目地址 无后效性 为了保证计算子问题能够按照顺序、不重复地进行,动态规划要求已经求解的子问题不受后续阶段的影响。这个条件也被叫做「无后效性」。换言之,动态规划对状态空间的遍历构成一张有向无环图,遍…

SpringBoot+网易邮箱登录注册

文章目录 SpringBoot网易邮箱登录注册pom.xmlapplication.ymlsqlUserEmail.javaUserEmailMapper.javaUserEmailMapper.xmlEmailService.javaUserEmailService.javaUserEmailServiceImpl.javaUserEmailController.javaregister1.html 编写前参考 SpringBoot网易邮箱登录注册 po…

vscode注释插件「koroFileHeader」

前言 在vscode上进行前端开发,有几个流行的注释插件: Better CommentsTodo TreekoroFileHeaderDocument ThisAuto Comment Blocks 在上面的插件中我选择 koroFileHeader 做推荐,原因一是使用人数比较多(最多的是 Better Commen…

【Java】文件I/O-文件系统操作

导读 在文件I/O这一节的知识里,对文件的操作主要分为两大类: ☑️针对文件系统进行的操作 ☑️针对文件内容进行的操作 针对文件系统进行的操作主要是对Java中的File类进行操作。这篇文章里,博主就来带大家看看Java中针对文件系统的一些常…

echarts修改tooltip默认的圆点图标为其他样式

业务需求,默认是圆点,需要把线的由圆点改为线 红色线是理论,点是历史理论,绿色线是实际, 点是历史实际,在series里的顺序也是这样排的。 打印出来的params里的marker就是圆点,改这段代码就可以了…

电脑格式化了怎么恢复原来的数据?您可以这样做

电脑是我们日常生活和工作中不可或缺的工具,然而,在一些情况下我们可能需要进行电脑格式化,比如为了清理系统垃圾、解决系统故障等。然而,格式化会导致所有数据被删除,给用户带来不便和困扰。本文将介绍电脑格式化了怎…