Geoff Leediker
← All posts

Mutuum - Pre-Beta is Now Live

abletonmutuummusic-productionpluginsprojectclaudeJung

In recent weeks I've felt this subtle shift in my Default Mode Network, and as a result, I accidentally rediscovered a long-lost source of dopamine which I had unfortunately been neglecting since before the pandemic. In my endless journey towards individuation, I had a grave encounter with an old daimon that had once held me hostage throughout most of my adult life. Shadow work and Jungian psychobabble aside, I had forgotten just how much I love producing my own music, and to once again be completely and utterly consumed by creativity and swept away in a flow state with tools I was still intimately familiar with, is more than enough to warrant its own blog post, but that's not at all what this is about. Rather, what inspires this particular post is the random eureka moment I got shortly after losing interest in the song I was working on.

It was a situation I had been in several times over the years, but frugality always won the internal battle. As a long-time Ableton Live user, I swear by most of their stock plug-ins, but truth-be-told, sometimes they leave a little bit to be desired. Ableton Simpler, a basic audio sampling plug-in, is a great example of this. It's hard to find a real reason NOT to use it, given its power and ease of use, especially with the Ableton Push 2 MIDI controller, but sometimes when I'm using it, I'm left with the feeling that I'm missing out on some sort of functionality that'll unlock an entirely new level of mastery for me. I imagine that's the draw to purchase Ableton's premium plug-in, the aptly named Sampler, priced at $99, but I wouldn't know, because like I said, each time I had my cursor hovered over that 'Proceed to Payment' button, my underdeveloped sense of frugality actually won me over. I never have been able to justify the $99 price tag for a single plug-in in a digital audio workstation I'd already spent several hundred dollars on over the years (for just the Standard edition, mind you, NOT the top-tier Suite edition).

This time was no different, at first anyways. As I was getting ready to start another new song, my mind went back to the Sampler plug-in I had once again nearly purchased just a couple days prior. This time that thought was met with a different psychological structure Carl Jung called "ego."

"I have the tools and knowledge to make this happen," I thought to myself, unaware of just how accurate that statement would turn out to be this time, but you know what they say about blind squirrels and broken clocks.

Look, this is anything but the bold claim that I actually possess the advanced skills and knowledge that have historically been required to pull off something like this, but thanks to the JUCE framework and plenty of experience vibe coding with good old Claude Code, all I needed was a clear vision and the motivation, and I had exactly that. Turns out I had already spent plenty of time thinking about what I wanted out of a sampler plug-in, and I was absolutely brimming with motivation. I had a clear starting point, and that much being half the battle is a hill I'm ready to die on.

Every once in a while, things just line up properly and what starts out as just a good idea takes on a life of its own. That's what happened with this project, so now I'm writing this as the first official announcement for my brand new audio plugin, Mutuum.

Mutuum, a Latin noun meaning a loan, or something lent or borrowed, seemed like the perfect name for a sampler instrument built using JUCE, a pre-existing open-source C++ framework made specifically for audio applications. Because of JUCE's genuine quality and undeniable usefulness for building applications like this, I've been able to build something that almost immediately far exceeded the expectations I had when I started this project. JUCE is not without its limitations though.

As I was implementing Mutuum's effect rack, it quickly became apparent that the reverb that JUCE offered fell short in fulfilling my vision, so I took the time to re-engineer it and create a custom solution. Not only that, but being able to cleanly warp samples in both time and pitch is an extremely important aspect of something like this, and JUCE simply couldn't offer what I was looking for, so I turned to Signalsmith Stretch, another open-source C++ framework designed specifically for stretching the time and shifting the pitch of audio signals. Now that I've opened the door to greater possibilities, it has become a long-term goal to eventually replace every single JUCE element, either with solutions of my own or superior open-source code, but obviously that's a task for later. For now, I am just really proud to say that something I've long wanted now exists because I took action.

Mutuum is far from "complete" and of course still remains a little rough around the edges, but what's next for me is to actually take this thing for a spin. Starting today, Mutuum is entering a private pre-beta phase which will ideally uncover any remaining shortcomings and opportunities for improvement. While I'm confident in the project's current state, I can't say with any certainty that it will be recognizable in the next phase of development. You might say Mutuum is joining me on the path to individuation!

If you're reading this and are curious to learn more, I'd love to chat. Feel free to contact me via email or LinkedIn. Links available on my home page.


Below is a brief summary of some of my dev notes on this project:

Since most of this was built in close collaboration with Claude, there's an unusually complete paper trail — every decision, every "wait, why is this broken" moment, logged as we went. A few threads worth pulling if you're the type who likes seeing how the sausage gets made:

The reverb wasn't the only thing I ended up rebuilding from scratch. JUCE's stock chorus turned out to be a single modulated delay line dressed up as an "ensemble" effect — real chorus character needs several independently-drifting voices beating against each other, so that got hand-rolled too. Same story with the compressor: no soft knee, no sidechain input. Built both myself, borrowing the actual gain-curve math from a published dynamics-processing paper rather than winging it.

The funniest bug of the whole project: my own stress-testing said the plugin was choking under load, so I had Claude build a whole tiered quality system to protect against it — only to discover afterward that I'd been benchmarking an unoptimized debug build the entire time, which runs something like 15x slower than what actually ships. The real plugin had a ton of headroom I didn't even know about. Lesson relearned: measure the thing you're actually going to hand people.

Before sending this to anyone, I had Claude run a real audit of its own work — not a vibe check, an actual pass through the real-time audio code hunting for the kind of bug that only shows up on someone else's machine at the worst possible moment. It found a few: a buffer that could theoretically overflow, a spot where the plugin could hang for a beat freeing memory it had no business freeing on the audio thread. All fixed now, with actual tests written to prove they stay fixed.

And if you're an Ableton user wondering why your own .aif files won't load in Mutuum — that one's not on me. Ableton compresses its own audio files with a proprietary codec that nothing outside Live can decode, not even macOS itself. Every factory sample pack you own is affected. Export as a WAV first.