Why is Steinberg working so hard to kill off VST2 when it works so well?

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

Post

Big Tick wrote: Thu Apr 11, 2019 2:54 pm
aciddose wrote: Thu Apr 11, 2019 5:08 am VST2 has some major flaws like a lack of string buffer length passed with string functions (can be fixed with simple can_do("string length") and passing in the intptr parameter!) but mostly it represents albeit "rough" the basic common ground any audio plug-in needs.
Yes. VST2 is brilliant that way, it can be expanded through canDo, vendorSpecific calls, and new opcodes. All the promised technical advancements of the new version could have been done with these and proper documentation.
looooool :lol: :lol: :lol:

Post

Vertion wrote: Thu Apr 11, 2019 12:07 amSteinberg's aggressive legal actions
Image
Sweet child in time...

Post

Poor developer!
SLH - Yes, I am a woman, deal with it.

Post

Big Tick wrote: Thu Apr 11, 2019 2:54 pm Yes. VST2 is brilliant that way, it can be expanded through canDo, vendorSpecific calls, and new opcodes. All the promised technical advancements of the new version could have been done with these
It can be expanded, this is not a problem. The problems are developer's inertia, chicken-egg problem and backward compatibility hell.
Big Tick wrote: Thu Apr 11, 2019 2:54 pm and proper documentation.
Yes, this mythical "proper documentation" that never exists.

I would agree with all of these in a perfect world where legacy does not exist and developers adapt changes right away but unfortunately we live and act in a real world.

Post

I can write proper documentation right here:

Derived from https://github.com/falkTX/dssi-vst/blob ... aeffectx.h

Code: Select all

/*
 * aeffectx.h - simple header to allow VeSTige compilation and eventually work
 *
 * Copyright (c) 2006 Javier Serrano Polo <jasp00/at/users.sourceforge.net>
 * 
 * This file is part of Linux MultiMedia Studio - http://lmms.sourceforge.net
 *
 * This program is free software; you can redistribute it and/or
 * modify it under the terms of the GNU General Public
 * License as published by the Free Software Foundation; either
 * version 2 of the License, or (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * General Public License for more details.
 *
 * You should have received a copy of the GNU General Public
 * License along with this program (see COPYING); if not, write to the
 * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
 * Boston, MA 02110-1301 USA.
 *
 */
 
// comments and additional structures stripped for simplification
// _AEffect is the original vestige structure and is incomplete and poorly documented
struct _AEffect
{
	int magic;
	intptr_t (* dispatcher) (struct _AEffect *, int, int, intptr_t, void *, float);
	void (* process) (struct _AEffect *, float **, float **, int);
	void (* setParameter) (struct _AEffect *, int, float);
	float (* getParameter) (struct _AEffect *, int);
	int numPrograms;
	int numParams;
	int numInputs;
	int numOutputs;
	int flags;
	void *ptr1;
	void *ptr2;
	void *unk1;
	void *unk2;
	void *unk3;
	float unkown_float;
	void *ptr3;
	void *user;
	int32_t uniqueID;
	char unknown1[4];
	void (* processReplacing) (struct _AEffect *, float **, float **, int);
};

// ADDITIONAL LICENSE BELOW THIS POINT
//
// below this point all material not derived from material
// made available under the primary license for this file
// may be considered also made available distinctly under the WTFPL
//
// http://www.wtfpl.net/about/

/*
**        DO WHAT THE f**k YOU WANT TO PUBLIC LICENSE 
**                    Version 2, December 2004 
**
** Copyright (C) 2004 Sam Hocevar <sam@hocevar.net> 
**
** Everyone is permitted to copy and distribute verbatim or modified 
** copies of this license document, and changing it is allowed as long 
** as the name is changed. 
**
**            DO WHAT THE f**k YOU WANT TO PUBLIC LICENSE 
**   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 
**
**  0. You just DO WHAT THE f**k YOU WANT TO.
*/

// this is a simple structure to represent four-byte ID codes
// use memcpy(id_str, const char *src, sizeof(id_str))
// memcmp(id_str, const char *src, sizeof(id_str))
// the ID code can be treated as a string (ease of use) or 32-bit value
struct id_t
{
	union
	{
		char id_str[4];
		uint32_t id_int;
	};
};

