0 %

Live

Live performance

The Live tab turns Grafer into a non-linear, event-driven conductor. Cells are wired into a rhizome — a graph of weighted edges — and during performance the conductor walks the rhizome cell by cell, picking the next cell by weighted random or by external OSC trigger. Live performers see the score swap on their tablets as cells advance. External hardware (sensors, foot pedals, conductor apps, robotics) can drive transitions via OSC over WiFi or Ethernet.

The Rhizome

Open the Live page (V tab) and pick cells from the score panel on the left to put them on the rhizome canvas. Drag between cells to wire weighted edges — the percent label on each edge shows its share of the outgoing decision. Double-click a cell to set it as the conductor's starting point. Loop forever in the transport bar lets the conductor restart from the start cell when it hits a dead-end — useful for indeterminate-duration pieces.

Edge weights are relative: weights of 3 vs 1 vs 1 produce a 60% / 20% / 20% split. With one outgoing edge, any positive weight is 100% — the percent only matters when the cell has alternatives.

Conductor Controls & Recording

The transport bar has Play, Pause, Skip, and Stop. Pause is a soft pause — the current cell finishes naturally and the conductor holds at the next boundary until you resume. Skip is immediate: kills the current cell's MIDI and advances now. MIDI output is optional — the conductor still runs silently if you only need to drive performers / hardware.

Every cell entry is recorded with its enter / exit timestamps and the decision that led to it (weighted random, OSC mapping, edge trigger, jump, skip, restart). After Stop, click Export JSON in the bottom strip to download the full performance trace.

Live Performer View

Open a Live performance session from the Live page — you'll get a six-character code that performers type into their tablets at /perform (or follow the share-link). Each performer claims a voice by name — "Cello", "Violin 1", etc. — and that claim survives every cell change. As the conductor advances, each performer's score swaps to whichever cell is currently playing, with their voice highlighted. A "LIVE · Now playing <Cell Name>" strip flashes on cell change so the performer notices the transition without staring at the bar header.

When a cell doesn't include a performer's voice, they see a tacet screen until the next cell that reintroduces it.

OSC Input — Driving the Conductor

Click Listen on the OSC input panel — the server allocates a UDP port (default 7400, multi-tenant range up to 7463) and prints the host:port for your hardware to target. Each user gets their own port; ports persist for ~5 minutes after disconnect so a refresh doesn't re-aim your hardware.

Three layers of triggers, in priority order at each cell boundary:

LayerWhat it does
Score-level mappingsAddress → action: next / skip / pause / resume / stop / go-to-cell. Highest priority — meant as transport overrides.
Edge triggerAddressPer-edge OSC address that overrides weighted random for that edge specifically.
Weighted randomDefault fallback — picks the next cell by edge weight as usual.

The Recent packets monitor in the panel shows decoded incoming OSC live so you can verify your hardware is firing.

In-Cell Reactive Nodes

Score-level OSC mappings fire at cell boundaries. For instant mid-cell reactions — layering a chord on top of a drone, triggering a percussion hit on a sensor — use the LIVE category nodes inside the cell graph itself.

NodeRole
OSC InListens for an OSC address while the cell is playing. Outputs a trigger port that fires on every matching packet.
Chord OutWhen triggered, plays a chord (pitches + velocity + duration + channel) on a MIDI channel of your choice. The pitches are evaluated once at cell start — wire from any pitch source (pitch.static, pc.tone-row, spectral.harmonics, etc.) for richer chord vocabularies.

Use a different MIDI channel from the cell's main voices to avoid stepping on currently sounding notes. Reactive paths layer on top of the cell's regular MIDI playback — the schedule isn't disturbed.

Hardware Integration (ESP32 / Arduino)

Wiring an ESP32 or Arduino to send / receive OSC from Grafer is a few lines of code with the CNMAT OSC library. The Hardware integration guide covers network setup, library install, and includes four ready-to-run example sketches:

SketchPurpose
esp32_send_oscSingle-button pedal — short press fires /grafer/next, long press fires /grafer/skip.
esp32_receive_oscLED + motor reactions to incoming OSC from score.osc-send nodes.
esp32_bidirectionalThree buttons + a potentiometer + two outputs — the realistic foot-controller skeleton.
arduino_uno_ethernetWired alternative for when WiFi is too noisy.

The same panel that allocates the OSC port has a Hardware setup  ↗ link that opens the guide directly.

Try it on your own material.

Create a free account14 days of Composer Pro, no card needed. Every account opens with the Examples folder.