Is building for multiple platforms always so difficult?
-
- KVRian
- Topic Starter
- 626 posts since 30 Aug, 2012
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.
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.
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.
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.
- KVRist
- 186 posts since 28 Jan, 2013 from Oakland
Cross platform Windows/Mac is the easy part.
Wait till you get DAW specific bug reports.
Wait till you get DAW specific bug reports.
- KVRian
- 872 posts since 6 Aug, 2005 from England
Have you reported those to the Juce team? Or are they very specific to your plug-in?
Dave Hoskins. http://www.quikquak.com
-
- KVRist
- 134 posts since 13 Apr, 2016
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.
- KVRian
- 872 posts since 6 Aug, 2005 from England
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.joshb wrote: ↑Fri Jan 18, 2019 12:43 amNone 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.
Dave Hoskins. http://www.quikquak.com
- KVRist
- 323 posts since 19 Jul, 2008
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
- KVRist
- 186 posts since 28 Jan, 2013 from Oakland
This is pretty ideal but could you easily make an AAX plugin in this way?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.
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.
- KVRist
- 323 posts since 19 Jul, 2008
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.
However, VST2, VST3, and AU can be built from Makefiles.
VCV Rack, the Eurorack simulator
-
- KVRian
- 1153 posts since 11 Aug, 2004 from Breuillet, France
Where have you heard that ? That's not my feeling at all in the professional marketSince Pro Tools is rapidly declining in popularity,
- KVRian
- 872 posts since 6 Aug, 2005 from England
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.
Dave Hoskins. http://www.quikquak.com
- KVRAF
- 7890 posts since 12 Feb, 2006 from Helsinki, Finland
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.
- u-he
- 28063 posts since 8 Aug, 2002 from Berlin
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.mystran wrote: ↑Sat Jan 19, 2019 5:16 pmAt 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.
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.
- KVRist
- 323 posts since 19 Jul, 2008
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
- Banned
- 5089 posts since 12 Jun, 2001 from Wusik Dot Com
I can confirm that, it's dead, good bye Avid. Thanks for making everything so hard for devs... AAX sucks big time...