Forum: Mikrocontroller und Digitale Elektronik Audio Dekoder für AVR


von Benedikt (Gast)


Lesenswert?

Hat schonmal jemand irgendeinen Audio Dekoder für kleine AVRs
(irgendwelche Tinys, z.B. Tiny15 o.ä.) geschrieben ?
Es gibt eine ADPCM Application Note (AVR336), die aber nur für große
AVRs geeignet ist, da ziemlich viel CPU Leistung benötigt wird (16MHz
für 8kHz Samplerate).
Im Internet habe ich diese Schaltung gefunden, aber leider sind keine
genaueren Informationen dabei:
http://www.kick4.net/tkk/0310tomohara.pdf
Ansonsten ist es aber genau das was ich suche: Mit einem 8Pin AVR und
einem großen EEPROM einen Audioplayer bauen um Geräusche abzuspielen.
Mit einem 24C1024 kommt man auf 64s...

von Rufus T. Firefly (Gast)


Lesenswert?

Wenn man einfach nur 8-Bit-Samples abspielt, braucht man keinerlei
Decoder, nur deutlich mehr Speicher (halt 8000 Byte/sekunde, also knapp
ein halbes Megabyte für eine Minute Spieldauer). Alternativ empfiehlt
sich ein Hardware-MP3-Decoder, da wäre die Kompressionsrate auch
deutlich höher als bei ADPCM, das, wenn ich mich recht irre*, gerade
mal Faktor 2 hinbekommt.
Statt eines EEPROMs sollte besser eine Flash-Speicherkarte verwendet
werden, die lässt sich dann leicht mit einem PC und Kartenleser**
programmieren, kostet nicht sonderlich viel und ist sehr viel größer
als herkömmliche EEPROMs. SD- oder MM-Karten benötigen auch nicht
sonderlich viele Anschlüsse.



*) Will ich nicht ausschließen. Soweit ich mich erinnere, wird ADPCM
bei DECT verwendet, das mit einer Datenrate von 32 kBit/sec arbeitet
und die gleiche effektive Audioqualität wie ISDN erzielt.
**) Klingt widersprüchlich, ist aber so.

von Benedikt (Gast)


Lesenswert?

Das ist mir schon klar, wenn ich viel Speicher brauchen würde, würde ich
ne 2,5" HDD nehmen, mit 0,7" Bauhöhe, die hat 100GB...

Ich möchte das ganze kompakt haben, daher dachte ich an die beiden SO8
ICs.
ADPCM kann auch höhere Kompression haben, wenn man nicht 4bit sondern
nur 2 oder 3 bit verwendet. mp3 Dekoder usw. ist zu groß und kostet
Geld, ein EEPROM (oder Dataflash) + ein ATtiny sollte für eine einfache
Kompression genügend Rechenleistung haben.
Selbst wenn man so die Daten nur auf 50% komprimieren kann, ist es
immerhin schon eine Ersparnis.

PS: Hat schonmal jemand versucht einen einfachen mp3 Dekoder (oder
sowas ähnliches) in einen AVR zu paken ?
Von der Rechenleistung sollte es möglich sein, wenn man bei der
Qualität nicht gerade Hifi haben möchte.

von Thomas Burkhardt (Gast)


Lesenswert?

mp3 in software in einem AVR dekodieren? Du meinst der hat dazu genug
Rechenleistung, glaub ich erstmal nicht...

von Hannes Hering (Gast)


Lesenswert?

Hallo,

also das mit MP3 in Software dekodieren bekommt ja nichtmal ein 486er
mit 80 MHz richtig hin und der hat Multiplikationsbefehle sowie ne FPU
... mit nem DSP schon eher, allerdings ... naya ... umständlich! ;)
lieber für ca. 12-15 € nen fertigen kaufen!

Eine relativ einfache und schnelle Kodierung ist alaw oder ulaw ...
dabei wird eine logarithmische Darstellung der Audiodaten verwendet ...
so lassen sich 16-Bit samples in 8 Bit pressen ... allerdings
verlustbehaftet. Der Vorteil dabei ist, das man trotzdem eine Hohe
Dynamik zur Verfügung hat und leisere Geräusche detailgetreuer
wiedergegeben werden ...

MFG

Hannes

von Benedikt (Gast)


Lesenswert?

Ich habe ja nicht gesagt, dass es echtes mp3 sein muss. Es reicht schon
irgendein anderes, mp3 ähnliches Format. Wenn die Bitrate klein genug
gewählt ist, wird das ganze um einiges einfacher.

Mich erstaunt es immer wieder, was irgendjemand in einen AVR packt, da
würde mich ein einfacher mp3 Dekoder nicht wundern...

von Alex (Gast)


Lesenswert?

Wenn dir eine MMC nicht kompakt genug ist, dann weiß ich auch nicht ...

von Benedikt (Gast)


Lesenswert?

OK, dann vergesst einfach den Verwendungszweck:

Ich suche einen ADPCM Dekoder oder irgendwas anderes was problemlos auf
einem AVR läuft, und mehr oder weniger gute Qualität liefert, um mit
wenig Speicherplatz viele Audiodaten abzuspielen.

Der in der AVR336 AppNote beschriebene ADPCM Codec ist extrem langsam.
Ich hatte mal ein C Programm für einen M16C auf AVR Assembler
umgeschrieben, da lief in Echtzeit sowohl der En als auch Dekoder (nur
da war irgendwo ein Fehler, der Dekoder hat die Tabellen nie
gewechselt, und alles war ganz leise).

von Alex (Gast)


Lesenswert?

Eigentlich ist das auch eine Aufgabe für einen DSP, nicht für einen MC.
Das kostet natürlich ein paar Euro, dafür hat eine gängige
Entwicklungsumgebung solcherlei Routinen bereits mit dabei.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.