Sinuston über die Lautsprecher ausgeben

  • VB6

Es gibt 2 Antworten in diesem Thema. Der letzte Beitrag () ist von Elo.

    Sinuston über die Lautsprecher ausgeben

    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:

    Visual Basic-Quellcode

    1. Option Explicit
    2. '
    3. ' DirectSound access
    4. Dim DX As DirectX8
    5. Dim DS As DirectSound8
    6. Dim dsToneBuffer As DirectSoundSecondaryBuffer8
    7. Dim desc As DSBUFFERDESC
    8. '
    9. ' Global Vaiables
    10. Const Pi = 3.14159265358979
    11. Const SRATE = 44100
    12. Const DUR = 200
    13. Const Freq = 1000
    14. Dim sbuf(0 To DUR * SRATE) As Integer
    15. Private Sub Form_load()
    16. '
    17. ' initialise DirectSound
    18. Set DX = New DirectX8
    19. Set DS = DX.DirectSoundCreate("")
    20. DS.SetCooperativeLevel Me.hWnd, DSSCL_NORMAL
    21. '
    22. ' create a buffer
    23. desc.fxFormat.nFormatTag = WAVE_FORMAT_PCM
    24. desc.fxFormat.nSize = 0
    25. desc.fxFormat.lExtra = 0
    26. desc.fxFormat.nChannels = 1
    27. desc.fxFormat.lSamplesPerSec = SRATE
    28. desc.fxFormat.nBitsPerSample = 16
    29. desc.fxFormat.nBlockAlign = 2
    30. desc.fxFormat.lAvgBytesPerSec = 2 * SRATE
    31. desc.lFlags = 0
    32. desc.lBufferBytes = 2 * DUR * SRATE
    33. Set dsToneBuffer = DS.CreateSoundBuffer(desc)
    34. '
    35. ' create a tone
    36. Dim i
    37. For i = 0 To DUR * SRATE
    38. sbuf(1) = 10000 * Sin(2 * Pi * Freq * i / SRATE)
    39. Next i
    40. '
    41. ' copy tone to buffer
    42. dsToneBuffer.WriteBuffer 0, 2 * DUR * SRATE, sbuf(0), DSBLOCK_DEFAULT
    43. '
    44. End Sub
    45. Private Sub Command1_Click()
    46. '
    47. ' play the tone
    48. dsToneBuffer.Play DSBPLAY_DEFAULT
    49. '
    50. 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