Elektronik & mp3 h- mpeg der erste standalone mp3 Player im Eigenbau
|
| Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
| Autor |
Nachricht |
Jacob Gast
|
Verfasst am: 19.01.2003, 20:38 Titel: Bessere Navigation durch den mp3-Wald (Baum) |
|
|
Was ich schon immer mal in Angriff nehmen wollte ist die Navigation des h-mpegs. Dass die Verzeichnisse immer eines nach dem anderen durchgespult werden ist ab 2-3 GB nicht mehr wirklich sinnvoll.
Viel besser wäre es, wenn man einen Verzeichnisbaum hätte. Man könnte seine Musik dann auch kategorisieren à la
Metal
-->Metallica
---->Load
---->Reload
---->Black
-->nächste Band
---->1.Album
---->2.Album
nächste Kategorie
Kann man das jetzt erkennen
Und hat sich zu dem Thema schon mal jemand gedanken gemacht??
Ich finde dsa auf jeden Fall eine der wichtigsten Features, die dem h-mpeg noch fehlen
Ciao,
Jacob
|
|
| Nach oben |
|
 |
Speedy
Anmeldungsdatum: 04.01.2003 Beiträge: 54
|
Verfasst am: 20.01.2003, 08:39 Titel: Re: Bessere Navigation durch den mp3-Wald (Baum) |
|
|
Hallo Jacob,
wie Du ja sicherlich weißt, bin ich derzeit den Code für die HD Version am überarbeiten. Ich habe bereits eine komplette Menüstruktur entworfen, mit der es möglich ist, einfach neue Menüs hinzuzufügen.
Allerdings wird der Code relativ groß, wenn man alle Features nutzen möchte und daher empfiehlt sich der MiniMega.
Kann Dir aber trotzdem mal ne Demo schicken. Vielleicht kannst Du Dir das ja so zurechtstutzen, dass es in den 8515 passt.
Das werde ich zwar auch noch machen, aber zuerst will ich die Features mal haben
Ich befürchte allerdings, das Du ein 'einscannen' des Verzeichnisbaum nicht hinbekommen wirst, weil einfach der Platz im Speicher zu gering ist.
Vielleicht kann Oli hierzu mal was sagen. Er hat ja sowas ähnliches für sein Autoradio gemacht.
Speedy
|
|
| Nach oben |
|
 |
Oli
Anmeldungsdatum: 04.01.2003 Beiträge: 109
|
Verfasst am: 20.01.2003, 12:43 Titel: Verzeichnisbaum |
|
|
Hi,
ich lese beim Starten einmal den Verzeichnisbaum ein (über RS232) und speichere ihn komplett ab (nur Verzeichnisse, keine Dateinamen). Dauert etwa 5 sec und braucht etwa 30 kByte bei 250 Verzeichnissen. Ok, man könnte noch etwas sparen, aber es bleibt definitiv zu viel für den Hmpeg. Die 32 kB die er hat, braucht man dringend als MP3-Puffer. _________________ http://tscherwitschke.de
|
|
| Nach oben |
|
 |
