From 089c334d0c4f2878f81b6767ee2230256e1fc949 Mon Sep 17 00:00:00 2001 From: David Robillard Date: Tue, 24 Mar 2015 13:47:37 -0400 Subject: Resolve only active notes when muted/non-soloed. Fixes bug #6206. --- libs/ardour/midi_track.cc | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) (limited to 'libs/ardour/midi_track.cc') 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); } } -- cgit v1.2.3