fweth hat geschrieben:[...]
ich habe jetzt aus elementen von dem saw LFO und dem eventcouter aus der core ebene zwei eigene module gebastelt. das eine funktioniert einfach als ganzzahliger oszillator, so wie du gemeint hast, und das andere als zähler (jedes mal wenn das eingangssignal 0 überschreitet, wird ein wert weitergezählt). ich bin jetzt echt ein wenig warm geworden mit core cells
auch wenn ich noch viel recycle von anderen modulen, aber funktionieren tuts allerdings. nur weiß ich nicht, ob ich irgendwas unnötig verkompliziert habe, oder ob das schon schick ist so.
der ganzzahlige oszillator:
ich würde an den Eingängen noch entscheiden, ob es sich um event- oder wirklich audio-Signale handelt: z.B der reset-Befehl oder die Frequenz des Clockgenerators werden sicherlich von Reglern oder Midisignalen gesteuert, also Eventsignalen. Durch das Umstellen auf
Eventeingänge kannst Du eine Menge an CPU sparen.
jetzt sind mir nur zwei eher allgemeinere core-fragen übriggeblieben:
1. wie kann ich zwei vergleichsoperatoren am einfachsten logisch verknüpfen, so quasi nur wenn der wert größer ist als 1 UND kleiner ist als 2, soll 1 ausgegeben werden, sonst 0. oder nur wenn der wert unter 1 ODER über 2 liegt soll 1 ausgegeben werden. ich könnte das mit ein paar relays hintereinander und diesen logischen bit mudulen lösen, aber das lässt sich doch sicher einfacher machen, und sogar in eine art relayfunktion integrieren, wo man die werte für wahr oder falsch über 2 eingänge festlegen kann.
Das ist die so genannte
Pulse-Funktion, wenn man auf alle Eventualitäten vorbereitet sein will, dann ist dies nicht ganz so einfach. Du findest die Funktion unter anderen in der user library:
FUNCTIONS (core) v1.0
2. was ist in core ein unitdelay? ist das dieses macro, das sich auch in dem Dup Flt modul befindet?
nein,
Dup Flt filtert, wie der Name schon sagt, gleiche Zahlenwerte die direkt hintereinander folgen aus, gibt sie also nur einmal aus. Das Unit-Delay auf primary entspricht dem Modul
Z^-1. Das ist nichts anderes als ein
Lese-Schreib-Speicher. Bei jedem Sample-Clock liest es zunächst den aktuellen Speicherwert aus und überschreibt dann diesen mit dem neuen Wert. D.h. bei jedem Clock wird der vorangegangene Wert ausgegeben und dann erst der neue gespeichert. Der Ausgang hinkt also immer ein Sample hinter dem aktuellen her. Genau das macht auch das
untidelay auf primary-Ebene.
Im oben erwähnten Oszillator wird der Speicher ähnlich benutzt: es wird zunächst der alte Speicherwert ausgelesen, dann ein neuer Wert durch den Stufenwert erzeugt und dann abgespeichert; allerdings wird der aktuelle Wert sofort ausgegeben. Würde man vor der Addition des Stufenwertes den Speicherwert ausgegeben, dann hätte man auch einen um ein Sample "nachhinkenden" Oszillator.
und außerdem: wie kann ich jetzt, wo ich den grundstein zu einer art stepsequencer gelegt habe, die positionsinformation, die meine module ja quasi ausgeben, mit den eigentlichen (noten)werten verknüpfen? sicherlich ginge das mit einer reihe Compare/Equal abfragen so zB. wenn der pos-wert gleich dem wert 3 ist, dann wird 1 ausgegeben, wenn der pos-wert gleich dem wert 4 ist, dann wird 0 ausgegeben usw., aber ist das die einfachste möglichkeit?
danke
Damit kann ich jetzt im Moment nicht viel anfangen, da mir die Wertezuordnung nicht ganz einsichtig erscheint: nur soviel, wenn es um eine nicht berechenbare Wertetabelle handelt, dann kannst Du ja eine event-Table nehmen. Aber ich ahne, dass das nicht dein Ziel ist, da die Werte sicherlich veränderlich sein sollen.
Da muss man schon etwas mehr Informationen haben.
Ich finde es übrigens toll, dass du dich in diese Sache so hinein beißt. Genau so lernt man REAKTOR!
ciao herw