I really meant it when I said I worked slowly.
Anyway, an updated method, this time using ALSA passthrough to the container. Essentially due to the way that containers work, the kernel is shared, including /dev/snd (i.e. ALSA).
It’s was a bit of a pain trying to figure the correct set of incantations to get it to work inside Docker (especially dealing with group ownership), but it does work, and it it gives native performance. The downside is that you have to dedicate a soundcard to it, and there is no hope for it working on OSX or in a VM.
This Gist gives a worked example of getting SuperCollider running inside a container with native performance, along with some technical info as to how it works.
I’ve also updated the first post with a summary.
Now that I have decent audio performance it’s time to actually get Norns running, plus the school holidays are about to finish so I might have some time!