Skip to content

Lighting Looks

A Lighting Look is a keyframed DMX scene. You author it once (here) and reference it from cues or logic nodes (which fire it). When fired, the look interpolates its keyframes over its duration and produces DMX values on the wire.

When to use a look vs. a direct DMX cue

There's no "direct DMX cue" — every DMX cue references a look. Looks are the unit of lighting authoring.

  • Static state ("warm wash") — one keyframe at t=0 with all the values, duration 0
  • Dynamic state ("sunrise" — fades from dark blue to gold over 3 sec) — two keyframes at t=0 and t=3000ms
  • Sequence ("strobe" — alternating on/off for 4 seconds) — many keyframes

Authoring a look

Open the Lighting Looks module (Ctrl+9).

  1. Click + Look. A new look appears in the list.
  2. Set its Name (top of the inspector). Use descriptive names: "Sunrise", "Pre-show ambient", "Climax red wash". Avoid Look 1, Untitled 2.
  3. Set its Duration in milliseconds.
  4. Add keyframes by clicking + Keyframe at <time>. Each keyframe is a row with:
  5. Time (ms) — when in the look's timeline this snapshot applies
  6. Values — a list of device:channel → 0..255 entries

A keyframe says: "at this moment in the look, these channels should have these values."

Between two keyframes, Runtime linearly interpolates each channel that's mentioned in both. A channel mentioned in only one keyframe holds that value for the whole look.

Example: Sunrise

Look name:  Sunrise
Duration:   3000 ms

Keyframe at 0:
  dev-1:ch-1 = 0       (red, off)
  dev-1:ch-2 = 64      (amber, dim)
  dev-2:ch-1 = 0       (second fixture, off)

Keyframe at 1500:
  dev-1:ch-1 = 80      (red ramping up)
  dev-1:ch-2 = 200     (amber peaking)

Keyframe at 3000:
  dev-1:ch-1 = 200     (red full)
  dev-1:ch-2 = 255     (amber peak)
  dev-2:ch-1 = 200     (second fixture coming up)

When this look fires: - At t=0ms, slot 1 (red) is at 0, slot 2 (amber) is at 64 - At t=750ms, slot 1 has interpolated to 40 (halfway between 0 and 80), slot 2 to 132 - At t=1500ms, slot 1 is 80, slot 2 is 200 - At t=3000ms, slot 1 is 200, slot 2 is 255, and the second fixture's slot 1 has rapidly come up from holding 0 to 200 over the second half

Channel addressing

In v0.1.0, channel names like dev-1:ch-5 map to DMX universe 1, slot 5.

The dev-1 part is currently informational — it's how Studio organizes which channels belong to which device, but Runtime doesn't yet use it for routing. It just looks at the ch-N part.

This means: - All looks output on universe 1 by default - Multiple devices' channels share the same universe — be careful not to use the same ch-N on different devices unintentionally - Multi-universe mapping is a v0.2 feature based on patches in the show

For v0.1.0: keep all your fixtures on universe 1, and assign each one a unique range of slots (fixture A uses slots 1-8, fixture B uses 9-16, etc.).

Tips for authoring looks well

Sparse keyframes are fine

You don't need a keyframe every 100 ms. Two or three keyframes can describe a complex curve when interpolation handles the in-between.

Use round numbers when starting out

Powers of 256 are arbitrary; round numbers like 0, 64, 128, 192, 255 are easier to think about.

Name your looks meaningfully

Sunrise not look-3. The cue inspector shows the look name; designers and operators read it.

Keep durations close to the perceived effect

A 3-second "fade up" feels right. A 60-second look that's actually meant to be a 3-second fade will keep firing slowly — the look's duration is its perceived duration.

Build a library of base looks

For a multi-room show, common patterns: - "Off" — all values 0, duration 100ms (fast blackout) - "Pre-show" — warm wash, duration 0 (static) - "Climax" — saturated, dynamic, duration 4-8 seconds - "Cleanup" — slow decay, duration 5-10 seconds

Reuse these across multiple cues. Don't author "Sunrise (slightly warmer)" — make it a parameter of the look or accept that it's another distinct look in the library.

Common mistakes

A look with no keyframes

Validator warns: "look has no keyframes." It will fire and do nothing. Either delete it or add at least one keyframe.

A look longer than the cue's duration

The cue's duration field doesn't constrain look playback. The look plays for its own duration. If a 5-second cue references a 30-second look, the look keeps playing while the next cue fires — overlapping behaviors result. Match cue duration to look duration when in doubt.

Same channel in only some keyframes

If keyframe A has ch-1=0 and keyframe B doesn't mention ch-1, the channel holds at 0 for the whole look. If you wanted it to interpolate to a different value, you must mention it in both keyframes.

Forgetting blackout

If a "climax" look ends at full red, and the next cue doesn't change the lights, the audience sees red until something else changes them. Always plan a "blackout" or "next state" look to follow saturated effects.

Two cues firing the same look at once

You GO twice in quick succession; both fire the same look. Runtime handles this by canceling the first instance when the second starts (look IDs are tracked). Net effect: the second one wins. Usually fine; can produce odd flickers if you weren't expecting it.

Inspecting looks at runtime

In v0.1.0 you can't inspect looks at runtime — Runtime sends them as DMX, but doesn't echo back which look is currently active.

To debug: - Use sACNView (free Windows app) to watch DMX values on universe 1 in real time - Watch the Runtime log: each DMX cue fire is logged with the look name - For visual debugging, fire looks one at a time and verify each fixture responds as expected