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

DSP, Plug-in and Host development discussion.
KVRAF
6235 posts since 12 Feb, 2006 from Helsinki, Finland

Post Mon May 28, 2018 2:23 pm

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.
Preferred pronouns would be "it/it" because according to this country, I'm a piece of human trash.

KVRian
841 posts since 24 Jun, 2002 from UK

Post Mon May 28, 2018 2:36 pm

thanks - i noticed also. will fix soon

KVRer
4 posts since 18 Jun, 2018

Post Sun Jun 17, 2018 6:41 pm

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.

KVRian
1379 posts since 26 Apr, 2004 from UK

Post Tue Jul 10, 2018 2:12 pm

And lots of bad practices.

User avatar
KVRAF
12422 posts since 7 Dec, 2004

Post Tue Jul 10, 2018 5:07 pm

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.

KVRian
1379 posts since 26 Apr, 2004 from UK

Post Fri Jul 13, 2018 12:50 am

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 :/

User avatar
KVRist
175 posts since 16 Feb, 2010 from Germany

Post Wed Mar 06, 2019 5:24 am

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 X
OS X / macOS / Win10
–– -
http://ansolas.de

User avatar
KVRAF
12422 posts since 7 Dec, 2004

Post Thu Mar 07, 2019 5:45 pm

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.

KVRian
544 posts since 30 Aug, 2012

Post Thu Mar 28, 2019 8:49 am

aciddose wrote:
Thu Mar 07, 2019 5:45 pm
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"?

User avatar
KVRAF
12422 posts since 7 Dec, 2004

Post Thu Mar 28, 2019 12: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.

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.

KVRian
544 posts since 30 Aug, 2012

Post Thu Mar 28, 2019 1:58 pm

aciddose wrote:
Thu Mar 28, 2019 12: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?

User avatar
KVRAF
12422 posts since 7 Dec, 2004

Post Thu Mar 28, 2019 9:06 pm

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.

User avatar
KVRAF
12649 posts since 8 Mar, 2005 from Utrecht, Holland

Post Fri Mar 29, 2019 1:52 am

aciddose wrote:
Thu Mar 28, 2019 9:06 pm
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 back online!!

User avatar
KVRAF
12422 posts since 7 Dec, 2004

Post Fri Mar 29, 2019 11:25 am

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.

KVRAF
27702 posts since 11 Apr, 2010 from Germany

Post Fri Mar 29, 2019 11:45 am

I see more and more devs developing VST3 versions of their soft synths or effects.
Plugins and a DAW. On an operating system. Which runs on a computer.

Return to “DSP and Plug-in Development”