乐曲中不同的音符实质上表示的是不同频率的声音。
在单片机中要发出不同频率的声音,只要产生不同频率的脉冲信 ,再通过喇叭等播放出来即可。又由于方波容易用定时器产生,故一般单片机使用方波脉冲。
关于Win32 API的发音函数Beep,很多人不知道怎么把音频文件的曲谱转换成频率数组和持续时间,在这我给出两个方法。
方法一,对于一个音频文件,我们可以先获取到它的曲谱,再去根据曲谱去查各音调的频率和套公式得到持续时间;
方法二,可以利用cooledit等软件分析音频文件的频谱;
附表:
音符与频率对应表
(“#”表示半音,用于上升或下降半个音)
表9.1 C调各音符频率与计数值T的对照表
音符 频率(Hz) 简谱码T值
低1DO 262 63628
#1DO# 277 63731
低2RE 294 63835
#2RE# 311 63928
低3M 330 64103
低4FA 349 64103
#4FA# 370 64260
低5SO 392 64260
#5SO# 415 64331
低6LA 440 64400
#6 466 64463
低7SI 494 64524
中1DO 523 64580
#1DO# 554
中2RE 578 FC9F;
#2RE# 622
中3MI 659 FD09;
中4FA 698 FD34
#4FA# 740
中5SO 784 FD82
#5SO# 831
中6LA 880 FDC8
#6LA# 932
中7SI 988 FE06
节拍
每个音符使用1个字节,字节的高4位代表音符的高低,低4位代表音符的节拍,下表为节拍码的对照。但如果1拍为0.4秒,1/4拍是0.1秒,只要设定延迟时间就可求得节拍的时间。假设1/4节拍为1DELAY,则1拍应为4DELAY,以此类推。所以只要求得1/4拍的DELAY时间,其余的节拍就是它的倍数,如下表为1/4和1/8节拍的时间设定。
表9.2 节拍码对照表
1/4节拍 1/8节拍
节拍码 节拍数 节拍码 节拍数
1 1/4拍 1 1/8拍
2 2/4拍 2 1/4拍
3 3/4拍 3 3/8拍
4 1拍 4 1/2拍
5 1又1/4拍 5 5/8拍
6 1又1/2拍 6 3/4拍
7 1又3/4拍 7 7/8拍
8 2拍 8 1拍
9 2又1/4拍 9 1又1/8拍
A 2又1/2拍 A 1又1/4拍
B 2又3/4拍 B 1又3/8拍
C 3拍 C 1又1/2拍
D 3又1/4拍 D 1又5/8拍
E 3又1/2拍 E 1又3/4拍
F 3又3/4拍 F 1又7/8拍
节拍延时参考:
曲调 1/4拍的延迟时间 1/8拍的延迟时间
4/4 125ms 62ms
3/4 187ms 94ms
2/4 250ms 125ms
文章知识点与官方知识档案匹配,可进一步学习相关知识C技能树数组数组简介114808 人正在系统学习中
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!