DirectSound播放WAV

Imports DxVBLib


Public Class DirectSound  
    Dim dx As New DxVBLib.DirectX7
    Dim ds As DxVBLib.DirectSound


    Dim Buf As DxVBLib.DirectSoundBuffer    '创建缓冲
    Dim waveformatex As Object
    Dim sdbuffer As DxVBLib.DSBUFFERDESC
    Dim wvformat As DxVBLib.WAVEFORMATEX


    Dim mHwnd As IntPtr


    Public Sub New(ByVal hwnd As IntPtr)
        mHwnd = hwnd
        ds = dx.DirectSoundCreate("")
    End Sub


    Public Sub Play()
        Call ds.SetCooperativeLevel(mHwnd, DxVBLib.CONST_DSSCLFLAGS.DSSCL_PRIORITY)


        sdbuffer.lFlags = CONST_DSBCAPSFLAGS.DSBCAPS_STICKYFOCUS


        Dim wave As String = "waveformatex"


        wvformat.nSize = wave.Length
        wvformat.nChannels = 1
        wvformat.lSamplesPerSec = 1000 ' 44100
        wvformat.nBitsPerSample = 16
        wvformat.nBlockAlign = wvformat.nBitsPerSample / 8 * wvformat.nChannels
        wvformat.lAvgBytesPerSec = wvformat.lSamplesPerSec * wvformat.nBlockAlign * 10


        '音声をバッファに貯める
        Buf = ds.CreateSoundBufferFromFile("c:/风之彩 钢琴曲.wav", sdbuffer, wvformat)
        'ここに可変のwaitを入れたいのです。


        '再生
        Call Buf.Play(CONST_DSBPLAYFLAGS.DSBPLAY_LOOPING)
        '再生終了するまで次の処理には行かない。
        Do While Buf.GetStatus = CONST_DSBSTATUSFLAGS.DSBSTATUS_PLAYING
            Application.DoEvents()
        Loop
    End Sub
End Class 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值