Making compositions fit a mold with protocols

You may have noticed that a lot of Vuo’s nodes fall into groups where the nodes in the group are, in some sense, interchangeable. For example, what are some nodes that can fill in the blank in the composition below?

There are numerous possibilities: Adjust Image Colors, Outline Image, Make Cartoon Image, and Reduce Haze, just to name a few. Any node that inputs an image and outputs a modified version of that image will fit.

The idea of a protocol is to give a name to the kinds of nodes or compositions that can fill in a blank. A protocol defines a list of input and output ports, with certain names and data types.

In Quartz Composer, there's a single, default rendering output. VJ apps typically capture that output and mix it into the VJ app's other feeds, so there is no need for a protocol for composition playback. In Vuo, use the Image Filter or Image Generator protocol to produce output.

Protocols are something you need to know about when exporting a composition as a movie, screen saver, or plugin (Exporting compositions) or using a composition in a VJ application.

You can find compositions exemplifying each protocol under File > Open Example > Image Generators, Image Filters, and Image Transitions.

Image Filter protocol

The Image Filter protocol is for compositions that alter an image (or stream of images). For example, an Image Filter could add a special distortion effect to a video clip.

Published input ports

Name Data type Required/Optional Description
image Image Required The original image.
time Real Required A number that changes over time, used to control animations or other changing effects.
duration Real Optional For FxPlug: The length, in seconds, of the clip.
framerate Real Optional For FxPlug: The framerate of the project, in frames per second.
frameNumber Integer Optional For FxPlug: The number of frames since the beginning of the clip, starting at 0.
quality Real Optional For FxPlug: The rendering quality or level of detail.

time and quality are further explained later in this section.

Published output ports

Name Data type Description
outputImage Image The altered image.