@ Herwig
Hi Herwig
@Eventmanager
Ui ui ui, ....Holzpfad.....
Also, das ist so: wie Herwig eben schon gesagt hat, ist die CPU Belastung, auch wenn die Berechnung im GUI Thread stattfindet, auf deiner CPU vorhanden.
REAKTOR teilt sich in einige Threads auf deiner CPU auf, wobei aber für uns nur der GUI Thread und der AUDIO Thread wichtig sind. Diese Threads können, gesteuert durch das OS, denke ich, auch auf verschiedenen CPU-Cores deines Rechners laufen.
Anscheinend wird in der CPU Anzeige deiner DAW der GUI Thread (auch) nicht berücksichtigt.
Reaktor Audio-Verbindungen werden IMMMER im Audio Thread berechnet.
CR.C, LFOs, SR.C laufen im Audio Thread (also immer auch deren Child-events).
Reaktor Events können im GUI oder im Audio Thread auftreten. Das hängt von ihrem Ursprung ab. Das wird an anderen Stellen oft genug erklärt.
Ursprünglich war die Idee von Stephan Schmitt wohl diese, dass die Timing-kritischen Berechnungen in einem eigenen Thread, also dem Audio Thread berechnet werden sollen und alle nicht kritischen Berechnungen (also die GUI-Ausgabe) in einem anderen, eigenen Thread. Das Ganze hinkt nun allerdings etwas, da Eingangsevents abhängig von ihrem Ursprung gethreaded werden. Beispiel: Note-In per Computertastatur -> GUI, Note-In per Midi -> Audio. Gleiches gilt auch für Controllereingaben: Maus -> GUI, MIDID IN -> Audio. Die Child-Events davon können nun allerdings wichtig für die Audioberechnung oder eben auch, oder nur, für GUI sein.
GUI-only relevante, heftige Iterationen (z.B. über Tables) sollten von dir aktiv über den GUI Thread getriggert werden (Verschiebung in GUI Thread per Display Clock + Smart Value / 25Hz max). Zu diesem Thema hat NI ja auch neulich (R6.1?) die GUI Core Cell eingeführt. Das hat aber eigentlich einen ganz anderen Hintergrund.
Problematisch mit diesen zwei Threads wird es, wenn diese auf Reaktorverkabelungen gemischt werden. Im Partial Framework von Max Zagler gibt es dazu ein sehr gutes PDF was sich mit dieser Problematik beschäftigt. Ich häng das mal an und kann es dir als Basis Lektüre über die Threads nur ans Herz legen.
Ich denke nicht, dass es nötig ist, nur um unvollständige CPU-Anzeigen zu entlasten, deine Berechnungen zwangsweise in den GUI Thread zu verlegen. Wenn es sich um GUI-only relevante Daten handelt, dann, ja, ab in den GUI Thread damit.
Was war noch?
ach ja:
"Irgendwie ulkig das reines Event-Handling dann doch scheinbar irgendwo in SR stattfindet und ein Dclk dahinter das "rausfiltert". Ich habe keine andere Erklärung für dieses Mysterium: Im gesamten Test-ENsemble habe ich keinen einzigen "schwarzen" Port!"
Aaalso:
Primary Events sind NIE synchron oder simultan zu irgendetwas anderem!
D.h. Primary Events sind immer asynchron zur Sample Clock und non-simultan zueinander! Du kannst sie per Definition nicht synchronisieren (zu was auch immer).
Ausnahme davon ist die Initialisierung, wo tatsächlich alle Event-Linien immer simultan arbeiten, bzw alle Event Sources simultan feuern. Das muss man im Hinterkopf behalten..
Audio Linien sind immer synchron zur Clock (klaro) und simultan zueinander (was aber eigentlich gar keine praktische Rolle spielt).