Hi !
Here is an LTO optimized build of VCV 2.0.4 compiled on Raspberry Pi 400. Over 1330 LTO optimized modules included.
Here is how it looks in action:
NOTE:
Unfortunately due to possibility of breaking the license terms I need to take down the binaries. I will think how to distribute this in patch form only.
Time for some enterprising soul to stick a Pi4/400 into a eurorack module with some kind of ability to load vcv patches, with physical CV i/o and a link to customised front end/interface / OLED display ala Ornament and Crime. This can’t be far off
Hey hexdump! I have known about your project since quite long, and advertised it as appropriate whenever I could, though in a parallel to your effort and unaware of it I ported VCV 1.x to ARM myself quite some time ago, but never was very public about it. I use sse2neon because it is so much simpler and I’d rather add the missing intrinsics there than using the much more complex SIMDe project. I do have the patched sources, but they are still messy, meant for internal use only so far. I will clean them a little and put them on my github soon. You can still find them on a telegram group called “The Patch Bay” - hosted by Vega Deftwing - one of the VCV plugin developers. What you may be interested most likely are the optimization flags I used. I compiled almost everything with LTO, and I am pretty satisfied with the performance so far.
Haven’t had time for performance comparisons so far.
I just threw in all possible optimizations I could think of - had some prior experience compiling all opensource id software games for the Pi so that helped.
Compiled with gcc 10 on 32 bit Raspbian Bullseye. I was pretty surprised that I can use smoothly around 30-40 modules (of course carefully selected) and even some heavy ones (Squinky labs) with 44 khz sample rate and 512 samples buffer (10 ms latency).
When I go to 24 khz I can use even more modules while multitasking and at the same time playing youtube videos, etc.
yes - the rpi4 (or any other arm soc in this class) is not that bad … btw. in my experience going from 32bit to 64bit gives about 10-20% better performance on the same hardware with vcvrack - i do not remember the exact numbers, but it was somewhere in this range and it is quite a difference … looking forward to your sources/patches and compiler options used - btw. i also experimented with different optimization options, but the gain usually was very low - maybe 1-2% if at all and sometimes it even got worse …
It is incredible that you did all that work and share it. A really big thank you !
I have a rpi4 I wanted to use for my live setup, I would be more than thrilled to be able to port a few simple patches on it, it is a dream come true !
What OS should I install on it ? Right now it has the basic Raspbian (I use id to play a video in loop in an art show, really basic setup to have it play and looping at startup).
What else should I install ?
I was using a CM6206 for sound, with ALSA, would that work with VCV ?
You need stock 32 bit Raspbian Bullseye - the official OS for the Pi.
Alsa, Pulse, Jack all work. I get the lowest latency with ALSA around 10 ms (512 samples buffer). But I use a very crappy Behringer UCA 202 interface to match the low costliness of the Pi. I don’t know about CM6206 but if it is USB class compliant, I don’t see a problem.
UPDATE 2:
I managed to get some of the Valley’s plugins to work (after a very ugly hack that I am ashamed of ). Basically I was so impatient to make Plateau work that I added a software implementation of the missing intrinsics in sse2neon. So Plateau works OK now, and maybe I will release it only in a binary form - the other synth plugins compile but don’t function properly. I need to make proper neon implementations of the missing intrinsics - but I will leave this for another night.
Completely aware, but it serves a different purpose - it is meant to be a DAW plugin. Also it is based on the 1.X VCV tree.
My current goal is to have an efficient, 100% opensource and stable standalone VCV 2.x version for ARM - Raspberry Pi 4/400 being my first target, M1 and such for a later stage.