FYI I've just committed the first version of the VST3 (client) wrapper code.. Thanks to jrlanglois for doing most of the work on getting this implemented.
Feedback welcome! It's hot off the presses and hasn't had much testing, so any bug-spotting would be appreciated!
However I am getting a few compiler errors and perhaps I am missing something.
/Users/marc/plugin-development/JUCE_BUILDS/FL2Flanger/JuceLibraryCode/modules/juce_audio_plugin_client/VST3/juce_VST3_Wrapper.cpp:770:13: Reference to 'MemoryBlock' is ambiguous
/Users/marc/plugin-development/JUCE_BUILDS/FL2Flanger/JuceLibraryCode/modules/juce_audio_plugin_client/VST3/juce_VST3_Wrapper.cpp:771:50: Use of undeclared identifier 'mem'
/Users/marc/plugin-development/JUCE_BUILDS/FL2Flanger/JuceLibraryCode/modules/juce_audio_plugin_client/VST3/juce_VST3_Wrapper.cpp:772:34: Use of undeclared identifier 'mem'
/Users/marc/plugin-development/JUCE_BUILDS/FL2Flanger/JuceLibraryCode/modules/juce_audio_plugin_client/VST3/juce_VST3_Wrapper.cpp:1201:5: Reference to 'uint32' is ambiguous
Thanks! It is compling now. I'm testing it with Cubase 7.5 where my plugin shows up in the browser, but fails to load (selecting it does nothing). My VST2 version is working and loading fine.
I've also tried creating a clean test plugin via the Introjucer ('hello world') and tried loading it in both Cubase 7.5 as well as the Steinberg's VST3PluginTestHost and the same thing. It shows up in the plugin list, but fails to load.
Also the plugin shows up in the 'Other' category. Is there a way to set the category via the Introjucer (like with AAX and RTAS)?
Does commenting out line 1080 in juce_VST3_Wrapper.cpp fix the problem? I recall the Steinberg Validator complaining that process() should just return kResultTrue...
You can use the VST3PluginTestHost included in the SDK… Same issue… the (Synth) plugin is listed but won’t load… I haven’t tested with the demo plugin yet.
The Test host is located in: VST3 SDK/bin/Mac OS X/VST3PluginTestHost.pkg.tar.bz2
I'm getting the same issue with the demo plugin and VST3PluginTestHost. Also, launching VST3PluginTestHost from the debugger doesn't report anything other than "JUCE v3.0.2".
Haven't looked into this yet, but FYI there are nasty linkage problems if you attempt to run the debug plugin inside a debug version of the demo host. I wasted a couple of hours before I realised that the OS was incorrectly cross-linking some DLL symbols and that this was causing random internal problems. That was on OSX but similar things could probably happen on Windows too.
I haven’t noticed any issues when debugging on either platform with both being debug versions… but I did make this change a while ago to fix a problem in XCode which may be causing your problem…
void AudioFormatManager::registerBasicFormats()
{
registerFormat (new WavAudioFormat(), true);
registerFormat (new AiffAudioFormat(), false);
#if JUCE_USE_FLAC
registerFormat (new FlacAudioFormat(), false);
#endif
#if JUCE_USE_OGGVORBIS
registerFormat (new OggVorbisAudioFormat(), false);
#endif
#if JUCE_MAC || JUCE_IOS
#ifndef JUCE_DEBUG
registerFormat (new CoreAudioFormat(), false);
#endif
#endif
#if JUCE_USE_MP3AUDIOFORMAT
registerFormat (new MP3AudioFormat(), false);
#endif
#if JUCE_USE_WINDOWS_MEDIA_FORMAT
registerFormat (new WindowsMediaAudioFormat(), false);
#endif
}
Just mentioning that JuceDemoPlugin doesn't compile at the moment for VS2008 (just pulled from github).
I get these errors about int64 ambiguity:
e:\juce\modules\juce_audio_plugin_client\vst3\juce_vst3_wrapper.cpp(310) : error C2872: 'int64' : ambiguous symbol could be 'c:\sdks\vst3 sdk\pluginterfaces\base\ftypes.h(79) : __int64 Steinberg::int64' or 'e:\juce\modules\juce_core\maths\juce_mathsfunctions.h(55) : juce::int64' e:\juce\modules\juce_audio_plugin_client\vst3\juce_vst3_wrapper.cpp(234) : error C2872: 'int64' : ambiguous symbol could be 'c:\sdks\vst3 sdk\pluginterfaces\base\ftypes.h(79) : __int64 Steinberg::int64' or 'e:\juce\modules\juce_core\maths\juce_mathsfunctions.h(55) : juce::int64' e:\juce\modules\juce_audio_plugin_client\vst3\juce_vst3_wrapper.cpp(661) : error C2872: 'int64' : ambiguous symbol could be 'c:\sdks\vst3 sdk\pluginterfaces\base\ftypes.h(79) : __int64 Steinberg::int64' or 'e:\juce\modules\juce_core\maths\juce_mathsfunctions.h(55) : juce::int64'
No idea.. Those functions all seem to be declared and used correctly, and it works in the demo project.. Must be something you're doing in your code, but I can't think what, I'm afraid.