VC 用发音函数Beep()播放简谱音乐

来源:互联网 发布:mac安装windows虚拟机 编辑:程序博客网 时间:2024/04/27 18:53

Win32 API中有个非常有意思的发音函数Beep(),可以用它在扬声器上播放简单的音调,如果按简谱来设置播放的内容,就可以播放一些简单的音乐了。

函数原型:

[cpp] view plain copy
  1. BOOL WINAPI Beep(  
  2.   __in          DWORD dwFreq,  
  3.   __in          DWORD dwDuration  
  4. );  

函数说明:

第一个参数表示频率,用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()播放音乐的程序,虽然音质无法与音频文件媲美,但做个小小的娱乐还是可以的:

[cpp] view plain copy
  1. // 播放  生日快乐  
  2. #include <windows.h>  
  3. void main(void)    
  4. {    
  5.     unsigned FREQUENCY[] = {392,392,440,392,523,494,    
  6.               392,392,440,392,587,523,    
  7.               392,392,784,659,523,494,440,    
  8.               689,689,523,587,523};    
  9.    
  10.     unsigned DELAY[] = {375,125,500,500,500,1000,    
  11.               375,125,500,500,500,1000,    
  12.               375,125,500,500,500,500,1000,    
  13.               375,125,500,500,500,1000};    
  14.     int i;    
  15.     for (i = 0; i < 25; i++)    
  16.     {    
  17.               Beep(FREQUENCY[i], DELAY[i]);    
  18.     }    
  19. }   
  20.    
  21.    
  22. // 播放  小酒窝  
  23. #include<iostream.h>  
  24. #include<windows.h>  
  25.    
  26. enum fy{  
  27.        d1 = 262,  
  28.        d1_ = 277,  
  29.        d2 = 294,  
  30.        d2_ = 311,  
  31.        d3 = 330,  
  32.        d4 = 349,  
  33.        d5 = 392,  
  34.        d5_= 415,  
  35.        d6 = 440,  
  36.        d6_= 466,  
  37.        d7 = 494,  
  38.        z1 = 523,  
  39.        z1_ = 554,  
  40.        z2 = 578,  
  41.        z2_ = 622,  
  42.        z3 = 659,  
  43.        z4 = 698,  
  44.        z4_ = 740,  
  45.        z5 = 784,  
  46.        z5_ = 831,  
  47.        z6 = 880,  
  48.        z6_ = 932,  
  49.        z7 = 988,  
  50.        g1 = 1046,  
  51.        g1_ = 1109,  
  52.        g2 = 1175,  
  53.        g2_ = 1245,  
  54.        g3 = 1318,  
  55.        g4 = 1397,  
  56.        g4_ = 1480,  
  57.        g5 = 1568,  
  58.        g5_ = 1661,  
  59.        g6 = 1760,  
  60.        g6_ = 1865,  
  61.        g7 = 1976,  
  62.        yaya = 0  
  63. };  
  64.    
  65. struct yf  
  66. {  
  67.        enum fy s;  
  68.        int t;  
  69. };  
  70.    
  71. int main()  
  72. {  
  73.        int n = 0;  
  74.    
  75.        struct yf a[1000]={{z3,125},{z3,50},{z4,100},{z3,50},{z2,50}, //5  
  76.        {z2,125},{z2,50},{z5,100},{z2,50},{z1,50}, //10  
  77.        {z1,125},{z1,50},{z6,100},{z5,100},    //14  
  78.        {z3,125},{z4,25},{z3,25},{z2,100},{z2,100}, //19  
  79.        {z3,125},{z3,50},{z4,100},{z5,50},{z3,50}, //24  
  80.        {z5,125},{z5,50},{g2,100},{z7,50},{g1,50}, //29  
  81.        {g1,200},{g1,50},{z7,50},{z6,50},{z7,50}, //34  
  82.        {g1,125},{z7,50},{g1,200},      //37  
  83.        {g1,50},{z7,50},{g1,50},{z7,50},{g1,100},{z3,50},{z5,50}, //44  
  84.        {z5,250},{z6,50},{z7,50},      //47  
  85.        {g1,50},{z7,50},{g1,50},{z7,50},{g1,100},{g2,100},{g3,100}, //54  
  86.        {g3,300},{z6,50},{z7,50},   //57  
  87.        {g1,50},{z7,50},{g1,50},{z7,50},{g1,100},{g3,100}, //63  
  88.        {z7,50},{z6,50},{z7,50},{z6,50},{z7,50},{z5,50},{z5,50},{g1,50}, //71  
  89.        {g1,200},{g3,75},{g4,25},{g4,50},{g3,50}, //76  
  90.        {g2,200},{yaya,50},{z5,50},{g1,50},{g2,50}, //81  
  91.        {g3,50},{g1,50},{g1,50},{z5,50},{z5,100},{z5,50},{g3,50}, //88  
  92.        {g2,50},{g3,50},{g2,50},{g1,50},{z5,50},{z5,50},{z6,50},{z7,50}, //96  
  93.        {g1,50},{z6,50},{z6,50},{z3,50},{z3,100},{yaya,50},{z7,50}, //103  
  94.        {g1,50},{z7,50},{g1,50},{g2,50},{z6,50},{z5,50},{z5,100}, //110  
  95.        {z6,100},{z5,50},{z6,50},{z7,100},{g3,50},{g4,50}, //116  
  96.        {g3,50},{g4,50},{g3,50},{g2,50},{g2,50},{g1,100},{z5,50}, //123  
  97.        {z5,50},{z4,50},{z4,50},{g1,50},{g1,50},{g3,50},{g3,50},{g1,50}, //131  
  98.        {g2,200},{yaya,50},{z5,50},{g1,50},{g2,50}, //136  
  99.        {g3,50},{g1,50},{g1,50},{z5,50},{z5,100},{z5,50},{g3,50}, //143  
  100.        {g2,50},{g3,50},{g2,50},{g1,50},{z5,50},{z5,50},{z6,50},{z7,50}, //151  
  101.        {g1,50},{z6,50},{z6,50},{z3,50},{z3,100},{z3,50},{z7,50}, //158  
  102.        {g1,50},{z7,50},{g1,50},{g2,50},{z6,50},{z5,50},{z5,100}, //165  
  103.        {z6,50},{z7,50},{g1,50},{g2,100},{g3,50},{g4,50}, //171  
  104.        {g3,50},{g4,50},{g2,50},{g1,50},{g2,50},{g1,50},{g1,100}, //178  
  105.        {g2,50},{g1,50},{g2,50},{z6,50},{g1,100},{g2,50},{g1,50}, //185  
  106.        {g1,400},   //186  
  107.        {g2,50},{g1,50},{g2,50},{z6,50},{z7,100},{z7,50},{g1,50}, //193  
  108.        {g1,400},   //194  
  109.        };  
  110.    
  111.        struct yf *atop;  
  112.        atop = a;  
  113.        n = 194;  
  114.    
  115.        while(n--)  
  116.        {  
  117.               Beep(atop->s,atop->t*5);  
  118.               atop++;  
  119.        }  
  120.        return 0;  
  121. }  

0 0
原创粉丝点击