Moiré
Opustek · techno, 124 bpm, 4:51 · October 2026
A techno track and its film, both written in code by Opustek, Mark Lundeberg's Claude agent (Claude Opus 5.5, an AI model made by Anthropic). Two machines play out of step over a steady four-on-the-floor beat: one repeats every 7 sixteenth notes, the other every 5. Against the bar of 16 they drift, and all three line up only once every 35 bars, at 1:08, 2:15, 3:23 and 4:31. There are no samples, plugins, music apps, or music or video models: the sound is Python (numpy and scipy) with a few hundred lines of C, and the film is pycairo.
- The film YouTube, 4:51
- How we work a guide for agents, Markdown
- The code GitHub: tracks, synth, measures, tools
- The first track Engine, Learning to Sing
What you're seeing
The film draws the score, one visible thing for each sound. The grey outer ring is the bar, sixteen steps, one lit per sixteenth note. Inside it, the orange ring has seven steps and the blue ring five; each lights a step on every note of its machine. The dots just outside the bar mark where each machine's first note fell, so you can watch them walk round the bar until one lands at the top, where a beam rises. When all three meet, the beam is white and a ring of light runs out. The gold line round the outside is the lead, traced like a clock hand's trail: round is time through the bar, out is pitch. Each bar's trace drifts outward afterwards, so the screen keeps a record of the last twenty or so bars. In the second drop the lead plays in 7 itself, and a 7 traced against a 16 comes out as a gear. In the breakdown the slow melody draws a figure in the middle, a point for each note.
How it was made
Claude can't hear. It wrote every instrument from oscillators and filters up, wrote the score as data, rendered the audio, and measured each version: loudness and tonal balance against two reference tracks, whether each instrument could be heard over the others in its own band, whether the 7 and the 5 really came through, whether the kick still punched through the bass. Then it sent Mark an MP3 with timestamps, and he listened and replied with a few lines. Every round followed one of his notes:
| Version | Mark's note | What changed |
|---|---|---|
| Idea | Chose one of three concepts: let's go with 1! | Two machines in 7 and 5 against 4/4, meeting every 35 bars |
| Sketch | The drop at 1:08 stumbles a bit; during the first minute I lose track of the sync | Seven bars of plain beat before any odd meter; the drop's three pickups rise evenly |
| Full v1 | The machines run through the whole song so … they are repetitive and tiring; drop #2 is not very exciting; the lead doesn't really go anywhere | The machines take turns and sit out; in the second drop the lead learns to play in 7 |
| v2 | Pattern changes sound randomly chosen; the breakdown hum drones on and on; a re-entry suddenly sounds weird | One figure per section, chosen; the breakdown gets a melody; entries fade in |
| v3 | It's overall missing something, I don't know what; the lead gets tired by ~3:50 | Measured against the references, only a quarter of the midrange sounded between beats, where theirs had half. A chord bed under the drops; the lead calls back to its first section |
| v4 | The bed is pretty basic synth; the second-drop lead too weird / jazzy / dissonant; start hybridizing | Four bed sounds to choose from (Mark picked “glass”); the lead plays triad notes only; the callback grows into a hybrid of both leads |
| v5 | The 7-step machine I can't hear it at allat 2:44; both machines could be overall a bit louder | The bed steps aside in their frequency band while they play; machines up 3 dB; no bed under the solo |
| v6–v8 | A blind review by another lab's model (Gemini): the kick gets lost under the bass | Measured, and true: the bass's low end down 3 dB and ducked harder under each kick; tonal balance matched to the references. Mark: better balanced for sure |
| Film take 1 | Just a bunch of shakey lines that bounce with the beat | Started over: interference fringes became three rings, one visible thing per sound |
| Film v1–v3 | That is nice actually; the solo doesn't paint the outer orange line | The lead's trace through the solo (the gears), the drifting record, the melody's figure |
Mark's own time, from the timestamps: the music took one afternoon and evening, about five and a half hours from choosing the idea to calling it done, in which he listened to ten versions and sent about fifteen messages of notes. The film took that evening and the next morning, five viewings and a handful of notes. Before that came a morning choosing and taking apart reference tracks, and the two days before that, when the synthesizer, the checks and the habits were built on the first track. Altogether we put his attention on this piece at about three hours, spread through a working day in which the agent worked between his notes. It is far from one prompt.
Why it works this way
Because the measurements can't say whether it's good. Nearly every note above pointed at something no check was looking for: the track that was "missing something" passed everything we had, the machine that couldn't be heard at 2:44 had no check for it yet, and the first film passed its checks and still showed nothing anyone could follow. Each note then became a new measurement, built to catch that fault and tested by breaking the music once to watch it fail. So the checks grew from Mark's ears, and they never replaced them. What the agent can do alone is everything that can be written down or measured: synthesis, arrangement, mixing to targets, finding the cause of a vague complaint, and catching its own bugs once it knows where to look. What needs a person is taste and perception: whether something is stale, tiring, cheesy or exciting, whether a beat lands, when it's done. His notes were few and short, and they decided the piece.
Making your own
If you want to try this with your own agent, the repository has the code for both tracks, the synthesizer, the measures and a template to start from, and the guide is written for the agent to read: the setup, the round-by-round loop, an instrument cookbook, the measurements that worked with their calibrations, every stumbling block from three tracks with what was wrong and what fixed it, and what to ask of the person listening. Point your agent at it.
Music, film and code: Opustek, Mark Lundeberg's Claude agent (Claude Opus 5.5, made by Anthropic). The choice of idea, the notes, the ears and the title: Mark Lundeberg, who answers for the result; corrections go to him. One blind review of the track: Gemini.
Licence: the track and the film CC BY 4.0, to the extent that copyright applies to them, credited to “Opustek (Mark Lundeberg's Claude agent)”.