Forum: Mikrocontroller und Digitale Elektronik advanced Arduino Libraries


von Markus (Gast)


Lesenswert?

Für das Arduino Framework gibt es ja mittlerweile besonders viele 
Libraries.
Viele davon sind eher einfach und man könnte sie auch selber 
programmieren.

Es gibt aber auch einige, die entweder technisch sehr anspruchsvoll und 
an die Grenzen des Machbaren gehen oder sehr aufwendig zu programmieren 
sind.

Ich werfe hier mal zwei Beispiele ein, die mich recht beeindrucken:

1. Talkie
https://github.com/ArminJo/Talkie
ein LPC Vocoder, der auf einem Arduino Uno läuft:

2. die PNG Decoder Library
https://github.com/bitbank2/PNGdec

Habt ihr noch weitere Beispiele?

von 100Ω W. (tr0ll) Benutzerseite


Lesenswert?

Markus schrieb:
> Habt ihr noch weitere Beispiele?

https://github.com/bitluni/ESP32VGA

von Michael U. (amiga)


Lesenswert?

Hallo,

woran will man das festmachen?

Talkie werde ich mir wohl mal anschauen, besser anhören.
Referenz für mich wäre da SAM von C64
https://www.c64-wiki.de/wiki/SAM
Da habe ich damals mal versucht dem das Singen von "Alle meine Entchen" 
beizubringen, klang auf jeden Fall sehr lustig.
Einen Arduino-Port für den ESP32 habe ich zumindest gefunden:
https://github.com/osresearch/ArduinoVoice

Wie gut der PNG-Decoderport ist weiß ich nicht, JPEG und BMP nutze ich 
öfter, allerdings da auch auf ESP8266/ESP32, genauso MP3 Decoder.
Für die AVR muß ich mal überlegen, ob mich da was beeindruckt hat.

Gruß aus Berlich
Michael

von Michael U. (amiga)


Lesenswert?

Hallo,

100Ω W. schrieb:
> Markus schrieb:
>> Habt ihr noch weitere Beispiele?
>
> https://github.com/bitluni/ESP32VGA

da eher noch:
https://bitluni.net/esp32-color-pal

Gruß aus Berlin
Michael

von Markus (Gast)


Lesenswert?

Michael U.
>woran will man das festmachen?

>Talkie werde ich mir wohl mal anschauen, besser anhören.
>Referenz für mich wäre da SAM von C64
>https://www.c64-wiki.de/wiki/SAM
>Da habe ich damals mal versucht dem das Singen von "Alle meine Entchen"
>beizubringen, klang auf jeden Fall sehr lustig.
>Einen Arduino-Port für den ESP32 habe ich zumindest gefunden:
>https://github.com/osresearch/ArduinoVoice

Die Talkie Library ist deshalb so beeindruckend, weil sie auf einem 8Bit 
Controller läuft. Derjenige, der sie erstellt hat, ist echt gut, da es 
fast unmöglich ist, mit den beschränkten Resourcen eines 16MHz 8Bit 
Controller einen Sprachsynthesizer zu programmieren. Das braucht man 
sehr gute Kenntnisse der Controller Hardware und noch viel mehr von der 
Signalverarbeitung.
Beim ESP32 kann man ziemlich viel ohne weitere Tricks realisieren, weil 
die Rechenleistung und der Speicherbereich mindestens 50x größer ist.

von Markus (Gast)


Lesenswert?

Michael U.
>da eher noch:
>https://bitluni.net/esp32-color-pal

Da hast Du Recht: ein PAL-Signal mir Farbe ist mit der Hardware ungleich 
schwieriger als ein VGA-Signal zu erzeugen.

Ich frage mich, ob es vielleicht im Bereich SDR noch einige interessante 
Libraries geben könnte.

von Horst M. (horst)


Lesenswert?

Markus schrieb:
> Derjenige, der sie erstellt hat, ist echt gut, da es
> fast unmöglich ist, mit den beschränkten Resourcen eines 16MHz 8Bit
> Controller einen Sprachsynthesizer zu programmieren. Das braucht man
> sehr gute Kenntnisse der Controller Hardware und noch viel mehr von der
> Signalverarbeitung.

Echt?
Wirklich?

Beitrag "Re: Alte_Elektronik_Basteleien"

