20Concepts Lesson 02 - Vizzie Part 2
(Needed: Example Video)
In lesson #1, we will extend the Vizzie system by creating switching networks, managing user interface and recording our work.
Now that we are developing more complicated video systems, we may find that we only want some of the effects/videos active at any given time. We could repatch on the fly, but that would be more difficult than it has to be. What would be a better choice? It would be better if we could make multiple effects streams and switch between them.
We can accomplish this with modules found in the Vizzie CTL subfolder. Two useful devices are the 2SWITCHR and 2ROUTR. These are very similar devices: the 2SWITCHR takes two video inputs and switches them to one output; the 2ROUTR is the opposite, accepting one video input and sending it to one of two outputs. Either will allow us to create video streams and switch between them - so how do we decide which one to use?
This is where it helps to understand how Jitter (the technology behind Vizzie) works. The video patch cords pass a message every time a video frame changes. The modules are expected to do their processing, then send a message to the video modules connected to their outputs. Processing occurs (and CPU is used) every time a module receives a frame message - so it is helpful to limit the number of messages any module receives.
If we create this simple Vizzie patch:
we can see that all of the modules are connect to a PLAYR device, process frames, then we switch between the video streams with a 2SWITCHR. The problem is that the effects will receive frame messages even when their output is not being displayed! That's a lot of wasted CPU, and limits our ability to effectively use the Vizzie system. Replacing this arrangement with a 2ROUTR gives us a patch that looks like this:
Now, modules only get messages when they are switched in, and we are using CPU as efficiently as possible.
Centralized Control with User Interfaces
Controlling our switcher manually might be useful - especially if we can consolidate our work to a few user controls. In order to do this, we have to look at some more of the Vizzie CTL options. There are a class of modules - CLICKR, TWISTR and FADR - that exist for one purpose: to control other functions in your patch. These modules are hooked into your patch using the same module inlets as the GEN modules, but give you manual control of these devices. They are a great way to create a custom user interface for the rest of your system.
One of the important things to remember about all Max objects (not just the Vizzie modules) is that you can route any outlet to multiple inlets (as long as they expect the same type of data). So, for example, you could use a FADR module to simultaneously control the speed of a movie, the saturation level of a BRCOSR and the slide rate of a SLIDR module with a single control:
This allow you to focus on fewer on-screen controls when you are trying to perform with a Vizzie-based system.
Turning Processes On and Off
Sometimes you want to build a large network of Vizzie objects but you only need a few on at a time. There are several ways of turning off the processing without having to dismantle your patch - let's take a look at a few of them.
First, and easiest, you can turn off any one Vizzie module by clicking on the preview image.
When you do this, the preview image says "Effect Bypassed", and the module no longer processes the incoming video frames - reducing processing load, and also removing the processing from the effects stream.
Another option is to use a CLICKR object connected to the first (video) input of a module. When you turn the CLICKR on, it turns on the module processing; when turned off, it turns off the connected module.
As with clicking the preview image, the display will show "Effect Bypassed" in the display to show that the module is not processing video.
Finally, you may sometimes just want to turn off a modulation rather than turning off the entire effect. You can turn off a modulation using the colored buttons next to the inlets, or you can use the CLICKR object connected to the modulation inlet.
Using the CLICKR object allows you to be explicit about processing management, and you can also drop the CLICKR into Presentation mode so you can adjust the processing without having to expose the modules within your user interface.