Pointers for making a VST?

I am having a hard time finding good resources on how to make a VST.

I don’t know C/C++ but I know go/Rust and I have seen some Rust wrappers for VST development.

Regardless of language, are there any good resources on how to make a VST?

I think I would like to make a tape saturation/lofi audio processor of some kind. So audio stream in audio back out into a DAW.

I use Bitwig (not for much yet) and prefer to program on Linux/Mac but I know VSTs are kind of this blackbox and seem to only have targets for Windows/Mac.

Any pointers for those that have made something or are currently learning would be great!

This is not quite what you asked for but I found it really interesting and gives you an insight and some ideas for how to achieve coding a vst.

2 Likes

I’ll take it! Seems interesting

1 Like

I guess the easiest way would be to use JUCE and follow this guy’s collection of tutorials: https://www.youtube.com/channel/UCpKb02FsH4WH4X_2xhIoJ1A

2 Likes

Haven’t heard of JUCE but I’ll take a look. Seems like an integrated environment. Not sure I want to go that route but I am interested regardless. Thanks!

I would guess many of your favorite plugins were made with the help of JUCE, it’s the standard way to start making VST’s IMO

2 Likes

Ok that makes sense then.

The plugin doesn’t have to be visual, could be a CLI with args/REPL just for learning but maybe this would be an easier feedback loop.

Thanks again. I’ll look into it

Looking for JUCE and Rust I found this:

And then found the repo for a reverb VST they user for a demo:

Already able to find a path to investigate with. I have never done audio engineering so doing anything will take me forever but this is a good start.

big recommendation for JUCE. i work with it professionally 5 days a week and can say that it’s a really well designed framework, library and toolkit. i jumped in from a mostly javascript background having only taken one very basic course of C++ but had no major trouble getting a grip of it. only downside is of course that if you intend to make money with your plugin then you’ll have to buy the license.

2 Likes

Thanks for the feedback on JUCE. Seems to be the ultimate toolkit so far.

Learn C++ and (optionally) use Juce would be my advice.

You’ll be coming in with Juce at a good point; as I think Juce is being more settled now with v5 / breaking changes.

A word of warning with regards to Juce and the Audio Programmer (Joshua): Some of those videos are quite out of date now I believe; refer above breaking changes with Juce; so sanity check first.

Join the Audio Programmer Discord as well.

3 Likes

Sick thanks for the pointers. I guess it’s time to learn C++ even if it’s just to get dirty enough to link but I am sure I will find myself productive with it. I just like the safety (both compile time checks/errors and memory safety) of Rust. It has good interop, but who knows, I might end up really liking C++

If the docs are good, the videos should get me going and then I’ll start to get familiar with the API and probably reach out quite a bit in the Discord.

Pretty stoked there is a Discord.

Soo many times I have had help from Slack communities for pretty interesting problems so this should be quite nice.

JUCE is best.
Unless you want to spend your time learning how to get audio directly from the input buffer on your sound card and translate bits into midi CCs etc, using a “ready made” solution is the quickest way to get you up and running with the actual creative part of making a VST. Never mind that it’s pretty much becoming the industry standard for a lot of audio programming stuff (Roli own it now)

2 Likes

Yea I kind of am interested in the lower levels to be honest but I might be more than happy with the data I’ll have access to in JUCE. I don’t mind sending byte arrays over USB to talk to radios, so either approach works for me.

Is there something you would recommend in order to read audio streams?

If you still talking JUCE, if you load up the “vst plugin template” you get a “process” function which gives you direct pointer to the audio stream, letting you read from and write directly to it as far as I remember.

I haven’t actually done any JUCE stuff in a couple of years but was meaning to get back into it with this quarentine! :slight_smile:

2 Likes

Oh nice! That’s probably what I am looking for. Not at my machine yet but I’ll look into it tonight.

And yea, the idea of making a VST happened because of all this as well heh

1 Like

as already mentioned above, i would suggest C++/Juce …then you might find other tools along the way but this would most probably be a good choice as it’s an environment widely used, Juce is also multiplatform so you won’t need to worry about porting things from one OS to another, which is also good thing :smile:
you’ll need to register on Roli’s website though as an account willl be needed each time you want to use it

1 Like

Yea crossplatform is great! And I’ll go ahead and make a roli account before installing everything.

1 Like

The function is processBlock I thought it was just process :slight_smile: It gives you a reference to a buffer of audio and midi messages! :slight_smile: should be what u need

1 Like

Pulling back on the picture slightly. How you do this depends a lot on what your final objectives are.

A different approach would be to use tools other than a pure software approach to creating your VSTs. I’ll list three. There are others. So everyone, please chip in here.

You probably know about this stuff already but i’ll list them out for other readers here.

The VST system was created by Steinberg and made into an open standard. They know about VST. Halion 6 from Steinberg is a sampling and sound design system, with a very large range of capabilities. Part of Halion 6 is the Library Creator tool which allows you to create complete VSTs with an extensive UI and rich sound creation possibilities. If you intend to distribute your VST your customer uses the free Halion Sonic SE to run your content as a VST.

Similarly you can create a Kontakt Instrument to be used under the free Kontakt Player. There are a lot of commercial developers that use this approach.

Another approach is to use the Mathworks programs MATLAB and SIMULINK to generate and export VST3, and AU plugins.

There are various advantages and disadvantages to all these approaches.

1 Like