Matlab音乐演奏系列:第一期‌

皆さん こんにちは~ シコミンです!

17年年初的时候看到了@huolabaga做的matlab演奏卡农,觉得挺有意思的,就自己花了点零碎时间做了一个Matlab演奏钢琴的程序,其中思路大致借鉴了@huolabaga桑的。当时是随便写的,最近翻出来看的时候发现我当时写得真是一团糟...

最近事情不多,就花点时间分几次把内容好好梳理一下吧。

cut-off

讲到音乐演奏就得提下十二平均律

十二平均律也叫作“十二等程律”,一个八度分为十二个音,每一个叫做半音音程,每份只占半个音。通俗点说就是我们收悉的do、re、mi、fa、so、la、ti被分为12个等份,每份半个音,其中特殊的两个地方是3(mi)与4(fa)还有7(ti)与1(do)之间本来就是半个音差距,学过二胡的同学都知道,拉mi和fa两个音的时候,手指是贴在一起的,其他音都是隔开一个手指。

十二平均律

“十二平均律”将八度音程均分为12等分。每升高一个半音,那么对应的音符就升高2^(1/12) 。

了解了十二平均律,我们就开始愉快地敲代码了~

Matlab代码:

load C5-piano.mat;

%导入钢琴音色的数据:data   fs

original_note=8;%数值音符(取值自己定),之后根据12平均律进行计算具体八度音符

我的数值音符对照表(可以自己设计,不必照这个表)

建议为方便使用可以把0设置成休止符,下面的其他音符一次往后减一

我的对照表

badu=ceil(original_note/12);%数值音符除以12得所在八度

note=mod(original_note,12);%数值音符对12取余得实际所在八度具体第几个音符

%最后音调取决于音符note和八度badu;

if note==0               %如果note==0则降低一度

    badu=badu-1;

end

fs_c=fs*2^(note/12)*2^(badu-2);%整体降2个八度

上面那个式子

sound(data(1:55000,:),fs_c);  %改变original_note的值播放出来听一听

cut-off

 第一期就先到这吧。

QR Code
微信扫一扫,欢迎咨询~

联系我们
武汉格发信息技术有限公司
湖北省武汉市经开区科技园西路6号103孵化器
电话:155-2731-8020 座机:027-59821821
邮件:tanzw@gofarlic.com
Copyright © 2023 Gofarsoft Co.,Ltd. 保留所有权利
遇到许可问题?该如何解决!?
评估许可证实际采购量? 
不清楚软件许可证使用数据? 
收到软件厂商律师函!?  
想要少购买点许可证,节省费用? 
收到软件厂商侵权通告!?  
有正版license,但许可证不够用,需要新购? 
联系方式 155-2731-8020
预留信息,一起解决您的问题
* 姓名:
* 手机:

* 公司名称:

姓名不为空

手机不正确

公司不为空