Apple Silicon M1 - system-on-a-chip to Rule Them All.

@Vortico don’t know if it helps but I got surge building as a fat binary in our pipelines in a couple of hours. Have a test version of the fat binary of our VST up on our nightly page.

Helps that I already had an ARM port for my vector stuff but I had that port through ifdefs and the simde lib. It really is just a double compile with a pair of flags and a modified link. We use CMAKE which made it super easy but no reason same commands couldn’t happen in make. Basically you run every compile twice - once with x86 and once with arm - then let the linker glom it together. Cmake and XCode handle it pretty seamlessly but it’s just commands.

I don’t have M1 hardware yet to actually run the thing in arm mode (as opposed to x86 mode) but if it helps I’m glad to share what I did.

Oh and if anyone here has M1 hardware already and would be willing to do a test or two for me and is also a surge user … please do hit me up!

3 Likes

I am currently examining the new M1 Mini, if you want, I can test it :slight_smile:

4 Likes

That would be awesome! Presume you have GB or Logic running so you can test an AU in an ARM host? If so can you grab https://surge-synthesizer.github.io/nightly the mac experimental nightly from the link there.

In theory that should let you download surge which is a fat binary. I’ve confirmed that lipo reports both architectures and the x86 side works. If you get that surge and load it into LPX or GB or other ARM AU host, you should be able to play a note in the init patch and also do menu / about and see that it is Mac Apple Silicon.

But also noone has ever tested this on ARM before so if you do kindly give it a whirl, you may want to not be wearing headphones and disconnect speakers. The code path running works fine on RPI and in zynthians and stuff so I think it will work, but you know. Extreme caution before you load it I would say!

And thank you so much. I think I’ll go grab an M1 mini soon so I can also test and profile before our 18 release in January but an early tester is great. (We also have a discord if you would rather chat there than here).

Oh and I should also thank @hexdump who was helpful with the RPI / ARM adaptation of surge back around 1.7.0. Was thinking of him then I saw him up the thread. That groundwork made our port easy.

of course I’m saying all this at the same time I’m saying that I have no idea if it works because I don’t have the hardware yet :slight_smile:

1 Like

I will try tomorrow and give you a feedback!

4 Likes

Any news? I’m very curious as to your experience!!

Does it run smoothly? Do all modules work? Can you run complex patches without issues?

4 Likes

same

1 Like

Alright, let’s give a quick overview what I experienced with my MacMini M1 so far relating VCV Rack usage:

Everything works as expected, Rosetta 2 translation works very smoothed and nicely, you don’t even notice that there is any translation/emulation somehow at all. I tested a a lot of plugins, but sure not all, but so far I did not found any problems.

The performance is very good and compared to my MacBook Pro late 2013 2.0 GHz Haswell CPU it is a quite huge difference! I could nearly run all my patches with internal 192kHz and the standard patch, which is loaded if you hit ‘new’, could be run up to 352.8KHz with no problems. Also the GPU performance is great - no fan was turned on for cooling, even on very heavy computings.

If you have an old Mac and want to upgrade for better performance and you’re fine with 8GB RAM, you can now do for less then 800€ or $700. I guess there will be more high-end ARM Macs coming next year with much more RAM, but they will be also more expensive.

If you have questions, fell free to ask :slight_smile:

Cheers, Patrick

11 Likes

Did you try to recompile some of your xcode project on the new machine ?

How can I load AU/VST3 on GarageBand? I am driving nuts :wink:

I am using CLion for development, but JetBrains has not yet updated it to run with M1. I have not recompiled any project yet. Still setup a development environment for native ARM, but this is difficult because of the missing homebrew :-/

If you want to setup a develop environment, you could go like that:

If you make a new instrument track yo will get this. Open the ‘plugin’ section at the bottom and you will see a blue bar that says “EPiano”

Click on that and you can choose an AU

then you can pick surge and you should get it loaded in GB

I also use clion and yeah can’t quite coax it to do a multi-arch Xcode build - seems to really want to use the code blocks generator.

but with cmake 3.18 if I use -GXcode -D\"CMAKE_OSX_ARCHITECTURES=arm64;x86_64\" as cmake arguments (modulo appropriate quote protection for in-script or what not) then run cmake --build dir I get a fat binary and a dual arch Xcode build. If that helps. (That’s basically how we build surge (which again, I don’t know if it works on the arm chips yet so grain of salt etc :slight_smile: ) )

1 Like

Appearently you can run the x86 version of Homebrew through Rosetta2. It’s not native development of course but it allows for running the programs:

Thanks for the info, but the challenge is to compile Rack for arm64 to run it natively. (Just for experimental usage)

So far I was able install home-brew by compiling all formulas by myself. It was tricky at some points, but seems to run now and I have installed all prerequisites needed to build Rack.

3 Likes

I know, it’s a bit off topic, but I wrote a small tool where you can check binaries for it’s architecture on console level:

I needed this to proof that homebrew formulas have been compiled to arm64 / fat binary.

Cheers, Patrick

1 Like

Was wondering if this would work since I don’t have access to an M1 Mac yet. How is the CPU performance? Clearly shows M1 is fine with SSE3 which a few of my modules use.

Edit: Rosetta running SSE3 I should add

Tempted by that price too for a development machine :smiley:

3 Likes

The macos command ‘lipo -archs’ will show the architectures too.

3 Likes