diff options
| -rw-r--r-- | muse/muse/arranger/canvas.cpp | 2 | ||||
| -rw-r--r-- | muse/muse/audiotrack.cpp | 2 | ||||
| -rw-r--r-- | muse/muse/ctrl.cpp | 139 | ||||
| -rw-r--r-- | muse/muse/ctrl.h | 39 | ||||
| -rw-r--r-- | muse/muse/ctrl/ctrleditor.cpp | 116 | ||||
| -rw-r--r-- | muse/muse/ctrl/ctrleditor.h | 5 | ||||
| -rw-r--r-- | muse/muse/exportmidi.cpp | 4 | ||||
| -rw-r--r-- | muse/muse/midiedit/ecanvas.cpp | 2 | ||||
| -rw-r--r-- | muse/muse/midiout.cpp | 18 | ||||
| -rw-r--r-- | muse/muse/mixer/astrip.cpp | 3 | ||||
| -rw-r--r-- | muse/muse/song.cpp | 18 | ||||
| -rw-r--r-- | muse/muse/track.cpp | 2 | ||||
| -rw-r--r-- | muse/muse/track.h | 2 | 
13 files changed, 177 insertions, 175 deletions
| diff --git a/muse/muse/arranger/canvas.cpp b/muse/muse/arranger/canvas.cpp index b3c56a6c..17dec5d5 100644 --- a/muse/muse/arranger/canvas.cpp +++ b/muse/muse/arranger/canvas.cpp @@ -565,7 +565,7 @@ void PartCanvas::mousePress(QMouseEvent* me)        if (hit == HIT_SUBTRACK) {              TLSWidget* w = (TLSWidget*)(at->tw);              int y = wpos.y() + pos.y() - w->y(); -            w->mousePress(QPoint(pos.x(), y), button); +            w->mousePress(QPoint(pos.x(), y), button, me->modifiers());              state = S_SUBTRACK;              return;              } diff --git a/muse/muse/audiotrack.cpp b/muse/muse/audiotrack.cpp index 1639a19a..b1a72db3 100644 --- a/muse/muse/audiotrack.cpp +++ b/muse/muse/audiotrack.cpp @@ -133,7 +133,7 @@ void AudioTrack::addPlugin(PluginI* plugin, int idx, bool pre)                          }                    cl->setRange(min, max);                    cl->setName(name); -                  plugin->setParam(i, cl->schedVal().f); +                  plugin->setParam(i, cl->curVal().f);                    plugin->setControllerList(cl);                    }              } diff --git a/muse/muse/ctrl.cpp b/muse/muse/ctrl.cpp index b505744e..2e40f297 100644 --- a/muse/muse/ctrl.cpp +++ b/muse/muse/ctrl.cpp @@ -34,8 +34,6 @@ Ctrl::Ctrl(int id, const QString& s, int t)        setRange(.0f, 1.f);        _default.f  = 0.0f;        _curVal.f   = 0.0f; -      _schedVal.f = 0.0f; -      _schedValRaw.f = 0.0f;        _touched    = false;        _changed    = false;        } @@ -49,7 +47,6 @@ Ctrl::Ctrl(int id, const QString& s, int t, float a, float b)              setRange(a, b);        _default.f  = 0.0f;        _curVal.f   = 0.0f; -      _schedValRaw.f = 0.0f;        _touched    = false;        _changed    = false;        } @@ -61,7 +58,6 @@ Ctrl::Ctrl()        _id         = 0;        _default.f  = 0.0f;        _curVal.f   = 0.0f; -      _schedValRaw.f = 0.0f;        _touched    = false;        _changed    = false;        } @@ -73,7 +69,6 @@ Ctrl::Ctrl(const MidiController* mc)        _id         = mc->num();        _default.i  = mc->initVal();        _curVal.i   = CTRL_VAL_UNKNOWN; -      _schedValRaw.i = CTRL_VAL_UNKNOWN;        _name       = mc->name();        _touched    = false;        _changed    = false; @@ -93,54 +88,59 @@ CVal Ctrl::value(unsigned time)              //              // midi controller              // -            ciCtrlVal i = upper_bound(time); +            ciCtrlVal i = upperBound(time);              if (i == end()) {                    --i; -                  rv = i->second; +                  rv = i.value();                    }              else if (i == begin()) { -                  if (i->first == time) -                        rv = i->second; +                  if (i.key() == time) +                        rv = i.value();                    else                          return _curVal;                    }              else {                    --i; -                  rv = i->second; +                  rv = i.value();                    }              }        else { -            ciCtrlVal i = upper_bound(time); +            // +            // linear interpolated audio +            // controller +            // +            ciCtrlVal i = upperBound(time);              if (i == end()) {                    --i; -                  return i->second; -                  } -            int frame2 = i->first; -            CVal val2 = i->second; -            int frame1; -            CVal val1; -            if (i == begin()) { -                  frame1 = 0; -                  val1   = _default; -                  } -            else { -                  --i; -                  frame1 = i->first; -                  val1   = i->second; -                  } -            time -= frame1; -            frame2 -= frame1; -            if (_type & INT) { -                  val2.i -= val1.i; -                  rv.i = val1.i + (time * val2.i)/frame2; +                  rv = i.value();                    }              else { -                  val2.f  -= val1.f; -                  rv.f = val1.f + (time * val2.f)/frame2; +                  int frame2 = i.key(); +                  CVal val2  = i.value(); +                  int frame1; +                  CVal val1; +                  if (i == begin()) { +                        rv = val2; +                        } +                  else { +                        --i; +                        frame1 = i.key(); +                        val1   = i.value(); +                        time   -= frame1; +                        frame2 -= frame1; +                        if (_type & INT) { +                              val2.i -= val1.i; +                              rv.i = val1.i + (time * val2.i)/frame2; +                              } +                        else { +                              val2.f  -= val1.f; +                              rv.f = val1.f + (time * val2.f)/frame2; +                              } +                        }                    }              }        if (_type & LOG) { -            if (rv.f == -1000.0f) +            if (rv.f <= -1000.0f)                    rv.f = 0.0f;              else                    rv.f = pow(10.0f, rv.f); @@ -157,35 +157,13 @@ bool Ctrl::add(unsigned frame, CVal val)        {        if (_type & LOG) {              if (val.f <= 0.0) -                  val.f = -1000.0f; +                  val.f = -1001.0f;              else                    val.f = fast_log10(val.f);              } -      iCtrlVal e = find(frame); -      if (e != end()) { -            e->second = val; -            return false; -            } -      insert(std::pair<const int, CVal> (frame, val)); -      return true; -      } - -//--------------------------------------------------------- -//   setSchedVal -//--------------------------------------------------------- - -void Ctrl::setSchedVal(CVal val) -      { -      if (_type & LOG) { -            if (val.f <= 0.0) -                  _schedValRaw.f = -1000.0f; -            else -                  _schedValRaw.f = fast_log10(val.f); -            } -      else { -            _schedValRaw = val; -            } -      _schedVal = val; +      bool rv = find(frame) == end(); +      insert(frame, val); +      return rv;        }  //--------------------------------------------------------- @@ -228,7 +206,7 @@ void Ctrl::read(QDomNode node, bool)              _curVal.f  = e.attribute("cur","0.0").toFloat();              _default.f = e.attribute("default","0.0").toFloat();              } -      setSchedVal(_curVal); +      setCurVal(_curVal);        if (_type & INT) {              min.i = e.attribute("min", minS).toInt();              max.i = e.attribute("max", maxS).toInt(); @@ -284,24 +262,24 @@ void Ctrl::write(Xml& xml)        if (empty()) {              if (_type & INT) -                  xml.tagE(s.arg(id()).arg(_name).arg(schedVal().i).arg(_type).arg(min.i).arg(max.i).arg(_default.i).toAscii().data()); +                  xml.tagE(s.arg(id()).arg(_name).arg(curVal().i).arg(_type).arg(min.i).arg(max.i).arg(_default.i).toAscii().data());              else -                  xml.tagE(s.arg(id()).arg(_name).arg(schedVal().f).arg(_type).arg(min.f).arg(max.f).arg(_default.f).toAscii().data()); +                  xml.tagE(s.arg(id()).arg(_name).arg(curVal().f).arg(_type).arg(min.f).arg(max.f).arg(_default.f).toAscii().data());              return;              }        if (_type & INT) -            xml.tag(s.arg(id()).arg(_name).arg(schedVal().i).arg(_type).arg(min.i).arg(max.i).arg(_default.i).toAscii().data()); +            xml.tag(s.arg(id()).arg(_name).arg(curVal().i).arg(_type).arg(min.i).arg(max.i).arg(_default.i).toAscii().data());        else -            xml.tag(s.arg(id()).arg(_name).arg(schedVal().f).arg(_type).arg(min.f).arg(max.f).arg(_default.f).toAscii().data()); +            xml.tag(s.arg(id()).arg(_name).arg(curVal().f).arg(_type).arg(min.f).arg(max.f).arg(_default.f).toAscii().data());        int i = 0;        for (ciCtrlVal ic = begin(); ic != end(); ++ic) {              if (i == 0)                    xml.putLevel(); -            int time  = ic->first; -            CVal val = ic->second; +            int time  = ic.key(); +            CVal val = ic.value();              if (_type & LOG) -                  val.f = (val.f == -1000.0) ? 0.0f : pow(10.0f, val.f); +                  val.f = (val.f <= -1000.0) ? 0.0f : pow(10.0f, val.f);              if (_type & INT) {                    xml.nput("%d %d,", time, val.i);                    } @@ -333,8 +311,11 @@ int Ctrl::val2pixelR(CVal val, int maxpixel)        maxpixel -= 1;        if (_type & INT)              return maxpixel - ((maxpixel * (val.i - min.i) + (max.i-min.i)/2) / (max.i - min.i)); -      else +      else { +            if ((_type & LOG) && (val.f <= -1000.0f)) +                  return maxpixel;              return maxpixel - lrint(double(maxpixel) * (val.f - min.f) / (max.f-min.f)); +            }        }  int Ctrl::val2pixelR(int val, int maxpixel) @@ -345,6 +326,26 @@ int Ctrl::val2pixelR(int val, int maxpixel)        }  //--------------------------------------------------------- +//   cur2pixel +//--------------------------------------------------------- + +int Ctrl::cur2pixel(int maxpixel) +      { +      maxpixel -= 1; + +      if (_type & INT) +            return maxpixel - ((maxpixel * (_curVal.i - min.i) + (max.i-min.i)/2) / (max.i - min.i)); +      float f = _curVal.f; +      if (_type & LOG) { +            if (f <= 0.0) +                  return maxpixel; +            else +                  f = fast_log10(f); +            } +      return maxpixel - lrint(double(maxpixel) * (f - min.f) / (max.f-min.f)); +      } + +//---------------------------------------------------------  //   pixel2val  //--------------------------------------------------------- diff --git a/muse/muse/ctrl.h b/muse/muse/ctrl.h index 34a81c79..6a3705f0 100644 --- a/muse/muse/ctrl.h +++ b/muse/muse/ctrl.h @@ -136,7 +136,7 @@ class CtrlRecList : public std::list<CtrlRecVal> {        };  typedef CtrlRecList::iterator iCtrlRec; -typedef std::map<unsigned, CVal, std::less<unsigned> > CTRL; +typedef QMap<unsigned, CVal> CTRL;  typedef CTRL::iterator iCtrlVal;  typedef CTRL::const_iterator ciCtrlVal; @@ -162,10 +162,7 @@ class Ctrl : public CTRL {        QString  _name;        int   _type;         // bitmask of CtrlType        CVal _default; -      CVal _curVal;     // used to optimize controller events send to -                        //   midi devices -      CVal _schedVal;   // used by gui to determine "current" value -      CVal _schedValRaw; +      CVal _curVal;        // used to optimize controller events        CVal min, max;        bool _changed;        bool _touched; @@ -177,35 +174,16 @@ class Ctrl : public CTRL {        Ctrl(int id, const QString& name, int t, float a, float b);        int type() const               { return _type;    }        void setType(int t)            { _type = t;       } -      CVal getDefault() const        { return _default; } + +      const CVal& getDefault() const { return _default; }        void setDefault(float val)     { _default.f = val;  }        void setDefault(CVal val)      { _default = val;  }        void setDefault(int val)       { _default.i = val;  } -      CVal curVal() const            { return _curVal;  } -      void setCurVal(CVal v) { -            _curVal = v; -            setSchedVal(v); -            } -      void setCurVal(float v) { -            _curVal.f = v; -            CVal val; -            val.f = v; -            setSchedVal(val); -            } -      void setCurVal(int v) { -            _curVal.i = v; -            _schedVal.i = v; -            _schedValRaw.i = v; -            } - -      void setSchedVal(int v)        {  -            _schedVal.i = v;  -            _schedValRaw.i = v;  -            } -      void setSchedVal(CVal v); -      CVal schedVal() const          { return _schedVal; } -      CVal schedValRaw() const       { return _schedValRaw; } +      const CVal& curVal() const     { return _curVal;  } +      void setCurVal(CVal v)         { _curVal   = v; } +      void setCurVal(float v)        { _curVal.f = v; } +      void setCurVal(int v)          { _curVal.i = v; }        int id() const                 { return _id;      }        void setId(int i)              { _id = i;         } @@ -225,6 +203,7 @@ class Ctrl : public CTRL {        void read(QDomNode node, bool midi);        void write(Xml&);        int val2pixelR(CVal, int maxpixel); +      int cur2pixel(int maxpixel);        int val2pixelR(int, int maxpixel);        CVal pixel2val(int pixel, int maxpixel);        CVal pixel2valR(int pixel, int maxpixel); diff --git a/muse/muse/ctrl/ctrleditor.cpp b/muse/muse/ctrl/ctrleditor.cpp index 01e86a58..13f3bc49 100644 --- a/muse/muse/ctrl/ctrleditor.cpp +++ b/muse/muse/ctrl/ctrleditor.cpp @@ -58,6 +58,17 @@ inline static void drawHandle(QPainter& p, int x, int y, int lselected)        }  //--------------------------------------------------------- +//    ctrlY +//--------------------------------------------------------- + +int CtrlEditor::ctrlY(int x, const CVal& val) const +      { +      if (dragy != -1 && lselected == x) +            return dragy; +      return ctrl()->val2pixelR(val, cheight()); +      } + +//---------------------------------------------------------  //   paint  //--------------------------------------------------------- @@ -111,51 +122,61 @@ void CtrlEditor::paint(QPainter& p, const QRect& r)                    }              }        else { -            if (!ctrl()->empty()) { -                  int x1 = from, y1 = 0, x2 = 0, y2 = 0; -                  ciCtrlVal i = ctrl()->begin(); -                  if (i != ctrl()->end()) { -                        x1 = tc()->pos2pix(Pos(i->first, tt)); -                        if (dragy != -1 && lselected == x1) -                              y1 = dragy; -                        else -                              y1 = ctrl()->val2pixelR(i->second, th); -                        if (x1 >= from) -                              drawHandle(p, x1, y1, lselected); +            if (ctrl()->empty()) { +                  if (aR) { +                        int y = ctrl()->cur2pixel(th); +                        p.drawLine(r.x(), y, r.x() + r.width(), y);                          } -                  for (; i != ctrl()->end(); ++i) { -                        x2 = tc()->pos2pix(Pos(i->first, tt)); -                        if (dragy != -1 && lselected == x2) -                              y2 = dragy; +                  } +            else { +                  int x1, y1, x2, y2; + + +                  Pos pos1 = tc()->pix2pos(from); +                  ciCtrlVal i = ctrl()->lowerBound(pos1.time(tt)); + +                  if (i == ctrl()->end()) { +                        --i; +                        int x = tc()->pos2pix(Pos(i.key(), tt)); +                        int y = ctrlY(x, i.value()); +                        p.drawLine(r.x(), y, r.x() + r.width(), y); +                        } +                  else { +                        if (i == ctrl()->begin()) { +                              x1 = tc()->pos2pix(Pos(i.key(), tt)); +                              y1 = ctrlY(x1, i.value()); +                              x1 = r.x(); +                              }                          else { -                              y2 = ctrl()->val2pixelR(i->second, th); +                              --i; +                              x1 = tc()->pos2pix(Pos(i.key(), tt)); +                              y1 = ctrlY(x1, i.value()); +                              drawHandle(p, x1, y1, lselected); +                              ++i;                                } -                        if (x2 >= to) -                              break; -                        if (x2 >= from) { +                        do { +                              x2 = tc()->pos2pix(Pos(i.key(), tt)); +                              y2 = ctrlY(x2, i.value());                                if (ctrl()->type() & Ctrl::DISCRETE) {                                      p.drawLine(x1, y1, x2, y1);                                      p.drawLine(x2, y1, x2, y2);                                      }                                else                                      p.drawLine(x1, y1, x2, y2); -                              drawHandle(p, x1, y1, lselected); +                              if (x2 >= to) +                                    break; +                              drawHandle(p, x2, y2, lselected); +                              x1 = x2; +                              y1 = y2; +                              ++i; +                              } while (i != ctrl()->end()); +                        if (x2 < to) { +                              p.drawLine(x2, y1, to, y1);                                } -                        x1 = x2; -                        y1 = y2; -                        } -                  if (x1 < to) { -                        if (i == ctrl()->end()) -                              x2 = to; -                        if (ctrl()->type() & Ctrl::DISCRETE) -                              y2 = y1; -                        p.drawLine(x1, y1, x2, y2); -                        drawHandle(p, x1, y1, lselected);                          }                    }              if (!aR) { -                  p.setPen(QPen(Qt::white, 2)); -                  int y = ctrl()->val2pixelR(ctrl()->schedValRaw(), th); +                  int y = ctrl()->cur2pixel(th);                    p.drawLine(r.x(), y, r.x() + r.width(), y);                    }              } @@ -183,7 +204,7 @@ void CtrlEditor::paint(QPainter& p, const QRect& r)  //   mousePress  //--------------------------------------------------------- -void CtrlEditor::mousePress(const QPoint& pos, int button) +void CtrlEditor::mousePress(const QPoint& pos, int button, Qt::KeyboardModifiers modifiers)        {        Tool tool = tc()->tool();        if (button & Qt::RightButton) { @@ -214,7 +235,7 @@ void CtrlEditor::mousePress(const QPoint& pos, int button)        int cid   = ctrl()->id(); -      if (tool == PencilTool) { +      if (tool == PencilTool || (modifiers & Qt::ShiftModifier)) {              selected  = tc()->pix2pos(x);              lselected = x;              dragy     = y; @@ -240,19 +261,20 @@ void CtrlEditor::mousePress(const QPoint& pos, int button)              Pos pos2(tc()->pix2pos(x + HANDLE2));              TType tt = track()->timeType(); -            ciCtrlVal s = ctrl()->upper_bound(pos1.time(tt)); -            ciCtrlVal e = ctrl()->upper_bound(pos2.time(tt)); +            ciCtrlVal s = ctrl()->upperBound(pos1.time(tt)); +            ciCtrlVal e = ctrl()->upperBound(pos2.time(tt));              for (ciCtrlVal i = s; i != e; ++i) { -                  int yy = ctrl()->val2pixelR(i->second, wh); +                  int yy = ctrl()->val2pixelR(i.value(), wh);                    startY = yy;                    if ((yy >= (y-HANDLE2)) && (yy < (y + HANDLE2))) {                          if (tt == AL::TICKS) -                              selected.setTick(i->first); +                              selected.setTick(i.key());                          else -                              selected.setFrame(i->first); +                              selected.setFrame(i.key());                          lselected = tc()->pos2pix(selected); -                        if (tool == RubberTool || button == Qt::RightButton) { -                              song->removeControllerVal(ctrlTrack(), ctrl()->id(), i->first); +                        if (tool == RubberTool || button == Qt::RightButton +                          || modifiers & Qt::ControlModifier) { +                              song->removeControllerVal(ctrlTrack(), ctrl()->id(), i.key());                                dragy = -1;                                }                          else { @@ -417,18 +439,18 @@ void CtrlEditor::mouseMove(const QPoint& pos)                    Pos pos2(tc()->pix2pos(x + HANDLE2));                    TType tt = track()->timeType(); -                  ciCtrlVal s = ctrl()->upper_bound(pos1.time(tt)); -                  ciCtrlVal e = ctrl()->upper_bound(pos2.time(tt)); +                  ciCtrlVal s = ctrl()->upperBound(pos1.time(tt)); +                  ciCtrlVal e = ctrl()->upperBound(pos2.time(tt));                    for (ciCtrlVal i = s; i != e; ++i) { -                        int yy = ctrl()->val2pixelR(i->second, wh); +                        int yy = ctrl()->val2pixelR(i.value(), wh);                          startY = yy;                          if ((yy >= (y-HANDLE2)) && (yy < (y + HANDLE2))) {                                if (tt == AL::TICKS) -                                    selected.setTick(i->first); +                                    selected.setTick(i.key());                                else -                                    selected.setFrame(i->first); +                                    selected.setFrame(i.key());                                lselected = tc()->pos2pix(selected); -                              song->removeControllerVal(ctrlTrack(), ctrl()->id(), i->first); +                              song->removeControllerVal(ctrlTrack(), ctrl()->id(), i.key());                                dragy = -1;                                break;                                } diff --git a/muse/muse/ctrl/ctrleditor.h b/muse/muse/ctrl/ctrleditor.h index 3df29507..11f042fa 100644 --- a/muse/muse/ctrl/ctrleditor.h +++ b/muse/muse/ctrl/ctrleditor.h @@ -26,6 +26,7 @@  class Ctrl;  class TimeCanvas;  class Track; +struct CVal;  //---------------------------------------------------------  //   CtrlEditor @@ -50,6 +51,8 @@ class CtrlEditor {        virtual Track* track()   const = 0;        virtual Track* ctrlTrack()   const = 0; +      int ctrlY(int x, const CVal&) const; +     protected:        int singlePitch; @@ -58,7 +61,7 @@ class CtrlEditor {        virtual ~CtrlEditor() {}        void paint(QPainter& p, const QRect& r);        void setDrawCtrlName(bool val) { _drawCtrlName = val; } -      void mousePress(const QPoint&, int); +      void mousePress(const QPoint&, int, Qt::KeyboardModifiers);        void mouseRelease();        void mouseMove(const QPoint& pos);        }; diff --git a/muse/muse/exportmidi.cpp b/muse/muse/exportmidi.cpp index 94838d4e..fb17e485 100644 --- a/muse/muse/exportmidi.cpp +++ b/muse/muse/exportmidi.cpp @@ -161,8 +161,8 @@ void MusE::exportMidi()              	Ctrl* c  = ivl->second;                    int id   = c->id();                    for (iCtrlVal iv = c->begin(); iv != c->end(); ++iv) { -                  	int tick = ivl->first; -                        int val  = iv->second.i; +                  	int tick = iv.key(); +                        int val  = iv.value().i;                          addController(l, tick, port, channel, id, val);                          }                    } diff --git a/muse/muse/midiedit/ecanvas.cpp b/muse/muse/midiedit/ecanvas.cpp index 757856fe..3373805a 100644 --- a/muse/muse/midiedit/ecanvas.cpp +++ b/muse/muse/midiedit/ecanvas.cpp @@ -1192,7 +1192,7 @@ void EventCanvas::mousePress(QMouseEvent* me)                    QRect r(rCanvasB.x(), rCanvasB.y() + c->y + splitWidth,                       rCanvasB.width(), c->cheight());                    if (r.contains(pos)) { -                        c->mousePress(pos - r.topLeft(), me->button()); +                        c->mousePress(pos - r.topLeft(), me->button(), me->modifiers());                          break;                          }                    } diff --git a/muse/muse/midiout.cpp b/muse/muse/midiout.cpp index 788d7ace..fc04b586 100644 --- a/muse/muse/midiout.cpp +++ b/muse/muse/midiout.cpp @@ -322,7 +322,7 @@ void MidiOut::reset()  //    _playEvents queue which is processed by the MidiSeq thread.  //------------------------------------------------------------------- -void MidiOut::processMidi(MPEventList& el, unsigned fromTick, unsigned toTick, unsigned fromFrame, unsigned toFrame) +void MidiOut::processMidi(MPEventList& el, unsigned fromTick, unsigned toTick, unsigned /*fromFrame*/, unsigned /*toFrame*/)        {        while (!eventFifo.isEmpty())              el.add(eventFifo.get()); @@ -332,13 +332,13 @@ void MidiOut::processMidi(MPEventList& el, unsigned fromTick, unsigned toTick, u              CtrlList* cl = track->controller();              for (iCtrl ic = cl->begin(); ic != cl->end(); ++ic) {                    Ctrl* c = ic->second; -                  iCtrlVal is = c->lower_bound(fromTick); -                  iCtrlVal ie = c->lower_bound(toTick); +                  iCtrlVal is = c->lowerBound(fromTick); +                  iCtrlVal ie = c->lowerBound(toTick);                    for (iCtrlVal ic = is; ic != ie; ++ic) { -                        unsigned frame = AL::tempomap.tick2frame(ic->first); +                        unsigned frame = AL::tempomap.tick2frame(ic.key());                          Event ev(Controller);                          ev.setA(c->id()); -                        ev.setB(ic->second.i); +                        ev.setB(ic.value().i);                          el.add(MidiEvent(frame, -1, ev));                          }                    } @@ -353,13 +353,13 @@ void MidiOut::processMidi(MPEventList& el, unsigned fromTick, unsigned toTick, u                    CtrlList* cl = mc->controller();                    for (iCtrl ic = cl->begin(); ic != cl->end(); ++ic) {                          Ctrl* c = ic->second; -                        iCtrlVal is = c->lower_bound(fromTick); -                        iCtrlVal ie = c->lower_bound(toTick); +                        iCtrlVal is = c->lowerBound(fromTick); +                        iCtrlVal ie = c->lowerBound(toTick);                          for (; is != ie; ++is) { -                              unsigned frame = AL::tempomap.tick2frame(is->first); +                              unsigned frame = AL::tempomap.tick2frame(is.key());                                Event ev(Controller);                                ev.setA(c->id()); -                              ev.setB(is->second.i); +                              ev.setB(is.value().i);                                el.add(MidiEvent(frame, ch, ev));                                }                          } diff --git a/muse/muse/mixer/astrip.cpp b/muse/muse/mixer/astrip.cpp index c7a6c071..7462b575 100644 --- a/muse/muse/mixer/astrip.cpp +++ b/muse/muse/mixer/astrip.cpp @@ -601,7 +601,7 @@ static void addWavePorts(AudioTrack* t, QMenu* lb, RouteList* r, bool input)  //---------------------------------------------------------  //   addMidiOutPorts  //--------------------------------------------------------- - +#if 0  static void addMidiOutPorts(Track* t, QMenu* lb, RouteList* r)        {        MidiOutPortList* al = song->midiOutPorts(); @@ -645,6 +645,7 @@ static void addMidiInPorts(Track* t, QMenu* lb, RouteList* r)                    }              }        } +#endif  //---------------------------------------------------------  //   addSyntiPorts diff --git a/muse/muse/song.cpp b/muse/muse/song.cpp index 2ae02fee..6e06ef80 100644 --- a/muse/muse/song.cpp +++ b/muse/muse/song.cpp @@ -1358,9 +1358,10 @@ void Song::stopRolling()                                                  start = AL::tempomap.frame2tick(start);                                                  end = AL::tempomap.frame2tick(end);                                                  } -                                          iCtrlVal s = cl->lower_bound(start); -                                          iCtrlVal e = cl->lower_bound(end); -                                          cl->erase(s, e); +                                          iCtrlVal s = cl->lowerBound(start); +                                          iCtrlVal e = cl->lowerBound(end); +                                          while (s != e) +                                                cl->erase(s++);                                            hasEvents = true;                                            break;                                            } @@ -2210,7 +2211,7 @@ void Song::addControllerVal(Track* t, Ctrl* c, const Pos& p, CVal val)              // current value may have changed              unsigned ctime = t->timeType() == AL::FRAMES ? pos[0].frame() : pos[0].tick();              CVal cval = c->value(ctime); -            if (c->schedVal().i != cval.i) { +            if (c->curVal().i != cval.i) {                    if (t->isMidiTrack()) {                          if (t->type() == Track::MIDI_CHANNEL) {                                MidiChannel* mc = (MidiChannel*)t; @@ -2218,12 +2219,7 @@ void Song::addControllerVal(Track* t, Ctrl* c, const Pos& p, CVal val)                                mc->playMidiEvent(&ev);                                }                          } -                  else { -                        // non midi controller are current once set -                        c->setCurVal(cval); -                        } -                  c->setSchedVal(cval); -                  // t->emitControllerChanged(c->id()); +                  c->setCurVal(cval);                    }              }        t->emitControllerChanged(c->id()); //moved this out here, otherwise canvas is not updated @@ -2270,7 +2266,7 @@ void Song::setControllerVal(Track* t, Ctrl* c, CVal val)                    pipe->plugin(pluginIndex)->setParam(ctrlIndex, val.f);                    }              } -      c->setSchedVal(val); +      c->setCurVal(val);        if (t->autoWrite()) {              unsigned time = t->timeType() == AL::FRAMES ? pos[0].frame() : pos[0].tick(); diff --git a/muse/muse/track.cpp b/muse/muse/track.cpp index 88cb3f9b..2463b3ec 100644 --- a/muse/muse/track.cpp +++ b/muse/muse/track.cpp @@ -329,7 +329,7 @@ bool Track::readProperties(QDomNode node)              else {  //???                    Ctrl* d = icl->second;                    for (iCtrlVal i = l->begin(); i != l->end(); ++i) -                        d->insert(std::pair<const unsigned, CVal> (i->first, i->second)); +                        d->insert(i.key(), i.value());                    d->setCurVal(l->curVal());                    d->setDefault(l->getDefault());                    delete l; diff --git a/muse/muse/track.h b/muse/muse/track.h index 3eb248ef..b5511486 100644 --- a/muse/muse/track.h +++ b/muse/muse/track.h @@ -206,7 +206,7 @@ class Track : public QObject {        void setHwCtrlState(int ctrl, int val);        // current value: -      CVal ctrlVal(int id)  { return getController(id)->schedVal(); } +      CVal ctrlVal(int id)  { return getController(id)->curVal(); }        // editor interface:        bool addControllerVal(int id, unsigned pos, CVal); | 
