ich würde meinen Radiowecker als Option gerne krähen lassen. Dafür stehen Timer 1 und die oberen 4k das Flashspeichers noch zu Verfügung. Für ein 2 Sekunden kikeriki gibt das aber nur 2kHz Abtastrate bei 8bit. Würde ein MP3 bei solch kurzen Stücken Sinn machen bzw. hat ein 2 MHz ATMega überhaupt genug Rechenleistung, insbeondere wenn er über Interrupts noch eine Anzeige multiplexen, Taster pollen und eine Uhr bedienen muß? Kennt zufällig jemand so etwas wie Frequenz/Zeitdauer für einen monophonen Hahn?
Bräuchte man noch Steuerlogik. Externes serielles EEPROM für Controller letztlich einfacher. Muß nichtmal PCM roh sein: für CVSD bei 16kbit/sec reicht Geschwindigkeit von 8 Bit Controller. Groups.google bemühen, hier oft genug durchgekaut worden.
Wer scheusslich geweckt werden will: es gab mal als UAA1003 ein Sprachausgabe-IC basierend auf Mozer mit Roboter-Stimme:
Naja, kannst den Ton ja auch mit weniger als 8 bit ablegen (z.B. als Differenz zum Vorgängerwert) und mit "run length encoding" speichern und so die Datenrate ev. noch verdoppeln. Das (Differenz/Addition) lässt sich auch noch in Echtzeit mit dem Controller schnell genug ausrechnen. Den Wert dann per PWM-kodiert mit dem Timer an einen Pin ausgeben. Alle 0.5ms (2kHz) oder etwas häufiger den PWM-Timer mit nem Wert aus dem Flash zu laden, sollte der noch locker schaffen. MP3-Decoding schafft der Atmel natürlich nicht (braucht externen Decoderchip).
da müsste man wohl erst mal mit verschiedenen Originalaufnahmen krähender Hähne am PC experimentieren wie weit man die "kleinkriegen" kann. Den Einfluß verschiedener Abtastraten und Bitbreiten kann man doch alles am PC simulieren mit ein paar selbstgeschriebenen Programmen die Wave Files bearbeiten.
bei 20MHz und 10kHz DAC-Rate hat man etwa 1400 ASM-Befehle pro Step.
Der Hahn kräht im wesentlichen mit ein paar Oberwellen auf einer gesweepten Grundfrequenz in einem Phase-Lock. Ziemlich wenig Information drin - ein Hahn hat ja üblicherweise auch keinen
1MB-MP3-Player on-board.
Mit einem "Synthesizer-Algorithmus" - ggf auf etwas Sampel-Basis und mit etwas Rauschen - kannst Du das dann sogar richtig lebendig machen - jedesmal ein etwas anderes Krähen, sonst wird's ja langweilig. Siehe auch FM/PM-Synthese:
formatting link
Ganz einfach ist es aber nicht. Du kannst damit beginnen von dem Sample die Base-Frequenzkurve zu ermitteln, sowie die Hüllkurven der Oberwellen anschauen...
Timer 1 und die oberen 4k das Flashspeichers noch zu
8bit. Würde ein MP3 bei solch kurzen Stücken Sinn
wenn er über Interrupts noch eine Anzeige
Hahn?
Ein Kikeriki ist ein extrem Monotones geräusch. An monotonie getoppt wird das höchstens von einer Flöte.
Nimm einfach ein Kikeriki auf, und schau dir die Wellenform zwischen zwei Nulldurchgängen an. Dann fittest du das ganze Sample so, dass alle Nulldurchgänge den gleichen Abstand haben und merkst dir den vorigen Abstand. Dann nimmst du alle 5, 10 oder 25 (whatever) Wellenformen zwischen den Nulldurchgängen. Quasi jedes Kinderspielzeug arbeitet so. Beim zurückmixen musst du dann nur die Wellenformen wieder zurückdehnen und die vorige und z.B. die nachfolgende 25. entsprehend dem zeitlichen Abstand Überblenden. Aufpassen musst du nur an den Stellen, wo sich die Wellenform signifikant ändert. Da ist es dann sinnvoll kürzere zeitliche Abstände zu nehmen oder sogar das Original zu nehmen.
Ich habe damit in 8kB Flash in einem Privatprojekt auf diese Weise extrem hochqualitatives Vogelzwitschern in Stereo (sogar mit Hall vom Wald) in 96 kHz hinbekommen. (Die originalsamples waren aber nur 44kHz *g*) Aber es war ein Experiment das ich mal gemacht hatte.
Gruß,
Markus Gronotte (ja, das ist wirklich mein Name)
PS: das Ganze war mit einem AtMega 8 @ 20MHz (ja, ich weiß das ist mehr als erlaubt, aber es ist ja nur zum zwitschern da
nene Rainer hat schon Recht. Das Ganze hab ich dann letztendlich mit einer Standard PWM gemacht die ich bei Google gefunden hab und PWM benötigt beim Interruptwechsel halt einiges an Ram bzw Stackabbau beim Auslösen oder wie man das bei Interrupts auch immer nennen mag das war auch mit 20MHz nicht mehr drin.
Nein, für MP3-Wiedergabe reicht das vorne und hinten nicht.
Aber ein "Kikeriki" kann man mit den angegebenen Resourcen trotzdem in sehr guter Qualität hinbekommen. Es handelt sich beim "Kikeriki" um ein relativ simpel strukturiertes Signal, was man ziemlich problemlos täuschend echt synthetisieren kann, auch mit den beschränkten Resourcen eines 2MHz-ATMega. Na OK, die Hennen werden's vielleicht nicht so verstehen, wie's gemeint ist. Aber für Menschen wird sich's auf jeden Fall hinreichend echt anhören. (Zumal in Deutschland ohnehin nur noch eine Minderheit aus eigener Erfahrung weiß, wie sich so ein Hahn eigentlich wirklich anhört)
Nun, SO einfach ist es nun auch wieder nicht. Ein bissel Verständnis für Signalanalyse braucht man schon, um einen guten Synthesizer dafür zu programmieren.
"Markus Gronotte" schrieb im Newsbeitrag news:46b743f7$0$3828$ snipped-for-privacy@newsspool4.arcor-online.net...
Hallo,
Also 4kHz oder 8kHz Abtasttakt ist ja nun wirklich kein Problem. Man muß ja nicht viel mehr machen als einen Wert aus der Tabelle holen, und damit das PWM-Register laden. Auch das Retten der Prozessor-Register ist kein besonderes Problem bei der Rate. Ich experimentier gerade mit einem 4bit-Hahnenschrei bei 4kHz. Bei den 4bit hört man am Ende wenn der Hahnenschrei ausklingt natürlich etwas Rauschen. Passt übrigens in 4kB. Vielleicht sollte man besser mit Kompanderkennlinie arbeiten um bei
Bei 4K freiem Flash macht MP3 keinen Sinn. Alleine die Dekoder- Software wuerde schon mehr Platz brauchen.
Am besten benutzt Du einen simpleren Kompressions-Algorithmus. Beim "kikeriki" merkst Du den Unterschied wahrscheinlich sowieso nicht.
Sehr einfach ist zB der ADPCM Algorithmus, welcher die 8 Bit auf zB 2 Bit reduziert. Damit wuerde Deine Abtastrate auf 8khz steigen. Der Dekoder laesst sich in einer Bildschirmseite ASM programmieren.
Also nichts für ungut. Du bist schon der zweite der von einfach synthetisieren schreibt. Bitte den praktischen Beweis antreten. Dies ist ein Aufruf zum Wettkampf "Hahnenschrei" in 4KB Flash-Speicher(incl. Programm), ausführbar auf einem 8bit uC (2MHz?, vermutlich Stromsparer) bei weniger als 50% Auslastung.
Das werde ich gerne tuen, wenn ich mal das Problem haben sollte, daß ich einen meiner Atmels krähen lassen möchte. Bisher spielt nur einer ein kleines Gitarrensolo (die Anfangssequenz von Deep Purples "Smoke on the water"), das aber so gut, daß du den Unterschied zur Orignalaufnahme kaum hörst (es fehlt lediglich das Rauschen der Originalaufnahme ;o).
Und das mit weniger als 800 Byte Flashbedarf und bei 455kHz Systemtakt.
Das Kikeriki hingegen ist derzeit allein dein Problem, also solltest auch du die Lösung realisieren. Es ist nicht unsere Aufgabe, dir die fertige Lösung zu liefern, sondern allenfalls, dir Wege zu deren Realisierung zu zeigen.
Aha, du suchst also nur einen Dummen, der dir für lau deine Arbeit macht. Nö danke, da verfolge ich in meiner Freizeit lieber meine eigenen Hobby-Projekte weiter.
Etwas völlig anderes ist, wenn du dafür bezahlen möchtest. Ich bin gern bereit, dir ein verbindliches Angebot zu machen. Ich schätze mal, daß etwa eine Mannwoche für Analyse und Implementierung nötig ist. Das darfst du mit dem Stundensatz eines gewerblichen Klempners oder Fliesenlegers ausmultiplizieren und dann nochmal mit 1,6. Dann hast du eine Vorstellung von der Größenordnung. Wenn du dann noch Interesse hast (was ich ernsthaft bezweifele): Mail.
Nicht ich sondern Michael Schlegel sucht den "Hahnenschrei" mit
4KB für ATmega. Mich hat es einfach mal interssiert wie man das mit "klassichen" Mitteln innerhalb kurzer Zeit hinbekommt. Nun kamen hier einige Schlaumeier die von ganz einfach reden. In Wahrheit steckt da aber mindestens eine Woche Arbeit in deren Vorschlägen.
Den Rest deiner Message ignoriere ich jetzt besser mal.
Niemand schrieb das Gegenteil. Einfach ist es aber trotzdem, wenn man auch nur ansatzweise weiß, wie Audiodaten aufgebaut sind. Viel schwieriger ist eigentlich hinterher die Ausgabe der Daten IMHO.
Beispielsweise meine Softwaredekodierung eines AM-Signal, das ich mit Soundkarte aufnehme. Prinzipell ist es auch total einfach. Trotzdem hab' ich fast 2 Wochen gebraucht, bis es der PC mit niedriger CPU-Last hinbekommt.
Newsgroup eben, wer sich am grössten aufplustert ist der Top-Gockel am Hühnerhof ... Alle naheliegenden, sinnvollen Lösungen in einem Thread kommen zeitlich unmittelbar nach der Frage. Wer später kommt muß das besondere liefern das das normale aussticht.
ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here.
All logos and trade names are the property of their respective owners.