如何将曲谱的各音符转换成频率数组和持续时间 |
您所在的位置:网站首页 › 根据乐谱自动发声的app › 如何将曲谱的各音符转换成频率数组和持续时间 |
乐曲中不同的音符实质上表示的是不同频率的声音。 在单片机中要发出不同频率的声音,只要产生不同频率的脉冲信号,再通过喇叭等播放出来即可。又由于方波容易用定时器产生,故一般单片机使用方波脉冲。
关于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 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |