summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobert Jonsson <spamatica@gmail.com>2012-12-15 21:02:48 +0000
committerRobert Jonsson <spamatica@gmail.com>2012-12-15 21:02:48 +0000
commit083de7cb49f1f7b6087f1b9512ccbe3e69ee9808 (patch)
treef94a09c42f08b59c3c656cce44e1698a42f2a013
parent90a75ad2160b3502d192fe4d9b5f58331a1870a3 (diff)
avoid hanging notes when dragging notes in editors
-rw-r--r--muse2/ChangeLog1
-rw-r--r--muse2/muse/midiedit/prcanvas.cpp21
2 files changed, 16 insertions, 6 deletions
diff --git a/muse2/ChangeLog b/muse2/ChangeLog
index ffb4d1ea..42c3e921 100644
--- a/muse2/ChangeLog
+++ b/muse2/ChangeLog
@@ -1,5 +1,6 @@
14.12.2012:
- Made simpledrums ask to load another sample if a sample wasn't found during loading (rj)
+ - when dragging multiple notes in editors they are not played, to avoid hanging notes (rj)
12.12.2012:
- Fixed some vst controls stuck. (Tim)
- Added vst master timebase (sequencers should work now). WIP Not quite finished. (Tim)
diff --git a/muse2/muse/midiedit/prcanvas.cpp b/muse2/muse/midiedit/prcanvas.cpp
index 7670abb2..8273c8d9 100644
--- a/muse2/muse/midiedit/prcanvas.cpp
+++ b/muse2/muse/midiedit/prcanvas.cpp
@@ -456,8 +456,12 @@ bool PianoCanvas::moveItem(MusECore::Undo& operations, MusEGui::CItem* item, con
// release note:
MusECore::MidiPlayEvent ev1(0, port, channel, 0x90, event.pitch() + track()->transposition, 0);
MusEGlobal::audio->msgPlayMidiEvent(&ev1);
- MusECore::MidiPlayEvent ev2(0, port, channel, 0x90, npitch + track()->transposition, event.velo());
- MusEGlobal::audio->msgPlayMidiEvent(&ev2);
+ if (moving.size() == 1) {
+ MusECore::MidiPlayEvent ev2(0, port, channel, 0x90, npitch + track()->transposition, event.velo());
+ MusEGlobal::audio->msgPlayMidiEvent(&ev2);
+ }
+ else
+ playedPitch=-1;
}
MusECore::Part* part = nevent->part();
@@ -1041,10 +1045,15 @@ void PianoCanvas::itemMoved(const MusEGui::CItem* item, const QPoint& pos)
// release note:
MusECore::MidiPlayEvent ev1(0, port, channel, 0x90, playedPitch, 0);
MusEGlobal::audio->msgPlayMidiEvent(&ev1);
- // play note:
- MusECore::MidiPlayEvent e2(0, port, channel, 0x90, npitch + track()->transposition, event.velo());
- MusEGlobal::audio->msgPlayMidiEvent(&e2);
- playedPitch = npitch + track()->transposition;
+
+ if (moving.size() == 1) { // items moving
+ // play note:
+ MusECore::MidiPlayEvent e2(0, port, channel, 0x90, npitch + track()->transposition, event.velo());
+ MusEGlobal::audio->msgPlayMidiEvent(&e2);
+ playedPitch = npitch + track()->transposition;
+ }
+ else
+ playedPitch = -1;
}
}