Jump to content

AVR-Synthesizer "WAVE 1"


rolfdegen
 Share

Recommended Posts

Hallöchen Miteinander!

Midi, VCA und MircoAmp funktionieren wunderbar sowie die Delay-Schaltung. Jetzt löte ich die Filter-Schaltung. Bevor die Filter-Platinen layouted wird muß diese noch einmal aufgebaut und getestet werden. Platzmäßig sollte es funktionieren (siehe Bild).

Degnerator Motherboard mit CPU- und Filter-Board
IMG_20160827_002102.jpg

IMG_20160826_235238.jpg

Gruß Rolf 

Link to comment
Share on other sites

Hallo zusammen...

Das Filterboard für den Degenerator ist fertig. Es handelt sich um einen 12dB Stereo-Multi-Filter mit Umschaltung auf LP/HP/BP. An dem zweiten Filterboard (SMR4-Pole mixing) wird noch gearbeitet.

Degenrator mit Filterboard
IMG_20160902_154423.jpg

IMG_20160902_154639.jpg 

Edited by rolfdegen
Link to comment
Share on other sites

Hallöchen..

Die drei LFO-Led's auf dem Front Panel werden jetzt über ein Schieberegister 74HC595 im PWM-Mode angesteuert und verändern ihre Helligkeit je nach eingestellter Wellenform und Amplitude.

LFO-Leds am Degnerator
Unbenannt.JPG

Video link: https://www.youtube.com/watch?v=bMUaGmoW2oY&feature=youtu.be

Gruß Rolf 

Link to comment
Share on other sites

Hallöchen miteinander!

Nach einer kleinen (Kaffee) Pause gehts jetzt weiter Augenzwinkern 

Mein ein Jahr altes 70MHz Oszilloskop Siglent SDS1072CML ist defekt. Die Hintergrundbeleuchtung
flackert und gibt vermutlich irgendwann ganz den Geist auf. Die Ursache laut Hersteller ist vermutlich
ein defekter Elko auf der Netzteil Platine. Da ich das Oszilloskop vor ca. einem Jahr über Amazon
gekauft hatte, konnte ich Dank freundlicher Unterstützung eines Service Mitarbeiters das defekte
Gerät an Amazon zurückschicken. Da der Hersteller Siglent die Produktion dieses Modells ein-
gestellt hat, habe ich mich für ein neueres 100MHz Scope von Siglent entschieden. Es ist das
SDS1102CML+. Die Plus Versionen haben eine verbesserte Displayauflösung (800 x 480), ein
Redesign der Bedienelemente, eine LAN Schnittstelle und eine Speicheroptimierung (mehr
Speicher für die Aufnahmefunktion, weniger Speicher für intern gespeicherte Signale).


Fazit: Das einzige was mich etwas stört, ist die violette Anzeige für den zweiten Kanal. Die ist mir
etwas zu dunkel. Mein altes Scope hatte für den zweiten Kanal eine hellblaue Farbe und war
desshalb etwas besser abzulesen. Aber ansonsten kann ich mich nicht beklagen. Für knapp 355,-
Euro bekommt man aus China ein gute Qualität geliefert.

Oszilloskop Siglent SDS1102CML+
SDS1102CML%252B.JPG

Gruß Rolf 

Link to comment
Share on other sites

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)
Midi_Delay.jpg

Bild 2: Audioausgang mit Klickgeräusch am Anfang
Buf_64Byte.jpg

Gruß Rolf 

Link to comment
Share on other sites

Hallöchen miteinander smile 

Heute gehts um Puffergröße und CPU Ressourcen

Im Degenerator wird viel gerechnet zB Echtzeitberechnung von zwei Oszillatoren, Sampling, 3 LFO's, 2 Envelopes, Modulationsmatrix, Grafisches Benutzerinterface, Oszilloskop Funktion uvm. Die Prozessorressourcen in so einer 32MHz "schnellen" ATMEL MCU (Xmega128AU) sind leider sehr knapp und ich musste nach intelligenten Lösungen suchen damit alles schnell und fehlerfrei funktioniert. Für eine spätere Weiterentwicklung die eventuell mehr CPU Leistung benötigt, ist der Austausch der CPU-Platine gegen eine Platine mit einem leistungsstärkeren ARM Prozessor gedacht.

