Hallo Freunde der Bits und Bytes,
in den vergangenen paar Jahren „Grundlagenforschung“ auf dem Arduino habe ich recht erfolgreich kleinere oder größere Sketches und Bastelarbeiten realisiert. Vor allen Dingen mein SudokuSolver.UNO, mein DF-Player.85, sogar ein halbwegs ordentlich spielendes Schachprogramm auf dem 328p wurde Realität. Nach all diesen „netten Spielereien“ dachte ich mir aber, mal ein „nützlicheres“ Projekt zu starten.
Zielsetzung:
Als alter Gitarrist schwebt mir vor - einen vom Arduino gespeisten Drum-Computer zu bauen. Hierbei erhoffe ich mir zur Ergänzung meiner eigenen Ideen - eure Gedanken zu Verbesserungen, Vereinfachungen, oder auch Hinweise auf Denkfehler bzw. eventuelle Hürden.
Stand der Dinge:
Ich kann bereits einen Mega 8a, 168a oder 328p mit einem WAV-Schnipsel bestücken und auf Tastendruck z.B. ein „Snaredrum“ abrufen. Das klappt ebenso für ein „Kickdrum“ oder für „Cymbals“. Die Auswahl des µC richtet sich nach dem Umfang der einzelnen WAV-Samples. Der Abruf bringt diese Daten an einen 8-Bit Port, aus dem mittels DA-Wandler ein analoges Signal erzeugt und per OP-Amps abgetastet wird. Am Ende werden alle Kanäle gemischt, gehen auf einen Verstärker und machen „ordentlich Lärm“. Klappt bisher alles wunderbar und mit recht gutem Klang! In Zukunft sollen diese „Instrumente“ parallel zu den Tastern auch automatisch aktiviert werden können. Die Programmierung der WAV-Ausgabe geschieht (hust) in Assembler - und benötigt je Instrument lediglich etwa 200 Bytes inkl. analoger Poti-Abfrage um die Tonhöhe der „Trommeln“ zu manipulieren. Der Rest des Controllers nimmt die WAV-Rohdaten auf.
Problem dabei:
Da ich erst 3 solcher „Instrumente“ realisiert habe, gehen meine Gedanken derzeit in Richtung „IC-Grab“, weil ich gerne bis zu 16 „Instrumente“ parallel verarbeiten möchte. Zusammen mit einem übergeordneten Steuer-Controller für eine geplante Automatik wären das nach aktueller Schätzung 16 µC im Format DIP 28 plus 1x DIP 40 für die Steuerung, sowie die jeweiligen DA-Bausteine und OP-Amps. Besser wäre es, wenn ich z.B. einen Tiny 84 je Instrument einsetzen könnte (spart einiges an Platz). Die WAVs passen dann aber nur zu einem Teil in die max. 8 kByte des Tiny-FLASH (reicht lediglich für „Snare“, „Cowbell“ oder auch „Tamburin“). Daher auch die größeren Contoller mit 16 bzw. 32 kByte. In der Summe macht mich dieses „IC-Grab“ aber etwas unsicher...
Meine Frage(n) dazu:
- Kennt jemand eine geeignete Bibliothek, die ich für die Umwandlung von MP3-Samples nutzen könnte?
- Hat jemand einen Tipp, wie groß so ein Decoder ist und evtl. wie er programmiert wird?
- Wird dadurch der Einsatz der 8k Tinys wiederum illusorisch?
- Habe ich vielleicht noch irgend etwas vergessen, um dieses Projekt „generell“ zu realisieren?
- Oder hat jemand eine Idee, wie ich das ganz anders lösen könnte (außer „Fertiggerät kaufen“)?
- Wäre PWM eine günstigere bzw. geeignetere Lösung?
- Wie funktioniert das in diesem Fall mit der Umwandlung in Töne?
Vielen Dank vorab für eure Zeit und
beste Grüße
Rudi