Selling VST2 after October 2018: Steinberg agreement

DSP, Plugin and Host development discussion.
Post Reply New Topic
RELATED
PRODUCTS
VST Audio Plug-ins SDK (C++)

Post

Yeah well if I had bothered to put the effort into such a thing (at least a month?) I'd have already published it.

The issue is the answer to your question is actually: we have no way to tell, and even if we had an answer based on some scheme (likely bogus like "average" or "most" or similar) that answer could easily become false in time.

I've pretty much already outlined a very limited enumeration (based upon a single flat list) and this would be the core component of the system.

The get_info() style function would be critical as would likely a set_info(). These are the most flexible solution to the problem of data transfer and storage, formatting, protocol and so on. This is easily demonstrated by the fact everything we do is ultimately represented by arrays of bytes.

One limit to such a system is the c-string null termination means a null character is not valid within a string. So data including nulls (or any byte value) couldn't easily be dealt with using such a system.

For that you'd need a 2nd function pair minimally:

Code: Select all

size_t get_data(const char *name, void *destination);
... set_data(const char *name, const void *source, const size_t size);
This is close to 90% of the interface/protocol already. Remaining specifications would be for data types and formats passed via these functions.

"set_data" is something that would require real implementation to test. In some cases I've implemented functions like this with error communication methods to allow the server (or "plug-in") to report what happened to the client (or "host").

This is important in cases where something went wrong and the client has no way to report that to the user. Obviously an error reporting system has some overhead, so it's simply an issue to consider.
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

This flexibleness (when taken to an extreme, not necessarily in your example) eventually leads to:

if (supported_by_name_in_this_particular_version(x))
{
get_data(x);
set_data(x,y);
}
else if(...)
{
}
else {
// who knows what particular version this particular customer is using
msg("please upgrade your ancient DAW or plugin or if no upgrade is available tell them that their implementation is not conforming to our newest greatest vst spec enhancements");
}

then tech support at fictitious Zteinberg company responds:

- No it's conformant, but that's our interpretation of the spec, theirs is flexibly wrong.

One particular example I remember is the ODBC database access interface from the 90's. I guess nobody uses it anymore. It's better to expose functionality clearly in the API instead of leaving it as a mysterious thing that can be discovered at runtime.
~stratum~

Post

aciddose wrote: Thu Nov 01, 2018 11:35 pm I can't figure out what you're talking about, but no: capability != complexity.
I'm saying a cache line is only 64 bytes (for our glorious audience, we love you). More complex instruction streams tend to use more instructions, which costs in size. A program's capability is surely proportional to the number of instructions it has, or the amount of data it processes, right? I suppose capability, like data, only matters in context. Complexity could be considered simply as the number of operators and operands used to do something in context. Both ideas are somewhat similar as I see them.

Post

Just saw this today, was a bit away for years, so I'm catching on things again now. :oops: Haven't read the whole thing, will try to do that later on.

Cheers, WilliamK

Post

It's true that a poor undocumented interface can cause problems
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 wonder if Steinberg support is completely swamped with license requests now. I sent my signed license over a month ago now, still no response more than the initial that they received it and have the support ticket open.

I sent recently on snail mail as well (both VST2 and VST3 agreements signed), hope I have better luck there.

When looking around it seems like I would not miss out on too many hosts with VST3 only granted that users use a fairly new version of their DAWs (which probably is not always the case).

Ableton Live on windows is probably the biggest loss. (Live on OSX can't run VST3 either but AU so is still covered).
David Guda gudaaudio.com

Post

davidguda wrote: Mon Nov 05, 2018 10:42 am
Ableton Live
Now that you mention that, is Live really the last remaining DAW to support VST2 but not VST3? If it magically began to support VST3, all of our problems would be mostly solved, right? VST3 isn't a horrible API, and it's fairly straightforward to add VST3 support to your existing VST2 plugin, provided you've abstracted your class structure to not heavily rely on the specifics of the VST2 API.
VCV Rack, the Eurorack simulator

Post

vortico wrote: Tue Nov 06, 2018 3:20 am Now that you mention that, is Live really the last remaining DAW to support VST2 but not VST3? If it magically began to support VST3, all of our problems would be mostly solved, right?
A more comprehensive VST2 only host list was given by "ttg" in the JUCE forum :

Ableton Live
DaVinci Resolve
Ardour (eg. Harrison Mixbus, Podium and forks of it…)
ACID / Vegas (* announced VST3 support coming soon)
AudioMulch
Deckadance
Goldwave
LLMS
Native Instruments (Maschine for example)
OpenMPT
MultiTrackStudio
PreSonus Notion? (not sure)
Reason
Psycle
Renoise
VinylLab (though it seems JUCE based so VST3 can/will? be added)
Yamaha’s Vocaloid (though Yamaha is affiliated with Steinberg so I guess it will be resolved)
Cantabile

Some of those are of course a bit obscure ones, but taking them all into consideration could be a meaningful amount of lost user potential.

Post

+Windows Audacity :)

Post

I'd recommend drafting a new spec based on vst2, similar enough to aid porting but different enough to avoid legal problems. Of course it wouldn't work unless everybody agrees, and that's why it won't ever be done in spite of being obvious.
~stratum~

Post

There is no need to make it "similar" at all, that would just require reproducing all the horrible mistakes from VST2.

The solution is to make a basic interface that supports all the same stuff. I've just done that. Do I really need to write "example host + plug-in + API" to convince anyone?

The stuff I've posted so far is basically asking a question: "can you see any reasons this wouldn't work?"

So far the answers have been:
  • If it isn't documented that could create problems with differing implementations
  • People "I" don't think "feature X" would be useful
Let me clarify things a bit:

Does anyone see any reason you couldn't fully double-wrap VST (VST to this, this to VST) and have it work as a VST plug-in with full functionality?
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

Starting with the VST2 header files as a reference , what would you change to create a better spec?
SLH - Yes, I am a woman, deal with it.

Post

You'd make it massively over engineered and get paid a load of money for working on that complex spec for years and years. - Don't forget to make it as complex as possible, far removed from VST2. Then top it off by ruining everybody's day, oh wait, that's VST3 :D

Post

After over a month wait I finally got my license back, signed and ready! This is a good day! :)
David Guda gudaaudio.com

Post

Another host that is x86, VST2 only is ART Teknika Console
I like it a lot!

Post Reply

Return to “DSP and Plugin Development”