Autor |
Beitrag |
Heiko
      
Beiträge: 3169
Erhaltene Danke: 11
|
Verfasst: So 16.07.06 17:24
Wie lange soll ich den dann an meinem altem Rechner warten, bis er die 6 Tage Musik zusammen adiiert hat?  . Und in der Zeit hängt dann natürlich die Musik, da dein Timer-Message einfach nicht vorbeigelassen wird  .
|
|
Gausi 
      
Beiträge: 8548
Erhaltene Danke: 477
Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.3 CE
|
Verfasst: So 16.07.06 18:59
Das zusammenaddieren ist da das kleinere Problem, wie ich grade festgestellt habe
Wenn ich ein paar Dateien mehr von der Medienliste in die Playlist rüberschubsen will, rattert sich die Festplatte tot, weil bei jeder Datei vorher geprüft wird, ob sie auch vorhanden ist (und nur dann wird sie eingefügt). Das ist etwas ungut und wird korrigiert...
_________________ We are, we were and will not be.
|
|
Heiko
      
Beiträge: 3169
Erhaltene Danke: 11
|
Verfasst: So 16.07.06 20:23
Gausi hat folgendes geschrieben: | Wenn ich ein paar Dateien mehr von der Medienliste in die Playlist rüberschubsen will, rattert sich die Festplatte tot, weil bei jeder Datei vorher geprüft wird, ob sie auch vorhanden ist (und nur dann wird sie eingefügt). Das ist etwas ungut und wird korrigiert... |
Machs doch so wie der WMP. Erst wenn er die abspielen will guckt er, obs überhaupt möglich ist.
Aso noch ein Tipp um die Startgeschwindigkeit zu erhöhen. Am besten schreibst du in deine gmp-Datei noch die gefunden Tag-Dateien der Dateien. Ist zwar vlt. ein bissl Platzverschwendung, aber dadurch musst du beim start nicht tausende Dateien erneut auslesen etc.. Und ob sich etwas an den Tags verändert haben könnte, erkennst du ja an der Zeit des letzten Schreibzugriffs, so dass du dem entsprechend reagieren könntest. Das System hätte den Vorteil, dass du die richtige Zeit in einem extra Thread beim hinzufügen (während man den Player ganz nomrla nutzt) auslesen kannst und in die Medienliste reinschreiben könntest. So würde man immer die exakte Zeit haben  .
Und nochn Tipp, wie du die Startzeit auch verkürzen kannst  : Und zwar lade die Playlist erst nach dem Start des Programms und nicht im Start, d.h. erst wenn das Formular angezeigt wird fängt er an die Liste zu befüllen, durch VST brauchst ja nicht einmal BeginUpdate etc., weils bei der Kompo keine/kaum Vorteile bringt. Nat. in einem extra Thread. Und das schöne dabei ist, dem Benutzter stört es normalerweise nicht, da er langsamer mit scrollen ist, als bei effizienter Programmierung das befüllen  . (Würde ich dir auch für das hinzufügen empfehlen, falls du es nicht bereits machst  ).
PS: Jaja, es sind ja wieder "nur" unwichtige Optimierungen  .
Aso, noch ein kleiner Hinweis auf einen "Bug". Und zwar hat deine Visualisierung scheinbar kein OnPintereignis, was auffällt, wenn man die Visualisierung abgeschalten hat  . (Nachm weiderherstellen sind die liegenden Steine weg).
|
|
Gausi 
      
