summaryrefslogtreecommitdiff
path: root/libs/ardour/midi_track.cc
diff options
context:
space:
mode:
authorDavid Robillard <d@drobilla.net>2015-03-24 13:47:37 -0400
committerDavid Robillard <d@drobilla.net>2015-03-24 13:48:43 -0400
commit089c334d0c4f2878f81b6767ee2230256e1fc949 (patch)
tree0159e58bd04e9045279b018c2bda61c3ba81929d /libs/ardour/midi_track.cc
parentd67d4d129f49179e41948d9268c40bc16d0475c9 (diff)
Resolve only active notes when muted/non-soloed.
Fixes bug #6206.
Diffstat (limited to 'libs/ardour/midi_track.cc')
-rw-r--r--libs/ardour/midi_track.cc10
1 files changed, 7 insertions, 3 deletions
diff --git a/libs/ardour/midi_track.cc b/libs/ardour/midi_track.cc
index 6e59600990..770e4da3fe 100644
--- a/libs/ardour/midi_track.cc
+++ b/libs/ardour/midi_track.cc
@@ -892,7 +892,7 @@ MidiTrack::act_on_mute ()
return;
}
- if (muted()) {
+ if (muted() || _mute_master->muted_by_others_at(MuteMaster::AllPoints)) {
/* only send messages for channels we are using */
uint16_t mask = get_playback_channel_mask();
@@ -904,10 +904,14 @@ MidiTrack::act_on_mute ()
DEBUG_TRACE (DEBUG::MidiIO, string_compose ("%1 delivers mute message to channel %2\n", name(), channel+1));
uint8_t ev[3] = { ((uint8_t) (MIDI_CMD_CONTROL | channel)), MIDI_CTL_SUSTAIN, 0 };
write_immediate_event (3, ev);
- ev[1] = MIDI_CTL_ALL_NOTES_OFF;
- write_immediate_event (3, ev);
+
+ /* Note we do not send MIDI_CTL_ALL_NOTES_OFF here, since this may
+ silence notes that came from another non-muted track. */
}
}
+
+ /* Resolve active notes. */
+ midi_diskstream()->resolve_tracker(_immediate_events, 0);
}
}