AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Projekte SmallTune [0.3.1]
Thema durchsuchen
Ansicht
Themen-Optionen

SmallTune [0.3.1]

Ein Thema von Mithrandir · begonnen am 13. Nov 2009 · letzter Beitrag vom 25. Jun 2019
Antwort Antwort
Seite 5 von 8   « Erste     345 67     Letzte »    
Benutzerbild von Mithrandir
Mithrandir
Registriert seit: 27. Nov 2008


Vorgeplänkel
(bei Desinteresse einfach überlesen. )

Im September gabs ja den Thread mit dem Abspielen einer MP3-Datei über DirectX. Knapp einen Monat später hat turboPASCAL einen kleinen MP3-Player veröffentlicht. Irgendwann hat meine Wenigkeit dann nachgezogen.

Allerdings war der Player damals sehr "featurearm" und eigentlich mehr ein "Proof-of-Concept". Mittlerweile ist SmallTune gewachsen. Und zwar richtig.

Beschreibung
"SmallTune" ist ein kleiner Audioplayer für Windows. Er ist primär dafür geschaffen worden, klein und unauffällig das zu tun, was so ein Player nunmal tun soll: Musik abspielen.

SmallTune startet in der Notification Area, legt keinen Eintrag in der Taskleiste an. Das Programm nutzt zum Verwalten der Playlist eine SQL-Datenbank. Somit sind auch MP3-Sammlungen jenseits der Zehntausende kein Problem. Die Listview, die zum Anzeigen der Playlist benutzt wird, ist virtuell. Somit stellen auch hier die großen Datenmengen kein Problem dar.

Beim Import werden, soweit möglich, die ID3-Tags aus den Dateien ausgelesen (bislang nur MP3/MP2). Dies führt natürlich dazu, dass der Import-Vorgang bei mehreren 1000 Dateien seine paar Minütchen dauert. Die Playlist besitzt eine Filterfunktion.

Außerdem kann er Internetradio wiedergeben, eine komplette Verwaltung ist integriert. Das Programm ist multilingual.

Außerdem ist es möglich, MySpace, Wikipedia und Google mit dem aktuellen Künstler direkt aus dem Programm heraus zu füttern.

//Edit: Kleiner technischer Nachtrach: Es wurde komplett auf die VCL verzichtet.


Download, Screenshots und Changelog
ScreenshotsChangelogDownloads
//Edit 26.06.2019: Siehe Anhänge

Lizenz
SmallTune ist unter der MPL veröffentlicht.

Danksagung
Ein riesiges DANKE geht an turboPASCAL, der mich tatkräftig bei der Entwicklung unterstützt.

Desweiteren an HalloDu, lbccaleb und Luckie, die mir direkt oder indirekt geholfen haben.

Viel Spaß beim Testen...

//Edit 26.06.2019: Links auf Archive.org geändert, Downloads als Anhänge hinzugefügt
Angehängte Dateien
Dateityp: zip SmallTune_current_bin.zip (474,9 KB, 11x aufgerufen)
Dateityp: zip SmallTune_current_src.zip (400,4 KB, 11x aufgerufen)
"In einer Zeit universellen Betruges wird das Aussprechen der Wahrheit zu einem revolutionären Akt." -- 1984, George Orwell

Geändert von Mithrandir (26. Jun 2019 um 08:11 Uhr)
 
R2009

 
Delphi 2007 Professional
 
#41
  Alt 7. Dez 2009, 14:19
Hi,

ich hab mit nett, das gemeint was nett ausdrückt (und unterstelle mir bitte nichts zwischen den Zeilen).
Sieht geil aus (geile Oberfläche), funktioniert anständig, reisst mich aber nicht vom Hocker!

