State Of Lux
Daryl Atkins - Art Director, Designer

MIDI Animation in 3DSMax via iPad & OSC



Sometimes its nice to have a more tactile and immediate approach to animating in a 3D program. Inputting keyframes manually can be a little cold and unintuitive in 3D applications. For a recent realtime project I needed to control a vast array of lights driven by MIDI data from the sound designer, and additionally I wanted to perform layers of expression data passed to the realtime engine (UDK in this case). I’ve done a quick tutorial along with my Max & TouchOSC files for download.

I approached this by putting a quick interface together in TouchOSC on my iPad and created a bunch of sliders and some buttons. This way I could responsively input animation much in the way I could with a lighting desk. However you can use this approach in your own project for animating anything live in the viewport, for example, mapping a slider to a banking angle, or turning a wheel, blending IK, or virtually anything else you can think of. If you can keyframe it, you can control it live in the max view.

To get started, you can use any midi controller, as I didn’t have mine I created one in TouchOSC and uploaded it to the tablet. I set each slider on the interface to output to separate midi CC channels, as many as you require. Then all you need to do is install TouchOSC bridge on your max machine, run it, and make sure both the iPad and computer are connected to the same network, and thats it for setup. The MAX bit requires a little more planning…

I created a scene with 10 helpers, and snapped them spaced along the grid. Its quite important to work with neat values as they are easily scaled when taking them into other applications, it also makes for easier editing and cleaning up keyframes. For readability I labelled each slider in the rig with text and created a bounding shape for each slider. Name each helper respectively so you can identify them easily in the track view. To bring animation into max, we need to assign a motion controller to an objects position. To get started select the first helper in your rig and open the curve editor. Then expand the transform from the list on the left. Find the objects ‘Y Position’ track (although you can map an input to any axis or controller you wish) 

Right click the Y position and select ‘Assign controller’ from the quad menu that appears.

From the following list select ‘>Float Motion Capture’


We need to bind to a midi device connected to your system, click on the box labelled ‘none’. If TouchOsc bridge is running on your system, or if you have any midi hardware connected it should be selectable from the list that pops up. Additionally give the track a name, this will make life much easier when recording your animation as it will be listed in the input stack later on, which you will want identify to save overwriting a track.

From here, set the midi channel you are working in (usually 1). Set the trigger to MIDI Controller (as we are using continuous control data rather than an binary note) and set it to the respective CC number that your interface slider is mapped to. You will need to repeat this for every helper and increment this value for each one


Parameter scaling is the value that your helper is displaced in max’s system units. It makes sense to offset your sliders between 0 – 1 or 0 – 10 depending on what you want to do with it, its a good idea to keep it a helpful scale. 


Once you have setup your sliders its time to test them and record your animation. To access the controls for recording you need open the utilities tab and press the ‘Motion Capture’ box. From the roll-out you can now hit ‘test’. The max viewport will become live and you should be able to move your faders on your iPad. Check each fader moves correctly, you may need to go back to the track editor to fix anything that doesn’t line up. If all’s well you are ready to record the input, right click ‘test’ to exit testing mode. Before you start recording keyframes, you should consider how many tracks you want to record simultaneously. I recommend you limit the number so you don’t saturate the amount of data you are inputting, and also to concentrate on getting a good take. In the tracks box you should see all your assigned controllers labelled in a list. Click on the white dot next to the track name to arm it for recording (the dot will turn to red). Do this for every fader you want to record, you can protect any recorded tracks by deselecting them ensuring they won’t be overwritten once you are happy with the take. Finally select your recording range, and apply any key reduction, though its best to do this in the curve editor afterwards. Hit record and away you go.