I built a next generation looper pedal for the Reason DAW

I built (mostly me on art, design and looper core functionality coding, and ui, but with significant coding help and almost all testing harness, mocking, and unit test code by cursor) the software equivalent of a looper pedal, as a plugin (a rack extension) for reason (a digital audio workstation) using Cursor.

Cursor was an invaluable coding buddy for this project.

Like many audio projects, and custom development projects, the solution space, the coding rules are highly idiosyncratic, and constrained, and the resulting binary plugin package is run inside a specialized sandbox environment without access to the external system’s APIs, or even the standard C or C++ libraries, and no access to the filesystem, networking or anything else. The tools the SDK gives you are it. And they sometimes leave some big gaps and figuring out how to use them to get something done that the environment was never MEANT to support, like a full stereo looper system, with persistence and streaming, was a non-trivial goal.

Although the plugin is written in LUA and C++, the interface between the LUA and C++ code is highly unusual, and there are GUI elements managed both in lua, and by native C++ drawing code.

There was the small issue of devising a decent lossless compressed audio format, based around the nice BSD licensed SLAC codec, which Cursor found for me after searching on the internet for exactly what we needed for a memory efficient stereo loop buffer audio data codec.

The cursor IDE/harness’s plan mode, and its agentic auto mode prowess were fantastic.

When I finally got the hardest part of this working, I said to cursor, “you’re a freakin genius”. It said, No problem, enjoy the looper.

I don’t need a full auto vibe code tool, but what I do need, is what cursor does best. But it turned me into 20x the developer I already am. I already know enough to be dangerous, but I can’t work at anything like the speed that cursor generates ideas. I’m the project manager, and QA/test engineer, and I review the plans like the manager I was born to be. I code when I have to, which isn’t all of it. And when I want to try five different CODEC algorithms, Cursor makes that one evening’s work, not six weeks.

Cursor can write me a suite of unit tests that I spec in 10 minutes, that would take me all day to write, in about 20 minutes. It understands TDD, and red-first (failing test) workflows, and it documents its progress meticulously as we work through punch-lists of tasks and subtasks.

It’s stellar.

Warren

Very cool Warren! C++ is not easy stuff haha