Developing VSTs / AUs


#1

Does anyone here on the forums have any experience with coding your own plug-ins?

I’ve been interested in experimenting with this a little bit. There are several resources online with a quick google search, but I wanted to check here and see if anyone might have helpful insights before really digging in on my own.


#2

I’ve thought about this, too…still am, in fact. In my case, I don’t have any coding experience to speak of, so I would be basically starting totally green. I did pay for a set of NI Kontakt coding tutes that came highly recommended. They take you from no understanding to a finished Kontakt Library, but the files have just sat on a drive for a few months now…never got around to actually doing it yet.

In my case, I figured that was the best road to take, otherwise it would have meant committing to learning to code proper and I don’t think I’ve got the aptitude for that. I think you really need to do your homework before you allocate both time and funds into doing this, as well as get a feel for the language you’ll be coding in first. There’s so many out there and each can be better at doing certain things than others…basically you really need to know what you intend doing and then look for the best code that will let you do that…not a case of one size fits all, if you know what I mean when it comes to building VSTs/AUs.

Then there’s the licensing: if you’re going to make a VST and want to sell it after, then you’ll need to get a license from Steinberg in order to legally do it. I was one of the lucky ones who managed to get a VST 2 license from them last year, before they stopped offering them. You can only get VST 3 ones from them now, as they don’t support the VST 2 SDK anymore…but at this stage, it doesn’t really matter anymore…used to be there was an issue with Midi in VST 3, but I believe that was sorted out a good while back. As for AU plugs…I haven’t got a clue. as to what the requirements would be or the costs involved, if any.

My apologies if I’m only repeating here what you already know…just thought I’d pass on the little I do know…as it might be of some help to you. :wink:


#3

My day job is that of a software engineer. I’ll tell you right now that KSP is one of the most obtuse and difficult scripting languages to use, having had some experience working with scripting in Kontakt. If you can grasp those concepts I guarantee you can pick up any language you like with little difficulty. :slight_smile:

I’ve seen a few tutorials that use c++ (a pretty common language used for scripting games and lots of other stuff). I may go that route, for now, while exploring other options

