VST 3.6.5 is out!

This will very likely affect JUCE.  Here's a copy/paste of the email I received from Steinberg.

Dear VST Developers,

Steinberg Media Technologies today releases VST SDK 3.6.5, a maintenance
release for its VST SDK 3.6. Besides some issues that have been fixed with
regards to the included AudioUnit wrappers this update also includes new
VST interfaces, check below.

Here's a brief overview of changes :
Version 3.6.5 (2015/08/06)

  Interfaces Changes:
      New ChannelContext::IInfoListener interface: informing the Plug-in
about the channel in which it is instanciated (name, color...)
      New IPrefetchableSupport interface: allowing a Plug-in to inform the
host that it does not support prefetch/ASIO Guard (could be dynamically)
      New IUnitHandler2 interface: allowing a Plug-in to inform the host
that an assignment Unit-Bus defined by IUnitInfo::getUnitByBus has changed
      New IAutomationState interface: informing the Plug-in about its
current automation state
      use "#pragma once" instead of "#ifndef"

      New VST 3 Plug-in ChannelContext showing how
ChannelContext::IInfoListener interface is working
      New VST 3 Plug-in PrefetchableSupport showing how
IPrefetchableSupport interface is working
      "VST3 Host Checker" Plug-in updated with new checks

  Plug-in Wrappers:
      auwrapper :
          support MIDI output
          fix crash with namespace conflict with Mac OS X 10.10
          add PresetAttributes::StateType support in

  New Flags/Enums:
      New predefined 3D Speaker Arrangements: k91Atmos

      add some new unit tests: Bypass parameter support is mandatory for
FX Plug-in (not Instrument)!

To Jules and Co.:

the only compile error I see for hosting is the redefinition of ISizeableStream.

ie: remove DEF_CLASS_IID (ISizeableStream) in juce_VST3Headers.h

FYI: I'm not seeing an in-code way of checking the VST3 sdk version to do that programmatically. This will be a breaking change for those who are out of date.

This also seems to be a problem:

      add some new unit tests: Bypass parameter support is mandatory for
FX Plug-in (not Instrument)!

This probably does not just affect the test host. It means the SDK requires FX plugins to support the bypass property and AFAIK the JUCE vst3 wrapper currently does not support that. It's a bit a ridiculous problem as supporting a (new) bypass parameter almost certainly means breaking preset compatibility with vst2 versions where bypass is not meant to be implemented by the plugin.

Or hopefully I am mistaken and there is an easy and working way to add a bypass parameter once a plugin has already been released.


Hate to throw Steinberg's VST3 dev team under the bus, but that does seem really idiotic.

Thanks for the heads-up guys. We were going to have to do the bypass param stuff anyway, so this isn't a big deal.

FYI - My guess is that this is no news to anyone, but when compiling the host example from the tip with VST3.6.5, xcode shows an error in juce_VST3Headers.h.

In the interest of time, I simply commented the line out and it compiles fine.  The test host appears to work fine with plugins that are VST2 and AU, but does not work with *some* VST3s (Zebra2, for example) in that the GUI does not display.  Those that I made with the current version of JUCE appear work.


namespace Steinberg
    /** Missing IIDs */
    DEF_CLASS_IID (ISizeableStream)

Anyway, I thought I would mention this.  I am going back to VST3.6.0 in the meantime.

Hi all,

I fixed the compile error with DEF_CLASS_IID (ISizeableStream) by simply removing that line from the JUCE header. Since we are not using ISizeableStream in JUCE, this should not break anything. The code also compiles with the older 3.6.0. SDK. Please update to the newest tip.

As for the other problems with VST 3.6.5 (bypass, GUI does not show, etc.), I think they are unrelated to this issue, and we will have a look at those as soon as we have time!

Yeah, that’s what I mentioned above.


On Xcode using a base SDK of 10.7 and the C++11 [-std=c++11] compiler I’m getting an error in 3.6.5 when I swap the older VST3 SDK version out…

in: vstcomponentbase.cpp

tresult ComponentBase::sendTextMessage (const char8* text)
	IMessage* message = allocateMessage ();
	if (!message)
		return kResultFalse;

	FReleaser msgReleaser (message);
	message->setMessageID ("TextMessage");
	message->getAttributes ()->setString ("Text", STR (text));
	return sendMessage (message);

the problem is the MACRO

#define SMTG_CPP11_CAT_PRIVATE_DONT_USE(a,b)			a ## b

Anyone else see this?



This is definitely something on the VST3 SDK side...