Laustärke für verschiedene Instanzen getrennt Regeln ?

  • Hi,
    ich wollte ein Programm schreiben, dass zwei mp3 (oder mehrere hintereinander) abgespielt allerdings sollen die sich Dateien überschneiden. Das erste Lied soll langsam leiser werden und "gleichzeitig" das nächste lauter . Mit einer Überschneidung von x sekunden. Ich dachte mir ich könnte das einfach durch starten von einer zweiten instanz schaffen. Allerdings regelt SoundSetWaveVolume natürlich dann beide mp3´s. runter bzw. hoch. Gibt es eine art "mixer" mit dem ich die Volume der beiden lieder getrennt voneinander einstellen kann? Das wäre Super...

    Oder optional ein Balance Regler für die beiden Kanäle: links, rechts.

    bin für jeden Tipp dankbar.

    Franz

    Edit: Programm ist fertig, wenn jemand interessa hat.

    ---
    In "Independence Day" konnten die Windows-Erdcomputer problemlos mit denen der Außerirdischen kommunizieren. Was sagt uns das über unseren lieben Bill Gates? :D
    ---

    2 Mal editiert, zuletzt von franzp (18. November 2008 um 19:42)

    • Offizieller Beitrag

    Probier mal

    Spoiler anzeigen
    [autoit]

    Global $oPlayer1 = ObjCreate("WMPlayer.OCX")
    Global $oPlayer2 = ObjCreate("WMPlayer.OCX")

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

    $song1 = @ScriptDir & "\test1.mp3" ; requires full path name ...
    $song2 = @ScriptDir & "\test2.mp3" ; requires full path name ...

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

    $rc = WMLoadFile($oPlayer1, $song1)
    MsgBox(0, "1 rc", $rc)

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

    $rc = WMLoadFile($oPlayer2, $song2)
    MsgBox(0, "2 rc", $rc)

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

    $rc = WMGetDuration($oPlayer1);
    MsgBox(0, "2 rc", $rc)

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

    ; turns the volume down and back up slowly... song 1
    For $i = 100 To 0 Step -1
    WMSetVolume($oPlayer1, $i)
    Sleep(10)
    Next
    For $i = 0 To 100
    WMSetVolume($oPlayer1, $i)
    Sleep(10)
    Next

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

    ; turns the volume down and back up slowly... song2
    For $i = 100 To 0 Step -1
    WMSetVolume($oPlayer2, $i)
    Sleep(10)
    Next
    For $i = 0 To 100
    WMSetVolume($oPlayer2, $i)
    Sleep(10)
    Next

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

    MsgBox(0, "pause", "")

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

    WMPause($oPlayer1)

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

    Sleep(300)

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

    MsgBox(0, "play", "")

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

    $rc = WMGetPosition($oPlayer1)
    MsgBox(0, "POS", $rc)

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

    WMPlay($oPlayer1)

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

    Sleep(3000)

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

    MsgBox(0, "stop", "")
    WMStop($oPlayer1)
    WMStop($oPlayer2)

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

    Exit ; ----------------------------

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

    ; some functions
    Func WMLoadFile($wm_obj, $sFilename)
    $wm_obj.url = $sFilename
    While Not WMGetState($wm_obj) = "Playing"
    Sleep(100)
    WEnd
    EndFunc ;==>WMLoadFile

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

    Func WMSetVolume($wm_obj, $iVol)
    ;iVol can be between 0 and 100
    $wm_obj.settings.volume = $iVol
    EndFunc ;==>WMSetVolume

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

    Func WMFastForward($wm_obj)
    $wm_obj.controls.fastForward()
    EndFunc ;==>WMFastForward

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

    Func WMReverse($wm_obj)
    $wm_obj.controls.fastReverse()
    EndFunc ;==>WMReverse

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

    Func WMPause($wm_obj)
    $wm_obj.controls.pause()
    EndFunc ;==>WMPause

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

    Func WMPlay($wm_obj)
    $wm_obj.controls.play()
    EndFunc ;==>WMPlay

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

    Func WMStop($wm_obj)
    $wm_obj.controls.stop()
    EndFunc ;==>WMStop

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

    Func WMGetPosition($wm_obj)
    Local $pos
    $pos = $wm_obj.controls.currentPosition()
    Return $pos
    EndFunc ;==>WMGetPosition

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

    Func WMGetDuration($wm_obj)
    Local $len
    $len = $wm_obj.currentMedia.duration
    Return $len

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

    EndFunc ;==>WMGetDuration

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

    Func WMGetState($wm_obj)
    Local $sStates = "Undefined,Stopped,Paused,Playing,ScanForward,ScanReverse,Buffering,"
    $sStates &= "Waiting,MediaEnded,Transitioning,Ready,Reconnecting"
    Local $aStates = StringSplit($sStates, ",")
    $iState = $wm_obj.playState()
    Return $aStates[$iState]
    EndFunc ;==>WMGetState

    [/autoit]

    Mega

  • Net schlecht Xeno :thumbup:,

    gibts noch ne Möglichkeit die Lieder zu Pitchen und das Ausgangslevel herauszufinden ?, Du kannst mir auch gere eine Referenz schicken, dann kann ich das selber machen.

    Coole Sache :)

    greetz DJ

  • vielen vielen Dank Xeno. :thumbup:

    Ich habs jetzt auf die schnelle noch nicht probiert, aber schaut wie immer vielversprechend aus..

    Da merkt man doch gleich warum Du TOP Poster bist.. :thumbup:

    ---
    In "Independence Day" konnten die Windows-Erdcomputer problemlos mit denen der Außerirdischen kommunizieren. Was sagt uns das über unseren lieben Bill Gates? :D
    ---