7-电子音乐

860阅读 0评论2014-05-14 小霸王88
分类:嵌入式

电子音乐:

1.首先让定时器4中断处理函数2ms执行一次time10ms()函数。注:time41ms 行一次中断 。(div2ms<1)?(++div2ms):(div2ms=0);switch语句。//用这种方式可以防 止超出范围,当然超出范围概率比较小。如果用%,i++方式,要有个判断条件

2.2ms执行一次time10ms函数后,可在(div10ms<4)?(++div10ms):(div10ms=0);同样用 swith语句来5ms来执行一次playsong。这样playsong10ms才执行一次。这playsong函数前搞一个panysongflag,用来开关电子音乐。

3.定义一个二维数组放音符频率对应表,音符频率对应表tonefreq[][8]={  // 2

      /* 1     2     3     4     5     6     7*/

file:///C:/Documents%20and%20Settings/Administrator/桌面/ppt/音符频率对应表.mht

/* low */

{0, 262,  294,  330,  349,  392,  440,  494 },

{0, 277,  311,  330,  370,  415,  466,  494 },  //("#"表示半音,用于上升或下降半个)

    /* middle */

{0, 523,  578,  659,  698,  784,  880,  988 },

{0, 554,  622,  659,  740,  831,  932,  988 },  //#

    /* high */

{0, 1046, 1175, 1318, 1397, 1568, 1760, 1976},

{0, 1109, 1245, 1318, 1480, 1661, 1865, 1976}   //#

};

4.定义一个结构体用来放乐谱,

.struct songdata {      //北京欢迎你

int tone;//音色,中低高

            int freq;//对应是哪个调调

int time; //多少个10ms,一般2个音节之 间是40个左右10ms

}bjfyn[] = {STARTTONE,3,TIMELONG。。。音谱}

5.开始,停止,暂停。注:暂停的时候,songindex不要为0

九、电子琴:

用switch,语句。。每条语句前先stopbuzzer(),具体看代码;

 

上一篇:13-RTC
下一篇:11-音频(DMA、IIS、UDA1341)录音和播放