WAV als Funktion

#2117313
Lesenswert?

Hallo,

ich habe folgende Fragestellung: Für die Audioausgabe (PWM -> LM386) 
eines ATMega644 möchte ich gerne vier WAV-Dateien (Mono 20-40kB, jeweils 
max. 1 sec) in mathematische Funktionen umwandeln (evtl. mittels FFT 
o.ä.), so dass ich nur eine Summe von Sinusfunktionen an den LM386 
ausgeben brauch.

Mit welchen Programm ist solch eine Umwandlung möglich?
Gast #2117495
Lesenswert?

Axel L. schrieb:
> Hallo,
>
> ich habe folgende Fragestellung: Für die Audioausgabe (PWM -> LM386)
> eines ATMega644 möchte ich gerne vier WAV-Dateien (Mono 20-40kB, jeweils
> max. 1 sec) in mathematische Funktionen umwandeln (evtl. mittels FFT
> o.ä.), so dass ich nur eine Summe von Sinusfunktionen an den LM386
> ausgeben brauch.
>
> Mit welchen Programm ist solch eine Umwandlung möglich?

Normalerweise nimmt man einen DA-Wandler dafür...
Gruss
Harald
Moderator (Firma: Titel) Persönliche Seite #2117525
Lesenswert?

Axel L. schrieb:
> Da es nur relativ einfache Töne sind, könnte es auch
> mit Funktionen gehen.
Es ist nunmal einfach so, dass du hier einen Kompressionsfaktor von 
knapp 60 willst. Dafür braucht es schon deutlich schlauere Algorithmen, 
als nur eine Spektralzerlegung und eine anschliessende Synthese, denn 
dir geht dabei ja der eigentlich der Zeitbezug verloren...

Porbier doch mal, deine Wav-Dateien auf dem PC maximal in ein MP3 zu 
komprimieren, und wenn du dann kleiner als 2 kB wirst, kannst du das ja 
mit einem Software-Deocder wieder abspielen...
Gast #2117532
Lesenswert?

> Die FFT soll aber nicht zur Laufzeit gemacht werden oder? Behaupte
> einfach mal, ein ATMega ist dafür zu schwachbrüstig.

Fuer dich gilt das Gleiche wie fuer den anderen Troll. Ist es wirklich 
zu viel verlangt, mehr als die Ueberschrift zu lesen und zu verstehen?
Gast #2117548
Lesenswert?

Mal wieder traumhaft, die Diskussionskultur in diesem Forum. Aber wenn 
DU etwas Sinnvolles zu diesem Thread beitragen kann, dann mach es bitte! 
Ansonsten: Einfach mal...
...ich denke, Du weißt wie es weitergeht.
Gast #2117554
Lesenswert?

Wenn es nur um einfache Töne geht, gibt es dafür doch schon MIDI und ein 
dazugehöriges Dateiformat. Die Ausgabe sollte sich dann relativ leicht 
auf dem Controller synthetisieren lassen. Eben die Klingeltonmelodien 
fürs Handy von früher.

Ob es ein Programm gibt, das automatisch beliebiges Audio in eine 
angenäherte Sequenz von Tonhöhen/-dauer umwandeln kann, ist eine andere 
Frage. Gibt es bestimmt — ist aber nicht mein Gebiet, deshalb kenne ich 
keins.
Gast #2117579
Lesenswert?

Wenn du nur einfache Töne brauchst, ist es vielleicht möglich erstmal 
die Frequenz zu begrenzen. Du musst ja nicht bis 20 kHz alles 
übertragen. Dann brauchst du auch nicht mit 40 kS/s arbeiten. Meiner 
Meinung nach würde das die Größe erstmel drastisch senken. Oder machst 
du das schon?
Ein fertiges Programm kenn ich leider auch nicht.
Warum willst du das alles in das EEProm schreiben? Da kannst auch 
Sequenzen im Flash speichern. Das wäre dann deutlich größer als die 2kB. 
Oder ist das auch schon voll?
Persönliche Seite #2117737
Lesenswert?

Axel L. schrieb:
> Hallo,
>
> ich habe folgende Fragestellung: Für die Audioausgabe (PWM -> LM386)
> eines ATMega644 möchte ich gerne vier WAV-Dateien (Mono 20-40kB, jeweils
> max. 1 sec) in mathematische Funktionen umwandeln (evtl. mittels FFT
> o.ä.), so dass ich nur eine Summe von Sinusfunktionen an den LM386
> ausgeben brauch.

Das (böse) Bashing hier im Forum hat immerhin dazu beigetragen, dass ich 
Deine Frage verstanden habe. Die Frage an sich ist ja durchaus sinnvoll.

Schau mal nach "wav2midi", das sollte Deinen Wünschen einigermaßen 
nahekommen. Wenn die WAV-Dateien periodisch sind (z.B. ein Gong oder 
Ähnliches), kannst Du vielleicht auch jeweils nur ein Stück davon 
speichern und das dann x-fach abspielen.

