Ableton Live and TouchDesigner
TouchDesigner Ableton Live Sync Environment
The TouchDesigner Ableton Live Sync Environment is a live performance and animation system developed specifically for artists and musicians to construct and perform live, interactive Audio-Visual performances. Utilizing TouchDesigner and Ableton Live, the environment simplifies the passing of loop, controller, MIDI notes and timing data from Ableton Live to TouchDesigner, and maintains the two packages in sync with each other. The system provides an optimized framework to support collaboration and development of highly dynamic immersive audio visual shows.
The system architecture is the product of many years of development for the Plastikman Live shows. Over the last year the environment has been refined and portions were also used in the recent Amon Tobin tour.
Through the lens of live performance we believe this core engine is robust enough to form the foundation of a new generation of Audio-Visual performance systems. Currently the development environment is quite raw with very little user interface. Moving forward we will update this system and provide more UI elements. We are releasing this now to aid TouchDesigner artists and Ableton musicians in the creation of immersive Audio-Visual experiences. This iteration is just a first step, the idea here is for the TouchDesigner community to grow through the use and expansion of this system.
- shared BPM and Timing Ramp data for perfect synchronization
- sophisticated control of both audio and MIDI data
- low latency communication via OSC
- single or multi-computer setup via wired or wireless LAN
- 32 shared Sliders
- bi-directional control, ie audio controls video and/or video controls audio
The following software is required to use the TouchDesigner AbletonSync Environment,
TouchDesigner - http://www.derivative.ca/088/Downloads/
Ableton Live - http://www.ableton.com/
Max4Live - http://www.ableton.com/maxforlive
Step 1 - Download and Install TouchDesigner
Visit http://www.derivative.ca/088/Downloads/ and download TouchDesigner. Read the 'Condition of Use' section to determine which TouchDesigner version - Commercial or Pro is right for you. Next, if you are new to TouchDesigner you must first register here, http://www.derivative.ca/Login/RegisterForm.asp . After downloading, run the installer and follow these directions to create a key, http://www.derivative.ca/wiki/index.php?title=Key_Manager_Dialog .
Note, if you have an existing version of TouchDesigner installed please install the latest version of TouchDesigner 088. To ensure TD_Sync runs properly on your computer, please consult the minimum system requirements for running TouchDesigner. These can be found on the download page, http://www.derivative.ca/088/Downloads/
Step 2 - Download and Install Ableton Live
Visit http://www.ableton.com/downloads and download the 'Ableton Live 9 Trial'. Extract and run the 'Setup' program.
Step 3 - Download and Install Max For Live
After installing Ableton Live 8 or Live 9, visit http://www.ableton.com/maxforlive and click the 'Free Trial' button. On the following page click the download button for 'Max 5' for Windows. Extract and run the 'Setup' program. Restart the computer per Max For Live requirements.
The TouchDesigner AbletonSync Environment requires two files, an Ableton Live file,
'TouchDesignerSyncEnvironment_Live.als' and a TouchDesigner file,
You can download the entire demo package here:
Ableton Live System Setup
TouchDesignerAbletonSync.toe in TouchDesigner 088.
In Ableton, if using Live 8 open
TouchDesignerSyncEnvironment_Live8.als, and if using Live 9 open
In Ableton note the TouchDesignerSync Master plugin at the bottom of the interface.
The TouchDesignerSync Master plugin co-ordinates data transmission from Ableton Live to TouchDesigner. The TouchDesignerSync Master plugin can communicate with up to two external computers. Under 'Send to IP Addresses' simply type the IP addresses of each machine running TouchDesigner. For setups running TouchDesigner and Ableton Live on the same computer, enter
Click the both play button in the transport controls. Ableton Live and TouchDesigner are now linked and sharing data. To view the syncronization, in TouchDesigner navigate to
/tdsync/osc/transport and verify the transport ramps in the
get_transport Select CHOP are receiving values.
Note: if the sync transmission gets interrupted at any time, click the 'Reinitialize' button.
Using TouchDesignerSync Master
Now that Live and TouchDesigner are in sync, lets trigger some cues in Live. To see the visuals for a particular Live cue in TouchDesigner, click on the play button of any cue in the TouchDeisgnerSync Master MIDI track. This will just trigger the visuals in TouchDesigner on the next bar.
To see the visuals in sync with the audio, go to the Master track and click on the play button of a particular master cue. The audio and visuals will remain in sync and change on the next bar. Sample some of the Live cues that have been provided in the demo file and watch the visuals in TouchDesigner stay in perfect sync.
Creating Scenes and Cues
In order to build a cohesive audio/video show, the Ableton Live file is organized into a Scenes and Cues structure. Scenes can be thought of as songs, movements or tracks, while Cues are individual sub-units within each Scene.
On the MIDI Track containing the TouchDesignerSync Master plugin, create the scenes and cues to go with the audio of your show. To create a scene or cue, right click in an empty Clip Slot and select 'Insert MIDI Clip'. Then right click again and select 'Rename'. Use the nomenclature of
SceneX can be any name, however the
_mixout suffixes must remain unchanged. For clarity, rename each Scene Clip under the Master Track to match your scene names.
Working with MIDI Notes
The TouchDesignerSync Master Plugin is able to send MIDI data from Ableton Live to TouchDesigner. Drag and drop a MIDI instrument to any clip under the TouchDesignerSync Master MIDI Track. Double click on the Clip Name to access the step sequencer and draw the desired MIDI notes. These notes are directly accessible in TouchDesigner AbletonSync Environment, place a Select CHOP anywhere inside the /tdsync network and type
$OSC_NOTES in the 'CHOP' parameter.
Working with MIDI Sliders and Controls
The TouchDesigner Sync Master plugin includes 32 shared sliders. These sliders can be MIDI mapped to many parameters in Ableton Live. In TouchDesigner these sliders can be accessed from any Select CHOP. In the CHOP parameter, enter
$OSC_CTRLS. From 'Channel Names' select the desired slider,
s1 - s32. This setup enables external control of Ableton via Liine products or TouchOSC whose values can then be passed on to TouchDesigner.
To enable bi-directional functionality of these sliders, ie adding the ability to change sliders values in TouchDesigner to change values in Ableton Live, a MIDI device is required. First setup the MIDI preferences in both Ableton and TouchDesigner. In Ableton go to Options -> Preferences. Select the MIDI device Input and turn Track, Sync and Remote to On.
In TouchDesigner open the MIDI Device Mapper and select the MIDI device output.
Next enable MIDI Map Mode in Ableton by clicking the MIDI Map Mode switch. Any MIDI mappable parameter turns purple.
In TouchDesigner press F5 to launch the TD_Sync Controls. Select the parameter in Ableton to control and adjust the corresponding TD_Sync Control to map the parameter. Unclick the MIDI Map Mode switch.
TouchDesigner System Setup
The TouchDesigner Sync Component is utilized to create the visual portion of a Live-AV performance. The TouchDesigner Sync Component also sychronizes data exchange between the TouchDesignerSync Master in Ableton Live and TouchDesigner. Timing ramps, BPM, MIDI and audio data can all be accessed and mapped to parameters in the visual environment.
System Architecture and Overview
The TouchDesigner AbletonSync Environment consists of three main components, located at /tdsync - System, OSC and Show. While all content creation and editing happens in Show, familiarity with System and OSC will add to an overall understanding of the system architecture.
System contains prebuilt modules and UIs to control and edit the system. These include the Cue Manager, Audio Manager and TD_Sync Controls. On the keyboard press F3 to access the Cue Manager, F4 to access the Audio Manager and F5 to access the TD_Sync Controls.
OSC manages the data transmission to/from Ableton Live. These include MIDI notes, Transport data[timing and tempo], Scene data and Controller data[the 32 controls sent from TouchDesignerLinkMaster].
Show contains the Scenes which in turn contain the visual content of the Live Performance.
Setting up Scenes and Cues
The initial step to creating a visual composition is to setup the Scenes and Cues. First navigate to
/tdsync/show. The TouchDesigner AbletonSync Environment is pre-configured to include 4 Scenes. Copy and paste or cut to create the required number of Scenes. Rename each Scene to match the Scenes from Ableton Live.
Next, edit the
scenes table to match the created scenes. Under the
Name column, enter each scene name. Under the
MixScene column type the scene name to mix to, ie if under
Scene1 is listed type
It is critical that the Cues in TouchDesigner match the Scenes and Cues in Ableton Live. This list must be maintained manually. To setup the Cues, edit the
cues table to match the scenes and cues in Ableton Live. Under the 'Name' column type each Scene as listed under the TouchDesignerSync_Master from Ableton Live utilizing the same
Once the initial Scene and Cue structure is created in TouchDesigner, the next step is to construct a Scene. Enter any scene, ie
/tdsync/show/Scene1 and build the visual system here, utilizing the full spectrum of TouchDesigner tools.
Working with Data from Ableton Live
While constructing visual material for your scene, you can immediately start connecting to data from Ableton Live.
The OSC Global Variables
The TouchDesigner AbletonSync Environment contains useful OSC Global Variables that can be used to quickly pull in data from Ableton Live. To inspect this data check the 'local' Component at
These variables can be utilized anywhere, simply place a Select CHOP and define the desired variable in the CHOP parameter, ie
Global Variable Definitions
TIMEPATH should be set to
PLUGIN_LIVE: The location of the abletonsync OSC plugin.
OSC_ROOT: The root of the
OSC_NOTES: Path to select MIDI note CHOP channels from the TouchDesignerSync_Master Ableton plugin.
OSC_NOTES1-8: Path to select midi note chop channels from the TouchDesignerSync_MidiNoteSend Ableton plugin.
OSC_CTRLS: Path to select chop channels for Ableton plugin controllers.
OSC_TRANS: Path to select chop channels for Ableton plugin controllers.
OSC_SCENE: Path to select DAT table for Ableton's current scene and cue information.
AUDIO_RAW: Path to select chop channels for raw audio waveform.
AUDIO_ENV: Path to select chop channels for resampled audio waveform envelopes.
SCENELIST: Path to select DAT for the show scene property list.
CUELIST: Path to select DAT for the show's list of cues.
SHOW: The root of customizable show content.
OUTRESX: The global show horizontal resolution.
OUTRESY: The global show vertical resolution.
SCENE_CURRENT: The string holding the name for the currently playing scene.
SCENE_NEXT: The string holding the name for the currently fired scene that will play next.
CUE_CURRENT: The string holding the name for the currently playing cue.
CUE_NEXT: The string holding the name for the currently fired cue that will play next.
SCENE_CUE: The string holding the name for the currently playing
To access MIDI data from Ableton Live, locate the 'get_notes' CHOP. Active MIDI notes appear flashing on their channel. Place a Select CHOP and pick the desired MIDI channel. Next place a Math CHOP and navigate to the 'Range' page. Change the 'From Range' to 0 - 127 and the 'To Range' to the desired value, this maps the MIDI Slider Value[0-127] to the desired value in TouchDesigner. Finally export the value from the Math CHOP to the TOP parameter.
MIDI Note Maps
The MIDI Note Maps allow you to rename each MIDI Channel received from Ableton. Double click the
note_maps component at
notes represents MIDI data from TouchDesignerSync Master. 'notes1-8' represent data from the TOUCHDESIGNER SYNC_MNS channels.
To edit, right click and select 'Edit Contents'. Replace
unassigned with the desired name.
To rename the fader contolers from the TouchDesignerSync Master plugin, edit the
fader_labels table located at
Timing ramp data from Ableton is stored in global variables. To access this data, first create a Select CHOP. In the 'CHOP' parameter type,
Next, by 'Channel Names', select the desired timing ramp,
transport_ramp1 for 1 bar,
transport_ramp2 for 2 bars, etc.
The TouchDesigner AbletonSync Environment streams four audio channels from Ableton Live to TouchDesigner. These audio channels can be used to drive audio-reactive visuals. To view the audio channels press the 'F4' key. To access the raw audio feed create a Select CHOP. In the CHOP parameter type
$AUDIO_RAW. Select from 'Channel Names' the desired audio channel.
To access the analyzed audio feed create a Select CHOP. In the CHOP parameter type
$AUDIO_ENV. Select from 'Channel Names' the desired audio channel.
Working with Video and Effects
TouchDesigner is highly optimized for frame-accurate HD video playback, including real-time effects. To add Video to a Scene, create a Movie In TOP. The Video can now be controlled by data from Ableton. For example, to loop video playback based on the tempo, locate the 'get_trans' CHOP , add a Select CHOP and pick the desired Transport Ramp. Next click the middle mouse button on the Movie In TOP and note the 'Length' value. Now, place a Math CHOP and navigate to the 'Range' page. Keep the 'From Range' to 0 - 1 and change the 'To Range' to the Movie In TOP 'Length' value. Change the Movie In TOP 'Play Mode' to 'Specify Index'. Export the value from the Math CHOP to the 'Index' parameter. Change the the 'Units Menu' to 'Index'. The Movie now loops on tempo.
To add an Effect, place any TOP in the Scene, or roll your own shader with the GLSL TOP. To modify an Effect utilizing the shared Sliders, locate the 'get_ctrls' CHOP, add a Select CHOP and pick the desired Slider. Next place a Math CHOP and navigate to the 'Range' page. Change the 'From Range' to 0 - 127 and the 'To Range' to the desired value, this maps the MIDI Slider Value[0-127] to the desired value in TouchDesigner. Finally export the value from the Math CHOP to the TOP parameter.
Managing output to display devices
To manage final output to your display(s) first set your final output resolution at '/tdsync'. Change the 'Width' and 'Height' parameters to the preferred values.
Next, use the Window Comp, '/window', to select the correct output monitor,
To output to an external monitor set the parameter 'Monitor' to '1', or the number corresponding to the monitor you wish to output to. Be sure the 'Borders' parameter is set to 'OFF'.