Derzeit online

Aktuell 18 Gäste online
Home arrow Wav-Player
Wav-Player PDF Drucken

Um längere Sounds und Samples abspielen zu können, reicht der Speicher eines ATMEGAs bei weitem nicht aus. Um dies dennoch realisieren zu können, habe ich eine kleine Routine implementiert, die WAV-Files von einer SD-Card abspielen kann.

Die WAV-Formate, welche ich benutzt habe, sind sehr simpel. Ein File besteht aus einigen Header-Bytes, die Aufschluss über Länge, Bit-Tiefe und Sample-Frequenz geben und danach kommen Bytes, die für die Amplitudenwerte des Sounds stehen.

Um das Abspielen der Files zu vereinfachen, benutze ich das Unterformat "8 Bit unsigned". Die Bytes des Wav-Files müssen einfach nur in der Geschwindigkeit des Samples (11050 oder 22100 Bytes pro Sekunde je nach Wahl des Formates) an den DA-Wandler übergeben werden und schon erklingt aus dem nachgeschalteten Verstärker der Sound.

Einige Kleinigkeiten sind jedoch zu beachten. Das genaue Timing des Abspielens ist extrem wichtig für einen sauberen Klang ohne "Leiern". Dieses sollte auf jeden Fall mit einem Timer realisiert werden. Ferner ist wichtig, die WAV-Bytes ständig zur Verfügung zu haben, damit das Nachladen der Bytes von der SD-Card nicht zu aussetzern im Sound führt.

Folgende Vorgehensweise hat sich bei mir bewährt. Es werden zwei 64 Byte lange Arrays angelegt. Aus einem werden die Bytes gelesen und per Interrupt abgespielt, während das andere mit 64 neuen Bytes von der SD-Card gefüllt wird.
Ist das letzte Byte abgespielt, wird die Funktion der beiden Arrays getauscht. Das andere Array wird nun abgespielt, wärend das zuvor abgespielte Array nun wieder mit Bytes aus der SD-Card gefüllt wird.

Letzte Aktualisierung ( Sonntag, 25. Januar 2009 )