As stated in the beginning, a Channel is a stream of user content (templates, images, etc.). All user operations are performed on a channel which uses the Topology to talk to one or more Ventuz Runtimes which then perform the actual 3D rendering. But despite it having such a central role, it hasn't really been discussed in any of the previous chapters. Since just like in a majority of applications, it simply does what is expected to and therefore users won't have to care about it!
This chapter though will get more into detail what a channel really is; how its behavior can be adjusted and how multiple channels can be used to run even complex setups with a single instance of Director.
There are various situations that are only made possible by using multiple channels, the most common one of which is layering content. Imagine a TV show playing the top 40 music videos. The main content, as you can guess, are the music clips, where each one of them would be an entry in a Playlist. However, there is usually additional content that is not dependent on any specific clip. For example, the program's logo might be spinning in the top right corner and advertisement for the program to follow might come in from the bottom in the show at a random time. Although it is theoretically possible to use sub-templates for this, the operator would be limited to adding/removing sub-templates whenever he switches to a new music clip.
Instead, with the Director, the operator can create three separate, dedicated channels: one for the music videos, one for logos and one for advertisements. This allows him to initiate/take each one individually or even automate the playlist of music videos while manually managing the advertisements and logos. All channels would be routed to the same machine, which layers the content on top of each other to produce the final output.
A completely different scenario would be managing an information system in a large building, for instance, an airport. There might be displays distributed throughout the waiting area, displaying the news or other entertainment programs, other displays near the cafeteria to show internal information for the staff and yet another set of displays in the parking lot to show arrival and departure of flights. While completely independent in their information, to have them all attached to the same Director instance, would have the benefit to allow the operator to show an important message (e.g. a fire emergency) on all displays simultaneously. Again, he would have to create a show containing one channel per independent content feed and have the power to either use them separately or together.
When creating a new show, by default, a channel is allocated for each Channel Slot in the active topology. Since the default topology is a local setup with just one Channel Slot, this results in the familiar setup a show containing only one channel. Additional channels can be added/removed via the Channel Manager at Show / Channels... in the main menu. Each channel has a name that is used throughout the application, a channel slot in the Topology active topology it is assigned to and an optional set of rules. When double-clicking on a channel or selecting one and pressing the edit button, its properties can be modified.
The most important information for a channel is the Channel Slot it is assigned to. Without a channel slot, the channel will not be able to communicate with the rendering backend and therefore to cue/take any content.
Although the channel manager shows the names of the channel slots in the active topology, the channel stores the ID of the channel slot. This way different topologies can be used for the same show and channels will reconnect automatically if the new topology contains a slot with the same ID. If a slot is not available, the channel will log an error message that it is disconnected and show a red status message in the Timeline window.
Each channel can also be assigned a custom color. All windows that operate on a specific channel will color their outer border based on the channel's color. This is an optional feature but very useful when working with multiple playlist or property editor windows.
Finally, channel rules can be used to modify a channel's cueing behavior. They will be discussed later in this chapter.
When working with multiple channels, the major portion of Director will behave exactly the same as with a single channel. However, there are some important details:
Some windows (e.g. the Property Editor, Playlist Window) require a channel to work on. Which channel a window is bound to can be changed in the Window Manager at Window / Windows ... in the main menu bar.
In the example above, two property editors have been added to the window layout, one is working in the channel "Foreground" while another is working on the channel "Background".
Since window layouts are shared among all shows based on the same project, a window does not directly bind to a channel but the index of a channel (e.g. is bound to the second channel in a show). The window manager just displays the current channel names for easier association.
Each channel-based window contains a button showing a human shape to enable/disable user-interaction on that channel. If an operator cues a template, presses F1 or the take button in the Show Control, that action is performed on all channels that are user-interaction enabled. If for example one channel is automated via a Playlist, one generally will want to disabled user-interaction so pressing F1 will not disturb its operation. In the screenshot below, all channels have activated their Timelines but the first channel has its user-interaction disabled.
Although the user-interaction mode can be used to have a channel completely ignore all take/cue operations done by the user, there often are situations where one wants to do a take on only a specific channel. For this reason, the playlist, property and timeline window each have configurable button toolbars that can customize via the configuration option button in the top right corner of a dockable window. These buttons work exactly the same as the ones in the Show Control but act only on that specific channel.
The quickest way to activate a channel is by pressing Ctrl plus the number of the channel (e.g. Ctrl+1, Ctrl+2, etc). This shortcut will automatically de-activate all other channels unless the shift key is pressed also.
Let's go through a quick example of how to get a multi-channel setup running from start to finish: We assume a project has templates for a background and a foreground which are supposed to run on a cluster of machines. To support multiple in parallel on the same machine, the project requires an appropriate layout scene. However, this is usually done by the designer of the template in Ventuz Designer. Therefore the following assumes that the project is already correctly set up.
Each channel can have a set of rules applied to it which modify its behavior. Whenever the operator cues something, either manually or from the playlist, a channel will apply its rules. Each rule consists of a condition to check if the rule should be applied and an action. Note that in addition to the build-in conditions/actions discussed below, custom plug-ins can be developed to add new conditions and actions.
Channel rules are not applied for content that already is on the Timeline. It is only applied to content that is being cued by the user. The reason for this is that the timeline is intended as a perfect record of what has happened and/or is supposed to happen.
Name and Keyword match against the main item that is being cued. If the operator double-clicks on a template in the template browser, the name/keyword of the template is checked. If the operator double-clicks on an entry in a playlist, the name/keyword of the playlist entry is checked - which may or may not be the same information, depending on whether the operator did modify the playlist entry.
This is used to invert the condition. For example, if a rule says to match a specific template, inverting the condition would cause the rule to match all templates except for the specified one.
The replace action is completely independent of the template condition. In a template hierarchy, there is always only one place where a page could be inserted. So the replace action tries to find that place solely based on the replacement page. One can create a rule where it matches against certain templates and replaces them with a completely different page!
Let's look at an example: A channel called "foreground" has been given two rules.
The first rule restricts the channel to only cue content that contains the "foreground" keyword. Why is that? The condition "keyword: foreground" would usually match only content that contains the keyword "foreground". However, it is inverted, so the rule matches all content that does not have that keyword. And for all such content, the state is set to blocked, preventing them from being cued.
The second rule matches whenever the content contains the template "SponsorText". if so, it replaces parts of the content by the page "Score + LT_Sponsor".