The_Ultimate_Audio_Plugin_Developer_Checklist
The_Ultimate_Audio_Plugin_Developer_Checklist
Introduction............................................................................................ 3
Mathematics ........................................................................................... 4
Digital Signal Processing ........................................................................... 5
Programming .......................................................................................... 6
C++ ...................................................................................................... 7
Psychoacoustics ...................................................................................... 9
Music Theory ........................................................................................ 10
Basic Audio Concepts and Algorithms ........................................................ 11
Plugin SDK or the JUCE Framework .......................................................... 13
Appreciation of Music! ............................................................................ 14
BONUS: Where to learn this stuff? ............................................................ 15
2
The Ultimate Audio Plugin Developer Checklist
© Jan Wilczek
Introduction
This list contains all the “knowledge dots” that one should know in order to write
audio-processing code in a form of digital audio workstation plugins.
Begin by ticking the checkboxes corresponding to each concept you are already
familiar with.
Then, look at the remaining points and pick one that you will learn next week.
Next week, pick another one… and so on, until you have checked them all!
Remember that this is a comprehensive list. That means that you do not have to
know everything from this list by heart to develop plugins. But this list can give
you a direction of self-development so that you can become the ultimate audio
plugin developer!
Finally, knowing the “dots” is not enough, no matter how many you collect. It’s
connecting the dots that really matters. This list helps you to discover the dots. I
am here, to help you understand and connect them. But the connections must be
made by you.
Good luck on your audio programming journey and enjoy ticking off the points on
the list!
Best regards,
Jan Wilczek
The founder of TheWolfSound.com
3
The Ultimate Audio Plugin Developer Checklist
© Jan Wilczek
Mathematics
Fortunately, the mathematics behind audio processing are very well defined and
thoroughly studied. There are lots of materials to learn from! And there is not so
much one needs to learn.
What do you need to know from mathematics to be the ultimate audio plugin
developer?
☐ Complex numbers: complex numbers are used primarily for dealing with the
frequency-domain representation of sound. Real and imaginary parts, complex
roots, and complex exponentials are parts of the most important audio algorithms,
like filters, phase vocoders, and audio effects.
☐ Graphs: if you think about this, the elements of any audio chain and their
interconnections can be modeled as graphs. A hardware example: vocalist-
microphone-preamp-audio interface. A software example: audio file-compressor
plugin-EQ plugin-reverb plugin.
4
The Ultimate Audio Plugin Developer Checklist
© Jan Wilczek
Digital Signal Processing
☐ Signal: in our case audio, be it sound in the air or its representation stored in
a file.
☐ Latency: the time delay between specific events, like recording the sound and
playing it back.
☐ Aliasing: distortion introduced when sampling a signal at too low sampling rate.
☐ Phase delay, group delay: how any processing delays particular frequencies.
☐ Digital FIR and IIR filters: means to alter the frequency content of a signal.
☐ Phase cancellation: when two tones at the same frequency but mirrored with
respect to the time axis are added they result in silence.
5
The Ultimate Audio Plugin Developer Checklist
© Jan Wilczek
Programming
☐ State machine: if you think about it, every plugin has at least 2 states (playing
or idle). The concept of the state machine can help you express formal
requirements in code.
6
The Ultimate Audio Plugin Developer Checklist
© Jan Wilczek
C++
C++ is the go-to language when it comes to audio programming. Even most
Python libraries that I’ve seen are actually just wrappers around C++ libraries!
Not to mention the JUCE C++ framework, which enforces the usage of C++.
Although often criticized as “out-of-date”, C++ stood the test of time and
continues to be the prevalent language for audio development. As such, it is
important to learn for audio programmers. However, not all of its elements are
equally important for them. The ones that are important are listed below.
☐ Memory handling with pointers, new, delete, and smart pointers: audio
buffers come typically in a form of (possibly multi-dimensional) dynamically-
allocated memory arrays. Additionally, using classes and class hierarchies favors
the usage of dynamically allocated objects. Learning how to manage the lifetime
of these objects is crucial to avoiding bugs and memory leaks in the
implementation. You should know std::shared_ptr<> and std::unique_ptr<> as
the back of your hand.
7
The Ultimate Audio Plugin Developer Checklist
© Jan Wilczek
☐ Testing frameworks: there are a few C++ testing frameworks, so you have
plenty to choose from. Personally, I favor GoogleTest because it’s incredibly easy
to integrate and use.
8
The Ultimate Audio Plugin Developer Checklist
© Jan Wilczek
Psychoacoustics
☐ Hearing threshold: the quietest sound we can hear at the given frequency.
☐ Pitch perception: how humans perceive the pitch of a given sound. The
perceived pitch is not equivalent to the fundamental frequency although the
fundamental is the major factor contributing to it.
☐ Just noticeable difference: a value that tells us how much a physical quantity
must change to be noticed by a person. For example, how much louder a sound in
decibels must be, until we perceive it as actually being louder.
9
The Ultimate Audio Plugin Developer Checklist
© Jan Wilczek
Music Theory
Although formal music theory is beyond the scope of most audio programmers,
some basic concepts are crucial for music processing as we know it from plugins.
For example, what would you auto-tune to if not for the equal-tempered scale?
☐ Equal-tempered scale: how are the notes spaced on the piano keyboard and
how to calculate the difference between frequencies in cents, semitones, tones,
and octaves.
☐ The MIDI protocol basics: what are the note numbers and which control
information can be passed with MIDI messages. On the API level, one does not
have to go into the implementation details; the basic meaning of MIDI messages
suffices.
☐ Types of noise: above all, white and pink. These can be used as either musical
effects or test signals for testing and debugging your system.
10
The Ultimate Audio Plugin Developer Checklist
© Jan Wilczek
Basic Audio Concepts and Algorithms
If you jumped here right from the table of contents, I get you! I also wanted to
start writing audio algorithms right away!
All previous sections lay the foundation for this one. Of course, you could code the
concepts below without understanding them but then you wouldn’t be able to
extend and tweak them.
☐ Clipping: exceeding the [-1, 1] range, why it happens, how to avoid it.
☐ Comb filtering: the effect of summing a signal with its slightly delayed version.
Can be used as an effect but can also be dangerous when downmixing from stereo
to mono.
☐ Reverberation: the effect of decaying echoes of the initial (direct) sound that
give an impression of space.
☐ Filter resonance: the peak in the filter’s amplitude response around the cutoff
frequency and how to control it.
11
The Ultimate Audio Plugin Developer Checklist
© Jan Wilczek
☐ Distortion: a surprisingly useful musical tool that not only can make the sound
more harsh but also more lively.
☐ Phaser: summing the output of time-varying allpass filters with the direct path
creating varying notches in the output spectrum.
☐ Audio formats: audio files come in a variety of formats. Learn what are the
basic differences between them. The most important to understand is the .wav
format. Writing .wav writer and reader utilities is a good audio programming
exercise!
☐ Specific algorithm you want to implement: the core algorithm you are
implementing in your plugin. What will it be?
12
The Ultimate Audio Plugin Developer Checklist
© Jan Wilczek
Plugin SDK or the JUCE Framework
The final piece of the puzzle is the interconnection between your audio code and a
digital audio workstation. That’s what this section is about.
☐ The concept of a plugin and a plugin host: what is a plugin? How can we
interact with it? What is a plugin host?
☐ How a digital audio workstation works: you should be familiar with the
track layout, routing, mixing, and the FX chain.
☐ Plugin formats: their types, where are they used, what are the superficial
differences between them, and their inner classification into instruments, effects,
etc. The most popular formats are VST, AAX, and AU.
☐ Specific plugin format API: only if you plan to integrate your plugin with a
specific format manually.
☐ JUCE framework: the core assumptions behind JUCE, its classes, API, utility
functions, and the flexibility of abstraction it provides. JUCE is a huge topic on its
own but you don’t have to know it all; to start, just a few classes suffice, for
example, the plugin processor, the plugin editor and the
AudioProcessorValueTreeState.
13
The Ultimate Audio Plugin Developer Checklist
© Jan Wilczek
Appreciation of Music!
It’s hard to imagine working with audio and disliking the domain at the same time…
14
The Ultimate Audio Plugin Developer Checklist
© Jan Wilczek
BONUS: Where to learn this stuff?
Or maybe you have an idea for a powerful reverb that will have some unique twist
in comparison to other reverbs?
Either way, the list above will be of great help to you in discovering the pieces of
the puzzle, the “knowledge dots”.
You can google around, scrambling for pieces of information on forums and general
blogs.
You can buy expensive books and browse through thousands of pages to look for
the information you need, unsure whether it’s there or not.
There are also online code documentation pages and 2-year-long university
degrees…
Every week you will be able to understand one dot of the above and tick one
checkbox, all that effortlessly, easily, and in much shorter time than with the help
of textbooks.
Thanks to my weekly content, you will be able to develop your plugins faster,
cheaper, and focus on what matters the most to you: the core of your plugin
processing.
As a subscriber of my newsletter, you will also improve your coding skills because
I often share helpful insights from the field of audio development that you can’t
get anywhere else.
If you have any questions, you can always reply to my emails. That will also guide
me as to which articles and videos would be most useful to you.
15
The Ultimate Audio Plugin Developer Checklist
© Jan Wilczek