Zum auswählen eines Titels solltest du dir etwas einfallen lassen. Über die Datenbank und
dort mit der Liste find ich nicht sehr schön.
Das ganze Datenbankgeraffel ist an der Stelle überflüssig. Eine XML Datei oder sogar Ini hätte es auch getan. Das wird sehr schnell unübersichtlich und wer wird schon auf die Idee kommen in deinem Tool mehr als 100 Songs abzulegen.

Modularer Aufbau hin und her dll's und wenn sie dann noch "hook" heissen stören mich enorm.
Stell dir vor du hast die bass.dll noch drei mal auf dem Rechner (und die gibts in x Versionen) womöglich in c:\windows\..
Woher soll dein Progrämmchen dann noch wissen wo hernehmen?
Mein Rechner ist mittlerweile ein "Bass.dll" Grab.

Nimms mir nicht übel aber das ist meine Meinung zu deinem Tool.
Grüsse
rainer
Rainer Unger
  Mit Zitat antworten Zitat
Benutzerbild von Mithrandir
Mithrandir
 
#42
  Alt 7. Dez 2009, 16:26
Zitat von R2009:
Zum auswählen eines Titels solltest du dir etwas einfallen lassen. Über die Datenbank und
dort mit der Liste find ich nicht sehr schön.
Nochmal: Was genau würdest du dir denn wünschen? Dir muss doch irgendeine Idee vorschweben. "Gefällt mir nicht, mach anders" gibts in der Open-Source-Welt nicht, wir sind hier nicht in der Arbeitswelt.
Eine Idee wäre Folgende: Klickt man nur auf Play, kann man in folgendes Schema springen:
a) Playlist gefüllt: Spiele zuletzt gespieltes Lied. Noch kein Lied gespielt: Spiele Erstes in der Liste.
b) Playlist leer: Öffne Dialog zur Dateiauswahl.
Zitat von R2009:
Das ganze Datenbankgeraffel ist an der Stelle überflüssig. Eine XML Datei oder sogar Ini hätte es auch getan.
Ini? Autsch. XML wäre eine Möglichkeit, allerdings fehlt mir da eine "leichte" Alternative.
Zitat von R2009:
Das wird sehr schnell unübersichtlich und wer wird schon auf die Idee kommen in deinem Tool mehr als 100 Songs abzulegen.
Ich selbst. Und es soll mal Zeiten gegeben haben, da hat einem die Playlist von Winamp auch gereicht... Nein, die Datenbank bleibt erstmal.
Zitat von R2009:
Modularer Aufbau hin und her dll's und wenn sie dann noch "hook" heissen stören mich enorm.
Dann lösch die "st_hook.dll". Das Programm arbeitet auch anstandslos ohne.
Zitat von R2009:
Stell dir vor du hast die bass.dll noch drei mal auf dem Rechner (und die gibts in x Versionen) womöglich in c:\windows\..
Woher soll dein Progrämmchen dann noch wissen wo hernehmen?
Mein Rechner ist mittlerweile ein "Bass.dll" Grab.
Das wiederum ist nicht mein Problem. Mein Programm weiß ganz genau, welche DLL ihm gehört. Das hätte dir übrigens auch ein Blick in den SourceCode verraten:
Load_BASSDLL(ExtractFilePath(paramstr(0)) + 'libs\bass.dll'); Und Programme, die ihre DLLs nach C:\Windows schreiben gehören eh geschreddert.


Zitat von R2009:
Nimms mir nicht übel aber das ist meine Meinung zu deinem Tool.
Keineswegs, konstruktive Kritik ist gerne gesehen. Ich vermisse nur etwas das Konstruktive.
米斯蘭迪爾
  Mit Zitat antworten Zitat
Benutzerbild von mleyen
mleyen

 
FreePascal / Lazarus
 
#43
  Alt 7. Dez 2009, 22:17
Zitat von Daniel G:
Keineswegs, konstruktive Kritik ist gerne gesehen. Ich vermisse nur etwas das Konstruktive.
Na dann will ich mal:

[Bugs]
# Playlist:
- Wenn ich per Drag & Drop Musikdateien in das Fenster dragge und ich dann ein Lied per "entf" aus der Playliste entferne werden plötzlich 2 entfernt.
- Wenn ich per "entf" versuche mehrere selektierte Dateien zu entfernen wird nur eine entfernt. Bei dem "Auswahl entfernen"-Button werden jedoch alle entfernt.
- Man kann 2 mal den Entfernen Dialog aufrufen. Nachdem man den ersten bestätigt hat und dann den zweiten bestätigt wird eine falsche Datei rausgeschmissen.
# Sonstiges
- MediaKeyHook scheint immer noch nicht zu funktionieren. Es funktionierte keine MM-Taste, auch nach neustart des Programms nicht.
- Kann es sein, dass die Hotkeys "Playlist" und "Zufall" nicht funktionieren?
- "Position speichern" unter "Fenster verschiebbar machen" funktioniert nicht.
- Wenn ich die Maus ganz schnell aus dem Fenster bewege, während ich das Main-Fenster bewege, und dann die Maus loslasse, scheint nicht die normale Form OnMouseUp-Prozedur aufgerufen zu werden. Wenn ich dann zurück in´s Fenster gehe, bewegt sich das Fenster immernoch, obwohl ich die Maus gar nicht drücke.

[Requested Features]
- Die HotKeys "Nächstes Lied" und "Play/Pause" sollten funktionieren, wenn nach einem Neustart des Programms Lieder in der Playlist vorhanden sind, aber noch keins gestartet wurde.
- Drag & Drop von Ordnern sollte möglich sein.
- "Wiederholen" sollte evtl. unterteil oder umbenannt werden in "Playlist wiederholen" und "aktuelles Lied wiederholen".
- Im "Zufalls"-Modus sollte nicht das gleiche Lied mehrmals hintereinander drankommen.


Das ist eigentlich das was mir auf die schnelle aufgefallen ist.
  Mit Zitat antworten Zitat
Benutzerbild von Mithrandir
Mithrandir
 
#44
  Alt 8. Dez 2009, 10:52
Danke:

Ich werde im neuen Jahr dem Code nochmal einer Review unterziehen. Einfach mal ein paar Stunden einschließen und lesen.

Die Multimediatasten treiben mich allerdings zur Weißglut. Mein Laptop hat leider keine solchen Tasten. Könntest du die Anwendung mal mit "-xdebug" starten, und mal ein paar der Tasten drücken und gucken, ob das Programm auf die Drücke reagiert? Hast du nebenbei vielleicht ein anderes Programm offen, was die Multimediatasten ebenfalls nutzt?
米斯蘭迪爾
  Mit Zitat antworten Zitat
R2009

 
Delphi 2007 Professional
 
#45
  Alt 8. Dez 2009, 12:10
Hi Daniel,

meine Aussage: die Auswahl der Titel, so wie du das gelöst hast, gefällt mir nicht.
Dies impliziert doch aber nicht, dass ich eine bessere Idee habe.

Zu Ini und autsch:
Wir nutzen, für unsere Language Dateien nach wie vor Ini's und sind absolut zufrieden damit. Für (ganz) kleine Titelsammlungen reicht das auf jeden Fall vollkommen aus.
Für XML benötigst du auch nur Tclientdataset (allerdings glaub ich wird die Midas.dll) benötigt.
Nutze ich eine Ini brauche ich nichts ausser den Standardcontrols von Delphi.

Bevor ich jedoch SQLite und ähnliches nutze überlege ich ob ich nicht vielleicht mit einem
Delphi-record ebenfalls ans Ziel komme.
So wie ich das sehe ist die einzige SQL Funktionalität die du nutzt die Sucherei!

Grüsse
Rainer
Rainer Unger
  Mit Zitat antworten Zitat
Benutzerbild von Mithrandir
Mithrandir
 
#46
  Alt 8. Dez 2009, 13:03
Zitat von R2009:
meine Aussage: die Auswahl der Titel, so wie du das gelöst hast, gefällt mir nicht.
Dies impliziert doch aber nicht, dass ich eine bessere Idee habe.
Ich habe auch nirgends behauptet, dass deine Aussage dies impliziert. Es wäre nur wünschenswert gewesen. Und auf meinen Vorschlag bist du auch nicht eingegangen.
Zitat von R2009:
Zu Ini und autsch:
Wir nutzen, für unsere Language Dateien nach wie vor Ini's und sind absolut zufrieden damit. Für (ganz) kleine Titelsammlungen reicht das auf jeden Fall vollkommen aus.
Das mag für Sprachdateien ja zutreffen. Aber eine Playlist, aus der der User öfters Dinge löscht, hinzufügt, ändert... Da ist in meinen Augen das eleganteste, wenn man auf eine "echte" DB verzichtet, XML.
Zitat von R2009:
Für XML benötigst du auch nur Tclientdataset (allerdings glaub ich wird die Midas.dll) benötigt.
Nutze ich eine Ini brauche ich nichts ausser den Standardcontrols von Delphi.
Welche alle irgendwie wieder die SysUtils.pas einbauen. Und somit habe ich wieder einen Rattenschwanz an Units, die ich nicht brauche, und die das Programm nur aufblähen. Da bleibe ich lieber bei meiner SQLite.dll, da weiß ich wenigstens, wo ich dran bin.
Zitat von R2009:
So wie ich das sehe ist die einzige SQL Funktionalität die du nutzt die Sucherei!
Die Suchfunktion benutzt den LIKE-Operator, korrekt. Uniqe IDs und Primary Keys werden für die Zuordnung Genre <> URL benutzt. GROUP BY findet auch häufiger Verwendung. Ich könnte das auch alles manuell implementieren, damit ich auf die sqlite.dll verzichten kann. Nenn mir einen vernünftigen Grund, warum ich das sollte.
In Zukunft kommen vielleicht noch Features hinzu, die mit einer SQL-Datenbank einfacher von der Hand gehen. Ich müsste jetzt einen Konverter schreiben, der die Datenbank in eine XML-DB konvertiert. Dann müsste ich diverse Funktionalitäten von SQL nachbilden. Und wozu das Ganze? Um dann vielleicht in einem Jahr wieder einen Konverter schreiben zu können, der die XML-Datenbank in eine SQLite-Datenbank umwandelt. Nö, tut mir Leid, da habe ich keinen Bock drauf.

Ich bin nicht Kritik-resistent, aber wenn das nur in bloßes Herumnörgeln ausartet, weil man sich an der Verwendung einer SQL-Datenbank und ein paar DLLs hochziehen muss, dann ist mir die Sache zu blöd.
Niemand zwingt dich, das Programm zu nutzen. Wenn es dir nicht gefällt, lass es bleiben.
米斯蘭迪爾
  Mit Zitat antworten Zitat
R2009

 
Delphi 2007 Professional
 
#47
  Alt 8. Dez 2009, 14:30
Hi,

mir ist ein Rattenschwanz an Units eben lieber als ein Rattenschwanz an DLL's!
Keine Sorge ich werde dein Programm nicht verwenden!
Ich habe meine Meinung, du hast deine Meinung. Am besten wir belassen es dabei!

Grüsse
Rainer
Rainer Unger
  Mit Zitat antworten Zitat
Benutzerbild von mleyen
mleyen

 
FreePascal / Lazarus
 
#48
  Alt 8. Dez 2009, 19:19
Bei -xdebug steht nur, dass die hook.dll erfolgreich geladen wurde.

Jetzt habe ich mal gaaanz schnell selbst kompiliert und ein bisschen debugged.