8Bit 8751 mit 10,7 MHz.
Das Original des Sprachsynthesizers lief auf einem 8Bit 6510-Prozessor 
mit 1 MHz!
Es geht also mehr als Du annimmst, auf jeden Fall mit einem AVR-CPU-Kern 
mit 0,5...1 MIPS/MHz Takt. Da geht sogar MP3 in Software...

: Bearbeitet durch User
von realist (Gast)


Lesenswert?

Horst M. schrieb:
> Markus schrieb:
>> Derjenige, der sie erstellt hat, ist echt gut, da es
>> fast unmöglich ist, mit den beschränkten Resourcen eines 16MHz 8Bit
>> Controller einen Sprachsynthesizer zu programmieren. Das braucht man
>> sehr gute Kenntnisse der Controller Hardware und noch viel mehr von der
>> Signalverarbeitung.

> Echt?
> Wirklich?
>
> Beitrag "Re: Alte_Elektronik_Basteleien"
>
> 8Bit 8751 mit 10,7 MHz.
> Das Original des Sprachsynthesizers lief auf einem 8Bit 6510-Prozessor
> mit 1 MHz!
> Es geht also mehr als Du annimmst, auf jeden Fall mit einem AVR-CPU-Kern
> mit 0,5...1 MIPS/MHz Takt. Da geht sogar MP3 in Software...

Ich hab mal vor reichlich 35 Jahren auf einem Z80, der mit 700kHz Takt 
lief, einen Sprachsynthesizer programmiert (in Assemler). Ausgabe mit 1 
Bit. Der konnte alle Zahlen und die Buchstaben A-F. Damit hab ich mir 
von Hex-Listings die Werte vorlesen lassen, um eine Kontrolle nach dem 
Abtippen zu haben. War lustig, haben auch viele benutzt.

von Markus (Gast)


Lesenswert?

Horst M. (horst)
>Echt?
>Wirklich?
>Beitrag "Re: Alte_Elektronik_Basteleien"

Sehr interessant, den kannte ich noch nicht. Was mir im Schaltplan 
auffällt, ist der selbgebaute 4 bit DAC. Das würde die Ausführung z.B. 
auf einem Apple II schwierig machen, weil man dort zusätzlichen 
Rechenaufwand für die Umsetzung als 1Bit DAC bräuchte.

Frage: nach welchem Prinzip funktioniert der Synthesizer genau? Wo 
gibt's Code Beispiele?

>Es geht also mehr als Du annimmst, auf jeden Fall mit einem AVR-CPU-Kern
>mit 0,5...1 MIPS/MHz Takt. Da geht sogar MP3 in Software...

Zuerst: Die erreichbare Soundqualität hängt stark von der verfügbaren 
Rechenleistung ab. Ich meine, dass Talkie deutlich verständlicher ist, 
als SAM im Youtube Video.
MP3 würde ich stark bezweifeln. Da läuft so viel Signalverarbeitung 
(einige FFTs notwendig), dass es ziemlich schwierig wird, das zu 
schaffen. Da stelle ich jetzt einfach mal die These auf: Wenn's auf dem 
Atmega328 ginge, gäbe es eine Arduino-Library.
Für den ESP32 gibt's das mit hilfe der HELIX-mp3-Library:
https://github.com/schreibfaul1/ESP32-audioI2S

von Michael U. (amiga)


Lesenswert?

Hallo,

Markus schrieb:
> Die Talkie Library ist deshalb so beeindruckend, weil sie auf einem 8Bit
> Controller läuft. Derjenige, der sie erstellt hat, ist echt gut, da es
> fast unmöglich ist, mit den beschränkten Resourcen eines 16MHz 8Bit
> Controller einen Sprachsynthesizer zu programmieren. Das braucht man
> sehr gute Kenntnisse der Controller Hardware und noch viel mehr von der
> Signalverarbeitung.

Nun ja, ein C64 hat eine mit 1MHz getaktete CPU und es ging damit.
2 Vorteile hat der C64: 64k Ram (für Programm und Daten) und den SID, 
der zumindest etwas bei der Tonerzeugung hilft. Ich wollte mir das mit 
dem SAM eigentlich mal genauer anschauen, Sourcen finden man im Netz, 
den 6510 usw. vom C64 kenne ich noch ganz gut, AVR-ASM mag ich auch, ist 
aber bisher nie was draus geworden...

Markus schrieb:
> Michael U.
>>da eher noch:
>>https://bitluni.net/esp32-color-pal
>
> Da hast Du Recht: ein PAL-Signal mir Farbe ist mit der Hardware ungleich
> schwieriger als ein VGA-Signal zu erzeugen.
Ich hatte es hier mal angeworfen, mein TV über FBAS-In kam nicht klar 
(der kommt aber auch mit anderen nicht ganz normgerechten Signalen da 
nicht klar), mit einem FBAS-HDMI-Converter lief es stabil.

