While scrolling through Instagram Reels, I saw someone use Teenage Engineering’s EP-133 to record everyday sounds and mix them into a beat.
View the EP-133 on Teenage Engineering
I happened to have an iPad mini. That gave me an idea: what if I tried building an EP-133 simulator on it? I called the experiment Nomad Engineer SS01.
Learning the instrument before rebuilding it
I started by figuring out what each button does, how sounds are recorded and assigned to pads, and how you make a track from there.
I don’t have the actual device, so I relied on documentation and videos to understand the interactions, then checked them again while building the prototype. At first, I just wanted to learn how the instrument works and bring each part of it onto the iPad.
Building the prototype directly
Instead of starting with an interface design, I worked with AI agents to build a prototype directly. I made the product and visual decisions, while the agents wrote code and tests.
The app is built natively in Swift, using SwiftUI, UIKit and Metal. I chose Metal to render the instrument surface in 3D: the frame can resize without distorting the controls, and the keys sink when pressed. On a flat screen, that small movement lets me see the instrument respond to my touch.
Once the frame was there, I gradually added functions: switching sound groups with A, B, C and D; assigning sounds to each pad; then working on record and play. Bit by bit, the prototype became playable. I think it already looks quite nice, even though there is still a lot to do.
Reusing an existing sampler
For audio, I wanted to try existing libraries before building everything from scratch. The project uses AudioKit, AudioKitEX and DunneAudioKit’s sampler, together with Apple’s audio host.
During testing, we found that pressing the same note again very quickly did not start the new sound immediately. After inspecting the source, an agent added an option to a locally maintained copy of the sampler so the note could restart immediately. That let the project keep using the library without rewriting the whole sampler.
The small screen inside the instrument
Another detail I wanted was the EP-133’s screen. This time, I didn’t design it myself in Rive. I vibe-coded a `.riv` file with the Rive CLI and plugged it straight into the app.
Rive handles the numbers, icons and display states. The app still owns the audio and controls, and updates the Rive display when their state changes.
Still working on it
The prototype can now play sounds from the pads, switch between four groups A–D, and start or stop a sequence with PLAY. I’ve heard the pads play on a physical iPad, but latency and stability still need more testing. Complete recording workflows, effects, project saving and export are also unfinished.
I’ve learned a lot through this experiment, including how to use Metal to render UI in 3D instead of 2D. A video I happened to see turned into a small instrument I can play with on my iPad. It’s fun.
I’m still working on Nomad Engineer SS01 and exploring what else I can make with it.