# Resources — Multi-Device Audio / MIDI Production (2026-08-07 cycle)

> **Topic.** Cultivating an "inner resonant cavity" — multi-device, multi-channel,
> networked audio production across iPad + Mac mini + MacBook: mic + multi-channel
> audio interface (1 DSP, 1 direct line-in), MIDI + OSC to influence acoustics,
> simultaneous multichannel recording to desktop and server, multi-MIDI + multi-audio
> channel sync.
>
> **Why this is one document.** The previous cycle (`RESOURCES-cycle-3.md`) covered
> AMT only. This is a parallel sweep for the audio-production half of the project.
> The two stacks share the same Mac hardware but are otherwise independent.

## TL;DR — the recommended stack

| Layer | Pick | Why |
|---|---|---|
| Tempo / phase sync | **Ableton Link** (free, MIT SDK) | The de-facto network tempo+beat+phase sync. iPad, Mac, Win, Linux, Android. UDP 20808. No MIDI messages, no audio — just beat grid alignment. Pair with `LinkKit` for native iOS integration. |
| MIDI over network | **macOS/iOS built-in RTP-MIDI** (AppleMIDI) + **`davidmoreno/rtpmidid`** on Linux, **`mik3y/pymidi`** for Python scripting | Native on every Apple device. Pairs with Link for the full "multi-device DAW" story. |
| OSC control | **madskjeldgaard/Birdhouse** (GPL-3.0) or **drlight-code/osccontrol-light** (MIT) for plugin↔OSC, **ToscA** (free, IRCAM) for DAW→OSC automation | Three pieces cover the three OSC use cases: sensor→plugin, plugin→device, DAW→show-control. |
| Networked audio offload | **apohl79/audiogridder** (GPL-3.0) | Run a heavy VST on the Mac mini, stream the audio to the MacBook. The killer app for "I have an iPad and two Macs." |
| Live multi-room audio | **SonoBus** (GPL-3.0) or **Snapcast** (GPL-3.0) | SonoBus = peer-to-peer, low-latency, perfect for remote session. Snapcast = server-based, perfect for multi-speaker home/venue. |
| Virtual audio routing (macOS) | **existentialaudio/BlackHole** (MIT) + built-in Aggregate + Multi-Output | The trio that lets you record system audio, combine interfaces, and split outputs without a hardware patchbay. |
| iPad hub | **AUM** (Kymatica, paid) + **Loopy Pro** (Athan, paid) + **Audiobus** | The de-facto iPad audio/MIDI routing stack. AUM for the matrix, Loopy Pro for the timeline, Audiobus for inter-app. |
| Resonant cavity / room analysis | **Room EQ Wizard (REW)** (free) + **robotai/ResoScan** (MIT) | REW is the gold standard. ResoScan is the "open the browser, click, see the modes" instant check. |
| Multi-channel recording | **thejasvibr/fieldrecorder** (MIT, Python) for ASIO multitrack, **FFmpeg** for server-side | The Python harness handles 24-channel dual-interface. FFmpeg handles the "record to server simultaneously" half. |
| iPad-as-DSP-into-DAW | **pi-audio-duplex** (AlexanderPavlenko) on Raspberry Pi 4 | Turns the Pi into a USB UAC2 + Ethernet gadget that makes the iPad appear as a VST insert in a desktop DAW. |

---

## GitHub repos

### Official / first-party (networked sync + transport)

