How To Create VST Plugins? Information for those just getting started

DSP, Plugin and Host development discussion.
Post Reply New Topic
RELATED
PRODUCTS

Post

hibrasil wrote:I just made this "awesome list" with my favourite DSP and audio programming resources (focussing on C++).

https://github.com/olilarkin/awesome-musicdsp
Some of your links (at least some links to your own github repositories) give 404.

Post

thanks - i noticed also. will fix soon

Post

I'm new to Plugin-In development, so this thread is an amazing resource!

Currently, I'm reading Will Pirckle's Designing Audio Effect Plug-Ins in C++ book. It's been mentioned a couple times before on this thread. So far, it's very good and will give any beginner a solid foundation to work with before moving on to other frameworks.

Post

And lots of bad practices.

Post

Miles1981 wrote:And lots of bad practices.
Some perhaps... it's important to understand why they're "bad" though and there aren't many better methods to learn than by using them and running into the problems they cause.

Refactoring is mostly a waste of time of course where you "could have" designed the system the right way from the beginning.

Then again, learning "best practices" without understanding them can lead you into even deeper holes with a stubborn refusal to admit to your problems when the supposed "best practices" end up being less than best.
Free plug-ins for Windows, MacOS and Linux. Xhip Synthesizer v8.0 and Xhip Effects Bundle v6.7.
The coder's credo: We believe our work is neither clever nor difficult; it is done because we thought it would be easy.
Work less; get more done.

Post

You mean like overdesign with useless design patterns all over the place?
Definitely agree ;)

That's the issue as well, if you want to write good C++ code, you need to know about your hardware. Sometimes, when I tell people that, they think I'm talking about memory allocation instead of the actual CPU architecture. DSP development is quite transverse and require skills that not a lot of people want to acquire :/

Post

I like to create a rompler with filters envelopes etc. I like to code it myself and do not use Kontakt , Hise etc, and not Juce

What would you suggest for this task ?
Studio One, Logic
macOS
–– -
http://ansolas.de

Post

A decade of effort. The best way is if you started this project during the 90s, say 1997 or so. Alternatively you might have been programming DSP software back then and working with similar tools so you have the accumulated knowledge required to solve (or altogether avoid) the problems of such a tool. Otherwise you'll need to gain this experience one way or another and much of it is located far apart: "few and far between." Coming up with a solution to condense this into the shortest span of time is another problem altogether.

https://youtu.be/6vMO3XmNXe4
Free plug-ins for Windows, MacOS and Linux. Xhip Synthesizer v8.0 and Xhip Effects Bundle v6.7.
The coder's credo: We believe our work is neither clever nor difficult; it is done because we thought it would be easy.
Work less; get more done.

Post

aciddose wrote: Fri Mar 08, 2019 1:45 am A decade of effort. The best way is if you started this project during the 90s, say 1997 or so.
Yes, and then came "VST3". A decade after release and developers are still struggling with it. The documentation in the SDK is cryptic for all but the most experienced. The old VST2 SDK had really good step-by-step explanations of Again and ADelay, how to make presets, etc., for newbies. Maybe I'm missing it but I don't see any such info in the VST3 SDK. Seems to be written for people who already KNOW VST3.

So, is there any good, straightforward info out there on the basic approaches and principals of VST3, i.e., "VST3 for Dummies"?

Post

Steinberg never published accurate documentation, specification or instructions for any of their interfaces. Don't go claiming there was ever a proper specification for VST2 without providing some kind of proof.

At best what they had was a mailing list. I'm not sure if this is archived and available to the public anywhere but it would be the best place to start.

Likewise for VST3 if I am not mistaken they still maintain a similar mailing list and forum.

Also the assertion "developers are still struggling with it" is not particularly accurate. It would be easy enough to jump through the hoops to work with the interface so long as authors were willing to bend over and take anything VST3 wanted to force upon them. Due to an almost non-stop stream of complaints many workarounds have been added to partially satisfy authors.

