Hallöchen miteinander!
Bekanntlich kommt nach jede Lösung eines Problems ein neues Problem dazu. So auch im
Degenerator. Im Degenerator arbeiten zwei Oszillatoren deren Werte in zwei 64 Byte großen
Zwischenspeichern geschrieben werden und in einem Timer Interrupt an den DAC Ausgang
gesendet werden. Dabei traten bei kurzen Attack-Werten störende Klickgeräusche auf (Bild 2).
Eine Analyse der Programmabläufe und Betrachtung auf dem Oszilloskop brachte mich dann auf
den Pfad der Erleuchtung holy-willi
In einem Timer Interrupt wird jede Millisekunde geprüft, ob Midi-Daten im Empfangsbuffer
vorhanden sind und ggf die neuen Notenwerte für die beiden Oszillatoren berechnet.
Danach fülle ich die beiden Zwischenspeicher mit jeweils 64 neuen Oszillator Werten.
Danach aktualisiere ich die beiden Envelopes und die CV-Outputs für VCA und VCF.
In einem Timer Interrupt mit höchster Priorität, werden alle 25usec jeweils ein Werte aus den
beiden Zwischenspeichern gelesen und an den DAC Ausgang gesendet (Bild 1).
Zuvor hatte ich die Notenwerte für die beiden Oszillatoren in der Envelope Routine aktuallisiert.
Das führte dazu, dass sich von der alten Note noch Reste im Zwischenspeicher befanden und
dies zu Störungen am Audioausgang führte (Bild 2).
Bild 1: Midi-Input (gelb) und störungsfreier Audioausgang (violett)
Bild 2: Audioausgang mit Klickgeräusch am Anfang
Im nächsten Beitrag gehts um Midi-Latenz, Buffer Größe und CPU Ressourcen
Gruß Rolf