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>
This commit is contained in:
@@ -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<std::pair<uint32_t, std::string>> 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);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user