Starplayer (MP3-Player)

  • Edit:  Micha_he: Ja, diverse Konfigurationsmöglichkeiten sind eingeplant. Playlist speichern/laden auch.

    Ich meinte mehr, wenn der Player gestartet wird, hat er automatisch die letzte Zusammenstellung. Sonst muss man sich ständig nach Schließen des Players, die alte Zusammenstellung wieder per "Playlist laden" nachladen.

    "Ort der INI-Datei"? @ScriptDir gefällt Dir nicht?

    Ich arbeite oft ohne Adminrechte ! Und wenn der Player dann z.B. unter "%systemdrive%\Programme" liegt, kann dort ein User nicht schreiben.

    Ich nutze für die INI-Festlegung immer folgenden Code:

    [autoit]

    ; Ini-Datei definieren
    $IniName="Test.ini"
    If FileExists(@userprofiledir & "\" & $IniName) Then
    $IniFile = @userprofiledir & "\" & $IniName
    Else
    $IniFile = @scriptdir & "\" & $IniName
    If IniWrite($iniFile,"dummy","dummy","0") = 0 Then
    $IniFile = @userprofiledir & "\" & $IniName
    If FileExists(@scriptdir & "\" & $IniName) Then
    FileCopy(@scriptdir & "\" & $IniName,@userprofiledir & "\" & $IniName)
    FileSetAttrib(@userprofiledir & "\" & $IniName,"-RSH")
    EndIf
    Else
    IniDelete($iniFile,"dummy")
    EndIf
    EndIf

    [/autoit]

    Edit: Falls Du die WAVE-Lautstärke speichern willst, so wäre es möglich:

    [autoit]

    #include <audio.au3>

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

    msgbox(0,"","WAVE Lautstärke ist : " & _GetMixerVolume($MIXERLINE_COMPONENTTYPE_SRC_WAVEOUT))

    [/autoit]

    Hier noch die "audio.au3":autoit.de/wcf/attachment/4653/

    Zur Nutzung dieses Forum's, ist ein Übersetzer für folgende Begriffe unerlässlich:

    "On-Bort, weier, verscheiden, schädliges, Butten steyling, näckstet, Parr, Porblem, scripe, Kompletenz, harken, manuel zu extramieren, geckukt, würglich, excell, acces oder Compilevorgeng"

    Einmal editiert, zuletzt von Micha_he (4. Mai 2009 um 15:42)

  • Hallo Oscar!
    Respekt, der Player ist dir sehr gut gelungen! :thumbup::thumbup::thumbup:
    Hab noch einen kleinen Bug entdeckt. Wenn die Option 'Start With Last PlayList' aktiviert ist, und man startet den Player mit einer anderen Datei als Parameter-Übergabe, dann ist kurz die übergebene Datei sichtbar, wird dann aber von der vorherigen Playlist überschrieben. Vllt kann die neue Datei oben auf der Playlist hinzugefügt werden. Optimal wäre auch noch eine Option für das automatische Abspielen beim Start abzuschalten (nur, wenn nicht eine Datei als Parameter übergeben wurde).

    Danke, dass du dieses tolle Skript mit uns teilst!

  • Das erste was mir aber wieder auffiel: Meine Ohren sind mir wieder abgefallen 8o

    Beim ersten Start stellt der Player wieder die Lautstärke auf 80 hoch und das ist LAUT bei meiner Anlage (Standard ca. 45).

    Zur Nutzung dieses Forum's, ist ein Übersetzer für folgende Begriffe unerlässlich:

    "On-Bort, weier, verscheiden, schädliges, Butten steyling, näckstet, Parr, Porblem, scripe, Kompletenz, harken, manuel zu extramieren, geckukt, würglich, excell, acces oder Compilevorgeng"

  • Micha_he: Achso, jetzt verstehe ich was Du die ganze Zeit meinst (ich werd' alt ^^ ). Ok, ich könnte den Standardwert für den ersten Start tiefer einstellen.

    Bei meinem Mixer ist die Lautstärke von Wave, LineIn und CD genau aufeinander abgestimmt. Die effektive Lautstärke wird über die Master-Lautstärke bzw. den Einsteller am Boxensystem getätigt. Und nun kommt Dein Player und verstellt mir grundsätzlich die WAVE-Lautstärke (und stellt sie auch nicht wieder zurück) !

    Wenn ich nachher etwas Zeit finde, ändere ich Deinen Player mal dahingehen ab unhd poste ich dann hier.

    Zur Nutzung dieses Forum's, ist ein Übersetzer für folgende Begriffe unerlässlich:

    "On-Bort, weier, verscheiden, schädliges, Butten steyling, näckstet, Parr, Porblem, scripe, Kompletenz, harken, manuel zu extramieren, geckukt, würglich, excell, acces oder Compilevorgeng"

    • Offizieller Beitrag

    Micha_he: Danke, aber ich habe im engl. Forum bereits eine kleine Funktion gefunden, mit der man den Wert auslesen kann. Das mache ich jetzt am Anfang und setze den Wert beim Programmende wieder zurück.

    Edit: Neue Version in Post #1! In der habe ich eure Vorschläge/Verbesserungen bereits eingebaut.

  • Geil, so meinte ich es. Ist die optimalste Lösung :thumbup:

    Edit: Eine Idee hätte ich noch - Die Funktion den ID3-Tag zu lesen ist ja schon drin. Nun könnte man unter den Optionen noch einen Punkt hinzufügen, statt dem Dateinamen (Standard) den ID3-Interprenten und ID3-Titel im ListView anzuzeigen. Nur wenn beiden (oder eine von beiden) Informationen nicht vorhanden sind, als Ausweichlösung den Dateinamen.

    Edit2: Neuer Vorschlag - Drag'nDrop eines Ordners geht zur Zeit noch nicht.

    Zur Nutzung dieses Forum's, ist ein Übersetzer für folgende Begriffe unerlässlich:

    "On-Bort, weier, verscheiden, schädliges, Butten steyling, näckstet, Parr, Porblem, scripe, Kompletenz, harken, manuel zu extramieren, geckukt, würglich, excell, acces oder Compilevorgeng"

    2 Mal editiert, zuletzt von Micha_he (6. Mai 2009 um 16:00)

    • Offizieller Beitrag

    Oscar . Läuft bis jetzt einwandfei. Das einzig was mir bis jetzt aufgefallen ist: Immer wenn ein neuer Titel angespielt wird drängt sich der Player in den Vordergrund. Das macht er auch, wenn er ins Tray minimiert ist, was bei der Arbeit am PC ziemlich nervig ist.

  • Oscar : Warum ist Dein Player auf MP3 beschränkt ?

    Ich habe das Script mal erweitert, das auch WAV genutzt werden kann und dabei keine Fehler feststellen können, bis auch die Anzeige der Titellänge. (im Script siehe $sFileTypes)

    Edit: Hier die WAV-Version so geändert ( Zeilen 467ff, 663ff, 706ff ) das auch die Spieldauer bei WAV-Dateien angezeigt wird.

    autoit.de/wcf/attachment/4707/

    Zur Nutzung dieses Forum's, ist ein Übersetzer für folgende Begriffe unerlässlich:

    "On-Bort, weier, verscheiden, schädliges, Butten steyling, näckstet, Parr, Porblem, scripe, Kompletenz, harken, manuel zu extramieren, geckukt, würglich, excell, acces oder Compilevorgeng"

    Einmal editiert, zuletzt von Micha_he (8. Mai 2009 um 15:24)

    • Offizieller Beitrag

    Jam00: hier hast Du ein Beispiel:

    Spoiler anzeigen
    [autoit]


    #include <ProgressConstants.au3>
    #include <GUIConstantsEx.au3>
    Opt('GUIOnEventMode', 1)

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

    $hGui = GUICreate('Test', 130, 100)
    GUISetOnEvent($GUI_EVENT_CLOSE, 'Ende')
    GUISetOnEvent($GUI_EVENT_PRIMARYUP, '_SetPos')

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

    $ProgressWidth = 120
    $Left = 5

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

    DllCall('uxtheme.dll', 'none', 'SetThemeAppProperties', 'int', 0) ; auf den klassischen Style umschalten
    $hProgress = GUICtrlCreateProgress($Left, 20, $ProgressWidth, 20, $PBS_SMOOTH)
    GUICtrlSetBkColor(-1, 0xEEEEEE)
    GUICtrlSetColor(-1, 0xEE8822)
    DllCall('uxtheme.dll', 'none', 'SetThemeAppProperties', 'int', 7) ; zurück zum Standard-Windowsstyle
    $hLabel = GUICtrlCreateLabel('', 55, 50, 50, 20)
    GUISetState()

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

    While True
    Sleep(50)
    WEnd

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

    Func Ende()
    Exit
    EndFunc ;==>Ende

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

    Func _SetPos()
    Local $aInfo = GUIGetCursorInfo($hGui)
    If $aInfo[4] <> $hProgress Then Return $GUI_RUNDEFMSG
    Local $Percent = Int(100 / $ProgressWidth * ($aInfo[0] - $Left))
    GUICtrlSetData($hProgress, $Percent)
    GUICtrlSetData($hLabel, $Percent & '%')
    EndFunc ;==>_SetPos

    [/autoit]
  • Oscar
    Vielen dank, ist echt cool!
    Eig. ist es ja ganz simpel, man muss nur die Idee habe ;)

    EDIT:
    Mir ist gerade noch was aufgefallen, wenn man in der Menüleiste ein Menü öffnet wird die Zeitangabe und Progessbar nicht aktualiesiert

    mfg. Jam00

    • Offizieller Beitrag

    Hei Oscar. Ich habe einen ganz üblen Bug im Player gefunden. Wenn du mit dem minimieren Button in der Titelzeile den Player minimierst . Dann im Tray den Player verläßt, wird beim nächsten Start der Player gar nicht erst angezeigt . Auch ein maximieren funzt dann nicht ,da der Player beim Start ja maximiert ist . In der Ini steht dann folgendes :
    [Settings]
    Volume=62
    OnTop=True
    Min2Tray=True
    LastPlaylist=False
    AutoplayOnStart=True
    MainPosX=-32000
    MainPosY=-32000
    Ich denke mal da baut deine_End Funktion kokolores.

  • Ja, das war bei meinem Desktop Radio auch am Anfang. Ich hab das so gelöst:

    [autoit]

    $PlayerX = IniRead(@ScriptDir & "\settings.ini", "settings", "Miniplayer x", "-1")
    $PlayerY = IniRead(@ScriptDir & "\settings.ini", "settings", "Miniplayer y", "-1")

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

    If $PlayerX > @DesktopWidth Or $PlayerX < 0 Then $PlayerX = -1
    If $PlayerY > @DesktopHeight Or $PlayerY < 0 Then $PlayerY = -1

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

    $miniplayer = GUICreate("Mini Player", 121, $inireadforhight, $PlayerX, $PlayerY)

    [/autoit]
    • Offizieller Beitrag

    Ich wäre auch nie darauf gekommen, wenn ich mir nicht zufällig mal aus deinem CipMemo die WM_MOVE und Wm_SIZE entliehen hätte und diese jetzt in meinem Taskmanager eingebaut hätte. Hab den selben Fehler wie du in deinem Starplayer ;( Aber hab des auch gelöst :D


    Edit habe deine WM_MOVE mal angepaßt , so sollte es gehen :D :

    [autoit]

    Func WM_MOVE($hWnd, $Msg, $wParam, $lParam)
    If $hWnd = WinGetHandle($hGui) Then
    Local $pos = WinGetPos($hGui)
    WinMove($hInfoGUI, '', $pos[0] + 636, $pos[1])
    If $pos[0] < 0 Or $pos[1] < 0 Then Return $GUI_RUNDEFMSG
    $iMainPosX = $pos[0]
    $iMainPosY = $pos[1]
    EndIf
    Return $GUI_RUNDEFMSG
    EndFunc ;==>WM_MOVE

    [/autoit]