diff --git a/gtk2_ardour/midi_region_view.cc b/gtk2_ardour/midi_region_view.cc
index 968df4a..e03d4bf 100644
--- a/gtk2_ardour/midi_region_view.cc
+++ b/gtk2_ardour/midi_region_view.cc
@@ -3593,8 +3593,16 @@ MidiRegionView::transpose (bool up, bool fine, bool allow_smush)
 		delta = -delta;
 	}
 
+	typedef vector<boost::shared_ptr<NoteType> > PossibleChord;
+	PossibleChord to_play;
+	Evoral::Beats earliest = earliest_in_selection();
+
 	if (!allow_smush) {
 		for (Selection::iterator i = _selection.begin(); i != _selection.end(); ++i) {
+			NoteBase* n = *i;
+			if (n->note ()->time () == earliest) {
+				to_play.push_back (n->note ());
+			}
 			if (!up) {
 				if ((int8_t) (*i)->note()->note() + delta <= 0) {
 					return;
@@ -3616,6 +3624,27 @@ MidiRegionView::transpose (bool up, bool fine, bool allow_smush)
 		i = next;
 	}
 
+	if (!_selection.empty() && !_no_sound_notes && UIConfiguration::instance().get_sound_midi_notes()) {
+		if (to_play.size() > 1) {
+
+			PossibleChord shifted;
+
+			for (PossibleChord::iterator n = to_play.begin(); n != to_play.end(); ++n) {
+				boost::shared_ptr<NoteType> moved_note (new NoteType (**n));
+				moved_note->set_note (moved_note->note() + delta);
+				shifted.push_back (moved_note);
+			}
+
+			start_playing_midi_chord (shifted);
+
+		} else if (!to_play.empty()) {
+
+			boost::shared_ptr<NoteType> moved_note (new NoteType (*to_play.front()));
+			moved_note->set_note (moved_note->note() + delta);
+			start_playing_midi_note (moved_note);
+		}
+	}
+
 	apply_diff ();
 }
 
