Is building for multiple platforms always so difficult?

DSP, Plug-in and Host development discussion.
Fender19
KVRist
158 posts since 30 Aug, 2012

Post Thu Jan 17, 2019 12:14 pm

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.

mtytel
KVRist
63 posts since 28 Jan, 2013 from Oakland

Re: Is building for multiple platforms always so difficult?

Post Thu Jan 17, 2019 12:41 pm

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

joshb
KVRist
92 posts since 13 Apr, 2016

Re: Is building for multiple platforms always so difficult?

Post Thu Jan 17, 2019 1: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.

quikquak
KVRist
471 posts since 6 Aug, 2005 from England

Re: Is building for multiple platforms always so difficult?

Post Thu Jan 17, 2019 4:01 pm

joshb wrote:
Thu Jan 17, 2019 1: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?

joshb
KVRist
92 posts since 13 Apr, 2016

Re: Is building for multiple platforms always so difficult?

Post Thu Jan 17, 2019 4:43 pm

quikquak wrote:
Thu Jan 17, 2019 4:01 pm
joshb wrote:
Thu Jan 17, 2019 1: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.

quikquak
KVRist
471 posts since 6 Aug, 2005 from England

Re: Is building for multiple platforms always so difficult?

Post Fri Jan 18, 2019 10:03 am

joshb wrote:
Thu Jan 17, 2019 4:43 pm
quikquak wrote:
Thu Jan 17, 2019 4:01 pm
joshb wrote:
Thu Jan 17, 2019 1: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.

User avatar
vortico
KVRist
249 posts since 19 Jul, 2008

Re: Is building for multiple platforms always so difficult?

Post Fri Jan 18, 2019 2: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.
VCV Rack open-source virtual modular synthesizer

mtytel
KVRist
63 posts since 28 Jan, 2013 from Oakland

Re: Is building for multiple platforms always so difficult?

Post Fri Jan 18, 2019 3:11 pm

vortico wrote:
Fri Jan 18, 2019 2: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.

User avatar
vortico
KVRist
249 posts since 19 Jul, 2008

Re: Is building for multiple platforms always so difficult?

Post Fri Jan 18, 2019 4:01 pm

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 open-source virtual modular synthesizer

Ivan_C
KVRian
1079 posts since 11 Aug, 2004 from Breuillet, France

Re: Is building for multiple platforms always so difficult?

Post Fri Jan 18, 2019 11:20 pm

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

quikquak
KVRist
471 posts since 6 Aug, 2005 from England

Re: Is building for multiple platforms always so difficult?

Post Sat Jan 19, 2019 2:01 am

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.

mystran
KVRAF
5162 posts since 12 Feb, 2006 from Helsinki, Finland

Re: Is building for multiple platforms always so difficult?

Post Sat Jan 19, 2019 9:16 am

vortico wrote:
Fri Jan 18, 2019 4:01 pm
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.
If you'd like Signaldust to return, please ask Katinka Tuisku to resign.

User avatar
Urs
u-he
23252 posts since 8 Aug, 2002 from Berlin

Re: Is building for multiple platforms always so difficult?

Post Sun Jan 20, 2019 3:38 am

mystran wrote:
Sat Jan 19, 2019 9:16 am
vortico wrote:
Fri Jan 18, 2019 4:01 pm
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.

User avatar
vortico
KVRist
249 posts since 19 Jul, 2008

Re: Is building for multiple platforms always so difficult?

Post Sun Jan 20, 2019 4:36 pm

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 open-source virtual modular synthesizer

User avatar
WilliamK
KVRAF
4448 posts since 12 Jun, 2001 from Wusik Dot Com

Re: Is building for multiple platforms always so difficult?

Post Mon Jan 21, 2019 10:49 am

Ivan_C wrote:
Fri Jan 18, 2019 11:20 pm
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...

Return to “DSP and Plug-in Development”