DOBON.NET DOBON.NETプログラミング掲示板過去ログ

DirectX7のdirectsound(VB.NET)

  • 題名: DirectX7のdirectsound(VB.NET)
  • 著者: miss_sony
  • 日時: 2003/07/08 10:58:50
  • ID: 130
  • この記事の返信元:
    • (なし)
  • この記事への返信:
    • (なし)
  • ツリーを表示
分類:[.NET]

directx7を使ったwavファイル再生プログラムが本にあったので、きちんと作って再生できました。
1秒程度の再生するファイルがたくさんあり、再生時間がまちまち(といっても100msオーダーでの話ですが)なので、
短いものにwait処理をかけて、再生時間をほほ一定にしたいのです。
wavファイルの再生時間を返してくれるような、または計算すれば再生時間が分かるようなものは
ないのでしょうか。ただし、waitを再生前に入れたいので、再生する前に情報は取得したいのです。

Dim DX As New DxVBLib.DirectX7()
Dim SD As DxVBLib.DirectSound
Dim buffer As DxVBLib.DirectSoundBuffer
Dim waveformatex As Object
Dim sdbuffer As DxVBLib.DSBUFFERDESC
Dim wvformat As DxVBLib.WAVEFORMATEX
中略
Private Sub frmDirectX3_load(ByVal eventsender As System.Object, ByVal eventarge As
System.EventArgs) Handles MyBase.Load

SD = DX.DirectSoundCreate("")

Call SD.setcooperativelevel(Me.Handle.ToInt32,
DxVBLib.CONST_DSSCLFLAGS.DSSCL_PRIORITY)

sdbuffer.lFlags = DxVBLib.CONST_DSBCAPSFLAGS.DSBCAPS_STATIC

Dim wave As String
wave = "waveformatex"

wvformat.nSize = wave.Length
wvformat.nChannels = 1
wvformat.lSamplesPerSec = 44100
wvformat.nBitsPerSample = 16
wvformat.nBlockAlign = wvformat.nBitsPerSample / 8 * wvformat.nChannels
wvformat.lAvgBytesPerSec = wvformat.lSamplesPerSec * wvformat.nBlockAlign
中略
'音声をバッファに貯める
buffer = SD.CreateSoundBufferFromFile("wavdata01.wav", sdbuffer, wvformat)
'ここに可変のwaitを入れたいのです。
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
'再生
Call buffer.Play(0)
'再生終了するまで次の処理には行かない。
Do While buffer.GetStatus = DxVBLib.CONST_DSBSTATUSFLAGS.DSBSTATUS_PLAYING
Application.DoEvents()
Loop

DOBON.NET | プログラミング道 | プログラミング掲示板