Forum: Mikrocontroller und Digitale Elektronik MP3-Player mit Lichtsteuerung (ATMega, VS101, SD-card)


von Ben _. (burning_silicon)


Lesenswert?

Mir kam vorhin die Idee, den Controller eines Eigenbau-MP3-Players 
zusätzlich für Lichtsteueraufgaben zu verwenden. Ich benötige dafür den 
Schaltplan eines möglichst erweiterungsfreundlichen MP3-Players auf 
Basis eines ATMega644 oder so, der seine Daten von einer SD-Karte 
bezieht. Wenn möglich brauch ich die Quelltexte für die 
SD-Karten-Operationen und die Versorgung des MP3-Decoders in Assembler, 
sorry, aber ich mag Assembler bei der µC-Programmierung. Wenns geht so 
viel wie möglich interruptgesteuert, damit man sich nicht groß um die 
Zugriffe auf die SD-Karte oder den MP3-Decoder kümmern braucht.

Die Steuerdaten für das Licht könnte man in einem eigenen Dateiformat 
mit den MP3-Daten multiplexen und auf der SD-Karte ablegen. Der 
Controller macht dann das demuxen, sendet die MP3-Daten an den Decoder 
und verarbeitet die Lichtsteuerdaten selber. Die drei Timer ließen sich 
z.b. für drei 8bit-dimmerkanäle verwenden und etliche Pins des 
Controllers gehen bestimmt als ein/aus-Kanäle zu nutzen.

Oder man überträgt die Lichtsteuerdaten per I2C oder so an einen zweiten 
µC, der die Lichtsteuerung übernimmt - diese Variante würde ich 
bevorzugen weil weniger Modifikationen am MP3-Player erforderlich sind. 
Soll auch kein Massenprodukt werden wo es sich lohnen würde den zweiten 
µC einzusparen.

Als Controller schwebt mit der ATMega644 vor wegen der RAM-Größe, als 
MP3-Decoder der VS1001 oder VS1011 - je nachdem welcher besser ist.

Meine Fragen an Leute, die sich mit dem VS1001 oder VS1011 auskennen:

1. Welchen von beiden ICs nehmen? Welcher bietet evtl. Vorteile?

2. Hat einer der beiden ICs Register womit man rauskriegen kann an 
welcher Stelle der Decoder gerade beim Abspielen ist? Ansonsten gibt es 
durch den Puffer des Decoders einen Zeitversatz zwischen gesendeten und 
abgespielten Daten, der evtl. schon im Licht-Timing bemerkt wird.

3. Wie konstant ist der Datenstrom zum Decoder bei einer MP3-Datei mit 
konstanter Bitrate? Ich strebe 192kbit/s als konstante Bitrate an. Der 
ATMega hat aber nicht viel RAM um viele Lichtsteuerdaten zu puffern, 
sodaß die Lichtsteuerdaten in der gemuxten Datei sehr nahe bei den 
abgespielten MP3-Daten liegen müssen.

Soweit ich weiß bekommt der Decoder seine Daten ja immer in Form von 
Blöcken. Es erscheint mir sinnvoll, diese Blöcke einfach um eine 
Markierung zu erweitern ob dieser Block nur Audio-Daten enthält oder 
auch Lichtsteuerdaten. Also zwei Blocktypen, Audio plus 
Kein-Licht-Markierung und Audio plus Licht-Markierung plus Lichtdaten.

Und mal sehen was Ihr von der Idee haltet....... :)

von holger (Gast)


Lesenswert?

ROFL;)

von Ben _. (burning_silicon)


Lesenswert?

tschuldigung, ich vergaß zu erwähnen, daß auch SINNVOLLE ANTWORTEN 
erwünscht sind. mein fehler!

von ROFL;) (Gast)


Lesenswert?

ROFL;).....ROFL;)

von Ben _. (burning_silicon)


Lesenswert?

vielen dank leute... bin langsam auch dafür, daß gäste hier nicht mehr 
posten dürfen. gratulation - ihr habt es geschafft!

von funky (Gast)


Lesenswert?

ähhh....wofür explizit "lichtsteuerdaten"? die daten hast du doch schon 
in form deines mp3files. damit ist das licht ja an höhen/tiefen des 
musikstücks gekoppelt. oder wolltest du mal eben das mp3format 
umschreiben um da für jeden song einzelne "lichtsteuerdaten" 
einzufriemeln??

