From ead1d513257aeed4199075c1ea5266c560992227 Mon Sep 17 00:00:00 2001 From: Robert Jonsson Date: Wed, 16 Mar 2011 22:18:00 +0000 Subject: write to the right track and stuff --- muse2/ChangeLog | 1 + muse2/muse/arranger/pcanvas.cpp | 82 ++++++++++++++++++++--------------------- muse2/muse/synth.cpp | 7 +--- 3 files changed, 44 insertions(+), 46 deletions(-) diff --git a/muse2/ChangeLog b/muse2/ChangeLog index effaf218..cd662936 100644 --- a/muse2/ChangeLog +++ b/muse2/ChangeLog @@ -1,5 +1,6 @@ 16.03.2011: - Added: Midi events drawing while recording (rj) + - Fixed, hopefully, MESS synths sometimes being silent (rj) 12.03.2011: - Cursor mode in drum editor should be usable now (rj) Changes: diff --git a/muse2/muse/arranger/pcanvas.cpp b/muse2/muse/arranger/pcanvas.cpp index 49808faf..5747726f 100644 --- a/muse2/muse/arranger/pcanvas.cpp +++ b/muse2/muse/arranger/pcanvas.cpp @@ -1512,8 +1512,8 @@ void PartCanvas::drawItem(QPainter& p, const CItem* item, const QRect& rect) QColor c(Qt::white); c.setAlpha(config.globalAlphaBlend); QLinearGradient gradient(r.topLeft(), r.bottomLeft()); - gradient.setColorAt(0, c.lighter()); - gradient.setColorAt(1, c); + gradient.setColorAt(0, c); + gradient.setColorAt(1, c.darker()); QBrush cc(gradient); p.setBrush(cc); @@ -1527,8 +1527,8 @@ void PartCanvas::drawItem(QPainter& p, const CItem* item, const QRect& rect) QColor c(Qt::gray); c.setAlpha(config.globalAlphaBlend); QLinearGradient gradient(r.topLeft(), r.bottomLeft()); - gradient.setColorAt(0, c.lighter()); - gradient.setColorAt(1, c); + gradient.setColorAt(0, c); + gradient.setColorAt(1, c.darker()); QBrush cc(gradient); p.setBrush(cc); @@ -1553,8 +1553,8 @@ void PartCanvas::drawItem(QPainter& p, const CItem* item, const QRect& rect) QColor c(Qt::black); c.setAlpha(config.globalAlphaBlend); QLinearGradient gradient(r.topLeft(), r.bottomLeft()); - gradient.setColorAt(0, c.lighter()); - gradient.setColorAt(1, c); + gradient.setColorAt(0, c); + gradient.setColorAt(1, c.darker()); QBrush cc(gradient); p.setBrush(cc); p.drawRect(r); @@ -1571,8 +1571,8 @@ void PartCanvas::drawItem(QPainter& p, const CItem* item, const QRect& rect) QColor c(config.partColors[i]); c.setAlpha(config.globalAlphaBlend); QLinearGradient gradient(r.topLeft(), r.bottomLeft()); - gradient.setColorAt(0, c.lighter()); - gradient.setColorAt(1, c); + gradient.setColorAt(0, c); + gradient.setColorAt(1, c.darker()); QBrush cc(gradient); p.setBrush(cc); @@ -1656,7 +1656,7 @@ void PartCanvas::drawMidiPart(QPainter& p, const QRect& bb, EventList* events, M // Do not allow this, causes segfault. if(from <= to) { - p.setPen(Qt::darkGray); + p.setPen(QColor(80,80,80)); //EventList* events = mp->events(); iEvent ito(events->lower_bound(to)); @@ -1678,7 +1678,7 @@ void PartCanvas::drawMidiPart(QPainter& p, const QRect& bb, EventList* events, M } } else { // show Cakewalk Style - p.setPen(Qt::darkGray); + p.setPen(QColor(80,80,80)); //EventList* events = mp->events(); iEvent ito(events->lower_bound(to)); //printf("PartCanvas::drawItem pTick:%d from:%d to:%d\n", pTick, from, to); @@ -2996,9 +2996,9 @@ void PartCanvas::drawTopItem(QPainter& p, const QRect& rect) p.setPen(pen); QColor c(config.partColors[0]); c.setAlpha(config.globalAlphaBlend); - QLinearGradient gradient(QPoint(0,0), QPoint(0,track->height())); - gradient.setColorAt(0, c.lighter()); - gradient.setColorAt(1, c); + QLinearGradient gradient(QPoint(startx,yPos), QPoint(startx,yPos+track->height())); + gradient.setColorAt(0, c); + gradient.setColorAt(1, c.darker()); QBrush cc(gradient); p.setBrush(cc); @@ -3009,44 +3009,44 @@ void PartCanvas::drawTopItem(QPainter& p, const QRect& rect) } p.restore(); + // draw midi events on yPos=0; if (song->record() && audio->isPlaying()) { for (iTrack it = tl->begin(); it != tl->end(); ++it) { Track* track = *it; - if (track->isMidiTrack()) { + if (track->isMidiTrack() && track->recordFlag()) { MidiTrack *mt = (MidiTrack*)track; QRect partRect(startPos,yPos, song->cpos()-startPos, track->height()); // probably the wrong rect EventList myEventList; MPEventList *el = mt->mpevents(); - if (el->size() == 0) - continue; - - //printf("num events %d\n", mt->mpevents()->size()); - for (iMPEvent i = el->begin(); i != el->end(); ++i) { - MidiPlayEvent pe = *i; - - if (pe.isNote() && !pe.isNoteOff()) { - Event e(Note); - e.setPitch(pe.dataA()); - e.setTick(pe.time()-startPos); - e.setLenTick(song->cpos()-pe.time()); - e.setC(1); // we abuse this value to determine that this note hasn't been concluded - myEventList.add(e); - } - else if (pe.isNoteOff()) { - for (iEvent i = myEventList.begin(); i != myEventList.end(); ++i) { - Event &e = i->second; - if (e.pitch() == pe.dataA() && e.dataC() == 1) { - e.setLenTick(pe.time() - e.tick()- startPos); - e.setC(0); // reset the variable we borrowed for state handling - //printf("editing event tick=%d startPos=%d\n",e.tick(), startPos); - continue; + if (el->size()) { + + //printf("num events %d\n", mt->mpevents()->size()); + for (iMPEvent i = el->begin(); i != el->end(); ++i) { + MidiPlayEvent pe = *i; + + if (pe.isNote() && !pe.isNoteOff()) { + Event e(Note); + e.setPitch(pe.dataA()); + e.setTick(pe.time()-startPos); + e.setLenTick(song->cpos()-pe.time()); + e.setC(1); // we abuse this value to determine that this note hasn't been concluded + myEventList.add(e); + } + else if (pe.isNoteOff()) { + for (iEvent i = myEventList.begin(); i != myEventList.end(); ++i) { + Event &e = i->second; + if (e.pitch() == pe.dataA() && e.dataC() == 1) { + e.setLenTick(pe.time() - e.tick()- startPos); + e.setC(0); // reset the variable we borrowed for state handling + //printf("editing event tick=%d startPos=%d\n",e.tick(), startPos); + continue; + } } } - } + } } - drawMidiPart(p, rect, &myEventList, mt, partRect,startPos,0,song->cpos()-startPos); } yPos+=track->height(); @@ -3072,8 +3072,8 @@ void PartCanvas::drawAudioTrack(QPainter& p, const QRect& r, AudioTrack* /* t */ QColor c(Qt::gray); c.setAlpha(config.globalAlphaBlend); QLinearGradient gradient(r.topLeft(), r.bottomLeft()); - gradient.setColorAt(0, c.lighter()); - gradient.setColorAt(1, c); + gradient.setColorAt(0, c); + gradient.setColorAt(1, c.darker()); QBrush cc(gradient); p.setBrush(cc); p.drawRect(r); diff --git a/muse2/muse/synth.cpp b/muse2/muse/synth.cpp index 349707c9..13e3baa3 100644 --- a/muse2/muse/synth.cpp +++ b/muse2/muse/synth.cpp @@ -941,12 +941,9 @@ iMPEvent MessSynthIF::getData(MidiPort* mp, MPEventList* el, iMPEvent i, unsigne if (evTime == 0) { // printf("MessSynthIF::getData - time is 0!\n"); // continue; - evTime=frameOffset; // will cause frame to be zero, problem? + evTime=abs(frameOffset); // will cause frame to be zero, problem? } - int frame = evTime - frameOffset; - -//TODO if (frame > 0) // robert: ugly fix, don't really know what is going on here -// // makes PPC work much better. + int frame = evTime - abs(frameOffset); if (frame >= endPos) { printf("frame > endPos!! frame = %d >= endPos %d, i->time() %d, frameOffset %d curPos=%d\n", frame, endPos, i->time(), frameOffset,curPos); -- cgit v1.2.3