SoundExtra - Problem

  • Hi
    Habe heute mal versucht mit der SoundExtra-Udf den Sound zu verlangsamen. Direkt wurde mir eine Fehlermeldung rausgegeben, welche mir sagte, dass die Funktion mciSendString nicht enthalten wäre. Habe dadrauf im Forum gesucht und dieses Codestück gefunden:

    Spoiler anzeigen
    [autoit]


    Func mciSendString($string, $iLen = 0)
    Local $iRet
    $iRet = DllCall("winmm.dll", "int", "mciSendStringA", "str", $string, "str", "", "long", $iLen, "long", 0)
    If Not @error Then Return $iRet[2]
    EndFunc ;==>mciSendString

    [/autoit]


    Trotz diesem Code ging es aber nicht. Hoffe ihr könnt mir helfen.

    Die komplette UDF(mit dem Fehlerhaften Code):

    Spoiler anzeigen
    [autoit]

    Func _SoundTimeToMs($Hours, $Minutes, $Seconds)

    [/autoit] [autoit][/autoit] [autoit]

    Return ($Hours*3600000)+($Minutes*60000)+($Seconds*1000)

    [/autoit] [autoit][/autoit] [autoit]

    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func _SoundMsToTime($ms)

    [/autoit] [autoit][/autoit] [autoit]

    Local $Return[3]

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    if $ms >= 3600000 Then; 1000*60*60 = 3600000
    $Hours = Floor($ms/3600000)
    $Rest = $ms-($Hours*3600000)
    Else
    $Hours = 0
    $Rest = $ms
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    If $Rest >= 60000 Then; 1000*60 = 60000
    $Minutes = Floor($Rest/60000)
    $Rest = $Rest-($Minutes*60000)
    Else
    $Minutes = 0
    $Rest = $ms
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    $Seconds = Round($Rest/1000)

    [/autoit] [autoit][/autoit] [autoit]

    $Return[0] = $Hours
    $Return[1] = $Minutes
    $Return[2] = $Seconds

    [/autoit] [autoit][/autoit] [autoit]

    Return $Return

    [/autoit] [autoit][/autoit] [autoit]

    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func _SoundInfo($sSnd_id, $Parameter); look at "http://msdn2.microsoft.com/en-us/library/ms713277(VS.85).aspx" at the table "digitalvideo" for possible parameters

    [/autoit] [autoit][/autoit] [autoit]

    If StringInStr($sSnd_id,'!') Then Return SetError(3, 0, 0); invalid file/alias

    [/autoit] [autoit][/autoit] [autoit]

    ;return status
    Return mciSendString("status " & FileGetShortName($sSnd_id) & " " &$Parameter)
    EndFunc;==>_SoundInfo

    [/autoit] [autoit][/autoit] [autoit]

    Func _SoundSpeed($sSnd_id, $Speed); $Speed: 0 - 2267, 1000= normal
    ;Declare variables
    Local $iRet

    [/autoit] [autoit][/autoit] [autoit]

    If StringInStr($sSnd_id,'!') Then Return SetError(3, 0, 0); invalid file/alias

    [/autoit] [autoit][/autoit] [autoit]

    if $Speed < 0 or $Speed > 2267 Then Return SetError(1, 0, 0)

    [/autoit] [autoit][/autoit] [autoit]

    $iRet = mciSendString("set " & FileGetShortName($sSnd_id) & " speed "&$Speed)
    ;return
    If $iRet = 0 Then
    Return 1
    Else
    Return SetError(1, 0, 0)
    EndIf
    EndFunc;==>_SoundSpeed

    [/autoit] [autoit][/autoit] [autoit]

    Func _SoundPanLeft($sSnd_id, $Pan); $Pan: 0 - 1000, 1000= normal
    ;Declare variables
    Local $iRet

    [/autoit] [autoit][/autoit] [autoit]

    If StringInStr($sSnd_id,'!') Then Return SetError(3, 0, 0); invalid file/alias

    [/autoit] [autoit][/autoit] [autoit]

    if $Pan < 0 or $Pan > 1000 Then Return SetError(1, 0, 0)

    [/autoit] [autoit][/autoit] [autoit]

    $iRet = mciSendString("setaudio " & FileGetShortName($sSnd_id) & " left volume to "&$Pan)
    ;return
    If $iRet = 0 Then
    Return 1
    Else
    Return SetError(1, 0, 0)
    EndIf
    EndFunc;==>_SoundPanLeft

    [/autoit] [autoit][/autoit] [autoit]

    Func _SoundPanRight($sSnd_id, $Pan); $Pan: 0 - 1000, 1000= normal
    ;Declare variables
    Local $iRet

    [/autoit] [autoit][/autoit] [autoit]

    If StringInStr($sSnd_id,'!') Then Return SetError(3, 0, 0); invalid file/alias

    [/autoit] [autoit][/autoit] [autoit]

    if $Pan < 0 or $Pan > 1000 Then Return SetError(1, 0, 0)

    [/autoit] [autoit][/autoit] [autoit]

    $iRet = mciSendString("setaudio " & FileGetShortName($sSnd_id) & " right volume to "&$Pan)
    ;return
    If $iRet = 0 Then
    Return 1
    Else
    Return SetError(1, 0, 0)
    EndIf
    EndFunc;==>_SoundPanRight

    [/autoit] [autoit][/autoit] [autoit]

    Func _SoundVolume($sSnd_id, $Volume); $Volume: 0 - 1000, 1000= normal
    ;Declare variables
    Local $iRet

    [/autoit] [autoit][/autoit] [autoit]

    If StringInStr($sSnd_id,'!') Then Return SetError(3, 0, 0); invalid file/alias

    [/autoit] [autoit][/autoit] [autoit]

    if $Volume < 0 or $Volume > 1000 Then Return SetError(1, 0, 0)

    [/autoit] [autoit][/autoit] [autoit]

    $iRet = mciSendString("setaudio " & FileGetShortName($sSnd_id) & " volume to "&$Volume)
    ;return
    If $iRet = 0 Then
    Return 1
    Else
    Return SetError(1, 0, 0)
    EndIf
    EndFunc;==>_SoundVolume

    [/autoit] [autoit][/autoit] [autoit]

    Func mciSendString($string)
    Local $iRet
    $iRet = DllCall("winmm.dll", "int", "mciSendStringA", "str", $string, "str", "", "int", 65534, "hwnd", 0)
    If Not @error Then Return $iRet[2]
    EndFunc ;==>mciSendString

    [/autoit]

    Danke schonmal, wie immer, im Vorraus

    MfG
    Conan (Nur Mitlesend)
    Schon lange dabei

    • Offizieller Beitrag

    In deiner UDF ist mciSendString doch schon drin . Woher hast du die UDF ?

    • Offizieller Beitrag

    Wenn ich sie hätte, würde ich dann fragen ? Ich hab keine funktionierende UDF, Sorry.

    • Offizieller Beitrag

    @Canon 10 : Deine Udf kommt von hier http://www.autoitscript.com/forum/index.php?showtopic=67021
    Zusätzlich braucht man noch die Audio.au3 von hier http://www.autoitscript.com/forum/index.php?showtopic=54048&hl=mciSendString(AutobertsThread).
    Ausserdem muß man das #Include<Sound.au3> in #Include<Audio.au3> ändern . Pan und Volume funzt, nicht aber die Geschwindigkeitsänderung. Kann aber an Vista liegen .

    Scheinbar ist die Audio.au3 der Vorläufer von der heutigen Sound.au3.