Platform SDK: DirectX

ステップ 3 : サウンドの再生

[C++]

ここでは、Visual Basic でのアプリケーション開発について説明する。C++ については、「DirectSound C/C++ チュートリアル」を参照すること。

[Visual Basic]

チュートリアル 1 のサンプルでは、ユーザーが [Play] ボタンをクリックすると、サウンドがサウンド バッファにロードされる。同時に、VolumePan の各スライダの状態が Scroll プロシージャの呼び出しでチェックされ、サウンド バッファのプロパティがスライダの状態に応じて調整される。

Private Sub scrlVol_Scroll(i As Integer)
    If m_dsBuffer(i) Is Nothing Then Exit Sub
    m_dsBuffer(i).SetVolume scrlVol(i).Value
End Sub
 
Private Sub scrlPan_Scroll(i As Integer)
    If m_dsBuffer(i) Is Nothing Then Exit Sub
    m_dsBuffer(i).SetPan scrlPan(i).Value
End Sub

これらのプロシージャとそれに対応する Change プロシージャは、ユーザーがボリュームとパンのスライダを調整するとき常に呼び出される。アプリケーションは、バッファの再生中にボリュームとパンを変更できる。

また、このサンプルは [Loop Play] チェックボックスの状態もチェックし、これがオンの場合、フラグを 1 (DSBPLAY_LOOPING) に設定する。

Dim flag As Long
flag = 0
If chLoop(i).Value <> 0 Then flag = 1
 

このフラグは、次のように DirectSoundBuffer.Play メソッドに渡される。

m_dsBuffer(i).Play flag

サウンドがループする場合、ユーザーは [Stop] ボタンをクリックするか [Loop Play] チェックボックスをオフにしてサウンドを停止できる。これに応答して、アプリケーションはバッファを停止し、カレント プレイ ポジションを先頭に設定し直す。

m_dsBuffer(i).Stop
m_dsBuffer(i).SetCurrentPosition 0

ユーザーが [Pause] ボタンをクリックすると、バッファは停止するが、カレント プレイ ポジションはその場に残る。このため、DirectSoundBuffer.Play が次に呼び出されたとき、サウンドは同じ場所に戻る。