Oli
Anmeldungsdatum: 04.01.2003 Beiträge: 109
|
Verfasst am: 21.01.2003, 18:09 Titel: Verzeichnisbaum |
|
|
Hi,
OK, ich habe nochmal nachgerechnet, ich war wohl im ersten Ansatz etwas zu pessimistisch:
Im Moment reserviere ich für jeden Eintrag im Dir-Baum 5 Pointer (je 2
Byte), den Start-Cluster (4 Byte) und den Verzeichnisnamen.
Auf meiner 10 GB Platte habe ich z.Z. 268 Verzeichnisse. Im Schnitt
ist bei mir der Verzeichnisname 14 Zeichen lang (incl. \0).
Der gesamte Baum braucht also 268 * (14 + 14) = 7504 Byte.
Man könnte jetzt noch optimieren: von den 5 Zeigern sind nur 3
wirklich nötig, dann bleiben noch 268 * (10 + 14) = 6432 Byte übrig.
Wenn man nicht den ganzen Baum ständig im Speicher hält, sondern nur
jeweils eine Verzeichnisebene und diese dann nur bei Verzeichniswechsel
nachlädt, spart man natürlich auch viel. Allerdings wird dann die
Programmierung etwas umständlicher, aber machbar wäre es. So ähnlich
funktioniert es ja bereits auch mit der Songliste, es wird immer beim
Verzeichniswechsel die Songliste des aktuellen Verzeichnisses
nachgeladen.
Weiterer Raum für Optimierungen: evtl. Namen komprimieren, geht
natürlich auf Kosten der Programmgröße und der Geschwindigkeit.
Jetzt ist die große Frage, wieviel Speicher denn im Hmpeg noch frei
sind. Wenn ich mir die memory.h mal anschaue (HD 0.991) so sehe ich,
dass der DIRBUFFER etwa 13 kB groß ist. Er wird verwendet um die Namen
der Songs und Unterverzechnisse eines Verzeichnisses einzulesen. Ist
ja schon sowas ähnliches was wir wollen. Allerdings wird dieser Buffer
lustig beschrieben, ohne dass irgendwo auf einen Überlauf geprüft
wird. Wieviel also von diesem Speicher noch frei sind, muesste man
erstmal überprüfen (kommt natürlich auf die Größe der Platte bzw. die
Anzahl der Lieder und Verzeichnisse an).
Wenn man nun evtl. Songs und Verzeichnisse trennt, geschickt mit dem
Speicher umgeht, nur eine Verzeichnisebene speichert und bei Bedarf
nachlädt, könnte es reichen, würde ich sagen. Und wenn man einen
MiniMega nimmt, hat man nochmal 3,5 kByte zusätzliches internes RAM.
Gruß,
Oli _________________ http://tscherwitschke.de
|
|
| Nach oben |
|
 |
FinnishAndy Gast
|
Verfasst am: 09.03.2004, 16:13 Titel: |
|
|
Hi!
I like the idea of navigating through a 'tree' structure with subdirectories.
This was discussed a l-o-n-g time ago. ..
>Wenn man nicht den ganzen Baum ständig im Speicher hält, sondern nur
jeweils eine Verzeichnisebene und diese dann nur bei Verzeichniswechsel
nachlädt, spart man natürlich auch viel. Allerdings wird dann die
Programmierung etwas umständlicher, aber machbar wäre es. So ähnlich
funktioniert es ja bereits auch mit der Songliste, es wird immer beim
Verzeichniswechsel die Songliste des aktuellen Verzeichnisses
nachgeladen.
As Oli pointed out, the whole directory structure isn't needed, just the information of the 'parent' and the 'children'. This would save RAM! But the programming may be difficult! Has anyone made any progress?
-Andy
|
|
| Nach oben |
|
 |
Phil Gast
|
Verfasst am: 17.03.2004, 15:44 Titel: |
|
|
Wofür sollte das Verzeichnis denn komplett eingelesen werden ?
Auf dem Display darstellen kann man's sowiso nicht.
|
|
| Nach oben |
|
 |
FinnishAndy Gast
|
Verfasst am: 23.03.2004, 16:37 Titel: Directory Tree |
|
|
Servus!
Sorry for my German. I lived in Germany a long time ago & I still enjoy reading German. But sorry, I've lost the ability to write auf Deutch.... I hope that you can understand me!
I have a 2 line display connected to my H-MPEG. So there is no way to display the full directory tree on the display.
But! I think that the H-MPEG needs to read the full FAT data from the HD into RAM so that it can calculate the physical location of the data for the next tracks to play. Then there comes problems when the directory tree gets more complicated & the ram runs out...
I was hoping that the display could show the current subdirectory. Then H-MPEG could play just the tracks from that subdirectory (without jumping to the next) Then you could jump up and down the directory tree using the buttons. There may be restrictions that all root & branch directories should be empty (= no mp3 files there...)
Confused?
root
:.....- Directory1
:..................- Subdirectory1
:....................................-01 track.mp3
:....................................-02 track.mp3
:....................................-99 track.mp3
:..................- Subdirectory2
:....................................-01 track.mp3
:....................................-02 track.mp3
:....................................-99 track.mp3
:.....- Directory2
:..................- Subdirectory3
:....................................-Subsubdirectory4
:...................................................-01 track.mp3
:...................................................-02 track.mp3
:...................................................-99 track.mp3
Then on the display
-scroll <Directory1><Directory2>
Hit 'tiefer'
-scroll <Subdirectory1><Subdirectory2>
Hit 'tiefer'
- Display & play tracks
Hit 'higher'
-scroll <Subdirectory1><Subdirectory2>
Hit 'higher'
-scroll <Directory1><Directory2>
So there needs to be some calculation when jumping up or down the directory tree and the FAT data may need to be re-read.
Oh I wish I could write C!
-Andy
|
|
| Nach oben |
|
 |
