Skip to content

docker based build for vcvrack v1 on armv7l, aarch64 on ubuntu 18.04 and raspbian

Notifications You must be signed in to change notification settings

hexdump0815/vcvrack-dockerbuild-v1

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

vcvrack dockerbuild for the v1 development version

this is my dockerbuild setup to easily build vcvrack v1 arm in both 32bit and 64bit versions - all that on ubuntu 18.04 and raspbian buster. it contains all the patches i used to get it built especially on arm (for instance using the simde project to translate the sse code to arm neon code as good as possible in a semiautomatic way).

for building this you should have at least 2gb of ram (it works with 1gb ram on an arm board, but it will swap like crazy and is not really recommended - better use an arm machine with 2gb of ram like an odroid c2, odroid xu4, asus tinkerboard etc.) - all builds are assumed to be done native (cross compiling would require some changes on the scripts).

regarding running vcvrack on arm don't get too excited: the performance of the usual arm sbc boards is way lower than the performance of a contemporary or older intel machine, but anyway with some optimizations and watching out for well performing plugins in vcvrack it is possible with small to medium sized patches. quite a bit of audio tuning is required and one should use a sampling frequency of 32khz preferrably, as this saves quite a few cpu cycles compared to 44.1khz or higher and still gives good quality sound. the biggest problem though is finding properly working opengl on those arm boards - it is often slow, broken or non existent and it took me quite some effort, tuning and patchig to get it working.

my reference systems are:

  • orbsmart s92 tv box - rockchip rk3288 4x1.5ghz 2gb ram - running ubuntu 18.04 armv7l with a self compiled linux 5.1.5 kernel with mali and other patches (it is similar to an asus tinkerboard) - usb audio PCM2704 (from ebay)
  • a95xr2 tv box - amlogic s905w 4x1.2ghz 2gb ram - running ubuntu 18.04 aarch64 with a self compiled linux 5.1.5 kernel with mali and other patches (it is similar but a bit slower than an odroid c2, khadas vim or libretech potato board) - usb audio PCM2704 (from ebay)
  • raspberry pi 3b - broadcom soc 4x1.2ghz 1gb ram - running ubuntu 18.04 aarch64 (not 32bit raspbian!) with a self compiled linux 5.0.20 kernel and self compiled latest mesa vc4 - native headphone jack audio

compiled binary packages for all the mentioned architectures are available under releases

some thanks to:

  • andrew belt for starting and keeping vcvrack up - https://github.com/VCVRack/Rack
  • pronvit for bringing me to the idea to even try to run vcvrack on arm - https://github.com/mi-rack/Rack
  • evan nemerson for his wonderful simde project, which makes it possible to somehow translate the intel sse code to arm neon with a limited effort - https://github.com/nemequ/simde
  • and to all the others involved in vcvrack, its plugins, its community and people involved in the opensource community making things like this possible

watch out for updates - there should be some coming during the next weeks and months ...

order of things to build all this:

requirement: docker installed and running, tested on ubuntu 18.04

  • docker-buildenv.sh (docker-buildenv-raspbian.sh)
  • prepare.sh
  • prepare-modules.sh
  • buildenv.sh (buildenv-raspbian.sh)

then inside of the docker container:

  • /compile/build.sh
  • /compile/build-modules.sh

then back outside of the docker container to create a dist folder with everything in it:

  • make-dist.sh

running rack

the dist folder can be copied anywhere, run ./Rack -d inside of it, some working opengl is required otherwise software rendering will eat up too much cpu cycles ... it is recommended to use jack for audio

IMPORTANT: in case you run into problems with those builds here, please create an issue in this git repo and not in the vcvrack repo, as the problems might be related to this build and not to vcvrack in general

changelog

version 1.1.6_13

  • plugins updated to the state of 21.08.2021 - library git commit: 7873f46d117cfe69d1fe77276ddbd7d724606b0f
  • 194 open source plugins included resulting in 2070+ vcvrack modules!

version 1.1.6_12

  • plugins updated to the state of 25.07.2021 - library git commit: 7aceb38f59a96d82436632782da174f7b35ccb66
  • 191 open source plugins included resulting in 2030+ vcvrack modules!
  • this time also with some builds for the upcoming debian bullseye (the regular builds are built on ubuntu bionic, but will also work on ubuntu focal)
  • it seems like the ubuntu 18.04 build also works well on bullseye

version 1.1.6_11

  • plugins updated to the state of 15.06.2021 - library git commit: 50da224d0e636048f4a021d6a4a2b8e0989c792d
  • 187 open source plugins included resulting in 2000+ vcvrack modules!

version 1.1.6_10

  • plugins updated to the state of 23.04.2021 - library git commit: 1b25c6a339e0e011c684dd162105eb912aca14f8
  • 185 open source plugins included resulting in 1970+ vcvrack modules!
  • vcvrack built from the diimdeep fork (https://github.com/diimdeep/Rack) which contains an option to disable the lights in the connectors and saves around 10% of cpu if that option is enabled - this helps a lot with the weak arm cpus compared to regular intel machines
  • myrisa plugins removed - i think they were work in progress only and now disappeared from github
  • there is a build optimized (via compiler options) for the amlogic s905x3 soc (which has a very small l1 cache lowering the performance of vcvrack quite a bit on this soc compared to similar ones), but it is not faster then the generic aarch64 build in the end - this version will most probably not run on other aarch64 socs as its built for armv8.2-a (vs. armv8-a usually)
  • the armv7l build is tuned (via compiler options) for the cortex a9 cpu cores of the odroid u2/u3/x/x2 - not yet tested if that really makes any difference - this version should still work well on any armv7 soc)

