# VST3 Plugin wrapper

**URL:** <https://forum.juce.com/t/vst3-plugin-wrapper/12323>\
**Category:** Audio Plugins\
**Created:** [February 5, 2014, 4:31pm UTC](https://forum.juce.com/t/vst3-plugin-wrapper/12323 "2014-02-05T16:31:59Z")\
**Posts on this page:** 20\
**Page:** 1

<div class="post-metadata">

**Author:** ![jules](https://avatars.discourse-cdn.com/v4/letter/j/41988e/32.png) [@jules](https://forum.juce.com/u/jules)\
**Post date:** [February 5, 2014, 4:31pm UTC](https://forum.juce.com/t/vst3-plugin-wrapper/12323/1 "2014-02-05T16:31:59Z")

</div>

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&nbsp;testing, so any bug-spotting&nbsp;would be appreciated!

---

<div class="post-metadata">

**Author:** ![MarcW](https://sea2.discourse-cdn.com/flex026/user_avatar/forum.juce.com/marcw/32/244_2.png) [@MarcW](https://forum.juce.com/u/MarcW)\
**Post date:** [February 5, 2014, 9:03pm UTC](https://forum.juce.com/t/vst3-plugin-wrapper/12323/2 "2014-02-05T21:03:58Z")

</div>

This is awesome. &nbsp;Thanks for implementing this!

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

---

<div class="post-metadata">

**Author:** ![jules](https://avatars.discourse-cdn.com/v4/letter/j/41988e/32.png) [@jules](https://forum.juce.com/u/jules)\
**Post date:** [February 5, 2014, 9:14pm UTC](https://forum.juce.com/t/vst3-plugin-wrapper/12323/3 "2014-02-05T21:14:58Z")

</div>

Ah, I hadn't tried building it with the old Carbon headers. Have fixed that now.

---

<div class="post-metadata">

**Author:** ![MarcW](https://sea2.discourse-cdn.com/flex026/user_avatar/forum.juce.com/marcw/32/244_2.png) [@MarcW](https://forum.juce.com/u/MarcW)\
**Post date:** [February 5, 2014, 9:55pm UTC](https://forum.juce.com/t/vst3-plugin-wrapper/12323/4 "2014-02-05T21:55:00Z")

</div>

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.&nbsp;

Also the plugin shows up in the 'Other' category. Is there a way to set the category via the&nbsp;Introjucer (like with&nbsp;AAX and RTAS)?&nbsp;

-Marc

---

<div class="post-metadata">

**Author:** ![jrlanglois](https://sea2.discourse-cdn.com/flex026/user_avatar/forum.juce.com/jrlanglois/32/21372_2.png) [@jrlanglois](https://forum.juce.com/u/jrlanglois)\
**Post date:** [February 5, 2014, 10:21pm UTC](https://forum.juce.com/t/vst3-plugin-wrapper/12323/5 "2014-02-05T22:21:02Z")

</div>

Does commenting out line 1080 in _juce\_VST3\_Wrapper.cpp_ fix the problem? I recall the Steinberg Validator complaining that&nbsp;process() should just return kResultTrue...

---

<div class="post-metadata">

**Author:** ![MarcW](https://sea2.discourse-cdn.com/flex026/user_avatar/forum.juce.com/marcw/32/244_2.png) [@MarcW](https://forum.juce.com/u/MarcW)\
**Post date:** [February 5, 2014, 10:38pm UTC](https://forum.juce.com/t/vst3-plugin-wrapper/12323/6 "2014-02-05T22:38:06Z")

</div>

Just tried it and still the same result (with the&nbsp;clean test plugin and&nbsp;VST3PluginTestHost).&nbsp;

---

<div class="post-metadata">

**Author:** ![railjonrogut](https://sea2.discourse-cdn.com/flex026/user_avatar/forum.juce.com/railjonrogut/32/505_2.png) [@railjonrogut](https://forum.juce.com/u/railjonrogut)\
**Post date:** [February 5, 2014, 10:45pm UTC](https://forum.juce.com/t/vst3-plugin-wrapper/12323/7 "2014-02-05T22:45:00Z")

</div>

I have the same issue in Cubase 7.5

The plugin is listed and you can select it… but it doesn’t load…

In the Plugin Information List it has no I/O listed

I have

```auto

```

It also seems to be ignoring JucePlugin\_IsSynth and is only listed as Instrument instead of Instrument|Synth

(JucePlugin\_Vst3Category is not defined in AppConfig.h)

Rail

---

<div class="post-metadata">

**Author:** ![railjonrogut](https://sea2.discourse-cdn.com/flex026/user_avatar/forum.juce.com/railjonrogut/32/505_2.png) [@railjonrogut](https://forum.juce.com/u/railjonrogut)\
**Post date:** [February 5, 2014, 11:39pm UTC](https://forum.juce.com/t/vst3-plugin-wrapper/12323/8 "2014-02-05T23:39:37Z")

</div>

I added

```auto
#ifndef JucePlugin_Vst3Category
 #define JucePlugin_Vst3Category Vst::PlugType::kInstrumentSynth
#endif
```

to my AppConfig.h and the category now shows correctly in Cubase… but latency, side chain & I/O are still blank.

I have

```auto
#ifndef JucePlugin_MaxNumInputChannels
 #define JucePlugin_MaxNumInputChannels 2
#endif
#ifndef JucePlugin_MaxNumOutputChannels
 #define JucePlugin_MaxNumOutputChannels 32
#endif
```

Rail

---

<div class="post-metadata">

**Author:** ![railjonrogut](https://sea2.discourse-cdn.com/flex026/user_avatar/forum.juce.com/railjonrogut/32/505_2.png) [@railjonrogut](https://forum.juce.com/u/railjonrogut)\
**Post date:** [February 6, 2014, 11:18am UTC](https://forum.juce.com/t/vst3-plugin-wrapper/12323/9 "2014-02-06T11:18:29Z")

</div>

The Windows x64 post build copy fails… I had to add quotes to the post build step:

```auto

```

Strangely enough the debug post copy worked fine without the quotes ??

```auto
1>C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V110\Microsoft.CppCommon.targets(134,5): error MSB3073: The command "copy /Y C:\Users\username\Documents\juce projects\PlugName\Builds\VisualStudio2012\x64\Debug\PlugName.dll C:\Users\ username\Documents\juce projects\PlugName\Builds\VisualStudio2012\x64\Debug\PlugName.vst3
1>C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V110\Microsoft.CppCommon.targets(134,5): error MSB3073: :VCEnd" exited with code 1.
```

Rail

---

<div class="post-metadata">

**Author:** ![jules](https://avatars.discourse-cdn.com/v4/letter/j/41988e/32.png) [@jules](https://forum.juce.com/u/jules)\
**Post date:** [February 6, 2014, 11:25am UTC](https://forum.juce.com/t/vst3-plugin-wrapper/12323/10 "2014-02-06T11:25:58Z")

</div>

Thanks - will add those quotes. Annoyingly I don't currently have a copy of Cubse 7 to try this, so any clues people can give would be appreciated.

---

<div class="post-metadata">

**Author:** ![railjonrogut](https://sea2.discourse-cdn.com/flex026/user_avatar/forum.juce.com/railjonrogut/32/505_2.png) [@railjonrogut](https://forum.juce.com/u/railjonrogut)\
**Post date:** [February 6, 2014, 11:51am UTC](https://forum.juce.com/t/vst3-plugin-wrapper/12323/11 "2014-02-06T11:51:00Z")

</div>

Well I just built my plugin in VC2012 (x64) which has:

```auto
#ifndef JucePlugin_WantsMidiInput
 #define JucePlugin_WantsMidiInput 1
#endif
```

and it builds fine (x64) and the JUCE Demo host scans and finds it fine… but when I add it to the graph, the host crashes at:

juce\_OwnedArray.h line 157 in getUnchecked()

being called from

juce\_AudioProcessorGraph.cpp line 226

being called from AudioProcessorGraph::processBlock()

Rail

---

<div class="post-metadata">

**Author:** ![railjonrogut](https://sea2.discourse-cdn.com/flex026/user_avatar/forum.juce.com/railjonrogut/32/505_2.png) [@railjonrogut](https://forum.juce.com/u/railjonrogut)\
**Post date:** [February 6, 2014, 12:04pm UTC](https://forum.juce.com/t/vst3-plugin-wrapper/12323/12 "2014-02-06T12:04:00Z")

</div>

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

Rail

---

<div class="post-metadata">

**Author:** ![MarcW](https://sea2.discourse-cdn.com/flex026/user_avatar/forum.juce.com/marcw/32/244_2.png) [@MarcW](https://forum.juce.com/u/MarcW)\
**Post date:** [February 6, 2014, 3:03pm UTC](https://forum.juce.com/t/vst3-plugin-wrapper/12323/13 "2014-02-06T15:03:51Z")

</div>

I'm getting the same issue with the demo plugin and&nbsp;VST3PluginTestHost. Also, launching&nbsp;VST3PluginTestHost from the debugger doesn't report anything other than "JUCE v3.0.2".&nbsp;

---

<div class="post-metadata">

**Author:** ![jrlanglois](https://sea2.discourse-cdn.com/flex026/user_avatar/forum.juce.com/jrlanglois/32/21372_2.png) [@jrlanglois](https://forum.juce.com/u/jrlanglois)\
**Post date:** [February 6, 2014, 3:05pm UTC](https://forum.juce.com/t/vst3-plugin-wrapper/12323/14 "2014-02-06T15:05:00Z")

</div>

.

---

<div class="post-metadata">

**Author:** ![jules](https://avatars.discourse-cdn.com/v4/letter/j/41988e/32.png) [@jules](https://forum.juce.com/u/jules)\
**Post date:** [February 6, 2014, 3:09pm UTC](https://forum.juce.com/t/vst3-plugin-wrapper/12323/15 "2014-02-06T15:09:17Z")

</div>

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&nbsp;some DLL symbols and that this was causing random internal problems. That was on OSX but similar things could probably happen on Windows too.

---

<div class="post-metadata">

**Author:** ![railjonrogut](https://sea2.discourse-cdn.com/flex026/user_avatar/forum.juce.com/railjonrogut/32/505_2.png) [@railjonrogut](https://forum.juce.com/u/railjonrogut)\
**Post date:** [February 6, 2014, 6:01pm UTC](https://forum.juce.com/t/vst3-plugin-wrapper/12323/16 "2014-02-06T18:01:00Z")

</div>

Hi Jules,

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…

```auto
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
}
```

See: [http://www.juce.com/forum/topic/registerbasicformats-and-xcode-debugger](http://www.juce.com/forum/topic/registerbasicformats-and-xcode-debugger)

Cheers,

Rail

---

<div class="post-metadata">

**Author:** ![jrlanglois](https://sea2.discourse-cdn.com/flex026/user_avatar/forum.juce.com/jrlanglois/32/21372_2.png) [@jrlanglois](https://forum.juce.com/u/jrlanglois)\
**Post date:** [February 7, 2014, 3:49pm UTC](https://forum.juce.com/t/vst3-plugin-wrapper/12323/17 "2014-02-07T15:49:56Z")

</div>

I was able to fix a handful of things to get the plugin working in the VST3PluginTestHost - sent such to Jules... Please test in Cubase again soon!

---

<div class="post-metadata">

**Author:** ![KoenTanghe](https://sea2.discourse-cdn.com/flex026/user_avatar/forum.juce.com/koentanghe/32/533_2.png) [@KoenTanghe](https://forum.juce.com/u/KoenTanghe)\
**Post date:** [February 7, 2014, 11:03pm UTC](https://forum.juce.com/t/vst3-plugin-wrapper/12323/18 "2014-02-07T23:03:08Z")

</div>

Thanks for the updates to the audio plugin stuff!

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'
```

&nbsp;

---

<div class="post-metadata">

**Author:** ![xsd121](https://avatars.discourse-cdn.com/v4/letter/x/ebca7d/32.png) [@xsd121](https://forum.juce.com/u/xsd121)\
**Post date:** [February 8, 2014, 6:41am UTC](https://forum.juce.com/t/vst3-plugin-wrapper/12323/19 "2014-02-08T06:41:00Z")

</div>

Hi jules,

Thanks a lot for the work!

I just downloaded the latest 3.0.2 and built a new introjucer to create a vst3 plugin.

The generated hello world project can be built and loaded fine.

However, after I copied in the sources of my plugin into the project, I got link errors like:

&nbsp;

```
Undefined symbols for architecture x86_64:

  "juce::initialiseMac()", referenced from:

      initModule() in juce_VST3_Wrapper-7EC2410FEE7297A.o

  "juce::setNativeHostWindowSize(void*, juce::Component*, int, int, bool)", referenced from:

      JuceVST3EditController::JuceVST3Editor::ContentWrapperComponent::resizeHostWindow() in juce_VST3_Wrapper-7EC2410FEE7297A.o

  "juce::attachComponentToWindowRef(juce::Component*, void*, bool)", referenced from:

      JuceVST3EditController::JuceVST3Editor::attached(void*, char const*) in juce_VST3_Wrapper-7EC2410FEE7297A.o

  "juce::detachComponentFromWindowRef(juce::Component*, void*, bool)", referenced from:

      JuceVST3EditController::JuceVST3Editor::removed() in juce_VST3_Wrapper-7EC2410FEE7297A.o

ld: symbol(s) not found for architecture x86_64

clang: error: linker command failed with exit code 1 (use -v to see invocation)
```

I am on 10.9 osx and xcode 5.0.2.

&nbsp;

Any thoughts? Thanks.

---

<div class="post-metadata">

**Author:** ![jules](https://avatars.discourse-cdn.com/v4/letter/j/41988e/32.png) [@jules](https://forum.juce.com/u/jules)\
**Post date:** [February 8, 2014, 10:02am UTC](https://forum.juce.com/t/vst3-plugin-wrapper/12323/20 "2014-02-08T10:02:11Z")

</div>

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.

[Next page](https://forum.juce.com/t/vst3-plugin-wrapper/12323.md?page=2)
