Performing
Clips#
A clip is a scene fired from a pad. It takes every key an ordinary scene takes, plus how it launches.
[[performance.clips]]
slot = 1
pad = 60
type = "generative"
source = "tunnel"
launch = "trigger"
quantize = "bar"
launch |
Behavior |
|---|---|
trigger |
Plays through, then loops |
gate |
Plays while held, restores what it interrupted |
toggle |
Latches on and off |
quantize |
Fires |
|---|---|
off |
At once |
beat / bar |
At the next beat or bar |
Building a clip costs real setup time, so a press starts that work at once and the count-in hides it. A launch remembers what it interrupted, one level deep. A stopped clock fires immediately, so a pad always does something.
Tempo#
[performance].tempo_source |
The grid follows |
|---|---|
internal |
[performance].bpm, re-anchored by a tempo_tap pad |
midi |
External MIDI clock, on clock_port if not the control port |
audio |
The tempo detected on a mic or listen scene |
Phase is integrated from the tempo, never snapped, so it cannot jerk backward when a clock byte lands late, and silence freezes the audio grid. Launch quantization, effects with mod_source = "clock" and the WLED broadcast under broadcast_tempo_fallback all consume it.
Looks#
A look is the active clip plus the on-screen scene's whole effect-chain state: what is bypassed, what each parameter is set to, and what modulates it. look_save captures a slot, look_recall re-fires it. Recalled onto a differently built chain, it applies what it can by layer index.
The Console#
Two pages, both served by c64cast. [control].enabled and the control extra serve 127.0.0.1:8765.
| Route | Does |
|---|---|
GET /perf |
The phone console: clips, rack, tune, tempo, transport, looks, jump |
GET /status |
Scene, index, paused, write latency |
GET /scenes |
The playlist, and which scene is live |
POST /pause, /resume, /skip |
What the keyboard does |
POST /reload |
Rebuild the playlist at the next scene boundary |
Every route takes ?system= naming one system, or all. Nothing on the console reaches the audience's screen.
c64cast --serve and the web extra serve the full browser console on 127.0.0.1:8123 instead — a host that holds the Commodore across shows.
| On the Live screen | Does |
|---|---|
| Screen | The C64's own picture, tapped off the VIC by the U64's FPGA. Watch starts it, Stop ends it. U64 only |
| Tempo bar | Tap tempo, pause, resume, skip |
| Scenes | The playlist, with a tap to jump — a cut, no interstitial |
| Tune | The running scene's color, generator and scope knobs |
| Keep | Writes what you tuned into the config the show is running from |
It prints a login URL holding its own token at startup; that token can stop the show, so hand out the read-only link from Session instead. [web].screen_fps = 0 turns the picture off. /perf needs no bundle — reach for it if make web was never run.
WLED#
| Direction | Setting | Does |
|---|---|---|
| Out | [wled].broadcast |
Fixtures react to the music, with no microphone |
| In | [wled].listen |
The WLED app or Home Assistant drives c64cast |
| In | A wled scene |
LedFx, xLights or Jinx! streams pixels to the Commodore |
Listening, the mapping is a pun on WLED's own vocabulary: power is pause, brightness is a real screen dim, the playlist is the effect list, color forces a palette, and speed and intensity are the scene's live parameters.
Several Commodores#
The control plane, the MIDI listener and the WLED device are process-wide: one of each for the whole wall.
| Surface | Addresses a system by |
|---|---|
| MIDI | Channel N is system N in ensemble order; broadcast_channel (16) is all |
| WLED | A segment, in ensemble order |
| Console | A tab per system |
At most one system may sound at a time, and a system that cannot claim the audio slot skips to its next quiet scene.
Before the Show#
| Command | Does |
|---|---|
c64cast --list-devices |
Cameras and audio inputs, with identifiers |
c64cast --midi-setup |
Learn a controller, write a reusable profile |
c64cast --save-settings |
Persist this machine's URL, devices, SID model |
c64cast --doctor --skip-probe |
Check the environment and the config, offline |