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.
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.
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.