diff --git a/libs/ardour/ardour/midi_model.h b/libs/ardour/ardour/midi_model.h
index 1479bdc..d0a05e1 100644
--- a/libs/ardour/ardour/midi_model.h
+++ b/libs/ardour/ardour/midi_model.h
@@ -289,6 +289,8 @@ private:
 	void control_list_interpolation_changed (Evoral::Parameter, Evoral::ControlList::InterpolationStyle);
 	void automation_list_automation_state_changed (Evoral::Parameter, AutoState);
 
+	void control_list_marked_dirty ();
+
 	PBD::ScopedConnectionList _midi_source_connections;
 
 	// We cannot use a boost::shared_ptr here to avoid a retain cycle
diff --git a/libs/ardour/midi_model.cc b/libs/ardour/midi_model.cc
index ce357dc..039b44e 100644
--- a/libs/ardour/midi_model.cc
+++ b/libs/ardour/midi_model.cc
@@ -1946,3 +1946,9 @@ MidiModel::transpose (TimeType from, TimeType to, int semitones)
 
 	apply_command (s->session (), c);
 }
+
+void
+MidiModel::control_list_marked_dirty ()
+{
+	ContentsChanged (); /* EMIT SIGNAL */
+}
diff --git a/libs/evoral/evoral/Sequence.hpp b/libs/evoral/evoral/Sequence.hpp
index 98d4b19..bc3831d 100644
--- a/libs/evoral/evoral/Sequence.hpp
+++ b/libs/evoral/evoral/Sequence.hpp
@@ -313,7 +313,7 @@ private:
 	void get_notes_by_pitch (Notes&, NoteOperator, uint8_t val, int chan_mask = 0) const;
 	void get_notes_by_velocity (Notes&, NoteOperator, uint8_t val, int chan_mask = 0) const;
 
-	void control_list_marked_dirty ();
+	virtual void control_list_marked_dirty ();
 
 	const TypeMap& _type_map;
 
