您的位置:首页 > 其它

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

2015-12-01 13:50 281 查看

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

  __in          DWORD dwFreq,

  __in          DWORD dwDuration

);

函数说明:
第一个参数表示频率,用Hz为单位,可以在0x25到0x7FFF之间。
第二个参数表示持续的时间,以毫秒为单位。
 
与这个函数类似的是:
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 plaincopyprint?

// 播放  生日快乐  
#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 <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]);
}
}

小酒窝

[cpp]
view plaincopyprint?

// 播放  小酒窝  
#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}, //171  
    {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;  
}  
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: