c64cast

Controls

Every surface here sets the same flags: a skip from the keyboard, an HTTP request, a pad and a gesture are indistinguishable downstream.

The Commodore's Keyboard#

KeyRunningPaused
C=PauseHold 3 s to resume
CTRLSkip to the next scene
SHIFTCycle style, mode, overlays
SPACEOpen the on-C64 menu

Chords resolve rather than combine: C= plus CTRL is a pause, and SHIFT alongside either is ignored. The menu needs [menu].enabled, a backend that can read memory, and takes the cursor keys while it is open.

Gestures#

[vision].enabled, over the shared camera.

GestureRunningWith [vision].performance
PinchPause; hold to resumeHold: toggle effect layer 1
SwipeSkipNext clip
Open handCycle styleHold: toggle effect layer 2

Pinch-to-resume is unchanged in both modes, so a paused show always recovers the same way.

MIDI: What Ships Mapped#

[midi_control].enabled, no cc_map written. Sized for a 16-pad grid with a knob bank.

MessageAction
Notes 36–39Skip, cycle style, pause/resume, jump to scene 0
Notes 40–55Jump to scenes 0–15
Program change 0–15The same bank, for foot controllers
CC 13–16effect.decay, source.speed, source.scale, source.scroll_speed

CC 1, 7 and 71–75 are left free for the midi scene's own synth controls. Nothing is mapped to Record. Precedence is these defaults, then a learned profile, then your own cc_map.

MIDI: The Actions#

GroupActions
Showpause, resume, toggle_pause, skip, cycle_style, jump
Parametersparam, fx_toggle
Videotransport.play_pause, transport.stop, transport.loop_toggle, transport.rw, transport.ff, transport.jog, transport.record, loop_slot
Performanceclip_launch, tempo_tap, look_save, look_recall
Feedbackosd.position

A cc_map entry is a type (note, cc, pc or mmc), a number, an action, and for param a target.

Pad Chords#

Scrubbing a video, rw and ff double their speed every three-quarters of a second, up to thirty times real time. loop_toggle marks A, then B, then releases.

PressDoes
loop_slotRecall that loop
loop_slot + StopSave the current loop into it
loop_slot + RecordClear it

MMC frames have no release, so they cannot hold a chord. Map these to notes.

Pad Lights#

[performance].midi_feedback opens an output port and colors a pad with a note-on at its own number: Launchpad, APC, MPC and Push. Arturia's proprietary lighting is not driven; use the console instead.

LightMeans
BrightPlaying
BlinkingArmed
DimLoaded
LitEffect layer on

Live Parameters#

A param target is holder.name. A knob scales into the parameter's range; over a fixed set of values it selects across the set, and a pad steps through it. A target the running scene does not have is a silent no-op, so a whole knob bank can stay mapped across a mixed playlist.

Declared by, overleaf, names who has a target — or, past all but, who lacks it. source.ring_freq says moire2: dead until moire2 is on screen.

HolderReaches
sourceThe generative scene's generator
effectThe first effect layer
fx0, fx1, …One specific layer
sceneThe scene itself
modeThe display mode