Summary
Explore line-in audio passthrough through Surge XT’s FX chain on the MPE Sound Module — potentially concurrent with MPE synth playback and existing footswitch MIDI → FX modulation.
This is not implemented today. The reference build is a one-way instrument appliance: MPE controller → Surge synth → audio out. Effects on the synth path are already handled via programmed footswitches sending MIDI CC into Surge; this issue covers adding external audio into that same FX ecosystem.
Status: potential / parked — not required for current validation or core positioning (dedicated MPE instrument vs multi-engine FX workstation).
Current behavior
surge-xt-cli runs headless with MPE enabled at boot (--mpe-enable, --all-midi-inputs, etc.).
- Signal flow: Roli (or other MPE controller) → Surge voices → USB audio out (Sound Blaster Play! 3).
- Footswitches (see
docs/FOOT_PEDAL.md, config/pedal-config.json, pedal scripts) send MIDI CC to modulate Surge FX parameters — already working on the synth path.
- Startup scripts configure audio output only (
--audio-interface); line-in is not routed.
- Default patches and boot flow assume synth-only operation.
Why this might be useful
- Process an external source (mic, guitar, second instrument) through Surge’s built-in reverb/delay/filter FX using the same footswitch mappings.
- Layer MPE synth + processed external audio in one box without a laptop.
- Demonstrates Surge XT headless flexibility on ARM Linux beyond pure synthesis.
Out of scope for this issue: hosting third-party VSTs (e.g. Valhalla) — no native Linux builds; Wine/yabridge is impractical on Pi.
Surge XT capabilities (engine support)
Surge can do this in a single instance:
| Mechanism |
Role |
| Scene A |
MPE synth (current use) |
| Scene B |
Audio Input oscillator → filters → scene insert FX |
| Master FX |
Process combined mix; footswitch CC targets apply here if mapped |
| Dual / split scene modes |
Layer synth + external path |
| Sidechain inputs |
Stereo line-in (same as Zynthian’s Surge sidechain routing) |
| Surge FX plugin |
FX-only path (separate binary; alternative architecture) |
Known Surge quirk: Audio Input in poly/mono modes may require a gate (MIDI note, latch mode, or purpose-built patch) for continuous passthrough — not true always-on hardware-pedal behavior without patch design.
References:
Proposed behavior (if built)
- Hardware: route line-in on the USB audio interface (Play! 3 has 3.5 mm input) or a stereo in/out interface.
- Software: configure Surge to capture input on the same ALSA device as output.
- Patch(es): dual-path layout — MPE synth on one scene, external audio through FX on the other (or master FX on mix).
- Footswitches: existing CC mappings modulate FX affecting passthrough, synth, or both (patch-dependent).
- Optional: dry/wet or bypass via footswitch CC or dedicated patch macros.
Concurrent operation target:
External line-in ──→ Surge (Scene B / master FX) ──┐
├──→ audio out
MPE controller ──→ Surge (Scene A / MPE voices) ──┘
Footswitches ──→ MIDI CC ──→ Surge FX params
Implementation sketch
Phase 0 — Feasibility spike (manual, not headless)
Phase 1 — Headless routing
Phase 2 — Product UX (optional)
Architecture note: current stack uses direct ALSA, no JACK. Prefer single Surge instance over Carla/JACK pipeline unless ALSA routing proves insufficient.
Hardware / performance notes
| Concern |
Guidance |
| Pi 4 vs Pi 5* |
Current stack (MPE + footswitch FX) needs no upgrade if stable today. Passthrough adds DSP load — Pi 5 = headroom, Pi 4 = try conservative patches first. |
| RAM |
4 GB sufficient — Surge + Lite OS + patch browser are well under 4 GB; 8 GB not expected to help unless swapping (bad for audio). |
| Latency (MPE path) |
~512-sample buffer ≈ ~11 ms buffer term (~13–18 ms touch-to-sound total at 44.1 kHz). Unchanged by footswitches. |
| Latency (passthrough path) |
Adds input buffer — often ~2× buffer term for external signal; fine for time-based FX, poor for tight dry monitoring. |
| CPU |
Footswitch MIDI = negligible. Passthrough + FX = moderate; bloated 3rd-party synth patches + heavy reverb on both paths = xrun risk. |
Acceptance criteria (if pursued)
Priority
Low / parked — core product is a dedicated MPE instrument appliance. Pursue only if validation signal or personal performance needs justify the scope (different job than Zynthian-style FX workstation, but narrower than full DAWless mixer).
Related
- Footswitch FX modulation:
docs/FOOT_PEDAL.md, pedal scripts, config/pedal-config.json
- Positioning: single-purpose instrument (Roli → Surge → out) — see README / product narrative
- Community context: users asking about Linux FX alternatives (Valhalla etc.) — native Surge/LV2 path only on Pi
Opened: 2026-07-24 (America/Toronto)
Summary
Explore line-in audio passthrough through Surge XT’s FX chain on the MPE Sound Module — potentially concurrent with MPE synth playback and existing footswitch MIDI → FX modulation.
This is not implemented today. The reference build is a one-way instrument appliance: MPE controller → Surge synth → audio out. Effects on the synth path are already handled via programmed footswitches sending MIDI CC into Surge; this issue covers adding external audio into that same FX ecosystem.
Status: potential / parked — not required for current validation or core positioning (dedicated MPE instrument vs multi-engine FX workstation).
Current behavior
surge-xt-cliruns headless with MPE enabled at boot (--mpe-enable,--all-midi-inputs, etc.).docs/FOOT_PEDAL.md,config/pedal-config.json, pedal scripts) send MIDI CC to modulate Surge FX parameters — already working on the synth path.--audio-interface); line-in is not routed.Why this might be useful
Out of scope for this issue: hosting third-party VSTs (e.g. Valhalla) — no native Linux builds; Wine/yabridge is impractical on Pi.
Surge XT capabilities (engine support)
Surge can do this in a single instance:
Known Surge quirk: Audio Input in poly/mono modes may require a gate (MIDI note, latch mode, or purpose-built patch) for continuous passthrough — not true always-on hardware-pedal behavior without patch design.
References:
Proposed behavior (if built)
Concurrent operation target:
Implementation sketch
Phase 0 — Feasibility spike (manual, not headless)
Phase 1 — Headless routing
detect-audio-device.sh/start-surge-cli.shto select input + output on the same ALSA device (verifysurge-xt-cli --list-devicesinput flags).Templates/Audio Instyle) tuned for dual MPE + line-in.docs/FOOT_PEDAL.md.Phase 2 — Product UX (optional)
Architecture note: current stack uses direct ALSA, no JACK. Prefer single Surge instance over Carla/JACK pipeline unless ALSA routing proves insufficient.
Hardware / performance notes
Acceptance criteria (if pursued)
Priority
Low / parked — core product is a dedicated MPE instrument appliance. Pursue only if validation signal or personal performance needs justify the scope (different job than Zynthian-style FX workstation, but narrower than full DAWless mixer).
Related
docs/FOOT_PEDAL.md, pedal scripts,config/pedal-config.jsonOpened: 2026-07-24 (America/Toronto)