Beiträge: 8548
Erhaltene Danke: 477
Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.3 CE
|
Verfasst: So 16.07.06 21:11
Zur Startgeschwindigkeit etc.
Die kann ich nicht ohne weiteres wesentlich verbessern. Selbstverständlich werden die Tags gespeichert - alles andere würde viel zu lange dauern.
Die Playlist laden dauert in aller Regel nicht besonders lange (auch bei 1000 Dateien sollte das dabei stattfindene Untersuchen der Dateien unter 1sec dauern; das ist aber abschaltbar). In die Playlist-Datei die Tag-Infos mitreinzubringen geht nicht, da m3u das nicht unterstützt (ich benötige da u.a. die Bitrate).
Zu Beginn lade ich die Playlist und fange mit dem Abspielen an. Das sollte innerhalb einer Sekunde passieren und den User relativ zufriedenstellen. Dann lade ich die Medienliste und generiere daraus die anderen Listen (zur Zeit nur Artists und Alben). Dafür sind ein paar Sortiervorgänge erforderlich, was das ganze etwas in die Länge zieht. Da man zu diesem Zeitpunkt sowieso am Program nichts sinnvolles machen kann, ist es imho sinnlos, da schon das Hauptfenster anzuzeigen. Natürlich könnte man das in einen Thread auslagern, damit der Player in der Zeit schon bedienbar ist. Aber selbst bei meiner recht umfangreichen Liste dauert das Starten 5sec, das ist im Bereich des Akzeptablen.
Zu dem Vorschlag, im Hintergrund die Dateien nach evtl. neuen Tags zu scannen habe ich glaube ich schon früher was gesagt. Ein Player, der bewirkt, dass die Festplatte rattert, kommt mir nicht ins Haus. Und das würde zwangsläufig passieren. Egal ob in einem extra Thread oder sonstwie. Dafür gibts ne Update-Funktion.
Also: Deine Vorschläge, die Startgeschwindigkeit zu erhöhen, sortiere ich mal ganz diskret in die "Ablage P" ein  Was da so lange dauert ist die Verarbeitung der gespeicherten Daten, nicht die Anzeige.
Die Vis hat kein OnPaint so wie du das meinst, ja. Schau ich mir nochmal an.
Das Abchecken auf "Datei vorhanden" beim Einfügen in die Playlist schien mir mal vernünftig, was es aber eher doch nicht ist. Daher wird das demnächst entfernt.
_________________ We are, we were and will not be.
|
|
JayEff
      
Beiträge: 2971
Windows Vista Ultimate
D7 Enterprise
|
Verfasst: Mo 17.07.06 01:24
Gausi hat folgendes geschrieben: |
Playlist durchmischen geht über das Kontexmenü der Playlist. Einen Button dafür werde ich wahrscheinlich nicht einführen, weil die oberste Priorität bei mir ist, die GUI so schlank wie möglich zu halten, damit die Grundfunktionen auf einen Blick erkennbar und bedienbar sind. Funktionen, die man im normalen Betrieb nur ein- ode zweimal pro Start benötigt, sind etwas versteckter. |
Yo. Durchmischen. Aber das ist vom Prinzip her was anderes, als das was ich meine. Durchmischen, das heist die Playlist wird einmal in zufällige Reihenfolge gebracht und dann in eben dieser (unveränderten) Reihenfolge immer wieder wiederholt (bei aktiviertem Playlist wiederholen). Besser wäre es, bei jedem Durchgang neu zu mischen. Das ist das, was ich gemeint hab.
Die restlichen Sachen, die ich erwähnt hab ("Wo komme ich zum Hauptmenü durch Rechtsklick" etc) sollten die Gedanken eines neuen Users darstellen, der sich erstmal ein schönes Skin einrichtet und dann zu seinem Entsetzen feststellt, dass er keine Ahnung hat, wie er auch nur in die Hilfe gelangt ;> Das wollte ich damit ausdrücken. Klar, nach einigen Minuten rumklicken hab ich auch bemerkt, wie ich an welches Menü komme ^^
Also dann viel Spaß noch mit dem Player, ich werd auf jeden Fall am Ball bleiben, das is ein interessantes Projekt 
_________________ >+++[>+++[>++++++++<-]<-]<++++[>++++[>>>+++++++<<<-]<-]<<++
[>++[>++[>>++++<<-]<-]<-]>>>>>++++++++++++++++++.+++++++.>++.-.<<.>>--.<+++++..<+.
|
|
Gausi 
      
