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); }