- **[ableton/link](https://github.com/ableton/link)** — ⭐ 1.1k · C++ · **MIT** (SDK is free; Live is commercial)
  *The Ableton Link SDK. Tempo, beat, phase, and start/stop sync over a local network. UDP multicast on port 20808. Works on macOS, Windows, iOS, Linux, Android. Built into Live 9.6+ and 200+ third-party apps. Not MIDI — no notes, no audio, just beat alignment. The base of every multi-device session.*

- **[ableton/LinkKit](https://github.com/ableton/LinkKit)** — ⭐ 200+ · Swift · MIT (SDK)
  *The iOS Swift SDK for Ableton Link. The right way to add Link support to a native iOS app (vs. wrapping the C++ SDK). Sister to the C++ SDK — pick the one that matches your platform.*

- **[sonosaurus/sonobus](https://github.com/sonosaurus/sonobus)** — ⭐ 800+ · C++ · **GPL-3.0**
  *SonoBus: peer-to-peer, low-latency, multi-channel audio streaming between devices. Standalone on macOS, Windows, iOS, Linux + AU/VST plugin. Used for remote sessions, podcasting, distributed ensembles. The "Zoom for musicians" that's actually good. Configurable latency / quality / mix.*

- **[apohl79/audiogridder](https://github.com/apohl79/audiogridder)** — ⭐ 1k+ · C++ · **GPL-3.0**
  *AudioGridder: network bridge for audio and MIDI. Offload DSP processing of VST/AU plugins to a remote machine. The killer workflow: run a heavy orchestrator plugin on the Mac mini, stream the result to the MacBook's Live session. VST2/3 + AU. MIDI over network included. macOS + Windows.*

- **[snapcast/snapcast](https://github.com/snapcast/snapcast)** — ⭐ 6.5k+ · C++ · **GPL-3.0**
  *Snapcast: synchronous multiroom audio player. Server + clients. All clients sample-synced to the server — perfect for multi-speaker home setups, venue installs, art installations. The "Sonos for the people who like shell scripts" answer.*

- **[davidmoreno/rtpmidid](https://github.com/davidmoreno/rtpmidid)** — ⭐ 200+ · C++ · **GPL-2.0**
  *RTP-MIDI (AppleMIDI) daemon for Linux. Bridges ALSA sequencer to RTP-MIDI. Announced via mDNS/Avahi, consumed by macOS, iOS, Windows. The Linux side of the AppleMIDI world. Debian packages + `librtpmidid` library.*

- **[cbdevnet/midimonster](https://github.com/cbdevnet/midimonster)** — ⭐ 800+ · C · **GPL-2.0**
  *MidiMonster: multi-protocol MIDI routing daemon. Backends: rtpmidi, osc, art-net/dmx, alsa, evdev, jack, serial, network (raw). One daemon, every MIDI/OOSC protocol. The right answer when you have a non-standard device that needs MIDI in / OSC out / DMX out.*

- **[mik3y/pymidi](https://github.com/mik3y/pymidi)** — ⭐ 100+ · Python · **MIT** · v0.5.0 (2020)
  *Python library for building RTP-MIDI / AppleMIDI clients and servers. Build a network-attached virtual MIDI device from a Python script. The most useful library for "I want to pipe this app's MIDI over the network to my iPad" without spinning up a C++ daemon.*

- **[truce-audio/truce](https://github.com/truce-audio/truce)** — ⭐ 600+ · Rust · dual-licensed (framework commercial, plugin code open)
  *Truce: build audio plugins in Rust. VST3, CLAP, AU v2, AU v3 (macOS + iOS), AAX, LV2, standalone. From one codebase. The "Rust as the next audio-plugin language" bet. The iOS AUv3 build is what makes it interesting for the iPad half of the project.*

### OSC control (sensor / show-control / plugin integration)

- **[madskjeldgaard/Birdhouse](https://github.com/madskjeldgaard/Birdhouse)** — ⭐ 200+ · C++ · **GPL-3.0**
  *Birdhouse: a free VST/AU plugin that converts OSC messages to MIDI (and back). Designed for DIY electronics, Max/PureData/SuperCollider → DAW. The "my Eurorack module sends OSC and I want MIDI in Live" adapter. Drop into the FX chain, point at the OSC port, done.*

- **[drlight-code/osccontrol-light](https://github.com/drlight-code/osccontrol-light)** — ⭐ 30+ · C++ · **MIT**
  *OSC control — light: an audio plugin that speaks OSC. Plugin host → OSC. The "I want to bind a knob in Reaper to a touchOSC surface" plugin. Different shape than Birdhouse (one-way: plugin → OSC vs Birdhouse's two-way bridge). MIT license = friendlier than Birdhouse for closed-source forks.*

- **[EnvelopSound/EnvelopForLive](https://github.com/EnvelopSound/EnvelopForLive)** — ⭐ 100+ · Max (JS / gen~) · varies per file
  *Envelop for Live: Max-for-Live device for full Ambisonic spatial audio. Uses Live 12's multi-channel routing. OSC output for Azim/Elev, ADM-OSC support, 7.1.4 decoder. The "I have a VR/AR project that needs ambisonic music" answer. Live 12 only.*

### Virtual audio routing (macOS — the loopback toolkit)

- **[existentialaudio/blackhole](https://github.com/ExistentialAudio/BlackHole)** — ⭐ 7k+ · C · **MIT** · v0.6.1 (Feb 8 2025)
  *BlackHole: zero-latency virtual audio loopback driver for macOS. 2ch + 16ch variants. `brew install blackhole-2ch` / `blackhole-16ch`. The de-facto macOS loopback — passes audio between apps without hardware. Pairs with the built-in Multi-Output Device (Audio MIDI Setup) to record system audio + send to speakers simultaneously. GPL-3.0 in some forks, MIT upstream.*

- **[thejasvibr/fieldrecorder](https://github.com/thejasvibr/fieldrecorder)** — ⭐ 100+ · Python · **MIT**
  *fieldrecorder: dongle-less multi-camera + multi-mic recording, triggered by keyboard or audio threshold. Default: 24 channels from two ASIO RME Fireface UC. The Python harness for "I'm a field recordist and I need to capture 24 channels of bat calls without buying 4 dedicated recorders."*

- **[jsattler/BetterCapture](https://github.com/jsattler/BetterCapture)** — ⭐ low (new) · Swift · MIT
  *BetterCapture: macOS screen recorder. Records system audio + mic simultaneously. macOS 15.2+. The "I want a clean screen capture with audio for tutorials / streams" tool. New (2025), small but high-quality.*

### Resonant cavity / room analysis

- **[robotai/ResoScan](https://github.com/robotai/rescan)** (repo: rescan, project: ResoScan) — Python · **MIT**
  *ResoScan: browser-based room resonance scanner. Open the URL, grant mic permission, run a sweep, see frequency response + RT60 + waterfall plot. No install. The 30-second "is this room going to ruin my mix?" check.*

- **[DanFabb/pyCAFE](https://github.com/DanFabb/pycafe)** — Python · **MIT** · published 19 Dec 2025
  *pyCAFE: a finite-element framework for acoustic simulation in Python. Matrix-based, free. The "I want to design a room before building it" tool.*

- **I-Simpa** (open source) — C++/Qt · GPL-3.0
  *I-Simpa: 3D acoustic simulation using ray tracing (SPPS) and TLM. Open-source. The "I have a 3D model of my space" tool. Older but maintained.*

- **Wayverb** (reuk) — C++ · open source
  *Wayverb: hybrid geometric + wave-based acoustic simulation. The "I want both fast ray tracing and accurate wave at the listening position" tool. The only public acoustic tool with both methods.*

### Foundational / older but still relevant

- **Room EQ Wizard (REW)** — Java · free (donation-supported)
  *REW: the gold standard for room measurement. SPL, frequency response, impulse response, RT60, waterfall, room modes, room simulation. Java, so it runs everywhere. Not on GitHub (hosted at roomeqwizard.com) but the most-cited open tool in the room-acoustics community. Sister to REW: ARTA, HolmImpulse, but REW is free and good enough for 95% of users.*

- **AcMus** — Java · open-source
  *AcMus: integrated research platform for room acoustics. Eclipse-based. Older (2008+) but still maintained. Multi-platform, free.*

- **Loopback** (Rogue Amoeba, paid, macOS only) — not on GitHub
  *Loopback: paid virtual audio device for macOS. The "BlackHole for people who don't want to use the terminal" option. $50, very polished.*

### Watchlist (gone / dormant / waitlisted)

- **OSCulator** (Madeline Foundation, paid) — not on GitHub
  *OSCulator: Mac-only MIDI↔OSC converter. The de-facto paid tool. No public source. Worth knowing about but not for a GitHub-first stack.*
- **Tobias Erichsen rtpMIDI** (Windows, free) — not on GitHub
  *The Windows side of RTP-MIDI. The de-facto Windows tool. Use it on Windows; on Apple devices, use the built-in Network MIDI.*
- **rtpMIDI (jakenjones/node-rtpmidi)** — Node.js · 100+ ⭐
  *Node.js implementation of RTP-MIDI. Useful if you're scripting a JS-based control surface. The recovery journal isn't supported (so it's not for live performance).*
- **iConnectivity Audio4C** (paid hardware) — not on GitHub
  *The hardware answer to "I want a Mac and an iPad to share an audio interface simultaneously." Dual-host USB audio interface. $300+. The right answer if the BlackHole / virtual-audio route keeps glitching.*

## HuggingFace

This topic is heavier on real-time transport and system audio than on ML model
weights. A few models are still relevant:

- **[openai/whisper](https://huggingface.co/openai/whisper-large-v3-turbo)** — large-v3-turbo, MIT — for offline transcription of recorded sessions (alternative to the cloud Whisper API)
- **[pyf98/sonar-stt](https://huggingface.co/pyf98/sonar-stt)** — newer STT, multilingual, useful for captioning recorded sessions
- **[Mirelo/segment-audio](https://huggingface.co/Mirelo/segment-audio)** — Mirelo's own audio segmentation model; useful for "split the captured 24-channel recording into stems" as a post-process step

The full audio production stack leans on **system tools, plugins, and protocols**
more than on ML models. The HF section is small by design.

## Recommended stack for the demo (one-line summary)

**AUM (iPad) + Ableton Link (tempo sync) + macOS Network MIDI (RTP-MIDI) + AudioGridder (DSP offload) + BlackHole (loopback) + REW or ResoScan (room scan) + FFmpeg (server recording).** The demo will produce a session config from this stack with copy-pasteable setup steps.

## License summary

- **MIT (fully open, commercial OK):** Ableton Link SDK, LinkKit, BlackHole, pymidi, truce (plugin code), ResoScan, pyCAFE, Whisper
- **GPL-2.0:** rtpmidid, midimonster
- **GPL-3.0:** SonoBus, AudioGridder, Snapcast, I-Simpa, Birdhouse
- **Mixed / dual-licensed:** Truce (framework commercial, plugins open)
- **Freeware (no source):** REW, rtpMIDI (Windows), Loopback (paid), AUM/Loopy Pro/Audiobus (paid iOS), iConnectivity Audio4C (paid hardware)
- **Watchlist (verify before shipping):** OSCulator (paid Mac), Loopback (paid Mac)

**Commercial stack assemble:** the Link/MIDI-network side is fine for commercial
use. The GPL-3.0 tools (SonoBus, AudioGridder, Snapcast, Birdhouse) require GPL
disclosure if you ship derivatives. For a "production" product, the
commercial-only iOS apps (AUM, Loopy Pro) and the paid macOS app (Loopback)
plus the iConnectivity hardware close the loop.

## How this fits the project

This is a **parallel research thread** to the AMT one. They share the same Mac
hardware, the same `dashboard/`, and the same `INTEGRATION.md`/`RESOURCES.md`
file-naming. Cycle-3 of the AMT thread shipped `RESOURCES-cycle-3.md`; this
sweep ships `RESOURCES-audio.md`. Both can be reviewed / merged into the main
`RESOURCES.md` in a later cycle if the user wants to unify them.

The hub card for the audio demo lives in `demo-audio/index.html`. The
recommendation is to add ONE card to `dashboard/index.html` (next to the
cycle-3 AMT demo card) pointing at `demo-audio/`.

See `INTEGRATION-audio.md` for the full placement notes.
