要实现一个发音的程序, 以前的方法是用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