Skip to content

    These docs are a work in progress. The software can already be useddownload WavePhase.

    Documentation

    Docs for WavePhase v0.9.3 · reviewed 2026-08-10

    A newer app release may have shipped since this review. These pages describe the latest public WavePhase release. If something looks different in your build, check for an app update.

    Nodes & Signals

    Macros & Variables

    Two ways to stop repeating yourself. A macro bundles a chunk of patch into one reusable node; a variable carries a value across the graph without a wire.

    Macros: a patch inside a node

    Select a group of nodes and Collapse to macro. They become a single node with input and output pins you define — and you can drop as many copies of it into the show as you like.

    • Every instance shares one definition. Edit the macro once and every copy updates.
    • Enter macro opens the inner graph in its own editor, with a violet frame so it is obvious where you are.
    • Expand macro does the reverse — inlines a copy's nodes back onto the main graph when you want to break it apart.

    Boundary pins

    Inside a macro, Macro in and Macro out nodes are the edges of the box. Whatever you wire into a Macro out appears on that pin of every instance; whatever an instance receives shows up on the matching Macro in.

    • Add and remove pins from the instance inspector — the boundary nodes follow. They cannot be deleted from inside the macro, which is what keeps every instance's pin list consistent.
    • Each pin has a name and a type, so a macro can take a F32 level and a Color and hand back a F32.

    Live values while editing

    The macro editor previews with the values a real instance is receiving, so the inner chain shows live numbers rather than zeros while you work on it.

    The macro editor is the full editor

    Everything you expect from the main graph works inside a macro — this is the same editor, pointed at the macro's own nodes.

    • Ctrl+F node finder, scoped to the macro's nodes.
    • F to fit the view, or fit to the current selection.
    • Snap-to-grid, using the same grid setting as the main graph.
    • Live values on pins and wires, and the same wire animation.

    Variables: a value without a wire

    A variable is a named value any node can read or write. Use Set to write it and Get to read it — no wire between them.

    • Ideal for values used all over the show — a master intensity, a global hue, a look index.
    • Variables are typed, so a F32 variable reads back as a float wherever you use it.
    • Several setters can write the same variable; the most recently edited one wins, rather than whichever happened to evaluate first.

    Wires or variables?

    Wires make data flow visible, which is usually what you want. Reach for a variable when a wire would have to cross the whole patch, or when many unrelated places need the same number.

    Making a macro

    1. 1

      Build it once

      Wire up the behaviour for a single fixture or a single effect until it works.
    2. 2

      Select and collapse

      Marquee-select the nodes and press Collapse to macro in the graph toolbar.
    3. 3

      Name the pins

      In the instance inspector, name the inputs and outputs after what they mean — level, colour, rate.
    4. 4

      Reuse it

      Add more instances from the add-node menu. Each gets its own inputs while sharing the logic.

    Where to go next

    Was this page helpful?