Beiträge: 8548
Erhaltene Danke: 477
Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.3 CE
|
Verfasst: Mo 17.07.06 11:53
JayEff hat folgendes geschrieben: | Yo. Durchmischen. Aber das ist vom Prinzip her was anderes, als das was ich meine. Durchmischen, das heist die Playlist wird einmal in zufällige Reihenfolge gebracht und dann in eben dieser (unveränderten) Reihenfolge immer wieder wiederholt (bei aktiviertem Playlist wiederholen). Besser wäre es, bei jedem Durchgang neu zu mischen. Das ist das, was ich gemeint hab. |
Ah jetzt, ja. Ist eine nette Idee.
JayEff hat folgendes geschrieben: | ... und dann zu seinem Entsetzen feststellt, dass er keine Ahnung hat, wie er auch nur in die Hilfe gelangt ;> |
Ähm...F1? Dass einige Sachen einer gewissen Eingewöhnung bedürfen ist klar. Vielleicht auch etwas mehr als bei anderen Playern.
Hauptzielsetzung bei mir ist (habe ich bestimmt schon mal irgendwo erwähnt), dass jemand, der das Programm zum ersten Mal sieht, das laufende, fertig eingerichtete Programm sofort bedienen kann. D.h. Titel suchen, in die Playlist schubsen und abspielen. Quasi eine Art Selbstbedienungs-Jukebox bei Partys. Dafür werden die Menüs nicht benötigt, und deswegen sträube ich mich auch etwas gegen jeden neuen Button, der dazukommen soll...  Ein kleiner unauffälliger Knopf fürs Menü lässt sich aber wahrscheinlich noch irgendwo einbauen.
_________________ We are, we were and will not be.
|
|
crowley
      
Beiträge: 406
Win XP, Win Vista, Mandriva, Ubuntu
Delphi 4-8, Delphi 2006, Delphi 2007
|
Verfasst: Mo 17.07.06 12:32
Hallo Gausi
Ich bin auf der Suche nach einem speziellen Feature, dass ich - so hoffe ich - vielleicht nun doch nicht selber programmieren muss, denn dein Nemp scheint ja schon so ziemlich alles zu können
Wäre es möglich, in deine Medienbibliothek ein Funktion zu integrieren, die mittels Regular Expressions die ID3-Tags befüllt ?
Ich versuche eigentlich meine MP3s immer in folgender Nomenklatur auf meiner Platte abzulegen:
Interpret\[Erscheinungsjahr] Albumtitel\TrackNummer Interpret - Tracktitel
als Beispiel:
Haggard\[2004] Eppur Si Muove\06 Haggard - Herr Mannelig.mp3
Da ich nicht alles selber "gerippt" habe oder auch ab und an zu faul war, sind die Daten in meinem ID3-Tags nicht gerade in einem "guten" Zustand. Wäre es möglich anhand regulärer Ausdrücke oder was-auch-immer, die ID3-Tags zu schreiben oder ggf. sogar auswählbar machen, was man überschreiben möchte? Lyrics oder Bilder zu überschreiben sollte ja nicht Sinn dessen sein
danke dir allein schon jetzt für das geniale Teil
C.
|
|
JayEff
      
Beiträge: 2971
Windows Vista Ultimate
D7 Enterprise
|
Verfasst: Mo 17.07.06 13:50
Das Programm gibts schon. Hier gibts den Link: www.mp3tag.de/
Unterstützt die in-den-ID3tag-Schreibung ( xD ) von im Dateinamen stehenden Titel, Album, Tracknummer, Band... und ist Freeware!
Dashier schreibt zum Beispiel Titel und Band in den ID3 Tag:
Quelltext 1: 2:
| BlindGuardian-Battlefield.mp3 <-- Dateiname %artist%-%title% <-- Maske |
_________________ >+++[>+++[>++++++++<-]<-]<++++[>++++[>>>+++++++<<<-]<-]<<++
[>++[>++[>>++++<<-]<-]<-]>>>>>++++++++++++++++++.+++++++.>++.-.<<.>>--.<+++++..<+.
|
|
Gausi 
      
