Forum: Mikrocontroller und Digitale Elektronik Hardware-Hack in Autoradio für gute Zufallswiedergabe


von Third E. (third-eye)


Lesenswert?

Hallo.

Ich habe ein Autoradio JVC KD-R501 und ich höre damit hauptsächlich MP3s 
vom USB-Stick. Eigentlich würde ich am liebsten per Zufallswiedergabe 
hören, aber was JVC da als Zufallswiedergabe verkauft ist ein schlechter 
Scherz. Ich habe ca. 1000 Lieder drauf. Es ist auffällig, dass immer 
wieder die gleichen gespielt werden, manche habe ich in 2 Jahren noch 
nie (!) gehört. Eine gute Zufallswiedergabe braucht Resourcen, die sich 
JVC für Otto Normaldepp wohl spart. Ich rede ja nicht davon, dass in 
einem EEPROM gespeichert wird, welches Lied bereits gespielt wurde, eine 
gute Zufallszahlgenerierung würde mir auch schon reichen. Langer Rede 
kurzer Sinn, dank diesem Leidensdruck will ich daran was ändern.

Möglichkeit 1:
--------------
Ich setze eine kleine Platine mit einem AVR neben mein Radio, die 
wirklich eine gute Zufallszahl erzeugt, mithilfe eines rückgekoppelten 
Komparators: http://www.jtxp.org/tech/xr232usb.htm
Meine Platine "drückt" dann die "Lied weiter"-Taste eben so oft wie die 
Zufallszahl und speichert diese in einem EEPROM, dass das gespielte Lied 
erst wieder kommt, wenn alle durch sind.

Hindernisse:
Der Taster "Lied weiter" hat logischerweise eine Entprellung. Habe mit 
dem Funktionsgenerator und einem Transistor getestet, welche Frequenz 
das Radio mitmacht und es sind rund 10Hz bei einem Tastverhältnis von 
50%. Ich könnte noch mit dem Tastverhältnis spielen, aber mehr als 20Hz 
werdens nie. Um im Worst-Case 1000 Lieder weiterzuschalten würde das 
dann immer noch 50 Sekunden dauern.
--> nicht praktikabel.

Möglichkeit 2:
--------------
Lieder weiterschalten durch die Simulation des Fernbedienungssignals. 
Unabhängig davon, dass ich die Originalfernbedienung nicht habe und eine 
Universalfernbedienung nicht funktioniert, ist das Senden wohl auch 
nicht viel schneller: http://www.sbprojects.com/knowledge/ir/jvc.php
--> nicht praktikabel

Möglichkeit 3:
--------------
den Drehencoder simulieren zum Lieder weiterschalten
--> geht nicht, weil ich etliche Verzeichnisse habe und ich mit dem 
Drehencoder nur die Lieder im aktuellen Verzeichnis auswählen kann, wenn 
ich beim letzten Lied des Verzeichnisses bin, gehts halt nicht weiter. 
Mein µC müsste daher wissen, wie viele Lieder in welchem Verzeichnis 
sind. Das müsste ich meinem AVR erst mal "sagen" in Form von Eintippen 
oder so.
--> Also auch keine gute Idee.

Möglichkeit 4:
--------------
Ich simuliere einen USB-Stick, der dem Radio immer verschiedene Daten 
liefert, egal welche Blocks er adressiert. Mein AVR XPLAIN-Board 
funktioniert perfekt am Radio mit seinen 8MB Flash.
--> für mich nicht praktikabel, weil ich nur Bascom und etwas Assembler 
kann und so eine Simulation eines USB-Sticks für mich viel zu heavy zu 
Programmieren ist

Möglichkeit 5:
--------------
Ganz was anderes: ich setze mir einen Einplatinencomputer ins Auto und 
lasse Winamp drauf laufen. bei Winamp verdient die Zufallswidergabe auch 
diese Bezeichnung. Wenn ich das selbe Verzeichnis wie auf dem USB-Stick 
abspiele, kommen längst vergessene, nie gehörte Lieder zum Vorschein :-/
--> großer Aufwand, da ich ja eigentlich mit meinem jetzigen Radio 
abgesehen vom Shuffle recht zufrieden bin.

So... habe jetzt viel geschrieben.
Habt Ihr ein paar Ideen für mich?

Gruß Thrid-Eye

