I'm Beginning a Series of Tutorials on Developing Plug-ins

abaga129

The Apprentice
Hey everyone, I've begun creating a series of tutorials about developing audio plug-ins using C++ and the JUCE Framework.
If you're interested in this topic, you can find the tutorials on my blog at
http://www.modernmetalproduction.com

I will be posting the 3rd part later today. Right now I'm covering the very beginner level stuff and will be showing how to create a basic saturation plugin, but I plan to keep this series going for a while and cover more and more difficult material over time and maybe get into DSP theory.

I would really appreciate some feedback on the website as well.
~Thanks for your time!
~Reker
 
Awesome that you're doing this. I've always been interested in plugin development but i've never had the push to do some research and actually write some code. Luckily i've got a background in CS so following along with you is (hopefully) going to be easy.


By the way, is there any way to subscribe to your blog so i'd get e-mail notifications once a new post goes up ?
 
Wow, you just launch that at the perfect time as I'm trying things using JUCE these days, that's very cool!
 
Last edited:
Thanks for the replies, I'm surprised at how much interested i'm getting already!
I'm glad you reminded me sander, I went ahead and added a subscribe button at the bottom of each post so that when you sign up you will be notified of new posts and you can always unsubscribe if you want to. The website also has a forum so if you run into any difficulties or if my tutorials aren't clear enough, you can make posts and I'll try my best to answer everything.

And that is awesome timing Korwent!

I hope everyone finds the series useful
 
I'm glad to hear it! Then you shouldn't have any problem following the tutorials then since the syntax of C++ and C# are nearly identical. Most of the classes we will be using are JUCE specific as well so we wont be doing much core C++ programming.
 
Really cool! Please keep it up! I'd be willing to pay for some kind of comprehensive course on this topic, and I really can't find one on the internet.
 
This excellent - although I probably won't follow the tutorials (just had a kid, no time....) I'm really excited to see what people come up with.

It seems to be the smaller developers that are really bringing the new ideas to plugins, the big houses (Waves, Slate, UAD) seem to be all about emulating gear - nothing wrong with that of course.

I wonder what the ethics are around emulating VCC? Or using FG-116 as a basis for emulating a FET?
 
I should probably post on your comment section but was too lazy to subscribe and I thought the discussion here will be useful to the Sneapsters following so here goes:
I have followed your tutorial and so far everything went well, also tested the compiled plugin in Steinbergs VST3 Plugin Test Host and it seems to be working (your tutorial is awesome by the way, easy to follow and very clear).
One thing that could do with a bit more explanation in my oppinion is the actual processing bit. For example I'm not entirely sure how you've worked out that cube-rooting every sample results in saturation? To me that sounds a bit like black magic (not meaning to criticise, I just don't understand how it works lol)
 
Last edited:
Yaaayy. I work as a Data Engineer by day and at least half of my day always involves writing various scripts. I've always wanted to combine my love of software engineering and audio together, this looks like a great way to start :D
 
Awesome I'm in a C++ plugin dev class right now, this will be a great resource!
 
It seems to be the smaller developers that are really bringing the new ideas to plugins, the big houses (Waves, Slate, UAD) seem to be all about emulating gear - nothing wrong with that of course.

I agree completely. The "big houses" arent really focused on bringing something new to the game. They want to maximize profit.

I have followed your tutorial and so far everything went well, also tested the compiled plugin in Steinbergs VST3 Plugin Test Host and it seems to be working (your tutorial is awesome by the way, easy to follow and very clear).
One thing that could do with a bit more explanation in my oppinion is the actual processing bit. For example I'm not entirely sure how you've worked out that cube-rooting every sample results in saturation? To me that sounds a bit like black magic (not meaning to criticise, I just don't understand how it works lol)

Hey i'm glad that it's working well for you! You are the first person to really give me some feedback on how everything is presented. As far as the saturation algorithm goes, it is a bit difficult to explain. I plan to do several posts about it later on. Basically, the reason i used cube-root is because it has the unique characteristic of when x=1 y is also equal to 1, and x=-1 y=-1, and the values in between are all less than 1 and greater than -1 in this range. That means that we cant ever get a value that exceeds 1 or -1 (if it did then it would cause the plug in to either crash or cause clipping). Also since the values that are in this range are being cube-rooted, that means the wave form will be changed or "distorted" from the original shape, which we will hear as distortion. I used cube-root in the tutorial because it is very easy to implement, but we will look at other functions for saturation later. I hope this clears things up a bit!

Yaaayy. I work as a Data Engineer by day and at least half of my day always involves writing various scripts. I've always wanted to combine my love of software engineering and audio together, this looks like a great way to start :D

Great! I hope you find the series useful!

Awesome I'm in a C++ plugin dev class right now, this will be a great resource!

Nice, I wish I would have been lucky enough to have a class on that at my university. Well i hope you can learn some from my website! and if you have any questions or suggestions, please let me know!
 
Also since the values that are in this range are being cube-rooted, that means the wave form will be changed or "distorted" from the original shape, which we will hear as distortion. I used cube-root in the tutorial because it is very easy to implement, but we will look at other functions for saturation later. I hope this clears things up a bit!
Since this post I picked up a book about DSP theory and the "black magic" bit is starting to make more sense now although I must admit that DSP theory with all the complex math isn't exactly a light read lol.
Sometimes I spend 3 days on a single chapter because I need to work out all the different math functions first and the really hardcore stuff only comes later in the book.
 
Since this post I picked up a book about DSP theory and the "black magic" bit is starting to make more sense now although I must admit that DSP theory with all the complex math isn't exactly a light read lol.
Sometimes I spend 3 days on a single chapter because I need to work out all the different math functions first and the really hardcore stuff only comes later in the book.

That's great to hear. Yeah the DSP is definitely the hardest part to wrap you head around. If this is something you are truely interested in, I strongly recommend getting a copy of the book Designing Audio Effect Plug-ins in C++ by Will Pirkle. It has been an invaluable resource for me to learn from. He breaks down the dsp parts and makes it much easier to understand than anywhere else I have found. And even if you don't understand some of the theory. You are still able to implement many of the projects in the book. He provides equations for all of the filters that are being used in the book, and diagrams showing how delays and different effects work.

And also I dont know if you saw in my other thread, but I just finished a VST Overdrive pedal that you can find on the downloads section of my website. Feel free to download it and give it a try!