Erste Schritte in Core: Zähler-Makro

Fragen und Antworten, Beispiele

Moderator: herw

128bpm
synthesist
Beiträge: 58
Registriert: 26. Februar 2018, 12:23

Erste Schritte in Core: Zähler-Makro

Beitrag von 128bpm »

Hi,

ich wollte hier mal meinen eigenen Zähler vorstellen. Wer mag, kann mal drüber schauen und Anregungen zur Implementierung geben :)

Derzeit beherrscht er nur die Addition. Er nutzt intern eine Feedback-Schleife. Diesem Bereich habe ich mich in der Anleitung zwar noch nicht gewidmet, aber es scheint alles fehlerfrei zu funktionieren :)


Der Aufbau ist sehr übersichtlich. Die Quick-Busse gefallen mir sehr gut. Das ist ein ganz anderes arbeiten als auf der Primary-Ebene, wo überall Kabel umherfliegen. Auch die Möglichkeit Core-Makros mit eigenen Bildern zu versehen wird von mir gerne genutzt. Zwanzig Prozent meiner Zeit verbringe ich derzeit in GIMP um mir meine eigenen Grafiken zu erstellen. Diese entsprechen zwar keiner Norm, aber mir helfen sie sehr dabei einen schnellen, guten Überblick zu bekommen.
Zähler Addition_Max_V1.00.png
Zähler Addition_Max_V1.00.zip
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
128bpm
synthesist
Beiträge: 58
Registriert: 26. Februar 2018, 12:23

Re: Erste Schritte in Core: Zähler-Makro

Beitrag von 128bpm »

Hier noch die Beschreibung, hab ich ganz vergessen :roll:

Dieser Zähler fügt immer dann den Wert 1 zu dem Wert in seinem Speicher hinzu, wenn ein am mittleren Eingang eintreffendes Event größer als 0 ist.

Über den oberen Reset-Eingang lässt sich der Zähler auf Null zurück setzen. Zum triggern werden nur Events berücksichtigt welche größer als 0 sind.

Über den unten liegenden Maximal-Wert-Eingang wird bestimmt ab welchem Wert der Zähler zurück auf 1 springen soll. Ist der Eingang nicht verbunden so liegt der Wert 10^9 an.

Der obere Ausgang gibt den Zählerwert aus. Der untere Ausgang gibt den Wert 1 aus, wenn der Zähler den Maximalwert überschritten hat und somit zurück auf 1 springt, ansonsten liegt ein nicht verbundener Ausgang eines Routers an.

Über den unteren Ausgang kann man bspw. weitere Zähler ansteuern.
128bpm
synthesist
Beiträge: 58
Registriert: 26. Februar 2018, 12:23

Re: Erste Schritte in Core: Zähler-Makro

Beitrag von 128bpm »

Oh je... die Struktur ist doch noch ganz schön verbuggt :mrgreen:

Ich arbeite daran und jetzt wird endlich auch mal ACEW ausgiebig getestet. Dieses kleine Tool ist wirklich eine Bereicherung!

Sobald der Zähler bugfrei ist lade ich ihn nochmal hoch.
Benutzeravatar
herw
moderator
Beiträge: 3122
Registriert: 13. März 2006, 18:28
Wohnort: Dortmund

Re: Erste Schritte in Core: Zähler-Makro

Beitrag von herw »

128bpm hat geschrieben:Oh je... die Struktur ist doch noch ganz schön verbuggt :mrgreen:

Ich arbeite daran und jetzt wird endlich auch mal ACEW ausgiebig getestet. Dieses kleine Tool ist wirklich eine Bereicherung!

Sobald der Zähler bugfrei ist lade ich ihn nochmal hoch.
Ich habe deine Lösung in ein anderes Unterforum Module und Makros (core) verschoben; wenn deine Lösung fehlerfrei und allgemeingültig ist, dann kannst du dein Makro in die Fundgrube neu hochladen.
128bpm
synthesist
Beiträge: 58
Registriert: 26. Februar 2018, 12:23

Re: Erste Schritte in Core: Zähler-Makro

Beitrag von 128bpm »

Ok. Mittlerweile habe ich auch alle Bugs beseitig. Die Schaltung funktioniert nun astrein :)

Ich werde die neue Version später hoch laden. Jetzt brauche ich aber erst einmal eine Pause ::kaffee::
Benutzeravatar
herw
moderator
Beiträge: 3122
Registriert: 13. März 2006, 18:28
Wohnort: Dortmund

Re: Erste Schritte in Core: Zähler-Makro

Beitrag von herw »

128bpm hat geschrieben:Ok. Mittlerweile habe ich auch alle Bugs beseitig. Die Schaltung funktioniert nun astrein :)

Ich werde die neue Version später hoch laden. Jetzt brauche ich aber erst einmal eine Pause ::kaffee::
Bevor du das Rad neu erfindest, schaue in die R6- und R5-Library hinein.
128bpm
synthesist
Beiträge: 58
Registriert: 26. Februar 2018, 12:23

Re: Erste Schritte in Core: Zähler-Makro

Beitrag von 128bpm »

herw hat geschrieben:
128bpm hat geschrieben:Ok. Mittlerweile habe ich auch alle Bugs beseitig. Die Schaltung funktioniert nun astrein :)

Ich werde die neue Version später hoch laden. Jetzt brauche ich aber erst einmal eine Pause ::kaffee::
Bevor du das Rad neu erfindest, schaue in die R6- und R5-Library hinein.
Das Rad will ich natürlich nicht neu erfinden, ich sehe das aktuell eher als Übung an.

Allein durch die Bugs dieser Schaltung habe ich einiges gelernt 8 )


Hier ist nun die bugfreie Version und noch einmal die finale Beschreibung:

Dieser Zähler fügt immer dann den Wert 1 zu dem Wert in seinem Speicher hinzu, wenn ein am mittleren Eingang eintreffendes Event größer als 0 ist.

Über den oberen Reset-Eingang lässt sich der Zähler auf Null zurück setzen. Zum triggern werden nur Events berücksichtig welche größer als 0 sind.

Über den unten liegenden Maximal-Wert-Eingang wird bestimmt ab welchem Wert der Zähler zurück auf 1 springen soll. Ist der Eingang nicht verbunden so liegt der Wert 10^9 an.

Der obere Ausgang gibt den Zählerwert aus. Der untere Ausgang gibt den Wert 1 aus, wenn der Zähler gleich 1 ist, ansonten liegt ein nicht verbundener Ausgang eines Routers an.

Über den unteren Ausgang kann man bspw. weitere Zähler ansteuern.
Zähler Addition_Max_V1.02.png
Zähler Addition_Max_V1.02.zip
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
Quietschboy
synth doctor
Beiträge: 218
Registriert: 6. April 2011, 20:31
Wohnort: Wiesbaden

Re: Erste Schritte in Core: Zähler-Makro

Beitrag von Quietschboy »

Ich mag zwar Orange, allerdings nicht als Linienfarbe in Core ;-)
Spätestens, wenn du mit Eventrate (z.B. aus einer Primary-Iteration) den Schwellwert "max" erreichst und überschreitest, dürftest du ein Problem haben.
Ich geb dir noch nen Kaffee aus.
::kaffee::
Benutzeravatar
herw
moderator
Beiträge: 3122
Registriert: 13. März 2006, 18:28
Wohnort: Dortmund

Re: Erste Schritte in Core: Zähler-Makro

Beitrag von herw »

Quietschboy hat geschrieben:Ich mag zwar Orange, allerdings nicht als Linienfarbe in Core ;-)
Spätestens, wenn du mit Eventrate (z.B. aus einer Primary-Iteration) den Schwellwert "max" erreichst und überschreitest, dürftest du ein Problem haben.
Ich geb dir noch nen Kaffee aus.
::kaffee::
Genau das ist auch mein Argwohn. Eine Feedback-Schleife, die nicht gänzlich unter Kontrolle des Entwicklers steht:
Bild 1 v1.02.png
Deine Lösung hat ein Problem mit Initialisierungen, was für einen Neueinsteiger ein richtiges Kreuz ist.
Ich rate dringend, sich die Initialisierungstabelle von Mark herunter zu laden und genau anzuschauen. Man muss wirklich mal alle Eventualitäten durchtesten.

Es gibt hier im Wesentlichen zwei wichtige Initialisierungen:
  • hard init
    er tritt z.B. beim Starten des Programm und beim Betätigen des Reaktor Hauptschalter (rechts oben in der Menuleiste) auf.
  • soft init
    tritt z.B. bei einem primary switch auf.
