64 bit plugins -what support is available in Juce?

Yes, I’m still getting tripped up by the LP64 symbol. Lots of complaints in the AU Carbon wrapper code. I tried some of the suggestions from otristan, but I obviously have an imperfect understanding. I still couldn’t get past the compile stage.

I had to move the cpps includes (AUCarbonViewBase.cpp AUCarbonViewDispatch.cpp AUCarbonViewControl.cpp CarbonEventHandler.cpp) before the other includes in the juce_AU_wrapper.mm or I had some trouble regarding Point class and stuff like that.
Of course you need to remove those from the project.

I’m going to have to bag this 64-bit attempt for the time being. I have enough link errors and complaints about Carbon stuff that my frustration is outweighing my motivation. I deeply appreciate those of you who will continue to pioneer this and get the juce issues worked out. But I’ve got to go back and work on audio for a while.

Hi,
Im wondering about the status of 64 bit VST on Mac.
Is there a plan to support it?
Cheers

+1

Pete

Will have a look when I get chance, but am focusing more on apps than plugins at the moment, trying to get the jucer going.

I wonder if meanwhile anybody managed to compile a 64 bit VST Plugin on Mac?
I could build VST Plugins 32/64 on Windows and 32/64 AU PLugins on Mac.
I’ve seen many other companies offering 64 VST Plugins for Mac, too, so there must be a way to do that.

The main problem seems to be the window handling in “juce_VST_Wrapper.mm” which uses still a lot of Carbon stuff that obviously does not work for 64 bit builds.
Any suggestions for a workaround???

Maybe I missed something but is there any 64 bit VST host on Mac OSX?

I’ve heard that the only one to date is Studio One by Presonus.

Well, that’s a damn good point - besides Presonus Studio One, I could not find any…
Anyways, it’s just a matter of time, untill you have to offer 64 Bit VST on Mac, too.

I’ve seen this code has been added to juce_IncludeCharacteristics.h

#if __LP64__ // (disable VSTs and RTAS in a 64-bit build) #undef JucePlugin_Build_VST #undef JucePlugin_Build_RTAS #endif

I think that this one could be added too, in the same spirit, because the RTAS SDK does not allow building 64 bits plug-ins on Windows either:

#if _WIN64 // (disable RTAS in a 64-bit build for Windows) #undef JucePlugin_Build_RTAS #endif

(Also, specifiying that the first one is MacOS X specific, would help in my opinion)

Good idea, thanks!

[quote=“friscokid”]Well, that’s a damn good point - besides Presonus Studio One, I could not find any…
Anyways, it’s just a matter of time, untill you have to offer 64 Bit VST on Mac, too.[/quote]
For those who doesn’t follow the vst sdk list. Steinberg starts to provide a developper preview of Cubase 64 bit for Mac.
For the moment, they don’t give a release date but it seems that this time is coming :slight_smile: .

[quote=“ke20”][quote=“friscokid”]Well, that’s a damn good point - besides Presonus Studio One, I could not find any…
Anyways, it’s just a matter of time, untill you have to offer 64 Bit VST on Mac, too.[/quote]
For those who doesn’t follow the vst sdk list. Steinberg starts to provide a developper preview of Cubase 64 bit for Mac.
For the moment, they don’t give a release date but it seems that this time is coming :slight_smile: .[/quote]

It would be for vst3 sdk I think?

I don’t think so because Cubase 64 bit on Windows handles vst2 and vst3.

Regarding 64bit compatibilty for VST2.4 on Mac, there was an interesting post on the VST Mailing List:

[quote]In general VST 2.4 is platform independent. There are only three platform dependent opcodes :
effEditOpen
audioMasterGetDirectory
audioMasterOpenFileSelector

Here are the required API changes for 64 bit Mac OS X:

effEditOpen:
the [ptr] argument is a WindowRef on 32 bit Mac.
On 64 bit this is a NSView pointer. The plug-in needs to add its own NSView as subview of it.

audioMasterGetDirectory:
the [return value] is a FSSpec on 32 bit Mac.
On 64 bit this is a char pointer pointing to an UTF-8 encoded string.

audioMasterOpenFileSelector:
the VstFileSelect struct uses FSSpec’s on 32 bit Mac.
On 64 bit Mac these are char pointers pointing to UTF-8 encoded strings.
[/quote]

Maybe this helps, since there are already two 64 bit VST hosts for Mac and this won’t be the last ones, I think.

If it’s as simple as that, then that’s excellent - could be just a few lines of code to get it working.

[quote=“otristan”]I had to move the cpps includes (AUCarbonViewBase.cpp AUCarbonViewDispatch.cpp AUCarbonViewControl.cpp CarbonEventHandler.cpp) before the other includes in the juce_AU_wrapper.mm or I had some trouble regarding Point class and stuff like that.
Of course you need to remove those from the project.[/quote]

Thank you for the hint, was helpful!

However, now that I have my .component binary built, I still can’t get it to be “seen” by Logic in 64 bit mode, nor by auval with the -64 switch which runs it in 64 bit mode. Should it be placed somewhere else than the traditional /Library/Audio/Plug-Ins/Components folder, or is there some particular other switch/option I should add somewhere (.plist file, maybe?)

I solved it by looking at the project generated by Xcode for an Audio Unit plug-in. The problem was that you need to add

-d x86_64_$x86_64 to the OTHER_REZFLAGS compile option.

Besides, regarding the VST support for 64 bit on Mac, also the REAPER daw is now supporting 64 bit plug-ins in beta