matlab音乐_MATLAB乐器(如何用matlab演奏音乐)

matlab音乐_MATLAB乐器(如何用matlab演奏音乐)_第1张图片

近期在家无聊,刷B站视频的时候发现有up上传了matlab制作的音乐,效果很是有趣。顺带吐槽一下,手机端的B站总是推荐莫名其妙的内容,但是通过搜索关键词,你又总能搜到不错的视频,我试了几个教学课程,视频质量都很高。

1 代码的简要介绍

函数sound(y, Fs, nBits),用于把信号数据的矩阵转换成声音,三个参数分别代表输入信号,采样频率和比特率。标准CD格式为44.1k的采样频率,16位量化位数。所以我们一般设置Fs=44100,nBits暂且默认。

2 乐理小课堂

函数sound(y, Fs, nBits)中的y作为包含声音信息的主角,理论上我们可以自由发挥得到任何声音。

为方便理解,看下图,从上往下,我们称它为低音,中音和高音部分。(当然这么多可能不够,大家可以通过下表自行添加。)

matlab音乐_MATLAB乐器(如何用matlab演奏音乐)_第2张图片

这里我们把钢琴中的CDEFGAB七个音设置到中音部分的1234567中去。

matlab音乐_MATLAB乐器(如何用matlab演奏音乐)_第3张图片

根据这张图,中音部分的1为sin(2*pi*261.63 *t),2为sin(2*pi*293.66 *t)。此处t为音长,暂且取0.5s。

于是我们有了如下这个:

matlab音乐_MATLAB乐器(如何用matlab演奏音乐)_第4张图片

matlab音乐_MATLAB乐器(如何用matlab演奏音乐)_第5张图片

2a2a27fe0fb0df15e30b601324678989.png

简谱来源:http://www.qupu123.com/jipu/p325320.html

但是呢,试运行了下,效果并不是很好,仅仅是机械般地播放出了声音,而且还没有0的停止部分。

下面我简要介绍一下什么是44拍。首先你可以看到下图左上的四分之四,这说明每一个小节都是4拍,就是红色方框内的音符都是4拍。比如 |1 1 1 1|就是4拍。

♩=84这里表示每分钟84拍,那么一拍的时间为60/84约等于0.7143秒。(实际上我把t设置的很小)

matlab音乐_MATLAB乐器(如何用matlab演奏音乐)_第6张图片

那么小白可能就会问了,红框里面有11个数字呀~

实际上,|1 1 1 1|里面的每个数字都是四分之一音符,每四分之一音符为一拍,四个四分之一音符不就四拍了嘛。那|1 1 1 1 1 1 1 1|也是四拍,它是由8个八分之一音符构成的一小节。

这里红色方框内,加起来还是一样的。

matlab音乐_MATLAB乐器(如何用matlab演奏音乐)_第7张图片

更简单的来讲,就是数字底下画一条线,就比不划线快一倍,划两条线就再快一倍,在我们的代码里,是如下的转换关系。

0d34ec62e961226cd98d69d6a6d816b3.png

6d6257f1d528fd1bf307a8b5160d9d2e.png

3 所以单纯的发出声音是不可取的

于是我们添加0这个休止符的部分,并且增加了八分之一音符和十六分之一音符的部分。

matlab音乐_MATLAB乐器(如何用matlab演奏音乐)_第8张图片

可是即便如此,播放的声音也显得不和谐,于是我们需要引入这三行代码,借此让声音播放更平滑。

mod4 = sin(pi*t/t(end));mod8 = sin(pi*t_8/t_8(end));mod16 = sin(pi*t_16/t_16(end));

4 让声音更好听一些

经过测试,我修改了2*pi中的2,并且发现这样“调参”效果还好。

matlab音乐_MATLAB乐器(如何用matlab演奏音乐)_第9张图片

那么如此一来,剩下的工作就是严格根据简谱,把音符输入进去就好了。

…………

…………

…………(有想自己尝试动手的同学,可能需要补一下乐理的基础知识)

…………

…………

5 播放心做し

这首歌几乎全是八分之一音符,其他的歌曲应该是以四分之一音符居多,大家可以修改源代码中此处的4,通过多次修改找到适合的音色。

matlab音乐_MATLAB乐器(如何用matlab演奏音乐)_第10张图片

码完后加上注释总共161行。

在播放的时候输入clear sound可以停止播放。

matlab音乐_MATLAB乐器(如何用matlab演奏音乐)_第11张图片

matlab音乐_MATLAB乐器(如何用matlab演奏音乐)_第12张图片

6 总结

matlab音乐_MATLAB乐器(如何用matlab演奏音乐)_第13张图片

大家可以自行下载简谱,根据简谱的数字,一节一节输入成代码,自行演奏其他歌曲,后台回复matlab乐器关键词可以获得文中的代码。

后台回复

matlab乐器

5ce558f410ae27f7415af70062654eeb.png

c78cc71d9e55f6d2876d15a4c3452cf8.png 往期推荐

负责代码的同学都应该知道的事情,数学建模应该站在巨人的肩膀上

[入门向]国赛美赛数学建模竞赛matlab速成方法(如何套用改编matlab代码,以三维插值为例)

海量数模教程资料,涵盖95%数学建模竞赛内容汇总,无需转发可直接下载

数模论文写作排版及其技巧

流程图怎么做?果断打开VISIO?其实还有PPT

[新手向]建模的全过程是什么

如何快速搞定论文的参考文献

在数模国赛不明查美术建模前,我们都是如何水奖的?

[纯(小)白向]数学建模美赛LATEX模板应用教程

【新手向】为什么你的MATLAB运行的结果图那么丑,你是不是忘了点那个按钮

数模写作嫌知网论文太少,外文SCI怎么下?

英语才过六级,数模美赛论文怎么写好?

数学建模国赛出题趋势及历史

2019年度大学本科竞赛及考试索引

matlab音乐_MATLAB乐器(如何用matlab演奏音乐)_第14张图片 ba7d800cd70238586003a3456c0a6bae.png

数学建模教程

ID:Math_Modeling

matlab音乐_MATLAB乐器(如何用matlab演奏音乐)_第15张图片

涵盖大学的各个方面,数模入门到轻松拿奖,萌新如何成长成为大佬,升学是保研还是出国,英语该怎么学,其他竞赛怎么办,资料该怎么找,请关注这里~

你可能感兴趣的:(matlab音乐)