Musik

  • hallo leute
    ich arbeite gerade an einem musik abspiel programm
    das sieht ja alles schon ganz gut aus aber wie schaffe ich es, dass wenn ein lied vorbei ist, dass der dann direkt das nächste macht und während nem lied soll man natürlich auch noch alles andere machen können
    danke
    DFPWare

    Spoiler anzeigen

    #include <Sound.au3>
    #include <File.au3>
    #include <GUIConstantsEx.au3>

    Global $titel = _FileListToArray(@ScriptDir&"\Music","*.mp3",1)
    Global $titelnummer = 1
    Global $sound
    Global $volume = 100
    Global $titelgui = "Music Player - " & $titel[$titelnummer]
    Global $size = UBound($titel)
    Global $var = 1
    Global $balken
    Dim $groessetitel[$size]
    Dim $listitem[$size]
    Dim $string
    Dim $length[5]

    SoundSetWaveVolume($volume)

    GUICreate($titelgui,500,500)
    $B1 = GUICtrlCreateButton("<",10,10,50,50)
    $B2 = GUICtrlCreateButton(">",70,10,50,50)
    $B3 = GUICtrlCreateButton("+",130,10,50,50)
    $B4 = GUICtrlCreateButton("-",190,10,50,50)
    $B5 = GUICtrlCreateButton("| |",250,10,50,50)
    $L1 = GUICtrlCreateLabel("Volume: "&$volume&"%",10,70)
    $L2 = GUICtrlCreateLabel("Titelanzahl: "&$size-1,120,70)
    $L3 = GUICtrlCreateLabel("Aktueller Titel: "&$titelnummer,230,70)
    $P = GUICtrlCreateProgress(10,100,480,20)

    $list = GUICtrlCreateListView("Titel |Größe|Länge",10,130,480,390)
    GUISetState()
    getgroesse()
    listefuellen()
    play($titelnummer)


    While 1
    $msg = GUIGetMsg()
    Select
    Case $msg = $GUI_EVENT_CLOSE
    Exit
    Case $msg = $B1
    vorher()
    Case $msg = $B2
    nachher()
    Case $msg = $B3
    lauter()
    Case $msg = $B4
    leiser()
    Case $msg = $B5
    playpause()
    EndSelect

    For $i=1 To $size-1
    Switch $msg
    Case $listitem[$i]
    anderer($i)
    EndSwitch
    Next

    setbalken()
    WEnd


    Func play($nummer)
    $sound = _SoundOpen(@ScriptDir&"\Music\"&$titel[$nummer])
    _SoundPlay($sound, 0)
    EndFunc

    Func vorher()
    If $titelnummer >= 2 Then
    _SoundClose($sound)
    $titelvorher = $titelgui
    $titelnummer = $titelnummer - 1
    play($titelnummer)
    $titelnachher = "Music Player - " & $titel[$titelnummer]
    WinSetTitle($titelvorher,"",$titelnachher)
    $titelgui = $titelnachher
    GUICtrlSetData($L3,"Aktueller Titel: "&$titelnummer)
    Else
    _SoundClose($sound)
    $titelvorher = $titelgui
    $titelnummer = $size-1
    play($titelnummer)
    $titelnachher = "Music Player - " & $titel[$titelnummer]
    WinSetTitle($titelvorher,"",$titelnachher)
    $titelgui = $titelnachher
    GUICtrlSetData($L3,"Aktueller Titel: "&$titelnummer)
    EndIf
    EndFunc

    Func nachher()
    If $titelnummer <= $size-2 Then
    _SoundClose($sound)
    $titelvorher = $titelgui
    $titelnummer = $titelnummer + 1
    play($titelnummer)
    $titelnachher = "Music Player - " & $titel[$titelnummer]
    WinSetTitle($titelvorher,"",$titelnachher)
    $titelgui = $titelnachher
    GUICtrlSetData($L3,"Aktueller Titel: "&$titelnummer)
    Else
    _SoundClose($sound)
    $titelvorher = $titelgui
    $titelnummer = 1
    play($titelnummer)
    $titelnachher = "Music Player - " & $titel[$titelnummer]
    WinSetTitle($titelvorher,"",$titelnachher)
    $titelgui = $titelnachher
    GUICtrlSetData($L3,"Aktueller Titel: "&$titelnummer)
    EndIf
    EndFunc

    Func lauter()
    If $volume < 100 Then
    $volume = $volume + 10
    EndIf

    SoundSetWaveVolume($volume)
    GUICtrlSetData($L1,"Volume: "&$volume&"%")
    EndFunc

    Func leiser()
    If $volume > 0 Then
    $volume = $volume - 10
    EndIf

    SoundSetWaveVolume($volume)
    GUICtrlSetData($L1,"Volume: "&$volume&"%")
    EndFunc

    Func playpause()
    If $var = 1 Then
    _SoundPause($sound)
    GUICtrlSetData($B5,"|>")
    $var = $var*-1
    Else
    _SoundResume($sound)
    GUICtrlSetData($B5,"| |")
    $var = $var*-1
    EndIf
    EndFunc

    Func listefuellen()
    For $i=1 To $size-1
    $length1 = _SoundLength(@ScriptDir&"\Music\"&$titel[$i])
    $length2 = StringSplit($length1,":")
    $length = $length2[2]&":"&$length2[3]
    $listitem[$i] = GUICtrlCreateListViewItem($titel[$i]&"|"&$groessetitel[$i]&"|"&$length,$list)
    Next
    EndFunc

    Func getgroesse()
    For $i=1 To $size-1
    $groessetitel[$i] = FileGetSize(@ScriptDir&"\Music\"&$titel[$i])/1000000
    $groessetitel[$i] = Round($groessetitel[$i],2)
    Next
    EndFunc

    Func anderer($anderer)
    _SoundClose($sound)
    $titelvorher = $titelgui
    play($anderer)
    $titelnachher = "Music Player - " & $titel[$anderer]
    WinSetTitle($titelvorher,"",$titelnachher)
    GUICtrlSetData($L3,"Aktueller Titel: "&$anderer)
    $titelgui = "Music Player - " & $titel[$anderer]
    EndFunc

    Func setbalken()
    $length = _SoundLength($sound)
    $pos = _SoundPos($sound)
    $string1 = StringSplit($pos,":")
    $string2 = StringSplit($length,":")
    $lengthrichtig = $string2[2]*60+$string2[3]
    $posrichtig = $string1[2]*60+$string1[3]
    $balken = $posrichtig/$lengthrichtig*100
    GUICtrlSetData($P,$balken)
    ;~ MsgBox(0,"",$balken)
    EndFunc

  • Hab mich noch nie mit der Sound.au3 beschäftigt, hab aber mal kurz reingeschaut und gesehen, da gibts eine Funktion die dich interessieren könnte:

    [autoit]

    _SoundLength($aSndID, $iMode = 1)

    [/autoit]


    Überprüfen ob die Zeit überschrtitten ist, dann das nächste.

  • durch mein skript blickt ja doch keiner durch xD


    dein Skript ist nicht lauffähig:

    • #include <ButtonConstants.au3> fehlt
    • durch fixen Pfad erscheint nach eifügen obiger Zeile ein Arrayfehler
    • nach Anpassen auf ein Verzeichnis, dass mp3-Files enthält:
      Code
      C:\Programme\AutoIt3\Examples\Tests\m33DFPWare.au3 (151) : ==> Array variable has incorrect number of subscripts or subscript dimension range exceeded.:
      $length = $length2[2] & ":" & $length2[3]
      $length = ^ ERROR

    weiter habe ich nicht getestet, zurück zur Frage AdlibRegister sollte helfen,

    mfg autoBert

  • hab ja gesagt ich bastel mal an einem selber rum, und hier ist er, kannst ihn ja mal angucken, vllt hilfts dir:

    Spoiler anzeigen
    [autoit]


    ;*******************CODET BY BadBunny (B.B)*************http://www.autoit.de

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

    #include <Sound.au3>
    #include <File.au3>
    #include <GUIConstantsEx.au3>
    #include <Array.au3>
    #Include <GuiListView.au3>
    #include <WindowsConstants.au3>
    #include <ButtonConstants.au3>

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

    Opt("guioneventmode", 1)
    Global $sPath = @DesktopDir & "\Musik"
    Global $files = _FileListToArray($sPath, "*.mp3")
    Dim $listitem[Ubound ($files)]

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

    Global $lied = 1
    Global $sound = _SoundOpen(@DesktopDir & "\Musik\" & $files[$lied])
    Global $titel = $files[$lied]
    _SoundPlay($sound, 0)
    Global $leng = _SoundLength($sound, 2)
    Global $len2 = _SoundLength($sound, 1)
    GUICreate($titel, 500, 500)
    GUISetOnEvent($GUI_EVENT_CLOSE, "_sound_away")
    Global $hProgress = GUICtrlCreateProgress(0, 430, 500, 50, -1 )
    Global $time = GUICtrlCreateLabel("" & "/" & $len2, 200, 480, 400)
    Global $stop = GUICtrlCreateButton("||", 0, 0, 50, 50)
    GUICtrlSetOnEvent($stop, "_stop")
    GUICtrlSetFont(-1, 15)
    Global $weiter = GUICtrlCreateButton("I>", 50, 0, 50, 50)
    GUICtrlSetOnEvent($weiter, "_weiter")
    GUICtrlSetFont(-1, 15)
    Global $nachstes = GUICtrlCreateButton("Nächstes", 250, 0, 80, 50)
    GUICtrlSetOnEvent($nachstes, "_nachstes")
    GUICtrlSetFont(-1, 10)
    Global $vorheriges = GUICtrlCreateButton("Vorheriges", 170, 0, 80, 50)
    GUICtrlSetOnEvent($vorheriges, "_vorheriges")
    GUICtrlSetFont(-1, 10)
    $ausgewahltButton=GUICtrlCreateButton ("Auswahl hören", 380, 0, 120, 50,$BS_DEFPUSHBUTTON )
    GUICtrlSetOnEvent ($ausgewahltButton, "_auswahl_horen")
    GUICtrlSetFont (-1, 10)
    $siehoren = GUICtrlCreateLabel("Sie hören: " & $files[$lied], 0, 60, 500, 30)
    GUICtrlSetFont(-1, 15)
    $listview=GUICtrlCreateListView ("Titel |Länge ", 0, 90, 500, 300)
    $slider = GUICtrlCreateSlider (-9, 400, 518, 25)
    GUISetState()
    listefuellen()
    $gesammt = 100 / $leng
    _GUICtrlListView_EnsureVisible($listview, $lied-1)
    _GUICtrlListView_SetItemSelected($listview, $lied -1)
    _GUICtrlListView_ClickItem($listview, $lied -1)

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

    While Sleep(200)
    GUICtrlSetData($hProgress, $gesammt * _SoundPos($sound, 2))
    GUICtrlSetData($time, _SoundPos($sound, 1) & "/" & $len2)

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

    ;~ $msg=GUIGetMsg ()
    ;~ Switch $msg
    ;~ Case $GUI_EVENT_CLOSE
    ;~ Exit
    ;~ EndSwitch
    ;~ ToolTip("Lied Position: " & _SoundPos($sound, 1))
    If _SoundPos($sound, 2) >= _SoundLength($sound, 2) Then
    _nachstes()
    EndIf
    WEnd

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

    Func _sound_away()
    _SoundClose($sound)
    Exit
    EndFunc ;==>_sound_away

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

    Func _stop()
    _SoundPause($sound)
    EndFunc ;==>_stop

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

    Func _weiter()
    _SoundResume($sound)
    EndFunc ;==>_weiter

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

    Func _nachstes()
    _SoundClose($sound)
    $lied += 1
    If $lied >= UBound($files) Then
    $lied = 1
    EndIf
    $sound = _SoundOpen(@DesktopDir & "\Musik\" & $files[$lied])

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

    _SoundPlay($sound)
    $leng = _SoundLength($sound, 2)
    $len2 = _SoundLength($sound, 1)
    $gesammt = 100 / $leng
    GUICtrlSetData($hProgress, $gesammt * _SoundPos($sound, 2))
    GUICtrlSetData($time, _SoundPos($sound, 1) & "/" & $len2)
    GUICtrlSetData($siehoren, $files[$lied])
    _GUICtrlListView_EnsureVisible($listview, $lied-1)
    _GUICtrlListView_SetItemSelected($listview, $lied -1)
    _GUICtrlListView_ClickItem($listview, $lied -1)
    WinSetTitle($titel, "", $files[$lied])
    $titel = $files[$lied]
    EndFunc ;==>_nachstes

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

    Func _vorheriges()
    _SoundClose($sound)
    $lied -= 1
    If $lied < 1 Then
    $lied = UBound($files) - 1
    EndIf
    $sound = _SoundOpen(@DesktopDir & "\Musik\" & $files[$lied])
    Do
    _SoundPlay($sound, 0)
    Until _SoundStatus($sound) = "playing"
    $leng = _SoundLength($sound, 2)
    $len2 = _SoundLength($sound, 1)
    $gesammt = 100 / $leng
    GUICtrlSetData($hProgress, $gesammt * _SoundPos($sound, 2))
    GUICtrlSetData($time, _SoundPos($sound, 1) & "/" & $len2)
    GUICtrlSetData($siehoren, $files[$lied])
    _GUICtrlListView_EnsureVisible($listview, $lied-1)
    _GUICtrlListView_SetItemSelected($listview, $lied -1)
    _GUICtrlListView_ClickItem($listview, $lied -1)
    WinSetTitle($titel, "", $files[$lied])
    $titel = $files[$lied]
    EndFunc ;==>_vorheriges

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

    Func listefuellen()
    For $i = 1 To Ubound ($files) -1
    $length1 = _SoundLength(@DesktopDir & "\Musik\" & $files[$i])
    $listitem[$i] = GUICtrlCreateListViewItem($files[$i] & "|" & $length1 , $listview )
    Next
    EndFunc ;==>listefuellen

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

    Func _auswahl_horen()
    $select=_GUICtrlListView_GetSelectedIndices($listview, False)
    _SoundClose($sound)
    $lied = $select +1

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

    $sound = _SoundOpen(@DesktopDir & "\Musik\" & $files[$lied])

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

    _SoundPlay($sound)
    $leng = _SoundLength($sound, 2)
    $len2 = _SoundLength($sound, 1)
    $gesammt = 100 / $leng
    GUICtrlSetData($hProgress, $gesammt * _SoundPos($sound, 2))
    GUICtrlSetData($time, _SoundPos($sound, 1) & "/" & $len2)
    GUICtrlSetData($siehoren, $files[$lied])
    _GUICtrlListView_EnsureVisible($listview, $lied-1)
    _GUICtrlListView_SetItemSelected($listview, $lied -1)
    _GUICtrlListView_ClickItem($listview, $lied -1)
    WinSetTitle($titel, "", $files[$lied])
    $titel = $files[$lied]

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

    EndFunc

    [/autoit]


    PS: ich hab Lautstärke nicht drin , da ich W7 hab und die Wave funktion nicht klappt. Die Bass.au3 hab ich nicht verwendet weil es damit Probleme gab.
    Hoffe konnte helfen.

    Edit Oscar: Spoiler-Tags gesetzt. Bitte bei längeren AutoIt-Quelltexten zusätzlich den Spoiler benutzen.