Pressure Field: building a techno set and a film that moves with it
Pressure Field is 28 minutes of techno made on a small hardware sampler, and a film whose lines fold, split and rejoin with the music. I rarely have time to make music like this these days, and doing it with Codex, OpenAI's coding agent, greatly reduced the time it would have taken. Codex wrote the tools, ran the measurements and rendered the comparisons. I listened and decided.
The sampler is an Elektron Digitakt II, which plays recorded sounds, reshapes them and sequences when they play. I wanted a new techno set with its own identity that I could play live without a laptop. The recording, released under my music name, Multivibrator, was mixed in Logic Pro, Apple's music production software. The film started as graphics experiments in a web browser and ended up as a custom program that simulates flowing fluid and travelling waves.
Most of the work was a loop: Codex proposed something, and I compared it and said what I thought. Often that came down to one sound, such as a clap that fitted the groove, a filtered tone that took over, or an opening so sparse I wasn't sure it was playing. Codex used those decisions to revise the samples and sequences. The film worked the same way, with video comparisons instead of listening ones.
establishing the brief
I started from DJ sets by Adriana López and Amelie Lens: their pacing, their tension and the way they change the energy without losing the groove. Both names link to full sets, López at HÖR in Berlin and Lens at Awakenings Festival in 2018, if you want to hear what I was listening to. I wanted room for atmosphere and strange sounds, with the Digitakt carrying the arrangement. Later I added a yellow Behringer TD-3-MO-AM, an analogue bass synthesizer, for an optional acid layer with its resonant, filter-shaped sound. I kept it deliberately subtle, because this was never meant to be an acid house set.
The first step was a written brief, based on my references and Codex's research into what the Digitakt can do. It asked for a controlled low end, changing detail above it, and enough room for delay and reverb without blurring the start of each sound. Delay makes echoes; reverb gives a sound a softer sense of space. The brief also planned for how I wanted to perform: choosing which pattern plays next, muting parts and turning knobs as it runs, with a fixed running order of the same patterns for rehearsal and recording.
choosing a small palette from a large library
The search began with 202 candidate samples from four collections: the DT2_TP_1 pack, Hypnotic Swarm, Mutlu rumble loops and packs from GowlerMusic. A sample might be a single drum hit, a sustained texture or a loop. The catalogue noted what each file was and what job it might do, while the audio itself stayed on an external drive, apart from the project's code and notes.
Before I listened to anything, Codex measured each candidate's level, frequency balance and stereo width. That flagged the likely troublemakers early, such as samples too loud to compare fairly and wide low end that could muddy the kick and bass.
First came the kick, the main bass-drum pulse, and the rumble, the low layer that sustains beneath it, which I heard together at 140 beats per minute. Each audition file played numbered alternatives at matched levels, so I could ask for a replay and pick one without the loudest automatically winning. Once I'd chosen that foundation, I heard hi-hats and claps over it, then metallic percussion, loops and atmosphere, each against the sounds already chosen.
Those comparisons took a long time. The first palette alone took thirteen rounds, one for each role, and the same kind of choice came back in every movement and every mix pass. Often the question was where a sound belonged, not whether to keep it, so good sounds could stay without crowding everything else. One clap fitted the normal groove; another sounded great but took over, so I kept it for moments when I wanted it to stand out. A wide, strange percussion loop ended up in the transitions instead of running all the way through.
The library didn't have everything. None of its bass sounds fitted, so Codex wrote small programs to generate new ones from scratch, and I picked two: a steady, dry pulse to anchor the groove and a shorter, more restless one for accents. The same approach made new melodic sounds and short chords, including a slightly uneasy chord that adds tension without turning into a tune. The swooshes and risers between sections were made the same way, partly by recording those new sounds and reshaping them again.
Other sounds were reshaped to fit. A slower percussion loop was sped up to 140 BPM and thinned out at the bottom to leave room for the bass, a found texture was cut into short slices, and a ride cymbal was shortened so it could stand in for some of the hi-hats.
turning the palette into patterns
The set has five movements, a bit like chapters. Before putting anything on the Digitakt, Codex rendered a 40-second audio sketch of how the first, Cold Relay, might unfold. It brought in the bass before the kick, built up the rhythm above them in stages, alternated the human percussion loop with a metallic reply, then dropped the low end for a break. Each sketch was built from the chosen samples by a recipe of timings and processing, so Codex could change the recipe after I'd listened. I could hear the shape of an idea before it went anywhere near the hardware.
Codex's tools then installed the arrangement on the Digitakt, backing the machine up first and checking that every transfer arrived intact. Some jobs still needed me at the machine: choosing patterns, checking what was actually audible and saving the edits I accepted.
The first result on the hardware still needed work. One pattern was clicky and quiet, another was silent, and a tonal part was too loud. Later, a filtered track got so intrusive that the arrangement sounded better with it muted. The data had arrived intact, but hearing it on the machine meant going back to the sounds and pattern settings.
Codex built a prototype of each movement, and I listened to each one before its approved sounds were spread across a set of related patterns. Sparse openings and endings gained unusual textures, while fuller sections needed holding back. Bit by bit, that gave me Cold Relay, Pressure Bloom, Acid Shadow, Iron Veil and Signal Hollow.
making the patterns playable
Each movement has a block of seven patterns with clear jobs: a way in, a dependable groove, a shift, a peak and so on. That matters when I'm playing live. If I'm muting tracks and turning knobs, I need to know where I can go next without checking a chart.
For recording, the Digitakt's Song Mode plays the patterns in a fixed order: each row names a pattern and how many times it repeats, and the whole route runs for 28 minutes. Live, Pattern Mode lets me stay with a section or move on when I choose. Both use the same patterns; a performance can just take a different route through them. Elektron's Digitakt II manual, pages 48–51 covers the sequencer conditions, FILL and Song Mode in detail.
FILL needed a lot of attention. It's a performance mode that switches specially marked notes on or off, so each pattern has an alternate version for as long as I hold the button. Early fills had tonal sounds that felt out of time; later ones were too timid. I wanted busier hats and drum rolls that work wherever I press the button, not only at the end of a phrase. A short tap should give a useful interruption, a longer hold should keep an alternate rhythm going, and letting go should bring back a groove I recognise.
In Pressure Bloom, Codex added retriggers, rapid repeats of a hit, to FILL hats spread through the phrase. Other parts only come in on alternate passes, an atmosphere filter moves slowly, and small panning changes shift details between left and right. Some sounds stay out of the normal groove so I can trigger them by hand or unmute them during a performance.
adding the TD-3 and testing the longer form
The TD-3 came in once the set already worked without it. I warmed it up and turned its TUNE knob while Codex checked the MIDI connection and the audio coming back, and measured the tuning. MIDI carries performance instructions, such as which note to play and when; the sound itself needs a separate audio cable. In the final setup, Digitakt track 16 plays the TD-3, and its sound comes back in through the Digitakt's left input.
I kept the acid line quiet in the recording on purpose. With nobody turning its filter, a loud acid line would get tiring over 28 minutes. Keeping it low leaves room to play with it live.
Once the movements were joined into a longer set, the question changed from whether each pattern sounded good to whether the whole thing went anywhere. Early recordings were enjoyable but repetitive. I wanted a set that held attention on its own, without me having to rescue every long passage live.
Codex analysed recordings to find level differences and transitions worth changing, and I compared short revisions. Trying changes in the studio first let me hear them before they were adapted to the Digitakt.
Pressure Bloom gained slowly moving atmosphere, answering parts that play only on some passes, and more space in its effects. Iron Veil's quiet passage had sounded as if the music had stopped working; once its long atmospheric samples could play out in full, it became an event in its own right. Signal Hollow, the last movement, needed to be louder overall. These changes gave the recorded set more shape, and FILL, mutes and the TD-3 are all still there for playing live.
five moments to listen for
The set runs for 28 minutes, so here are five places to drop in. Each link opens the film at that point.
- 2:51Cold Relay's first peak, the opening movement at its fullest, with chord stabs, metallic percussion and a busier acid line over the kick and bass.
- 7:53Pressure Bloom, wide and reverb-rich, opening out at its peak.
- 10:51Acid Shadow begins, the movement built most around the acid sound, though it still sits under the drums.
- 19:05the Iron Veil break. The kick and bass drop away, leaving atmosphere and a ghostly shortwave-radio texture until the kick returns at 20:00.
- 25:42Signal Hollow's last peak, built on a hollow call and its echoes, before the set thins out towards the end.
recording and mixing
The Digitakt recorded into a computer over USB through Elektron's Overbridge software, which captures every track as its own file alongside the main mix. A small script Codex wrote made sure the recording was running before the machine started. Those separate tracks, called stems, went into Logic Pro for mixing, and later drove the film's animation.
In the mix, a shared Valhalla Supermassive reverb adds space. Each track sends it as much as it needs (Apple explains sends): the bass stays dry, and most of the reverb goes to percussion detail and atmosphere, so the kick never drowns in a long tail. PSP VintageWarmer2 and Logic's Mastering Assistant then set the final tone and level. The first master I approved runs 28:15 and measures −15.5 LUFS, the standard unit for how loud a whole piece sounds overall. It became the soundtrack of the first public film.
finding a visual language
With the music settled, I wanted an abstract video for YouTube: something minimal, with no people or footage, that followed the piece and ideally reacted to individual instruments. Codex looked into the options and started with short browser sketches using Three.js, a JavaScript graphics library, and shaders, small programs that run on the graphics chip and work out the colour of every pixel. The recordings drove slowly shifting contours and interference patterns. The Book of Shaders is a friendly introduction if you want to try it yourself.
I liked their moiré-like quality: closely spaced lines that form larger bands and ripples where they overlap. The colours stayed limited to dark space, off-white and muted teal, with a single warmer thread. Short browser previews let me settle that look before anything went into a full-length render. The frame at the top of this article, Pressure Bloom at 6:50, shows the folded contours in the finished film.
Then I asked whether Codex could simulate a pressure field. It moved the film out of the browser into its own renderer, written in Rust, where a small fluid simulation pushes the contour lines around so they fold and stretch with the flow. It's an artistic approximation, not a model of the air pressure coming off the speakers. NVIDIA's Fast Fluid Dynamics Simulation on the GPU explains this kind of method if you want the details.
That renderer made the first full-length film. It set the look, but I wanted it to react more clearly to the music and change more over time. Codex went back to a short section around the Iron Veil break to strengthen the response. That made the kick motion too abrupt, so the next version softened it into a throb. Then I asked for waves that start at particular points, travel across the surface and bounce back.
The fluid couldn't make ripples like that, so Codex added a second simulation: a wave field, a bit like the surface of a pond. Each kick pushes down on a small area and lets go, and the ripple spreads out, bounces off the edges and fades. Where ripples overlap, they strengthen or cancel each other, and that's where the interference patterns come from.
The kick drives two wave sources that drift slowly around the frame over a few minutes, and the percussion nudges the second one. As they move closer together and further apart, the interference pattern changes, while waves already on their way carry on. To stop the kicks jerking the picture around, each hit is smoothed into a short swell, so the image throbs just after the beat while the wave travels on across the surface.
following the arrangement as well as the beat
Because each part was recorded separately, the film can respond to each one differently. The kick drives the main waves; claps and hats add smaller ones. The tonal and texture tracks bend the image, and the recorded delay and reverb drive a faint visual echo. The TD-3 isn't one of those controls, so you hear the acid line but it doesn't steer the picture. Codex checked these links movement by movement, because a track can be silent in one section and busy in the next, and it ignored very quiet signals so a tiny sound couldn't turn into exaggerated motion.
Reacting to the beat can't tell the film when to change scene, though. So the film also follows an authored score, written to match the arrangement, that sets the shapes and transitions. Cold Relay's upright lines split into paired lobes. Pressure Bloom develops rounded, overlapping folds. Acid Shadow crosses the frame as a diagonal ribbon, and Iron Veil becomes a broad curtain. Signal Hollow opens into low arcs and lets strands go towards the end.
Repeated sections develop within those shapes, so a later peak might pull further apart or change the framing instead of repeating the first pose. Movements blend into each other over several seconds, but Iron Veil's split and return are almost instant, because those moments in the music need a change you can't miss. Compare the split around 19:05 with the return around 20:00.
The wave field keeps running through every scene change, so ripples from one scene carry on across the next.
finishing the film
Once the Iron Veil section worked, Codex extended the treatment to the whole piece. A lower-resolution draft of the full film let me review all five movements together, and Codex checked the finer lines in a full-resolution excerpt before rendering everything.
The simulation moves forward in fixed steps, so the film stays in time with the music however long each frame takes to draw. FFmpeg, a command-line toolkit for audio and video, then joined the frames and soundtrack into the final video, which went up on YouTube with a frame from Pressure Bloom as its thumbnail.
opening up the mix
With the film released, I went back to the mix. I wanted more depth around the groove, with the kick and bass still firm in the centre, and a level closer to what YouTube plays back. I left the first master untouched and worked in separate copies of the Logic project, built from the same recorded stems.
The first change gave the kick its own space. A little of the kick goes to a second Supermassive, set to a dark, filtered echo timed to the beat. The dry kick still gives the punch, and the echo wraps a tail around it. A compressor on the echo listens to the dry kick and turns the echo down briefly on every hit, a technique called side-chain ducking, so the tail blooms in the gaps instead of blurring the next kick. Apple's compressor side-chain reference explains the controls.
The second change added space at chosen moments instead of everywhere. Fifteen slow reverb swells, fed from parts already in the recording, rise over eight bars and fall away over four. Fifteen clap throws take the last clap before a new section and repeat it as filtered echoes bouncing between left and right. Long stretches get nothing new, so each swell feels like an event. Codex tried the idea on the Iron Veil break and return first, and extended it across the set once I preferred it.
After fresh mastering, the new mix measures −13.8 LUFS, about 1.7 dB louder than the first master and close to the level YouTube has been measured to play back at. I compared every step with the previous version at matched loudness, so being louder couldn't win the argument. The arrangement, the dry balance and the quiet TD-3 haven't changed.
The new mix went out with the same picture. The film wasn't re-rendered, so it still follows the original recorded tracks: you hear the new echoes and swells, but you don't see them.
working with Codex
What surprised me most was that this worked at all, and how enjoyable it was. I never felt I'd handed over control or that the result wasn't my work. The only difference was that I worked with the computer in text instead of clicking through menus.
Codex saved the most time sorting through samples, finding sounds that work together and analysing the results. It could also keep working in the background while I got on with other things.
What it can't do yet is listen. Codex can measure level, tone and timing, but it can't hear whether something sounds good, so every choice about what stayed and what went came from me listening. Maybe that will change in the future.
For the next piece, I can reuse the recording checks and pattern tools and start again with a new palette. I'll keep the short comparisons too: they let me catch an overbearing sound or a jerky picture before committing to another full take. Around twenty minutes into Pressure Field, the curtain reconnects and the returning kick meets waves already crossing the surface.
Watch Pressure Field by Multivibrator · More writing from TRE
under the hood
Codex worked with the software and hardware through a mix of existing tools and ones built for this project. The main standard was the Model Context Protocol, or MCP, which lets an AI agent read data from another program and use its tools. I've written more about building MCP servers in MCP Servers.
- Existing Logic Pro MCP serverExposes Logic state and application controls to the agent. A compatibility adapter built for this project helps the client connect.
- Digitakt MCP, built for this workInspects saved device captures and compares their contents. It is not the tool that installed the musical changes.
- PRESSURE FIELD production scriptsBuild candidate patterns offline, perform guarded MIDI transfers, read back results and coordinate recording.
- Live Rig Tools, built alongside the projectInspects exported TD-3 bank files from Synthtribe. It is an offline command-line tool, not an MCP server.
The open-source logic-pro-mcp server operates Logic through macOS's accessibility and scripting controls, with a small adapter written for this project to get the connection working. For the Digitakt, Codex's scripts sent the musical changes over MIDI, and its own inspectors read saved backups of the Digitakt and TD-3, so it could check what was stored without connecting to the instruments.
related projects
Two of my other projects start from a simulation instead of a finished recording. In Confluon, a shared particle simulation drives both the sound and the image. In Galacto, an evolving galaxy shapes a synthesised soundscape. Both can be played in a browser, and their source is public on GitHub: Confluon and Galacto.
Robert Gilks, recording as Multivibrator. September 2026.