这两天在家实在没事做,刚好上学期做了一个关于MATLAB演奏音乐的视频(av69133226),有的小盆友对这个挺感兴趣,就把这个视频使用的源代码分享一下吧(顺便一提,这个源码改编后还可以演奏其他乐曲)
MATLAB R2018a(来源于百度)
软件:MATLAB(这个就不多介绍了,玩过数学建模的都知道)
曲子:Don’t Know What To Do-blackpink(没别的意思,就是觉得这首歌不错)
代码:代码有两个,第一个key函数是主函数要用到的函数,运行主函数之前要以m文件形式保存到目标文件夹下面,第二个是主函数
代码的说明:其实代码很简单,其中形如“e3_2=key(52, 2, fs)”的代码,表示先定义音符,这样,e3_2就表示2分音符的e3(key括号后面的52是频率记号,2表示2分音符,具体可以百度),将所有可能会用到的音符都预先列出,把它们按乐曲的规定排列(分为不同的part),最后在para1中演奏出来即可。代码里面只描绘了主旋律,大家有兴趣的话也可以添加伴奏。
源码如下:(受专栏长度的限制,主代码有几行分成两行了)
key.m:
function g=key(p, n, fs) t=0 : 1/fs : 2/n; g=sin(2*pi* fre(p) *t);
主函数:
clc clear fs=44100; t=0:1/fs:0.5; e3_2=key(52, 2, fs); %表示2分音符的e3 a3_2=key(57, 2, fs); a4_2=key(69,2,fs); f4_2=key(65,2,fs); b4_2=key(71,2,fs); c4_2=key(60, 2, fs); e4_2=key(52, 2, fs); g3_2=key(55, 2, fs); d4_2=key(62, 2, fs); e4_2=key(64, 2, fs); g4_2=key(67, 2, fs); e4_4=key(52, 4, fs); g3_4=key(55, 4, fs); a3_4=key(57, 4, fs); b3_4=key(59, 4, fs); b4_4=key(71, 4, fs); c4_4=key(60, 4, fs); d4_4=key(62, 4, fs); e4_4=key(64, 4, fs); f4_4=key(65, 4, fs); g4_4=key(67, 4, fs); a4_4=key(69, 4, fs); e3_8=key(52, 8, fs); g3_8=key(55, 8, fs); a3_8=key(57, 8, fs); b3_8=key(59, 8, fs); c4_8=key(60, 8, fs); d4_8=key(62, 8, fs); e4_8=key(64, 8, fs); f4_8=key(65, 8, fs); g4_8=key(67, 8, fs); a4_8=key(69, 8, fs); b4_8=key(71, 8, fs); e3_8=key(52, 8, fs); g3_8=key(55, 8, fs); a3_8=key(57, 8, fs); b3_8=key(59, 8, fs); c5_8=key(72, 8, fs); c5_4=key(72, 4, fs); c5_2=key(72, 2, fs); d5_4=key(74, 4, fs); d5_2=key(74, 2, fs); d5_8=key(74, 8, fs); e5_4=key(76, 4, fs); e5_2=key(76, 2, fs); e5_8=key(76, 8, fs); g5_8=key(79, 8, fs); g5_4=key(79, 4, fs); g5_2=key(79, 2, fs); a5_8=key(81, 8, fs); b4_8=key(71, 8, fs); part1=[ c4_4 g4_4 g4_4 g4_4 c4_8 c4_8 g4_8 g4_8 g4_8 g4_8 a4_4 c4_8 e4_2 e4_8 a4_4 c4_8 e4_2 e4_2]; part2=[ c4_4 g4_4 g4_4 g4_4 c4_8 c4_8 g4_8 g4_8 g4_8 g4_8 a4_4 c4_8 f4_4 e4_8 d4_4 a4_4 c4_8 f4_4 e4_8 d4_2]; part3=[ c4_4 g4_4 g4_4 g4_4 c4_8 c4_8 g4_8 g4_8 g4_8 g4_8 a4_8 g4_8 c4_8 e4_2 e4_8 a4_8 g4_8 g4_8 e4_2 e4_4]; part4=[d4_8 e4_8 f4_2 f4_8 f4_8 f4_8 a4_4 a4_8 c5_4 c5_8 a4_8 b4_2 b4_2 b4_2]; part5=[e4_8 e4_8 e4_8 f4_4 e5_4 d5_4 c5_4 g4_8 d5_4 c5_2 ]; part6=[e4_8 e4_8 e4_8 e4_8 e4_8 d4_8 c4_8 c4_2 ]; part7=[e4_8 e4_8 e4_8 f4_4 e5_4 d5_4 c5_4 g4_8 d5_4 c5_2 ]; part8=[e4_8 e4_8 e4_8 e4_8 e4_8 f4_8 g4_8 c5_4 d5_8 c5_4]; part9=[e4_8 e4_8 e4_8 e4_8 f4_2 f4_8 f4_8 c5_8 c5_8 b4_2]; part10=[f4_8 f4_8 f4_8 f4_8 e4_2 e4_8 e4_8 d5_8 d5_8 c5_2]; part11=[g4_8 a4_8 c5_4 g4_8 a4_8 c5_4 g4_8 a4_8 c5_4 g4_8 a4_8 c5_4 g4_8 a4_8]; part12=[e5_8 e5_8 e5_8 e5_8 e5_8 d5_2 d5_4 e5_8 e5_8 e5_8 e5_8 e5_8 d5_8 c5_8 c5_4 ]; part13=[e4_4 g4_4 c5_4 c5_4 d5_8 e5_8 c5_4 e5_2 ]; part14=[f4_4 a4_4 c5_4 e5_8 e5_8 e5_8 e5_8 e5_8 d5_8 c5_8 c5_2 ]; part15=[e4_4 g4_4 c5_4 c5_4 d5_8 e5_8 c5_4 e5_2 ]; part16=[f4_4 a4_4 c5_4 e5_8 e5_8 e5_8 e5_8 e5_8 d5_8 c5_4 ]; part17=[g5_2 e5_8 e5_8 g5_8 g5_8 e5_8 a5_8 g5_8 e5_2 ]; part18=[e5_2 d5_8 d5_8 e5_8 e5_8 d5_8 e5_8 d5_8 c5_2 ]; part19=[g5_2 e5_8 e5_8 g5_8 g5_8 e5_8 a5_8 g5_8 e5_4 ]; part20=[e5_8 d5_8 e5_8 d5_8 e5_8 d5_2 e5_8 d5_8 e5_8 d5_8 e5_8 d5_8 c5_8 c5_2]; para1=[ part1 part2 part3 part4 part5 part6 part7 part8 part9 part10 part11 part12 part13 part14 part15 part16 part17 part18 part19 part20]; % para1=[part17 part18 part19 part20]; legend=[para1 ]; % para2 para3 para4 para5 para6]; sound(legend,fs)
感兴趣的童鞋可以试一试,谢谢大家:-)