Function Reference


_SoundSeek

Seeks the sound to the specified position

#include <Sound.au3>
_SoundSeek ( ByRef $aSndID, $iHour, $iMin, $iSec )

Parameters

$aSndID Sound ID array as returned by _SoundOpen()
$iHour Hour to seek to
$iMin Minute to seek to
$iSec Second to seek to

Return Value

Success: 1.
Failure: 0 and sets the @error flag to non-zero.
@error: 1 = Failure
3 = Invalid Sound ID. Use return array from _SoundOpen().

Remarks

After using _SoundSeek() on a sound, _SoundPlay() must be used to resume playing.
The use of the ID array returned from _SoundOpen() is mandatory with this function to ensure that the file plays from the correct position regardless of encoding type.
The ID array should be updated by the function as the VBR timing correction factor may have been altered.

Related

_SoundPlay

Example

#include <MsgBoxConstants.au3>
#include <Sound.au3>

Local $aSound = _SoundOpen(@WindowsDir & "\media\tada.wav")
If @error = 2 Then
    MsgBox($MB_SYSTEMMODAL, "Error", "The file does not exist")
    Exit
ElseIf @extended <> 0 Then
    Local $iExtended = @extended ; Assign because @extended will be set after DllStructCreate().
    Local $tText = DllStructCreate("char[128]")
    DllCall("winmm.dll", "short", "mciGetErrorStringA", "str", $iExtended, "struct*", $tText, "int", 128)
    MsgBox($MB_SYSTEMMODAL, "Error", "The open failed." & @CRLF & "Error Number: " & $iExtended & @CRLF & "Error Description: " & DllStructGetData($tText, 1) & @CRLF & "Please Note: The sound may still play correctly.")
Else
    MsgBox($MB_SYSTEMMODAL, "Success", "The file opened successfully")
EndIf
_SoundPlay($aSound, 0)

; Play one second of sound.
Sleep(1000)

; Seek to 2 seconds into the sound.
_SoundSeek($aSound, 0, 0, 2)
ConsoleWrite("After _SoundSeek: " & _SoundPos($aSound, 2) & " _SoundStatus: " & _SoundStatus($aSound) & @CRLF)

_SoundSeek($aSound, 0, 0, 1)
ConsoleWrite("After _SoundSeek1: " & _SoundPos($aSound, 2) & " _SoundStatus: " & _SoundStatus($aSound) & @CRLF)

_SoundPlay($aSound, 0)

While 1
    Sleep(100)
    If _SoundPos($aSound, 2) >= _SoundLength($aSound, 2) Then ExitLoop
WEnd

_SoundClose($aSound)