公布大家要编写的代码!很早就准备好了哦!看看编好后能有什么效果?声明:本代码来源于网络,本人只做教学使用,并无抄袭之意。如果侵权,请及时和我联系,我会及时处理!现代大学生学习技能应该采取有啥学啥的态度,不要再去挑了,到了社会上你会发现技多不压身的道理。当然也需要有所侧重,比如软件是强项,但是硬件也要了解。只要有了足够多的技能,就不会有精神内耗,才不会恐慌,才不会有胆怯!人呢?做事要有信念,做任何事情都不会畏缩,这样终会学成!
2022年8月29日,新学期的课开始了。新的一个学期就这么如期而至,又是如往常的激动和无奈。在过去的暑假中,见证了高考结束后家长和考生的喜与悲,而上学后,当初的那些誓言是不是会被抛在脑后?躺平的思想是不是不自觉的涌入脑中?失败和成功之后都需要调整心态,因为人的一生中会遇到太多这样的事情。保持好的心态,不断坚持做有意义的事情,你终将获得成功!
2023年8月,在家给即将升入大二的学生们讲课。既有实际编程知识,也有专业发展知识。在暑假里学习,大家会感到更加充实,心无杂念,这也为他们日后参加各种竞赛打下坚实基础!
主程序代码!
让音乐的美感染你的精神世界!
clear, clc
t = [ 56 55 56 55 56 51 54 52 49 0 40 44 49 51 0 44 48 51 52 0 44 56 55 ...
56 55 56 51 54 52 49 0 40 44 49 51 0 44 52 51 49 0 51 52 54 56 47 57 56 ...
54 45 56 54 52 44 54 52 51 0 44 56 0 0 56 68 0 0 55 56 0 0 55 56 55 ...
56 55 56 51 54 52 49 0 40 44 49 51 0 44 48 51 52 0 44 56 55 56 55 56 51 54 52 ...
49 0 40 44 49 51 0 44 52 51 49];
tdur = [ .5 .5 .5 .5 .5 .5 .5 .5 1 .5 .5 .5 .5 1 .5 .5 .5 .5 1 .5 .5 .5 .5 ...
.5 .5 .5 .5 .5 .5 1 .5 .5 .5 .5 1 .5 .5 .5 .5 1 .5 .5 .5 .5 1.5 .5 .5 .5 ...
1.5 .5 .5 .5 1.5 .5 .5 .5 1 .5 .5 .5 .5 .5 .5 .5 .5 .5 .5 .5 .5 .5 .5 .5 .5 ...
.5 .5 .5 .5 .5 .5 1 .5 .5 .5 .5 1 .5 .5 .5 .5 1 .5 .5 .5 .5 .5 .5 .5 .5 .5 .5 ...
1 .5 .5 .5 .5 1 .5 .5 .5 .5 2];
b = [ 0 0 25 32 37 0 0 20 32 36 0 0 25 32 39 0 0 ...
0 25 32 37 0 0 20 32 36 0 0 25 32 37 0 28 35 40 0 0 ...
23 35 39 0 0 25 32 37 0 0 20 32 44 0 44 56 0 0 55 56 0 0 55 56 0 0 ...
0 25 32 37 0 0 20 32 36 0 0 25 32 37 0 0 0 ...
25 32 37 0 0 20 32 36 0 0 25 32 37 0];
bdur = [ 1 3 .5 .5 .5 .5 1 .5 .5 .5 .5 1 .5 .5 .5 .5 1 ...
3 .5 .5 .5 .5 1 .5 .5 .5 .5 1 .5 .5 .5 1.5 .5 .5 .5 .5 1 ...
.5 .5 .5 .5 1 .5 .5 .5 .5 1 .5 .5 .5 1 .5 .5 .5 .5 .5 .5 .5 .5 .5 .5 .5 1 ...
3 .5 .5 .5 .5 1 .5 .5 .5 .5 1 .5 .5 .5 .5 1 3 ...
.5 .5 .5 .5 1 .5 .5 .5 .5 1 .5 .5 .5 .5];
play(t,tdur,b,bdur) % 这是一个函数!!!
再来看函数代码!
什么是函数!大家学过了C语言,MATLAB里面的函数概念和C语言一致,形式上有所不同!
可以看看下面的文章,打开链接即可,快速学习一下基础语法知识!
看了两章课程后,再看下面的代码就容易懂了!
function music = play(treble, treble_duration, bass, bass_duration)
fs = 11025; % sampling frequency, 11025 Hz on PC/Mac
speed_factor = 2; % cpu speed compensation factor
treble_vector = zeros(1,sum(treble_duration)*fs+1);
% treble vector generator
n1 = 1; % starting index
for kk = 1:length(treble)
keynum = treble(kk);
if (keynum == 0) % rest period definition
A = 0.0; % amplitude at 0.0
freq = 440;
else
A = 0.5; % note amplitude at 0.5
freq = 440 * (2^( (keynum-49)/12 ));
% frequency definition
end
tt = 0 : (1/fs) : (treble_duration(kk)/speed_factor);
% duration generator
tone = A * cos( 2* pi* freq* tt);
% tone generator
n2 = n1 + length(tone) - 1;
% ending index & concatenate vector
treble_vector(n1:n2) = treble_vector(n1:n2) + tone;
% vector generator
n1 = n2;
% reset index
end
bass_vector = zeros(1,sum(bass_duration)*fs+1);
% bass vector generator
n1 = 1;
for kk = 1:length(bass)
keynum = bass(kk);
if (keynum == 0)
A = 0;
freq = 440;
else
A = 0.5;
freq = 440 * (2^( (keynum-49)/12 ));
end
tt = 0 : (1/fs) : (bass_duration(kk)/speed_factor);
tone = A * cos( 2* pi* freq* tt);
%
n2 = n1 + length(tone) - 1;
bass_vector(n1:n2) = bass_vector(n1:n2) + tone;
n1 = n2;
end
music_vector = treble_vector + bass_vector;
% treble and bass vector combination
sound( music_vector, fs )
% generate sound
注意格式!
能不能将编好后的钢琴曲存储为音频文件吗?这样可以发给家人或者朋友听哦!是不是感到成就感爆棚啊?
讲专业发展脉络的课已经到了第三天,同学们此时已经学的非常认真了,每天听课时间就长达两小时,然后还要花时间用于编程实践!为他们的努力点赞!努力学习的态度是老师不断提升教学水平的动力!未完,待续!
修订记录
20220808 完成初稿;
20230828 修订内容v2;