VC 用發音函數Beep()播放簡譜音樂

Win32 API中有個非常有意思的發音函數Beep(),可以用它在揚聲器上播放簡單的音調,如果按簡譜來設置播放的內容,就可以播放一些簡單的音樂了。

 

函數原型:

BOOL WINAPI Beep(

  __in          DWORD dwFreq,

  __in          DWORD dwDuration

);

函數說明:

第一個參數表示頻率,用Hz爲單位,可以在0x250x7FFF之間。

第二個參數表示持續的時間,以毫秒爲單位。

 

與這個函數類似的是:

BOOL WINAPI MessageBeep(

  __in          UINT uType

);

這個函數使用要廣泛的多。相當多的程序在MessageBox()之前都會調用MessageBeep()來發出一些提示音(實際上是播放系統音樂文件)。

可供選擇的參數有:

MB_ICONASTERISK
0x00000040L

SystemAsterisk

MB_ICONEXCLAMATION
0x00000030L

SystemExclamation

MB_ICONHAND
0x00000010L

SystemHand 警告音

MB_ICONQUESTION
0x00000020L

SystemQuestion

MB_OK
0x00000000L

SystemDefault

 

 

 

再附上本人收藏的幾個用Beep()播放音樂的程序,雖然音質無法與音頻文件媲美,但做個小小的娛樂還是可以的:

// 播放  生日快樂

#include <windows.h>

void main(void)  

{  

    unsigned FREQUENCY[] = {392,392,440,392,523,494,  

              392,392,440,392,587,523,  

              392,392,784,659,523,494,440,  

              689,689,523,587,523};  

    unsigned DELAY[] = {375,125,500,500,500,1000,  

              375,125,500,500,500,1000,  

              375,125,500,500,500,500,1000,  

              375,125,500,500,500,1000};  

    int i;  

    for (i = 0; i < 25; i++)  

    {  

              Beep(FREQUENCY[i], DELAY[i]);  

    }  

} 

// 播放  小酒窩

#include<iostream.h>
#include<windows.h>

enum fy{
       d1 = 262, d1_ = 277, d2 = 294, d2_ = 311, d3 = 330, d4 = 349, d5 = 392, d5_= 415, d6 = 440, d6_= 466, d7 = 494,
       z1 = 523, z1_ = 554, z2 = 578, z2_ = 622, z3 = 659, z4 = 698, z4_ = 740, z5 = 784, z5_ = 831, z6 = 880, z6_ = 932,z7 = 988,
       g1 = 1046, g1_ = 1109, g2 = 1175,g2_ = 1245,g3 = 1318,g4 = 1397,g4_ = 1480,g5 = 1568,g5_ = 1661,g6 = 1760,g6_ = 1865,g7 = 1976,
       yaya = 0

};

struct yf
{
       enum fy s;
       int t;
};

int main()
{
       int n = 0;
 
       struct yf a[1000]={{z3,125},{z3,50},{z4,100},{z3,50},{z2,50}, //5
       {z2,125},{z2,50},{z5,100},{z2,50},{z1,50}, //10
       {z1,125},{z1,50},{z6,100},{z5,100},    //14
       {z3,125},{z4,25},{z3,25},{z2,100},{z2,100}, //19
       {z3,125},{z3,50},{z4,100},{z5,50},{z3,50}, //24
       {z5,125},{z5,50},{g2,100},{z7,50},{g1,50}, //29
       {g1,200},{g1,50},{z7,50},{z6,50},{z7,50}, //34
       {g1,125},{z7,50},{g1,200},      //37
       {g1,50},{z7,50},{g1,50},{z7,50},{g1,100},{z3,50},{z5,50}, //44
       {z5,250},{z6,50},{z7,50},      //47
       {g1,50},{z7,50},{g1,50},{z7,50},{g1,100},{g2,100},{g3,100}, //54
       {g3,300},{z6,50},{z7,50},   //57
       {g1,50},{z7,50},{g1,50},{z7,50},{g1,100},{g3,100}, //63
       {z7,50},{z6,50},{z7,50},{z6,50},{z7,50},{z5,50},{z5,50},{g1,50}, //71
       {g1,200},{g3,75},{g4,25},{g4,50},{g3,50}, //76
       {g2,200},{yaya,50},{z5,50},{g1,50},{g2,50}, //81
       {g3,50},{g1,50},{g1,50},{z5,50},{z5,100},{z5,50},{g3,50}, //88
       {g2,50},{g3,50},{g2,50},{g1,50},{z5,50},{z5,50},{z6,50},{z7,50}, //96
       {g1,50},{z6,50},{z6,50},{z3,50},{z3,100},{yaya,50},{z7,50}, //103
       {g1,50},{z7,50},{g1,50},{g2,50},{z6,50},{z5,50},{z5,100}, //110
       {z6,100},{z5,50},{z6,50},{z7,100},{g3,50},{g4,50}, //116
       {g3,50},{g4,50},{g3,50},{g2,50},{g2,50},{g1,100},{z5,50}, //123
       {z5,50},{z4,50},{z4,50},{g1,50},{g1,50},{g3,50},{g3,50},{g1,50}, //131
       {g2,200},{yaya,50},{z5,50},{g1,50},{g2,50}, //136
       {g3,50},{g1,50},{g1,50},{z5,50},{z5,100},{z5,50},{g3,50}, //143
       {g2,50},{g3,50},{g2,50},{g1,50},{z5,50},{z5,50},{z6,50},{z7,50}, //151
       {g1,50},{z6,50},{z6,50},{z3,50},{z3,100},{z3,50},{z7,50}, //158
       {g1,50},{z7,50},{g1,50},{g2,50},{z6,50},{z5,50},{z5,100}, //165
       {z6,50},{z7,50},{g1,50},{g2,100},{g3,50},{g4,50}, //17
       {g3,50},{g4,50},{g2,50},{g1,50},{g2,50},{g1,50},{g1,100}, //178
       {g2,50},{g1,50},{g2,50},{z6,50},{g1,100},{g2,50},{g1,50}, //185
       {g1,400},   //186
       {g2,50},{g1,50},{g2,50},{z6,50},{z7,100},{z7,50},{g1,50}, //193
       {g1,400},   //194
       };
       struct yf *atop;
       atop = a;
       n = 194;
       while(n--)
       {
              Beep(atop->s,atop->t*5);
              atop++;
       }
       return 0;

}

 

 


轉載請標明出處:http://www.cnblogs.com/morewindows/archive/2011/08/15/2139544.html

發佈了47 篇原創文章 · 獲贊 17 · 訪問量 14萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章