Root cause: synth-diagnostic uses systemctl start to start pipeline
services, but those services had After=synth-diagnostic — causing
deadlock (they waited for synth-diagnostic to exit, which was waiting
for them).
Fix: pipeline services no longer list synth-diagnostic in After=.
synth-diagnostic has Before= them for boot ordering, and starts them
directly via systemctl start in run-tests.sh.
Also fixed prometheus-exporter: had After=synth-diagnostic backwards
— should start before synth-diagnostic (synth-diagnostic has
After=prometheus-exporter).
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