There are many threads on the topic where you can hear from some of the most significant plug-in developers regarding their thoughts about the implementation and the workarounds they were forced to use. Mostly you should hear comments about VST3 being used to essentially wrap a core plug-in as-is with some minor rarely used additions like note expression and specified side-chains that were achieved in other ways in VST2. In other words that there is little to no advantage to anything VST3 provided and that it was not worth the extra effort to add features nobody was asking for with minimal host support. So they simply wrote another wrapper just like their existing VST2 and AU (and other) wrappers for VST3.

In reality those who have not already implemented a working VST3 interface for their hosts/plug-ins have simply ignored it likely entirely. Those like myself who never had an interest and were let down by the abandonment of VST2 and willful ignorance of proposed problems and solutions (I would argue their actions are in bad faith) will never use another Steinberg or other such mismanaged proprietary interface.
Free plug-ins for Windows, MacOS and Linux. Xhip Synthesizer v8.0 and Xhip Effects Bundle v6.7.
The coder's credo: We believe our work is neither clever nor difficult; it is done because we thought it would be easy.
Work less; get more done.

Post

aciddose wrote: Thu Mar 28, 2019 8:34 pm Steinberg never published accurate documentation, specification or instructions for any of their interfaces. Don't go claiming there was ever a proper specification for VST2 without providing some kind of proof.
The “proof” has since been removed. But back when I was first learning VST2 (SDK 2.3) there was a whole section in the documentation explaining the basics and how to get started. I printed it out and had it in a binder!

But yes, beyond that it left a lot of other details unexplained.

Apparently you are not a fan of Steinberg? What do you prefer, AU, AAX, other?

Post

That's a false dilemma.

No, they never accurately documented or specified the interface. They did provide "examples" and rough instructions for how to "basically get it to work" but that isn't the same thing. The documentation was also never for the interface itself but only their wrapper classes (implementation).

So if you didn't use their implementation you were basically figuring everything out from scratch, like I did. My plug-ins never worked 100% with the interface because no documentation exists anywhere for me to verify that my implementation works correctly. It's entirely based upon guesses about how things are intended to work.

Yes, one might "reverse engineer" their implementation - to a degree - but you'd still be left guessing and assuming that their implementation works correctly. If you do anything even slightly differently there is no way to be certain things will work.

An interface is not implementation, it's an abstract communication protocol. VST3 is not an interface per se for this reason. It contains an interface (the C++ layouts/structs/classes) but also relies upon a huge chunk of implementation to work at all. I'm not sure if it would be possible to abstract away all the implementation as I haven't examined it and simply do not care; I won't touch it with a ten foot pole.

For example try to find evidence that there is any documentation about the must and must not protocol for a host to load and launch a plug-in, or a plug-in itself. It simply does not exist other than in bits and pieces from multiple sources. There is no single authoritative source.
Free plug-ins for Windows, MacOS and Linux. Xhip Synthesizer v8.0 and Xhip Effects Bundle v6.7.
The coder's credo: We believe our work is neither clever nor difficult; it is done because we thought it would be easy.
Work less; get more done.

Post

aciddose wrote: Fri Mar 29, 2019 5:06 am For example try to find evidence that there is any documentation about the must and must not protocol for a host to load and launch a plug-in, or a plug-in itself. It simply does not exist other than in bits and pieces from multiple sources. There is no single authoritative source.
In short, it's a small miracle that working VST3 hosts and plugins of pluriform manufacturers exist at all! ;-)
We are the KVR collective. Resistance is futile. You will be assimilated. Image
My MusicCalc is served over https!!

Post

I'd take the more pessimistic view and say it's no surprise when a host or plug-in crashes or doesn't work as expected. :)

Frustratingly, there is often no sure way to say whether the host or plug-ins worked correctly or failed to meet a non-existent specification. One can say that the system we've employed to ensure things work has been trial and error in a sort of biological/evolutionary sense.

Image

So from that perspective it might start to become clear why "still struggling after ten years" has been a sort of inevitability from the beginning. Only... replace "ten" with "infinity".
Free plug-ins for Windows, MacOS and Linux. Xhip Synthesizer v8.0 and Xhip Effects Bundle v6.7.
The coder's credo: We believe our work is neither clever nor difficult; it is done because we thought it would be easy.
Work less; get more done.

Post

I see more and more devs developing VST3 versions of their soft synths or effects.

Post Reply

Return to “DSP and Plugin Development”