Ob Du mit einer FFT glücklich wirst, wage ich zu bezweifeln - eine FFT 
macht alleine noch keine Datenkompression.
#2117816
Lesenswert?

also deine WAV's wirst du kaum durch MIDI ersetzen können, da MIDI ja 
mit sog. wavetables arbeitet, also kurzen Samples von Instrumenten die 
dann in einer bestimmten Tonhöhe für eine bestimmte Dauer ausgegeben 
werden. 'Geräusche' lassen sich damit erst mal nicht abbilden.

Sascha
Gast #2117825
Lesenswert?

... schrieb:
> Wenn du nur einfache Töne brauchst, ist es vielleicht möglich erstmal
> die Frequenz zu begrenzen. Du musst ja nicht bis 20 kHz alles
> übertragen. Dann brauchst du auch nicht mit 40 kS/s arbeiten. Meiner
> Meinung nach würde das die Größe erstmel drastisch senken.

dem würde ich mich anschließen. Wenn es nur grob Töne sein sollen. Alles 
oberhalb von sagen wir 2 bis 3kHz ist eh nur was für Audiospinner ;)
Mach 'ne vernünftige Bandbegrenzung.
Gast #2117850
Lesenswert?

Naja, die Töne sollten besser durch Funktionen approximiert werden, ist
nicht so schwierig. Ansonsten gibt es Wav codecs, welche problemlos 
solche
Files auf 35k/Minute reduzieren. wäre also noch drin. SDK für das 
Codierung
und sample code für das decodieren ist frei ferfügbar. Einfach mal ne 
Seite
ansehen, wo das Wav Format beschrieben ist, dort sind generell auch die 
Codecs beschrieben.
Gast #2117874
Lesenswert?

Rein vom Gefühl her würde ich sagen, die Klänge sind leider ganz und gar 
nicht "einfach". Einfach wäre z.B. eine gleichförmige Wellenform mit 
einer Hüllkurve - das könnte man mit einem AVR synthetisieren.

Typische ROM-Sample-Player imitierten seinerzeit Musikinstrumente durch 
mehrere übereinandergelegte Wellenformen (z.B. ein Geräusch für die 
Attackphase, ein Ton für den Rest). Aber damit kannst Du die Samples 
oben kaum platzsparend reproduzieren. Wie weit dürfen die Klänge denn 
abweichen?

Sascha Weber schrieb:
> also deine WAV's wirst du kaum durch MIDI ersetzen können, da MIDI ja
> mit sog. wavetables arbeitet, also kurzen Samples von Instrumenten die
> dann in einer bestimmten Tonhöhe für eine bestimmte Dauer ausgegeben
> werden. 'Geräusche' lassen sich damit erst mal nicht abbilden.

Ein paar Geräusche bringt der General-MIDI-Standard ja mit 
(Pistolenschuss ist z.B. da). Aber war das überhaupt eine Option? Wo 
sollen die MIDI-Daten abgespielt werden, wenn nicht mal Platz für eine 
Speicherkarte da ist?

Oder vielleicht doch eine MicroSD? Die kannst Du doch locker auf den 
ATMega644 draufkleben :).

Mirko
Gast #2117877
Lesenswert?

>dem würde ich mich anschließen. Wenn es nur grob Töne sein sollen. Alles
>oberhalb von sagen wir 2 bis 3kHz ist eh nur was für Audiospinner ;)

Na dann hör dir mal den Unterschied zwischen 22kHz und 11kHz
Samplerate an (siehe Anhang ton_bb_8_11.wav). Gleich noch auf
8 Bit reduziert. Das gibt schon einen deutlichen Unterschied im Klang.
Dafür ist es nur noch ein Viertel so groß.

ADPCM (ton_bb_ima.wav) bringt es auch auf ein Viertel bei deutlich 
besserem
Klang.
Angehängte Dateien:
Gast #2117897
Lesenswert?

holger schrieb:
> Das gibt schon einen deutlichen Unterschied im Klang.
> Dafür ist es nur noch ein Viertel so groß.

Ja geht es nun um Klänge oder um Töne? Gut, wenn die Schwebung mit dem 
gewissen etwas auf den zweigestrichenen C noch gebraucht wird, dann ist 
der Atmega einfach falsch gegriffen. Frage mich sowieso, warum andauernd 
µCs für Aufgaben herhalten müssen, für die sie nicht gedacht sind. Die 
Aussage, der wäre für eine FFT zu schwachbrüstig fand ich auch nicht 
schlecht.
#2117990
Lesenswert?

Also eine Imitation bzw. Synthese der Sounds sollte sich in Funktionen 
implementieren lassen.

Meine grobe Analyse nach Gehör:
 Ton_BB.wav = Drei Töne, die mit Rauschen in Hüllkurve unterlegt sind
 Ton_BE.wav = Click-Sound + 2 andere Töne
 Ton_BR.wav = Rauschen
 Ton_BS.wav = Rauschen in Hüllkurve + Ton mit Tonhöhen- und Hüllkurve
mfg mf

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren