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?
Axel L. schrieb: > so dass ich nur eine Summe von Sinusfunktionen an den LM386 > ausgeben brauch. Was versprichst du dir davon? Als Tipp: Datenreduzierung geht anders...
Lothar Miller schrieb: > Was versprichst du dir davon? > > Als Tipp: Datenreduzierung geht anders... Ganz einfach: der ATMega644 hat nur 2Kb EEPROM und die vier WAV-Dateien haben zusammen 116 Kb. Platz für eine externe MiniSD inklusive Slot sind nicht vorhanden. Da es nur relativ einfache Töne sind, könnte es auch mit Funktionen gehen.
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
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...
Die FFT soll aber nicht zur Laufzeit gemacht werden oder? Behaupte einfach mal, ein ATMega ist dafür zu schwachbrüstig.
> 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?
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.
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.
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?
Axel L. schrieb: > Da es nur relativ einfache Töne sind, könnte es auch > mit Funktionen gehen. Definiere mal bitte 'einfacher Ton'. Ich habe so eine Ahnung, dass du sowohl von der nötigen Mathematik, Algorithmik und Audiotechnik nicht sonderlich viel verstehst...
Skua schrieb: > Ein Ton sagt mehr als Tausend Worte. Ich habe mal die vier WAV-Datei angehängt. Alle sind in 22050Hz, 16-bit, Mono.
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.
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
... 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.
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.
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
>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.
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.
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.