From ac35c136300b15ff2a39647b310a51a969fd74e4 Mon Sep 17 00:00:00 2001 From: joren Date: Mon, 6 Apr 2026 02:35:12 +0200 Subject: [PATCH] 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 --- src/midi_mapper.cpp | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/midi_mapper.cpp b/src/midi_mapper.cpp index 4f8bd26..0c49e77 100644 --- a/src/midi_mapper.cpp +++ b/src/midi_mapper.cpp @@ -118,12 +118,16 @@ void MidiMapper::refresh() { auto snap = m_engine.snapshot(); auto &pw = m_engine.pwData(); - // Identify MIDI source nodes (Output or Duplex mode, Midi type) + // Identify MIDI source nodes. + // Use mode2 (derived from actual port directions) rather than mode (from + // media.class string) because Midi/Bridge nodes have mode=None but still + // have real output ports and must be captured. std::vector> midi_sources; for (auto &n : snap.nodes) { if (!n.ready) continue; bool is_midi = (n.node_type & NodeType::Midi) != NodeType::None; - bool is_source = (n.mode & PortMode::Output) != PortMode::None; + bool is_source = (n.mode & PortMode::Output) != PortMode::None || + (n.mode2 & PortMode::Output) != PortMode::None; if (is_midi && is_source) midi_sources.emplace_back(n.id, n.name); }