Beiträge: 8548
Erhaltene Danke: 477
Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.3 CE
|
Verfasst: Mo 17.07.06 13:58
Hmmm... das wäre eher etwas für einen Tag-Editor. Das für die ganze Medienbibliothek zu machen mag ja in deinem Fall sehr sinnvoll sein, aber für ein generelles Feature dieser Art sollte man das auf einen Ordner beschränken können. In Nemp kann man die Tags nur einzeln bearbeiten (wie z.B. in Winamp auch).
Man bräuchte für sowas sowieso ein extra Browser-Fenster, so dass man die mp3s pro Ordner (der ja auch sehr allgemein sein kann, z.b. d:\musik\) entsprechend des regulären Ausdrucks bearbeitet. Einen Tag-Editor in diesem Umfang zu bauen ist nicht "mal so eben" gemacht, und ist bisher auch nicht in Nemp vorgesehen.
Dein Vorschlag ist das Gegenteil zu dem, was weiter oben gewünscht wurde (Dateien anhand der Tags umkopieren).
Ich hab letztens schonmal auf MediaMonkey hingewiesen, eine Alternative wäre hier evtl. auch www.mp3tag.de/, was wie ich gerade sehe, auch schon genannt wurde. Und ich glaube, dass da jemand, der auch in diesem Topic recht aktiv ist, an einem Projekt arbeitet, was dir ganz gut gefallen wird  - aber das dauert noch ein bißchen, bis es fertig ist...
_________________ We are, we were and will not be.
|
|
crowley
      
Beiträge: 406
Win XP, Win Vista, Mandriva, Ubuntu
Delphi 4-8, Delphi 2006, Delphi 2007
|
Verfasst: Mo 17.07.06 14:03
ich weiss, dass es schon "andere" programme gibt, die so etwas können. ich versuche nur so wenig progs wie möglich aber eben soviel wie nötig auf dem rechner zu haben
desweiteren weiss ich ja nicht, ob mp3tag auch teile des pfades auswerten kann  denn albumtitel und erscheinungsjahr sind im verzeichnisnamen "oberhalb"
idealerweise sollte das programm auch den umgekehrten weg gehen können und anhand der ID3-Tags die Dateien in einer neuen Verzeichnisstruktur ablegen. Denn einige MP3s haben schon den ID3 Tag, wie er sein soll, aber Dateinamen sind track01.mp3 oder album-interpret_tracknr_titel_werbezusatz.mp3 ...
C.
|
|
JayEff
      
Beiträge: 2971
Windows Vista Ultimate
D7 Enterprise
|
Verfasst: Mo 17.07.06 14:12
Verzeichnisstruktur würd ich bezweifeln, aber du kannst versuchen, im Filter das zeichen '\' zu verwenden. Den umgekehrten Weg kann das Programm natürlich auch gehn. (Schau dir am besten mal den Link an.)
_________________ >+++[>+++[>++++++++<-]<-]<++++[>++++[>>>+++++++<<<-]<-]<<++
[>++[>++[>>++++<<-]<-]<-]>>>>>++++++++++++++++++.+++++++.>++.-.<<.>>--.<+++++..<+.
|
|
Heiko
      
Beiträge: 3169
Erhaltene Danke: 11
|
Verfasst: Mo 17.07.06 14:53
Hallo crowley,
gausi hats ja schon gesagt, dass es hier noch einen gibt, der so ein ähnliches Projekt hat wie er, wo so etwas vlt. reinkommt. Nun ja, gausi hat teilweise recht. Es ist nicht nur einer hier, von dem anderen Projekt verstärt aktiv, sondern 2 (alias5000 und ich  ). Das Feature, was du suchst, wird bei uns voraussichtlich ab V0.2 dabei sein (nach den bisherigen Planungen). Aber wie gausi bereits sagte, wirds bei uns noch eine Weile dauern, da wir wenige Coder sind und eigentlich jeder auch noch größere und/oder kleinere Nebenprojekte besitzt  . Wenn wir soweit sind, melden wir uns schon hier im Forum (vlt. auch in dem Thread hier unterschwelig  ), denn unsere beiden Projekte ergänzen sich ein bissl. bzw. haben gleiche Lösungswege parat (durchn ICQ-Kontakt zwischen mir und gausi profitieren beide Seiten von uns dabei  ).
PS @gausi: ICh hoffe der kleine Einschub stört dich nicht, denn wir sind ja nicht wirklich eine Konkurrenz zu dir, da wir leicht verschiedene Ziele haben (auch wenn wir später deinen Part mit einbeziehen wollen  ).
mfg
Heiko
|
|
alias5000
      
