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>
This commit is contained in:
joren
2026-04-06 02:09:44 +02:00
parent 8b7ad6e9a8
commit 9231c10429
12 changed files with 1105 additions and 14 deletions

View File

@@ -15,6 +15,7 @@ add_executable(pwweb
src/main.cpp
src/graph_engine.cpp
src/web_server.cpp
src/midi_mapper.cpp
)
target_include_directories(pwweb PRIVATE