• 4377阅读
  • 1回复

qt 下有没有类似 CreateSoundBuffer 这样函数? [复制链接]

上一主题 下一主题
离线龙平安
 

只看楼主 倒序阅读 楼主  发表于: 2009-11-15
— 本帖被 XChinux 从 General Qt Programming 移动到本区(2011-01-02) —
要实现一个发音的程序, 以前的方法是用DirectX Sound 实现,在QT下是否有类似的方法?

主要是用到了DirectSound 的下面3个函数,想跨平台,因此考虑不用DirectSound

  Ds.CreateSoundBuffer(DSBD, PCM)
    DSB.WriteBuffer 0, 0, lpBuffer(0), DSBLOCK_ENTIREBUFFER
    DSB.Play DSBPLAY_LOOPING


Private Sub SinBuffer(ByVal nFrequency&, ByVal nVolume!, Optional ByVal bSquare As Boolean)
    Dim lpBuffer() As Byte, I&, C!, nBuffer&
    C = nSamples / nFrequency
    nBuffer = (nBasicBufferSize \ C) * C
    If nBuffer = 0 Then nBuffer = C
    ReDim lpBuffer(nBuffer - 1)
    For I = 0 To nBuffer - 1
        C = Sin(I * 2 * PI / nSamples * nFrequency)
        If bSquare Then
            C = Sgn(C)
            If C = 0 Then C = 1
        End If
            lpBuffer(I) = (C * nMod * nVolume + 1) * 127.5!
    Next
    If DSBD.lBufferBytes <> nBuffer Then
        DSBD.lBufferBytes = nBuffer
        Set DSB = Ds.CreateSoundBuffer(DSBD, PCM)
    End If
    
    DSB.WriteBuffer 0, 0, lpBuffer(0), DSBLOCK_ENTIREBUFFER
    DSB.Play DSBPLAY_LOOPING
End Sub
离线龙平安

只看该作者 1楼 发表于: 2009-11-15
基本上就是模拟一个电子琴的,调用这个函数用声卡发出不同音调的声音。
快速回复
限100 字节
 
上一个 下一个