Function Reference

_SoundOpen

他の_Sound関数で使用するために音声ファイルを開きます。

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

 

パラメータ

$sFile 音声ファイルのパス

 

返し値

成功: 以下の情報を格納した4要素の配列を返します:
$array[0] = 音声ファイルID文字列
$array[1] = VBR長さの補正係数
$array[2] = VBRタイミングの補正係数
$array[3] = 音声IDマーカー
失敗: 0を返し、@errorを設定します。
@error: 1 = MCIオープンエラー
2 = ファイルが存在しません
@Extended: 0 = 正常終了
0以外の整数 = MCIエラー

 

注意

_Sound関数の多くはファイル名をパラメータとして受け付けますが、ファイルがVBR(可変ビットレート)エンコードされたものである可能性がある場合にはまず_SoundOpenを使用し、返された配列を他の_Sound...()関数での識別パラメータとして使用することを強く推奨します。これはMCI DLLが全てのファイルをCBR(固定ビットレート)エンコードされているとみなし、音声ファイルがVBR(可変ビットレート)エンコードされたものであった場合に長さと位置を扱う_Sound...()関数が誤った結果を返すためです。VBR補正係数を変更する_Sound...()関数(_SoundStop)のIDパラメータとして配列を使うとID配列は必要に応じて更新されます。
返された配列の個々の要素は_Sound関数の外では利用できませんがその内部的利用はユーザーから透過的です。

 

関連

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

 


#include <Sound.au3>

;音声ファイルを開く : Vistaで実行する場合は変更する必要あり
$sound = _SoundOpen(@WindowsDir & "\media\Windows XP Startup.wav")
If @error = 2 Then
    MsgBox(0, "Error", "The file does not exist")
    Exit
ElseIf @extended <> 0 Then
    $extended = @extended ;DllCall後に@extendedが設定されるので代入
    $stText = DllStructCreate("char[128]")
    $errorstring = DllCall("winmm.dll", "short", "mciGetErrorStringA", "str", $extended, "ptr", DllStructGetPtr($stText), "int", 128)
    MsgBox(0, "Error", "The open failed." & @CRLF & "Error Number: " & $extended & @CRLF & "Error Description: " & DllStructGetData($stText, 1) & @CRLF & "Please Note: The sound may still play correctly.")
Else
    MsgBox(0, "Success", "The file opened successfully")
EndIf
_SoundClose($sound)