summaryrefslogtreecommitdiff
path: root/muse2/muse/arranger
diff options
context:
space:
mode:
authorFlorian Jung <flo@windfisch.org>2011-05-16 14:21:16 +0000
committerFlorian Jung <flo@windfisch.org>2011-05-16 14:21:16 +0000
commit93ea371c955c961051b5c2e2d7b47881aec04c84 (patch)
tree6d0fd4674330745b3c3845173f9012c67b7f3107 /muse2/muse/arranger
parent03e37abb33dfcaa9d67cadbb3b1d3c5ae17b057d (diff)
- changed appeareance settings to be able to choose between "y-stretch"
and "no y-stretch" in cakewalk mode - when changing Midi to Drum or Drum to Midi in tlist, now a songChanged() gets emitted (fixes bug: slivers were not redrawn when changing that)
Diffstat (limited to 'muse2/muse/arranger')
-rw-r--r--muse2/muse/arranger/pcanvas.cpp60
-rw-r--r--muse2/muse/arranger/tlist.cpp3
2 files changed, 38 insertions, 25 deletions
diff --git a/muse2/muse/arranger/pcanvas.cpp b/muse2/muse/arranger/pcanvas.cpp
index 9ad7bf3c..a37e237e 100644
--- a/muse2/muse/arranger/pcanvas.cpp
+++ b/muse2/muse/arranger/pcanvas.cpp
@@ -1721,42 +1721,54 @@ void PartCanvas::drawMidiPart(QPainter& p, const QRect&, EventList* events, Midi
int highest_pitch=0;
map<int,int> y_mapper;
- for (iEvent i = events->begin(); i != ito; ++i)
+ if (config.canvasShowPartType & 4) //y-stretch?
{
- if (i->second.type()==Note)
+ for (iEvent i = events->begin(); i != ito; ++i)
{
- int pitch=i->second.pitch();
-
- if (!isdrum)
+ if (i->second.type()==Note)
{
- if (pitch > highest_pitch) highest_pitch=pitch;
- if (pitch < lowest_pitch) lowest_pitch=pitch;
+ int pitch=i->second.pitch();
+
+ if (!isdrum)
+ {
+ if (pitch > highest_pitch) highest_pitch=pitch;
+ if (pitch < lowest_pitch) lowest_pitch=pitch;
+ }
+ else
+ {
+ y_mapper.insert(pair<int,int>(pitch, 0));
+ }
}
- else
+ }
+
+ if (isdrum)
+ {
+ int cnt=0;
+ for (map<int,int>::iterator it=y_mapper.begin(); it!=y_mapper.end(); it++)
{
- y_mapper.insert(pair<int,int>(pitch, 0));
+ it->second=cnt;
+ cnt++;
}
+ lowest_pitch=0;
+ highest_pitch=cnt-1;
}
- }
-
- if (isdrum)
- {
- int cnt=0;
- for (map<int,int>::iterator it=y_mapper.begin(); it!=y_mapper.end(); it++)
+
+ if (lowest_pitch==highest_pitch)
{
- it->second=cnt;
- cnt++;
+ lowest_pitch--;
+ highest_pitch++;
}
- lowest_pitch=0;
- highest_pitch=cnt-1;
}
-
- if (lowest_pitch==highest_pitch)
+ else
{
- lowest_pitch--;
- highest_pitch++;
- }
+ lowest_pitch=0;
+ highest_pitch=127;
+ if (isdrum)
+ for (int cnt=0;cnt<127;cnt++)
+ y_mapper[cnt]=cnt;
+ }
+
for (iEvent i = events->begin(); i != ito; ++i) {
int t = i->first + pTick;
int te = t + i->second.lenTick();
diff --git a/muse2/muse/arranger/tlist.cpp b/muse2/muse/arranger/tlist.cpp
index 2a397a4e..4b531607 100644
--- a/muse2/muse/arranger/tlist.cpp
+++ b/muse2/muse/arranger/tlist.cpp
@@ -1660,6 +1660,7 @@ void TList::classesPopupMenu(Track* t, int x, int y)
}
t->setType(Track::MIDI);
audio->msgIdle(false);
+ song->update(SC_EVENT_MODIFIED);
}
else if (Track::TrackType(n) == Track::DRUM && t->type() == Track::MIDI) {
//
@@ -1716,8 +1717,8 @@ void TList::classesPopupMenu(Track* t, int x, int y)
// Add all port controller events.
//audio->msgChangeAllPortDrumCtrlEvents(true);
song->changeAllPortDrumCtrlEvents(true);
-
audio->msgIdle(false);
+ song->update(SC_EVENT_MODIFIED);
}
}