bau erstmal nen mp3player der funktioniert...wenn du dann noch haare 
hast, dann ist die lichtgeschichte ein klacks :D

von funky (Gast)


Lesenswert?

oder schwebte dir bei lichtsteuerung jetzt eher so etwas ala DMX vor?? 
dann ist es aber blödsinn, das in einem mp3 file codieren zu wollen

von Ben _. (burning_silicon)


Lesenswert?

das ist ja der witz daran, aus dem MP3 player würde damit eine komplette 
programmablaufsteuerung. die daten die das ding dann braucht wären wie 
auch schon gesagt kein reines MP3 mehr sondern ein datenstrom in dem MP3 
und lichtsteuerdaten gemultiplext vorliegen. quasi wie die 
audio/video-streams in den VOB-dateien von DVDs.

klar, ne einfache lichtorgel dranadaptieren wäre das geringste problem, 
aber das reicht mir nicht. ich möchte gerne, daß das teil auch effekte 
wie strobos, ACL-spots oder nebelmaschinen steuern kann. DMX-512 wäre 
vom prinzip her auch denkbar, allerdings fallen dafür bestimmt mehr 
daten an als für das MP3.

in erster linie brauch ich jemanden, der sich richtig gut mit dem VS1001 
oder VS1011 auskennt... damit wäre mir schon einiges geholfen.

und die SD-karten technik werde ich wohl brauchen um das ding mit daten 
zu füttern.

von Ben _. (burning_silicon)


Lesenswert?

*nochmal hochschieb!*

habe keine lust alles alleine zu bauen, hat keiner schon fertige 
ansätze hierfür? MP3-player in eigenbau müßte es doch schon viele geben!

von Floh (Gast)


Lesenswert?

Ben _ schrieb:
> klar, ne einfache lichtorgel dranadaptieren wäre das geringste problem,
> aber das reicht mir nicht. ich möchte gerne, daß das teil auch effekte
> wie strobos, ACL-spots oder nebelmaschinen steuern kann. DMX-512 wäre
> vom prinzip her auch denkbar, allerdings fallen dafür bestimmt mehr
> daten an als für das MP3.

Schieb das in wenig genutzte Frequenzen der mp3s, mach dann beim 
Abspielen ne FFT drüber (deine Lichtorgel), die aus diesen bestimmten 
Frequenzbändern Informationen zum Ansteuern der Spezialeffekte 
beinhalten.

So als Idee :-)

von SilentWarrior (Gast)


Lesenswert?

Villeicht hilft das weiter: http://spurtikus.de/basteln/vs1011.html

von Ben _. (burning_silicon)


Lesenswert?

das ist auch keine schlechte idee, aber FFTs dafür finde ich etwas 
"overkill". angesichts heutiger speichertechnologie ist es egal ob das 
MP3 mit den lichtsteuerdaten drin doppelt so groß ist wie vorher.

im grunde bräuchte ich erstmal nur ein paar infos über die fähigkeiten 
des VS1001 oder VS1011 - von jemandem, der vielleicht schon ein paar 
davon verbaut hat.

von Karl H. (kbuchegg)


Lesenswert?

Gleich vorweg:
Ich hab mich noch nie mit den Details von MP3 beschäftigt.

Aber mir drängen sich da sofort 2 Fragen (bzw. Problemkreise) auf

* kann man in einem MP3 File mehrer unterschiedliche Kanäle
  unterbringen, oder ist das aufgrund der Herkunft als Audio
  Format auf 2 beschränkt

* Was ich auf gar keinen Fall tun würde: Meine Steuerdaten einem
  File Format anvertrauen, welches verlustbehaftet komprimiert.
  Das führt u.U bei der Dekompression dann zu lustigen Effekten.

von Sebastian .. (zahlenfreak)


Lesenswert?