Im Degenerator benötigt die Berechnungsroutine für die Oszillatoren (violett) ca. 41% der gesammten Rechenleistung eines Xmegas. Alle 25usec werden zwei Oszillatorwerte (gelb) aus einem Puffer an die beiden DAC Ausgänge gesendet. Das dauert ca. 1 usec und entspricht einer Samplerate von 40KHz. Da es sehr uneffizent wäre die Oszillatorwerte alle 25usec neu zu berechnen (so habe ich es füher gemacht), benutze ich eine Pufferroutine, in der vorab 2x40 Oszillatorwerte berrechnet und in einem Puffer zwischen gespeichert werden. Alle 25usec werden dann die Werte aus dem Puffer gelesen und an den DAC gesendet. Das hört sich einfach an ist es aber nicht. Der Buffer besteht eigentlich aus zwei Doppelpuffer mit jeweils 80 Byte für beide Oszillatoren. Um die Funktionsweise der Pufferroutine zu erläutern beziehe ich mich aber nur auf einen Doppelpuffer.

Bild 1: Doppelpuffer
Buffer1.jpg

Funktionweise des Doppelpuffers
Bild 1: Der geschlossene Kreis verdeutlicht den Ablauf, da in einer ständigen Wiederholung nach dem zweiten Puffer wieder der erste folgt. Jeder Puffer fasst hier 40 Samples, entsprechend einer Latenz von ms. Wie diese 1 ms entstehen ist einfach nachzuvollziehen. Beim Start der Wiedergabe befindet sich der Positionszeiger an der mit 0 bezeichneten Stelle. Da beim Start der Wiedergabe der erste Puffer bereits abgespielt wird kopiert die Software alle Daten zunächst in den zweiten Puffer. Stellen Sie sich (in Zeitlupe) vor, wie sich der Zeiger im Uhrzeigersinn fortbewegt. Bei einer Samplefrequenz von 40 kHz werden die 40 Samples in nur 1 ms abgearbeitet. Sobald der Zeiger die Grenze zwischen den Puffern erreicht hat (Position 1) wird ein Interrupt ausgelöst, und die Software berechnet die nächsten 40 Samples und speichert diese in den (nunmehr abgearbeiteten) ersten Puffer. Der zweite Puffer wird nun abgespielt, am Ende (Position 0) wieder ein Interrupt ausgelöst, Sampels werden wieder berechnet und in den zweiten Puffer kopiert.. Das ganze Pufferspiel wiederholt sich unendlich.


Bild 2: Zeitintervall der Pufferfunktion
SDS00010.BMP

Gelb: 25 usec Intervall für Sampleausgabe auf den DAC (Dauer ca. 1usec)
Violett: 1 ms Intervall für die Berechnung von 80 Samples (Dauer ca. 412usec)

Im nächsten Beitrag gehts ums Thema Puffer und Midi Latenz

Bis dahin liebe Grüße aus Wuppertal. Rolf 

Link to comment
Share on other sites

Hallo liebe Freunde smile 

Ich habe die "Optimierung" in Atmel Studio 7 von -OS zu -O1 geändert. Das Ergebnis ist ein schnellerer Code und ein wenig mehr Code im Programmspeicher des Xmega Prozessors.
Durch die geänderte Optimierung ist der Code für die Berechnung und Speicherung der Oszillatorwerte wesentlich schneller geworden. Ferner werden die Menüseiten schneller aufgebaut. Die Prozessorauslastung liegt jetzt bei ca. 31%. 

Bild 1:Berechnung von 2x40 Oszillatorwerten und speichern in den Puffer in 514 usec mit optimize -OS
SDS00011.jpg


Bild 2: Berechnung von 2x40 Oszillatorwerten und speichern in den Buffer in 308 usec mit optimize -O1
SDS00012.jpg

Gelb: 25 Mikrosekunden Intervall. Es werden zwei Samples aus dem Puffer gelesen und an die beiden DACs gesendet
Violett: Berechnet 2x40 Oscillatorwerte und speichert diese in einen Puffer

Jetzt ist alles super schnell und fluppt schön großes Grinsen 

Hallöchen..

Ich habe aus Interesse mal die max Zeit für das Berechnen und abspeichern der Oszillatorwerte in den Puffer gemessen. Je nach Art der Synthese ergeben unterschiedliche Zeiten für die Berechnung bis maximal 352 usec. Im Video kann man das schön verfolgen. Gelb die errechnete Wellenform und voilett die benötigte Zeit.

Time.JPG
 

Youtube: https://www.youtube.com/watch?v=AbtCYI0X_TI&feature=youtu.be


Gruß Rolf

Edited by rolfdegen
Link to comment
Share on other sites

  • 2 weeks later...

Hallöchen..

