Welcome back! This week, we're going to cover the foundation concepts that you'll be working with in 3.0. This week's topic applies to any user, both old and new, and next week we'll cover a couple more for the more in-depth user. If you're going to skip a week, don't make it this one, make it the next one.
On with the show...
For a basic configuration, there are three concepts that you need to be familiar with -- controllers, channels, and patching.
Everyone knows what a controller is. It's the hardware that controls your lights (or whatever you're controlling). In this new version, controllers are something you create once and you don't touch again unless your hardware setup changes. You create controllers to model the hardware you use in real life. If you have a Ren-64 running your display, you create a 64-channel Renard controller in the software and configure the output module it uses accordingly. On this side of things, the hardware side, the changes aren't as sweeping or drastic. But, as an added feature, we now support the IDoLaundry interface. Use the appropriate module and you're set for marital bliss. Same goes for the IMakeToast and and IBrewCoffee interfaces, guaranteed to brighten every morning. After all, working on your Christmas display is so much easier when your spouse is happy, is it not? (Let's see just how many people read this...)
In Vixen 2.x, we only had the concept of channels -- the "channel" that you put values into was the same "channel" of data that was output to a controller later on. However, in 3.0, we are separating the concepts of "channels" and "outputs". A channel of data may go to a single controller output, but it doesn't have to. For example, we might have the "Left window wreath" channel or the "Megatree segment 7" channel. This conceptually models the display and better models a user's intent (e.g., "I want this to be applied to the left window wreath" as opposed to "I want this to be applied to the second Renard controller, 14th output"). Separately, there may be a Renard controller with outputs from "Renard-1" through to "Renard-32" that the channels get connected to. You decide where a channel of data will be output and you set it up once. Unlike 2.x, channels are no longer something that you create for each sequence. You create them for the display (again, modelling the display) and all sequences use the same collection of system-wide channels. So how do we link up channels and controllers?
To connect a channel to a controller output, we use a patch. This is simply a way to link them together. We do this because we may want to link up a single channel with multiple outputs, or we may want to move display items around. In Vixen 2.x, we would have to edit the controller channels and busily copy-paste everything around to match the intended result. Now, we just have to patch the channels to different outputs. (Another example may be wanting to sequence some data on channels that we don't have controllers for yet. We can add channels to the display, but not have them patched through to any outputs, and then add the outputs and patches later on.)
For editing, there is only one more concept to add --
As mentioned earlier, we are adding the concept of an "effect". There will be many different types of effects and developers in the community will be able to write more. These can be as simple as the effects we are used to from Vixen 2.x (such as a fade in, fade out, or a static level on or off), or more complex (like the spinning of a megatree, chase effects, pulse effects, etc). An effect can be applied to a number of channels and will generate the data for those channels based on the way the effect is configured. One of the things that makes these effects useful is that they represent your intent -- spin a tree, chase fade an arch, blinky flashy -- without requiring you to figure out how to execute that intent. If you apply a spin effect to your mega-tree, it doesn't matter if you have 32 channels in it or 128, the effect figures out how to make it happen. Again, you tell it "what" and it figures out "how". If you later add or remove channels to/from that mega-tree, you don't need to do anything with the effects you've applied to it, they will still work.
So how does this all tie together?
Pretty simply, actually.
You apply an effect to a channel and patching gets it to the right controller outputs. There's not much to it. You meant for the data to go to the second controller output and not the first one? Change the patch, the data will follow. It's supposed to fade from 100% to 50%, not 25%? Change the effect properties. Or what if you'd rather see that fade applied to the front door and not the garage door? Move the effect to a different channel.
One thing we've tried hard to accomplish is allowing more advanced users freedom while not requiring beginning users to have to worry about more advanced concepts. In the simplest configuration, you define a controller and let the administration program create channels and patches for you (with each controller output getting a single channel patched to it). It's ready to go at that point. But you don't have to start with controllers if you don't want to. You can work in a disconnected setting where you define channels and sequence data for those channels and later define controllers and patch them all up. It's completely up to you.
If you can understand the first three concepts, you can configure your display. If you can understand the concept of effects, you can also create sequences. For a basic display, you have everything you need to get started.
That's it for this week, so thanks for reading!