BeatIt - [Music Player mit Equalizer, CrossfadeEx, ...]

  • BeatIt ist ein Musicplayer mit freiem Equalizer.
    Bei Fragen bitte fragen :D

    Changelog [24/03/2015]:

    Spoiler anzeigen

    -Bugfixes
    -Lock Feature hinzugefügt (Idee von turbobaby)

    Was aktuell geplant wird:

    Spoiler anzeigen

    -Hilfe Programm einbauen
    -Hall / Echo für Equalizer
    -Am Equalizer wird gerade gebastelt; Der wird wahrscheinlich am Ende ganz speziell sein :)

    Was dieser Player bietet:

    Spoiler anzeigen


    Unterstützte Datei-Formate:
    .mp3, .wav, .wma, .m4a, .aac, .ogg

    Player:
    Speichert und lädt alle Songs der Playlist
    Repeat-Funktion
    List-Repeat-Funktion
    Shuffle-Funktion
    Crossfade
    Crossfade bei Positionswechsel
    Fade bei Play/Pause
    Beliebig viele Songs plazieren
    Songsuche

    Equalizer (EQ):
    Speichert und lädt Frequenzen und Einstellung
    Simpler On/Off Button
    Scrollbar
    db Add/Sub mit Slidern
    Beliebig viele Frequenzen
    Pitch&Speed Regler
    Lautstärke Regler

    Design:
    Übersichtlich
    Simpel
    Fullscreen-only (Resizable wieder entfernt wegen schlechtem Aussehen)
    Bald auch farblich änderbar (<- Kommt mit Hilfe-Programm)

    Download:
    Unten Als Script mit zusätzlichen Includes.

    Desweiteren Danke an @Kanashius der mich zwischendurch bei dem Projekt unterstützt hat.
    Und einen großen Dank an @chesstiger, der mir bei dem Equalizer geholfen hat, und an die Entwickler der einzelnen UDFs.

  • Ich kann den Code leider nicht ausführen...
    Erst musste ich die includes aus dem include ordner in das verzeichnis kopieren, wo die beatit-au3 liegt... dann die id3.au3 ausm internet suchen... es kommt ne fehlermeldung beim initialisieren mit _bass_getinfo. (Zeile 176). Der tritt auch bei den compilierten dateien auf. (Generell sollte vermieden werden, bei einer funktion [$index] zu verwenden, da, sobald das element nicht existiert eine fehlermeldung kommt. also dort error-handling betreiben. (auch wenn es mehr arbeit macht). nach auskommentieren der genannten zeile kann ich es ausführen, die musik wird aber nicht abgespielt.

    Ideen:
    2 Songs gleichzeitig (zum faden)
    Den Equalizer mehr grafisch zu machen (wer möchte schon jede frequenz einzeln erhöhen, etc. :D)

    Ich würde dir deinen Player auch gerne mit GDI+ verschönern ;) Hab da schon einiges mit "Bild-Guis" gemacht.
    Was das laden mehrerer Bibliotheken angeht: Vorschlag zur Nutzung einer Datenbank. Die Musik kann dann dort abgespeichert werden. Dadurch müsste nur einmal beim Eintragen der Musik das ganze Verzeichnis durchsucht werden. Danach geht der Zugriff über die Datenbank, was natürlich viel schneller ist :). (Dabei kann ich dir auch gerne behilflich sein).
    Was die Verzeichnisse angeht: Eine Empfehlung zur Treeview Ordnerauswahl. (Dazu hab ich auch mal eine UDF erstellt: FileExplorere List and TiewView ) Dann kann schöner in den Ordnern navigiert werden.

    Ich hoffe du kannst die Fehler beheben :) und viel spaß beim umsetzen meiner Ideen ;)
    Falls ich dir helfen kann schreib mir gerne eine PN.

    Viel Spaß noch, Kanashius

  • Ich geb' mal meinen Senf hier mit zu in der Hoffnung das das auch umgesetzt wird.

    Du kannst mit der Bass-UDF Beats messen bzw. erkennen. Ich wünsche mir das du eine Funktion einbaust die die Beats zweier Lieder (beim Übergang) übereinander legt und dann langsam rüberfadet.
    Das hört sich um Welten besser an als erstmal den Beat auslaufen zu lassen und bei einem anderen Lied wieder einlaufen zu lassen.

    Wäre super wenn du das umsetzen kannst. Beat-Erkennung gibt es als Beispiel irgendwo im Internet.

  • Er verfügt über einen freien Equalizer; Der Benutzer kann jede beliebige Frequenz eingeben, und jede beliebige Stärke, um diese zu verändern.


    Das sollte so aber nicht sein.
    Kenne die dahintersteckenden Funktionen der BASS UDF jetzt nicht, aber wenn dort keine Sicherheitsmechanismen eingebaut sind, kann man sich so auch die Lautsprecher beschädigen.

    Die mir bekannten Equalizer erlauben meist nur einen Boost von +6db pro Band und vesuchen auch die Mehrfachverwendung auszuschließen (z.B. 3 Bänder @30hz +6db macht +18db @30hz und bringt mit ausreichend Verstärkerleistung den Subwoofer zum anschlagen).

    Einmal editiert, zuletzt von nuts (13. Januar 2015 um 19:23)

  • Ok. Was ich also als nächstes adden werde:
    Ein Maximum an db add. (Ich glaube ich nehme "+8")
    Ein neues Design für den EQ (Mit Slidern - hier brauche ich dringend Hilfe, da aufgrund der unbegrenzten Menge an Freqs usw. die Slider selbst wie eine Liste geslided werden müssen. Sodass ich die Slider für die Frequenzen erstellen kann, und wenn es mehr werden, als in den dafür vorgesehenen Bereich passen, dann soll eine Slidebar am Rand erscheinen. [Das wäre vielleicht etwas für Kanashius])
    Crossfade (so nennt man das glaube ich, wenn die Songs "überfaden")
    Und ich erkundige mich mal, wie ich das mit dem Einlesen regele (Dafür und fürs Design brauche ich wahrscheinlich Hilfe..)
    Das _BASS_GetInfo() Problem tauchte bei mir auch auf, funktioniert aber mittlerweile; Deshalb ist es etwas merkwürdig, dass es bei Kanashius immernoch zum Absturz führt. Wenn jemand eine Lösung dafür hat bitte ich um einen Kommentar. Bis dahin nehme ich diese Funktion heraus.

    Spoiler anzeigen

    Überraschung!


    MfG Donkey

    3 Mal editiert, zuletzt von ProgrammingDonkey (5. März 2015 um 22:43)

  • Ich denke mal einfach "+3" oder "+6". Warum?
    Ich werde jedenfalls "+8" / "-8" als maximum nehmen, da die zwei db wahrscheinlich noch gehen.
    Die Idee für den Player ist ja an sich entstanden, da ich mir Senneheiser Kopfhörer für 179€ gekauft habe, und den vollen Sound aus ihnen herauskriegen möchte. Da der Player auf meinem Handy als niedrigste Frequenz 31 drin hat, und meine Kopfhörer schon ungefähr bei 16 anfangen, wollte ich halt einen 'freien' EQ.

    Spoiler anzeigen

    Überraschung!


    MfG Donkey

  • Habe was gefunden was du noch beheben solltest.
    wenn man keinen ordner auswählt sondern auf Abbrechen klickt, öffnet sich der player ohne playlist und reagiert nicht wenn man ihn schließen will.

  • Habe was gefunden was du noch beheben solltest.
    wenn man keinen ordner auswählt sondern auf Abbrechen klickt, öffnet sich der player ohne playlist und reagiert nicht wenn man ihn schließen will.


    Behoben. Danke für die Meldung.

    Spoiler anzeigen

    Überraschung!


    MfG Donkey

  • Hi ein schöner Player, gefällt mir schon mal ganz gut.
    Kann man wirklich noch viel damit machen.

    1. Für EQ schlage ich folgendes vor:
    Ich habe ein Mischpult mit 6 Regler pro Kanal für EQ. Mit dem obersten kann man die Höhen und mit dem untersten die Bässe anheben oder absenken. Welche Frequenzen da genau gedreht werden weiß ich nicht denke aber da gibt es irgendwo eine Standard Einstellung. Die anderen Potis sind in zwei Gruppen aufgeteilt. Jeweils eins für Frequenz und das andere für die eingestellte Frequenz anzuheben oder abzusenken. Vermute auch das die Frequenzen dann in einem Bogen (Welle) verstellt werden und nicht nur die eine Frequenz selber. Meiner Meinung reicht das vollkommen aus für einen EQ im Player da man meistens eh schon abgemischte Musik abspielt. Einen 32 Spurigen Frequenz EQ oder so benötigt man eher für Liveabstimmungen.

    2. Kannst du die Symbole unter der Playtaste was größer machen? Leider erkennt man die sehr schlecht.

    3. Das Ausklappmenü für die soundkarte auszuwählen hat wohl ein Bug. Wenn ich draufklicke öffnet sich unten nur ca. 1mm was und man kann nicht sehen was ich auswählen soll. Wenn ich aber mit der Taste nach unten gehe und Enter drücke, dann wählt sich meine Soundkarte aus.

    4. Habe ich noch nicht verstanden wofür die OPEN Taste oben da ist. Hat es eine Funktion?

    5. kBits funktioniert nicht richtig. Der zeigt mir fast überall 256 bis 320 kBits auch bei langsamer Musik.

    6. Es wäre schön wenn man noch ein Feld hätte wo man nach Namen suchen könnte.

    Na ja ich könnte jetzt noch jede Menge so weiter schreiben :D sollte ja nur so als Gedanke dienen

  • 4: Dann wird der Ordner, der in der InputBox dort steht in der ListView unten angezeigt
    5: Dort werden die kBits angezeigt, die unter den Dateiinfos (Rechtsklick->Eigenschaften->Details) eingetragen ist. Je höher die kBits, desto höher die Qualität. (kBits<>BPM)

    Schreib gerne weiter. Je mehr Infos, desto besser wirds.

  • 4: Dann wird der Ordner, der in der InputBox dort steht in der ListView unten angezeigt

    Bei mir werden die Dateien unten automatisch angezeigt wenn ich oben einen Ordner anklicke. Vielleicht sollte die Taste Reload oder so heißen falls man neue Dateien in seinem Ordner hat.

    5: Dort werden die kBits angezeigt, die unter den Dateiinfos (Rechtsklick->Eigenschaften->Details) eingetragen ist. Je höher die kBits, desto höher die Qualität. (kBits<>BPM)

    Ach so ich Dummerchen, ich habe an die Geschwindigkeit gedacht...

    Schreib gerne weiter. Je mehr Infos, desto besser wirds.

    Na dann z.B. noch:
    7. Du hast oben eine große leere Leiste. Mach da doch wenigstens eine Uhr rein. Da du das Programm als Fullscreen benutzt ist es nicht schlecht bei einer Party z.B. zu wissen wie viel Uhr wir grade haben.
    8. Wenn man links unten in der Leiste eine Datei doppelt anklickt, dann soll diese sofort in die Playliste ganz unten hinzugefügt werden.

  • Also. Kanashius hat manche Fragen schon beantwortet. Zum Rest:
    Das Soundkarten Auswahl Ding wird entfernt
    Der Equalizer bleibt so. (Nur gibt es in der neuen Version Checkboxen neben jeder Frequenz, und Ausschalt-Bugs wurden behoben)
    Doppelklick einfügen ist eine gute Idee.
    Die lehre Leiste plane ich als Mouseover-Hilfe; Wenn man über ein Control schweift, soll dort oben eine kleine Beschreibung stehen, da dass Programm sonst etwas kompliziert für den Durchschnitts-Nutzer werden könnte.

    PS: Wenn ich von einer neuen Version rede, so ist diese schon fertig auf meinem PC, und wird jetzt gerade nur noch getestet.
    Ich werde am Ende noch ein externes Hilfe-Programm coden, wo zu jedem Control eine längere Erklärung und Instruktion zu finden ist, und sich die einzelnen Farben einstellen lassen.

    EDIT: Neue Version ist released; Ich hoffe, dass Kanashius mal einen Blick auf seine Soundkarten Auswahl wirft :/

    Spoiler anzeigen

    Überraschung!


    MfG Donkey

    Einmal editiert, zuletzt von ProgrammingDonkey (3. März 2015 um 20:37)

  • Vielleicht kriegst du noch schnellere Dateianalyse?
    Das dauert ja Ewig wenn man 100 Dateien ins Fenster reinzieht bis der fertig ist. Geht doch bestimmt schneller an die Information der Dateien ran zu kommen? Windows Explorer zeigt diese schließlich auch sofort und nicht erst nach 20 bis 30 Sekunden.
    Ansonsten gefällt mir das mit den Kontrollkästchen jetzt besser, allerdings was ich besser finden würde ist, wenn ich ein EQ eingestellt habe, dass ich dass eventuell mit den Tasten Plus und Minus oder Pfeiltasten rechts links noch verändern kann wenn ich grade drauf stehe. Denn leider kann man da bis jetzt nur hinzufügen und löschen aber nicht ändern. Und vielleicht kannst du da auch wenn die Zahl im Plus ist ein Pluszeichen davor setzen, das macht die Optik glaub ich besser?

    Zu Fullscreen: Ich persönlich finde diese Option sehr Geil aus dem Grund, weil z.B. wenn man eine Party feiert und man stellt sein Laptop mit Musik hin, dann können die Leute da die Lieder anklicken ohne die anderen Programme zu sehen und zu Bedienen. Ich würde mir dafür aber noch ein paar Funktionen wünschen.
    1. Irgendwie einstellen können, dass man den Fullscreen nur mit dem vergebenen Passwort verlassen kann.
    2. Eine Option bieten um im Normalmodus arbeiten zu können also nicht im Fullscreen.
    3. Das Programm beenden dann wenn 1 Aktiv auch nur mit Passwort.

    Dann würde ich dich bitten die Auswahl der Soundkarten nicht rauszuholen oder diese wenigstens dann in den Menüs auswählen zu können. Denn ich habe mehrere Soundkarten. Ich würde mir sogar wünschen das man damit auch streamen auf die Mediastationen kann. Ich habe zu Hause SONOS System und kann mit Win-Explorer z.B. direkt Musik drauf streamen. Das wäre richtig Geil wenn ich dafür so einen MediaPlayer hätte mit dem ich die Songs auch speichern und somit z.B. schon vorbereitete Playlisten laden und abspielen könnte. Wenn das möglich wäre... :thumbup:

    Du machst hier eine gute Arbeit, mach weiter so und gib nicht auf! Danke dafür!

  • Die Passwort Idee passt zwar nicht zu einem MusicPlayer, aber lässt sich ntürlich einbauen.
    FullScreen Toggle müsste eigentlich ganz simpel gehen; (Ich gucke mal..)
    Auswahl der Soundkarten kann ich mir nur angucken; Die hatte Kanashius eingebaut
    Das streamen wird hier leider nicht ermöglicht werden können..
    Bei der Dateianalyse gucke ich mal, ob ich den Prozess kürzen kann ;)
    Jedenfalls danke für die konstruktive Kritik :)

    Spoiler anzeigen

    Überraschung!


    MfG Donkey

  • Ich hatte mal was ähnliches geschrieben gehabt, ist aber schon laaaaange her. Damals hatte ich die Amazone Cover API benutzt gehabt um passend zum Lied das Albumcover anzuzeigen.

    Andy hat mir ein Schnitzel gebacken aber da war ein Raupi drauf und bevor Oscar das Bugfixen konnte kam Alina und gab mir ein AspirinJunkie.

  • @chip Für ein AlbumCover ist leider nicht genügend Platz im GUI / Ich setze den Platz lieber für praktische Sachen ein.
    @turbobaby Ich konnte die Wartezeit leider nicht verkürzen :(, werde nun aber mit den restlichen Ideen weiterarbeiten.

    Spoiler anzeigen

    Überraschung!


    MfG Donkey

  • Wenn ihr das nächste Update (mit grafisch deutlich verbessertem EQ und CrossfadeEQ) schneller haben wollt, dann sagt mir, warum die MsgBox mehrfach aufgerufen wird:

    [autoit]

    Dim $ABC[2][2]

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

    Dim $ABCD[2][2]

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

    $ABCD[0][0] = 1

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

    $ABCD[0][1] = 2

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

    $ABCD[1][0] = 3

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

    $ABCD[1][1] = 4

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

    While 1

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

    If $ABC <> $ABCD Then

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

    $ABC = $ABCD

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

    MsgBox(0,0,0)

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

    EndIf

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

    WEnd

    [/autoit][autoit][/autoit][autoit][/autoit]
    Spoiler anzeigen

    Überraschung!


    MfG Donkey

  • Soweit mir bekannt, kann man Arrays nicht als Ganzes vergleichen sondern immer nur Elemente der Arrays miteinander.

    [autoit]


    Dim $ABC[2][2]
    Dim $ABCD[2][2]

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

    $ABC[0][0] = 1
    $ABC[0][1] = 6
    $ABC[1][0] = 3
    $ABC[1][1] = 4

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

    $ABCD[0][0] = 1
    $ABCD[0][1] = 2
    $ABCD[1][0] = 3
    $ABCD[1][1] = 4

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

    Local $ArrRowCount = UBound( $ABCD, 1 )
    Local $ArrColumnsCount = UBound( $ABC, 2 )

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

    For $LC = 0 To $ArrRowCount - 1

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

    For $LC2 = 0 To $ArrColumnsCount -1

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

    If $ABC[$LC][$LC2] <> $ABCD[$LC][$LC2] Then
    $ABC[$LC][$LC2] = $ABCD[$LC][$LC2]
    MsgBox(0,0,0)
    EndIf

    Next

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

    Next

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

    ~IRC: irc.afterworkchat.de #autoit