c64cast

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"
launchBehavior
triggerPlays through, then loops
gatePlays while held, restores what it interrupted
toggleLatches on and off
quantizeFires
offAt once
beat / barAt 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_sourceThe grid follows
internal[performance].bpm, re-anchored by a tempo_tap pad
midiExternal MIDI clock, on clock_port if not the control port
audioThe 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#

[control].enabled and the control extra serve 127.0.0.1:8765.

RouteDoes
GET /perfThe phone console: clips, effect rack, tempo, looks
GET /statusScene, index, paused, write latency
GET /scenesThe playlist, and which scene is live
POST /pause, /resume, /skipWhat the keyboard does
POST /reloadRebuild 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.

WLED#

DirectionSettingDoes
Out[wled].broadcastFixtures react to the music, with no microphone
In[wled].listenThe WLED app or Home Assistant drives c64cast
InA wled sceneLedFx, 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.

SurfaceAddresses a system by
MIDIChannel N is system N in ensemble order; broadcast_channel (16) is all
WLEDA segment, in ensemble order
ConsoleA 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#

CommandDoes
c64cast --list-devicesCameras and audio inputs, with identifiers
c64cast --midi-setupLearn a controller, write a reusable profile
c64cast --save-settingsPersist this machine's URL, devices, SID model
c64cast --doctor --skip-probeCheck the environment and the config, offline