Wo liegt denn jetzt genau das Problem? Such dir ein fertiges mp3-player 
Projekt und bau das nach. Dann hast du die Ansteuerung von VS und 
SD-card schon fertig. Wenn das läuft überlegst du dir, wie du in die 
vorhandene Firmware noch deine Lichtsteuerung einbaust. Ich würde über 
ein Containerformat nachdenken. Also immer ein paar Byte 
Lichtsteuerdaten und ein paar Byte mp3 zusammenschnüren. Das kann man 
dann auch auf dem microcontroller sehr einfach wieder auspacken und hat 
weiterhin die zeitliche Zuordnung von Licht und Ton.
Fertige Player musst du aber wirklich selbst suchen. Wenns schon an der 
Bedienung von Google scheitert ist das Projekt nämlich wirklich nichts 
für dich...

von Ben _. (burning_silicon)


Lesenswert?

hm ich glaub mit google komme ich klar... :D

das ganze war auch von anfang an so gedacht, daß der µC das 
containerformat (welches dann keine .MP3-datei mehr ist) wieder 
auspackt, der MP3-Decoder bekommt von den lichtsteuerdaten nichts mit 
und der fürs licht zuständige teil nichts von den MP3-daten. alles 
andere würde mit dem begrenzten RAM eines ATMega nicht funktionieren.

im grunde brauche ich informationen wie der VS1011 mit seinem puffer 
funktioniert und ob er einen zeit-zähler hat wo er mit dem abspielen 
ist. sowas würde man brauchen um das licht mit dem sound dauerhaft 
synchron zu halten (unabhängig von puffer-füllständen).

ein fertiges projekt in assembler wäre phantastisch, evtl. eines was 
auch auf die SD-karte schreiben kann. ich muß ja zum player auch das 
gegenstück bauen um die lichtsteuerdaten zu erzeugen. also vor allem die 
SD-routinen sind wichtig, muß zugeben, daß ich davon noch keine ahnung 
habe. C ist leider auch keine stärke von mir, bislang hab ich alles 
modernere in assembler (oder PHP) geschrieben.

von Martin (Gast)


Lesenswert?

... ich glaub mit google komme ich klar ...

Gratulation!

von Ben _. (burning_silicon)


Lesenswert?

danke!

von Detlev T. (detlevt)


Lesenswert?

Hallo Ben__,

auf den Seiten des Herstellers der VS10xx-ICs gibt es Projekte für 
Standalone-Player. Da holt sich das IC selbständig die Daten von der 
SD-Card. Der µC muss dann das ganze nur noch steuern, aber keine Daten 
mehr schaufeln. Das wäre vielleicht das richtige für dich. Die 
Informationen dazu findest du hier: 
http://www.vlsi.fi/en/support/evaluationboards/vs10xxprotoboard.html (in 
der Leiste rechts)

Gruß, DetlevT

von Ben _. (burning_silicon)


Lesenswert?

danke dir für deine sehr interessante antwort, hätte nicht gedacht, daß 
der IC alleine das kann.

allerdings muß ich schon einen µC dazwischenschalten, denn die 
licht-daten dürfen nicht zum VS10xx, die licht-daten müssen zusammen mit 
den mp3-daten von der SD-card runter (egal ob aus einer oder aus zwei 
dateien) und ich muß irgendwie an diese abspielzeit-register dran falls 
der VS10xx sowas haben sollte.

von Detlev T. (detlevt)


Lesenswert?

Hallo Ben___,

meines Wissens kann man in eine MP3-Datei zusätzliche Informationen 
standardgerecht unterbringen, die vom Decoder ignoriert werden müssten. 
Bei den MP3-Tags wird das z.B. so gemacht. Ob auch der VS10xx damit klar 
kommt, müsstest du noch einmal recherchieren.

Ich weiß ja nicht, wie umfangreich diese "Lichtdaten" sind. Passen die 
ins SRAM? (der ATMEGA1284P hat 16kB). Falls ja, kann man das System 
durchaus so aufbauen, dass sowohl µC als auch VS10xx auf die SD-Card 
zugreifen können, allerdings nicht parallel. Die Infos dazu findest du 
in den Application Notes, sind aber etwas versteckt. Dann liest man halt 
erst einmal die "Lichtdaten" ein und startet dann erst die Wiedergabe 
via VS10xx. Die aktuelle Position kann man AFAIK auch auslesen und so 
die Sachen synchronisieren.

