Funktionsreferenz


_SoundOpen

Öffnet eine Sounddatei, welche in anderen _Sound Funktionen verwendet werden kann.

#include <Sound.au3>
_SoundOpen($sFile)

Parameter

$sFile Pfad zu der Sounddatei

Rückgabewert

Erfolg: Gibt ein 4-Elemente Array welches folgende Informationen enthält zurück:
$array[0] = ID-String der Sounddatei
$array[1] = VBR Länge Korrekturfaktor
$array[2] = VBR Zeit Korrekturfaktor
$array[3] = Sound ID Marker
Fehler: 0 und setzt @error
@Error: 1 = MCI Fehler beim öffnen
2 = Datei existiert nicht
@Extended: 0 = Kein Fehler
Integer anders als 0 = MCI Error

Bemerkungen

Obwohl viele der _Sound Funktionen Dateinamen als Parameter akzeptieren sollte man bei Dateien die mit einer VBR (variable Bitrate) enkodiert wurden _SoundOpen verwenden. Dann sollte das zurückgegebene Array als Parameter in den anderen _Sound...()-Funktionen verwendet werden. Dies ist notwendig, da MCI DLL annimmt, dass alle Dateien mit einer CBR (konstante Bitrate) enkodiert sind. Dadurch würde man falsche Ergebnisse wie zum Beispiele Länge und Position von den _Sound...()-Funktionen erhalten deren Dateien eine VBR aufweisen. Wenn das Array als ID-Parameter in den Sound...()-Funktionen verwendet wird, so wird das ID-Array notfalls aktualisiert wenn eine VBR Korrekturfaktor (_SoundStop) notwendig ist.
Die individuellen Elemente des zurückgegebenen Arrays haben außerhalb der _Sound Funktionen keinerlei Verwendung und ihre interne Verwendung ist für den Benutzer durchschaubar.

Verwandte Funktionen

_SoundClose, _SoundLength, _SoundPause, _SoundPlay, _SoundPos, _SoundResume, _SoundStatus, _SoundStop

Beispiel


#include <Sound.au3>

Local $sound = _SoundOpen(@WindowsDir & "\media\Windows XP Startup.wav")
If @error = 2 Then
    MsgBox(0, "Fehler", "Die Datei existiert nicht.")
    Exit
ElseIf @extended <> 0 Then
    Local $iExtended = @extended ; Zuweisung, weil @extended nach DllCall-Aufruf geändert wird
    Local $stText = DllStructCreate("char[128]")
    DllCall("winmm.dll", "short", "mciGetErrorStringA", "str", $iExtended, "ptr", DllStructGetPtr($stText), "int", 128)
    MsgBox(0, "Fehler", "Öffnen fehlgeschlagen." & @CRLF & "Fehlernummer: " & $iExtended & @CRLF & "Fehlerbeschreibung: " & DllStructGetData($stText, 1) & @CRLF & "Beachte: Möglicherweise kann der Sound dennoch korrekt abgespielt werden.")
Else
    MsgBox(0, "Erfolgsmeldung", "Die Datei wurde erfolgreich geöffnet.")
EndIf

If _SoundClose($sound) = 1 Then
    MsgBox(0, "Erfolgsmeldung", "Die Sound-Datei wurde erfolgreich geschlossen.")
Else
    MsgBox(0, "Fehler", "Das Schließen der Datei war nicht erfolgreich.")
EndIf