rolfdegen
|||||||||||
Anhang anzeigen 199604
Da ich den Fehler der Buttons finden konnte, geht die Arbeit am Synthie weiter. Ich habe jetzt 3 Buttons implementiert, die die Wellenformen der Oszillatoren einstellen und das Tuning zwischen den Osc1 und Osc2. Langsam nicht das alles Form an. Geplant ist aber, dass man mit den Buttons jeweils Pages aufrufen kann, die Parameter auf die Encoder legen. Das kommt aber später, wenn die Soundstruktur an sich stimmt.
Allerdings habe ich gemerkt, dass die Ausgabe auf das Display via I2C den Audiostream verzögert. Das bedeutet, dass man bei jedem Dreh am Encoder den Audiostream unterbricht. Das geht natürlich nicht - so kann man den Synth ja nicht live spielen. Ich habe verschiedene Ansätze probiert. Auch das Austauschen der Wire-Bibliothek gegen die I2C-Wire von https://github.com/Richard-Gemmell/teensy4_i2c konnte das Problem nicht lösen.
Letztlich habe ich es so gemacht, dass das Display nur bei einem NoteOn aktualisiert wird und das funktioniert eigentlich ganz gut. Die Soundparameter werden ja auch erst mit der nächsten Note aktualisiert. Vielleicht hat noch jemand eine Idee, wie man I2C-Displays ohne Unterbrechung des Audiosignals nutzen kann.
@rolfdegen Was nutzt Du denn für ein Display? Kennst Du das o.g. Problem?
Hallo Solar Chrome
Wenn du die Teensy Audio Lib von Paul Stoffregen benutzt, dürfte es bei der Datenkomunikation über den I2C Bus keine Unterbrechungen geben. Schau mal in die Links..
Link: https://forum.pjrc.com/index.php?threads/audio-cuts-out-when-updating-i2c-oled-display.67141/
Link: https://forum.pjrc.com/index.php?threads/teensy-4-1-i2c-issues-when-using-audio.72793/
Ich verwende ein ST7735s Farb-Display mit 160x128 Pixel und der Teensy ST7735 Bibiothek von Adafruit. Das Display wird alle 50msec über den SPI Bus per DMA Funktion mit Daten gefüttert. Wenn man zum Beispiel tft.print(text) an das Display sendet, sorgt ein 20KByte großer FrameBuffer dafür, dass diese Daten mit den anderen Schreibbefehlen in den Zwischenspeichern landen und alle 50msec per DMA als komplette Bildschirmseite an das Display gesendet werden. Der Vorteil von DMA liegt in der schnelleren Datenübertragung bei gleichzeitiger Entlastung der CPU.
Gruß Rolf
Zuletzt bearbeitet: