Full-stack audio routing across macOS / Linux / Windows, MIDI + OSC control surfaces, DAW integration over JACK, DSP (EQ / compression / loudness / spatial / binaural HRTF), AI denoise (DeepFilterNet / RNNoise / Resemble Enhance), stem separation (Demucs), TTS, Whisper transcription, and EBU R128 / Spotify / Apple / ATSC loudness certification. Use when the user says "set up DAW", "route audio through OBS", "MIDI control surface", "binaural ASMR", "stem separation", "loudness to −16 LUFS", "JACK transport", or anything audio-stack-related.
What: Route, process, and finish audio end-to-end across every OS and every control surface.
audio-routing-docs, audio-pipewire, audio-jack, audio-coreaudio, audio-wasapi, media-midi, media-osc, media-sox, ffmpeg-audio-filter, ffmpeg-audio-fx, ffmpeg-audio-spatial, media-denoise-ai, media-demucs, media-musicgen, media-tts-ai, media-whisper, media-ffmpeg-normalize, ffmpeg-captions, ffmpeg-subtitles.
| OS | Skill | What to do |
|---|---|---|
| Linux |
audio-pipewire |
pw-cli list, create virtual sink, pw-link source → target |
| macOS | audio-coreaudio | aggregate devices (multi-mic sum), BlackHole / Loopback virtual cables |
| Windows | audio-wasapi | VB-Cable / VoiceMeeter virtual routing |
| Cross-platform | audio-jack | jackd start, jack_lsp list-ports, jack_connect DAW → destination |
media-midi: list-ports, monitor JSON, send-note, map to OBS/OSC/anything.media-osc: send/listen.highpass=f=80, equalizer=f=3000:t=q:w=1:g=3, acompressor, alimiter, loudnorm.ladspa / lv2 filters.ffmpeg-audio-spatial:
sofalizer with a SOFA file, per-track azimuth / elevation.pan filter with channel matrix.media-denoise-ai (DeepFilterNet / RNNoise / Resemble Enhance), media-demucs (stem separation), media-tts-ai (Kokoro / OpenVoice / Piper), media-musicgen (Riffusion / YuE), media-whisper (transcription).
media-ffmpeg-normalize two-pass EBU R128:
| Target | Integrated | True peak |
|---|---|---|
| Spotify Master | −14 LUFS | −2 dBTP |
| Apple Podcasts | −16 LUFS | −1 dBTP |
| ATSC A/85 | −24 LUFS | varies |
| EBU R128 broadcast | −23 LUFS | −1 dBTP |
| ACX audiobooks | −19 LUFS | −3 dBTP |
workflow-podcast-pipeline.default to the current Pulse sink. Script with the real sink name from pw-cli ls Node.type:bundle → .elements branch./track/*/volume). Server-side wildcards fire multiple handlers.loudnorm is NOT a limiter. It normalizes. If peaks exceed target, it applies downward gain, not transient shaving. Add explicit alimiter.aresample filter_size trades quality for speed. 512 = audiophile, 128 = streaming.atempo range is 0.5–2.0 per instance. Chain for extremes.asetrate changes pitch AND tempo together. Combine with atempo for pitch-preserving speed.sidechaincompress — key input FIRST, signal SECOND. Wrong order = wrong ducking.loudnorm uses guardrails (±1 LUFS). Two-pass measures then applies exactly. Use media-ffmpeg-normalize for certification.jackd start → connect DAW ↔ system audio → media-midi monitor Stream Deck → MIDI CC maps to DAW transport (play/stop/record) AND to OBS scene switch in parallel.
workflow-podcast-pipeline — applied podcast recipe using this stack.workflow-live-production — MIDI/OSC surfaces driving OBS + DMX + PTZ.workflow-analysis-quality — loudness compliance verification.