Ein Fehler steckt hier schonmal drin:
Delphi-Quellcode:
//Load Hook
if Settings.GetSetting('multimedia_keys_activated') = '1then
begin
  lib := LoadLibrary('plugins\core\st_hook.dll');
  if lib <> INVALID_HANDLE_VALUE // mlAdd: Lib hat der Wert: 41287680
  then begin
    SetHook := GetProcAddress(lib, 'SetHook'); // mlAdd: Ab hier gibt GetLastError 127 zurück ("ERROR_PROC_NOT_FOUND 127 (0x7F) The specified procedure could not be found.")
    RemoveHook := GetProcAddress(lib, 'RemoveHook');
    lg.WriteLog('st_hook.dll sucessfully loaded', 'dgstMain');
  end;
  if Assigned(SetHook) then // mlAdd: Soweit ich weiß musst du hier wiefolgt prüfen: "if @SetHook <> nil then"
    SetHook(wnd, 0);
end;
Leider habe ich momentan zu wenig Freizeit um danach weiter zu schauen, aber ich hoffe das hilft schonmal.
Evtl. kann ich mir das in den nächsten Berufsschultagen mal genauer anschauen.
(Dann hab ich dort wenigstens mal etwas Forderndes. Soviel NonVcl )

Btw:
Gabs nicht einmal eine Version, die ohne die "bass.dll" auskam?
Und wo ist mein #MusikExtreme in der Default-Playlist hin?

Edit:
Und mir fällt gerade sogar auf:
Die MediaKeys funktionieren, wenn das Mainfenster den Fokus hat. Sogar wenn dies in den Einstellungen deaktiviert wurde.
  Mit Zitat antworten Zitat
Benutzerbild von Mithrandir
Mithrandir
 
#49
  Alt 8. Dez 2009, 20:28
Aua...

Danke

Probier mal bitte die angehängte DLL aus... einfach die alte ersetzen.

Zitat von mleyen:
Gabs nicht einmal eine Version, die ohne die "bass.dll" auskam?
Ja, war aber nur eine Version zum Experimentieren. Mit der BASS-Lib geht es einfacher, ich hätte quasi nochmal das Rad neu erfinden müssen. Das war es mir nicht wert, vor allem die Internetunterstützung.

Zitat von mleyen:
Und wo ist mein #MusikExtreme in der Default-Playlist hin?
Hmm.. Wurde leider wegrationalisiert...
Zitat von mleyen:
Und mir fällt gerade sogar auf:
Die MediaKeys funktionieren, wenn das Mainfenster den Fokus hat. Sogar wenn dies in den Einstellungen deaktiviert wurde.
Sieh es einfach als Feature.
Nein, das Problem ist, dass die Nachrichten zwei unterschiedliche sind, die die Multimediakeys absetzen. Einmal gibts ne ganz bestimmte, nur für die Keys. Die bekommt das Fenster, das im Vordergrund ist. Sollte das nicht bearbeitet worden sein, wird das nächste Fenster abgearbeitet usw... Und wenn kein Fenster die Nachricht haben will, bekommt sie ein eventueller Hook.

Ich hatte in der einen Bearbeitung der Nachrichten vergessen, die Einstellungen abzufragen. Behebe ich in der nächsten Version...
Angehängte Dateien
Dateityp: dll st_hook_117.dll (18,5 KB, 2x aufgerufen)
米斯蘭迪爾
  Mit Zitat antworten Zitat
Benutzerbild von mleyen
mleyen

 
FreePascal / Lazarus
 
#50
  Alt 8. Dez 2009, 20:41
Soweit ich das sehe funktionierts.
Nur jetzt gibts einen neuen Bug:
Du prüfst im MediaKey-Event wahrscheinlich nicht auf KeyUp -/ down. D.h. alle Mediakeys kommen anscheinend doppelt an.
(zB: 2 Tracks nach vorne. Oder Ich drücke "Play / Pause" und das Lied hält an, und wenn ich es loslasse gehts weiter )
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 5 von 8   « Erste     345 67     Letzte »    


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:20 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz