Download the sample project and composition for this tutorial.
One of the benefits of using Quartz Composer to create visuals on the Mac is the ability to work with lists of numbers- this can be particularly useful when a composition has a large number of parameters that need to be controlled remotely by a DMX lighting console or other ArtNet capable software.
Along with being able to directly control any UI item in VDMX, such as sliders and buttons with the value from a DMX channel, when using Quartz Composer compositions it is possible to pass in an entire DMX universe (512 channels) of data all at once as a structure of number values (ranged 0-255). Once inside the patch, the control information can be parsed programmatically to control real-time visuals or virtual lighting elements inside the patch, or to pass back value into VDMX by published outputs as control data.
For more information on setting up DMX over ArtNet check out some of our other tutorials on lighting design such as setting up VDMX as a media server.
In this example tutorial setup we'll be creating a simple QC composition that controls the color and position settings for two sprites representing virtual lighting fixtures. Each will use 6 consecutive DMX values, 3 for RGB, 2 for XY position and 1 for radius, for a total of 12 DMX channels. This simple patch is useful for creating masks that can be applied to other layers, or on its own as a real-time generated animation. It can also be loaded multiple times or further modified to represent more than two lights. When no ArtNet universe is selected for input, the patch will automatically switch into a test mode using its own internal LFOs for changing the settings.
DMX structure inputs are added to a patch using the Input Splitter of type 'Structure' with the suffix '_DMX' at the end of the published key name. This hint will tell VDMX to create the special DMX port selection menu for choosing which universe to pass into the patch through the splitter object. In our example we've also included an input setting for specifying a channel offset within the structure.