Horst M. schrieb:
> Es geht also mehr als Du annimmst, auf jeden Fall mit einem AVR-CPU-Kern
> mit 0,5...1 MIPS/MHz Takt. Da geht sogar MP3 in Software...
Wenn Du das schaffst bist Du mehr als ein Held!

Markus schrieb:
> Zuerst: Die erreichbare Soundqualität hängt stark von der verfügbaren
> Rechenleistung ab. Ich meine, dass Talkie deutlich verständlicher ist,
> als SAM im Youtube Video.
Das will ich nicht bezweifeln, immerhin wurde SAM 1982 entwickelt.
Minimum für MP3 auf den ESP ist ein ESP8266 mit 160MHz getaktet, ist 
aber stark grenzwertig wenn er das auch noch als Webstream per WLAN 
dabei einsammelt.

Gruß aus Berlin
Michael

von Markus (Gast)


Lesenswert?

Hier noch eine aufwendige Synthesizer Library, die mittlerweile auf 
vielen Platformen läuft, die das Arduino Framework unterstützen:

https://github.com/sensorium/Mozzi

von Horst M. (horst)


Lesenswert?

Markus schrieb:
> MP3 würde ich stark bezweifeln. Da läuft so viel Signalverarbeitung
> (einige FFTs notwendig), dass es ziemlich schwierig wird, das zu
> schaffen

Michael U. schrieb:
> Wenn Du das schaffst bist Du mehr als ein Held!

Ähem.

räusper

Krawatte zurechtrück

Hier: Beitrag "Software MP3 decoder for ATmega/ATxmega"

: Bearbeitet durch User
von Oliver S. (oliverso)


Lesenswert?

Horst M. schrieb:
> Michael U. schrieb:
>> Wenn Du das schaffst bist Du mehr als ein Held!

Nachweislich läuft sogar Linux auf einen AVR. MP3 und "Echtzeit" haben 
ja nun erst einmal nichts miteinander zu tun.

Oliver

von Michael U. (amiga)


Lesenswert?

Hallo,

Horst M. schrieb:
> Michael U. schrieb:
>> Wenn Du das schaffst bist Du mehr als ein Held!
>
> Ähem.
>
> räusper
>
> Krawatte zurechtrück
>
> Hier: Beitrag "Software MP3 decoder for ATmega/ATxmega"
werde ich mir auf jeden Fall mal anschauen und auch anhören. :-)
Erinnert mich zumindest an eine uralte "Bastelei":
Beitrag "Re: 6502 Emulation auf AVR ?"
Da ging es eigentlich auch nur darum, ob es geht.

Gruß aus Berlin
Michael

Oliver S. schrieb:
> Nachweislich läuft sogar Linux auf einen AVR. MP3 und "Echtzeit" haben
> ja nun erst einmal nichts miteinander zu tun.
"Läuft" ist manchmal eben relativ. ;)
MP3 und "Echtzeit": stimmt, man kann die decodierten Frames auch im 
Minutenabstand ausgeben.

Gruß aus Berlin
Michael

von Oliver S. (oliverso)


Lesenswert?

Michael U. schrieb:
> MP3 und "Echtzeit": stimmt, man kann die decodierten Frames auch im
> Minutenabstand ausgeben.

Oder einen 0,01-Sekunden-Jingle offline dekodieren, und dann ausgeben. 
Fällt auch unter "läuft" ;)

Oliver

von Markus (Gast)


Lesenswert?

Horst:
>Krawatte zurechtrück
>Hier: Beitrag "Software MP3 decoder for ATmega/ATxmega"

Oha, ich ziehe meinen Hut ;-)
Ich habe es jetzt nicht probiert, aber ich gehe mal davon aus, dass es 
irgendwie tut.

Ein Anmerkung: Wenn Du es als Library für den Arduino-Mega geschrieben 
hättest, könnte ich es jetzt innerhalb 10 Minuten ausprobieren ...
So etwas hätte es für Dich den Vorteil, dass diese Art von Libraries 
ziemlich Beachtung weltweit finden würden. Im Moment dürften die Anzahl 
Downloads auf dem MC-Netz ziemlich überschaubar sein und das Projekt 
dort versauern ...

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.