03 / IMPORT AND BAKE

Import a score and use it in Blender

Before importing

  1. Set the Blender scene frame rate to the frame rate you intend to render.
  2. Set the scene start frame. The importer places score time 0.0 at this frame.
  3. Export the song from Generant or Renoise OSC Sequencer as an OSC score JSON file.
  4. If an address should switch cameras, add its camera route in the OSC Score Cues panel before importing.

Import the OSC score

  1. Open a 3D View and press N to show the sidebar.
  2. Open the OSC Bridge tab, then the OSC Score Cues panel.
  3. Click Import / bake OSC score and select the exported JSON file.
  4. When the import finishes, select the new Rack OSC Score Empty in the Outliner.
  5. Open Object Properties → Custom Properties. Each OSC address that can be represented numerically appears as a property named osc:/address.
  6. Scrub the timeline. Numeric properties should change on the frames corresponding to their score times.

Importing clears and rebuilds animation on the Rack OSC Score Empty. It also replaces timeline markers whose names begin with [OSC Score]. It does not change the scene frame range.

What each score message produces

MessageResult after importTypical use
/visual/kick
no arguments
The custom property increases by one at every event. A timeline marker is added.A trigger count. Use this when you need to know that another hit occurred.
/visual/energy 0.75A numeric custom-property keyframe with value 0.75. A marker is added for event or state messages.Drive light energy, scale, rotation, shader values, Geometry Nodes inputs, or modifiers.
/visual/energy 0.75
kind: curve
The same numeric keyframe, without a timeline marker.Frequently sampled automation where hundreds of markers would be useless.
/song/part "intro"The value is stored in the embedded OSC Score.json text and restored while scrubbing. It is not a numeric F-Curve.Named sections or state used by scripts. Blender numeric drivers cannot use the string directly.
/color 1 0.2 0.4The argument list is stored as JSON text and restored while scrubbing. It is not split into three numeric curves.Scripted state. For drivers, send separate numeric addresses such as /color/r, /color/g, and /color/b.

All numeric cue keyframes use constant interpolation. To create an attack and release, write both values into the score. For example, send /visual/snare 1 on the hit and /visual/snare 0 shortly afterward. Use a curve event when you do not want a marker for each sample.

Drive an object property

  1. Select the Blender property you want to control, such as a light's Power, an object's Scale X, or a material node input.
  2. Right-click the property and choose Add Driver.
  3. Open the Drivers editor and select the new driver.
  4. Add a variable. Set its type to Single Property.
  5. Set the variable ID type to Object and choose Rack OSC Score.
  6. Set Path to the custom property, for example ["osc:/visual/snare"].
  7. Use the variable in the driver expression. If the variable is named snare, snare * 1200 turns a 0–1 cue into light power from 0 to 1200 W.
TargetDriver expression example
Light powerkick * 1500
Uniform scale1 + kick * 0.35
Emission strength0.5 + energy * 8
Rotation in radiansturn * 6.283185

For Geometry Nodes, expose the value as a group input or store it on the object, then add the driver to that input. For a material, add the driver to the numeric socket's Default Value. If the property has multiple components, add a separate driver to each component you need.

Camera changes

  1. In OSC Score Cues, click Add camera cue.
  2. Enter the exact OSC address, such as /song/part2.
  3. Choose a Blender camera.
  4. Import the score again.

Every non-curve event at that address creates a timeline marker with the selected camera attached. Blender switches to that camera at the marker.

Use a parsed .osc parameter track instead

The main OSC Score Bridge panel has a separate workflow for text .osc parameter tracks. This path writes F-Curves directly onto the target object; it does not use the Rack OSC Score Empty or drivers.

  1. Choose the .osc file in the main panel and click the folder button.
  2. Open Tracks. Each detected parameter shows its event count and numeric range.
  3. Click Map beside a track.
  4. Enter the target object name, Blender data path, and array index. Examples: location index 2, rotation_euler index 1, or a custom property path such as ["amount"].
  5. Set the input range from the score and the output range required by Blender.
  6. Choose Instant, Linear, Smooth, Overshoot, Bounce, or Lag. For non-instant modes, set the transition time in seconds.
  7. Click Bake All F-Curves.

Rebaking a mapping replaces the F-Curve for that exact data path and array index. Clear Baked F-Curves removes curves created for mappings marked as baked.

Check the result before rendering

  1. Scrub past several event frames and confirm the driven parameters change.
  2. Check the last score event against the scene end frame. Import does not set the end frame for you.
  3. For a seamless loop, make the state at the loop boundary match the first frame and render without a duplicate final frame.
  4. Stop live listening before the final render so incoming UDP messages cannot change scene state.
Development →