Success!!! Turns out you just need to shave a lot of yaks:
Here’s what worked for turning a R.pi into a “performer station” (my synth into pi, pi to central mixer (nuc), mix back to pi, to sound out headphones for monitoring):
Install
* download smaller raspian image
* just use dd method of burning the sdcard on my mac
* boot pi & find it & ssh into it
* set up static ip by editing `/etc/dhcpcd.conf`:
interface eth0
static ip_address=192.168.42.6/24
static routers=192.168.42.1
static domain_name_servers=8.8.8.8 8.8.4.4
sudo apt-get update ; sudo apt-get dist-upgrade
sudo apt-get install screen vim --no-install-recommends
sudo apt-get install alsa-utils jackd2 jackmeter ecasound ecatools --no-install-recommends
<busconfig>
<policy user="pi">
<allow own="org.freedesktop.ReserveDevice1.Audio0"/>
<allow own="org.freedesktop.ReserveDevice1.Audio1"/>
<allow own="org.freedesktop.ReserveDevice1.Audio2"/>
</policy>
</busconfig>
-
export DBUS_SESSION_BUS_ADDRESS=unix:path=/run/dbus/system_bus_socket
- or put it in your .bashrc
on nuc (mixing machine)
run (adjusting `hw:1` to your sound card:
jackd -P 90 -d alsa -d hw:1 -r 44100 -p 128 -n 1 -s &
jack_load netmanager
on pi
run (adjusting `hw:1` to your sound card on the pi, and `-n` to the name of this station):
jackd -P 90 -d net -n pi -s -l 1 &
jack_load audioadapter -i '-d hw:1 -r 44100 -p 128 -n 1'
# route audio in to the network (`system`) and then the network back to audio out
for c in 1 2 ; do jack_connect audioadapter:capture_$c system:playback_$c ; done
for c in 1 2 ; do jack_connect system:capture_$c audioadapter:playback_$c ; done
back on nuc
run
# route audio from network to audio card, as well as back to network
for c in 1 2 ; do jack_connect pi:from_slave_$c system:playback_$c ; done
for c in 1 2 ; do jack_connect pi:from_slave_$c pi:to_slave_$c ; done
# if you had multiple performer stations you could mix them with `ecasound` before routing to sound card and network.
Play!
* all works! But must keep `-p` at 128 or things are very sad
* latency can be as low as 1 (`-n` for alsa, `-l` for net)
* I haven't measured it, but feels ~1ms - probably a bit more with `ecasound` in the loop.