Beitrag vom 3. Januar 2017
Es gibt verschiedene Arduino-Shields und Breakout-Boards mit dem VLSI-Chip VS1053 B.
Dieser Chip kann unter anderem viele verschiedene Audioformate wie MP3, Wave... wiedergeben.
Ein besonderes Feature ist aber, dass ein kompletter MIDI-Wavetable-Synthesizer enthalten ist.
Ich habe mir nun den folgenden Arduino-Shield bei Ebay gekauft:
VS1053-MP3-Module-Development-Board-with-On-Board-Recording-Function
Als "Erstversuch" wollte ich eine MP3-Datei über den SPK-Ausgang (Klinkenbuchse unten links) wiedergeben. Die MP3-Datei muss sich auf einer SD-Karte befinden. Die erste Enttäuschung war nun, dass der eingebaute SD-Card-Slot nicht funktionierte.
Das konnte ich aber dadurch umgehen, dass ich ein externes SD-Card-Modul anschloss:
SD-Card-Modul für Arduino UNO ohne Spannungswandler bei Ebay
Das SD-Card-Modul wird folgendermaßen mit den Arduino-Pins verbunden:
SD-Card-Modul Arduino
GND ----------------- GND
+5-------------------5V
MISO-----------------Pin12
MOSI-----------------Pin11
SCK-------------------Pin13
CS---------------------Pin9
Die Bezeichnungen stehen neben den Pins auf dem SD-Card-Modul.
Nun müssen noch zusätzliche Bibliotheken installiert werden:
https://github.com/madsci1016/Sparkfun-MP3-Player-Shield-Arduino-Library
Man kann über den Button "Clone or Download" das gesamte Repository als ZIP-Datei runterladen.
Danach die ZIP-Datei entpacken und die enthaltenen Bibliotheks-Ordner SFEMP3Shield und SdFat in den Ordner C:\Program Files (x86)\Arduino\libraries kopieren.
Hier ist der Vorgang noch einmal genauer erläutert - in englischer Sprache:
https://learn.sparkfun.com/tutorials/mp3-player-shield-hookup/using-the-sfemp3shield-library
MP3-Wiedergabe mit SD-Karte
MIDI-Wiedergabe - auch ohne SD-Karte
Das folgende Arduino-Programm MP3_Shield_RealtimeMIDI.ino zur Real-Time-MIDI-Ausgabe funktionierte bei mir auf Anhieb:
https://gist.github.com/microtherion/2636608
Diese beiden Zeilen in MP3_Shield_RealtimeMIDI.ino müssen aber noch geändert werden:
#define USE_GPIO_INIT 0
#define USE_SPI_MIDI 1
* Real Time MIDI mode can be enabled with two different methods, controlled by USE_GPIO_INIT
* (1) Setting GPIO1 to HIGH (which is hardwired in the Sparkfun Music Instrument shield, and can be done through pin 4 in the MP3 Player Shield)
* (0) Sending a small software patch through SPI.
Der "Befehl" USE_GPIO_INIT 0 sorgt also dafür, dass ein Patch für die MIDI-Betriebsart an den VS1053B gesendet wird. -> Software-Aktivierung der MIDI-Betriebsart
Bei USE_GPIO_INIT 1 wird lediglich abgefragt, ob der Pin GPIO1 auf HIGH liegt. -> Hardware-Aktivierung der MIDI-Betriebsart
Sobald das Programm MP3_Shield_RealtimeMIDI.ino nun auf dem Arduino + Shield läuft, werden nacheinander alle verfügbaren MIDI-Instrumente des integrierten Wavetable-Synthesizers des VS1053B "angespielt". Gleichzeitig werden die Wavetable-Nummern der Instrumente im Seriellen Monitor angezeigt.
Viele weitere Informationen von SparkFun zum VS1053 und ein MIDI Code Example gibt es hier:
SparkFun MP3 and MIDI Breakout - VS1053
Die Code Examples habe ich aber noch nicht getestet!
Weitere Produkte
LCSOFT STUDIO - ein Breakout-Board mit VS1053-Chip, das MIDI und MP3 abspielen kann
LCSOFT STUDIO bei www.ebay.de (10 €)
Noname VS1053-Breakout-Board bei www.ebay.de/ (8 €)
Adafruit VS1053 Breakout-Board für MIDI und MP3 -> Soundmodul für Arduino (25 €)
Geetech Arduino MP3 shield (ca. 8 € auf Ebay) mit Bibliothek und Demo-Code
SD-Card-Modul für Arduino Due bei www.geras-it.de (mit Pegelwandlern) 2,40 €
http://cargocollective.com/polle/Reinventing-A-Drummachine
http://wiki.seeed.cc/Music_Shield_V2.2/
http://goetzmd.de/diy/diy-midi-controller/schaltplan-und-arduino-sketch-diy-midi-controller-finale