von zulu (Gast)


Lesenswert?

kauf dir nen Eipott

von Wegstaben V. (wegstabenverbuchsler)


Lesenswert?

vielleicht könnte es ja sein, daß

a) auf dem Stick Speichergröße, Filesystem (FAT16 vs FAT32), 
Verzeichnis- und Dateiname (lange Namen?), Ordnertiefe, Dateigröße 
"unpassend" sind?

b) MP3-Tags unpassend/fehlerhaft sind?

von Tokyo D. (tokyodrift)


Lesenswert?

Möglichkeit 6:
Du kaufst einen MP3 Player mit Shuffle Funktion, nimmst dein Handy oder 
sonstwas. Dann kaufst du ein Klinkenkabel, steckst das ein, stellst auf 
AUX und hörst tolle Zufallsmusik. Das kommt dich wahrscheinlich sogar 
noch billiger als der ganze andere Quatsch.
Das Radio hat doch extra einen AUX-IN.

von Third E. (third-eye)


Lesenswert?

Es würde mich  halt reizen, was selber zu Basteln. Aber scheint mir 
leider nicht praktikabel umsetzbar zu sein.

@wegstabenverbuchsler: Die Formate müssen passen, denn beim normalen 
Abspielen spielt er alles.

von Wegstaben V. (wegstabenverbuchsler)


Lesenswert?

Dane S. schrieb:
> beim normalen Abspielen

normalen Abspielen von CD? Oder was meinst du damit? Selbe Titel, Selbe 
Ordnerstruktur, selbe Anzahl Stücke?

von Third E. (third-eye)


Lesenswert?

Naja ich meine damit, dass das Radio die MP3s auf dem USB-Stick 
fehlerfrei abspielt. Wenn es grundsätzlich manche nicht lesen könnte, 
würde man das ja beim Abspielen ohne Zufallsfunktion auch merken. Da 
passt aber alles.

Wie gesagt einziges Manko ist der schlechte Zufall. Ich bin kein 
Qualitäter, aber die Häufigkeit, wie oft die Lieder abgespielt werden, 
ist alles andere als eine Gleichverteilung ;-)

von Simon K. (simon) Benutzerseite


Lesenswert?

Geb den Tracks einfach zufällige Dateinamen und spiel sie normal ab :-P

von Sebastian (Gast)


Lesenswert?

Das machen fast alle Autoradiohersteller so.

bei 1000 liedern müsstest du 2000byte ram allein für die Zufallsliste 
haben. (1000 passen ja nicht in ein byte)

Daher wird einfach nach jedem lied über die rand function von C eine 
neue zufallszahl ermittelt.

Am einfachsten wird das wohl sein wenn du dir nen iPOD kaufst und ein 
kompatibles Autoradio, zb ein Alpine.

Wenn du extern 1000 mal auf skip fwd drückst dauert das voll ewig.

von Mareike (Gast)


Lesenswert?

Hallo Third Eye,

alter Thread, aktuelles Problem - habe auch ein JVC-Autoradio mit 
denselben Macken. Mir ist aufgefallen, dass scheinbar nur ein Byte für 
die Tracknummer genutzt wird, weshalb nur die ersten 255 Lieder jedes 
Ordners gespielt werden können. Nachdem ich das beachtet hatte, lief es 
schon deutlich besser. Das ist aber noch nicht alles, glaube ich. Habe 
jetzt ein Skript geschrieben, dass mir auf meinem USB-Stick alle Lieder 
in einen eigenen Ordner packt und hoffe auf Besserung.

Mareike

von Third E. (third-eye)


Lesenswert?

Das mit den max. 255 Titeln pro Ordner steht übrigens in der Anleitung. 
Hatte ich dort aber auch erst später gelesen.
Jedenfalls habe ich das Radio immer noch im Auto. Als Behelf lade ich 
öfter neue Lieder auf den USB-Stick und lösche ein paar alte.
Ich bin inzwischen Linux-Nutzer und da werden offensichtlich die 
neuesten Dateien als erstes in die Ordner kopiert. So habe ich 
praktischerweise als die ersten paar Lieder pro Ordner immer die 
neuesten. Dadurch ändert sich dann auch sozusagen der Index der 
nachfolgenden Dateien und der Möchtegern-Zufallsgenerator liefert wieder 
andere Ergebnisse.

