Hallo,
ich wollte fragen wie ich eine *.mp3-Datei über einen Lautsprecher ausgeben kann.
Ich habe ein Ethernet-Shield für die Micro-SD-Karte und einen simplen Lautsprecher,
über den ich Töne mit der tone() Funktion ausgeben kann. Wie müsste der Code aussehen damit ich
eine mp3-Datei abspielen kann?
Zum Projekt gehört eine stark abgespeckte SD-Library, die sehr wenig Speicher belegt, und ein unter Windows lauffähiges Kommandozeilen-Konvertierungstool (aber auch für Linux verfügbar), um mit irgendwelcher Software von CD gerippte WAV-Dateien oder von MP3 nach WAV konvertierte Dateien in das spezielle WAV-Format mit ganz bestimmter Datenrate und 8-bit Format zu konvertieren, das die Library abspielen kann.
Besonders auf dem Arduino Uno mit nur 2 KB RAM-Speicher ist ja schon mit zwei Flash-Speicherblöcken a 512 Bytes die Hälfte des RAM weg, die abwechselnd zum Abspielen der Musikdaten genutzt werden, während die nächsten Musikdaten in den anderen Speicherblock vorgeladen werden, also Vorsicht wenn Du auf einem UNO lieber eine Full-Featured-SD-Library verwenden möchtest, das könnte vom RAM her extrem knapp werden oder gar mißlingen. Aber mit der zum Projekt gehörenden SD-Library kein Problem.
Die Libarie funktioniert gut. Nur kann man die Tonhöhe auch verändern?
Ich habe eine Testdatei mit meiner Stimme angespielt, nur klingt sie auf dem
Lautspreche so hoch, das man denken kann es ist irgendeine Figur aus dem Fernsehen.
Addi:
Die Libarie funktioniert gut. Nur kann man die Tonhöhe auch verändern?
Ich habe eine Testdatei mit meiner Stimme angespielt, nur klingt sie auf dem
Lautspreche so hoch, das man denken kann es ist irgendeine Figur aus dem Fernsehen.
Deine WAV-Datei hat offensichtlich die falsche Datenrate.
Konvertiere sie mit den enthaltenen Kommandozeilentool "sox" in eine WAV-Datei passender Datenrate!
Mit einem Lautsprecher über Einfachverdrahtung und für die bessere Tonqualität wirst Du Deine WAV in "8-Bit, Fullrate, Mono" haben wollen, damit sie unverzerrt wiedergegeben wird.
Hier ist die Kommandozeile/Batch-Zeile, um eine Datei mit falscher Datenrate "myfile.wav" in eine Datei passender Datenrate "myfile.asf" für die Wiedergabe in "8-Bit, Fullrate, Mono" zu konvertieren: