Hallo,
ich habe die Aufgabe erhalten einen variablen Sinuston zu generieren und über die Computerlautsprecher ausgeben zu lassen.
Da ich vorher keine Erfahrungen mit DirectX gesammelt hatte, habe ich mir ein Beispiel im Internet gesucht. Beim Kompilieren und Ausführen des Programms erscheint auch kein Fehler, aber es kommt trotzdem kein Ton aus den Lautsprechern.
Es handelt sich um das folgende Programm:
Es wäre wirklich nett, wenn mir jemand sagen könnte wo dort der Wurm drin ist und wie ich zu meinem Ziel komme.
Danke und schönen Abend
Elo
ich habe die Aufgabe erhalten einen variablen Sinuston zu generieren und über die Computerlautsprecher ausgeben zu lassen.
Da ich vorher keine Erfahrungen mit DirectX gesammelt hatte, habe ich mir ein Beispiel im Internet gesucht. Beim Kompilieren und Ausführen des Programms erscheint auch kein Fehler, aber es kommt trotzdem kein Ton aus den Lautsprechern.
Es handelt sich um das folgende Programm:
Visual Basic-Quellcode
- Option Explicit
- '
- ' DirectSound access
- Dim DX As DirectX8
- Dim DS As DirectSound8
- Dim dsToneBuffer As DirectSoundSecondaryBuffer8
- Dim desc As DSBUFFERDESC
- '
- ' Global Vaiables
- Const Pi = 3.14159265358979
- Const SRATE = 44100
- Const DUR = 200
- Const Freq = 1000
- Dim sbuf(0 To DUR * SRATE) As Integer
- Private Sub Form_load()
- '
- ' initialise DirectSound
- Set DX = New DirectX8
- Set DS = DX.DirectSoundCreate("")
- DS.SetCooperativeLevel Me.hWnd, DSSCL_NORMAL
- '
- ' create a buffer
- desc.fxFormat.nFormatTag = WAVE_FORMAT_PCM
- desc.fxFormat.nSize = 0
- desc.fxFormat.lExtra = 0
- desc.fxFormat.nChannels = 1
- desc.fxFormat.lSamplesPerSec = SRATE
- desc.fxFormat.nBitsPerSample = 16
- desc.fxFormat.nBlockAlign = 2
- desc.fxFormat.lAvgBytesPerSec = 2 * SRATE
- desc.lFlags = 0
- desc.lBufferBytes = 2 * DUR * SRATE
- Set dsToneBuffer = DS.CreateSoundBuffer(desc)
- '
- ' create a tone
- Dim i
- For i = 0 To DUR * SRATE
- sbuf(1) = 10000 * Sin(2 * Pi * Freq * i / SRATE)
- Next i
- '
- ' copy tone to buffer
- dsToneBuffer.WriteBuffer 0, 2 * DUR * SRATE, sbuf(0), DSBLOCK_DEFAULT
- '
- End Sub
- Private Sub Command1_Click()
- '
- ' play the tone
- dsToneBuffer.Play DSBPLAY_DEFAULT
- '
- End Sub
Es wäre wirklich nett, wenn mir jemand sagen könnte wo dort der Wurm drin ist und wie ich zu meinem Ziel komme.
Danke und schönen Abend

Elo