Using Max/MSP/Jitter as an external FX send and data-source provider for VDMX

Download the completed Max/MSP/Jitter patch and VDMX project file for this tutorial.

Eventually when creating live visuals, particularly for a high profile event or tour, you may find the need to add to your setup some kind of very specialized custom image processing, source generator, or information feed that really sets the show apart with its own unique style or effect.

Since this may also only be one part of a show, often it's necessary or at least desirable for a VJ to be able to run everything from movie playback to output within VDMX without having to switch between applications while performing. This is made possible by loading the additional custom code either directly as an extension to VDMX, for example as a Quartz Composer composition, or by running it as a patch in a separate application that can communicate video and data feeds between programs using open protocols such as Syphon and OSC messages.

For this set of video tutorials we'll be taking a look at how to use one of our favorite visual programming languages, Cycling74's Max/MSP/Jitter which has been around for over 20 years as one of the most popular toolsfor creative coders experimenting with sound and video.

If you'd like to follow along with these lessons, begin by installing Max and the Syphon externals for Jitter on your Mac.

Max/MSP/Jitter patch running as an external FX send and data-source provider for VDMX layers.


Part 1 - Setting up a FX Send to Jitter that returns to VDMX over Syphon

To begin we'll first set up a very basic VDMX project that includes a ‘Syphon Output’ plugin for publishing a source layer to send a test video stream to Jitter.

Next in Max the jit.gl.syphonclient and jit.gl.syphonserver objects are used to create a patch that simply sends back out the incoming video frames to return to VDMX as a pass-through. This patch can be used as the starting point for creating an FX as demonstrated in the next step on this page and also is included in the download as a template.


Part 2 - Building the ‘Auto-Levels’ FX in Jitter

or skip in a lesson in Max/MSP/Jitter, download the completed patch and move on to part 3.

Once the initial setup for Syphon is complete the Jitter patch is ready to be set up as an FX to send modified images back to VDMX.

For this example we'll make an ‘Auto-Levels’ that uses the jit.3m object to compute the minimum, mean, and maximum brightness values of each incoming video frame. This data is then used by a jit.gl.pix to adjust the luminance curve in real-time, normalizing the input by making each pixel in the image brighter or darker.


Part 3 - Using Max as a data-source generator for VDMX over OSC

Along with video frames, it can be useful to send back some of the information being gathered by our Max patch for the purposes of driving FX parameters or source controls within VDMX. Likewise, a Jitter patch may have settings that you may want to access without having to switch programs.

Since both applications support the MIDI and OSC protocols in both directions, it only takes a minute to set up this two way talkback.


Additional Notes:

Jitter users can take advantage of the GPU accelerated Hap video codecs using the jit.gl.hap external.

Jitter users can take advantage of the GPU accelerated Hap video codecs using the jit.gl.hap external.

When working with other applications that don't support Syphon, VDMX can still capture output with the ‘Window Inputs’ source.

When working with other applications that don't support Syphon, VDMX can still capture output with the ‘Window Inputs’ source.

See how to create the ‘Bar Graph’ data-visualizer Quartz Composer patch.

See how to create the ‘Bar Graph’ data-visualizer Quartz Composer patch.