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:
+7
-25
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user