summaryrefslogtreecommitdiff
path: root/muse2/muse/midiedit/dcanvas.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'muse2/muse/midiedit/dcanvas.cpp')
-rw-r--r--muse2/muse/midiedit/dcanvas.cpp29
1 files changed, 29 insertions, 0 deletions
diff --git a/muse2/muse/midiedit/dcanvas.cpp b/muse2/muse/midiedit/dcanvas.cpp
index 18463eb0..eea29b46 100644
--- a/muse2/muse/midiedit/dcanvas.cpp
+++ b/muse2/muse/midiedit/dcanvas.cpp
@@ -19,6 +19,7 @@
#include <stdio.h>
#include <values.h>
#include <errno.h>
+#include <set>
//#include <sys/stat.h>
//#include <sys/mman.h>
@@ -1474,3 +1475,31 @@ void DrumCanvas::selectCursorEvent(Event *ev)
}
updateSelection();
}
+
+
+void DrumCanvas::moveAwayUnused()
+{
+ using std::set;
+
+ set<int> used;
+ for (iCItem it=items.begin(); it!=items.end(); it++)
+ {
+ const Event& ev=it->second->event();
+
+ if (ev.type()==Note)
+ used.insert(ev.pitch());
+ }
+
+ int count=0;
+ for (set<int>::iterator it=used.begin(); it!=used.end();)
+ {
+ while ((*it != count) && (used.find(count)!=used.end())) count++;
+
+ if (*it != count)
+ mapChanged(*it, count);
+
+ count++;
+
+ used.erase(it++);
+ }
+}