Best programming books towards creating Vst plugins/audio applications?


#1

Hi,
What are the best books on learning Plugins/Audio Applications/C++ ? I really want to learn to create VST plugins for myself, i have tried Puredata/supercollider in the past but they are “Meh” While Juce seems way more easier to export to VST format. Am willing to spend the hours into learning, reading books every day. What books should i read? Even if it’s maths/science of audio i don’t care even if it’s “boring” i want to learn new things this year, am willing to have self discipline and learn. When i first started music production (9 Years ago) i got inspired by people uploading their own music on youtube and thought wow, if they can create music on computer so can i, same thing here i’ve read that Uvi uses Juce with C++ to create their own plugins (falcon sampler is on my wist list) i’m inspired to learn something new even though C++ is hard language to learn from what i’ve heard but it’ll be better in long run if i wanted to get into game design, web dev, creating own software etc.
Thanks,
Tom.


#2

I think you should split the topic into three separate topics:

  1. Learning C++ and programming
  2. Learning DSP and math basics
  3. Learning about the special needs of real-time audio programming

I think you should begin with 1 or 2 and go over to 3 when you gained some solid knowledge in the other areas.

Regarding 1.: There are a lot of tutorials out there on the internet. Just start with some fairly simple command line tools and try using the most basic building blocks of C++ (write your own class, learn to use some standard stl-containers, …). Then go one step further and take a look at the JUCE GUI examples to learn how to build GUI-Applications.

Regarding 2: I learned the DSP thing at university, but NO ONE there ever told me how to apply these theories to any real-world, real-time system, but anyway it helped me understand a lot of the algorithms used in audio processing. I learned it with non-realtime offline calculation based on MATLAB (which may be a quite academical approach and not be everyone’s first choice), which gives you the benefit of a lot of powerful functionality out of the box and just needing to learn a lot simpler scripting language instead of C++. As MATLAB is an expensive piece of software, there is the option to use the open-source clone Octave. But keep in mind, this is just the way I sucessfully learned dsp math, there might be other ways that bring a lot more fun :wink:

Regarding 3.: There are some really good youtube videos out there, held at the Roli ADC, or this one held at CppCon describing the basic ideas and pitfalls of C++ based realtime-audio processing. But to me, it makes sense to gain some knowledge of the language and the math first before jumping into those videos. After having watched those, I’d propose to take a look at the JUCE plugin-tutorials.

Even if I didn’t recommend any book, I hope this may help you to sort the different tasks you are facing when learning to program plugins


#3

Will Pirkle has a pair of great books:

Designing Audio Effect Plug-Ins in C++: With Digital Audio Signal Processing Theory

Designing Software Synthesizer Plug-Ins in C++: For RackAFX, VST3, and Audio Units

They’re not JUCE-aware (he has his own ‘RackAFX’ system for designing algorithms & implementing plugins, which is a useful thing on its own even if you end up porting your effect algorithm into JUCE or something else). He uses them as textbooks in his classes at U Miami.


#4

The first book mentioned is a pretty good book that explains the math behind some classical DSP algorithms using terminology more familiar to someone with an EE background (these were all analog devices first). I have used this book to teach others about this topic (not a big fan of the RackAFX thing (Juce all the way), but understand why it was included).


#5

I talked to Will yesterday – the 2nd edition of the book will have an updated RackAFX API that he describes as ‘more JUCE-friendly’, but I haven’t followed up to get details on how he means that (I’m assuming that it means getting away from RackAFX’s callback-per-sample design?)


#6

Any idea what the ETA of this 2nd edition is supposed to be?


#7

But perhaps the worst books for C++ quality. Avoid if you can.


#8

And it’s not about the callback per sample, it’s just the symptom of a deeper disease in his C++ understanding.


#9

So which book(s) would you recommend then?


#10

@bgporter RAFX has had buffer processing for a very long time.

@Matthieu_Brucher the book isn’t a C++ textbook and doesn’t pretend to be. The point of the book and RAFX is to provide a platform for students to learn how to write real time DSP for audio effects without them dealing with GUIs or plugin APIs themselves. Modern C++ and software development are outside the scope of that book.


#11

Unfortunately, there is none currently. There are great DSP books, but none with even mediocre C++.


#12

Sorry, but with the title “Designing Audio Effect Plug-Ins in C++”, it should be at least reasonable C++. It is not. It’s a list of all the C++ patterns you should not apply.