Breaking into Indie Plugin Development

When I finished my short Sound Design in Web Audio series (Part 1, Part 2), some part of me thought I would finally be able to put to rest my incessant curiosity about the science of constructing a particular electronic bass sound. But, three years later, that series looks more like a launching point than a finish line.

Over the past three years, I've turned my sound design fascination and Web Audio tinkering into something I wouldn't have dreamed of: I've built two professional virtual effects plugins, and have formed a brand with which I hope to sustain continued work. Thinking back to the me that wrote those blog posts, this sounds crazy, and entirely impossible. I didn't have the right skill set, I didn't have the money, I didn't know how to start a business.

So here, with this post, I want to share my story from sound design to authoring a professional plugin, and what I've learned, perhaps in a effort to tell the me of three years ago that it's really hard, but totally possible and incredibly rewarding. And hopefully this will find somebody who's sitting in similar shoes, and help encourage them to build something great.

Backstory

2015

In the summer of 2015, when I wrote the Sound Design in Web Audio blog posts, I was in between jobs, having felt trapped and disillusioned with my career trajectory in web development. I was always a serial hobbyist and deeply obsessed with electronic music– composing, producing, and making noise since 2004. Knowing that, I decided to just take my hands off the wheel and spend some time building and making whatever I felt like, figuring that maybe my tendencies would naturally reveal something about where to take my career. At first, that took me through a deep dive into JavaScript performance and parallelism, but then quickly brought me to the Web Audio exploration of those blog posts.

A couple months later, I had to get real with myself and get a job, but I hadn't let go of what I was looking for in that project. I kept tinkering, asking myself if I could find a way to introduce some of the phase artifacts that I was looking at into a signal in real time. I fell back on my Python skills and graphed a lot of waveforms with NumPy. I found JUCE and started looking at wavetable synthesis in C++, and read everything I could find about linear interpolation. I quickly found myself over my head in DSP textbooks, trying to grasp the basic concepts of IIR (Infinite Impulse Response) filters, and I was loving it.

2016

The new job starts, I'm in a new city, and my project has to take a spot on the back burner. As things go, life got really busy and my new textbooks just collected dust until summer time when I finally picked up a new project. I started writing a React Native iOS application to record and sequence pitched vocal chops. I found AudioKit, tinkered with PureData, and with variable rate resampling research, I quickly found myself back over my head in the land of interpolation. So, I dusted off the old textbooks and went to work.

I realized at a certain point that the linear interpolation I had originally seen while exploring the blog series looked a lot like a first order IIR filter whose coefficients change every step, and started playing with that idea. Around this time I found the Faust programming language and things started moving really fast. All of a sudden I had this vast library of DSP filter and effects implementations in front of me, and could prototype and build algorithms confidently and quickly. I built a distortion algorithm based on modulating a first order allpass filter really quickly, solely on the premise that it looked similar to the linear interpolation I had seen before (oh, how little I really knew). I was fascinated, and whether or not my understanding was accurate, I really liked the way it sounded.

2017

At this point I realized I had the tools to build an audio plugin, and I was unbelievably excited. I started asking myself, "What if I could do this full time? What if I could make a living doing this?" I took to the JUCE developer forums to ask about the prospects of independent development, and despite a few helpful answers, started realizing how little information exists on this– compared to, say, the independent game development industry.

But I had my distortion plugin underway and had too much momentum to be deterred by an intimidating industry, and I still had my full time job to pay the bills. So I formed a brand and finished the plugin, and in July, 2017 I released Temper with a $10 price tag and took to the internet. The initial feedback was great. People seemed to really like it and were amazed that it was only $10. But the sea of new plugin announcements quickly swallowed it, and all of a sudden I was getting zero purchases. Still, I had actually finished and released a product; I was so excited, and determined to find a path towards sustainability.

I turned back to the drawing board, playing with new ideas and continuing through my textbooks before I found a couple of research papers on modulated allpass filters. Validation, finally! And at the same time, a flood of ideas expanding on what Temper offered. So by October, I was underway on a bigger, better distortion plugin.

2018

By the beginning of 2018, I had gotten through so many of the initial roadblocks that I was just eager to keep building. I found myself asking the same questions that popped up in early 2017, and really believed I could do it. At this point, mind you, Temper had sold in aggregate maybe $190 USD in revenue.

In February, I had my second plugin almost ready to go, and realized I needed to get my brand out there. I re-released Temper as a free product and pushed it as hard as I could. By April, I was ready to release my second plugin, Tantrum, and Temper had amassed several thousand downloads and was picked up by several small blog outlets. So, I released Tantrum in April, 2018, with a price tag of $50, and since then I've been marketing it in every way that I know how.

Looking Back and Moving Forward

When I put that story in context, I can't really find the words to explain how excited I am to be where I am, given where I started. I had so many doubts and saw so many roadblocks, and if my bank account has anything to say about all of this, I still have by no means succeeded.

But now I have more excitement and momentum than ever, and I'll build audio software as long as I can figure out how. And for the me of three years ago, and anybody reading with similar goals, here's what I would tell you about finding success for your projects:

  • There is no "if you build it, they will come." Even if you're confident that you've written an amazing product, you have an incredible amount of work to do to make yourself visible to potential customers.
  • It takes money to make money. When I started this, I didn't anticipate spending a lot on operational costs. Running a storefront, paying for a JUCE license, a domain name, etc. But a year after my first plugin announcement, my sales revenue is barely covering the operational costs, let alone making any profit. If you can sustain a separate, primary income stream while getting your projects off the ground, you'll save yourself a lot of stress.
  • Everything takes longer than you expect. If you're a seasoned software engineer, you understand the rules of estimation: overestimate. But it's not just in building products. Forming relationships with blog authors and social influencers, working out promotional arrangements, asking people for feedback, everything takes longer than you expect. This one caught me by surprise. It's really easy to make consistent, tangible progress when you're building a product. Even if it takes longer than you'd like, you can see the progress. But once you're done and trying to market it, you no longer have the same progress indicators, so when something takes longer than you expect, it can really start to feel like you're not moving forward.
  • You'll spend a lot of time not writing software. If you're doing this all on your own, you'll have so many things to juggle: customer support, accounting, marketing, copy-writing, web development, maintenance, etc. Since releasing Tantrum in April, I've hardly written any code.
  • Be decisive. You'll have a million questions, and not enough answers to go around. I've been lucky to receive advice from several wonderfully supportive audio developers, but no matter how many emails I write there are still things left unanswered. A lot of times you just have to make a decision and be willing to be wrong. That might mean disappointing customers, disappointing yourself, paying an unanticipated fee, pushing back your release date– anything. But if you can't commit to a decision, then your progress will halt.
  • Just make something. I can't tell you how many times, in the middle of developing one of these plugins, I found myself feeling like there must be a smarter way to write my code, or a better filter design I could use. I'd be thinking, "Surely there are some pros on the forums that can help me write this more cleanly or efficiently." It's probably true, my code and my algorithms could probably be better, but those thoughts are extremely distracting, and if you constantly chase those feelings you'll never actually finish a product. If you want to make something, just make it. You can always go back and improve it later.

More to Come

In the end, I think my incessant curiousity about the science of music will be here to stay. And if I'm honest, it feels pretty badass to be able to write a song, and use my own product in the process. I'm determined to find a path to sustainability, and committed to helping the people with whom this post resonates do the same. I'll do my best to share what I learn, and I'll be brainstorming ideas to make sustainability an easier goal for independent audio developers. Stay tuned.

Nick Thompson

Nick Thompson

Founder and developer of Creative Intent. Writes about software, music, and entrepreneurship.

Read More