Beep也瘋狂,讓你的主板也Happy起來吧

來源:互聯網
上載者:User

      主板能唱歌,而且能根據簡譜播放出美妙的旋律,你信嗎?不管你信不信,反正我是信啦,^_^。

     Windows API 就提供了一個這樣奇妙的發音函數,它就是Beep函數。Beep可以通過控制主板擴音器的發聲頻率和節拍來演奏美妙的旋律,本文根據音樂簡譜來演奏幾首優美的歌曲,用以展現Beep的瘋狂魅力。

    首先我們來Beep的函數原型:

BOOL Beep(  DWORD dwFreq,  DWORD dwDuration);

參數說明:

    dwFreq 指定要發出的頻率(從37Hz到32767Hz)
    dwDuration 指定發音的時間長度,以毫秒為單位。

    根據簡譜知識,我們知道音樂演奏用的樂譜就是有音節和節拍組成,不同的音節就是不同頻率的聲音,下面我們來看看PC主板擴音器的模仿音節:

    程式實現:

/******************************************************************* * Copyright (C) Jerry Jiang              * File Name   : MultiThreadDlg.cpp * Author      : Jerry Jiang * Create Time : 2011-10-7 14:41:02 * Mail        : jbiaojerry@gmail.com * Blog        : http://blog.csdn.net/jerryjbiao               * Description : Beep函數播放《送別》、《傳奇》和《生日快樂歌》              ******************************************************************/#include <iostream>#include <windows.h>using namespace std;//定義低音const int A1 = 131;const int A2 = 147;const int A3 = 165;const int A4 = 175;const int A5 = 196;const int A6 = 220;const int A7 = 247;//定義中音const int B1 = 262;const int B2 = 296;const int B3 = 330;const int B4 = 349;const int B5 = 392;const int B6 = 440;const int B7 = 494;//定義高音const int C1 = 523;const int C2 = 587;const int C3 = 659;const int C4 = 698;const int C5 = 784;const int C6 = 880;const int C7 = 988;//定義高二度const int D1 = 1047;const int D2 = 1175;const int D3 = 1319;const int D4 = 1397;const int D5 = 1568;const int D6 = 1760;const int D7 = 1976;//定義節拍const int OneBeat = 600;const int HalfBeat = 300;void HappyBirthday();void Legend();void SendOff();int main(){cout << "**************************" << endl;cout << "*   1 - 送別             *" << endl;cout << "*   2 - 傳奇             *" << endl;cout << "*   3 - 祝你生日快樂     *" << endl;cout << "**************************" << endl;cout << "請選擇歌曲:" << endl;int num = 0;cin >> num;switch (num){case 1:cout << "你選擇了:1 - 送別" << endl;SendOff();break;case 2:cout << "你選擇了:2 - 傳奇" << endl;Legend();break;case 3:cout << "你選擇了:3 - 祝你生日快樂" << endl;HappyBirthday();break;default:break;}return 0;}void HappyBirthday(){Beep(C5, HalfBeat);Beep(C5, HalfBeat);Beep(C6, OneBeat);Beep(C5, OneBeat);Beep(D1, OneBeat);Beep(C7, OneBeat * 2);Beep(C5, HalfBeat);Beep(C5, HalfBeat);Beep(C6, OneBeat);Beep(C5, OneBeat);Beep(D2, OneBeat);Beep(D1, OneBeat * 2);Beep(C5, HalfBeat);Beep(C5, HalfBeat);Beep(D5, OneBeat);Beep(D3, OneBeat);Beep(D1, OneBeat);Beep(C7, OneBeat);Beep(D4, HalfBeat);Beep(D4, HalfBeat);Beep(D3, OneBeat);Beep(D1, OneBeat);Beep(D2, OneBeat);Beep(D1, OneBeat * 2);Beep(C5, HalfBeat);Beep(C5, HalfBeat);Beep(D5, OneBeat);Beep(D3, OneBeat);Beep(D1, OneBeat);Beep(C7, HalfBeat);Beep(C6, OneBeat * 2);Beep(D4, HalfBeat);Beep(D4, HalfBeat);Beep(D3, OneBeat);Beep(D1, OneBeat);Beep(D2, OneBeat);Beep(D1, OneBeat * 3);}void Legend(){//只是因為在人群中多看了你一眼Beep(C1, HalfBeat);Beep(C1, OneBeat);Beep(C1, OneBeat);Beep(C3, OneBeat);Beep(C2, OneBeat);Beep(C2, HalfBeat);Beep(C2, HalfBeat / 2);Beep(C1, HalfBeat);Beep(C1, OneBeat);Beep(C1, HalfBeat);Beep(C2, OneBeat);Beep(C2, OneBeat);Beep(C1, HalfBeat);Beep(B6, HalfBeat);Beep(B6, HalfBeat / 2);Beep(B6, OneBeat * 2);//再也沒能忘掉你容顏Beep(B7, HalfBeat);Beep(B7, HalfBeat);Beep(B7, OneBeat);Beep(C1, HalfBeat);Beep(C2, HalfBeat);Beep(C2, OneBeat);Beep(B7, OneBeat);Beep(B6, HalfBeat);Beep(B5, HalfBeat);Beep(B3, HalfBeat);Beep(B3, OneBeat * 2);//夢想著偶然能有一天再相見Beep(C3, HalfBeat);Beep(C2, HalfBeat);Beep(C3, OneBeat);Beep(C3, HalfBeat);Beep(C3, HalfBeat / 2);Beep(C2, HalfBeat);Beep(C2, OneBeat);Beep(C2, HalfBeat / 2);Beep(C1, HalfBeat);Beep(C1, OneBeat);Beep(C2, OneBeat);Beep(B6, OneBeat);Beep(B6, HalfBeat);Beep(B6, HalfBeat / 2);Beep(C2, HalfBeat);Beep(C1, HalfBeat / 2);Beep(C1, OneBeat * 2);//從此我開始孤單思念Beep(B7, HalfBeat);Beep(B7, HalfBeat);Beep(B7, OneBeat);Beep(C1, HalfBeat);Beep(C2, HalfBeat / 2);Beep(C2, OneBeat);Beep(C2, OneBeat);Beep(B6, HalfBeat);Beep(B5, OneBeat);Beep(B3, OneBeat * 2);//想你時你在天邊Beep(C5, OneBeat);Beep(C2, HalfBeat / 2);Beep(C2, OneBeat);Beep(C3, OneBeat);Beep(C5, OneBeat);Beep(C2, HalfBeat);Beep(C2, OneBeat);Beep(D1, HalfBeat);Beep(B6, OneBeat * 2);Sleep(50);//想你時你在眼前Beep(C2, OneBeat);Beep(B6, HalfBeat / 2);Beep(B6, OneBeat);Beep(C3, OneBeat);Beep(C2, OneBeat);Beep(C1, HalfBeat / 2);Beep(C1, OneBeat);Beep(C1, OneBeat);Beep(B5, OneBeat * 2);//想你時你在腦海Beep(C5, OneBeat);Beep(C2, HalfBeat / 2);Beep(C2, OneBeat);Beep(C3, OneBeat);Beep(C5, OneBeat);Beep(C2, HalfBeat);Beep(C2, OneBeat);Beep(D1, OneBeat);Beep(B6, OneBeat * 2);Sleep(50);//想你時你在心田Beep(C2, OneBeat);Beep(B6, HalfBeat / 2);Beep(B6, OneBeat);Beep(C3, OneBeat);Beep(C2, OneBeat);Beep(C1, HalfBeat / 2);Beep(C1, OneBeat);Beep(C1, OneBeat);Beep(B5, OneBeat * 2);//寧願相信我們前世有約Beep(C1, HalfBeat);Beep(C1, HalfBeat);Beep(C1, OneBeat);Beep(B5, HalfBeat);Beep(C1, HalfBeat / 2);Beep(C1, OneBeat);Beep(C5, OneBeat);Beep(D4, OneBeat);Beep(C3, OneBeat);Beep(C2, OneBeat);Beep(C1, HalfBeat / 2);Beep(C1, OneBeat * 2);//今生的愛情故事不會再改變Beep(C1, HalfBeat);Beep(C3, HalfBeat);Beep(C5, HalfBeat);Beep(C6, OneBeat);Beep(C5, HalfBeat);Beep(C6, HalfBeat / 2);Beep(C6, HalfBeat);Beep(C5, OneBeat);Beep(C6, OneBeat);Beep(C5, HalfBeat);Beep(C3, HalfBeat);Beep(C3, HalfBeat);Beep(C2, OneBeat);Beep(C3, HalfBeat / 2);Beep(C3, OneBeat * 2);//寧願用這一生等你發現Beep(C1, HalfBeat);Beep(C1, HalfBeat);Beep(C1, OneBeat);Beep(B5, HalfBeat);Beep(C1, HalfBeat / 2);Beep(C1, OneBeat);Beep(C5, OneBeat);Beep(D4, OneBeat);Beep(C3, OneBeat);Beep(C2, OneBeat);Beep(C1, HalfBeat / 2);Beep(C1, OneBeat * 2);//我一直在你身邊從未走遠Beep(C1, HalfBeat);Beep(C3, HalfBeat);Beep(C5, HalfBeat);Beep(C6, OneBeat);Beep(C5, HalfBeat);Beep(C6, HalfBeat / 2);Beep(C6, HalfBeat);Beep(C5, OneBeat);Beep(C6, OneBeat);Beep(C5, HalfBeat);Beep(C3, HalfBeat / 2);Beep(C5, OneBeat);Beep(C5, OneBeat * 4);}void SendOff(){//送別const int ONE_BEEP = 600;const int HALF_BEEP = 300;const int NOTE_1 = 440;const int NOTE_2 = 495;const int NOTE_3 = 550;const int NOTE_4 = 587;const int NOTE_5 = 660;const int NOTE_6 = 733;const int NOTE_7 = 825;//長亭外Beep(NOTE_5, ONE_BEEP);Beep(NOTE_3, HALF_BEEP);Beep(NOTE_5, HALF_BEEP);Beep(NOTE_1 * 2, ONE_BEEP * 2);//古道邊Beep(NOTE_6, ONE_BEEP);Beep(NOTE_1 * 2, ONE_BEEP);Beep(NOTE_5, ONE_BEEP * 2);//芳草碧連天Beep(NOTE_5, ONE_BEEP);Beep(NOTE_1, HALF_BEEP);Beep(NOTE_2, HALF_BEEP);Beep(NOTE_3, ONE_BEEP);Beep(NOTE_2, HALF_BEEP);Beep(NOTE_1, HALF_BEEP);Beep(NOTE_2, ONE_BEEP * 4);//晚風扶柳笛聲殘Beep(NOTE_5, ONE_BEEP);Beep(NOTE_3, HALF_BEEP);Beep(NOTE_5, HALF_BEEP);Beep(NOTE_1 * 2, HALF_BEEP * 3);Beep(NOTE_7, HALF_BEEP);Beep(NOTE_6, ONE_BEEP);Beep(NOTE_1 * 2, ONE_BEEP);Beep(NOTE_5, ONE_BEEP * 2);//夕陽山外山Beep(NOTE_5, ONE_BEEP);Beep(NOTE_2, HALF_BEEP);Beep(NOTE_3, HALF_BEEP);Beep(NOTE_4, HALF_BEEP * 3);Beep((int)(NOTE_7 / 2 + 0.5), HALF_BEEP);Beep(NOTE_1, ONE_BEEP * 4);//天之涯Beep(NOTE_6, ONE_BEEP);Beep(NOTE_1 * 2, ONE_BEEP);Beep(NOTE_1 * 2, ONE_BEEP * 2);//地之角  Beep(NOTE_7, ONE_BEEP);  Beep(NOTE_6, HALF_BEEP);  Beep(NOTE_7, HALF_BEEP);  Beep(NOTE_1 * 2, ONE_BEEP * 2);  //知交半零落  Beep(NOTE_6, HALF_BEEP);Beep(NOTE_7, HALF_BEEP);Beep(NOTE_1 * 2, HALF_BEEP);Beep(NOTE_6, HALF_BEEP);Beep(NOTE_6, HALF_BEEP);  Beep(NOTE_5, HALF_BEEP);Beep(NOTE_3, HALF_BEEP);  Beep(NOTE_1, HALF_BEEP);  Beep(NOTE_2, ONE_BEEP * 4);  //一壺濁酒盡餘歡  Beep(NOTE_5, ONE_BEEP);  Beep(NOTE_3, HALF_BEEP);Beep(NOTE_5, HALF_BEEP);  Beep(NOTE_1 * 2, HALF_BEEP * 3);  Beep(NOTE_7, HALF_BEEP);  Beep(NOTE_6, ONE_BEEP);  Beep(NOTE_1 * 2, ONE_BEEP);  Beep(NOTE_5, ONE_BEEP * 2);  //今宵別夢寒  Beep(NOTE_5, ONE_BEEP);  Beep(NOTE_2, HALF_BEEP);  Beep(NOTE_3, HALF_BEEP);  Beep(NOTE_4, HALF_BEEP * 3);  Beep((int)(NOTE_7 / 2 + 0.5), HALF_BEEP);  Beep(NOTE_1, ONE_BEEP * 3); Sleep(10000);}

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.