Audio Class で WAVE を演奏する

DirectX の Audio Object Class を使って WAVE を演奏します。
Audio Object Class を使うと、誰でも簡単にプログラムを作成することが出来ます。

前田稔(Maeda Minoru)の超初心者のプログラム入門

プロジェクトの作成

  1. 私が提供する Audio Object Class を使うと MIDI の演奏が簡単にできます。
    Audio Object Class は Object Class Library からダウンロード出来ます。
  2. [ファイル] [新規作成] [プロジェクト] から空のプロジェクト(MyWave)を作成して下さい。
    プロジェクトのフォルダーに次のファイルを格納して下さい。
    プロジェクト/既存項目の追加からプログラムファイルとヘッダファイルをプロジェクトに追加して下さい。
    ファイル名 ファイルの説明
    MyWave.cpp 「プログラムの説明」を参考に作成して下さい
    audio.h audio Object Class ヘッダファイル
    audio.cpp audio Object Class プログラムファイル
  3. このプログラムは、次のフォルダーに格納されている WAVE ファイルを演奏します。
    音が鳴らない(非常に小さい?)ものがあり (^_^;) 事前にメディアプレイヤなどで確認して下さい。
    C:\WINDOWS\Media\chord.wav
    C:\WINDOWS\Media\notify.wav
    C:\WINDOWS\Media\ringin.wav
    C:\WINDOWS\Media\ringout.wav
  4. 次の DialogBox を作成して下さい。
  5. DialogBox のキャプションとIDです。
    BOX キャプション ID
    DialogBox ダイアログ IDD_DIALOG1
    Button Wave-1 を鳴らす IDC_BUTTON1
    Button Wave-2 を鳴らす IDC_BUTTON2
    Button Wave-3 を鳴らす IDC_BUTTON3
    Button Wave-4 を鳴らす IDC_BUTTON4
    Button キャンセル IDCANCEL
  6. ライブラリは audio.h の #pragma でリンクするので、特に操作は不要です。
  7. ビルドから実行を選ぶと DialogBox が表示されます。
    「Wave-1 を鳴らす」から「Wave-4 を鳴らす」をクリックすると WAVE が演奏されます。
    「キャンセル」をクリックするとプログラムが終了します。

プログラムの説明

  1. Audio Object Class を使うので audio.h と audio.cpp をプロジェクトに組み込んで下さい。
    Audio App; が Object Class の定義です。
    g_wav[4][64] で演奏する WAVE File を定義しています。
        #include    <windows.h>
        #include    "Audio.h"
        #include    "resource.h"
    
        //☆Audio Object Class を定義する
        Audio       App;
    
        char    g_wav[4][64]=
        { "c:\\windows\\media\\chord.wav", "c:\\windows\\media\\notify.wav",
          "c:\\windows\\media\\ringin.wav", "c:\\windows\\media\\ringout.wav",
        };
        
  2. WinMain() では DialogBox を表示するだけです。
  3. DialogBox の CALLBACK 関数に記述する Button がクリックされたときの処理です。
    IDC_BUTTON1 から IDC_BUTTON4 で g_wav[4][] で定義された WAVE をロードして演奏します。
    IDCANCEL で WM_CLOSE をポストします。
        switch(LOWORD(wp))
        {   case IDCANCEL:
                PostMessage(hDlg,WM_CLOSE,0,0);
                break;
            case IDC_BUTTON1:
                if (!FAILED(App.Load(g_wav[0])))    App.Play();
                break;
            case IDC_BUTTON2:
                if (!FAILED(App.Load(g_wav[1])))    App.Play();
                break;
            case IDC_BUTTON3:
                if (!FAILED(App.Load(g_wav[2])))    App.Play();
                break;
            case IDC_BUTTON4:
                if (!FAILED(App.Load(g_wav[3])))    App.Play();
                break;
        }
        break;
        
  4. プログラムの終了処理です。
    Object Class の Constructor が全てのオブジェクトを開放してくれます。
        case WM_CLOSE:
            EndDialog(hDlg,TRUE);
            return (TRUE);
        

【演習】

  1. Audio Object Class を使うと、厄介な処理は Object Class が全て面倒を見てくれます。
    Audio Object Class を使わないで WAVE を演奏するプログラムを作成して下さい。
    プログラムは WAVE を演奏する を参照して下さい。

超初心者の方のために全ソースコードを掲載します。 (^_^;)
Object Class Library から audio.h と audio.cpp を取得してプロジェクトに組み込んで下さい。
このプログラムは Dialob Box 使ったプログラムなので、ページの画像を参考にして Dialog Box を作成して下さい。
全ソースコード

前田稔(Maeda Minoru)の超初心者のプログラム入門

超初心者のプログラム入門(DirectX9 game program)

超初心者のプログラム入門(DirectX10 game program)