Chapter 5
Going Further
Everything so far has been about one Commodore, running by itself. This chapter is about the ambitious end of c64cast: several machines working as one screen, playing a playlist live like an instrument, and connecting the Commodore to the modern lighting ecosystem. None of it is necessary. All of it is fun.
Driving Several Commodores at Once#
One c64cast process can run any number of Commodores simultaneously, each with its own connection, its own audio, and its own playlist. Together they become a video wall.
The arrangement has one master file listing the systems, and one ordinary configuration file per machine:
# master.toml
[ensemble]
systems = [
{ name = "left", config = "left.toml" },
{ name = "middle", config = "middle.toml" },
{ name = "right", config = "right.toml" },
]
[interstitial]
duration_s = 3.0
c64cast --config example:ensemble/master
Two things are worth knowing before you build one.
The order of systems is meaningful. It describes the physical left-to- right arrangement of the screens. c64cast uses it to spread content across the wall, so listing them out of order produces a wall that is out of order.
Each system file works on its own. Every entry in systems points at a complete, standalone configuration, so you can debug one screen in isolation with --config left.toml before asking three of them to cooperate.
Settings in the master file cascade down to the individual systems, filling in anything they have not set for themselves. That way the interstitial style, the color pipeline and the control settings are written once rather than three times.
The real reward is coordination. c64cast can treat the whole wall as a single canvas: a big_text message scrolls off the right edge of one screen and onto the left edge of the next, arriving as one continuous line of letters across three physical Commodores.
Playing c64cast Live#
A running playlist can be driven from a MIDI controller, which turns c64cast into something closer to a performance instrument than a media player.
[midi_control]
enabled = true
port = ""
osd = "bottom"
With a controller connected you can jump between scenes, cycle styles, pause and scrub video in place, set loop points and trigger them from drum pads, and turn knobs that adjust the color pipeline live: dithering, palette, motion smoothing, and any parameter of the current generator or effect. The osd setting puts a brief readout on the Commodore's screen as you turn something, so you can see what you are changing without looking away.
Mapping a controller by hand means knowing both its control numbers and c64cast's internal names. Do not do that. Run:
c64cast --midi-setup
and c64cast asks you to move each control in turn, learning your layout and writing the mapping out for you.
Controlling It From Other Things#
MIDI is not the only way in.
The Commodore's own keyboard works. With no extra configuration, the Commodore key pauses and resumes, CTRL skips to the next scene, and SHIFT cycles the current scene's style. Pressing SPACE opens a menu on the Commodore itself for adjusting the running scene, which is a pleasing thing to demonstrate.
A small web service can be enabled with the [control] section, offering endpoints to pause, resume, skip and reload. It is the practical way to wire c64cast into a stream deck, a home automation system, or a button by the door.
Hand gestures work if you have a webcam and the optional vision feature: pinch to pause, swipe to skip, open hand to cycle. It is exactly as silly and as delightful as it sounds.
A hangup signal picks up an edited playlist without interrupting playback, which is useful for a long-running installation you want to change in place. Send it with kill -HUP, and the new scenes start at the next scene boundary. Settings that were fixed when c64cast started — the connection, the audio path, the camera — still need a restart.
The LED Bridge#
c64cast connects to the WLED lighting ecosystem in three separate directions, all configured in one section:
[wled]
broadcast = "disabled"
listen = "disabled"
name = "c64cast"
Broadcasting out. Turn on broadcast and c64cast drives real LED strips and matrices from the music the Commodore is playing. It takes the level, per-voice notes and onsets straight from the SID and sends them to your lights. Note what is absent: no microphone. The lighting is driven from the actual synthesizer state rather than from a listening device, so it is perfectly in time.
Listening in. Turn on listen and c64cast announces itself on the network as a WLED device. The WLED phone app finds it, and Home Assistant finds it, and from there the app's effects select your scenes and its sliders adjust your live parameters. Controlling a Commodore 64 from a lighting app that has no idea what it is talking to is a fine joke that also happens to be useful.
Receiving pixels. The wled scene from Chapter 3 makes the Commodore itself the LED matrix, receiving a live pixel stream from LedFx or xLights.
Recording What You Made#
Every time a scene starts, c64cast writes a complete description of it to the log: the display mode, the color settings, the hardware, and where the material came from, including a SID tune's real name and author from its file header.
The record deliberately excludes your Commodore's address and any password, because it is designed to be published. Run with --log-file to keep it:
c64cast --config my-playlist.toml --log-file run.log
Each entry is one line of JSON, so anything that reads JSON can turn it into a video description. The repository carries a small script that renders one as a pasteable block, if you would rather not write your own.
Where To Go Next#
You have reached the end of the guided part. From here:
- The Programmer's Reference Guide is the second volume: every scene, every knob and every register, with nine appendices generated from the code. It is the book to open when you know what you want and need to know exactly what it is called.
c64cast --list-exampleslists the runnable demonstration of every scene and every overlay that ships inside c64cast (browsable on GitHub).docs/architecture.mdexplains how it all works inside, and why certain things are the way they are.docs/caveats.mdis the collected hard-won knowledge about the hardware's sharper edges.
Thank you for reading. Go and put something strange on a Commodore.