Beiträge: 2145
WinXP Prof SP2, Ubuntu 9.04
C/C++(Code::Blocks, VS.NET),A51(Keil),Object Pascal(D2005PE, Turbo Delphi Explorer) C# (VS 2008 Express)
|
Verfasst: Mo 17.07.06 21:34
Heiko hat folgendes geschrieben: | Es ist nicht nur einer hier, von dem anderen Projekt verstärt aktiv, sondern 2 (alias5000 und ich ). |
Jep, ich hab den aktuellen NEMP bei mir drauf und benutze ihn auch, bloß irgendwie fällt mir nix mehr groß ein, was noch falsch iss
Aber wie gesagt ich les noch fleißig mit
Gruß alias5000
_________________ Programmers never die, they just GOSUB without RETURN
|
|
Regan
      
Beiträge: 2157
Erhaltene Danke: 72
Java (Eclipse), Python (Sublimetext 3)
|
Verfasst: Di 18.07.06 20:38
Mir fällt allerdings auch nichts mehr ein. Aber... Da wär noch was:
- Wäre es möglich, eine Funktion einzubauen, dass der Bildschrimschoner, für unsere Experten Screensaver, nicht mehr startet?
- Warum stellt sich die Systemsprache auf Englisch um, wenn man Nemp aktiviert hat?
MfG
Regan
|
|
Gausi 
      
Beiträge: 8548
Erhaltene Danke: 477
Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.3 CE
|
Verfasst: Di 18.07.06 20:57
Regan hat folgendes geschrieben: | Wäre es möglich, eine Funktion einzubauen, dass der Bildschrimschoner, für unsere Experten Screensaver, nicht mehr startet? |
Keine Ahnung, ob man den Bildschirmschoner irgendwie abschalten kann...aber macht das Sinn?
Regan hat folgendes geschrieben: | Warum stellt sich die Systemsprache auf Englisch um, wenn man Nemp aktiviert hat? |
Äh...bitte was? Die Systemsprache stellt sich bei dir auf Englisch um, wenn du Nemp startest?  Wie das?
_________________ We are, we were and will not be.
|
|
JayEff
      
Beiträge: 2971
Windows Vista Ultimate
D7 Enterprise
|
Verfasst: Mi 19.07.06 19:16
Was den Screensaver betrifft: Ich vermute es reicht, den System Parameter zu setzen ... :
Delphi-Quelltext 1: 2: 3: 4: 5:
| var dummy:String; begin SystemParametersInfo(SPI_SCREENSAVERRUNNING, Word(true), @dummy, 0); |
Aber über den Sinn bin ich mir auch nicht im Klaren ... Machts dir so Spaß, minutenlang den hüpfenden Balken zu zu sehen, dass es dich stört, wenn der Screensaver reingeht? x)
_________________ >+++[>+++[>++++++++<-]<-]<++++[>++++[>>>+++++++<<<-]<-]<<++
[>++[>++[>>++++<<-]<-]<-]>>>>>++++++++++++++++++.+++++++.>++.-.<<.>>--.<+++++..<+.
|
|
JayEff
      
Beiträge: 2971
Windows Vista Ultimate
D7 Enterprise
|
Verfasst: Fr 21.07.06 18:42
Hi nochmal.
Welchen Algorithmus benutzt du zum Durchmischen der Playlist? Ich hatte grad nen doppelten Song in der Liste und hab 3 mal gemischt... später ist mir aufgefallen, dass die beiden gleich heißenden Songs direkt beieinander standen. Kann zufall sein, aber ich hatte auch schonmal den Eindruck dass das nicht so gründlich ist, wie ich dachte - kann jetzt aber dazu nix sagen .. (war mehr so .. unterbewusst  )
Falls du nen guten Algo brauchst, ich hab den in meinen Augen besten (weiler von BENBE  kommt ...).
Falls du aber einen guten hast, vergisses ^^ war ich eben Opfer einiger Zufälle...
Das Programm machst schon weiter oder? Ich freu mich auf die nächste Version ^^
PS: Der Skineditor - wieso speichert er die Skins unter Anwendungsdaten\Gausi\nemp\ und nicht unter \nemp\skins\ ? Find ich verwirrend und entgegen aller Stimmen in diesem Forum kenn ich KEIN Programm dass sich nen "§%/%$ drum kehrt, ob der User rechte hat, ins Programmverzeichnis zu schreiben ... Es sollte vielleicht eine Option in Betracht gezogen werden, die den Speicherort auswählt... ^^
Anbei ein Skin von mir.
Einloggen, um Attachments anzusehen!
_________________ >+++[>+++[>++++++++<-]<-]<++++[>++++[>>>+++++++<<<-]<-]<<++
[>++[>++[>>++++<<-]<-]<-]>>>>>++++++++++++++++++.+++++++.>++.-.<<.>>--.<+++++..<+.
|
|
Gausi 
      
