0% found this document useful (0 votes)
60 views

Reaktor 5 Mode - New Initialization Algorithm: First Step - Sort Modules

This document describes a new initialization scheme introduced in Reaktor 5. It sorts modules from sinks leftward and processes them in the following steps: 1) sort modules and initialize implicit constants, 2) process init-functions, 3) process eventloops, 4) process order modules, 5) process iteration modules, and 6) process snapvaluearray modules. Special cases are described for different module types.

Uploaded by

Ivan Shterleman
Copyright
© © All Rights Reserved
Available Formats
Download as RTF, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
60 views

Reaktor 5 Mode - New Initialization Algorithm: First Step - Sort Modules

This document describes a new initialization scheme introduced in Reaktor 5. It sorts modules from sinks leftward and processes them in the following steps: 1) sort modules and initialize implicit constants, 2) process init-functions, 3) process eventloops, 4) process order modules, 5) process iteration modules, and 6) process snapvaluearray modules. Special cases are described for different module types.

Uploaded by

Ivan Shterleman
Copyright
© © All Rights Reserved
Available Formats
Download as RTF, PDF, TXT or read online on Scribd
You are on page 1/ 6

Reaktor 5 Mode - New Initialization Algorithm

This chapter describes a new initialization scheme that is introduced with Reaktor 5. It is used, if the Reaktor 4 Legacy ode is disabled in the !nsemble "roperties. Attention! We urgently recommend to use this new mode for future compati ility! The following describes the new module and signal initialization step by step.

!irst "tep - "ort Modules


#orting$%lgorithm& %ccording to a list of sinks, acti'ate modules from each sink leftwards. If a odul has no other leftward if all the leftward odule, or

odules it has are already being acti'e or

are marked as being passed by the current search, the module gets marked as acti'e and is put into the #orted$ odules$List. This #orting can be displayed thru a new enu$!ntry& (#ystem($)(*ebug($)(#how !'ent Initialization +rder( Remark& for odules in Loops ,!'ent$ and also %udio$Loops- the order of the #inks in the #inks$List can be rele'ant for the #orting of the odules. The order of the #inks is determined by searching #inks recursi'e in all Instruments and acros, starting from !nsemble$Le'el. Remark& /ecause on !nsemble$Le'el the only #ink is the *%0$ odule, the *%0$ odules is always the first one in the #inks$List. %dditionally, in this #orting$%lgorithm a List of generated. odules ha'ing implicit 0onstants is

Implicit 0onstants are +ut"orts of odules which do not change thru any processing of the odule. 1or e2ample the #nap 3alue %rray has an +ut"ort for the number of !lements in its array, which can only be changed in the "roperties. These +ut"orts are considerated as 0onstants and are Initialized separately from the rest of the odule. 4ere is a List of the #nap 3alue %rray odules beha'ing in this way&

+ut"ort (5( $ 5umber of !lements ulti "icture +ut"ort (5$6( $ 5umber of pictures in the animation $ 6 ulti *isplay +ut"ort (5"( $ 5umber of pictures in the animation ulti *isplay %rray +ut"ort (5"( $ 5umber of pictures in the animation +ut"ort (5+( $ 5umber of !lements %udio Table, !'ent Table +ut"ort (*7( $ 7 size of the table +ut"ort (*8( $ 8 size of the table 78 +ut"ort ( 7( $ last "osition +ut"ort ( 8( $ last "osition

"econd "tep - #rocess Init-!unctions


1or each Implicit 0onstants and for each a Init$1unction. odule of the #orted$ odules$List e2ecute

If the odule has an !'ent$0onnection to another odules In"ort, notify this In"ort that a 3alue has arri'ed. If the In"ort is a polyphonic one and the odule is polyphonic, this is done for each 'oice and the In"ort has a notification flag for each 'oice.

The

odules ha'e are di'ided in 9roups&

"ource-Modules 1or 1aders, /uttons and so on, the Init$1unction e2ecutes basically only a recall of the last 3alue, putting it to the odules +ut"ort and notify the connected !'ent$ In"orts. They are called #ource$ odule, which reflects that their +utput$3alues are not a result of any !'ent$ or %udio$"rocessing. ost of these odules do not ha'e any In"ort.

4ere is the List of

odules beha'ing in this way&

Modules with one $ut#ort 1ader, :nob List /utton 5ote "itch "itchbend#ingle Trig. 9ate 9ate #ingle Trig. 9ate #el. 5ote 9ate +n 3elocity +ff 3elocity 0ontroller 0h. %ftertouch "oly %ftertouch #el. "oly %T #nap 3alue 0onstant +ut"ort is set;

Modules with multiple $ut#orts #tart<#top only +ut"ort (9( is set; The 3alue is e=ual to $ >.> if the 0lock is not running or $ the chosen +?T"?T 3%L?! from the "roperties$ 1unction$"age if the 0lock is running. aster Tune<Le'el 3oice Info Tuning #ystem Info 5ote Range idi 0hannel all +ut"orts are set;

#ampler 1 #ampler Loop #ample Lookup Tapedeck 6$0h Tapedeck @$0h The +ut"ort (Len( is set; Remark& for #ampler 1 and #ampler Loop this depends on the current selected #ample; #napshot& +ut"orts (#np(, (/nk(, ( ph(, (%mt( are set; +ut"ort (%( is set when there is currently a %$#nap for morphing selected +ut"ort (/( is set when there is currently a /$#nap for morphing selected +ut"ort (#w( is set to the last selected #witch$"osition ,see #napshot$Aindow-

Modules with %&ent-In#orts e.g. for a 4ybrid like this& ath odule like the %dd$ odule, the Init$1unction works

If the odule is in !'ent$ ode ,green or red coloured "orts- then do for each In"ort if the In"ort is not wired or if it is wired but the wiring is not acti'e ,e.g. a "ort is uted- then pass a >.> 3alue to the In"orts !'ent$1unction. otherwise this In"ort is (really( wired ,it is wired to a acti'e non$Transparent odule and the wiring is acti'e-. Then the algorithm looks up for each 3oice if a notification has arri'ed. If this is so, pass the 'alue to the In"orts !'ent$1unction.

special #rocessing-Modules !'ent #moother

this odule has no !'ent$In"ort, ne'ertheless the current 'alue at its %udio$In"ort is set to the +ut"ort; 0ore 0ell %udio, 0ore 0ell !'ent these ha'e special Init$1unctions; see Reaktor 0ore 0ell$*ocumentation; +rder the incoming !'ent is set only to the 6st ,topmost-+ut"ort. The other +ut"orts process later, see (1ourth #tep $ "rocess all +rder$ odules(.

Iteration the incoming !'ent is set to the +ut"ort, the rest of the iteration is done later, see (1ifth #tep $ "rocess all Iteration$ odules(.

!2amples when it is possible, that no 3alue arri'es at an !'ent$In"ort in spite there is a acti'e connection& The In"ort is wired to a #eparator$ odules (Low( or (4igh( +ut"ort. +nly one of these two +ut"orts will fire an !'ent at Initialization. If both +ut"orts are connected to two In"orts, only one In"ort will not recei'e a notification. The In"ort is wired to a To$3oice$ odule. %s said abo'e, the notification takes place for each 3oice. % To$3oice$ odule only sends for one 3oice at Initialisation, so the In"ort gets only a notification for that 3oice.

Ahile this algorithm processes, it can happen that it tries to notify a !'ent$In"ort of a odule which has already been passed by the algorithm. This is what we call a !'ent$Loop. These In"orts where an !'ent$Loop occurred are stored in a special List and are processed in the ne2t step.

'hird "tep - #rocess all %&entloop-In#orts


1or each In"ort in the !'entloops$In"ort List the notified 3alue is fired as a normal

Reaktor !'ent.

!ourth "tep - #rocess all $rder-Modules


1or all acti'e +rder odules, set the @nd and Brd +ut"ort and send !'ents as normal Reaktor !'ents.

!ifth "tep - #rocess all Iteration-Modules


1or all acti'e Iteration odules, iteration$processing is now done.

"i(th "tep - #rocess all "nap)alueArray


1or all acti'e #nap3alue%rray odules, iteration$processing o'er all !lements is done if the 1lag (#elf Iteration( from the 1unction$"roperties "age is set.

You might also like