I hadn’t really planned on selling any VSTs. I’m more interested in it for personal use or sharing with you fine folks on the forum as some kind of free-ware (Does that term date me? Maybe it would have been worse to use the term shareware #DoomEpisode1). That is assuming I even managed to produce anything interesting or worthwhile.

I think I knew at one point that VST was a protocol licensed by Steinburg, but had definitely forgotten. I will have to look at their licensing agreement to see what the terms are. Thanks for the heads up!

There is a wonderful set of spectral effects plugins by a gentleman named Michale Norris. They are free AUs that I use all the time in my own work. The issue with the licensing makes me wonder if you can only get them as AUs because he didn’t want to pay the licensing fees (If you use Apple’s Logic as a DAW, I highly recommend you search for those. They are free and really great!).


#4

Thanks for the recommendation about those AUs…not on Apple though, unfortunately.

Regarding Steinberg’s licensing…it’s pretty open and to the point…you simply download the form, fill it in and return it via email or post and then sign it and send it back. The thing is with the newer VST 3 license, you have the option of getting either license to sell or a license to supply what you make as open source. I’m pretty sure there’s no fees involved…there wasn’t with the VST 2 one I got from them…you just have to display their logo and name in your software credits/ documentation.

Seeing as you can already code, one you might take a look at…if you haven’t already…is ChucK…I heard good things about it, but it was a little bit beyond me, t.b.h. Still, I hear you can do some cool stuff with it and it’s designed for coding audio from the get-go.

Regarding NI Kontakt coding…yeah…I keep hearing that…that’s one of the reasons those tutes I told you about have yet to earn their fee. :grin: I did watch the introduction one and that seemed easy enough to follow, but I’m guessing it gets a little hairy later on…time will tell.

Anyway, do keep us posted on how things work out for yon on this…would be really interested in hearing how it goes. :+1:


#5

I haven’t read your posts, but I’ve seen a YouTube video of Steve Duda talking about his experience. Very interesting view. I think I could write a VST plugin.


#6

In my opinion someone here on the forum posted this video already.


#7

I engage in fits and starts with realising a plugin. Been brushing up on C++ these past couple of months but still got a way to go. Have you seen Juce? It’s a great app framework with some free licensing (educational, etc). Let’s you output to several platforms/formats simultaneously without having to learn each (VST, AU, AXX etc.). Does apps too. Has its own curve, though.


#8

I haven’t not heard of this, no. I’ll look into it. :slight_smile: Thanks!

Yeah, it takes a little time to really get comfortable with learning a language, especially your first. (not sure if it is). Just keep at it! You’ll get there.


#9

My experience is that it’s just not as intuitive as other languages. It often takes multiple lines of code to accomplish something that say, python or javascript could accomplish in fewer lines and more concisely (this can be both good and bad).

This is similar to other things languages I’ve seen before, such as CSound and Supercollider. Not much use for developing plug-ins but cool to play around with and make some noise. :slight_smile: I’ve been playing around with it now for about 45 mins and It seems like a steep learning curve. It’s Cool none the less though. :slight_smile: Might have to see if I can make a track or something with it (ambitious at best, foolish at worst). lol


#10

Trust me, you guys will all be the first to know if I manage to pull it off. haha!


#11

There’s really two parts to VST development - the programming and what it’s actually doing. It sounds like you’ve got the programming end pretty well sewn up, so you might dive into what the actual math behind the effects is. I don’t know what kind of development you do, but this is sort of analogous to networking code; you have to understand the theory and practice behind the standards and common implementations to effectively get two machines talking, and a lot more refinement to get them talking quickly and at scale. Actually programming it comes after that understanding.

Bone up on FFTs and their implementation (JUCE has a great adaptive library for that), convolution/impulse modelling (time-dependent effects, reverb etc), non-linear processes (distortion, hysteresis) and all the math that goes into modeling an effect. DSP is a huge subject in and of itself, and while you can just reuse libraries, the really interesting stuff comes from diving into how things are getting done and creating your own takes on them. To that end, you might look at existing frameworks like Max, Puredata, Reaktor and others to see how they’re doing what they do, and then maybe try to implement it in code.


#12

I don’t code, but to learn audio code I’d download the Airwindows open source plugins. They do everything from bitshift gains to distortions to reverbs to dithering, and the code is all open source AFAIK.


#13

i am not a programmer by any stretch. i am somewhat seasoned with DSP and methods, but programming is still very new to me.

i found the following site to be a great resource for getting started with C++. but be aware, some of the guides are outdated and the attempts to keep everything up to date have left some flaws in the examples. so i recommend regularly referencing other places for the new tricks you learn.
https://www.learncpp.com/

i got to the point where i was programming 2D command line games (not well) where you use touchplates to open doors and shoot bullets at enemies etc. but then a whole load of other shit came up so my learning came to a halt. but that site gave me all the tools i needed to get that far. after that it was a matter of learning to use tools that are more catered, such as juce.

tools like reaktor synthedit/maker etc are great for learning. i learned most of my DSP knowledge using those. and even when you have a solid knowledge of a language like C++ they are still good for prototyping.
if you have no DSP knowledge at all i recommend spending a bit of time with tools like that to understand how signal manipulation works without being burdened with the task of learning a programming language.

it is a long path. but a fun one


#14

Second vote for JUCE! You can fairly easily incorporate your own routines written in C or C++, and you can also use their solid library for basic DSP tasks (anybody want to design a custom upsample/downsample stage with filters? Not me). There’s even a system to build the GUI which takes work but it’s fairly straightforward. To be fair I don’t have much to compare it too as I am just starting out as a developer. But I have found that the prototypes I build in Max for the most pet can be rebuilt as plug-ins. Getting ready to release my first one this summer.


#15

Why not pay someone to do it?


#16

I already have. I’ve paid Xfer, Arturia, Native Instruments, GlitchMachines, iZotope etc… So this is just a “for fun” sort of thing. Also, there is always the potential that people will be paying me. I’d rather be on that side of the transaction. :wink:


#17

That’s pretty exciting. You’ll have to make sure and let us know when it’s out. :slight_smile:


#18

So several people have recommended JUCE, and this is indeed the way I’m going to go at first. This is probably (obviously) something that will take me a while to make any progress (I’m already spreading my time thing between work, home life and music).

On a bit of a side note, what are peoples favorite plugins? What instruments or effects can your workflow not live without (if any)?


#19

I’d say Diva and a solid EQ (I have Neutron). Discovering the FPC in fl studio a few months ago has changed my drums for the better.


#20

Synths:

I still think Serum is one of the most useful ITB synths ever created. It’s got everything I need for general work and sound manipulation, and it’s laid out in a sensible way.

Omnisphere is incredibly handy for sound design and manipulation, though it’s a huge, lumbering beast that can be hard to work with.

Waldorf’s Largo has wonderful oscillators. This one of those situations where a big sonic improvement in one area makes up for any other shortcomings.


Effects:

Valhalla: sounds pretty, easy to use, lots of options but not overwhelming, laid out in a reasonable way.

FabFilter: Sonic quality and easy of use. I know it’s “mix with your ears, not your eyes”, but the real-time frequency spectrum is handy for seeing what you’re doing. And plenty of little tweaks under the hood to really customize basic effects.

u-He: I consider the Uhbik collection to be the gold standard for effects. Everything works like you expect it to and sounds amazing, but has a real depth to the controls and results. A, D, and G get a lot of use on my tracks. Zebra is a lot of fun for both synthing and processing. Also, Satin. Seriously, nothing they put out is bad.

SoundToys: Decapitator, especially. Great for everything from a warm up to overblown distortion, and models some of the great analog overdrives out there. Again, all their stuff is top notch.


Small batch/one off/interesting:

Audiority Grainspace - wonderful grain delay with lots of options. Sounds lush and fun to ‘play’ in real time.

GlitchMachines: Convex, Fracture and Cataract are great examples of interesting, useful and unique plugins that do things you don’t find in most ‘big name’ VSTs.

Ohmforce Ohmicide: The most ridiculous, full featured, creative distortion plugin I’ve ever seen.

New Sonic Arts Granite: Another crazy fun grain plugin, this time a sample mangler/wrangler. Can go from lush to weird with a couple of clicks, and very automatable.

Eventide Blackhole and Mangleverb: All of Eventide’s plugins are amazing, but these stand out as making delay and reverb interesting and fun. Like an H3k without all the fiddly bits.

Dron-e (Reaktor): So many amazing Reaktor ensembles, but Dron-e stands out as interesting, full-featured and playable.

LFO (M4L): Yeah, it’s simple, but being able to LFO just about parameter in Ableton or a VST is huge.