analoger synthesizer soll gebaut werden...

hab schon reichlich schlechte <a href="https://www.sequencer.de/specials/sequencer.html">Sequencer</a> - implementationen gesehen ,daher!!

nun, man kanns einfach machen, aber als modquelle für alles in der "matrix" ist das schon perfekt.. weniger als notensklave, aber auch.. dann muss natürlich ausgesucht werden ,wann getriggert wird und wann nicht (ENVS)!

bei anderen schauen ist nicht schlecht, besonders wenn mans besser machen kann.. oft fehlte es nur an einem oder 2 tastern..
 
Ja nee, nen Sequencer überlass ich leuten, die da mehr Plan von haben. Was ich vor habe, ist sowas in der Art AnalogSequencer, nur halt digital :) In einer Sequenz kannst 16 Werte einstellen, und die eiert das Ding dann durch. 8 Stück davon parallel und gut is, kann man genug beeinflussen mit den Registern.

Tasten wird das Ding eh zu wenig haben. Wie willst das alles abbilden. Aber das User-Interface dauert eh noch. Bin ja immer noch an der Engine. Und da hab ich heut den ersten krassen Patzer im Design entdeckt - verpeilt bei den 4052ern (1:4 Analogmultiplexer), die beiden Dinger in einem Chip sind ja gar nicht unabhängig steuerbar... Also Änderung des Modulationsrouters von:

8 Busse -> jeder separat schaltbar auf off/exp pitch/lin pitch/pulsewidth

nach

1x exp pitch, 2x lin pitch, 3x pulsewidth -> jeder schaltbar aus oder bus 1-8. Etwas eingeschränkter, aber sollte immer noch sinnvoll sein, 2xlin, weil ich entschieden hab, daß der wohl am ehesten mehrfach auf dem analogen Weg moduliert wird, ohne, daß man mehrere Modulationseinspeiser auf nen Bus legt. Stichwort FM.
 
nunja, den trigger müsste/könnte man per taster bestimmen..
tr-like.. ansonsten würde jeder triggern.. oder keiner..oder nach tastendruck.. und midiclockbar müsste schon sein, am besten als "auto" mode ,sodass bei einkommendem midisignal dazu gesynct wird, wenn nicht dann nach intern..
 
Das Trigger-Problem hab ich ja "global". Das wird schon entsprechend gelöst. Wobei "Trigger" ne Form von Reset ist, bei den Modulationsprozessoren auf jeden Fall, und den gibts dann auch beim Step Sequencer. Gate gibts auch bei beiden, wenn das aus ist, bleibt der Step Sequencer stehen, und der Step Sequencer hat im Gegensatz zum Modulationsprozessor noch einen Clock. Und genau den meinst Du.

Also gut...
- internal
- midi clock
- external

Internal könnte z.B. ein Register sein, das aus nem Modulationsprozessor rauskommt, der quasi "LFO in Rechteck" macht. Sprich, man kanns auch modulieren, wenn man mag, im Zweifelsfall sogar vom analogen Kram aus. Vielleicht entfällt dann auch external, weil ich ja externe Inputs hab. Mal schaun. Taster wäre einfach ein MIDI-Controller, der das Ding taktet.

Aber diese ganzen digitalen Signale hab ich noch nicht so ganz ausgearbeitet, wie ich die genau verwalte. Da das aber reine Software ist, ists auch jederzeit noch umbaubar, wenn die Tests ergeben, daß was fehlt.

Aber wie gesagt - step Sequencers gibts nur, wenn Performance "übrig" ist irgendwo. Wobei der Job simpel genug ist, daß ich das den CV multiplexer noch "nebenher" rechnen lassen könnte.
 
Hm. Ich glaub, ich habs...

Erweiterung MIDI-Controller -> MIDI clock ist ein controller. Mit jedem eingehenden MIDI clock wird da einfach ein Zähler im 1 erhöht, nach 32767 gehts bei -32768 weiter. Quasi Sägezahn.
Außerdem gibts einen Controller für "Note an/Note aus", ist 32767 bei an, -32786 bei aus.

Gate/Trigger/Clock für Modulationsprozessor/StepSequencer sind ja im Prinzip digitale Signale. Wird dann so abgebildet:

Gate -> Wenn Wert >0, Gate auf, sonst zu.
Trigger/Clock -> Wenn Wert von <= 0 nach > 0 wechselt, gibts Trigger/Clock

So. Das Gate kann ich somit einfach aus dem "Note-an/aus-controller" ableiten für nen Modulationsprozessor, der Hüllkurve spielt. Trigger auch, es gibt ja nur einen Wechsel von - nach + in diesem Fall. MIDI-Clock muss ich noch genauer schauen, wie ich das "mathematisch" abbilde, um den passend zu skalieren. Tut aber vermutlich "einfach so" mit ner Multiplikation, die über den Zahlenbereich rausrennt.

Hachja. Ich hoffe, ich bekomme das Userinterface so zusammen, daß man nicht erst nen Informatikstudium braucht, um den Kasten bedienen zu können :)
 
So. Mal unangenehmere News, aber damit nich irgendwann Verwunderung aufkommt, weil hier nix mehr passiert...

Nachdem ich vorgestern Abend wieder unkonzentriert 6 Stunden an nem wirklich popeligen Bug in meiner Firmware rumgesucht hab und den Fehler nicht gefunden hab, konnte ich mich gerade noch zurückhalten, den ganzen Mist an die Wand zu schmeißen, zu zertrampeln und danach fachgerecht dem Grill zuzuführen. Aber ich hab den ganzen Kram erstmal ordentlich weggeräumt und auf Eis gelegt.

Grund:

- Seit 3 Monaten habe ich etwa 80-90% meiner Freizeit da reingesteckt und bin glaub relativ weit gekommen. Die Hardware ist kein Problem, die ist so primitiv, daß das "nebenher" geht.
- Seit ich die Firmware entwickle, merke ich, daß das nach Feierabend einfach unmöglich ist. Wenn man den ganzen Tag an stinkender Enterprise IT rumschraubt, fehlt die Konzentration, da noch was sinnvolles auf die Reihe zu bringen. Das ist dann so, wie schöne Musik ohne jegliche Inspiration machen zu wollen, nur um Musik zu machen.
- Aus dem ersten Punkt heraus ergibt sich, daß meine Wohnung mittlerweile einem Schweinestall gleicht, und sehr bald mal nen größeren Frühjahrsputz braucht, weil solche "weltlichen Dinge" etwas vernachlässigt wurden.

Kernpunkt: Wenn ich so weitermache, wie bisher, also am Wochenende irgendwas zusammenschuster, dann kommt Müll bei raus. Und bevor ich Müll produziere, laß ichs gleich bleiben.

Im Moment ist der Status "eingestampft", aber ich denke, wenn mal irgendwann wieder etwas mehr Zeit ist, werde ich das Zeug vielleicht mal an dem einen oder anderen Wochenende wieder rauskramen und etwas weiter schrauben - mit klarem Kopf und hoffentlich guten Resultaten. Der nächste Urlaub steht erst im September an, die nächsten beiden Wochenenden sind auf jeden Fall schon anderweitig verplant - es wird sich also die nächsten Monate sehr wenig bis gar nichts bewegen.

Schaun wir mal, was rauskommt. Zum endgültigen Einstampfen hab ich mittlerweile zuviel Arbeit (mehrere hundert Arbeitsstunden sinds schon) und Geld (auch ein paar hunder Euros) reingesteckt, außerdem ist der Wille da, so ein verrücktes Gerät zu besitzen, und kaufen ist a) teuer b) langweilig.

So long - wenns weiter geht, melde ich mich, vielleicht mache ich dann auch mal der Übersicht halber nen neuen Thread auf und präsentiere mal etwas Dokumentation und so. Aber habt Geduld - es kann wie gesagt Monate dauern, bis wieder was nennenswertes passiert.
 
Ei,

Mik..mach weiter und schmeizz nicht das Handtuch! Du bist auf dem richtigen Weg! Was sind denn schon 3 Monate..... Durchhalten :D
Auf die eine oder andere Art bin ich ja genau so drauf wie du. Deshalb verstehe ich auch wie du dich fühlst. Es wäre schade für die ganze Sache vor der ich meinen Hut ziehe als nicht "Digitalmuckel" :D
Nur mal so...
 
Das wird schon wieder.

Wenn man so viel Arbeit und Phantasie da reingesteckt hat, läßt es einen nicht mehr los.
Es wird Dich dein ganzes Leben nerven und ärgern, wenn Du das einstampfst.

Putz erstmal Deine Bude, dabei können auch frische Ideen entstehen, genieß' eine zeitlang den kommenden Sommer. 8)
Dann hast Du plötzlich eine Idee und schon gehts weiter.
 
yepp! und ich schließ mich da an..
mach weiter, und ich finds eh wahnsinn ,das du uns so viele interessante details gibts, nicht immer kann man da was "kommentieren" ,was aber kein desinteresse ist..

weitermachen!! nicht aufhören!! das kommt schon..
 
Moin,

ist ja nicht der Ideenmangel. Mein Schädel ist voll von Ideen, die noch umgesetzt werden müssen. Es ist mehr der Konzentrationsmangel zum Programmieren nach Feierabend :)

Aber okay, schon wenige Tage Ablenkung schenken wieder einen klareren Kopf, die letzten beiden Tage hatte ich meine neuen CS1x und AN1x mal komplett "Restauriert", die nächsten Tage mach ich auch nix dran, aber vielleicht kommt ja auch mal wieder ein verregnetes Wochenende, wenn die Bude schon sauber ist, dann kann ich da rumbasteln.

Zumal ich für das aktuelle ungelöste Problem ja auch eine sich von Tag zu Tag verfeinernde Lösung im Hinterkopf hab. Und wens interessiert:

Ich kommunizieren ja per SPI (serial peripheral interface) zwischen den mehreren CPUs, die ich brauche, weils keine gscheiten performanten CPUs in Hbbyelektroniktauglichen Bauformen gibt, und ich entsprechend mit den kleineren Dingern (und auch aus anderen Gründen) viele Arbeiten parallelisieren muss. Das ist ein serieller, synchroner Bus, den ich, um meine nicht gerade geringen Datenmengen in der passenden Geschwindigkeit zu schaufeln, mit ordentlichen 4MBit fahren muss. Mit 16MHz laufen die CPUs, so bleibt für die Übertragung eines Bytes die gigantische Menge von 4 Tyktzyklen pro Bit * 8 Bit = 32 Taktzyklen. Klingt ja im Prinzip relativ viel, aber wenn man da schonmal eventuelle Delays weglässt, die beim Start des Interrupt-Handlers entstehen, die das Ding vielleicht sogar grad in ner anderen Interrupt-Routine unterwegs ist, ist das verdammt wenig, um das eingegangene Byte zu analysieren, das Kommando auszuwerten, was dahinter steckt, und eine Antwort ins Ausgangsregister zu packen.

So lief also meine Frequenzmessung quasi perfekt, nur hab ich die Daten nicht rüber bekommen. Und ohne die Frequenzmessung keine Kalibirierung. Außerdem sind diese ganzen Slaves noch für massiv mehr Dinge zuständig, Modulationsprozessoren, diverse andere Steueraufgaben und so. Bytes reinschicken ist nie ein Problem, rausholen dafür ein umso deftigeres.

Aber ich hab jetzt mittlerweile entschieden, die Schnittstelle deutlich zu vereinfachen, die ganzen Fehlerprüfungen zu entsorgen, weil ich anders die Performance nicht bekomme, die ich brauche. Fehlerprüfungen entsorgen ist hier noch akzeptabel - wenn an der Stelle fehler auftreten sollten, geht nix kaputt, aber sie sollten nicht auftreten, weil die andere Seite ja im Prinzip richtig mit dem Ding spricht.

Hmja. *kopfkratz* klingt echt nicht so, als wäre das eingestampft/auf eis gelegt, wenn ich so gugg, was ich da schon wieder zusammenschreib :)

Also, keine Sorge, Leute, es geht weiter. Nur halt möglicherweise sehr langsam. Aber auch die "Großen" brauchen ja teilweise Jahre, um ein gutes Produkt zu entwickeln. Und die haben dafür mehrere Leute in Vollzeit, ich muß es halt "nebenher" alleine stemmen. Bissl wahnsinnig für ein Hobbyprojekt ists halt scho :)
 
Weiter geht's

Hallo,

neu hier :)

Ich hatte schon das sehr seltene Vergnuegen kurz auf diesem Teil
zu spielen und es rockt schon :->

Mik - keep rockin. Ich warte auf den Akkordeon-Patch ;-)
 
Sodele,

Synthesizer entwickeln hat auch was mit Musik machen zu tun - mit der richtigen Inspiration geht das alles besser von der Hand. Aber ich hielt Softwareentwicklung (also nicht Java-Entwicklung :) immer schon für eine Form von Kunst. Heute hatte ich eine Inspiration, vielleicht wars auch einfach die Sucht, wieder am Material zu schrauben... Todays results:

http://mik.k5000.org/pix/img_3246.jpg

- er hat einen festen Platz aufm Tisch. Ab sofort.

http://mik.k5000.org/pix/img_3247.jpg

- Falls ihn jemand nicht gefunden hat

http://mik.k5000.org/pix/img_3248.jpg

- ganz wichtig - blinkenlights. Sieht live natürlich viel geiler aus. Immerhin werkeln da jetzt schon 4 CPUs drin :) Ja, das Bild ist unscharf...

Und Töne kanns auch machen:



Beschreibung dazu:

Was da am Anfang so seltsam klingt, ist die Autokalibrierung, die im Moment direkt nach dem Einschalten kommt. In Zukunft gibts da gespeicherte Werte für, Kalibrierung wird dann nur auf Request getriggert, evtl. automatische Online-Feinkalibrierung im Hintergrund.

Reihenfolge:

VCO1 scaling (1V/oct-Anpassung, das ist der mit den hohen Blips dazwischen)
VCO1 tuning (auf Referenzfrequenz 132 Hz einstellen, um nen Basiswert zu bekommen)

Danach das Ganze mit VCO2

Und dann hab ich einfach ein wenig rumgespielt mit Sync, Detune von VCO2 und so, ein wenig am Waveform-Schalter für VCO1 rumgedreht, gibt ja "theoretisch" 512 Wellenformen.

Grundeinstellung: VCO1 Sägezahn mit Subosc 1Oct, VCO2 invertierter Sägezahn mit Subosc 2Oct.

Wenn also der Ton plötzlich so "dünn" ist, dann ist das das gegenseitige Aufheben der beiden VCOs bei Sync.

Ansonsten - enjoy. Nix berühmtes, einfach mal mitlaufen lassen beim Testen, ob meine aktuelle Firmware-Bastelei tut. Ziel des Abends war die automatische Kalibrierung - erreicht :)

Nochn Edit: Keine Filter, keine Hüllkurven, kein LFO, garnix. Quasi nur 2 VCOs mit waveform selector, VCAs ohne tiefgründige Ansteuerung, unintelligentes MIDI-handling.
 
supercool!!!
ich konnte mir bisher nicht wirklich vorstellen, wie die kiste so sein wird... mit den pics und dem mp3-file kann ich mir schonmal ein bild machen, um was es bei deinen (für mich oft zu hohen ;-) ) berichten eigentlich geht...


respekt.gif
 
Hehe,

jo, pix/sounds gibts auf mik.k5000.org ja noch mehrere, und unter den pix ist in history.txt auch ne Sammlung an Kommentaren zu den Bildern. Da ist alles von der ersten Stunde ab drin, was ich gefunden hab.

Mittlerweile ist er ja deutlich aus der Steckbrett-Zeit raus, von den 7 Modulen, die da stecken, sind 5 voll bestückt, 2 noch nicht ganz, weil ich die zur Entwicklung im Moment nicht brauche. Und die übrigen 5 Slots werden für den Rest glaub ziemlich knapp, es fehlen noch:

- Noise
- Ext In
- Ringmodulator
- Filter

Und das Zeug, was da dran hängt:

- weiterer CV-Multiplexer für 32 CVs (1 Modul)
- Schaltmatrix für die ganzen Dinger (werden locker 2 Module)

Wenn die Filter dann noch ein Modul geben, muß ich es also schaffen, Noise, Ext In und Ringmodulator (nebst der letzten CPU, die u.a. für die Messungen zur Filterkalibrierung zuständig ist) auf das letzte Modul zu pressen.

Es wird also sehr eng. Wenigstens kann ich den Dummy ganz links, der im Moment nur Stromversorgung und MIDI-Interface beinhaltet, noch rauswerfen und auf das Modul dann noch ein wenig was drauf packen, die MIDI-Dosen gehören eh nicht ans Voice Board, das ist nur zur Entwicklung der Fall.

Wenn übrigens irgendwas zu kompliziert ist - ruhig fragen. Mir ist ja auch dran gelegen, daß verstanden wird, was ich da für Schweinkram baue :)

Gibt aber sicher auch bald mal ein anständiges Bild, wo man die Zusammenhänge drauf sieht.
 
Beneidenswert was du da baust. Hut ab und weiterhin viel erfolg, aber vergiss den sommer nicht, der nächste winter kommt bestimmt ;-)



Ich bräuchte übrigens ne LFO Bamk mit centralem Temporegler der Idealerweise auch midi steuerbar sein müsste.
Von der centralen clock müssten dann mehrere LFOs angeseteurt werden, aber in unterschiedlichen Teilerverhältnissen.
dies muss man anscheinend in digital realisieren, da es rein analog zu aufwändig wird.
Da du dich in beiden Welten zuhause fühlst hoffe ich das du vielleicht sowas mal baust.
Ich hoffe natürlich dass du sowas sowieso für deinen synth möchtest und es als nebenprodukt auch als einzelmodul erhältlich sein wird :roll: :roll: :roll:

Ich denke die Nachfrage für sowas wär nicht schlecht.
Die möglichkeiten so einer central gesteuerten LFO Bank sind nach meiner einschätzung nach genial.
also sowas braucht jeder Synth :roll:

:P
 
Funky40 schrieb:
Beneidenswert was du da baust. Hut ab und weiterhin viel erfolg, aber vergiss den sommer nicht, der nächste winter kommt bestimmt

Drum gehts ja im Moment so schleppend voran :)

Funky40 schrieb:
Ich bräuchte übrigens ne LFO Bamk mit centralem Temporegler der Idealerweise auch midi steuerbar sein müsste.

Da muss ich mal hirnen, ob sowas nich eh schon durch mein Modulationsgedöns abgebildet ist. Ich hatte erst heut Mittag irgendne Idee, die ich unbedingt haben will, dann ist mir nach etwas nachdenken aufgefallen, daß ich sie eh schon hab. Es ist immer nur ne Frage, wie ich es der Software erzähle. Machen kann die das Meiste wegen den Modulationsprozessoren und dem Routing und vor allem der Grundidee, daß alles über die Register gesteuert werden kann, sowieso.

Funky40 schrieb:
Von der centralen clock müssten dann mehrere LFOs angeseteurt werden, aber in unterschiedlichen Teilerverhältnissen.
dies muss man anscheinend in digital realisieren, da es rein analog zu aufwändig wird.

Du meinst also eine Kiste voll Universal-LFOs, die z.B. auf 8 oder 16 CVs dann Dein Zeug ausgibt und entsprechend konfigurierbar ist? Ich denke, das wäre eine gute Erweiterung für ein MIDI-to-CV mit 16 oder 32 Kanälen. Und sowas ist sehr einfach realisierbar. Quasi die beiden Module ganz rechts sind das schon in fertig :)

Funky40 schrieb:
Da du dich in beiden Welten zuhause fühlst hoffe ich das du vielleicht sowas mal baust.
Ich hoffe natürlich dass du sowas sowieso für deinen synth möchtest und es als nebenprodukt auch als einzelmodul erhältlich sein wird

Den Gedanken, Einzelteile meines Bauwerks auch als eigenständige Produkte zu recyceln, hatte ich schon öfter. Einiges kann man da quasi so, wie es ist, zu nem eigenständigen Produkt umbauen, anderes braucht vielleicht noch ne Schutzschaltung dran, daß bei versehentlicher falscher externer Beschaltung nicht gleich alles kaputt geht.

Aber ein Bekannter will eh auch noch so nen dickeres MIDI-to-CV, quasi sowas wie ein MCV24, nur in etwas günstiger, dafür aber mit mehr features bzw. auch gleich nach Bedarf den passenden Firmwareänderungen. An für sich ist das keine schlechte Idee, weil so kleinere Dinge relativ einfach aufgebaut sind, und wenn sowas dann auf ne Auftragsarbeit rausläuft und bei kleinen Stückzahlen bleibt, ist auch eine komplette kundenspezifische Firmware kein Problem. Ist eigentlich auch so die Gegend, in der ich mich breit machen will. Nur aufgrund RoHS/CE und sonstigen Bestimmungen ist das nicht ganz so einfach, und das Thema "ich bau das jetzt mal für nen Kumpel" könnte bei mehrfachen Fällen dann auch als Schwarzarbeit rausgehn, und dazwischen gibts eigentlich auch nicht sonderlich viele Varianten. Dazu kommen dann noch solche Themen wie Arbeitnehmererfindungen (wobei ich glaub ausreichend weit vom Arbeitsthema weg bin, daß das als freie Erfindung durchgeht und der Arbeitnehmer keinen Anspruch drauf hat), Selbständigkeit neben dem Job, lauter solche Dinge, die einem etwas den Stein in den Weg stellen. Momentan brauch ich halt meinen Job noch. Sonst würd ich sofort Bestellungen annehmen. Erfahrungen für nen kleinen Einmann-Betrieb um Musikelektronik sind ja genug da, um eine kleine Palette Services zu bieten:

- Kundenspezifische Anfertigungen aller Art
- Restauration/Reparatur aller möglichen Geräte (idealerweise Retro-Equipment, das moderne Zeug schmeisst man meist besser weg, an so ner DSP-Schleuder gibts meist nicht viel zu reparieren, wenn nicht grad nur das Netzteil oder ein paar Tasten kaputt sind...)
- Modifikationen aller Art

Und alles, was da irgendwie reinpasst :)

Funky40 schrieb:
Ich denke die Nachfrage für sowas wär nicht schlecht.
Die möglichkeiten so einer central gesteuerten LFO Bank sind nach meiner einschätzung nach genial.
also sowas braucht jeder Synth

Ich habe zwar den Arpeggiator in meinem AN1x wirklich lieben gelernt (und ich hab ihn erst 2 Tage :), bin aber immer noch der Auffassung, daß solche Tools idealerweise offboard sind. Aber klar. Trotzdem bau ich so Zeug auch soweit möglich in den Synth rein. Sonst muß ich ja noch nen paar Kästen beistellen, die das machen. Is auch doof.

Nachfrage für Spezialequipment ist sicherlich in rauhen Mengen da. Ich selber bin so ein Nachfrager. Drum bau ich ja den Synth, weil ich nie mit dem handelsüblichen Zeug zufrieden bin, auch, wenn der Störfaktor am End nur der Preis ist :)

Es gibt aber sicher genug Leute, denen das von-der-Stange-Zeug zu unflexibel ist, oder nur ein winziges Feature fehlt, und die auch bereit wären, für ne Sonderanfertigung ein wenig mehr hinzulegen. So ein handgefertigtes 32-fach MIDI-to-CV mit den ganzen Modulationsfeatures von meinem Synth ist sicherlich nicht ganz billig :)
 
MiK schrieb:
Funky40 schrieb:
Von der centralen clock müssten dann mehrere LFOs angeseteurt werden, aber in unterschiedlichen Teilerverhältnissen.
dies muss man anscheinend in digital realisieren, da es rein analog zu aufwändig wird.

Du meinst also eine Kiste voll Universal-LFOs, die z.B. auf 8 oder 16 CVs dann Dein Zeug ausgibt und entsprechend konfigurierbar ist? Ich denke, das wäre eine gute Erweiterung für ein MIDI-to-CV mit 16 oder 32 Kanälen. Und sowas ist sehr einfach realisierbar. Quasi die beiden Module ganz rechts sind das schon in fertig :)
Genau sowas. Oder genau gesagt:
Ein Modul fürs modularsystem dass die verschiedenen LFOs ausgibt, aber das durch einen zentralen Regler im Tempo gesteuert wird.

__________________________________________________________________________________________________________________________________________

MiK schrieb:
.........,
Aber ein Bekannter will eh auch noch so nen dickeres MIDI-to-CV, quasi sowas wie ein MCV24, nur in etwas günstiger, dafür aber mit mehr features bzw. auch gleich nach Bedarf den passenden Firmwareänderungen
Ich brauche auch ein dickes MidiInterface :roll: .

Beim Doepfer MCV 24 werden ja auch gleich LFOs realisiert.
Ich weiss aber nicht ob die dort die Möglichkeiten bieten die ich suche.
Der Doepfervetrtrieb konnte mir das nicht beantworten.

Man kann aber nur 3 LFOs generieren( ich hoffe ich erinnere mich richtig) da sie viel Leistung brauchen, und zudem arbeitet es mit einer zu nidrigen Auflösung auf den ports die für Modulationsdaten gedacht sind.

______________________________________________________________________________________________________________________________________________

MiK schrieb:
Es gibt aber sicher genug Leute, denen das von-der-Stange-Zeug zu unflexibel ist, oder nur ein winziges Feature fehlt, und die auch bereit wären, für ne Sonderanfertigung ein wenig mehr hinzulegen. So ein handgefertigtes 32-fach MIDI-to-CV mit den ganzen Modulationsfeatures von meinem Synth ist sicherlich nicht ganz billig :)
Ich glaube das Ideale ist wenn man schon in kleinserien fertigen kann wie beim Semtex z. Bsp.
Wie hoch der arbeitsaufwand beim digitalen programmieren ist, kann ich allerdings nicht beurteieln.

Jedenfalls ist gerade in sachen MidiInterface noch Luft da.
Es gibt zwar encore dass ne sehr gute Auflösung bietet, aber das ist dann wieder ne Übersee und " ich muss englische Bedienungsanleitungen lesen" Geschichte.

Und wie gesagt: ich denke so eine Midi Synchroniesierbar LFO Bank gehört in jedes System mit dem man auch ( Temposynchron)produzieren will.
Gut gebaut dürfte sich das gut verkaufen. Der Dieter doepfer hat ja sowas im kleinen als Modul in Planung.
Und die Geschichte lässt sich wirklich prima mit dem midi interface verbinden.

______________________________________________________________________________________________________________________________________________

MiK schrieb:
Sonst würd ich sofort Bestellungen annehmen. Erfahrungen für nen kleinen Einmann-Betrieb um Musikelektronik sind ja genug da, um eine kleine Palette Services zu bieten:

- Kundenspezifische Anfertigungen aller Art
- Restauration/Reparatur aller möglichen Geräte (idealerweise Retro-Equipment, das moderne Zeug schmeisst man meist besser weg, an so ner DSP-Schleuder gibts meist nicht viel zu reparieren, wenn nicht grad nur das Netzteil oder ein paar Tasten kaputt sind...)
- Modifikationen aller Art

Und alles, was da irgendwie reinpasst :)
Die beiden Jungs die hier den doepfer Vertrieb haben machen das genau so


Ich werde dir bald mal ne PM senden
 
Funky40 schrieb:
Ein Modul fürs modularsystem dass die verschiedenen LFOs ausgibt, aber das durch einen zentralen Regler im Tempo gesteuert wird.

Ich hatte ja heute morgen im Stau so ne Idee, dass ich eigentlich den A/D-Wandler eines AVR benutzen kann, um nen echten digitalen VCO zu bauen. Also Wavetable-basiert, aber richtig mit CV vorne rein :)

Ja, Du kannst generell viel machen. Solche Microcontroller haben in der Regel mehrere Timer, die könntest dann als Zeitbasis benutzen, und den Timerwert kannst ja per Software setzen, also z.B. per MIDI, oder auch per digitalisierter Spannung eines Potis.

Und die LFOs würde ich jetzt des Schweinkramfaktors wegen mit meinen Modulationsprozessoren realisieren (formerly knows as Envelope Processors, Details weiter oben im Thread), dann kannst die auch noch als Hüllkurven und so Zeug benutzen. Setzt voraus, daß auch entsprechend Gate/Trigger-Eingänge da sind an der Schachtel, oder das auch per MIDI reinkommt. Ich mein, wir haben CV, wir haben Hüllkurven, wir haben LFOs, alles in dieser Schachtel -> paar Steckers an den guten alten Modularen und Du hast Komfort. Jetzt könnte man das Zeug weiterspinnen und z.B. noch eine Modulationsmatrix basteln, wo Du all die Patchkabel des Modularen reinstecken kannst, und die CPU steuert dann die echten Verbindungen, und schon hast Du den Modularen zu nem echten MIDI-Synth umgebaut und kannst mal die Patches auch speichern...

Funky40 schrieb:
Ich brauche auch ein dickes MidiInterface.

Beim Doepfer MCV 24 werden ja auch gleich LFOs realisiert.
Ich weiss aber nicht ob die dort die Möglichkeiten bieten die ich suche.
Der Doepfervetrtrieb konnte mir das nicht beantworten.

Man kann aber nur 3 LFOs generieren( ich hoffe ich erinnere mich richtig) da sie viel Leistung brauchen, und zudem arbeitet es mit einer zu nidrigen Auflösung auf den ports die für Modulationsdaten gedacht sind.

Ich fand das MCV24 eh etwas seltsam. 8bit, 12bit, ziemlich wild. Ich setze da auf einen einzigen 16bit-Wandler mit Sample&Hold hintendran. Meine Multiplexrate ist ausreichend hoch, daß ich 64 CVs generiere und ein Update innerhalb einer ms durch ist, also quasi 1KHz Updatefrequenz bei echten 16bit. Bei 32 CVs kannst das auf 2KHz runterschrauben, und ich bin auch noch nicht am Limit, da geht sicher noch etwas mehr. Der DAC kostet zwar 40 Öcken, aber taugt auch. Der Rest hintendran sind Centbeträge. Die ganze Elektronik von so ner Kiste wäre vom Material her nichtmal so teuer. Kosten tut die Anfertigung der Platinen, des Gehäuses und die Entwicklung.

Funky40 schrieb:
Ich glaube das Ideale ist wenn man schon in kleinserien fertigen kann wie beim Semtex z. Bsp.
Wie hoch der arbeitsaufwand beim digitalen programmieren ist, kann ich allerdings nicht beurteieln.

Firmwareentwicklung ist ne recht langwierige Sache. Schließlich steckt da eigentlich die wirkliche Komplexität drin. Mein Synth klingt zwar höllisch kompliziert, aber abgesehen von dem VCO, der wirklich lange gebraucht hat, bis alles so war, wie es mir gefiel, war der Rest in wenigen Stunden designed. Also von dem, was jetzt steht. Filter und so werden auch wieder etwas Zeit beanspruchen. Aber grad so Sample&Hold-Thematiken, insgesamt die gesamte Hardware für so MIDI-CV kann man getrost bei 3-4 Bierchen an nem Abend designen, am Folgetag dann kurz aufm Steckbrett ausprobieren, evtl. optimieren, und fertig ist. Das ist alles simples Zeug. Aber dann kommen halt einige Wochen Firmwareentwicklung dazu :)


Funky40 schrieb:
Jedenfalls ist gerade in sachen MidiInterface noch Luft da.
Es gibt zwar encore dass ne sehr gute Auflösung bietet, aber das ist dann wieder ne Übersee und " ich muss englische Bedienungsanleitungen lesen" Geschichte.

Ich schreib meine ja auch ersma auf englisch :) Aber ich les ja auch Bedienungsanleitungen immer erst, wenn was kaputt ist, damit ich weiss, wieso es kaputt gegangen ist :)

Funky40 schrieb:
Und wie gesagt: ich denke so eine Midi Synchroniesierbar LFO Bank gehört in jedes System mit dem man auch ( Temposynchron)produzieren will.
Gut gebaut dürfte sich das gut verkaufen. Der Dieter doepfer hat ja sowas im kleinen als Modul in Planung.
Und die Geschichte lässt sich wirklich prima mit dem midi interface verbinden.

Ich hab da ne ganz einfache Philosophie:

- Designe die Hardware so, daß sie das, was Du willst, erfüllt, und Dir idealerweise nicht irgendwo ein Limit setzt, wenn Du noch ein klein wenig mehr willst als ursprünglich geplant.
- Nutze alles. Wenn in einem Quad-Opamp noch ein Teil frei ist, dann mach irgendein sinnvolles/sinnloses Feature draus :)
- Wenn die CPU(s), die das steuern, unterfordert sind, fahre sie ans Limit, aber so, daß alles noch sauber tut. Schließlich sind die 1,90 EUR auf der Rechnung für den ATmega48 für die gesamte Leistung, also ausbeuten, es gehört alles Dir...
 
Development news...

hatte gestern mal wieder nen inspirationsreichen Tag, mein Code funktionierte auf Anhieb, und als dann mal was zickte - stehen lassen, ins Bett, heute Morgen zum Frühstück dann gschwind gefixt. Irgendwie ist diese Entwicklungsphilosophie stressfreier :)

Gestriges Schraubthema - die Basis meines Modulationsroutings. Das Controller-Management. Funktioniert einwandfrei, da ist mir dann auch gleich aufgefallen, daß der AN1x ein 7bit Modwheel hat, ansonsten läuft der Krempel so, wie ich das geplant hab, muß nur noch für NRPNs/RPNs ein 7bit-Handling einbauen, die würden im Moment wohl 14bit-Werte in 7bit-Auflösung ausspucken, und damit von den normalen Controllern abweichen, was ich ja nicht will.

Insgesamt ist dieses Modulationsrouting für den User ein sehr fieses Gewirr an Zahlen, Berechnungen und noch viel mehr. Vorstellen kann man sich das, was ich da in der Engine zusammen baue, als ein Synth, wo man "mittendrin" rumbaut, sich also quasi die Steuerung noch selber programmiert. Für den Einsteiger wirklich völlig ungeeignet, aber ich werde auch diese Schicht nach außen legen. Da der Begriff "modeling" ja grad so hip ist - es gibt eigentlich nen "modeling synthesizer", aber auf analoger Basis. Und so wirds dann auch abgebildet. Wie gesagt, Expert Mode, User Mode, vielleicht noch nen Advanced Mode dazwischen, weil die Unterschiede zwischen den beiden Betriebarten extrem groß sind. Jetzt mal zum Expert Mode:

Der Synthesizer an für sich ist strunzdumm und kann gar nix, wenn man ihn einschaltet. Der weiß nichtmal, was er mit nem Note-On anfangen soll. Und genau das ist gut so:

Am Anfang stehen Controller. Im Moment sind es 40 Slots. 8 davon sind "Systemcontroller", die fest verdrahtet sind und Dinge abbilden, die nicht als MIDI-Controller rüberkommen. Da gibt es:

0 - Trigger/Gate
Der beinhaltet die Werte -32768 für "alles aus", 0 für "da spielt was, und das Event dazu ist verarbeitet worden", 16383 für "da kam ein Note-On, während eine Note spielte" und 32767 für "da kam ein Note-On, während nichts spielte"
1 - Pitch
Hier wird der schon quasi in CV umgerechnete Notenwert hingekippt. Da kommt eventuell mal was Anderes als das momentane notenwert * 256 rein, um unterschiedliche Stimmungen zu erreichen.

Neben diesen beiden wichtigen Dingern kommen dann noch Pitchbender, Velocity, Release Velocity und Pressure mit rein. Sind 6 Stück, 2 halte ich mal frei, wenn mir noch was einfällt.

Nach diesen 8 Systemcontrollern kommen im Moment 32 frei definierbare Controller, wo normale MIDI-Controller hin kommen, die 7bit sein können (GPS1-4, Attack, Decay und was es da so alles gibt), 14bit (Modwheel, Balance, Pan usw), außerdem kann man da RPNs und NRPNs hinschicken, ebenfalls 7bit oder 14bit, außerdem wird DBDEC und DBINC unterstützt, also die volle MIDI-Spezifikation ist drin. Die Slots enthalten neben den Verwaltungsinformationen, wie die Werte gesetzt werden, noch einen Default-Wert mit einem Flag, das entscheidet, ob bei der MIDI-Message zum resetten aller Controller dieser auf den Default-Wert gesetzt werden soll (z.B. Modwheel auf 0), im Moment ist auch noch neuer/alter Wert drin, das diente zur Entscheidung, ob Routingeinträge, die den Slot benutzen, neu berechnet werden müssen, möglicherweise berechne ich aber eh alles neu - mir gehen nämlich meine 2KB RAM langsam aus :)

Dann gibts die Register, das sind quasi Variablen. Alle auf 32bit ausgelegt, während gerechnet wird, und nach Berechnung auf 16bit "geclippt". Man kann so sogar den Output seiner Hüllkurven mit einem anderen Controller "mischen" und eine gewisse Form der "Übersteuerung" einbauen. Oder wie wärs mit nem übersteuerten LFO? Geht alles. Übrigens auch im Analogteil :)

Dazu gibts dann noch die Controls, das sind einerseits die Steuerspannungen, und man kann in restlos alle reinschrauben. Auch die internen Kalibrierungswerte kann man überschreiben. Einschränken werde ich nur die ersten beiden, die die Referenzwerte für Nullpunkt und Amplitude aller CVs darstellen. Wenn mans mit denen übertreibt, kann man die Elektronik nämlich zerstören. Aber ich lasse sie in kleinen Grenzen modulierbar, dann kann man einen "Störfaktor" auf die gesamte analoge Steuerung einbringen, und damit einen sehr wartungsbedürftigen alten Analogsynth modulieren, bei dem z.B. das Netzteil kaputt ist und schwankt (Ja, ich bin in dieser Beziehung pervers :).
Außerdem - ich bin ja Unix-Freund, und unter Unix ist alles eine Datei, egal, obs eine Tastatur, der Drucker oder wirklich eine Datei ist - findet sich hier auch der komplette Rest der Steuerung wieder. Neben den 64 Steuerspannungen, die es gibt, sind dann noch bis zu 128 andere Steuerwerte vorhanden, die z.B. die Wellenformen auswählen, die Sync ein/ausschalten, Trigger/Gate für die Modulationsprozessoren, Gate für den Sample&Hold, die ganzen Quellen/Zielauswahlen der analogen Modulationsmatrix, und diverser anderer Kram. Sicherlich macht es nicht bei Allem Sinn, da Wild zahlen reinziwerfen, aber alles ist so ausgelegt, daß man mit Zahlen arbeiten kann. Man muß nur viel nachdenken, wie man rechnen muß, damit das gewünschte Ergebnis rauskommt.
Diese Werte bekommen alle Defaults, können also vom User mit entsprechenden Daten vorbelegt werden (oder werden vom System schon durch das Tuning vorbelegt), wenn sie nicht durch die Modulationen verändert werden sollen. Gerade die Modulationsmatrix, also was wohin und was woher kommt, kann man zwar modulieren, muß man aber nicht.

Soviel also zu Input/Output. Das steht einfach mal alles so im Raum, und drumrum hängt ein Modulationsrouter. Dieser besitzt 128 (im Moment) Einträge mit den folgenden Daten:

- Quelle (Controller oder Register)
- Ziel (Register oder Control)
- Modifikator (entweder ein 7bit-Zahlenwert oder eine Registernummer/Controllernummer)
- Benutzung des Modifikators (ignorieren, addieren, multiplizieren, dividieren)
- Typ des Modifikators (mit/ohne Vorzeichen)

Und hier ist jetzt die eigentliche Logik von der ganzen Kiste abgebildet. Wenn hier nix drin steht, kommt kein Ton raus.

Im einfachsten Fall, um einfach einen Orgelpatch, keine Hüllkurven, monophon, zu bauen, muß man also etwa folgendes verdrahten:

- Controller 0 über einige Register mit den vorhandenen Rechenoperationen so hinbiegen, daß hinten im Endeffekt 0 und 1 rauskommen -> damit ist quasi ein einfaches Gate isoliert
- Das Register, was ganz am Ende der Berechnungen von Controller 0 steht, mit dem Wert des Vertrauens multiplizieren und auf den VCA-Pegel für Haupt-Osc und evtl. Sub-Osc schreiben
- Controller 1 auf Pitch des VCOs schreiben
- Controller für Pitch-Wheel durch 16 teilen und auf Pitch des VCOs schreiben

"das war ja einfach" - wir haben einen einfachen Patch ala Orgel. Der erste Schritt ist übrigens mit Hüllkurven deutlich einfacher, weil Trigger und Gate Werte sind, die einfach nach größer oder kleiner 0 entscheiden. Der VCA-Wert, der hier kompliziert berechnet werden muß durch Übersteuerung, kommt dann ja aus einem Modulationsprozessor. Und mit einigen simplen Berechnungen kann man entsprechend den Trigger auch trennen in Note nach Leerlauf und Note nach Note, um im Legato-Spiel z.B. die Hüllkurve nicht nach überlappend gespielten Noten neu zu triggern, oder z.B. um den Glide nur beim Legato-Spiel zu benutzen, während eine neue Note nach Leerlauf den Glide umgeht.

Die Modulationsprozessoren können alle auf die ersten 32 Register zugreifen, wobei die insgesamt 24 Modulationsprozessoren in 3 8er-Gruppen unterteilt sind, und nur beim ersten sind Register 0-7 auch wirklich Register 0-7. Die anderen beiden können zwar in sich auch auf 0-7 zugreifen, aber nur von den Nachbarn in der Gruppe. Diese beiden MP-Gruppen werden dann in den Registern 32-47 abgelegt. Aber mehr als 8 Modulationsprozessoren (die ja Hüllkurven und LFOs und noch mehr darstellen) muß man ja vermutlich auch nicht gegenseitig modulieren. Register 8-15 werden mit den digitalisierten Daten der 8 Modulationsbusleitungen bestückt, 16-31 sind frei, 48-63 sind frei.

Das klingt alles jetzt unendlich kompliziert für nicht-Computer-Entwickler, denke ich, entsprechend umfangreich wird auch die Anleitung für den Expert-Mode, aber das User Interface wird hier vermutlich die meiste Entwicklungsarbeit kosten, denn es soll einem am Ende die Arbeit mit dieser Höllenkonstruktion so einfach wie möglich machen. Möglicherweise ist aufgrund der Komplexität für den Expert Mode eine Bedienung nur über einen Computer extern möglich, aber im Expert Mode kann man ja schließlich seinen Synth "zusammenbauen", wie man ihn will, und damit ein Modell für den User-Mode bereit stellen, bei dem dann, wie man es von handelsüblichen Geräten kennt, nur noch die freigegebenen Parameter eingestellt werden können, die auch nicht zwingend was mit den vorhandenen Controls zu tun haben müssen, es können ja schließlich Werte direkt in der Routingtabelle, in Registern oder Controllern sein. Und die Controller kann man auch alle live bedienen. Also 32 Knobs in parallel.

Obigen Orgelpatch in leicht erweiterter Version hatte ich gestern mal am Laufen, 5 User-Controller, mit denen ich detune von VCO2 gesteuert hab, ein wenig waveforms, ein wenig sync ein/aus, alles recht rudimentär, und noch ohne den Router, das war noch hardcoded. Ich musste feststellen, ich bin in Sachen fette Sounds glaub auf dem richtigen Weg. Die Konstruktion hat mit 2 VCOs und daran angebundenen 5 Sub-Oscs (VCO1 mit Subosc auf 1, 2, 3 und 4 Oktaven tiefer, VCO2 mit Subosc auf 2 Oktaven tiefer), nem Detune um etwa eine Oktave auf VCO2 und Sync VCO1->VCO2 derart brachiale Geräusche hervorgebracht, sowas motiviert dann wieder, da schnell weiter zu machen, daß da noch Filter dahinter kommen und so Zeug. Außerdem brauch ich ein zweites Voice-Brett für noch mehr Chaos :)
 
Ma wieder was auf die Speakers:



Ja, musikalisch völlig wertfrei und außerdem bissl ausm tuning, da fehlt noch der online-nachtuner.
Aber ansonsten: "2 VCOs, sonst nix". Na gut, mit einem Subosc pro VCO und Spielereien mit dem Sync.
 
Sie sind nur stellenweise synchronisiert. Es war eben der Sync-Test. Und dabei musste ich mir wieder eingestehen, daß meine Sync noch nicht aggressiv genug ist. Das ist noch zu sehr Softsync, der gesyncte VCO muß schomma zu mindestens 20% geladen sein, damit das greift. Ich hatte da auch irgendwann mal nen anderes Design für die Sync, weiss jetzt garnicht, warum ich das nicht eingebaut habe. Aber für die momentane Technik muß ich eigentlich nur nen Kondensator austauschen, um die Sync wirklich so hinzubekommen, wie ich sie will, denke ich.

Gerade noch geprüft - andere Probleme hat das Ding wenigstens nicht, ich hatte noch so einen Verdacht, daß sich das Zeug gegenseitig einstreut, und VCO1 deswegen vielleicht irgendwie ausm Plan läuft. Ist aber nicht so, wenns in dem MP3 ganz fies schräg klingt, ist das wirklich nur bedingt durch den gesyncten VCO2.

Nunja. Es ist langes Wochenende, das Wetter soll auch nicht so der Hit sein - gute Zeit, mal massiv Firmware zu hacken :)

Ach ja, in dem MP3 ist eine Stelle, wo es nach Aufnahmeunfall oder Fehler im MP3 klingt... Aber auch dieser Sound kommt wirklich aus dem Synth - allerdings werde ich da noch suchen müssen, wieso gelegentlich kurz die Kommunikation mit dem CV Multiplexer Mist baut. Ganz robust ist das noch nicht, aber den Teil wollte ich eh mal noch umbaun, der ist mir noch zu ineffizient.
 
Thema Filter

Ich bin ja nun davon weg, die "klassischen" Dinger nachzualbern, das machen ja schon alle :) Also per Default nix Moog, 303, EMS oder so (aber vielleicht bau ich da Module für, ist ja austauschbar).

Nach etwas rumschauen befand ich dieses recht pflegeleichte Design für sinnvoll:

http://www.synthdiy.com/show/showproduct.asp?id=1152

Also 2 2Pol State Variable Filters kommen da rein, die man unabhängig oder auch hintereinandergeschaltet verwenden kann. Dabei kommen wieder einige Analogschalter rein, beide Filter werden völlig unabhängig verwaltet und können jeweils:

Input aus einem der 8 Audiobusse
Input aus einem der 8 Modulationsbusse
Output Schaltbar aus einem oder mehreren der 4 Outputs, routbar auf einen der 8 Audiobusse und/oder einen der 8 Modulationsbusse.
Vermutlich noch mit einer zuschaltbaren Verbindung zwischen beiden Filtern, um bei Zusammenschaltung nicht einen Modulations- oder Audiobus belegen zu müssen.

Resonanz wird nicht direkt eingebaut, sondern quasi über einen der Modulationsbusse gefahren. Das muß ich aber noch ausprobieren, was da das Sinnvollste ist.

Beide Filter zusammen bekommen wieder eine CPU, die an der Stelle aber in Bezug auf den Filter nix anderes macht als Frequenzmessung, um das Tuning der Cutoff zu implementieren. Die Hauptfunktion ist, wie auch bei den beiden VCO-Controllern, das Rechnen der Modulationsprozessoren.

Mit viel Glück passt diese ganze Mimik sogar auf ein Modul. Eventuell schalte ich es auch anders zusammen, um den Grundgedanken, alle Module auch für ein Modularsystem recyceln zu können, auch beim Filter weiter zu behalten. In dem Falle kommen dann vermutlich noch Noise und der Ringmodulator mit aufs Modul, und die Steuerlogik für all das zusammen auf ein zweites Modul.

Mal schaun, ob ich über das lange Wochenende noch die Zeit finde, den zweiten 32fach CV-Multiplexer zusammenzulöten, damit ich das Filterdesign ausprobieren und hoffentlich bald zusammenlöten kann. Ich brauch da jetzt Filter, nachdem die VCOs schon böse drücken :)
 
oh man, mal davon abgesehen das du ne pause machen wolltest, gehst du ja gerade richtig ab...... die fülle an infos muss man erstmal verarbeiten....
der expertmodus ist wirklich extrem interesant, mal eben ne eigenesynthkreation zusammengehackt... das is ja reaktor in hardware, oder zumindest in die richtung gehend,....
ich hoffe nur das du ordentlich beispiele in deine expertdokumentation integrierst. denn das ist ja völliges neues land für mich und wohl auch für die meisten user,... aber gerade deswegen find ich es so geil was du da zusammen schraubst,...
ich hatte dir mal ne pm zukommen lassen, wahrscheinlich hast du sie übersehen, is aber schon ein bischen her....

ich freue mich auf einen schlechten sommer und gutes vorankommen deinerseits, hihi ;-)
 
Jaja, die Sucht treibt trotz häufigerer Konzentrationsprobleme die Entwicklung voran :)

Das mit "Reaktor in Hardware" hast Du glaub recht gut erkannt, alternativ kannst Du auch sagen "Nord Modular in analog"...

Mist. Grad gesehn, daß man so nen MC1496 nicht einfach so zum 4quadranten-Multiplizierer umbauen kann. Dann bau ich den Ringmodulator glaub doch aus Transistoren zusammen...

Zur PM - ist nicht angekommen. Grad extra nochmal geschaut. Zumindest im Forum war nix, und ich geh mal davon aus, daß Du da meinst. Alternativ kannst die direkt an die Adresse schicken, die Du auf http://k5000.org/ findest, letzte Zeile.
 
Krasses Zeug. Ich hab noch nix in der Richtung getan, aber das Ding hat ein so brachial robustes Timing...

Habe gerade den Modulationsrouter fertig programmiert. Rudimentäre 638 Zeilen Assembler. Jetzt besteht das Hauptprogramm eigentlich nur noch aus Initialisierung, MIDI-Polling ausm Puffer und Aufruf des Routing-Laufs. Wenn der Router mal deftig belastet ist (und das ist er z.B. wenn man viele Multiplikationen und vor allem Divisionen in seinem Routing hat), kann das zwar zu Verzögerungen kommen, da aber der ganze Timingkram im Hintergrund synchronisiert abläuft, gibts keine plötzlich langsamer laufenden LFOs oder sowas. Darum ja auch die vielen CPUs. Muß aber selber schauen, wie sich das verhält.

Im Moment hab ich 9 Routingeinträge drin, einer mit Division, 4 mit Multiplikation, und das Ding fuhr ein Arpeggio in 1/32el Noten mit 240bpm (mehr gab der AN1x nicht her :) absolut clean durch, keine Ruckler, keine Firmware-crashes oder sonstwas.

Und wenn das Biest mal warmgelaufen ist, hält es sogar irgendwann mal das Tuning und man kann erfolgreich den zweiten VCO 2 Oktaven detunen, ohne, daß es schrecklich klingt.

Das wird langsam. Werd jetzt mal die Modulationsprozessoren fertig machen und einbinden, damit ich wieder meine Hüllkurven und sowas hab. Dann fehlt eigentlich auch nimmer allzu viel in der Voice-Board-Firmware, die Engine besitzt ja keine echte Intelligenz. Da muß dann nur noch ein Master davor, damit man das Gerät nicht mit dem Hexeditor programmieren muß :)

Wenn das das lange Wochenende so weitergeht, fang ich Montag wieder mit dem Steckbrett an -> Filter müssen her.

Auf jeden Fall kommt jetzt wieder so viel Sound raus, daß es zum zügigen Weitermachen motiviert. Von C64 auf Drogen bis zu Kirchenorgelähnlichen Sounds (naja, durch Rechteck etwas härter) gibt das Ding schon einiges her.

Edit: so, Router vollständig. Und so klingts im Moment:
 
So, gibt wieder was auf die Speakers, frisch aus der Bastelbude:



Die Modulationsprozessoren sind fast fertig, muß noch den alten constant time glide etwas aufräumen, aber ansonsten sind nun quasi all meine Vorstellungen in Bits und Bytes umgesetzt bei dem Ding.

Ja, mehr kommentieren würde dem etwas seltsamen Salat in dem MP3 vielleicht auch einen Sinn geben, aber ich beschreib einfach mal, was da zusammenspielt:

MP0 ist quasi eine AR-Hüllkurve. Wobei hierbei der Maximalwert, die Attack-Zeit und die Release-Zeit aus Controllern kommen, an denen ich während dem Spielen ein wenig rumdrehe. Die greifen übrigens alle "live". Wenn ich also für Release 0 habe (constant rate, also ist 0 keine Bewegung), die Taste loslasse, und den dann irgendwann auf 1 dreh, fängt das Ding an, sich zu bewegen. Es sind quasi also alle Werte eines Modulationsprozessors modulierbar. Und dabei können pro Wert sogar bis zu 2 Register rangezogen werden, ich hatte ja mal meinen Kommentar auf englisch gepostet. MP0 steuert den Level der Hauptausgänge der beiden VCOs.

MP1 ist als Oszillator konfiguriert, der in der ersten Phase auf den Wert von MP0 raufgeht, in der zweiten Phase auf den halbierten Wert von MP0 runter geht. Also voll moduliert. Der hängt an den Levels der Suboszillatoren der beiden VCOs. Das ist also das tiefere Zeug, das da rein/rausfadet. Die Geschwindigkeit (bzw. da der auch auf constant rate läuft, die Schrittweite) kommt wieder von einem Controller.

Und jetzt kommt das, was nicht ganz so super rauszuhören ist, nur, wenn man weiß, daß man drauf achten muss...

Da MP1 auf constant rate arbeitet, also nicht mit einer konstanten Zeit, sondern einer konstanten Schrittweiter arbeitet, ist die Frequenz des "LFOs" abhängig vom Zielwert. Das ist der Ausgang von MP0. Hat man einen langen Release, geht der Ausgang von MP0, also der Zielwert von MP1, langsam runter. Bei gleichbleibender Schrittweite bedeutet das, daß weniger Schritte benötigt werden, um den aktuellen Zielwert zu erreichen, damit wird das Ding schneller.

Richtig chaos gibt das dann übrigens mit konstanter Zeit, wenn der Zielwert moduliert ist und "wandert". Da freut sich meine Berechnungsroutine dann und man kann lustige Effekte draus basteln (hatte das ja vor längerer Zeit mal demonstriert).

So. Mit was kann man die Dinger modulieren? Mit allem! Sie bedienen sich aus den berühmten Registern. Und da kann man alles mögliche reinschreiben. Das können die digitalisierten Werte der Modulationsbusleitungen sein, das kann der aktuelle Zählerwert des MIDI-Clock sein, aber auch die Tonhöhe ist da verwendbar. Allerdings ist damit noch kein echtes keyboard tracking möglich, weil die Tonhöhe im Prinzip der Wert für die Steuerspannung ist, und bekanntlich steigt der linear an, während die Frequenz exponentiell ansteigt, 1V/Oktave eben. Aber ich möchte nicht ausschließen, daß man da mit der ganzen Mathematik in Signalrouter und Modulationsprozessoren irgendwas sinnvolles hinbekommt. Man kann ja auch multiplizieren und dividieren. Außerdem werde ich eh irgendwann mal noch die echten Frequenzwerte brauchen, um die CPU-Sync zu implementieren, dann kommen die auch rein.

Zum Thema MIDI-Sync:

Das gibt 2 Controller. Einer ist ein Sync-Zähler, der andere, als netter Gag, die Geschwindigkeit. Ich hielt das spontan für unglaublich wichtig, weil man seinen LFO ja vielleicht nicht nur auf MIDI-Clock synchronisieren will, sondern auch gleich die Geschwindigkeit automatisch setzen will, daß es auch wirklich zum MIDI-Clock passt :)

Das Ding misst also einfach die Zeit zwischen den Clocks und schmeisst die (oder 1/Zeit, um eine Frequenz zu haben) in einen der Systemcontroller, die man überall hinrouten kann, und der Sync-Zähler zählt von 1 bis eingestelltem Wert. Wenn man da z.B. 24 einstellt, ist der Wert zu jeder vollen Note auf 24, kommt beim nächsten Clock wieder auf 1 runter. Sonst hab ich immer alles von 0-irgendwo hin, aber beim Clock hat das den einfachen Hintergrund, daß ich eben die 24 als Maximalwert einstelle, und in der Routingtabelle einfach diesen Controller, dividiert durch 24, an den Trigger eines Modulationsprozessors oder sonstwohin schicke.

Von mir aus kann ich auch den Maximalwert auf 96 setzen, den durch 24 geteilten Wert auf die Wellenformauswahl eines Suboszillators schicken, dann klingt in jedem Beat mein Sound anders :)

Ja. Es wird. Das ganze Wochenende durchprogrammiert. Jetzt brauch ich erstmal wieder ein wenig Pause...

Und mal wieder nen Edit: Die Modulationsprozessoren tun jetzt auch mit konstanter Zeit. Jetzt muß nur noch der "slow mode" rein, um ein Programmschritt auf maximal knapp über 800 Sekunden aufblasen zu können.

Schön übrigens - endlich weiß man mal, was man einstellt - bei constant time ist die eingefütterte Zeit exakt in Millisekunden, im Slow mode dann 1/10 Sekunden. Und wenn man die Zeit aus nem Register zieht, sind selbst im Fast Mode Zeiten bis knapp über eine Minute drin. Mit Milisekundenauflösung. Und mit meiner Testconfig von vorhin kommen ganz fiese Töne raus, wenn man den subosc-VCA mit dem MP mit Zeiten von wenigen ms moduliert. "FM war gestern". Bin aber zu faul, das jetzt aufzunehmen.

Haja, komm. Weil Sonntag ist. Und mich der Sound am Anfang grad inspiriert hatte :)



Nochmal zur Klarheit - das sind nur 2 VCOs, die auch Sync können, und ein wenig Software. Mehr nicht. Nichtmal die analogen Modulationen sind schon drin.

Ich glaub, es ist ne gute Idee, von dem Ding auch ne stark gestrippte Kleinversion in Monophon rauszubringen, wenn ich so höre, was die Software-Modulationen schon so alles hergeben. Und nichtmal die sind bisher wirklich intensiv genutzt. Das sind grad mal 2 Modulationsprozessoren - von 24, die man zur Verfügung hat.
 
Uff. Endlich geschafft. War zwar vor ner Stunde schon wieder dem Fluchen nahe, aber dann wars doch nur ein total depperter Fehler :)

-rw-r--r-- 1 michael michael 278 May 30 21:35 MiK-TestPatch.syx

Der erste "Patch" für das Konstrukt.

4 MIDI-Messages sind da drin, eine Controller Map, eine Routingtabelle und 2 Modulationsprogramme. Quasi genau das, was beim letzten Sound-Demo so drin war. Nur jetzt nicht mehr hardcoded, ich kann jetzt endlich die ganze Konfiguration on-the-fly verändern. Gut, im Moment noch mehr oder weniger mit dem Hexeditor (bzw. der Assembler und ner Kiste voll Defines), aber es geht jetzt ohne permanentes Umflashen.

Das ist übrigens ein Patch für ein Voice Board. Ein Patch für den gesamten Synth beinhaltet dann mehrere dieser Dinger. Und die Größe ist volldynamisch. Das hier ist jetzt ein sehr kleiner mit ca. 23 Routingeinträgen und 12 Controllern, die Limits sind ja (je nachdem, wie ich dann mit den satten 4KB RAM den ATmega644 hinkomme) bei 64 Controllern und 128 Routingeinträgen. Und ich glaub, die braucht man auch wirklich. Der Größte Faktor sind aber die Modulationsprogramme, die können ja bis zu 64 Bytes lang werden pro Stück, und 24 gehen rein. Dazu noch bissl Verwaltungskram, 8-7bit Wandlung und so Zeug, dann kann Son Voice Board schon mal an die 3KB Daten in Besitz nehmen, um abgedreht zu klingen. Und ganz abgedreht wirds dann mit einem Patch über 8 Voice Boards :)

Next Steps: Breadboard wieder rausholen. Filter bauen. Die Ringmodulatoren sind auch schon geplant - AD633, das ist ein Präzisions-4Quadranten-Multiplizierer. Von den MC1496 bin ich weg, die sind halt nur 2Quadranten. Wenn schon, dann richtig. Dann noch Noise, Ext in, Sample&Hold, und schwupps, ist das Ding schon fast fertig :)

Vielleicht drohe ich fürs nächste Wochenende schonmal weitere Sound-Demos an :)
 
herrlich, ich bin hier gerade am filterbankgefrickel, und bin erstaunt was aus den spectralis alles so raus kommt,... juchhuh..... ich weiss das gehört hier nicht hin aber es musste mal gerade sein,....
weil es so gut zu deiner erklärung passt,.... ich bin schon sehr gespannt auf die nächsten sounddemos von dir, freut mich das du nach deinen kurzen schwächeeinbruch mit einmal so gut voran kommst,...... :P

immer weiter so,.....
 
Ja, wenn immer wieder mal Töne rauskommen, dann motiviert das, dann funktioniert das mit dem Programmieren. Wenn das Ding Stumm ist und man genau 2 LEDs hat, um sein Zeug zu debuggen, dann wirds schnell unangenehm. Und die Emulatoren für die AVRs, dies da so gibt, bringen mir nicht wirklich viel, weil ich 4 so Dinger vernetzt hab, und ohne die Vernetzung bringt eine Emulation garnix. Außerdem hab ich kein Wintendo :)

Naja, die Firmware ist im Moment noch ne große Kiste Bugs und Hacks, da muß auf jeden Fall mal noch ein Cleanup ran, diverse kleinere Features müssen auch noch rein, aber die Chancen stehen gut, daß die komplette Engine ne Entwicklungszeit von nur nem halben Jahr frisst, und das ist nur nach Feierabend und an Wochenenden. Und dafür, daß das eigentlich mein erstes Elektronikprojekt analoger Natur ist, und ich auch seit 15 Jahren nix mehr mit Digitalelektronik gemacht hab, ist das glaub ganz okay.

Mal was für die Statistik:

Die Firmware-Quellcodes umfassen mittlerweile 280KB und sind schon knapp über 10000 Zeilen lang. Und C hab ich da weitgehend abgeschafft, fast alles Assembler.

Anyway, ich bin insofern übern Berg, daß der einzige Teil, der wirklich massiv Frust aufkommen lässt, überstanden ist, jetzt gibts ne Weile erstmal nur noch kontrollierte Fleissarbeit (Löten) und interessantes Forschen aufm Steckbrett.
 


News

Zurück
Oben