auto-detect MIDI device, drop ALSA sequencer dependency, MPK Mini simulator

midi-bridge.py:
  - Auto-detect rawmidi device (gadget f_midi > env override > fallback)
  - Reconnect on ENODEV (device hotplug)
  - No longer needs MIDI_BRIDGE_DEV env var in common cases

start-synth.sh:
  - Remove all -alsamidi/-midiadddev flags (kernel lacks CONFIG_SND_SEQUENCER)
  - MIDI handled entirely by midi-bridge.service → UDP → netreceive
  - Host mode: same approach, no ALSA sequencer needed

mpk-mini-sim.pd:
  - New MPK Mini Mk II simulator (25 keys, 8 pads, 8 CC knobs)
  - Proper Pd #X obj format for all objects (bng, hsl, t, del, netsend, loadbang)
  - UDP output to board:8081, matching midi-bridge format

system: enable usb-gadget-audio.service at boot, load dwc3 module at boot
This commit is contained in:
2026-06-22 23:10:38 -07:00
parent 8cd796e3dd
commit dbd7c2cece
5 changed files with 642 additions and 65 deletions
+7 -25
View File
@@ -56,17 +56,11 @@ if [ "$MODE" = "auto" ]; then
ALSA_DEV=$(cat /run/usb-audio-dev)
fi
info "Mode: USB host (MIDI controller + USB audio interface)"
MIDI_OPTS=(-alsamidi)
midi_dev=$(amidi -l 2>/dev/null | grep -v "^Dir" | head -1 | awk '{print $2}' | sed 's/\(hw:[0-9]*,[0-9]*\).*/\1/')
if [ -n "$midi_dev" ]; then
MIDI_OPTS+=(-midiadddev "$midi_dev")
info " MIDI device: $midi_dev"
fi
# MIDI handled by midi-bridge.service → UDP → Pd netreceive
AUDIO_OPTS=(-audiooutdev 4 -audioindev 4)
PD_ARGS=(
-nogui -alsa
-send "pd dsp 1"
"${MIDI_OPTS[@]}"
"${AUDIO_OPTS[@]}"
-audiobuf 20 -blocksize 64 -r 48000
-channels 2 -inchannels 0 -outchannels 2
@@ -87,18 +81,13 @@ fi
# --- Configure per-mode options ---
AUDIO_OPTS=()
MIDI_OPTS=(-alsamidi)
if [ "$MODE" = "usb" ]; then
info "Mode: USB gadget (UAC1 audio + gmidi MIDI)"
AUDIO_OPTS=(-audiooutdev 2 -audioindev 2)
if aplay -l 2>/dev/null | grep -q "UAC1Gadget"; then
info " USB gadget: OK"
midi_dev=$(amidi -l 2>/dev/null | grep "f_midi" | head -1 | awk '{print $2}')
if [ -n "$midi_dev" ]; then
MIDI_OPTS+=(-midiadddev "$midi_dev")
info " MIDI device: $midi_dev"
fi
# MIDI handled by midi-bridge.service → UDP → Pd netreceive
else
info " USB gadget: NOT DETECTED (kernel modules needed)"
fi
@@ -125,19 +114,12 @@ if [ "$MODE" = "loopback" ]; then
fi
PD_ARGS=(
-nogui
-alsa
"${MIDI_OPTS[@]}"
"${AUDIO_OPTS[@]}"
-nogui -alsa
-send "pd dsp 1"
-audiobuf 20
-blocksize 64
-r 48000
-channels 1
-inchannels 0
-outchannels 1
-path "$PD_DIR"
"$PATCH"
"${AUDIO_OPTS[@]}"
-audiobuf 20 -blocksize 64 -r 48000
-channels 1 -inchannels 0 -outchannels 1
-path "$PD_DIR" "$PATCH"
)
if [ "$VERBOSE" = true ]; then