Für die Wiedergabe von Samples stehen im Degenerator 982KB externes SRAM zur Verfügung. Das SRAM ist in verschiedenen Blockgrößen unterteilt. Der erste Block ist für zwei Sample-Files reserviert. Der freie Speicherplatz für einen zu ladenden Sample verringert sich in Abhängigkeit von der Größe des zu erst geladenen Samples. Der 2. und 3. Speicherblock ist für zwei 32KB Wellenform Bänke für Oszillator 1 und Oszillator 2 vorgesehen. Beim Umschalten auf eine andere Wellenformbank werden die Daten von der SD Karte in das SRAM geladen. Der 4.Speicherblock dient als Zwischenspeicher für die Grafische Darstellung des Sample-Files.

1MB XRAM im Degnerator
Xram30.jpg

20161009_192615.jpg

Gruß Rolf 

Link to comment
Share on other sites

  • 1 month later...

Hallöchen..

Um die Warterei auf den Degenerator etwas zu überbrücken, hab ich ein paar aktuelle Demo-Sounds vom Degenerator auf soundcloud.de hochgeladen. Die Sounds bestehen aus verschiedene Samples die über Oszillator 1+2 wiedergegeben werden. LFO1 moduliert das Delay-Panorama. Viel Spaß beim anhören.

SoundCloud.JPG
Soundcloud: https://soundcloud.com/rolf-degen/wav-sounds-from-degnerator

Gruß Rolf 

Link to comment
Share on other sites

Hallö.. halla

Mein guter Freund Andre aus Oer-Erkenschwick entwickelt zur Zeit das Platinen Layout für's Panne-
board. Nächste Woche Montag vor dem Feiertag ist noch einmal eine Team-Besprechung. Es wird
vorwiegend ums Gehäuse Designe und die verwendete Filterkarte gehen. Ferner werden noch einige
Kleinigkeiten besprochen und der zweite Prototyp getestet. Ich für mein Teil habe den endgültigen
Schaltplan für's Pannelboard gezeichnet und programmiere noch an einigen Kleinigkeiten rum. Zum
Schluss soll der Degenerator noch einen Bootloader erhalten, um aktuelle Firmware über SD Karte
zu laden.

Bild: Degenerator Pannelboard
PanelBoard%2B33-22.jpg

Link zum Bild: https://lh6.googleusercontent.com/-s2AKm...ard%2B33-22.jpg


Gruß Rolf 

Link to comment
Share on other sites

Hallöchen..

In der Zwischenzeit konnte Radiomicky sein Problem lösen... freut mich Zunge raus 

Mein Freund Andre arbeitet fleißig am Pannelboard. Das Ganze sieht jetzt so aus..

Entwurf Pannelboard
P1050961.JPG

Die zwei weissen Tasten mit dem Start/Stop Symbol für den Sequenzer und Record Funktion sind beleuchtet. Unterhalb der Encoder sind die Tasten für die am häufigsten genutzen Menü Seiten. Mit der Taste "MOD" kommt man zB direkt in die ModulationsMatrix. 

Entwurf Gehäuse
Case_29.jpg

Gruß Rolf 

Link to comment
Share on other sites

Hallöchen zusammen...

Problem
Beim Dauerbetrieb des Degenerators ist uns aufgefallen, dass die Kühlung des Festspannungsreglers 7805 auf dem Motherboard trotz Kühlkörper nicht ausreichend ist bzw im Gehäuse einen kritischen Wert erreichen könnte. Ein Austausch des Kühlkörpers gegen einen größeren ist wegen Platzmangels im (späteren) Gehäuse und auf dem Motherboard nicht möglich.

DEGENERATOR Power circuit
Power.JPG

Über den Festspannungsregler IC3 7805 und X3 LF33CV wird das CPU-Board und das Pannel-Board mit Strom versorgt. Die Stromaufnahme beträgt ca. 149mA. Bei der Planung des Motherboard's hatte ich die Versorgungsspannung für die LED-Hintergrundbeleuchtung über einen Widerstand an die +12V Versorgungspannung vom Netzteil vorgesehen. Aber falls jemand auf die Idee kommt und das Gerät mit einer höheren Spannung versorgt, hätte das eventuell den Tod der LED-Hintergrungdbeleuchtung zur Folge. Aus diesem Grund habe ich die Hintergrundbeleuchtung an die 3.3 Volt Versorgungsspannung vom Pannel-Board angeschlossen. Das hatte aber den Nachteil, dass der 7805 zusätzlich 82mA mehr Strom für die LED-Hintergrundbeleuchtung liefern musste. Die Verlustleistung am 7805 stiegt jetzt von 1.0 Watt auf 1.6 Watt. Da noch kein Gehäuse vorhanden ist, habe ich für die Temperaturmessung als Ersatz einen kleinen geschlossenen Karton benutzt und auf der Vorder- und Rückseite kleine Lüftungsschlitze eingeschnitten. Die gemessene Temperatur am Kühlkörper stieg auf über 57 °C.

