Hallo Reaktor´en,
Worin besteht der Hauptunterschied zw. primary-macro und core-macro, bei gleicher Funktion.
Sound?
Rechengeschwindigkeit/Latenz?
CPU-Last?
Bin da aus der BA nicht wirklich schlau geworden.
Unterschied PRIMARY zu CORE
Moderator: herw
- saXist
- synthesist
- Beiträge: 83
- Registriert: 6. November 2007, 21:21
- Wohnort: kÖln
- Kontaktdaten:
Unterschied PRIMARY zu CORE
... DER saXist
- herw
- moderator
- Beiträge: 3123
- Registriert: 13. März 2006, 18:28
- Wohnort: Dortmund
Re: Unterschied PRIMARY zu CORE
meistens sind die Core-Module qualitätsmäßig viel besser; zum Beispiel die Oszillatoren haben einen raffinierten und deutlich hörbaren antialaising-Algorithmus. Allerdings kostet das CPU-Verbrauch. Generell sind Core-Macros noch eine Ebene näher an der Maschine. Core-Macros verhalten sich dann auf primary-Ebene wie die vorgegebenen primary-Module. Core hat keine Möglichkeit auf das Panel zuzugreifen, d.h aller optischer Schnickschnack wie Regler, Fader, Buttons, also alles was auf der Bedienoberflöche sichtbar werden kann, ist Sache der Primary-Module.saXist hat geschrieben:Hallo Reaktor´en,
Worin besteht der Hauptunterschied zw. primary-macro und core-macro, bei gleicher Funktion.
Sound?
Rechengeschwindigkeit/Latenz?
CPU-Last?
Bin da aus der BA nicht wirklich schlau geworden.
Leider ist REAKTOR noch nicht soweit entwickelt, dass man eine strickte Trennung vornimmt, also zum Beispiel in der Art, dass man alle Rechnungen der Core-Ebene überlässt und die Panelelemente den reinen Primary-Modulen.
Ein wichtiger Unterschied, der dich schnell zur Verzweiflung bringen wird, ist die Gleichzeitigkeit. Im primary gibt es keine Gleichzeitigkeit, dagegen in core doch. D.h. die normale Denkweise einer mathematischen Operation zum Beispiel findet ihren Widerpart nur auf Core-Ebene.
Ein einfaches Beispiel: gelangen zwei Zahlen "gleichzeitig" an ein Additionsmodul, so verareitet primary zuerst einen Summand (und gibt ein falsches Ergebnis heraus mit dem noch nicht aktualisierten zweiten Summand) und addiert anschließend erst den zweiten aktualisierten Summand. Eine Addition ergibt also unter Umsänden zwei neue Events. In Core dagegen hat man es wirklich logisch mit Gleichzeitigkeit zu tun: zwei Summanden werden hier addiert und es wird nur ein Ergenis ausgegeben.
Zuletzt geändert von herw am 11. November 2007, 19:20, insgesamt 1-mal geändert.
- saXist
- synthesist
- Beiträge: 83
- Registriert: 6. November 2007, 21:21
- Wohnort: kÖln
- Kontaktdaten:
dank herw - gut verstanden!
Core ist die aktuellste Version, geht in der Rechen- und Bearbeitungsebene tiefer, genauer, schneller, verbraucht aber auf Grund der pos. Eigenschaften mehr CPU!
Der Hinweis auf mögliche, ungenaue Logik+Rechenoperationen durch das fehlenden Praralellprozessing in Primary-Modulen könnte das ein oder andere Fehlergebniss begründen.
Core ist die aktuellste Version, geht in der Rechen- und Bearbeitungsebene tiefer, genauer, schneller, verbraucht aber auf Grund der pos. Eigenschaften mehr CPU!
Der Hinweis auf mögliche, ungenaue Logik+Rechenoperationen durch das fehlenden Praralellprozessing in Primary-Modulen könnte das ein oder andere Fehlergebniss begründen.
... DER saXist
- herw
- moderator
- Beiträge: 3123
- Registriert: 13. März 2006, 18:28
- Wohnort: Dortmund
Gleichzeitigkeit
Ich greife das Thema nochmals auf und möchte an einem ganz simplen Beispiel die unterschiedliche Eventverarbeitung in primary und core erläutern:saXist hat geschrieben:dank herw - gut verstanden!
Core ist die aktuellste Version, geht in der Rechen- und Bearbeitungsebene tiefer, genauer, schneller, verbraucht aber auf Grund der pos. Eigenschaften mehr CPU!
Der Hinweis auf mögliche, ungenaue Logik+Rechenoperationen durch das fehlenden Praralellprozessing in Primary-Modulen könnte das ein oder andere Fehlergebniss begründen.
Das Ensemble besteht nur aus einem Regler, dessen Werte quadriert werden. Der Eventwatcher gibt die einzelnen Events aus. Sieht ganz harmlos aus. Wir erwarten,nachdem der Regler auf 0 steht, die Ausgabewerte 1, 4, 9,16,25,usw. !
Doch weit gefehlt! 0, 1, 2, 4, 6, 9, 12, 16, 20, usw. .
Der Regler wurde von mir auf 0 gestellt und der Eventwatcher zurückgesetzt. Alle PrimaryLevel-Module verarbeiten ihre Eingangswerte niemals gleichzeitig, sondern speichern die anliegenden Werte intern ab. Bei jedem Eintreffen eines Events (auch von derselben Quelle!) wird ein zusätzlicher Wert ausgegeben; in diesem Beispiel die zuvor berechnete Quadratzahl plus (!???) dem neu eingestellten Wert. Würde man in der weiteren Verarbeitung zum Beispiel die ausgegeben Events zählen, käme man schon völlig durcheinander, ganz zu schweigen, dass eine Auswertung der Events durch Router völlig chaotisch ist.
Nun drei Lösungen in Core (schließe das zweite Makro core Version 1 an den Eventwatcher):
Hier ist der Inhalt der CoreCell: Wie erwartet (??) erhalten wir denselben Ablauf. Wo ist da die Gleichzeitigkeit? Nun wir haben nicht beachtet, dass die CoreCell ja vom Primary-Level gefüttert wird. Dort gibt es keine Gleichzeitigkeit, also muss die CoreCell wie das PrimaryLevel Makro reagieren. Sie erhält die Eingangswerte nacheinander!
Was bedeutet nun Gleichzeitigkeit? Die CoreCell darf ihre Operation nur durchführen, wenn innerhalb der CoreCell auch gleichzeitige Events vorliegen. Da hilft uns das Latch-Modul. (schließe das zweite Makro core Version 2 an den Eventwatcher). Das Latchmodul ist ein Zwischenspeicher, dass erst gezielt durch einen Event seinen Wert ausgibt, in diesem Fall mit Hilfe des unteren Eingangs. Der obere Eingangswert „wartet” auf den unteren, der dann gleichzeitig (wie man denkt!!!) an die Multiplikation übergeben wird. Bei verschiedenen Eventquellen muss man dies beachten. Für dieses spezielle Beipiel gibt es eine noch einfachere Lösung.
Nun schließen wir das vierte Makro core Version 3 an. Wir übernehmen aus dem PrimaryLevel nur den Reglerwert und überlassen allein der CoreCell die Berechnung. Da die CoreCell nur einen Event erhält, ist dieser (natürlich) zu sich selbst gleichzeitig. Somit kann die Multiplikation - mit unserem Denken übereinstimmend - auch genau so durchgeführt werden. Wir erhalten nur die erwarteten quadrierten Werte.
Wer noch mehr staunen will, kann dasselbe Beispiel mal für das „Kubieren” x^3 durchführen. Vielleicht findet ihr auch heraus mit welchem System das PrimaryLevel Zwischenwerte ausgibt.
Meine Empfehlung: auch wenn man nicht gerne gänzlich zur Core-Ebene überwechseln will, so sollte man doch wenigstens die Eventverarbeitung den CoreCells überlassen. Die Konstruktion der Struktur ist fast der primary-Ebene entsprechend. Lediglich Latch-Module müssen eventuell hinzugefügt werden.
Nicht erwähnt habe ich noch, dass die Reihenfolge, mit der die Primary-Ebene Werte an Makros oder Rechenoperationen übergibt zudem noch davon abhängt, in welcher Reihenfolge die Wires gelegt wurden !?!
ciao herw
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.