Skip to content

AlexanderPavlenko/pi-audio-duplex

Repository files navigation

This code allows to use Raspberry Pi 4 as a USB gadget composite of multichannel Audio input/output and Ethernet, meaning it can transform an iPad (or any other UAC2 compatible device) into a VST effect/instrument integrated into a desktop DAW – the Pi 4 is powerful enough to run Reaper (armv7l) and its ReaStream plugin with low latency over the built-in Ethernet.

Other versions

Bootstrap on macOS

brew bundle # install dependencies

# export $SDCARD=diskX
# diskutil unmountDisk /dev/$SDCARD
# sudo dd bs=1m if=~/Downloads/2021-05-07-raspios-buster-armhf-lite.img of=/dev/r$SDCARD; sync
# sudo diskutil eject /dev/r$SDCARD

# on the boot partition:
# config.txt – add new line to the bottom: dtoverlay=dwc2
# cmdline.txt – insert after rootwait: modules-load=dwc2,libcomposite
# create empty file: touch ssh

# connect Ethernet cable and/or configure WiFi via wpa_supplicant.conf
# insert SD card and boot Pi 

PI_IP=$(host raspberrypi)
echo $PI_IP
PI_IP=${PI_IP##* }
ssh pi@$PI_IP
pass: raspberry

# change password, or add ~/.ssh/authorized_keys and disable password auth
# ./deploy.sh

BlackHole Drivers are no longer required, but still useful.

Pi 4 low power mode

sudo -i
apt update
apt full-upgrade
raspi-config # Advanced Options / Bootloader Version / Latest

A recent update to the Raspberry Pi 4 bootloader not only enables the low power mode for the USB hardware, allows the enabling of Network boot and enables data over the USB-C port. The lower power means it should run (without any hats) with the power supplied from a laptop.

Details of how to check/update the bootloader can be found here.

source

Using Reaper via SSH X11 forwarding

# Pi
apt install jackd2 xserver-xorg fontconfig libgtk-3-dev

# Mac
open -a xquartz # "Allow network" in Preferences / Security
scp ~/.Xauthority pi@pi4:.
export DISPLAY=:0 ; ssh -v -X -S none pi@pi4
sudo nice -n -20 sudo -u pi reaper_linux_armv7l/install-reaper.sh # [R]un REAPER

Preferences

  • Audio / Device
    • Audio system: JACK
    • Input channels: 4
    • Output channels: 2
    • Auto-start jackd, launch command: /home/pi/jack.sh

Once configured, Reaper can run without GUI:

  1. Route USB audio channels (not sure why they called Playback/Capture Inactive) in AUM, or Audiobus, or whatever
  2. ./start.sh

Alternatives

  • Dante AVIO Adapter – seems cool and pricey
  • iConnectivity AUDIO4c – multifunctional, key features include "routes audio digitally between two computing devices"
  • Apple IDAM – wired output only, lossless
  • Audreio – seems outdated without Audiobus integration
  • studiomux – compatibility issues, redundant features

RTP MIDI

iOS restriction that per device we can only use 1 MIDI Network Session and it's an iOS behavior that copies the data over / merges them to all connected MIDI Network Sessions under the hood

source

Seems to be the same problem on iPadOS. But if there is a better RTP MIDI implementation for the Raspberry Pi OS, it may be used to relay the multiple different MPE sessions, presented as a USB MIDI ports.

Credits