Temeraturmessung im Karton
20161115_153841.jpg

Vorderseite mit SD Karten Slot und Lüftungslöschern
20161115_183415.jpg

Rückseite mit Lüftungslöschern am Festspannungsregler
20161115_154054.jpg


Lösung
Um die Strombelastung des Festspannungsregler 7805 IC3 auf dem Motherboard zu verringern, habe ich jetzt die LED-Hintergrundbeleuchtung über einen zweiten 7805 IC10 auf dem Pannel-Board an die +12V Versorgungsspannung angeschlossen. An diesem fallen ca. 0.6 Watt ab. Ein Kühlkörper ist dafür nicht notwendig. Durch die geringere Belastung wird der Kühlkörper des 7805 IC3 auf dem Motherboard jetzt nur noch 43-44 °C heiß.

Pannel-Board
Pannel.jpg



Gruß Rolf 

Link to comment
Share on other sites

Der zweite Gehäuse Entwurf von unserem Designer...

161115_first-ideas%2B%25281%2529.png

Einiges ist noch nicht korrekt gezeichnet. So zum Beispiel die Bezeichnung über der DC-Buchse. Das Gerät wird mit einem 12VDC Netzteil betrieben. Midi In/Out sind nicht eindeutig beschriftet. Die Encoder Knöpfe dürfen keine Markierung haben.

Gruß Rolf 
 

Link to comment
Share on other sites

  • 1 month later...

Es ist geschafft...

Kurz vor dem Jahreswechsel kann ich verkünden, dass der DE-GENERATOR bzw die Elektronik fertig
ist und alles funktioniert. Die nächsten Tage und Wochen werden wir noch am Gehäuse und an der
Software arbeiten.

DE-GENERATOR
20161230_214541.jpg

20161230_214711.jpg

20161230_214719.jpg

20161230_214833.jpg

20161230_214908.jpg

Zum Vergleich noch einmal die alte Elektronik
IMG_20160506_201543.jpg

 

Mehr Info gibts hier: http://www.cczwei-forum.de/cc2/thread.php?threadid=5878&threadview=0&hilight=&hilightuser=0&sid=9e58b6207c6a0de33f72ad655c1d0862&page=29


Gruß Rolf 

Edited by rolfdegen
Link to comment
Share on other sites

  • 2 weeks later...
  • 1 month later...

Halli.. hallo..

Es gibt wieder Neuigkeiten zu berichten. Das 2.Filterboard für den DE-GENERATOR ist fertig.
Es handelt sich um einen stereophonen 4-Pole Mision Filter mit folgenden Eigenschaften:

  • Lowpass 6dB
  • Lowpass 12dB
  • Lowpass 18dB
  • Lowpass 24dB
  • Bandpass 12dB
  • Hochpass 12dB
  • Lowpass + Hochpass 12dB


SMR4 Filter im DE-GENERATOR
20170218_163049.jpg
Link zum vergrößern: https://plus.google.com/photos/photo/114...YrqmpzwRA&hl=de


Schaltplan SMR4 Filter
Degenerator_SMR4.jpg
Link zum vergrößern: https://plus.google.com/photos/photo/114...qA9dn_mAE&hl=de


Kleines Filter Video
FB_SMR4.JPG
Zm Video: https://www.facebook.com/tubeohm.tubeohm...27302477354296/
Info: Lautstärke einschalten!

Gruß Rolf 

Link to comment
Share on other sites

  • 1 month later...

Woran ich zur Zeit arbeite..

an einer neuen Sequencer- und Arpeggiator-Funktion im DEGENERATOR. Das alte Sequencer
Menü sah zwar schick aus, hatte aber eine schlechte Einteilung für die Stepps und keine Arpeggiator-
Funktion. Aus diesem Grund habe ich das ganze Menü noch einmal neu gestaltet. Alle Funktionen
finden jetzt auf einer Menüseite ihren Platz und die 16 Stepps sind in zwei Gruppen zu jeweils 8
Stepps im oberen Teil des Bildschirms aufgeteilt. Mit "Mode" kann zwischen Sequencer und
Arpeggiator umgeschaltet werden. Mit "BPM" (Beats per Minute) kann die Taktgeschwindigkeit von
1- 250 verändert werden. Mit "Note" kann die Notenlänge von 1/2 bis 1/16 eingestellt werden. Mit
"DIR" die Spielrichtung. Die Menüseite ist noch nicht fertig. Weitere Parameter werden folgen. 

Neues Sequencer-ArpeggiatorMenü
SEQARP.jpg

Altes Sequencer Menü
Seq_01.jpg

Gruß Rolf 

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
 Share

×
×
  • Create New...