Instructions for setting up environment for SSP VST development

Download and install a virtual machine for your Mac/Windows computer and a debian stretch network installation image
(you can skip this part if you have a working debian stretch installation already somewhere, in a virtual machine or installed on PC hardware)

Download and Install virtualbox
Start virtualbox
Download debian stretch netinst image

Create machine using debian stretch netinst image
Start machine and Install debian stretch

See the following tutorials for all the details -


After debian is installed open a terminal and create a chroot for armhf
(see also https://wiki.debian.org/ArmHardFloatChroot)

cd ~
sudo apt-get install qemu-user-static debootstrap
sudo qemu-debootstrap --arch=armhf stretch stretch-armhf http://ftp.debian.org/debian/

log in to the chroot and download and install the JUCE library (and check out recommended commit to use)

sudo chroot stretch-armhf
apt install sudo
sudo apt-get install git

cd ~
git clone https://github.com/WeAreROLI/JUCE.git
mv JUCE juce
cd juce
git checkout 8b3935f12154767d37c65c1612d1bfeb93a5965f

Install JUCE linux dependencies while in chroot
(see also https://forum.juce.com/t/list-of-juce-dependencies-under-linux/15121/38)

sudo apt-get install clang git ladspa-sdk freeglut3-dev g++ libasound2-dev libcurl4-openssl-dev libfreetype6-dev libjack-jackd2-dev libx11-dev libxcomposite-dev libxcursor-dev libxinerama-dev libxrandr-dev mesa-common-dev webkit2gtk-4.0 juce-tools

Download and install ssp-sdk while in chroot

cd ~
mkdir percussa
cd percussa
git clone https://github.com/percussa/ssp-sdk.git

Download and install VST3 SDK from Steinberg while in chroot

cd ~
mkdir SDKs
cd SDKs
sudo apt-get install wget unzip
wget https://www.steinberg.net/sdk_downloads/vstsdk366_27_06_2016_build_61.zip
unzip vstsdk366_27_06_2016_build_61.zip
mv VST3\ SDK/ vst3-sdk

Compile ssp-sdk code (qvca example)

cd ~/percussa/ssp-sdk/Builds/Linux
./build.sh Release

Plugin installation

After this, the compiled plugin can be found in build/Release, and is named qvca.so.

The plugin can be copied to the SSP via the install.sh script, if you have connected your SSP to the network, or it can be copied to the SD card of the SSP if you’ve inserted the card into your computer. The plugin needs to go into the “plugins” folder in the BOOT partition on the SD card.

Instructions for connecting the SSP to your network via a USB-ethernet dongle and accessing its serial port via a USB-serial cable are elsewhere in the forum.

4 Likes

Hi,

I am currently trying these instructions and having trouble compiling. Specifically when I get to this step:

My initial reading is that is asking for a missing file from VST2 SDK. Is this accurate? Do I need to also install that somewhere?

One other detail, I am not able to cd ~ when in chroot, so I have simply done cd / which is what I think is intended.

Thanks!

Hi tap,

No you shouldn’t have to download the header file. It should be bundled in the zip for the vca example, assuming that is what you are using here.

I’m not an expert with Linux, but I will say that I used Debian as my environment OS and was able to make the files no problems.

Have you tried to go to the location of the header and see if the file actually exists there?

that’s not correct - @tap will need the VST SDK from the steinberg website. Due to the license agreement of the VST SDK it’s impossible to include that in the JUCE SDK or in our QVCA example on github.

@tap - I think you can use v3 of the VST SDK. From what I remember, Steinberg is including v2 headers in the v3 SDK tree.

Take a look at the Makefile included with the QVCA example on where to put the VST SDK relative to the QVCA example so make can find it.

My post above shows you the steps to download the v3 VST SDK and how to unzip/install it relative to the QVCA path.

Hope this helps.

1 Like

if you set up your chroot correctly, and you login to the chroot, you should be the root user, so if you do cd ~ you should cd into /root

Huzzah! Sorry, I lept without double checking. It has been so long since I set it all up, I forgot that detail.

Bert was a huge help getting me initially all setup.

Thanks for clearing that up!

Sorry to dredge up this old thread, but it seems like the right place… I’m having trouble with this workflow. Running the following command (to create the chroot):

results in

I: Running command: chroot stretch-armhf /debootstrap/debootstrap --second-stage
chroot: failed to run command '/debootstrap/debootstrap': Exec format error

This is on a Debian 9.7 Stretch Virtualbox image from OSBoxes.org.

The Google The Error Message pattern is not being kind. Any ideas?

I think I encountered this, but strangly not when doing this… I had this when trying to get this to run on a mac M1 (so was arm)

it looks like it related to this:

the source of the problem is this

update-binfmts: warning: Couldn't load the binfmt_misc module..

see if you can load the module using modprobe

modprobe binfmt_misc

I did figure out a way to solve it in December, but honestly I cannot remember how I got around it.
but it was some how linked to binfmt_misc.

but whats a bit odd… is when I did this with vmware last year it worked… so im wondering if there has been a change in the stretch image since I did it?
(seems odd considering how old it is)


might be useful

binfmt_misc

Linux is able execute binaries from other architectures, meaning that it should be possible to make use of pi-gen on an x86_64 system, even though it will be running ARM binaries. This requires support from the binfmt_misc kernel module.

You may see the following error:

update-binfmts: warning: Couldn't load the binfmt_misc module.

To resolve this, ensure that the following files are available (install them if necessary):

/lib/modules/$(uname -r)/kernel/fs/binfmt_misc.ko
/usr/bin/qemu-arm-static

You may also need to load the module by hand - run modprobe binfmt_misc .

Thanks… yeah, I’m not actually getting that (or any other) error message in my logs, and modprobe binfmt_msc gives a successful exit code.

I’ll try it on a different Debian image and see what happens.

EDIT: Yes, it worked without the above error on a different image - Debian 9.13 image from linuxvmimages.com (good) vs. 9.7 image from osboxes.org (bad)

I was able to successfully compile the QVCA VST using the above instructions on the new image!

2 Likes

hmm, I wonder what the underlying cause was if it was not binfmt…

oh well, doesn’t matter, now that you have got it working!

cool, did you copy it to the SSP and check that it runs ok :slight_smile:
once you have that done… you know you have a working build environment.
time to write some code :wink:

1 Like

I have been able to follow most of these instructions minus two.

The first is that the root folder of vstsdk366_27_06_2016_build_61.zip appears to be called VST_SDK instead of “VST3 SDK”. I think that is a simple mv VST_SDK vst-3sdk.

The bigger one though is that I have no file at ~/percussa/ssp-sdk/Builds/Linux/build.sh
How do I create the buildscripts? Is this part of the buildroot mentioned elsewhere?

checkout. my instructions for RNBO … the dev environment setup is identical.
(and ive improved it, since the sdk instructions… I’ll copy them over soon :slight_smile: )

Note: I’ve just noticed …(except my last comment :laughing: ) this entire topic is now outdated.

we changed the build system entirely with the last SSP, the instructions are within the repo
But as above post, the ones in my rnbo repo are more comprehensive… and a bit more proven :wink:

EDIT :
this is a new topic , that refers to the current ssp-sdk
https://forum.percussa.com/t/creating-modules-for-the-ssp-aka-ssp-sdk-updated/

also Ive now updated the docs for the ssp-sdk.
(currently in my repo, see above topic, but will be pushed to the percussa repo)