after a few weeks of work and testing i would like to announce the v1.1.6 release of the sonaremin (https://github.com/hexdump0815/sonaremin): a small standalone device one can build based on various little arm computers like the raspberry pi, the odroid c2, the asus tinkerboard (being uploaded in a few minutes), some android tv boxes and some other similar devices and which is built around my arm builds of vcvrack. it can operate in two modes: display mode - where it can be used like a regular standalone vcvrack installation to create or modify vcvrack patches with an hdmi monitor, keyboard, mouse and maybe a midi controller connected to it – and virtual mode - where it can run with just a midi controller connected and using a specially prepared patch to play it like a hardware instrument or even without a midi controller connected to it in some installation scenarios where it simply plays a generative patch. in virtual mode it can be used like a regular hardware device: plug it in and shortly after it will work and when done simply plug it off.
the major changes for this version are:
upgrade vcvrack to version v1.1.6
more included modules (119 plugins = 1350+ vcvrack modules, status 01.02.2020)
better handling of realtime scheduling priority and cpu affinity - this helps quite a bit on the raspberry pi
there is now an optimize option in the desktop menu to rerun the realtime scheduling priority and cpu affinity setup whenever needed
rename headless mode to virtual mode to make room for the upcoming proper headless mode in vcvrack v2
switch some mali gpu based systems to the modesetting xorg server plus LIBGL_FB=3 mode of gl4es - this lets the gpu even render the ui if we are in virtual mode via xpra (does not work on the raspberry pi as it is mesa based and does not work on the tinkerboard)
image building process completely changed - it is way more clean and flexible now
supported systems: raspberry pi 3b and 3b plus (working much better now), amlogic s905w, s905x and s905 based android tv boxes, odroid c2, asus tinkerboard - more to come …
work on raspberry pi 4 support has started but is not working yet - meanwhile you can use my raspbian build of vcvrack on raspbian (not as fast as running it in 64bit mode on the sonaremin, but better than nothing until that is ready)
upgraded software everwhere: linux kernel is on v5.4 lts now, mesa for the raspberry pi is at v20rc1, gl4es is fresh and the underlying ubuntu is still 18.04 updated to current state
as vcvrack v1.1.6 has jack-midi enabled again, provide 4 jack midi connections instead of only one for more flexibility
the documentation is not yet updated completely, but i plan to do this during the next days.
you can get the latest prebuilt images for it from here:
Very cool work here!! Any update on Raspberry Pi 4 compatibility? I’m thinking about picking one up to try this out. Very interested in the headless mode.
i’m still fighting to get the rpi4 working - struggling with the combination of u-boot, 64bit and vc4/v3d opengl driver … but i hope to have it ready soon (whatever that will mean)
Cool, I hope you’ll update here when it’s ready! Also just so I don’t get my own hopes up too much, do you have any idea the level of complexity of patches that might run smoothly once rpi4 is working? I’ve got a patch that I’d love to perform with live as basically a stand-alone synth in headless mode with a midi controller. The patch has 2 of the audible instruments modules in it which I know are pretty cpu hungry.
@hexdump what sort of latency, timing issues, performance pitfalls are you getting on using a raspberry pi 3 (or 4) for your builds? Is it time to ditch my win 10 setup and make a pi stand-alone with your amazing efforts?
for the rpi its about 35ms if using usb-midi in and rpi-audio out (this is from the rpi3 - i did not try ti lower it on the rpi4 yet) - for other hardware a bit less is possible (amlogic s905/s905x/s905w like an odroid c2 for instance would give around 12ms with the right usb-audio) … if i’m connecting to the sonaremin via jack over (cable) ethernet its more around 65ms to be somewhat reliable …
i think on the rpi it might be complicated as usb seems to be a bit strange there - even with usb audio i did not get much lower (but that testing was still on rpi3) … for usb audio it is also important which usb audio card to use: the cheap $3 usb audio interfaces are much worse regarding latency - i’m using small burr brown pcm2704 adapters for around $5 which worked best for me … in the end latency depends a bit on the patch as well as the latency comes from buffering and the buffering is needed to compensate for peak loads the cpu might not handle at short moments i guess … i think some careful testing on the rpi4 might be worth a try as it has more cpu power and might maybe have a better usb design as well (not sure yet)
one other thing is that i’m not using a realtime kernel for the sonaremin to keep things less complicated, i’m only using realtime scheduler priorities which seem to work quite well so far - maybe with a real realtime kernel it could be improved, but for me this looks like to little gain from too much hassle right now
i can only recommend to just set up a sonaremin and play around with it - this way you can see what works and what not … it for sure has its limits but i think it still has quite a bit of potential
as i just had my rpi4 in the hands to test something else i tried to lower the latency on the rpi4: with native rpi audio 35ms (512 frames / 3 buffers) seems to be the minimum, but using a pcm2704 usb audio adapter i was able to get around 12ms (256 frames / 2 buffers) like for other setups and some quick experiments with down to around 3ms (64 frames / 2 buffers) looked promising
update: i just corrected the latency numbers given before - they were slightly too high
Just noticed you have some builds for Win 64. Have you tested any Window ‘stick’ computers – I’ve seen these on Amazon and they run some sort of Atom processor ( Z8350) and have Intel HD 400 graphics and a solid state drive/sort of.
the other builds are just ment to make it easier to build patches for the sonaremin on other systems, i.e. so that you will have the exact same set of plugins available there too to make sure the patches will run well on the sonaremin afterwards (as the sonaremin can only use the open source plugins built into it) … the compute stick idea should also work with the regular vcvrack i guess … if you want to go to those x86_64 intel atom cpu sticks i would suggest to play around with the linux version maybe as linux should have less overhead, but the performance of those low end atom cpus is not that great - one can get the same or better cpu performance with a raspberry pi 4 (around $55-60 with a case/big heatsink and power supply) or some cheap android tv box (which you can get for about $30-40 + $5 for the usb audio adapter) running the sonaremin, but its a bit hit and miss to find tv boxes which will really work well as you never know what you get with those (there is a lot of fake stuff around in this area)