Docker container for building patches

It does seem possible for some people to install the whole toolset, so you can program your module offline, but it doesn’t work for Faust on the Lich. See the ‘official docs’ link a few posts back in this thread. It’s not for the faint of heart though. You need some IT skills to get this working. It would be really great if someone could make a distribution that fully works as a Docker image or so…

Actually, there is a Docker image for building patches

I haven’t used it myself and I think there are a few steps used for installing frontend in there, but it should be easy enough to adapt it to just building patches. In this case unneeded node.js stuff should be removed and the entrypoint would be executing makefile instead of /app/bin/www script.

I think that Dockerfile is not used in production yet, it’s for never finished migration to a better infrastructure upgrade that would let them use newer version of FAUST among other things. But it’s probably functional.

That one doesn’t seem to work either. I think the problem is that it doesn’t specify any particular version of the repositories and the later ones seem to have problems (at least for me, with Faust). So I tried a few ‘release’ tags of the OwlProgram repo and stuck with the Faust versions of the same date range. After a lot of tries, I finally could build and install my Faust patches. Here’s the Dockerfile and procedure:

FROM ubuntu:18.04

RUN apt-get update \
 && apt-get install -y \
      build-essential \
      git \
      curl \
      pkg-config \
      make \
      cmake \
      gcc-arm-none-eabi \
 && rm -rf /var/lib/apt/lists/*

RUN git clone --recurse-submodules \
 && cd OwlProgram \
 && git checkout release/v21.1

RUN curl -LO \
 && tar xfz faust-2.30.5.tar.gz \
 && cd faust-2.30.5 \
 && make \
 && make install

Save as Dockerfile and build with

docker build -t lich .

Create a directory faust and put your .dsp files in there. Then start it with

mkdir build
docker run -ti --rm -v ${PWD}/faust:/OwlProgram/PatchSource -v ${PWD}/build:/OwlProgram/Build lich /bin/bash -l

At the prompt:

cd OwlProgram
make clean libs
# Ignore the build failure because `/bin/sh: 1: emcc: not found`.
make FAUST=patchfile.without.dsp clean patch

Then, outside of Docker, download FirmwareSender from Release v0.1 · pingdynasty/FirmwareSender · GitHub. Install the patch on your Lich with

cd build
FirmwareSender -in patch.bin -out OWL-LICH -run -store 1

Most of these instructions are coming straight from GitHub - RebelTechnology/OwlProgram: SDK for building dynamically loaded OWL patches.

I only tried Faust patches, because that’s all I do on the Lich. Hope this helps someone…

That sounds like success to me! How about keeping it in some repo on github or somewhere else in case if anyone will find use for it?

Also, you should most likely use develop branch in OwlProgram. Despite its name it has more bug fixes and is well tested. Even better is to use my version that has fixes specifically for FAUST and should work with its recent releases.

Btw you can do just git clone --branch develop ... instead of using 3 separate commands.

It would be great to have support for Heavy in this container, in case if someone can contribute it. Rebeltech server uses their fork and there’s been some WIP for using another fork that runs under python3 among other things.

1 Like

I’ve moved this to a separate topic in case if this can help attract more attention from other users


I first started out using the develop branch (remember the previous time the site went down, somewhere in December). The problem there was that even though the patches compiled just fine, when loading them on the Lich, they spewed nothing but garbage. That was both with your branch and the main one. At the time, I tried with Docker and native on my mac, but always the same result. Alas, the site came back and I was sufficiently pissed off to give up the endeavour :smiley:

Now that it is down again and I have some more free time (and less pissed off!), I tried to ‘go back in time’ to see when it would start working. Admittedly, I stopped trying combinations as soon as I got something working though. There are indeed most likely more recent versions with more fixes. But I mainly want to make music instead of fixing stuff… I did already discover some issue: when outputting clocks or CV, the module crashes. Maybe that’s fixed (or maybe not, I never tried before…).

Good idea for the repo. I’ll set one up…

As requested: here’s a github repo: GitHub - yrn1/owlbuilder
If anyone has improvements, send them over (or create a PR) and I’ll try to incorporate them.