プログラミングのメモ帳(C/C++/HSP)

日々のプログラミングで気づいた点や小技集を紹介します。(Windows 10/XP/Vista、VC2017、HSP)

Beep関数で音階を鳴らそう

2011年05月25日 03時28分00秒 | 無料で学べる講座

懐かしいビープ音を最新型のパソコンで鳴らしてみます。
ビープ音を単純に鳴らしても面白くないのでドレミ音階で鳴らします。

音階の一覧

プロトタイプ宣言

BOOL Beep(
    DWORD   dwFreq,         // 音の周波数(Hz)
    DWORD   dwDuration      // 音の持続時間(ms)
);

上記の Beep 関数はスピーカから単純なビープ音を鳴らします。
この関数の第一引数に音の周波数(Hz)を指定して、第二引数に持続時間(ms)を指定します。
この関数は同期実行されるため音が鳴り終わるまでは呼び出し側へ制御を返しません。

サンプル1

最初は基本中のド・レ・ミ・ファ・ソ・ラ・シ・ドの8段階を鳴らします。
なお、持続時間(ms)は全て200msに固定にしてます。

  1. ド・・・・・440(Hz)
  2. レ・・・・・494(Hz)
  3. ミ・・・・・554(Hz)
  4. ファ・・・587(Hz)
  5. ソ・・・・・659(Hz)
  6. ラ・・・・・740(Hz)
  7. シ・・・・・830(Hz)
  8. ド・・・・・880(Hz)
//==============================================================================
// Beep関数で音階を鳴らそう(1)
//==============================================================================
#include <tchar.h>
#include <Windows.h>

//------------------------------------------------
// メイン関数
//------------------------------------------------
extern int WINAPI _tWinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdLine, int nCmdShow )
{
    Beep( 440, 200 );       // ド
    Beep( 494, 200 );       // レ
    Beep( 554, 200 );       // ミ
    Beep( 587, 200 );       // ファ
    Beep( 659, 200 );       // ソ
    Beep( 740, 200 );       // ラ
    Beep( 830, 200 );       // シ
    Beep( 880, 200 );       // ド
    
    UNREFERENCED_PARAMETER( hInstance );
    UNREFERENCED_PARAMETER( hPrevInstance );
    UNREFERENCED_PARAMETER( lpCmdLine );
    UNREFERENCED_PARAMETER( nCmdShow );
    return 0;
}

サンプル2

続いてド・ド#・レ・レ#・ミ・ファ・ファ#・ソ・ソ#・ラ・ラ#・シ・ドの13段階を鳴らします。
こちらは持続時間(ms)を音階によって変えてます。

  1. ド・・・・・・440(Hz)+161(ms)
  2. ド#・・・・・466(Hz)+152(ms)
  3. レ・・・・・・494(Hz)+143(ms)
  4. レ#・・・・・523(Hz)+135(ms)
  5. ミ・・・・・・554(Hz)+128(ms)
  6. ファ・・・・587(Hz)+120(ms)
  7. ファ#・・・622(Hz)+114(ms)
  8. ソ・・・・・・659(Hz)+107(ms)
  9. ソ#・・・・・698(Hz)+101(ms)
  10. ラ・・・・・・740(Hz)+ 95(ms)
  11. ラ#・・・・・784(Hz)+ 90(ms)
  12. シ・・・・・・830(Hz)+ 85(ms)
  13. ド・・・・・・880(Hz)+ 80(ms)
//==============================================================================
// Beep関数で音階を鳴らそう(2)
//==============================================================================
#include <tchar.h>
#include <Windows.h>

//------------------------------------------------
// メイン関数
//------------------------------------------------
extern int WINAPI _tWinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdLine, int nCmdShow )
{
    Beep( 440, 161 );       // ド
    Beep( 466, 152 );       // ド#
    Beep( 494, 143 );       // レ
    Beep( 523, 135 );       // レ#
    Beep( 554, 128 );       // ミ
    Beep( 587, 120 );       // ファ
    Beep( 622, 114 );       // ファ#
    Beep( 659, 107 );       // ソ
    Beep( 698, 101 );       // ソ#
    Beep( 740,  95 );       // ラ
    Beep( 784,  90 );       // ラ#
    Beep( 830,  85 );       // シ
    Beep( 880,  80 );       // ド
    
    UNREFERENCED_PARAMETER( hInstance );
    UNREFERENCED_PARAMETER( hPrevInstance );
    UNREFERENCED_PARAMETER( lpCmdLine );
    UNREFERENCED_PARAMETER( nCmdShow );
    return 0;
}

参考サイト


コメント (1)    この記事についてブログを書く
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする
« メッセージ・ボックスを出そう | トップ | ドラッグ図形の描き方 »
最新の画像もっと見る

1 コメント

コメント日が  古い順  |   新しい順
助かりました (crystalsky)
2012-11-21 09:16:54
Beepの音の関数がわかりやすく書いてあって助かりました。たしか440ヘルツはラの音から始まった気がします。ラシドレミって感じで。
返信する

コメントを投稿

無料で学べる講座」カテゴリの最新記事