3 ms·
It would be perfectly possible to run the VST/AudioUnit in a separate x86 process and communicate with the host using shared memory. Thankfully the endianness i
by jamesfmilne 6y ago
It would be perfectly possible to run the VST/AudioUnit in a separate x86 process and communicate with the host using shared memory. Thankfully the endianness is the same so data structures are compatible.
Doesn't Logic Pro already support this?
Admittedly it does mean the plugin runs in a separate process&thread, requiring IPC to render each chunk of audio through that plugin.
- ratww 6y ago> Doesn't Logic Pro already support this? It didn't support it during the 32/64 bit transition, don't know about Intel to ARM. Of course even if Logic does it, there's the other DAWs.
- rock_artist 6y ago> Doesn't Logic Pro already support this? It does. Apple provides all AU hosts ability to run Rosetta2 AUs in native DAWs
- marcan_42 6y agoThat's because AUv3 is an out of process plug-in architecture, with the performance overhead that that entails. See here for why that doesn't scale to serious productions with high track count: https://ardour.org/plugins-in-process.html https://ardour.org/plugins-in-process.html
- marcan_42 6y agoThe endianness being the same does not mean data structures are compatible. There are many, many more details about data structure layout that vary between architectures (and even compilers of the same architecture, especially once you delve outside of C). VST2 is probably doable - what I use to run Windows VST2s on Linux is something similar with an out of process wrapper - but I can see VST3 with its C++ API being a major, major pain in the ass. And even then there are downsides. Running plug-ins out of process has significant context switching overhead. It's fine for one or two or half a dozen, but compare running 50 plug-ins in process and out of process and you'll notice a massive performance difference. You can fight that with larger buffer sizes, but that adds latency.