Oli
Anmeldungsdatum: 04.01.2003 Beiträge: 109
|
Verfasst am: 24.03.2004, 19:37 Titel: |
|
|
Hi Andy,
so ähnlich mache ich das bei meinem Auto-Player. Allerdings lese ich den ganzen Verzeichnisbaum auf einmal beim Starten des Players ein. Mein Player hat eben genug RAM.
Es ist sicher auch möglich, das so zu programmieren, dass er die Verzeichnisse nur auf Bedarf liest und anzeigt, aber das ist viel komplizierter und passt nicht mehr in den Hmpeg (der Flash ist ja jetzt schon voll). Mit dem MiniMega sollte es aber gehen. _________________ http://tscherwitschke.de
|
|
| Nach oben |
|
 |
Andreas
Anmeldungsdatum: 20.01.2003 Beiträge: 13
|
Verfasst am: 19.08.2004, 00:51 Titel: Zum Thema DISPLAY |
|
|
Wenn man 75 Euro für ein Display übrig hat...
dann geht das mit der Darstellung auch (ohne viel programmieren zu müssen)
Es gibt Graphikdisplays, die sind mit dem Standard-LCD Befehlssatz kompatibel (nur die Graphikbefehle sind ein bisschen anders anzusprechen)
Diese Displays kennen auch einen 5 Pixel großen Font, so dass man auf einem 4x20 Replacement (140x32 Pixel) bei einem Pixel Zeilenabstand also 32/6=5,3333333 Zeilen Darstellen kann.
Man könnte dann auch sauberes Scrolling implementieren (habe es in einem anderen Zusammenhang ausprobiert und es geht)
Einen graphikfähigen Zweizeiler bekommt man schon für etwa 60 Euro,
das 4x20 ist in 10er Stückzahlen rund 8 Euro pro Stück billiger.
Das ist die Website des Herstellers:
[URL]http://www.noritake-itron.com[/URL]
Links in der Navigation auf "Cost Efficient 7000" klicken
Man kann die Displays hier in Stückzahlen von 1 aufwärts bestellen
(über die Vertretung in München)
(Ich nenne inzwischen zwei solche Displays mein Eigen ... und bin hochzufrieden damit))
|
|
| Nach oben |
|
 |
Oli
Anmeldungsdatum: 04.01.2003 Beiträge: 109
|
Verfasst am: 24.08.2004, 09:55 Titel: |
|
|
Ein größeres Display ist zwar nett, ändert aber nix an der Tatsache, dass der Hmpeg zum einfachen Navigieren die Verzeichnisstruktur ins RAM lesen sollte. _________________ http://tscherwitschke.de
|
|
| Nach oben |
|
 |
Andreas
Anmeldungsdatum: 20.01.2003 Beiträge: 13
|
Verfasst am: 24.08.2004, 12:13 Titel: |
|
|
Stimmt schon, aber ich möchte mal behaupten, dass die Darstellung auf einem 2x40er oder 4x20 Text-LCD auch nicht gerade das Gelbe vom Ei ist.
Ich denke, dass das mit dem Einlesen am besten gelöst werden kann, wenn man jeweils nur das aktuelle Unterverzeichnis einliest (eine neuere Festplatte ist da allemal schnell genug um die Informationen sozusagen "just-in-time" zu kredenzen).
Allerdings wäre der MiniMega schon hilfreich, denn der Flash im 8515er ist zugegeben verdammt voll; beim RAM sollte man eigentlich schon so 5-6 Kilobyte abzwacken können - Besonders beim MiniMega, weil der ja auch noch ein bisserle mehr internen RAM mitbringt.
Durch bedingte kompilierung wäre es halt möglich einen Support für Graphikdisplays der von mir genannten Art zu unterstützen, was irgendwo von Vorteil wäre (genügend Flash vorausgesetzt)
|
|
| Nach oben |
|
 |
|
|
Du kannst keine Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum nicht antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen.
|
|