Skip to main content
Documentation

Build an Effect in the Node Editor

Wire nodes into the Output node to build a color wave that flows across your fixtures and shifts over time.

In this guide you build a lighting effect from nothing: a rainbow that flows across your fixtures and cycles over time. You make it by placing nodes on a canvas and wiring them together, left to right, until color reaches the Output node. A node is a single small operation (read a position, add two numbers, build a color), and an effect is the graph of nodes you connect. The engine compiles that graph and renders it live.

If you followed See Your First Effect, you already ran a ready-made effect on a layer. This is the other half: instead of dropping in a finished effect, you wire one up yourself. You need one thing in place first, a fixture that is patched and added to a mapping, which that quick-start page walks through. With that done, the Preview has something to light.

How the canvas works

Everything happens in the Node Editor panel. Pan the canvas by scrolling, and zoom with a pinch gesture or Cmd+scroll (Mac) / Ctrl+scroll (Windows). Nodes carry input ports down their left edge and output ports down their right, so data flows left to right and arrives at the Output node on the right.

One rule governs every connection: a port accepts a wire only where the two data types match exactly. Ports are colored by type (Number ports gray, Vector ports purple, Color ports blue), and there is no automatic conversion, so you cannot drop a Vector into a Number input or a Number into a Color input. When two types differ, you route through a conversion node that turns one into the other. That single rule is what the build below keeps running into, and it is covered in full on Connecting Nodes and Data Types.

Every effect has exactly one Output node, and it is the only required node. Nothing renders until color reaches it, so treat the Output node as the finish line and build backward toward it.

Create a new effect

Open the Node Editor panel. In its toolbar, open the effect selector (the dropdown at the top, or press Cmd+P) and choose New effect. The canvas resets to a single Output node, which is where you are heading.

Give it a name so you can find it later. Click Rename in the toolbar and call it something like Color Wave.

Put it on a layer so you can watch

An effect only shows in the Preview when it is running on a layer. Adding one and bringing it up means the Preview updates live as you wire, so you see each connection take hold.

  1. Open the Timeline panel and click Add new layer.
  2. In the picker, choose your Color Wave effect.
  3. A new layer starts at opacity 0, so it renders nothing. Set its Opacity to 1 in the timeline row to bring it up.

The Preview stays black even so, because a new effect's Output node still holds its default color of black. That is expected. The rest of this guide fills in the color. For how layers stack and blend, see Effects and Layers.

Add the position source

The wave needs to know where each fixture sits, which comes from the Pixel Position node.

  1. With the Node Editor focused, press Shift+A (or right-click the canvas) to open the node browser.
  2. Type pixel position and click Pixel Position to place it.

Pixel Position has one output, Vector, carrying each fixture's X, Y, Z location. A wave that varies across the rig needs a single coordinate, a Number, but the Vector output cannot plug into a Number input directly. Convert it:

  1. Open the node browser again and add a Split Vector node (in the Vector category).
  2. Drag from Pixel Position's Vector output to Split Vector's Vector input. Both ports are Vectors, so the wire connects.

Split Vector breaks the position into X, Y, and Z number outputs. You will use X, so the wave sweeps along that axis of your rig.

Add time and combine

Position alone gives a still gradient. Motion comes from the Time node, which advances on its own at the project's tempo (a new project runs at 120 BPM), so nothing needs to be plugged in for it to animate.

  1. Add a Time node from the Input category. It exposes several timing outputs; you want Cumulative Progress, which counts up continuously and never resets.
  2. Add an Add node from the Arithmetic category.
  3. Wire Split Vector's X output to Add's A input.
  4. Wire Time's Cumulative Progress output to Add's B input.

Add's output is now a single number that differs per fixture (from X) and climbs over time (from Cumulative Progress). That combination is what makes the finished wave travel.

Shape it into a wave

Feed that climbing number into an oscillator so it rises and falls smoothly instead of growing without bound.

  1. Add a Sine node from the Wave category. (A Sine also exists under Trigonometry; use the one grouped under Wave.)
  2. Wire Add's Number output to Sine's Angle input.

Sine's output swings smoothly between -1 and 1, over and over, as its input climbs. That is your wave.

Turn the wave into color

A swinging number becomes a rainbow through hue.

  1. Add an HSL to RGB node from the Color category.
  2. Wire Sine's Number output to the Hue input.
  3. Select the HSL to RGB node. In the Parameters panel, set Saturation to 1 for vivid color and Lightness to 0.5 for full brightness. These are the two ports you leave unconnected, so their values come from the fields you type here.

HSL to RGB gives you three separate number outputs, Red, Green, and Blue. The Output node wants a single Color, so assemble one:

  1. Add a Combine Color node from the Color category.
  2. Wire HSL to RGB's Red, Green, and Blue outputs to Combine Color's Red, Green, and Blue inputs.

Combine Color packs those channels into one Color value on its Color output.

Connect to Output

One wire remains.

Drag from Combine Color's Color output to the Color input on the Output node. Both ports are Colors, so it connects, and color finally reaches the finish line.

The Preview lights up. Each fixture shows a hue set by its position, and the whole rainbow shifts as time advances. Use Clean Up in the toolbar to tidy the layout.

Change the speed

The wave animates at a fixed rate, but the layer controls how fast. Open the Layer Settings panel, find the Time section, and adjust Speed. It starts at 1; raise it to run the animation faster, lower it toward 0 to slow or freeze it. Speed scales the timing that the Time node reads, so the whole effect responds at once.

Experiment

A few small changes take this in new directions:

  • Widen or tighten the spatial spread by adding a Multiply node between Split Vector and Add, scaling X before it enters the wave.
  • Swap Split Vector's X output for Y or Z to sweep the rainbow along a different axis of your rig.
  • Replace Cumulative Progress with Beat Progress on the Time node to lock the motion to the beat.

Next steps