Commit Graph

2 Commits

Author SHA1 Message Date
joren
ac35c13630 fix: detect Midi/Bridge nodes using mode2 (port-derived direction)
Midi/Bridge nodes have media.class = "Midi/Bridge" with no Source/Sink/
Input/Output keyword, so mode stays PortMode::None. mode2 is derived from
actual port directions and correctly reflects Output for bridge nodes.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-06 02:35:12 +02:00
joren
9231c10429 feat: MIDI controller mapping (per-profile CC → volume/mute)
- Add MidiMapper class: pw_stream per MIDI source node, worker thread,
  learn mode via SSE named event
- New endpoints: /api/midi-devices, /api/midi-mappings, /api/midi-learn/start/stop
- Frontend: MidiMappingPanel with learn mode, per-profile storage
- GraphEngine: support multiple onChange callbacks (addOnChange)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-06 02:09:44 +02:00