How to Make Audio Plugins: Getting Started
There are relatively few resources that will help you learn how to make audio plugins. Perhaps one reason for this is that the pre-existing skill set that you need to possess before diving into plugin development is substantial.
Ahead of starting your audio plugin development journey, you should be familiar with using a digital audio workstation (DAW) and producing music. On top of that, you need to be comfortable programming in the C++ language. This doesn't mean it's impossible to learn how to develop plugins as a complete beginner, it just means you need to approach this sizeable task in the right way.
I'm going to walk you through a 4-step roadmap that you can use to learn how to make audio plugins. Each step includes a recommended resource that you can use to expedite the learning process.
1. Learn How to Produce Music
An interest in audio plugin development often stems from an interest in producing music. As a result, you probably know a thing or two about music production if you've stumbled across this article.
That being said, you should be comfortable producing music at an intermediate to advanced level before tackling plugin development. At the very least, you should have a strong understanding of all your DAW's audio effects and virtual instruments, in addition to popular third-party plugins.
The following video explains how long it takes to learn music production as a complete beginner. Various factors play into the amount of time it takes and some people learn faster than others. Although, there are some key points mentioned throughout the video that are worth considering and that can help you learn music production quickly.
Becoming acquainted with the different types of audio effects and software instruments that exist is a large part of this initial discovery process. It's important to be able to conceptualize the plugin that you want to make before you start coding it.
The term "pseudo code" refers to conceptual code written in plain English. For example, here's what the basic pseudo code for a compressor plugin might look like:
- Attack knob ranging from .01 ms to 30 ms
- Release knob ranging from 0.1 s to 1.2 s
- Ratio knob ranging from 2:1 to 10:1
- Threshold knob ranging from 0 dB to -40 dB
- Makeup control ranging from 0 dB to 20 dB
- Dry/wet knob to control the blend between the unprocessed signal and processed signal
- Gain reduction meter that uses a pin and has values ranging from 0 to 20 dB
- Black, white, and purple UI design
There's no right or wrong way to write pseudo code, as long as it helps you plan out the plugin that you want to make. It's purpose is to act as a plugin development outline. Generally, the more detailed your pseudo code, the better.
If you already know how to produce music, all of the controls mentioned in the previous pseudo code should be familiar to you. Before developing a compressor plugin, you need to know how to use a compressor and understand the design principles behind it.
To get started producing music, I highly recommend taking an online music production course. Music Production for Beginners: The Complete Ableton Course teaches you everything you need to know to hit the ground running. You'll produce three songs from start to finish and learn how to write, record, mix, and master music at home.
2. Learn How to Program Using C++
The programming language that you should learn to make audio plugins is called C++, which is a low-level object-oriented language. C++ is used to develop audio plugins, video games, and lots of other types of software.
This is the first programming language that many people recommend learning because it uses foundational programming concepts like classes, objects, polymorphism, and inheritance. If you decide to pick up another programming language later on, it will be much easier if you already know how to program using C++.
As far as programming languages go, C++ is extremely fast, efficient, and reliable. Learning C++ will also help you understand how computers operate. Due to the popularity of C++, you'll find plenty of online support as well.
The one downside is that C++ is generally considered difficult to learn in comparison to other programming languages. Its advanced syntax can take a while to grasp and writing code in C++ is somewhat time consuming. You're also required to manually deal with things like memory allocation, whereas other programming languages like Java, C#, and Ruby take care of that for you.
Regardless, if you want to develop audio plugins you need to learn C++. I recommend taking a course like Beginning C++ Programming - From Beginner to Beyond to get started; this is the course that I took to learn C++. Following along with a project-based video course is one of the best ways to learn a new programming language.
3. Learn How to Use a Framework Like JUCE
Once you feel comfortable writing basic programs in C++, you can move on to developing plugins with C++. You'll use a framework like JUCE to do this; this is the leading framework for multi-platform audio applications.
JUCE allows you to create music applications for macOS, iOS, Windows, Android, and Linux using the same source code. You can also use it to compile VST, VST3, RTAS, AU, and AAX plugins as well as create slick user interfaces.
Included with JUCE is a project management tool called Projucer that features an Instant Compilation Environment (ICE engine). Projucer lets you instantly visualize changes to your code which helps speed up the development process.
Different frameworks exist but JUCE is one of the more popular options and there's an online course by Kadenze and Output that teaches plugin development using JUCE. Knowing how to program in C++ and produce music using a DAW are the pre-requisites for this course. You can get started with the first portion of the course for free.
The full course costs $500 so it's not cheap but it's one of the best resources available to get started developing audio plugins. Due to the scarcity of training resources and the potential to turn plugin development into a career, the course is worth the price tag — assuming you want to get serious about making audio plugins.
4. Create Your Own Audio Effects and Software Synthesizers
Once you’ve worked your way through the recommended courses, there are a handful of popular textbooks that can help take your understanding of plugin development to the next level:
- Designing Audio Effect Plugins in C++
- Designing Software Synthesizer Plugins in C++
- A Digital Signal Processing Primer: with Applications to Digital Audio and Computer Music
It’s going to take quite a while to work your way through all of this content but you should know how to make audio plugins by the time you're finished.
Similar to producing music, programming is something that you can continuously improve upon over time. If you enjoy the process of learning, you'll love developing plugins.