LUMA
User Guide

Annotate Your Tracks

How to place patterns on a timeline, layer them with blend modes, and choreograph your light show in the Track Editor.

Step 5: Annotate Your Tracks

The Track Editor is a timeline view where you place patterns onto your tracks. This is where you choreograph your light show.

Annotations

An annotation (also called a "score" internally) is a pattern placement on the timeline. Each annotation has:

PropertyDescription
Start/End TimeWhen the pattern activates and deactivates, specified in seconds along the track's timeline.
PatternWhich pattern to run during this time window.
Z-IndexStacking order for compositing. Higher z-index means the annotation is "on top" of lower ones. When two annotations overlap in time, the one with the higher z-index is composited on top.
Blend ModeHow this annotation's output combines with the layers below it (see Compositing below).
ArgumentsValues for the pattern's exposed arguments. If the pattern has a Color argument, you set the specific color here. If it has a Selection argument, you set the tag expression here.

You can place as many annotations as you want on a track. They can overlap, stack, and interact through the compositing system.

Compositing and Blend Modes

When multiple annotations overlap in time, Luma resolves the result using a compositing system inspired by Photoshop's layer blending. Layers are processed bottom-to-top by z-index, and each layer's blend mode determines how it combines with the accumulated result below it.

Replace

The top layer completely overwrites the bottom. What you see is what you get. Use this when you want a pattern to take full control during its time window.

Add

Values are summed, clamped to 1.0 maximum. Lights get brighter. If the base layer has a fixture at 0.3 brightness and the top layer adds 0.5, the result is 0.8.

Use this to layer multiple effects that accumulate -- a subtle background wash plus a beat pulse plus accent hits.

Multiply

Values are multiplied together. This always darkens (since multiplying by anything less than 1.0 reduces the value).

Use this for "ducking" effects -- create a pattern that outputs low values on the kick drum to darken everything else in sync with the beat.

Screen

The inverse of Multiply. Values are combined using the formula 1 - (1-base) * (1-top). This always lightens.

Useful for adding glow or bloom effects without washing out the base layer.

Max

Takes the brightest value at each point. If the base layer has red at 0.8 and the top layer has red at 0.3, the result is 0.8.

Use this when you want multiple patterns to "compete" and the strongest signal wins.

Min

Takes the dimmest value at each point.

Use this for masking -- a pattern that sets fixtures to 0.0 will cut through anything below it.

Value

The top layer's luminance (brightness) controls how much it overrides the base. Bright areas of the top layer dominate; dark areas let the base show through. This creates a natural "intensity-as-opacity" effect.

Blend Mode Summary

ModeFormulaEffectUse Case
ReplacetopFull overrideBase layers, solo effects
Addmin(base + top, 1.0)Always brightensLayering accents, strobes, pulses
Multiplybase * topAlways darkensRhythmic ducking, masking
Screen1 - (1-base) * (1-top)Always lightensGlow, bloom, soft overlays
Maxmax(base, top)Brightest winsCompeting patterns
Minmin(base, top)Dimmest winsHard masking, cutouts
ValueLuminance-weighted blendIntensity as opacityNatural intensity layering

Color Compositing Details

For color (RGBA) blending, Luma applies the blend mode to the RGB channels and then does alpha compositing on top. This means:

  • A pattern outputting a color with alpha = 0.5 will blend at 50% opacity with the layer below, regardless of blend mode.
  • A pattern outputting alpha = 1.0 at full opacity will apply the blend mode at full strength.
  • A pattern outputting alpha = 0.0 will be completely transparent (invisible).

This gives you fine-grained control: use alpha to control how strongly a layer participates in the composite, and use blend modes to control how it participates.

Pre-Positioning During Gaps

During gaps between annotations -- moments where no pattern is active for a set of fixtures -- Luma automatically handles the transition. Moving head fixtures in particular benefit from this: Luma can move them to their starting position for the next pattern during the gap, so they are ready when the next pattern starts. This prevents the jarring "snap" of a moving head jumping to a new position at the instant a pattern begins.

Practical Compositing Examples

Example 1: Layered Club Look

Layer a slow color wash at z-index 0 (Replace) as your base look. Add a beat-synced dimmer pulse at z-index 1 (Multiply) to create rhythmic breathing. Add a strobe hit at z-index 2 (Add) for impact moments.

The wash provides the color palette. The multiply creates rhythm by darkening on beats. The additive strobe punches through everything at key moments.

Example 2: Competing Chases

Place two spatial chase patterns targeting different fixture groups, both using Max blend mode. Each chase runs independently, and at any given moment the brightest signal wins. This creates a natural-looking interplay where patterns overlap without muddy blending.

Example 3: Tension-Driven Masking

Place a full-brightness base layer at z-index 0 (Replace). Add a harmonic-tension-driven pattern at z-index 1 (Multiply) that outputs values near 1.0 during tense musical moments (letting the base through) and values near 0.3 during calm sections (darkening the base). The room breathes with the harmonic complexity of the music.

Next Steps

With your tracks annotated, you are ready to perform live -- connecting your Denon DJ deck and broadcasting DMX to your venue's fixtures.

On this page