von karl (Gast)


Lesenswert?

Simon K. schrieb:
> Geb den Tracks einfach zufällige Dateinamen und spiel sie normal ab :-P

Das dachte ich auch. Perfekte zufallswidergabe

von Cikromontroller (Gast)


Lesenswert?

Du könntest auch einen USB Stick nehmen, deine ganze Musik draufpacken 
und dann mit einem selbst geschriebenen Programm die Titel in zufälliger 
Reihe numerisch umbenennen. Du brauchst halt nur ein Programm, dass ein 
Prefix wie "001_Z_246" erkennt. Dabei wäre "001_Z_" das Prefix, das dein 
Programm anfügt. Die "246" wäre dann die alte Titelnummer oder wie auch 
immer deine Tracks jetzt beschriftet sind.

Durch die einzigartige Kennzeichnung kannst du das Prefix mit dem 
gleichen Programm wieder löschen.

Da du für neue Musik eh an den PC musst, kannst du auch gleich nochmal 
die Reihenfolge ändern.

Nachteil: Feste Zufallsreihenfolge (Interessantes Wort ;D)

Wenn du aber >200 Lieder in einem Ordner hast und keines doppelt hören 
willst, kannst du einfach durchlaufen lassen. Sollte also gehen.

Kannst ja mal drüber nachdenken ;)

von Cikromontroller (Gast)


Lesenswert?

Simon K. schrieb:
> Geb den Tracks einfach zufällige Dateinamen und spiel sie normal ab :-P

Man sollte alles lesen ;D

Verdammt...

von R. M. (Gast)


Angehängte Dateien:

Lesenswert?

Hab mir für diesen Zweck (ich nutze Linux, müsste aber auch unter 
Windows funktionieren, wenn man den GCC nutzt), diese kleine 
Progrämmchen geschrieben (random copy):
rndcpy <quellverzeichnis> <zielverzeichnis>
Funktion: das Quellverzeichnis wird rekursiv durchsucht, dann die 
Dateien in zufälliger Reihenfolge ins Zielverzeichnis kopiert. Vor den 
Dateinamen wird dabei noch eine 4-stellige Zahl eingefügt, die mit jeder 
kopierten Datei runterzählt. Ich brech dann immer mit ^C ab, bevor das 
Zielmedium voll ist. Damit ist Zufälligkeit auch gewährleistet, wenn der 
Player nach Dateinamen sortieren sollte...
mfG

von Third E. (third-eye)


Lesenswert?

Gerade mal kompiliert und ausprobiert. Funktioniert wunderbar.
Zumindest, wenn man das Zielverzeichnis vorher erstellt. ;-)

Was wie gesagt auch funktionieren sollte: Wenn man die Dateien in einer 
zufälligen Reihenfolge auf den USB-Stick kopiert. Denn das Radio 
sortiert die Lieder nicht, sondern die Reihenfolge dürfte die 
Reihenfolge sein, wie die Dateien auf dem USB-Stick gespeichert sind.

von R. M. (Gast)


Lesenswert?

Third E. schrieb:
>
> Was wie gesagt auch funktionieren sollte: Wenn man die Dateien in einer
> zufälligen Reihenfolge auf den USB-Stick kopiert.

Das ist ja auch der eigentliche Zweck des Programms ;-)

von Third E. (third-eye)


Lesenswert?

Naja, ich meine, das mit der Numerierung ist nicht unbedingt nötig.
Aber da mir ja dein Quellcode vorliegt, ist eine Änderung kein Problem.
Top! :-)

: Bearbeitet durch User
von DoctorKnowItAll (Gast)


Lesenswert?

wenn nach Dateinamen-reihenfolge gespielt wird nehm ich gern das skript:

This script will shuffle files and reshuffle them if they've already 
been shuffled. If you pass it an argument of -u it will unshuffle the 
files (remove the random prefix).
http://stackoverflow.com/questions/3175302/bash-script-to-prepend-a-random-number-to-all-files

(also nich die akzeptierte antwort sondern wo der beschreibe-text steht)

von Codix (Gast)


Lesenswert?

Hier gibt es die ultimative Lösung:
http://www.bernd-leitenberger.de/randomcopy-de.shtml

Damit kopiere ich meine mp3 Files auf den USB Stick.

Besser geht es nicht!

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.