Type RIFF_header filesize As ULong fmtlen As ULong fmttag As UShort channels As UShort samplerate As ULong bytespersecond As ULong frame As UShort bitspersample As UShort datalen As ULong headerlen As UShort End Type Declare Function GetRIFFval(header As String) As RIFF_header Declare Function SetRIFFheader(header As String, parameter As RIFF_header) As String Declare Sub showRIFFval(parameter As RIFF_header) Function GetRIFFval(header As String) As RIFF_header Dim As Integer fmtpointer, datapointer Dim As RIFF_header rh Dim As Any Ptr hp fmtpointer = InStr(header,"fmt ") datapointer = InStr(header,"data") hp = StrPtr(header) With rh .filesize = *Cast(ULong Ptr,hp + 4) .fmtlen = *Cast(ULong Ptr,hp + fmtpointer + 3) .fmttag = *Cast(UShort Ptr,hp + fmtpointer + 7) .channels = *Cast(UShort Ptr,hp + fmtpointer + 9) .samplerate = *Cast(ULong Ptr,hp + fmtpointer + 11) .bytespersecond = *Cast(ULong Ptr,hp + fmtpointer + 15) .frame = *Cast(UShort Ptr,hp + fmtpointer + 19) .bitspersample = *Cast(UShort Ptr,hp + fmtpointer + 21) .datalen = *Cast(ULong Ptr,hp + datapointer + 3) .headerlen = datapointer + 7 End With Return rh End Function Function SetRIFFheader(header As String = "", parameter As RIFF_header) As String Dim As Integer fmtpointer, datapointer Dim As String hd Dim As Any Ptr hp = StrPtr(header) If header = "" Then 'header erstellen hd = "RIFF" + Mki(0) + "WAVEfmt " + Mki(16) + String(16,Chr(0)) + "data" + Mki(0) 'dummyheader parameter.fmtlen = 16 Else hd = header EndIf fmtpointer = InStr(hd,"fmt ") datapointer = InStr(hd,"data") hd = Left(hd, datapointer + 7) With parameter If .filesize Then *Cast(ULong Ptr,hp + 4) = .filesize EndIf If .fmtlen Then *Cast(ULong Ptr,hp + fmtpointer + 3) = .fmtlen EndIf If .fmttag Then *Cast(UShort Ptr,hp + fmtpointer + 7) = .fmttag EndIf If .channels Then *Cast(UShort Ptr,hp + fmtpointer + 9) = .channels EndIf If .samplerate Then *Cast(ULong Ptr,hp + fmtpointer + 11) = .samplerate EndIf If .bytespersecond Then *Cast(ULong Ptr,hp + fmtpointer + 15) = .bytespersecond EndIf If .frame Then 'Frame-Größe = · (( + 7) / 8) (Division ohne Rest) *Cast(UShort Ptr,hp + fmtpointer + 19) = .frame EndIf If .bitspersample Then *Cast(UShort Ptr,hp + fmtpointer + 21) = .bitspersample EndIf If .datalen Then *Cast(ULong Ptr,hp + datapointer + 3) = .datalen EndIf End With Return hd End Function Sub showRIFFval(parameter As RIFF_header) With parameter Print " .filesize ";.filesize;" (";.filesize + 8;")" Print " .fmtlen ";.fmtlen Print " .fmttag ";.fmttag Print " .channels ";.channels Print " .samplerate ";.samplerate Print ".bytespersecond ";.bytespersecond Print " .frame ";.frame Print " .bitspersample ";.bitspersample Print " .datalen ";.datalen Print " .headerlen ";.headerlen End With End Sub