kostenloser Webspace werbefrei: lima-city


vb6: PlaySoundData

lima-cityForumProgrammiersprachenBasic

  1. Autor dieses Themas

    nerdinator

    Kostenloser Webspace von nerdinator, auf Homepage erstellen warten

    nerdinator hat kostenlosen Webspace.

    Hallo,

    heute mal ein etwas fortgeschrittenetag/re">res Thema. Ich spiele grade ein wenig mit RIFF-Wave-Dateien rum. Ich habe mich da ein wenig in das Prinzip rein gelesen und habe denke ich die Datei schon recht passabel eingelesen. Nun fehlt nur noch die Wiedergabe, was nicht so ganz klappen will. Nun habe ich nach einigem suchen den API-Aufruf namens "PlaySoundData" gefunden, welcher wohl so ziemlich das tun soll, was ich haben will. Das Problem ist: Es tut sich nichts. :confused:

    Die Frage ist nun: Wo mache ich den Fehler? Hierzu meine bisherige "Arbeit":
    Die Dateitypen:
    Public Type t_Header
        chunkID As String * 4
        FileSize As Long
        riffType As String * 4
    End Type
    
    Public Type t_Fmt
        sig As String * 4
        length As Long
        tag As Integer
        channels As Integer
        sampleRate As Long
        bytesPerSecond As Long
        blockAlign As Integer
        bitsPerSample As Integer
    End Type
    
    Public Type t_data
        sig As String * 4
        length As Long
        data() As Byte
    End Type

    Und die Funktionen:
    Private Declare Function PlaySoundData Lib "winmm.dll" Alias "PlaySoundA" (lpData As Any, ByVal hModule As Long, ByVal dwFlags As Long) As Long
    
    Public Sub OpenFile(FileName As String)
        Dim FileNr As Long, res As Long
        Dim header As t_Header, fmt As t_Fmt, data As t_data
        FileNr = FreeFile
        Open FileName For Binary Access Read As FileNr
            Get #FileNr, , header
            Get #FileNr, , fmt
            Get #FileNr, , data.sig
            Get #FileNr, , data.length
            ReDim data.data(0 To data.length)
            Get #FileNr, , data.data
        Close FileNr
        res = PlayWavData(data.data, &H1)
    End Sub
    
    Function PlayWavData(ByRef WaveData() As Byte, ByVal flag As Long) As Long
        On Error Resume Next
        Dim ret As Long
        Const SND_MEMORY = &H4
        ret = PlaySoundData(WaveData(LBound(WaveData)), 1, SND_MEMORY Or flag)
    End Function

    Falls da jemand den Fehler sieht, bitte ich doch um Aufklärung. Ich wäre sehr dankbar :)

    Beitrag zuletzt geändert: 17.5.2010 11:31:33 von nerdinator
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!