// a replacement structure with slightly improved documentation (WIP)
// written by `aciddose` based upon _AEffect
struct aeffect_t
{
	// "PtsV"
	// originally 'V' 's' 't' 'P' (for: VstP-lugin) in BigEndian (Motorola / 68k) format
	id_t magic_id;
	intptr_t (* dispatch) (struct aeffect_t * _this, int32_t opcode, int32_t index, intptr_t value, void *ptr, float opt);
	void (* process) (struct aeffect_t * _this, const float ** const inputs, float ** outputs, int32_t samples);
	// set _this->parameter[index] = x;	ensuring get_parameter(_this, index) == x
	void (* set_parameter) (struct aeffect_t * _this, const int32_t index, const float x);
	// return _this->parameter[index] as float
	float (* get_parameter) (struct aeffect_t *, const int32_t index);
	int32_t presets;
	int32_t parameters;
	int32_t input_channels;
	int32_t output_channels;
	// must be initialized to zero
	int32_t flag_bits;
	// host reserved pointers must be initialized to null in construction
	// the plug-in may never access the host reserved pointers or write
	// to them outside the initialization/construction after returning
	void *host_reserved_1;
	void *host_reserved_2;
	// plug-in latency from input to output in samples
	int32_t latency;
	// deprecated; initialize to zero
	int32_t unknown_1;
	int32_t unknown_2;
	// deprecated; initialize to 1.0f
	float io_ratio;
	// must be initialized to null
	// previously pointed to VSTSDK object (bad practice, do not do so)
	// this pointer must never be read or written from plug-in or host after initialization
	void *plugin_reserved_ptr_1;
	// this pointer is reserved for the plug-in to use
	// the host must never read, write or intepret this pointer value at any time
	void *plugin_reserved_ptr_2;
	// the unique ID value is useless in application but should be choosen to be as unique as possible
	// a good method is to use a hash function applied to your plug-in name
	// remember to ensure your plug-in always uses the same unique-ID code, only generate it once!
	id_t unique_id;
	// must be initialized to 1
	int32_t version;
	void (* process_replacing) (struct aeffect_t * _this, const float ** const inputs, float ** outputs, int32_t samples);
	void (* process_double_replacing) (struct aeffect_t * _this, const double ** const inputs, double ** outputs, int32_t samples);
	// all padding values must initialized to 0
	int8_t padding[56];
	// the total size of the structure depends upon platform bits
	// (32 vs 64) due to potentially differing pointer sizes
};
We can now improve upon this and fix any mistakes. It's also possible to host the code and accompanying documentation on github and other distributed services. This took me EIGHT MINUTES.
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

The main problem is, that VST3 is not a SDK or an API. It's just a huge collection of C++ classes ripped directly out of Steinberg's Cubase/Nuendo audio engine (including a lot of useless home brew "not invented here" standard stuff).

If you want to add VST3 support to your host then you'll have to have a very similar audio engine design to Steinberg or it will almost be impossible to do properly. The only other option is to write a new engine (or a proxy) from scratch around Steinberg's VST3 workflow. The amount of work in both cases is huge and the benefit is still very small.

VST2 on the other hand is a self contained SDK that makes almost no assumptions about the audio engine driving it. The compiler, the operating system or the programming language used doesn't matter either. It is just a plain and simple interface description, easy to implement on both the host and the plugin side (the SDK contains just a few C structs and constants).

That's why DAWs like StudioOne had minimal problems when adding VST3 support. They started from scratch and they were former Steinberg developers. So I guess that they have chosen a similar engine design to Cubase's when starting the development of S1.

Bitwig started from scratch as well so the VST3 support is decent. But Ableton is still struggeling a lot with VST3 compatibility despite the large amount of developers working on Live. Same goes for FL studio. Converting a perfectly working but old code base to a completely new system is not an easy task, especially when the original developers are not available anymore (not uncommon in larger companies).

This is not something that every small studio can do, especially when they don't do the standard timeline based DAW stuff. I doubt that trackers and other "exotic" DAW types will have full VST3 support anytime soon. Same is true for audio/video editing software, notation programs, procedural music generators, performance tools and so on. Most of them usually have a completely different approach to audio engines and also not the resources to start from scratch again - especially when VST2 works perfectly fine for them.

Post

I found it interesting that legendary DSP experts Eventide just released a new plugin: https://www.kvraudio.com/news/eventide- ... ffer-44735

It supports AU, AAX and VST2. No VST3!

Post

Fender19 wrote: Fri Apr 12, 2019 6:06 pm I found it interesting that legendary DSP experts Eventide just released a new plugin: https://www.kvraudio.com/news/eventide- ... ffer-44735

It supports AU, AAX and VST2. No VST3!
They are developing VST3 versions of their products, but haven't released them yet. If "legendary DSP experts Eventide" are onboard with VST3, that's obviously another major endorsement for VST3 isn't it?
Sweet child in time...

Post

Deep Purple wrote: Fri Apr 12, 2019 6:17 pm They are developing VST3 versions of their products, but haven't released them yet. If "legendary DSP experts Eventide" are onboard with VST3, that's obviously another major endorsement for VST3 isn't it?
The only mention is in one small vst3 thread on their users forums:

Quoted:
"I saw a post from a year ago on here saying that Eventide is working toward VST 3 support for all plugins."

Doesn't sound like much of a priority if they have back shelved it for... how long has VST3 been available and rejected again?

I guess Eventide cares more about making products everyone can use and enjoy with VST2, rather than oddball formats like VST3 which are merely supplemental.
SLH - Yes, I am a woman, deal with it.

Post

Vertion wrote: Fri Apr 12, 2019 6:36 pm
Deep Purple wrote: Fri Apr 12, 2019 6:17 pm They are developing VST3 versions of their products, but haven't released them yet. If "legendary DSP experts Eventide" are onboard with VST3, that's obviously another major endorsement for VST3 isn't it?
The only mention is in one small vst3 thread on their users forums:

Quoted:
"I saw a post from a year ago on here saying that Eventide is working toward VST 3 support for all plugins."

Doesn't sound like much of a priority if they have back shelved it for... how long has VST3 been available and rejected again?

I guess Eventide cares more about making products everyone can use and enjoy with VST2, rather than oddball formats like VST3 which are merely supplemental.
It actually mentions it in multiple threads for multiple products, and the answer is the same for all of them - the VST3 is under development. Please cite your source for your statement that Eventide has "back shelved" VST3 development as I couldn't find that one.

Why are you guessing about Eventide's strategy? Wouldn't it be better to find some facts rather than make guesses?
Sweet child in time...

Post

Deep Purple wrote: Fri Apr 12, 2019 7:17 pm
It actually mentions it in multiple threads for multiple products, and the answer is the same for all of them - the VST3 is under development. Please cite your source for your statement that Eventide has "back shelved" VST3 development as I couldn't find that one.

Why are you guessing about Eventide's strategy? Wouldn't it be better to find some facts rather than make guesses?
There is no guess. No more than looking at the sky on a clear summer day and calling it blue. Let's try deduction, shall we? What other strategy can there be? If it were priority, why wait more than 10 years after VST3 was released, and yet still no releases for it? Building suspense? If you want a guess, then I'd guess they are just following the 'Steinberg schedule, reluctantly.
SLH - Yes, I am a woman, deal with it.

Post

Vertion wrote:There is no guess.
I'm not making it up, you actually used the word "guess"
Vertion wrote:I guess Eventide cares more about making products everyone can use and enjoy with VST2, rather than oddball formats like VST3 which are merely supplemental.
Vertion wrote:No more than looking at the sky on a clear summer day and calling it blue.
Looking at a clear summer sky and calling it blue is based on evidence i.e. you look at the sky and your brain decodes the information hitting your retina and translates the frequency of electromagnetic
radiation into the word that defines that particular range: 'blue'. I'll remind you again that you took a guess at what Eventide is going to do, without any evidence of their strategy, so your analogy is a very poor one.
Vertion wrote:Let's try deduction, shall we? What other strategy can there be? If it were priority, why wait more than 10 years after VST3 was released, and yet still no releases for it? Building suspense?
That's not deduction, as you don't have all the information available to you, and coming to a conclusion that your guess is correct makes the assumption that you have provided a complete list of possible strategies; that's unlikely considering your lack of insider knowledge at Eventide.
Vertion wrote:If you want a guess, then I'd guess they are just following the 'Steinberg schedule, reluctantly.
A guess? But didn't you just say above:
Vertion wrote:There is no guess.
...?
Sweet child in time...

Post

Prove that you exist.
SLH - Yes, I am a woman, deal with it.

Post

Vertion wrote: Fri Apr 12, 2019 8:09 pm Prove that you exist.
Cogito, ergo sum.
Sweet child in time...

Post

Deep Purple wrote: Fri Apr 12, 2019 8:12 pm
Vertion wrote: Fri Apr 12, 2019 8:09 pm Prove that you exist.
Cogito, ergo sum.
Good guess. But I need to see the facts and evidence first. How do I know it's true?
:D
Last edited by Vertion on Fri Apr 12, 2019 8:28 pm, edited 1 time in total.
SLH - Yes, I am a woman, deal with it.

Post Reply

Return to “DSP and Plugin Development”