应的频率就可以在扬声器上连续地发出各个音符的音调而要准确地演奏出一首乐曲仅仅让扬声器能够发声是不够的还必须准确地控制乐曲的节奏即每个音符的持续时间由此可见乐曲中每个音符的发音频率及其持续的时间是乐曲能够连续演奏的两个关键因素。
2、音调的控制频率的高低决定了音调的高低音乐的十二平均率规定每两个八度音(如简谱中的中音1和高音1)之间的频率相差一倍在两个八度音之间又分为十二个半音另外音名A(简谱中的低音6)的频率为440Hz音名B到C之间、E到F之间为半音其余为全音由此可以计算出简谱中从低音1到高音1之间每个音名对应的频率所有不同频率的信号都是从同一个基准频率分频得到的由于音阶频率多为非整数而分频系数又不能为小数因此必须将计算得到的分频数四舍五入取整若基准频率过低则由于分频比太小四舍五入取整后的误差较大若基准频率过高虽然误差较小但分频数将变大实际的设计应综合考虑这两方面的因素在尽量减小频率误差的前提下取合适的基准频率因此要想FPGA发出不同音符的音调实
3
f际上只要控制它输出相应音符的频率即可综合考虑
各因素本文中选取4MHZ作为CLK的分频计数器的
输入分频信号。乐曲都是由一连串的音符组成因此按
照乐曲的乐谱依次输出这些音符所对应的频率就可
以在扬声器上连续地发出各个音符的音调。分频信号
乐曲都是由一连串的音符组成因此按照乐曲的乐谱
依次输出这些音符所对应的频率就可以在扬声器上
连续地发出各个音符的音调
简谱中的音名与频率的关系
音名频率Hz音名频率Hz音名频率Hz
低音12616中音15233
高音110455
低音22937中音25873高音211747
低音33296中音36593
高音313185
低音43492中音46985高音413969
低音5392中音5784
高音51568
低音6440中音6880
高音61760
低音74939中音79878高音719755
3、音长的控制
音符的持续时间须根据乐曲的速度及每个音符的
节拍数来确定因此在想控制音符的音长就必须知道
乐曲的速度和每个音符所对应的节拍数在这个设计
中所播放的乐曲的最短的音符为四分音符如果将全
4
f音符的持续时间设为1s的话那么一拍所应该持续的时间为025秒则只需要再提供一个4HZ的时钟频率即可产生四分音符的时长要想让系统知道现在应该播放哪个音符而这个音符持续的时间应该是多少就必须编写乐曲文件在乐曲文件中音符是按地址存放的当系统工作时就按4Hz的频率依次读取简谱当系统读到某个音符的简谱时r