Hard init lässt sich in core durch eine Konstante erzeugen. Soft init dagegen muss von der primary-Ebene durch eien primary-Konstante in die Core-Ebene übertragen werden.
Erst wenn beide erkannt werden lassen sich Fehlinterpreationen durch die core Struktur unterdrücken.
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
128bpm
synthesist
Beiträge: 58
Registriert: 26. Februar 2018, 12:23

Re: Erste Schritte in Core: Zähler-Makro

Beitrag von 128bpm »

Ok, danke fürs drüber schauen!

Ich werde die Struktur nochmals prüfen. Wer hätte gedacht, dass solch eine kleine Aufgabenstellung derart kompliziert werden kann?

Trotzdem bin ich mit den derzeitigen Ergebnissen schon ganz zufrieden, immerhin beschäftige ich mich mit Reaktor-Strukturen erst seit zwei Monaten. Der Einstig ist wirklich nicht leicht, aber es ist ja auch noch kein Meister vom Himmel gefallen 8 )
herw hat geschrieben: Ich rate dringend, sich die Initialisierungstabelle von Mark herunter zu laden und genau anzuschauen. Man muss wirklich mal alle Eventualitäten durchtesten.
Ja, danke. Die Tabelle habe ich mir vorhin schon runter geladen.
Benutzeravatar
herw
moderator
Beiträge: 3122
Registriert: 13. März 2006, 18:28
Wohnort: Dortmund

Re: Erste Schritte in Core: Zähler-Makro

Beitrag von herw »

Initialisierungen sind bei allgemeinen Lösungen wie in deinem Fall unbedingt zu beachten, sonst kann man sie nicht universell benutzen.
Ich habe mal ein kleines Testensemble (kommt am Ende einer Ausführungen) gebaut, mit dem man die wichtigsten Fälle vergleichen kann:
  • Überblick (die Bilddarstellung aufklappen!)
    Bild 2.png
    Ich untersuche zunächst single events, die in diesem Fall durch Midi/NotePitch erzeugt werden. Ich drücke mehrfach die Taste Q auf der Computertastatur.
    Die Zeilen 1 und 2 geben 128bpms Lösung aus, die Zählevents und den Reset, die Zeilen 3 und 4 die entsprechenden Ausgänge aus meinem core-Makro.
    Mit dem Trigger Button set wird der Zähler auf 0 zurückgesetzt, mit dem Switch kann man einen soft init auslösen. Die Triggertaste Iteration löst eine Iteration von 1 bis 7 aus. Der Zähler soll bis 4 zählen und sich selbst beim Überschreiten resetten. Die Iteration ist im Bild nicht angeschlossen.
    Da es sich um isolierte Events mit großem zeitlichen Abstand handelt kann ich hier im ACEW die Shrink-Taste aktivieren gleichzeitige (im Sinne von „im selben Sampletick”) events werden dann in derselben Spalte dargestellt. Das muss man zum Verständnis bei der Iteration deaktivieren.
  • Start des Programms : hard init
    Nach dem Programmstart drücke ich mehrfach die Taste Q (Midi/NotePitch = 60) auf dem Keyboard. In der 5. Zeile werden alle ausgegebenen Events dargestellt. Wir erkenne unmittelbar, dass beide Strukturen den hardInit-Event unterdrücken.
    Betätigt man allerdings nun die Taste Q mehrfach, so hinkt die 128bpm-Struktur hinterher. Die Umschaltung bei Überschreiten von Maximalwert 4 funktioniert aber richtig.
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
Benutzeravatar
herw
moderator
Beiträge: 3122
Registriert: 13. März 2006, 18:28
Wohnort: Dortmund

Re: Erste Schritte in Core: Zähler-Makro

Beitrag von herw »

  • reset des Zählers
    Bild 3.png
    Nach dreimaligem Drücken der Taste Q habe ich den Reset-Trigger ausgelöst, der Zähler wurde zurückgesetzt. Wir sehen, dass in der ersten Zeile bei Entry 15 der Wert 0 ausgegeben wird. Das sollte nicht sein. Danach arbeiten aber beiden Zähle-Varianten gleich und richtig, wenn man davon absieht, dass in der oberen Variante beim rst-Ausgang noch Nullen ausgegeben werde (Absicht?)
  • soft init
    Ich betätige den switch und löse von primary ausgehend einen soft init aus:
    Bild 4.png
    Auch hier wird in der ersten Variante der Wert 0 ausgegeben. Danach arbeiten beide wie oben.