Das beste ist wohl, man hält sich die Optionen offen. Man kann die 
Hardware durchaus derartig flexibel aufbauen, wenn man vorher ein 
bisschen nachdenkt.

Gruß, DetlevT

von holger (Gast)


Lesenswert?

>habe keine lust alles alleine zu bauen,

Dafür gibt es noch ein ROFL;)

> hat keiner schon fertige
>ansätze hierfür?

Ansätze für dein seltsames Projekt? Wohl kaum.

> MP3-player in eigenbau müßte es doch schon viele geben!

Gibt es auch. google kennt sie alle.

>ein fertiges projekt in assembler wäre phantastisch

Assembler benutzt da aber kaum einer.

>evtl. eines was
>auch auf die SD-karte schreiben kann. ich muß ja zum player auch das
>gegenstück bauen um die lichtsteuerdaten zu erzeugen.

Das machst du auf dem PC. Schreiben auf SD ist also nicht nötig.
Mit uC sowieso viel zu langsam.

>ich muß irgendwie an diese abspielzeit-register dran falls
>der VS10xx sowas haben sollte

Hat er.


Fassen wir doch mal zusammen:
Du kannst das Datenblatt vom VS10xx nicht lesen.
Du kannst kein C.
Google interessiert dich nicht.
Du hast keine Vorstellung davon wie kompliziert das ganze wird.
Über Schaltpläne wurde noch gar nicht geredet. Da kommt auch
noch einiges zusammen.

Fazit: Du kannst es nicht ohne massive Hilfe. Die wirst du aber
nicht bekommen wenn sich keiner für dein Projekt interessiert.
Dann stehst du da mit angenähtem Hals;)

von Ben _. (burning_silicon)


Lesenswert?

naja der einzige der irgendwann mit angenähtem hals rumsteht ist so ein 
gewisser holger. das heißt nur falls die ärzte noch was machen konnten 
nachdem ich ihm den kopf abgezupft, die restlichen knochen neu gemischt 
und die ganze k*cke aus dem hirn gekippt habe.

ich fasse am besten auch mal zusammen...

1. ich weiß was ich will (das ist schon mal viel wert) und
2. es gibt bereits fertige MP3-player im eigenbau folglich
3. möchte ich das rad nicht neu erfinden weil
4. einer dieser player bestimmt erweiterbar ist.

sorry wenn ich ein wenig patzig wirke, aber wenn du keine konstruktiven 
beiträge zum thema abgeben kannst dann machs doch einfach mal wie dieter 
nuhr. ich hab nichts dagegen wenn du mir schwächen in meinem projekt 
oder mögliche gefahren aufzeigen willst - aber bitte nicht auf die tour, 
daß du alles als grenzdebil hinstellst wenn du das projekt nicht 
verstehst oder verstehen willst. ich lass mich doch schließlich auch 
nicht drüber aus ob ich deine ideen merkwürdig finde oder nicht.

@detlef

ich weiß nicht ob 16kbyte ram reichen. auf jeden fall wäre so ein IC 
interessant weil dann große puffer möglich werden.

wenn VS10xx und µC nicht gleichzeitig von der SD-karte lesen können 
bleibt nur die option das licht-MP3 auf dem µC zu demultiplexen und die 
MP3-daten alleine zum decoder zu schicken. damit liest der µC alleine 
nur eine einzelne datei von der SD-karte. aber hat jemand die routinen 
für die SD-karte in assembler? lesen muß das ding zwangsläufig können 
und schreiben wäre schön. das zu haben wäre erstmal das wichtigste, den 
VS10xx zu füttern sollte nicht das riesen-problem sein.

die MP3-tags sind bei den älteren tags ganz am ende der datei, bei 
neueren dateien hängen sie ganz am anfang. oft sind auch beide tags 
vorhanden, aber der MP3-datenstrom hängt immer zusammen und wird nicht 
durch steuerdaten unterbrochen.

werd mal schauen ob ich irgendwo assembler-routinen für den zugriff auf 
SD-karten finde.

von funky (Gast)


Lesenswert?

es ist genau umgekehrt...bei id3 v1 waren die tags immer am anfang der 
datei. bei neueren id3 formaten können sie auch am ende sein. ich glaub 
bei den neuer id3-tags ab 2.x ist die länge der einzelnen felder nicht 
mehr begrenzt sondern kann variabel angepasst werden. wäre also für 
steuerinfos zu missbrauchen

