Mark Lundeberg › Opustek

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.

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.

Every first note of the 7-step machine (orange) and the 5-step machine (blue) across bars 1 to 36: two families of diagonal stripes that meet at the top of bar 1 and again at bar 36. 1 2 3 4 1 8 15 22 29 36 bar beat
The pattern behind the title: every first note of the 7-step machine and the 5-step machine through one 35-bar cycle, bars across and the bar's four beats down (in the track the machines take turns and sit out; here both play throughout). Each makes its own diagonal stripes, because 16 is 2 more than a multiple of 7 and 1 more than a multiple of 5. They meet at the top of a bar only at bar 1 and bar 36 (dashed).

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:

VersionMark's noteWhat changed
IdeaChose one of three concepts: let's go with 1!Two machines in 7 and 5 against 4/4, meeting every 35 bars
SketchThe drop at 1:08 stumbles a bit; during the first minute I lose track of the syncSeven bars of plain beat before any odd meter; the drop's three pickups rise evenly
Full v1The machines run through the whole song so … they are repetitive and tiring; drop #2 is not very exciting; the lead doesn't really go anywhereThe machines take turns and sit out; in the second drop the lead learns to play in 7
v2Pattern changes sound randomly chosen; the breakdown hum drones on and on; a re-entry suddenly sounds weirdOne figure per section, chosen; the breakdown gets a melody; entries fade in
v3It's overall missing something, I don't know what; the lead gets tired by ~3:50Measured 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
v4The bed is pretty basic synth; the second-drop lead too weird / jazzy / dissonant; start hybridizingFour bed sounds to choose from (Mark picked “glass”); the lead plays triad notes only; the callback grows into a hybrid of both leads
v5The 7-step machine I can't hear it at all at 2:44; both machines could be overall a bit louderThe bed steps aside in their frequency band while they play; machines up 3 dB; no bed under the solo
v6–v8A blind review by another lab's model (Gemini): the kick gets lost under the bassMeasured, 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 1Just a bunch of shakey lines that bounce with the beatStarted over: interference fringes became three rings, one visible thing per sound
Film v1–v3That is nice actually; the solo doesn't paint the outer orange lineThe 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)”.

marklundeberg.com