In Javascript, hergeleitet von freemat/encoder Copyright 2011 Peter Knight Damit man nicht noch Freemat installieren muss.
Um eine WAV-Datei (vorzugsweise 8 kSa/s mono) umzuwandeln lädt man diese, betätigt „Kodiere“ und kann das Ergebnis entweder „binär speichern“ oder das Hexadezimal-Array in die System-Zwischenablage befördern. Stille am Anfang und am Ende der Datei wird automatisch weggerechnet. Man kann sich das Ergebnis „anhören“, wie es auf dem Arduino klingen wird: Diese Javascript-Simulation verwendet die gleichen Bitbreiten wie der AVR-Prozessor. Wohlgemerkt, das Kettenfilter wurde von 10 auf 8 Bit reduziert, ohne dass man's sonderlich heraushört. Durch die eingebaute Begrenzung nach jeder Addition (kostet in Assembler nicht viel) konnte die im Original mickrige Lautstärke sicher — ohne Bitreserven halten zu müssen — auf das Vierfache(!) erhöht werden. Eine Rundungsfunktion nach der Multiplikation verringert die Gefahr von hörbaren Grenzzyklen. So läuft's auch auf einem ATtiny, allerdings mit „aufgerollten“ Multiplikationsroutinen in Assembler. Diese sind bereits ausgetüftelt. Vermutlich sogar schon mit 8 MHz Taktfrequenz! Was zu testen wäre.
Eingabedaten: .WAV PCM | Kompression | Ergebnis | Dekompression (live) |
---|---|---|---|
|
|
|
(Fortschritt: Speicher, nicht Zeit!) |
Offensichtlich fehlt hier, gleich in Javascript mit dem Mikrofon aufzunehmen. Da habe ich noch nicht rausgefunden, wie das geht. (Klappt nur mit Firefox, aber die 48-kSa/s-Aufnahme wird beim Komprimieren vermatscht.)