Wir halten fest, dass die erste Variante nicht stabil gegenüber Initialisierungen ist. Man ist quasi gezwungen, ein Soft Init vor Beginn auszulösen.
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
Benutzeravatar
herw
moderator
Beiträge: 3122
Registriert: 13. März 2006, 18:28
Wohnort: Dortmund

Re: Erste Schritte in Core: Zähler-Makro

Beitrag von herw »

Wie Mark es oben schon angedeutet hat, gibt eine Iteration massive Probleme.
Daher ändere ich nun die Struktur, indem ich auf den Event-Eingang eine Iteration gebe (Iteration von 1 bis 7):
Bild 5.png
Wir sehen, dass die erste Variante massive Schwierigkeiten hat dadurch, dass der Hard Init nicht unterdrückt werden kann. Alle Werte werden ohne Rücksetzen weiter gegeben. Auch die Originaliteration (Zeile 6) beginnt nicht beim Startwert 1 sondern 0 und gibt auch nur 6 Werte aus. D.h. man ist gezwungen, den Hard Init zu unterdrücken. Die zweite Variante leistet dies.
Damit wir das Verhalten genauer untersuchen können, schalte ich die Zeilen 3 und 4 aus und dekativiere den Taster Shrink. Damit können wir auch die Reihenflge der Verarbeitung innerhalb eines Sampleticks beobachten, ohne die Übersicht zu verlieren.
Bild 6.png
Wir sehen jetzt sehr schön, wie innerhalb des Sampleticks 0, also beim hard init, die Werte an den ACEW, also Primary übergeben werden.

Ich setze den Zähler (Entry 10 wird leider wieder ausgegeben) zurück und löse nun eine weiter Iteration durch den Trigger rechts aus:
Bild 7.png
Nun werden zwar die Anzahl der eintreffenden Events richtig gezählt, es fehlt aber das automatische resetten nach dem Zählerstand 4.

Die zweite variante unterdrückt den Hard Init komplett und gibt nur wie gewünscht sieben Werte aus mit dem wrap beim Wert 4.
Bild 8.png
Je nachdem, ob man den Zähler zurücksetzt oder nicht, zählt diese version brav von vorne oder einfach weiter.
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
Benutzeravatar
herw
moderator
Beiträge: 3122
Registriert: 13. März 2006, 18:28
Wohnort: Dortmund

Re: Erste Schritte in Core: Zähler-Makro

Beitrag von herw »

nun noch der Soft Init:
Bild 9.png
Durch die falsche Initialisierung des Zählers beginnt dieser wiederum bei 0, gibt allerdings wiederum nur sechs Werte aus, auch ohne zu wrappen.
D.h. die Struktur funktioniert überhaupt nicht.

Variante 2 hat keine Schwierigkeiten. Lediglich der Zähler wird beim Soft Init zurückgesetzt, was aber wohl auch meistens erwünscht sein wird.
Bild 10.png
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
Benutzeravatar
herw
moderator
Beiträge: 3122
Registriert: 13. März 2006, 18:28
Wohnort: Dortmund

Re: Erste Schritte in Core: Zähler-Makro

Beitrag von herw »

Was ist des Rätsels Lösung: Nun die Initialisierungen werden durch ein kleines Makro unterdrückt.
Die zweite Variante sieht überraschend einfach aus.
Ich habe einen counter aus der R5-core-Library etwas abgewandelt (Ergänzung eines wrappers).
Bild 11.png
Entscheidend für das Funktionieren dieses Zählers ist aber das Beherrschen der Initialisierungen.
Bild 12.png
Mein Dank gilt Dietrich Pank, einem Mitglied des REAKTOR-Teams, dass er uns dieses Makro zur Verfügung gestellt hat. Man vergleiche mit der Tabelle von Mark.

Ich werde ein entsprechendes Ensemble, das die einzelnen Initialisierungen vorführt, in der Fundgrube hoch laden.

Und hier nun mein Testensemble; viel Spaß beim Ausprobieren:
Zähler Addition_Max_V1.02(herw) .ens.zip
Damit es keine Verwechslungen mit dem No-Init-Makro aus der REAKTOR-core-Library gibt, hier das Makro von Dietrich Pank:
Bild 13.png
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
Antworten