Non-ARM optimized plugins in a ARM hosts

DSP, Plugin and Host development discussion.
RELATED
PRODUCTS

Post

I am wondering if this does work. And also the opposite direction.
According to what i have read it works this way: A non-ARM software ist launched for the first time. The bytecode is translated to ARM. This can take up to 20 seconds. The next time it is faster.
But what happens if non ARM plugins/hosts and ARM plugins/hosts are combined?
Does this work?
Last edited by Markus Krause on Fri Nov 13, 2020 3:45 pm, edited 1 time in total.
https://www.tone2.com
Our award-winning synthesizers offer true high-end sound quality.

Post

Markus Krause wrote: Fri Nov 13, 2020 1:29 pm According to what i have read it works this way: A non-ARM software ist launched for the first time. The bytecode is translated to ARM. This can take up to 20 seconds. The next time it is faster.
From a source reference on the Rosetta article on Wikipedia (granted, not the best source) :
wikipedia wrote:It translates the apps when you install them, so they can launch immediately and can be instantly responsive. And Rosetta 2 can also translate code on the fly when needed.
Markus Krause wrote: Fri Nov 13, 2020 1:29 pm But what happens if non ARM plugins/hosts and ARM plugins/hosts are combined?
Does this work?
I'd expect that works seamlessly. Anything which gets loaded for execution should go through Rosetta2 if it's not yet translated.

As I read it, for plugins it could already happen at install time.

And as per the title:
Markus Krause wrote: Fri Nov 13, 2020 1:29 pm ARM optimized plugins in a non-ARM host
Once the host actually runs, it is translated. So at runtime there should not be a difference with a host that was optimised for ARM by the developer. Hence it should be able to use ARM-optimised plugins. In theory... ;-)
We are the KVR collective. Resistance is futile. You will be assimilated. Image
My MusicCalc is served over https!!

Post

I just tried scanning Intel VST plugins for an ARM host (Waveform) and they fail to scan. I scanned Intel AU plugins in ARM Logic and they scanned very slowly (I assume they were being compiled). They then showed up in Waveform. (I should have tried scanning them in Waveform first)

So maybe there is something the host needs to do to trigger the compile process? Or maybe there is a special work around for AU plugins. Will need to investigate more.

Then I tried Intel Waveform and it loaded Intel VST fine. When loading fat binary VST it loaded the Intel version. I figured the Intel VST should be compiled now, so went back to ARM Waveform, they still won't load.

Post

Thanks for your tests.
Did yo run your tests with VST3 or VST 2.4 plugins?
So VST plugins which were not compiled for the ARM cpu will not longer work in an ARM host. The users wil not longer be able to load their old projects.
AU plugins take longer to scan, but might work in an ARM host.
If this should be true Apple did mess up the Audio world again
https://www.tone2.com
Our award-winning synthesizers offer true high-end sound quality.

Post

If i understand it correctly nearly all recent vst plugins do not longer work in hosts that support ARM on the Mac. This is a bummer
https://www.tone2.com
Our award-winning synthesizers offer true high-end sound quality.

Post

Markus Krause wrote: Fri Nov 13, 2020 3:42 pm If i understand it correctly nearly all recent vst plugins do not longer work in hosts that support ARM on the Mac. This is a bummer
Assuming the host is a fat binary, users have the option of running the Intel version of the host.

Post

Just got confirmation from Apple Developer forum that all dylib in the same process must be the same architecture. I assume that means AU plugins run in their own process? So if ARM hosts want to run Intel plugins, they must have a plugin bridge, similar to the bridges used for running 32 bit plugins in 64 bit processes.

Post

From the technical side this would make sense. I already assumed that this scenario would come true.
As a result all hosts on the Mac that support ARM need to implement a bit-bridge. Otherwise the intel-plugins can not longer be used
https://www.tone2.com
Our award-winning synthesizers offer true high-end sound quality.

Post

On a related topic, has anyone done performance measurements on emulated plugin code on an ARM? Is the performance at least somewhat acceptable? If the plugins work at all in any host, that is.

Either way it sounds like we will have to make custom versions for ARM :neutral:

Richard
Synapse Audio Software - www.synapse-audio.com

Post

Richard_Synapse wrote: Fri Nov 13, 2020 7:37 pm Either way it sounds like we will have to make custom versions for ARM :neutral:
I think that it's possible to distribute Universal Binaries with ARM+IA64 on the same binary, but I have no idea if this is possible on plugins.

Post

waltercruz wrote: Fri Nov 13, 2020 7:42 pm
Richard_Synapse wrote: Fri Nov 13, 2020 7:37 pm Either way it sounds like we will have to make custom versions for ARM :neutral:
I think that it's possible to distribute Universal Binaries with ARM+IA64 on the same binary, but I have no idea if this is possible on plugins.
It used to work with PPC if I recall correctly (has been a while), so probably yes.

Richard
Synapse Audio Software - www.synapse-audio.com

Post

waltercruz wrote: Fri Nov 13, 2020 7:42 pm
Richard_Synapse wrote: Fri Nov 13, 2020 7:37 pm Either way it sounds like we will have to make custom versions for ARM :neutral:
I think that it's possible to distribute Universal Binaries with ARM+IA64 on the same binary, but I have no idea if this is possible on plugins.
Yes, this is possible.

Post

Richard_Synapse wrote: Fri Nov 13, 2020 7:37 pm On a related topic, has anyone done performance measurements on emulated plugin code on an ARM? Is the performance at least somewhat acceptable? If the plugins work at all in any host, that is.

Either way it sounds like we will have to make custom versions for ARM :neutral:
Running Nexus under Rosetta I can run about 50 instances playing a sequence preset. Native code I can do about 80. This is on pre-release hardware. I have ordered a MacBook Pro and will update these results with real hardware.

Post

FigBug wrote: Fri Nov 13, 2020 8:08 pm Running Nexus under Rosetta I can run about 50 instances playing a sequence preset. Native code I can do about 80. This is on pre-release hardware. I have ordered a MacBook Pro and will update these results with real hardware.
Ow! That's a bigger hit than I've heard before. 37.5%. I'm surprised since most ARM substitutions look to be one-to-one, clock-speed wise. It's probably in the SIMD, where they may be substituting code loops for vector calls. It's been a while since I compared NEON to Intel.

As an aside, when does your secret squirrel ARM Mini have to go back?
I started on Logic 5 with a PowerBook G4 550Mhz. I now have a MacBook Air M1 and it's ~165x faster! So, why is my music not proportionally better? :(

Post

syntonica wrote: Fri Nov 13, 2020 9:45 pm As an aside, when does your secret squirrel ARM Mini have to go back?
Not sure, they haven't given a date yet.

Post Reply

Return to “DSP and Plugin Development”