I just wanted to find out how hard it would be to port VCV Rack. Basic Rack app was pretty simple to port. SSE2 instructions needed to be rewired to use sse2neon. Makefile needed to be adjusted to detect OS correctly etc.
If someone is interested in detailed changes I made to source then I can push them to github.
This is 2.06 as this seems to be newest on âv2â branch. This build was not really tested yet and in not ready for production use. Every plugin needs to be built separately for apple m1 to make this usable so lots of work to do before it is actually stable. This is just a POC to prove it is possible quite easily to compile VCV Rack 2 for M1 cpus without major code changes.
I already tested some things and:
Audio works perfectly fine (Core audio is available)
I compiled basic plugins from here and they load flawlessly to VCV Rack.
Tested VCO, LFO, VCA, Mixer and Audio 8 - these work great.
What I will do next is to make some performance tests to find out if it is really worth porting/faster than Rosetta2 executable.
To summarize: This build is not production ready in any way. There are no external plugins compiled for M1 yet - and there wonât be any until M1 is officially supported at some point in time. If there is any interest in M1 version Iâm be happy to share my progress so it can be reviewed and merged into main repository(although I doubt it will ever happen )
Max never dropped below 20% - it was constantly at 20-35%
Average never dropped below 9.5%
In native mode
Max was constantly below 10%
Average was stable at 8%
Moreover whole app is a lot more responsive in native mode. It is not really measureable but it just seems a lot more fluid.
I will try to compile VCV Library - Valley Plateau as this is really resource intensive and I will find out how this behaves. It might take some time because this plugin heavily uses SSE instructions only available on intel cpus. Iâll post more when I get some results.
Interesting! Have you also read/followed this thread:
In there is the big Dexter test patch.
Worth to use for testing.
Also have you compared your port with findings from Patrick @heapdump ?
He already did some research on building/porting, maybe you can combine your findings?
Exciting to see that there is a working in progress development!
I just had to switch mixer because the one from patch does not include source code. Here is my version. My patch it completely based on @rsmus7 just with different mixer:
Iâm on standard M1 (not pro). Both are struggling with this patch but native wins. It is more responsive and renders a lot faster. There is a lot of cracling sounds on both versions but native works better in my opinion.
List is still growing as I have limited time to play with this, I hope to have all plugins listed in coming days to pinpoint problems that might occur when actual m1 release is on the horizon.
Not that it matters much to me, but your tests using my Meander module (PS-PurrSoftware plugin) appear to be against my V1 âmasterâ branch, maybe. My V2 branch is âmaster-V2â.
plugins.zip - this contains all plugins I was able to compile
You should be aware that my release has rack directory changed from ~/Documents/Rack2 to ~Documents/Rack2M1 to avoid breaking Rosetta2 based Rack deployments. You should also be aware that you should not login to library from this release because it doesnât contain any plugins compatible with M1 cpus.
One other thing is this release is not signed and untrusted so you wonât be able to open it right away.
You will need to do sudo xattr -c PATH_TO_APP/VCV\ Rack\ 2\ Free.app in your terminal in order to open it.
Plugin installation is pretty simple. When you open Rack2 app just go to âHelp->Open user folderâ. Finder window will popup. You can drag and drop plugins from plugins.zip into âplugins/â directory in Rack user home folder.
Hope you enjoy it!
BTW: If any plugin creator wants me to remove their plugin from plugins.zip I will do that immediately after I get any message regarding this.
No problem, I just removed it at updated my release.
About this distribution: (I wouldnât even call it distribution)
I created it so everyone can test and use Rack2 on M1 chipset and compare with Rosetta2 emulated one. It is completely open source and everything I modified in source code of Rack2 is publicly available in my fork of Rack2.
I just fell in love with Rack2 and I admire that it is kept in free to use/opensource convention so I decided to give small contribution to the software. I hope that sometime in the future Rack2 will be officially available on M1 CPUs so Iâm trying to figure out how big effort it is to make this happen.
I also know there are so many plugins that one person is not able to test all of those - that is why I created release public for everyone to use.
I do not intent to use anyoneâs work for my profit. Just learning and tinkering myself as I became interested in sound programming lately and this is the most interesting way to start for me
however, for the purposes of licenses it is distribution. Most open source licenses do place restrictions on redistribution of binaries and/or source. So it would be good to verify that your arenât unintentionally violating anyoneâs license.
It seems all plugins use open licenses and Iâm allowed to recompile and redistribute software as long as I attach copy of license to each plugin - which is the case because vcvplugin format keeps license text along plugin binary.
Of course this doesnât mean that I will publish plugin if author doesnât want me to One word from author and I will remove given plugin as fast as I can.