Is building for multiple platforms always so difficult?

DSP, Plugin and Host development discussion.
RELATED
PRODUCTS

Post

I'm new to this and Wow, was I naive!

I thought that once I got my plugin's DSP code worked out (the reason for plugins in the first place) that compiling for all the different platforms was just a matter of selecting the output switches in the compiler.

Boy was I WRONG!

It seems every format is it's own beast. What works in VST3 doesn't work in AU, and what works THERE doesn't work in AAX, etc. Even the SAME format needs "tweaking" between Mac and PC.

How do you guys crank out SO many plugins and make them work in all the different platforms?

(BTW - I'm using WDL-OL which is supposed to be cross-platform but it seems an awful lot of fiddling is still required to get things to work - most of which I haven't figured out yet...) Getting frustrated. :cry:

I have x64 VST2 and VST3 plugins built that work great on Windows. Trying to compile for Mac and NOTHING is working. Crashes hosts instantly on loading.

Post

Cross platform Windows/Mac is the easy part.
Wait till you get DAW specific bug reports.

Post

I use JUCE and I have very little, if any, platform specific code.

There's a few bits specifically for Cubase (#*&$^*&#^$^%$) and a few for AAX, but not too much.

Post

joshb wrote: Thu Jan 17, 2019 9:21 pm I use JUCE and I have very little, if any, platform specific code.

There's a few bits specifically for Cubase (#*&$^*&#^$^%$) and a few for AAX, but not too much.
Have you reported those to the Juce team? Or are they very specific to your plug-in?

Post

quikquak wrote: Fri Jan 18, 2019 12:01 am
joshb wrote: Thu Jan 17, 2019 9:21 pm I use JUCE and I have very little, if any, platform specific code.

There's a few bits specifically for Cubase (#*&$^*&#^$^%$) and a few for AAX, but not too much.
Have you reported those to the Juce team? Or are they very specific to your plug-in?
None of them are issues with JUCE.

Cubase has a weird quirk that needs to be dealt with that goes pretty far back that:
viewtopic.php?p=1096418

And AAX is just more needy because of licensing, NDAs, it's own library, Pace wrapper, etc..

But when it comes to the actual plugin code, my plugins are really one code base. Honestly, JUCE is a life saver.

Post

joshb wrote: Fri Jan 18, 2019 12:43 am
quikquak wrote: Fri Jan 18, 2019 12:01 am
joshb wrote: Thu Jan 17, 2019 9:21 pm I use JUCE and I have very little, if any, platform specific code.

There's a few bits specifically for Cubase (#*&$^*&#^$^%$) and a few for AAX, but not too much.
Have you reported those to the Juce team? Or are they very specific to your plug-in?
None of them are issues with JUCE.

Cubase has a weird quirk that needs to be dealt with that goes pretty far back that:
viewtopic.php?p=1096418

And AAX is just more needy because of licensing, NDAs, it's own library, Pace wrapper, etc..

But when it comes to the actual plugin code, my plugins are really one code base. Honestly, JUCE is a life saver.
AAX - well yeah, you have to attach the debugger after it's running as well. Juce has saved me a lot of tears with Apple development. The renderer is a bit slow and slightly buggy, but it certainly has many commendable features.

Post

Due to using Makefiles and GCC/clang/mingw64 on Linux/Mac/Windows, I've made building plugins very easy for myself. I can even cross-compile all three architectures on a single Linux machine. Writing cross platform code is another story but is made easier by using only cross platform libraries and writing small well-tested wrappers for obscure OS APIs.
VCV Rack, the Eurorack simulator

Post

vortico wrote: Fri Jan 18, 2019 10:47 pm Due to using Makefiles and GCC/clang/mingw64 on Linux/Mac/Windows, I've made building plugins very easy for myself. I can even cross-compile all three architectures on a single Linux machine. Writing cross platform code is another story but is made easier by using only cross platform libraries and writing small well-tested wrappers for obscure OS APIs.
This is pretty ideal but could you easily make an AAX plugin in this way?

It was such a pain making a build server for AAX because building requires one of those iLok dongles. My really hacked solution is a local Mac Mini that dual boots Mac/Windows and restarts every 12 hours and alternates the OS it boots. Then the builds can share an iLok dongle.

Post

Haven't tried AAX yet. Might do so later this year. Since Pro Tools is rapidly declining in popularity, I might just forget AAX, especially if Avid imposes high development costs.

However, VST2, VST3, and AU can be built from Makefiles.
VCV Rack, the Eurorack simulator

Post

Since Pro Tools is rapidly declining in popularity,
Where have you heard that ? That's not my feeling at all in the professional market

Post

A composer friend of mine has just started using it because ALL professional studios have it, and it makes life easier to go there prepared.

Post

vortico wrote: Sat Jan 19, 2019 12:01 am However, VST2, VST3, and AU can be built from Makefiles.
At least for AU and VST2 (probably VST3 too, but still haven't looked into that) it's also possible to build a single "unified" plugin binary (which on macOS could also be "universal binary" for 32/64 bit if you really want to push it) that exports multiple interfaces, such that "converting" from one format to another is just a matter of renaming the bundle or DLL file.

Post

mystran wrote: Sat Jan 19, 2019 5:16 pm
vortico wrote: Sat Jan 19, 2019 12:01 am However, VST2, VST3, and AU can be built from Makefiles.
At least for AU and VST2 (probably VST3 too, but still haven't looked into that) it's also possible to build a single "unified" plugin binary (which on macOS could also be "universal binary" for 32/64 bit if you really want to push it) that exports multiple interfaces, such that "converting" from one format to another is just a matter of renaming the bundle or DLL file.
AAX, AU, VST2, VST3 are all the same binary here, just renamed & copied into different places (on Mac, a single 32/64 bit universal binary contains multiple plug-ins, e.g. Repro-1/Repro-5, which is shelled in AAX/AU/VST3 and gets "patched" and renamed copies for VST2). It's actually quite easy, we just build it all together with its respective exports.

Once you go multiple plug-ins, I think the most important thing is to have something like CMake, SVN or GIT and an automated build system (e.g. Jenkins). Each commit / change in code base needs to compile for all plug-ins, all the time, passing all unit tests.

Post

That's a cool idea and makes perfect sense, since I imagine there are no public symbols that clash between VST2/VST3/AU/AAX. MacOS's bundles complicate things for distribution, but the shared libraries would still be the same.
VCV Rack, the Eurorack simulator

Post

Ivan_C wrote: Sat Jan 19, 2019 7:20 am
Since Pro Tools is rapidly declining in popularity,
Where have you heard that ? That's not my feeling at all in the professional market
I can confirm that, it's dead, good bye Avid. Thanks for making everything so hard for devs... AAX sucks big time...

Post Reply

Return to “DSP and Plugin Development”