The Matrix Value Send and Matrix Value Receive actors offer powerful possibilities for routing values from inputs to independently organized outputs. These actors were originally created to allow users to send DMX signals out using devices like the Enttec DMX USB Pro. But the same routing possibilities could be used to control, for example, a MIDI controllable audio console.
An Example From the Theater
To understand how the Matrix Value Send and Matrix Value Receive actors work together, we'll use an example of how one uses a lighting board to control lighting dimmers, because it was on this process that the functionality of the two actors is based.
When lighting a show, you want to have some logically numbered "channels" that control one or more dimmers, with each dimmer connected to a lighting fixture on the stage. For example, channel 5 might be a focused light on the top of a table at the center of the stage, while channel 6 controls three red lights that fill the background with color.
The typical problem is that the dimmer numbers are scattered all over the place. Using our example above, we might end up with something like this:
|Channel / Description||Dimmer Number(s)|
|5 - Tabletop Special||103|
|6 - Red Background Fill||100, 101, 109|
In theater/lighting board language, this table is called the "patch". Every lighting board has a system to allow you to associate channels with one or more dimmers.
In this example, when you move the slider on the lighting board for channel 5, the signal is sent to dimmer 103, raising or lowering the intensity of the lighting instrument connected to it. Similarly, when you move the move the slider on the lighting board for channel 6, the signal is sent to dimmers 100, 101 and 109 raising or lowering the intensity of the three lights connected to the three individual dimmers by the same amount.
The point here is to offer easy to understand channel assignments and to also allow flexibility if you need to reassign the dimmers. (For example, if you spilled your cola on dimmer 101 and it blows up, you can plug the lighting fixture into dimmer 107 and change the channel routing for channel 6 to dimmers 100, 107 and 109. Problem solved. ;-) )
Now, let's use this exact same example to understand how the routing works in the Matrix Value Send and Matrix Value Receive actors.
A Practical Example of Routing with the Matrix Value Send and Matrix Value Receive Actor
First let's set up a Matrix Value Receive actor to mimic the setup shown above.
- Add a Matrix Value Receive actor to your patch
- Set the 'min in channel to 5, and 'min out channel' to 6. This corresponds to the channel numbers in the table above. Take note that these channel numbers do not need to start at 1.
- Set the 'min out channel' to 100 and the 'max out channel' to 109. This range encompasses all the dimmers shown in the table above (100, 101, 103, 109). Again take note, the minimum value does not need to start at 0 or 1.
- Click in the 'separator' input, type a space, and then click outside the field.
- At this point, the 'output' should show 0 0 0 0 0 0 0 0 0 0, which is ten 0's -- one for each output. These correspond to outputs 100, 101, 102, 103, 104, 105, 106, 107, 108, and 109.
- Now double-click the actor to edit the channel map. You'll see a dialog that looks like this:
Along the left side are the channels you defined with the 'min channel in' and 'max channel in' inputs: 5 and 6. By entering one or more output channel numbers in the text boxes to the right of these channel numbers, you will define the routing from input channels to output channels, just like we did with our light board example above.
- In the text box to the right of '5', enter 103 as shown above.
- In the text box to the right of '6', enter 100, 101, 109 as shown above.
- Click OK to save the new channel mapping.
To see the routing in action, we'll need add and configure Matrix Value Send actor.
- Add a Matrix Value Send actor to the Scene.
- First you'll set the 'values' input to 2 because we want to control two channels with this Matrix Value Send actor.
- In the 'channels 1' input enter '5'. This is the input channel you will control in the Matrix Value Receive actor.
- Similarly, enter '6' in the 'channels 2' input.
Finally, we can start changing values into the Matrix Value Send actor. Try changing the 'value 1' input of the Matrix Value Send actor to 50. The 'output' of the Matrix Value Receive now shows 0 0 0 50 0 0 0 0 0 0. Why? Because:
- You sent a value of 50 to input channel 5.
- Input channel 5 is routed to output channel 103.
- The ten output values represent channels 100 to 109 as explained above. So the fourth value has changed, i.e. 100, 101, 102, 103, 104, 105, 106, 107, 108, 109.
Now set the 'value 2' input of the Matrix Value Send actor to 99. The 'output' of the Matrix Value Receive now shows 0 99 99 0 50 0 0 0 0 0 99 . Again, here's what's happening:
- You sent a value of 99 to input channel 6.
- Input channel 6 is routed to output channels 100, 101 and 109.
- So the first, second and tenth values changed, i.e. 100, 101, 102, 103, 104, 105, 106, 107, 108, 109.
It is worth noting here that you could have two separate Matrix Value Send actors, one controlling channel 5 and one controlling channel 6 if you like. We simply put them into one actor as a convenience.
Hopefully this example makes the powerful routing capabilities of the Matrix Value Send and Matrix Value Receive. If you have questions, comments or other feedback about this article, please place them in this thread on our user forum.
The completed Isadora is attached for your convenience.