Beiträge: 8548
Erhaltene Danke: 477
Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.3 CE
|
Verfasst: Sa 22.07.06 10:53
Zu dem Speicherort steht was in der Hilfe  Wenn du als Speicherort das Programmverzeichnis haben willst (für alles, die Optionen, Playlist, Medienliste, und die Skins), dann nenn die Exe einfach in von NempXP.exe in nemp.exe um
Für den Speicherort der Skins könnte man aber eine Option einbauen, das stimmt - ist notiert.
Das Mischen mach ich einfach so: Delphi-Quelltext 1: 2:
| for i := 0 to Playlist.Count-1 do Playlist.Move(i,i + random(PlayList.Count-i)); | Ob das nun besonders gut ist, oder besonders dumm, weiß ich nicht.
Skin sieht schon gut aus, nur könnte man evtl. die Buttons und die Grafiken in der Playlist noch etwas anpassen.
_________________ We are, we were and will not be.
|
|
Heiko
      
Beiträge: 3169
Erhaltene Danke: 11
|
Verfasst: Sa 22.07.06 11:32
|
|
JayEff
      
Beiträge: 2971
Windows Vista Ultimate
D7 Enterprise
|
Verfasst: Sa 22.07.06 15:07
Naja kann ja sein. Ich hatte dieses hier gemeint:
[delphi:1:1048c16e5b=" BenBEs Algorithmus:"]Procedure TForm2.Verwuerfeln(ST: TStrings; Count: Integer);
Var
M1, M2, M3: Array Of Integer;
P1, P2, P3: PInteger;
X, Y, Z: Integer;
T: TStringList;
Begin
Y := SL.Count;
SetLength(M1, Y);
SetLength(M2, Y);
SetLength(M3, Y);
For X := 0 To Y - 1 Do
M3[X] := X;
Z := Random(2);
For X := 0 To Count - 1 Do
Begin
P1 := @M1[0];
P2 := @M2[0];
P3 := @M3[Y - 1];
Z := (Z + X) Mod 2;
While Integer(P3) >= Integer(@M3[0]) Do
Begin
If Z Mod 2 = 0 Then
Begin
P1^ := P3^;
Inc(P1);
Dec(P3);
End
Else
Begin
P2^ := P3^;
Inc(P2);
Dec(P3);
End;
Z := (Z + 1) Mod 2;
End;
Dec(P1);
Dec(P2);
Inc(P3);
While (Integer(P1) >= Integer(@M1[0])) Or (Integer(P2) >= Integer(@M2[0])) Do
Begin
Z := Random(2);
If Z Mod 2 = 0 Then
Begin
If Integer(P1) >= Integer(@M1[0]) Then
Begin
P3^ := P1^;
Dec(P1);
Inc(P3);
End;
End
Else
Begin
If Integer(P2) >= Integer(@M2[0]) Then
Begin
P3^ := P2^;
Dec(P2);
Inc(P3);
End;
End;
End;
End;
T := TStringList.Create;
Try
SL.BeginUpdate;
Try
T.BeginUpdate;
Try
T.Text := SL.Text;
SL.Clear;
For X := 0 To Y - 1 Do
SL.Add(T[M3[X]]);
Finally
T.EndUpdate;
End;
Finally
SL.EndUpdate;
End;
Finally
T.Free;
End;
End;[/delphi:1:1048c16e5b]
_________________ >+++[>+++[>++++++++<-]<-]<++++[>++++[>>>+++++++<<<-]<-]<<++
[>++[>++[>>++++<<-]<-]<-]>>>>>++++++++++++++++++.+++++++.>++.-.<<.>>--.<+++++..<+.
|
|
|