VDMX Data Source

From VidvoxWiki

Behind the scenes, VDMX is constantly creating and receiving control information that can be used to automate and interact with interface controls such as Sliders, Buttons, and color pickers. These pieces of information are known as data-sources. Some data-sources are always running, such as the horizontal and vertical mouse positions, while others are added dynamically as you create new layers and plugins. Hardware devices such as MIDI instruments and the Mac keyboard are also considered to be data-sources and can be used to control just about anything in VDMX.

Contents

Built-In Data Sources

Horizontal and Vertical Mouse Position (Mouse/X and Mouse/Y)

At all times, the current horizontal (x axis) and vertical (y axis) positions of the mouse on main screen.

Measure Position

The current position of the clock in it's current measure (regardless of the number of beats in the measure). At 60 BPM, this value goes from 0 to 1 in exactly 4 seconds.

Data-sources from Layers

Layer Opacity

For each layer that is created in VDMX, the current value of its opacity slider is available as a synch source.

Movie Time

When a Quicktime movie is playing on a layer, the current playback time of the movie is available as a synch source.

Data-source Plugins

Many of the Plugins in VDMX have data-sources associated with them. Some of these plugins are explicitly designed to create control information, whereas others will produce a data-source in addition to it's regular use. In either case, the data-sources are treated exactly the same when it comes to mapping them to sliders and buttons.

Plugins make for very useful data-sources because you can create as of each plugin as needed.

List of Plugins and their respective Data-Sources

The following is a list of each plugin that have data-sources, and the values that they generate:

  1. Audio Analysis - Each band of audio analysis shows up as it's own data-source. Add, remove and rename individual bands in the options panel.
  2. Buttons Plugin - Toggle buttons created with the buttons plugin will show up as data-sources. Momentary buttons can be assigned to other buttons using the detect button option in the slider / button inspector window. Add, remove and rename buttons in the options panel.
  3. NotesToValue - Produces a single data-source from a range of notes / keys / buttons and maps them to different values between 0 and 1.
  4. Oscillator - A single LFO data source that includes a bezier curve editor for user editable curves.
  5. Preview Window - In addition to displaying the current image on a layer, the preview window gives off the x and y position of any mouse clicks within it's display area as data-sources. This is useful when assigned to the x/y positions for FX such as zoom.
  6. "Sliders" plugin - An array of generic VDMX sliders which can be used as a data source for other sliders and buttons within VDMX. Add, remove and rename sliders in the options panel.
  7. Step Sequencer - A simple step sequencer data source.
  8. Two Channel Mixer - In addition to directly controlling the opacity of two layers the TCM also gives off the current crossfader position as a data-source.
  9. Waveform - A single LFO data-source with adjustable rate and wave type.
  10. Wiimote - Converts input from a WiiMote to VDMX data sources. Buttons on the controller can be assigned using the Button Detect or Hardware Learn modes.

Keyboard, MIDI, and OSC

Strictly speaking, your Mac keyboard, MIDI controllers and incoming OSC messages are treated as regular data sources. That being said, the diverse nature of MIDI and OSC software and hardware means that the procedure of synchronizing a things to these is slightly different from synching it to other data sources.

Detecting keys, MIDI, and OSC inputs

When assigning keys, MIDI, or OSC to a slider or button in VDMX, there are typically three ways to go about this:

  • Click on a slider or button to select it. Look at the slider/button inspector window: there is a button in the bottom-left corner of the window labelled "Midi Detect". Press this button, and then wiggle the midi control you want the slider to be synchronized to; the slider should turn green and it's value should match the controller you just moved. Likewise, the "Key Detect" and "OSC Detect" options can be used to detect for their respective hardware types.
  • Right-click on a button. A contextual menu should appear with the "Start Key Detect" "Start MIDI Detect" and "Start OSC Detect". Select the appropriate hardware type and then press the key / note or send the OSC message you wish to use to control the button.
  • Hardware Learn Mode. In the title bar of the Slider / Button inspector window is a toggle button for activating Hardware Learn Mode (HW Learn). When active, any incoming keyboard, MIDI, or OSC messages are automatically assigned to the currently selected button or slider. HW Learn also works with some other interface controls, such as the page view in the Media Bin. When using HW Learn, all items that can be synched to a hardware controller are highlighted blue.

Setting up OSC Input ports and Output destinations in the preferences

In order to receive OSC from other software or hardware, you must first tell VDMX which ports to receive on. The receiving port must be the same as the one that is being used by whatever hardware or software is being used to send OSC to VDMX. Multiple input ports can be used at the same time. If you are having problems receiving OSC on a particular port, check your router and system firewall settings (in System Preferences).

To send OSC to another computer or a hardware controller, you must first set it up as an OSC destination in the OSC section of the VDMX preferences under the Output Ports tab. Simply click Create New and then enter the IP address that you wish to send to and the port that the receiver is set to listen on. You can also set a descriptive name for the destination that will be used by plugins that work with OSC.

Once you have set OSC output destinations, you can use the OSC Output plugin to transmit the current values of any data-source in VDMX to the remote receiver.

Dedicated MIDI / OSC Inputs

For MIDI and OSC inputs that are commonly used, the standard method of detecting can often be cumbersome. By setting up these inputs as dedicated inputs, you can assign them to sliders and buttons as if they were any other available data-source that is always running (in the right+click and slider/button inspector).

To configure a dedicated MIDI or OSC control, first open the VDMX preferences and click on the appropriate tab on the left. Click the 'Detect New' button and then send the MIDI or OSC message you wish to use. Once the value is received, it will appear in the table below the detect button. Using the text field in the column labelled "Appears As:", you can set a descriptive display name for the input.

Creating custom data-sources with Quartz Composer

Quartz Composer patches can be loaded into VDMX as if they were plugins allowing for the creation of custom Data Sources and persistent image sources (useful for creating masks for layers). When added to your project the QC patch will show up in its own window with an automatically generated interface based on the published inputs of the patch and any published outputs will be available as either data-sources (in the case of number, bool, and color outputs) or video-taps (in the case of image outputs).

Some example uses of Quartz Composer patches as plugins are:

  • Creating custom LFO and timeline controls.
  • Advanced math, logic, and number routing using multiplexers, numeric objects and javascript.
  • Performing video analysis using the Histogram object and passing the results back to VDMX.
  • Using QC controller objects to access tablet, Apple Remote and HID inputs.