内容
接线方式
Arduino UNO开发板 <------> 蜂鸣器模块
3V3/5V <------> VCC
GND <------> GND
8 <------> IO
音调
声音频率的高低,就是我们常说的“音高”。在音乐中常把中央C上方分A音定位标准音,其频率f=440HZ,其他的音都可以根据标准音的频率进行计算。设f1和f2灯为两个音对应的频率,当f2=2×f1时,则称f2比f1高一个倍频程。在音乐中1与高音1(上面加点),2与高音2,正好相差一个倍频程,是一个八度的音程关系。一个八度的音程可以被分为12等份,每个等份成为一个半音。比如,1—高音1之间的12个半音是:1—#1、#1—2、2—#2、#2—3、3—4、4—#4,#4—5、5—#5、#5—6、6—#6、#6—7、7—高音1。假设相邻两个音的频率分别为fn与fn+1,则他们之间的频率关系为fn+1=fn×2 ^(1/12)。因此,只要知道任意一个音的音名,就可以根据这一关系得到她的频率。
节拍
节拍指音乐中重拍和弱拍周期性地、有规律地重复进行。在一张乐谱中,我们经常会看到形如1=C4/4、1=G3/4的记法。这里1=C,1=G表示乐谱的调号,与音调有很大的关联,4/4、3/4就是用来表示节拍。如2/4(读作“四二拍”)中,一四分音符为一拍,每一小节包括二拍。全音符持续四拍,二分音符持续二拍,四分音符持续一拍,八分音符持续半拍。
音乐编码解读
使用程序谱写音乐,并用蜂鸣器播放的具体实现方法为:
(1)将乐谱中的每个音符的音调及节拍变换成相应的音调参数和节拍参数,音调参数用0,-1和1区分中音、低音和高音,即中音如1(do)用0表示,低音(下面加点)-1表示,高音(上面加点)用1表示,当然,也可以用-2,2,-3,4之类的数值表示更高或更低的音;节拍参数一四四拍为例,如果音符如1 2 3 1,每个音符为1拍,用数字1表示,音符如3 4 5-,前两个音符3和4各为1拍,用1表示,5-为2拍,用2表示,音符如56 54 3 1中,56 54各占1拍,因此,分配在每个音符上的节拍为0.5拍,用0.5表示,以此类推。
(2)将上述参数存在不同的数组中
(3)通过程序取出一个音符的相关参数,播放该音符,该音符播放完后,接着取出下一个音符的相关参数……如此直到播放完毕最后一个音符。
两只老虎参考乐谱
程序编写