Hosting 64bit VST 2.4 plug-ins?

Hi,

in juce_VSTPluginFormat.cpp, all code is under [quote]#if ! (JUCE_MAC && JUCE_64BIT)[/quote]

Is it planned to support 64 bit VST plug-ins on Mac in the future?

Best

I’m not even sure if it’s possible, TBH… Anyone know if Steinberg have hacked VST 2.4 to run in 64-bit mode, or are they just pushing us all towards VST3 ?

Anyone know if Steinberg have hacked VST 2.4 to run in 64-bit mode

  • Yes! (since years)

Yes. I built and shipped quite a few 32/64-bit plugins on Mac using VST 2.4. This was using Juce 1.53. I’ve just re-verified for myself that this is the case. I had another person responsible for Windows builds, but she got 64-bit stuff going without too much bother. All it took was some work in the Juce VST wrapper. I ended up with separate wrappers for 32 and 64 bit builds (conditionally compiled), but still managed to get both images into a single executable. So far with Juce 2.00, I haven’t been able to do it (mainly because I’ve been busy elsewhere), but I’m assuming that some tweaks to the wrapper should do it.

No tweaks required for the juce vst wrapper indeed, 64-bit VST for mac, win and linux works out of the box.

I’m confused… Carbon isn’t available in a 64-bit build, so how could it even compile?

It isn’t available, but it isn’t necessary (at least in Juce 1.53). The tweaks in the wrapper were simply to exclude any reference to it. I’ll email you a copy of what I did (even the blind squirrel finds a nut once in a while).

That makes sense, and I’d be keen to see what you changed. But jpo is saying he didn’t need any tweaks!

[quote=“jules”][quote]
That makes sense, and I’d be keen to see what you changed. But jpo is saying he didn’t need any tweaks![/quote][/quote]

jpo has at least one more brain cell than I do. When I’ve tried to build VST with Juce 2.00, I’ve gotten something that looks like a plug but isn’t recognized as such by a DAW. jpo, were you building dual 32/64-bit binaries?

I’m not building with the Introjucer or xcode so maybe there are some compiler flags to adjust, but I swear that when I compare my juce_VST_Wraper.{cpp,mm} with the original (from juce’s git a few weeks ago) , there are no changes to handle 64-bit.

You mean fat binaries ? Yes, but I first compile the 32-bit vst and the 64-bit vst separately, and finally merge them with lipo into a universal binary so maybe it is a bit different when they are compiled at the same time

me too!

[quote=“jpo”]
You mean fat binaries ? Yes, but I first compile the 32-bit vst and the 64-bit vst separately, and finally merge them with lipo into a universal binary so maybe it is a bit different when they are compiled at the same time[/quote]
Ah, that’s part of it then. I’m doing a single build. The compiler does a 32-bit pass, then a 64-bit pass. So I don’t then have a followup tool to glue them together. The LP64 flag is set by the compiler for each pass and my wrapper tweaks were based on that. I’ve sent to code to Jules so we can see what he makes of it.

I thought Jules would like the title… In the course of arranging my project so I could easily switch between Juce 1.53 and Juce 2.00, I must have done something right. I’m now–in a single XCode target–able to build a fat 32/64-bit VST plugin. No Juce tweaks were needed except for the following business in AppConfig.h:

#ifdef __LP64__ #if __LP64__ #define JUCE_64BIT 1 #else #define JUCE_64BIT 0 #endif #endif

This uses VST 2.4. There may be reasons to go to a newer version of VST, but this isn’t one of them. I verified with Reaper, which comes in both 32-bit and 64-bit versions. In truth I’m not quite sure what else I might have changed in my project. I use a set of nested xcconfig files for all of my build rules (it’s easier to begin and maintain projects that way) and I was being very careful as I cleaned those up. Perhaps I touched just the right place. As far as I’m concerned, Jules can put this one in his out-box.

Well, it sounds cool that fat VST 2.4 plug-ins can be built in only one pass.

Now that we know that 64 bit VST 2.4 plug-ins do exist, how can they be hosted in Juce?

(That was the original question, sorry to come back to that subject :slight_smile: )