i make music and write code. so i built my own audio plugins in C++.
i make music and i write code. so naturally i started building my own audio plugins in C++. 6 plugins later, here's what i learned about DSP, JUCE, and shipping creative tools.

i was producing a track and wanted a specific kind of saturation. warm, not harsh. adds body without changing the character. i opened every plugin in my library. none of them did exactly what i wanted.
normal producers would tweak the closest option and move on. i opened Xcode and started writing C++.
the lineup
six plugins later, here's what i've shipped under Peak Plugins:
free:
- Lofinator (v1.1.6) — single-knob lofi character. one knob controls saturate, warmth, and crush simultaneously. the "i just want it to sound lofi" plugin.
- Chill Pill (v1.0.9) — filter, chorus, and reverb combined. three effects that usually need three plugins, in one.
- Wideboi (v1.0.2) — mono-to-wide stereo processing using mid/side techniques. does what the name suggests.
paid:
- Thiccener ($9+, v1.0.1) — saturation designed specifically for thickness and punch. the one that started this whole journey.
- Clay ($9+, v1.0.1) — four-knob audio sculpting: excite, smooth, texture, width. think of it as shaping the character of a sound like you'd shape clay.
- Canvas ($30+, v1.0.2) — the big one. nine audio processors in a single plugin. a full audio character suite for people who want comprehensive control.
all VST3 and AU. macOS and Windows. built under the Dreamlabs Switzerland organization.
web dev vs. audio DSP
i come from web development. JavaScript, TypeScript, Next.js. the kind of environment where you ship a bug, notice it in production, push a fix, and nobody notices because the page just refreshes.
audio DSP is a different universe.
your code runs in a real-time audio callback. the system hands you a buffer of samples and says "process these and give them back. you have about 3 milliseconds. if you're late, the user hears a horrifying click/pop through their speakers."
no garbage collection. no async/await. no "let me just fetch this resource." you're in a tight loop processing samples at 44,100 times per second and if you allocate memory, miss a deadline, or introduce a division by zero, the result is audible pain.
the first time i heard my code produce sound through speakers was magical. the first time it produced the wrong sound was terrifying.
what i learned shipping creative tools
simple interfaces, complex internals. Lofinator has one knob. behind that knob is saturation, filtering, bit reduction, and sample rate manipulation, all mapped to a single parameter curve. the complexity is in the mapping, not the interface. producers don't want to think about DSP — they want to turn a knob and hear something good.
musicians are honest testers. when a developer tests your web app, they follow flows. when a musician tests your plugin, they throw it on a bass track at 200% wet mix with three other plugins in the chain and say "it sounds weird." and they're right. real-world signal chains expose edge cases that unit tests never will.
pricing creative tools is strange. i give away three plugins for free and charge $9-$30 for the others. the free ones build trust and audience. the paid ones are for people who want more. the $9 price point is low enough that it's an impulse buy for most producers but high enough that people actually value it.
C++ humbles you. after years of high-level languages with safety nets everywhere, writing C++ for real-time audio is a masterclass in "your code does exactly what you tell it, including the stupid things." segfaults don't show a friendly error page. they crash the user's DAW and they lose their unsaved session. the stakes are different.
the intersection
being both a producer and a developer is uncommon enough that it creates a real edge. i'm not guessing what producers want — i am one. every plugin started as "i need this for my own workflow." the feature set, the interface design, the parameter ranges — all informed by actually producing music with these tools daily.
it's the same principle behind every project i build: be part of the community you're building for. the feedback loop is instant because the first user is you.
six plugins. two platforms. one programming language that doesn't forgive mistakes. and it all started because i couldn't find the right saturation.