version 1.1.6_9

  • plugins updated to the state of 02.03.2021 - library git commit: 63ca0d7a762fd728a705827ed4f1adad6d5a9f97
  • 185 open source plugins included resulting in 1950+ vcvrack modules!
  • skjack disabled by default (but still included in plugins.off folder) as it always crashdumps on vcvrack exit and is not really recommended to be used anyway

version 1.1.6_8

  • plugins updated to the state of 19.12.2020 - library git commit: b80390a728d7d3be4346050bf442a12133919008
  • 179 open source plugins included resulting in 1930+ vcvrack modules!

version 1.1.6_7

  • november update

version 1.1.6_6

  • plugins updated to the state of 25.10.2020 - library git commit: cc6d26fe8c700fb21809e1811e865ff75d818ec4
  • 176 open source plugins included resulting in 1850+ vcvrack modules!
  • among them are some new modules still in development and thus not yet in the regular vcvrack library and some which were never submitted to it

version 1.1.6_5

  • plugins updated to the state of 25.08.2020 - library git commit: 5d2f6cd2ab4cd0ee2edc9a097630c945aff3cdeb
  • 162 open source plugins included resulting in 1700+ vcvrack modules!
  • among them are some new modules still in development and thus not yet in the regular vcvrack library and some which were never submitted to it

version 1.1.6_4

  • plugins updated to the state of 17.07.2020 - library git commit: 3d1069d8a08d0ad9d367a835a6aed93dafbd100c
  • 150 open source plugins included resulting in 1640 vcvrack modules!

version 1.1.6_3

  • plugins updated to the state of 22.05.2020
  • linux ubuntu versions compiled with gcc 8 instead of the default gcc 7 - seems to give about 1-2% less cpu usage
  • rack sdk files included in case anyone wants to build modules for the arm cpu versions
  • 141 open source plugins included resulting in 1550+ vcvrack modules!
  • stoermelder pack gamma added as one of them - this is not released to the vcvrack library, so do not rely on it - see: https://github.com/stoermelder/vcvrack-packgamma

version 1.1.6_2

  • plugins updated to the state of 08.04.2020 (bidoo perco works now with 32khz and surge-rack is 1.4beta)
  • 132 open source plugins included resulting in 1450+ vcvrack modules!

version 1.1.6.1

  • plugins updated to the state of 01.02.2020
  • 119 open source plugins included resulting in 1350+ vcvrack modules!

version 1.1.6

  • upgraded vcvrack to version v1.1.6
  • reverted framerate management (VCVRack/Rack@e631131) as it resulted in increased cpu usage in iconified mode - still to be analyzed why ...
  • reworked plugin building now based on the library repo
  • most plugins are now built with "-mfpu=neon" on armv7l and for raspbian too with a few exceptions (they result in a SIGBUS crash of vcvrack due to unaligned access if compiled with "-mfpu=neon")
  • 113 open source plugins included resulting in 1300+ vcvrack modules!

version 1.1.3.1

  • Bidoo plugin updated
  • new plugin: wiqid-anomalies
  • new plugin: trowaSoft
  • alternative 21Khz plugin build
  • 71 open source plugins included resulting in 887 vcvrack modules!

version 1.1.3

  • upgraded vcvrack to version v1.1.3
  • more included plugins (all 68 currently available open source plugins plus 21khz - resulting in a total of 869 vcvrack modules!)
  • introduce Rack.patch file with arch independent patches to avoid having to add them to all the arch patch files
  • vcvrack starts in iconified mode now on all platforms
  • some changes in vcvrack v1.1.2 and v.1.1.3 have been reverted to let all the plugins comple and run properly (see Rack.patch)

version 1.1.1

  • upgraded vcvrack to version v1.1.1
  • more included plugins (all 64 currently available open source plugins plus 21khz - resulting in a total of 772 vcvrack modules!)

version 1.1.0

  • upgraded vcvrack to version v1.1.0
  • more included plugins (all 51 currently available open source plugins plus 21khz, bidoo and lindenberg research - resulting in a total of 686 vcvrack modules!)
  • added notes for running vcvrack on raspbian
  • bring back support for building on and for x86_64 linux (64bit), i686 linux (32bit) and macos (64bit, tested on sierra) - please be aware that the linux intel builds start iconified like the linux arm builds by default (for possible low cpu usage automation scenarios)
  • add support for building on and for windows in 32bit and 64bit mode
  • given up on the bridge module - it is no longer developed and one can use the one from the v0 builds if required
  • known problems: -- it looks like that the windows 32bit version simply does not work - it gives an assertion when loading the template patch in jpommier-pffft (the first assertion in pffft_transform_internal in case anyone wants to debug and fix this) -- the FrozenWasteland plugin does not load (plugin.json not matching), some others not on macos and on windows (see readme-macos.txt and readme-windows.txt)

version 1.0.0

  • support for vcvrack v1.0.0
  • support for 20 modules for v1
  • only support arm 32bit and 64bit builds for now (intel and macos ones are no longer required, as they already contain threading, framerate limiting etc.)
  • added a precompiled version for raspbian buster besides the already provided ubuntu 18.04 version
  • lots of minor fixes and improvements

version 0.5.0

  • initial version