aber mit verlaub: ich finde das ganze irgendwie unsinnig :)

von Ben _. (burning_silicon)


Lesenswert?

über unsinn oder nicht kann man sich streiten. um mal ein thema 
anzuführen wo ich probleme mit dem sinn habe sind nixie-uhren. sowas 
brauche ich nun wieder ganz und gar nicht.

was die zweckmäßigkeit meines projekts angeht - denkt mal an die 
veranstaltungstechnik. oder wenn man mal eine größere party alleine 
"versorgen" soll, man hat einfach nicht genug hände für ton und licht 
gleichzeitig. das endet dann entweder mit einer schnöden lichtorgel oder 
diversen sound2light-varianten, die aber alle nicht zusammenarbeiten 
oder man überlegt sich halt was wo der player die lichtsteuerung 
übernimmt.

naja lange rede kurzer sinn, mit dem demuxen der daten habe ich keine 
probleme wenn die erstmal im puffer im µC sind. für letzteres bräuchte 
ich ohne hilfe etwas länger...

von Martin (Gast)


Lesenswert?

Ben sprach: im Player werde Licht,
doch selbst leichten tut er nicht.

von Martin (Gast)


Lesenswert?

Ben sprach: im Player werde Licht,
doch selbst leuchten tut er nicht.

von Karl H. (kbuchegg)


Lesenswert?

Ben _ schrieb:
> über unsinn oder nicht kann man sich streiten. um mal ein thema
> anzuführen wo ich probleme mit dem sinn habe sind nixie-uhren. sowas
> brauche ich nun wieder ganz und gar nicht.

OK.
Ist ein Argument.
Auf der anderen Seite ist so eine Nixie Uhr softwaretechnisch nicht 
besonders aufwändig.

> was die zweckmäßigkeit meines projekts angeht - denkt mal an die
> veranstaltungstechnik. oder wenn man mal eine größere party alleine
> "versorgen" soll, man hat einfach nicht genug hände für ton und licht
> gleichzeitig.

Genau daran denke ich.
Hast du die Tools um einen Song nach dem anderen mit einer Lichtspur zu 
versehen?
Wer wird das dann machen? Hast du dir schon mal überlegt, welche Arbeit 
es ist 20 Songs mit Lichtdaten zu versehen? Das ganze schreit doch schon 
im Ansatz nach: nette Idee, aber nach dem 5. bearbeiteten Song stellt 
man fest, dass das zuviel Arbeit für wenig Effekt ist und alles schläft 
wieder ein.

Seien wir doch ehrlich.

> das endet dann entweder mit einer schnöden lichtorgel oder
> diversen sound2light-varianten, die aber alle nicht zusammenarbeiten

Die aber einen gewaltigen Vorteil haben:
Man stöpselt sie ein und egal was man ihnen vorwirft, es kommt etwas 
einigermassen brauchbares dabei raus.

> oder man überlegt sich halt was wo der player die lichtsteuerung
> übernimmt.

Die Idee ist ja prinzipiell gut. Und ich denke nicht, dass du der erste 
bist, der sie hat. Wenn man das bisher nirgends sieht, dann hat das 
sicherlich keine technischen Gründe :-)

> naja lange rede kurzer sinn, mit dem demuxen der daten habe ich keine
> probleme wenn die erstmal im puffer im µC sind. für letzteres bräuchte
> ich ohne hilfe etwas länger...

Mit meiner persönlichen Meinung dazu halte ich jetzt mal hinter dem Berg 
:-)

von Ben _. (burning_silicon)


Lesenswert?

eine nixie-uhr ist in software kein problem, dafür hast du 
hardwareseitig unschön hohe spannungen.

ok ich dreh meine frage mal um... wie wäre es ein lichtsteuerpult zu 
bauen was auch MP3 abspielen kann? ist das gleiche in grün. nur damit 
man mich versteht... lichtsteuerpult bau ich sowieso, richtig 
interessant wär's aber wenn dieses analog zu scheinwerfern auch 
endstufen steuern könnte. ist hardwareseitig kein großer mehraufwand, 
brauche eben nur die softwareseitigen ansätze.

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.