# The removal of JUCE’s embedded VST2 SDK

**URL:** <https://forum.juce.com/t/the-removal-of-juce-s-embedded-vst2-sdk/29994>\
**Category:** Audio Plugins\
**Created:** [October 23, 2018, 3:22pm UTC](https://forum.juce.com/t/the-removal-of-juce-s-embedded-vst2-sdk/29994 "2018-10-23T15:22:14Z")\
**Posts on this page:** 20\
**Page:** 1

<div class="post-metadata">

**Author:** ![t0m](https://sea2.discourse-cdn.com/flex026/user_avatar/forum.juce.com/t0m/32/16413_2.png) [@t0m](https://forum.juce.com/u/t0m)\
**Post date:** [October 23, 2018, 3:22pm UTC](https://forum.juce.com/t/the-removal-of-juce-s-embedded-vst2-sdk/29994/1 "2018-10-23T15:22:14Z")

</div>

Hello JUCE users,

Following Steinberg’s announcement that they are removing the VST2 components from the VST3 SDK

[https://www.steinberg.net/en/newsandevents/news/newsdetail/article/vst-3611-sdk-now-available-4906.html](https://www.steinberg.net/en/newsandevents/news/newsdetail/article/vst-3611-sdk-now-available-4906.html)

the JUCE team is also removing the VST2 header files from the JUCE repo. As of this commit

[https://github.com/WeAreROLI/JUCE/commit/a3566b8c1edac29997490143982cd2b2eb089ffa](https://github.com/WeAreROLI/JUCE/commit/a3566b8c1edac29997490143982cd2b2eb089ffa)

it is no longer possible to create VST2 plug-ins using JUCE’s embedded VST2 SDK.

If you are an existing VST2 developer, with the prerequisite VST2 developers license from Steinberg, then you can use the VST2 SDK from an older version of the VST3 SDK (or JUCE’s git history) to continue building VST2 plug-ins. If the VST2 SDK is in your compiler’s header search paths then no further changes will need to be made to your project.

Aside from missing header files there is one additional complication. By default JUCE automatically created VST2-compatible VST3 plug-ins, where both versions of the plug-in shared exactly the same form of saved state. This meant that some elements of the VST2 SDK were required to build VST3 plug-ins, and that the VST3 plug-in could “override” a VST2 plug-in in supported hosts. So if you’re currently building a VST3 plug-in you will also need a VST2 SDK to compile your project, even if you’re not building a VST2.

A `JUCE_VST3_CAN_REPLACE_VST2` configuration option has been added to the Projucer. This defaults to `1`, meaning that existing projects will be unaffected by this change (aside from requiring a VST2 SDK), but this option will be set to `0` for new projects. When this option is set to `0` then the VST2 SDK is not required to build VST3 plug-ins (which will work out-of-the-box with JUCE) but plug-ins built in such a way will not be able to “override” VST2 plug-ins. Changing the `JUCE_VST3_CAN_REPLACE_VST2` option changes the form of the plug-ins saved state, so any previous state saved in a host by an older version of the plug-in will be incompatible. This means that hosts will fail to load the new version of your plug-in on an existing track. Therefore, leave this flag unchanged if you want to maintain backwards compatibility.

---

<div class="post-metadata">

**Author:** ![tytel](https://sea2.discourse-cdn.com/flex026/user_avatar/forum.juce.com/tytel/32/655_2.png) [@tytel](https://forum.juce.com/u/tytel)\
**Post date:** [October 23, 2018, 4:34pm UTC](https://forum.juce.com/t/the-removal-of-juce-s-embedded-vst2-sdk/29994/2 "2018-10-23T16:34:24Z")

</div>

[insert mushroom cloud emoji]

---

<div class="post-metadata">

**Author:** ![Verbonaut](https://sea2.discourse-cdn.com/flex026/user_avatar/forum.juce.com/verbonaut/32/11824_2.png) [@Verbonaut](https://forum.juce.com/u/Verbonaut)\
**Post date:** [October 24, 2018, 7:59am UTC](https://forum.juce.com/t/the-removal-of-juce-s-embedded-vst2-sdk/29994/3 "2018-10-24T07:59:12Z")

</div>

I hope you’ve let Steinberg know that removal of the VST2 SDK from future releases of the VST3 SDK will break this backwards compatibility and strongly urged them not to do that (I suspect they want to as part of this gradual sunsetting of VST2). Allowing developers to provide customers a frictionless path from VST2 to VST3 is surely in everybody’s interest.

---

<div class="post-metadata">

**Author:** ![leehu](https://sea2.discourse-cdn.com/flex026/user_avatar/forum.juce.com/leehu/32/3280_2.png) [@leehu](https://forum.juce.com/u/leehu)\
**Post date:** [October 24, 2018, 8:34am UTC](https://forum.juce.com/t/the-removal-of-juce-s-embedded-vst2-sdk/29994/4 "2018-10-24T08:34:09Z")

</div>

It was a simple process - just adding include paths to your projucer settings - went smoothly for me

---

<div class="post-metadata">

**Author:** ![samuel](https://sea2.discourse-cdn.com/flex026/user_avatar/forum.juce.com/samuel/32/21_2.png) [@samuel](https://forum.juce.com/u/samuel)\
**Post date:** [October 24, 2018, 9:33pm UTC](https://forum.juce.com/t/the-removal-of-juce-s-embedded-vst2-sdk/29994/5 "2018-10-24T21:33:14Z")

</div>

**Feature Request**

In the Projucer, if ‘VST (legacy)’ is selected exclusively under Plugin Formats, it would be useful if the VST3 SDK Folder (containing the VST2 SDK) could be set in the Exporters.

At the moment, the ‘VST3 SDK Folder’ entry is only available if the VST3 plugin format is selected as well.

---

<div class="post-metadata">

**Author:** ![leehu](https://sea2.discourse-cdn.com/flex026/user_avatar/forum.juce.com/leehu/32/3280_2.png) [@leehu](https://forum.juce.com/u/leehu)\
**Post date:** [October 25, 2018, 5:17am UTC](https://forum.juce.com/t/the-removal-of-juce-s-embedded-vst2-sdk/29994/6 "2018-10-25T05:17:12Z")

</div>

From my understanding you have to forget the notion that the 2 SDKs used to come together and as the op says, you need to add the VST2 paths to your compiler header search paths in Projucer.

---

<div class="post-metadata">

**Author:** ![parkellipsen](https://avatars.discourse-cdn.com/v4/letter/p/7993a0/32.png) [@parkellipsen](https://forum.juce.com/u/parkellipsen)\
**Post date:** [October 25, 2018, 6:40am UTC](https://forum.juce.com/t/the-removal-of-juce-s-embedded-vst2-sdk/29994/7 "2018-10-25T06:40:42Z")

</div>

oh my … i wish ableton would get the memo at some point …

---

<div class="post-metadata">

**Author:** ![jesusginard](https://sea2.discourse-cdn.com/flex026/user_avatar/forum.juce.com/jesusginard/32/10008_2.png) [@jesusginard](https://forum.juce.com/u/jesusginard)\
**Post date:** [October 25, 2018, 12:46pm UTC](https://forum.juce.com/t/the-removal-of-juce-s-embedded-vst2-sdk/29994/8 "2018-10-25T12:46:12Z")

</div>

I’m having troubles with this. If I go to “Global Paths…” there’s no VST2.4 option, only VST3.

---

<div class="post-metadata">

**Author:** ![leehu](https://sea2.discourse-cdn.com/flex026/user_avatar/forum.juce.com/leehu/32/3280_2.png) [@leehu](https://forum.juce.com/u/leehu)\
**Post date:** [October 25, 2018, 12:51pm UTC](https://forum.juce.com/t/the-removal-of-juce-s-embedded-vst2-sdk/29994/9 "2018-10-25T12:51:32Z")

</div>

you need to update the Projucer header includes for the compiler - this isn’t a global option.

 ![image](https://us1.discourse-cdn.com/flex026/uploads/juce/original/2X/3/361527cb89e00124f291eee8cabd91d9abb72583.png)

---

<div class="post-metadata">

**Author:** ![chkn](https://sea2.discourse-cdn.com/flex026/user_avatar/forum.juce.com/chkn/32/3862_2.png) [@chkn](https://forum.juce.com/u/chkn)\
**Post date:** [October 25, 2018, 1:39pm UTC](https://forum.juce.com/t/the-removal-of-juce-s-embedded-vst2-sdk/29994/10 "2018-10-25T13:39:19Z")

</div>

Thanks, that was easy. (You only need the 3 files inside the vst2.x directory, but including the “pluginterfaces” folder structure.)

It would be great if ROLI will support the VST2Wrapper as long a whole product cycle lasts. (Which is 7-10 years in my case)

---

<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:** [October 26, 2018, 8:41am UTC](https://forum.juce.com/t/the-removal-of-juce-s-embedded-vst2-sdk/29994/11 "2018-10-26T08:41:11Z")

</div>

> [@chkn](#):
>
> It would be great if ROLI will support the VST2Wrapper as long a whole product cycle lasts. (Which is 7-10 years in my case)

Don’t panic, we’ve no plans to get rid of any wrapper code while people are still actively using it, which I guess will be for quite a while.

---

<div class="post-metadata">

**Author:** ![lob](https://avatars.discourse-cdn.com/v4/letter/l/ecae2f/32.png) [@lob](https://forum.juce.com/u/lob)\
**Post date:** [November 1, 2018, 10:43pm UTC](https://forum.juce.com/t/the-removal-of-juce-s-embedded-vst2-sdk/29994/12 "2018-11-01T22:43:52Z")

</div>

Hi,  
I am using the new VST3 SDK with the JUCE\_VST3\_CAN\_REPLACE\_VST2 set to 0. Where can we find a copy of the old VST2 SDK?  
Thank you

---

<div class="post-metadata">

**Author:** ![holy-city](https://avatars.discourse-cdn.com/v4/letter/h/8491ac/32.png) [@holy-city](https://forum.juce.com/u/holy-city)\
**Post date:** [November 1, 2018, 11:19pm UTC](https://forum.juce.com/t/the-removal-of-juce-s-embedded-vst2-sdk/29994/13 "2018-11-01T23:19:48Z")

</div>

from the change list

> ## Workaround
> 
> 1. The VST2 SDK can be obtained from the vstsdk3610\_11\_06\_2018\_build\_37 (or  
> older) VST3 SDK or JUCE version 5.3.2. You should put the VST2 SDK in your  
> header search paths.
> 2. For new plug-in projects where you will be releasing both a VST2 and VST3  
> version, and you want the VST3 plug-in to replace the VST2 plug-in in  
> hosts that support it, then you should enable the JUCE\_VST3\_CAN\_REPLACE\_VST2  
> option.

---

<div class="post-metadata">

**Author:** ![lob](https://avatars.discourse-cdn.com/v4/letter/l/ecae2f/32.png) [@lob](https://forum.juce.com/u/lob)\
**Post date:** [November 2, 2018, 1:33am UTC](https://forum.juce.com/t/the-removal-of-juce-s-embedded-vst2-sdk/29994/14 "2018-11-02T01:33:13Z")

</div>

> [@chkn](#):
>
> You only need the 3 files inside the vst2.x directory, but including the “pluginterfaces” folder structure.

> [@Holy\_City](#):
>
> from the change list

Ok, got it.  
Thank you

---

<div class="post-metadata">

**Author:** ![IvanC](https://sea2.discourse-cdn.com/flex026/user_avatar/forum.juce.com/ivanc/32/685_2.png) [@IvanC](https://forum.juce.com/u/IvanC)\
**Post date:** [November 2, 2018, 7:48am UTC](https://forum.juce.com/t/the-removal-of-juce-s-embedded-vst2-sdk/29994/15 "2018-11-02T07:48:24Z")

</div>

Quick question : do we need to add the path of the VST2 SDK in the header section in every single JUCE project ? Since there is a global path for the VST3 SDK, we shouldn’t need to do this right ?

---

<div class="post-metadata">

**Author:** ![t0m](https://sea2.discourse-cdn.com/flex026/user_avatar/forum.juce.com/t0m/32/16413_2.png) [@t0m](https://forum.juce.com/u/t0m)\
**Post date:** [November 2, 2018, 7:58am UTC](https://forum.juce.com/t/the-removal-of-juce-s-embedded-vst2-sdk/29994/16 "2018-11-02T07:58:55Z")

</div>

If you’re using JUCE’s VST3 SDK then JUCE projects will automatically have the path to the embedded VST3 SDK added to the compiler header search paths. So, in this case, you can either modify your copy of JUCE and place a VST2 SDK inside the embedded VST3 SDK, or you can add the path to an external VST2 SDK to the exporters in your project.

If you’re using a global path to a VST3 SDK, or if you have explicitly set a path to a VST3 SDK in an exporter, then JUCE projects will automatically have the path to the specified external VST3 SDK added to the compiler header search paths. If this external VST3 SDK also contains a VST2 SDK then the VST2 SDK will be detected automatically too.

---

<div class="post-metadata">

**Author:** ![IvanC](https://sea2.discourse-cdn.com/flex026/user_avatar/forum.juce.com/ivanc/32/685_2.png) [@IvanC](https://forum.juce.com/u/IvanC)\
**Post date:** [November 3, 2018, 9:58am UTC](https://forum.juce.com/t/the-removal-of-juce-s-embedded-vst2-sdk/29994/17 "2018-11-03T09:58:30Z")

</div>

Hello @t0m !

> [@t0m](#):
>
> you can either modify your copy of JUCE and place a VST2 SDK

I won’t, it’s going to be a pain to maintain 🙂

> [@t0m](#):
>
> If you’re using a global path to a VST3 SDK, or if you have explicitly set a path to a VST3 SDK in an exporter, then JUCE projects will automatically have the path to the specified external VST3 SDK added to the compiler header search paths. If this external VST3 SDK also contains a VST2 SDK then the VST2 SDK will be detected automatically too.

I have just done the test on my Windows machine, and it doesn’t work.

I have a plug-in I want to compile in VST2 and VST3. I don’t want to add any extra header definition in the Projucer file.

- So I have set the VST\_SDK path in the global paths, the one called “Custom VST3 Path” which contains the VST2\_SDK folder and the VST3\_SDK folder. I save my project, I try to compile it, the VST2 and the VST3 format can’t be compiled at all.
- If instead I set that global path to VST\_SDK/VST3\_SDK, the VST3 can be compiled, and the VST2 can’t
- If instead I set that global path to VST\_SDK/VST2\_SDK, the VST2 can be compiled, and the VST3 can’t

So if I understand properly, right now with the last version of JUCE in develop and the last Projucer, there are a lof of problems. I don’t understand why someone would want to override the VST3 SDK which is in JUCE, and use its own instead (the JUCE team should update the VST3 SDK in the repo at every update anyway). And by doing so, with the current implementation, it is impossible to have both the VST2 and the VST3 SDK working using the global paths. And even if it worked, that would mean that we can’t use both the last version of the VST3 SDK in the JUCE repo AND the VST2 SDK ? Unless we start to create hacked JUCE repo or add the VST2 SDK header in every single plug-in project, or download the last version of the VST3 SDK, and put the VST2\_SDK inside every single time ?

So in my humble opinion, it would be more convenient to remove the possibility to use a custom VST3 SDK, so all the people using JUCE is using the one in the repo, updated as often as necessary, and the global path will be updated to take into account the VST2 SDK only. So I can just set it once, and continue to use the VST2 SDK and the VST3 SDK which is now in the JUCE repo for a reason, without the need to copy and paste stuff in my JUCE projects definition.

---

<div class="post-metadata">

**Author:** ![t0m](https://sea2.discourse-cdn.com/flex026/user_avatar/forum.juce.com/t0m/32/16413_2.png) [@t0m](https://forum.juce.com/u/t0m)\
**Post date:** [November 3, 2018, 11:19am UTC](https://forum.juce.com/t/the-removal-of-juce-s-embedded-vst2-sdk/29994/18 "2018-11-03T11:19:01Z")

</div>

> [@IvanC](#):
>
> So in my humble opinion, it would be more convenient to remove the possibility to use a custom VST3 SDK

Some JUCE users have patched their SDK, so not providing this functionality is not an option.

I obviously wasn’t clear enough in my previous post, so I’ll have another go at explaining. If you set a path to a VST3 SDK then something like `$(HOME)/SDKs/VST3_SDK` will be automatically added to your compiler’s header search paths, so you can use this knowledge to make it so that the compiler can also find the files it needs from the VST2 SDK by copying the contents of the VST2 SDK into the VST3 SDK.

---

<div class="post-metadata">

**Author:** ![pizzafilms](https://sea2.discourse-cdn.com/flex026/user_avatar/forum.juce.com/pizzafilms/32/562_2.png) [@pizzafilms](https://forum.juce.com/u/pizzafilms)\
**Post date:** [November 3, 2018, 10:32pm UTC](https://forum.juce.com/t/the-removal-of-juce-s-embedded-vst2-sdk/29994/19 "2018-11-03T22:32:13Z")

</div>

I’m with @IvanC…this is overly complicated and it just isn’t working for me.

- I have a copy of the `plugininterfaces/` from the VST2\_SDK in my VST3\_SDK folder.
- My Global Custom VST3 path is set correctly to my VST3\_SDK folder.

My VST2 plugin is failing build here in juce\_VST\_Wrapper.cpp:

```
#include "pluginterfaces/vst2.x/aeffect.h"
#include "pluginterfaces/vst2.x/aeffectx.h"

```

Can we just have a VST2\_SDK folder setting?

What am I not understanding?

---

<div class="post-metadata">

**Author:** ![pizzafilms](https://sea2.discourse-cdn.com/flex026/user_avatar/forum.juce.com/pizzafilms/32/562_2.png) [@pizzafilms](https://forum.juce.com/u/pizzafilms)\
**Post date:** [November 4, 2018, 12:37am UTC](https://forum.juce.com/t/the-removal-of-juce-s-embedded-vst2-sdk/29994/20 "2018-11-04T00:37:00Z")

</div>

It looks like this might be related:

> [@AAX\_Version.h not found](https://forum.juce.com/t/aax-version-h-not-found/30155/5):
>
> It looks like that could be it. Here’s my Xcode Header Search Paths from Projucer built using commit c3e7c4725277b95363d68c3275d3bf2df78e2f0a from Oct 19: You can see the AAX headers and my custom VST3 SDK. But here’s my Header Search Paths from Projucer built using 2593d5e264d7a41dd98c40991d4694444f49adad from Nov 2: Notice, no AAX headers and no custom VST3 SDK. @ed95 ?

[Next page](https://forum.juce.com/t/the-removal-of-juce-s-embedded-vst2-sdk/29994.md?page=2)
