summaryrefslogtreecommitdiff
path: root/muse2/muse/audiotrack.cpp
diff options
context:
space:
mode:
authorTim E. Real <termtech@rogers.com>2011-08-29 22:44:24 +0000
committerTim E. Real <termtech@rogers.com>2011-08-29 22:44:24 +0000
commitd505c378bdf55445babb73e0ba4085702be35870 (patch)
tree40ccb82e5b27f118904a5298faedd10fe3b96d36 /muse2/muse/audiotrack.cpp
parent21e75f0c2d14010d060693c77fd3e22e1fccd65d (diff)
Fixed audio automation graph editing. And now 'snaps' to discrete integer or bool types.
All control movements should update display now. Also slightly changed behaviour of Ctrl class. TODO: Fix some painting corruption, improve discrete display, add transparency etc. etc. Applied compilation patch to rhythmbase.ui by Jean-Damien Durand.
Diffstat (limited to 'muse2/muse/audiotrack.cpp')
-rw-r--r--muse2/muse/audiotrack.cpp41
1 files changed, 22 insertions, 19 deletions
diff --git a/muse2/muse/audiotrack.cpp b/muse2/muse/audiotrack.cpp
index b004638f..42229111 100644
--- a/muse2/muse/audiotrack.cpp
+++ b/muse2/muse/audiotrack.cpp
@@ -253,16 +253,11 @@ void AudioTrack::addPlugin(PluginI* plugin, int idx)
const char* name = plugin->paramName(i);
float min, max;
plugin->range(i, &min, &max);
- CtrlValueType t = plugin->valueType();
CtrlList* cl = new CtrlList(id);
cl->setRange(min, max);
cl->setName(QString(name));
- cl->setValueType(t);
- LADSPA_PortRangeHint range = plugin->range(i);
- if(LADSPA_IS_HINT_TOGGLED(range.HintDescriptor))
- cl->setMode(CtrlList::DISCRETE);
- else
- cl->setMode(CtrlList::INTERPOLATE);
+ cl->setValueType(plugin->ctrlValueType(i));
+ cl->setMode(plugin->ctrlMode(i));
cl->setCurVal(plugin->param(i));
addController(cl);
}
@@ -700,6 +695,22 @@ void AudioTrack::addACEvent(int id, int frame, double val)
}
//---------------------------------------------------------
+// changeACEvent
+//---------------------------------------------------------
+
+void AudioTrack::changeACEvent(int id, int frame, int newframe, double newval)
+{
+ ciCtrlList icl = _controller.find(id);
+ if(icl == _controller.end())
+ return;
+ CtrlList* cl = icl->second;
+ iCtrl ic = cl->find(frame);
+ if(ic != cl->end())
+ cl->erase(ic);
+ cl->insert(std::pair<const int, CtrlVal> (newframe, CtrlVal(newframe, newval)));
+}
+
+//---------------------------------------------------------
// volume
//---------------------------------------------------------
@@ -1039,11 +1050,8 @@ bool AudioTrack::readProperties(Xml& xml, const QString& tag)
if(ctlfound)
{
l->setCurVal(p->param(m));
- LADSPA_PortRangeHint range = p->range(m);
- if(LADSPA_IS_HINT_TOGGLED(range.HintDescriptor))
- l->setMode(CtrlList::DISCRETE);
- else
- l->setMode(CtrlList::INTERPOLATE);
+ l->setValueType(p->ctrlValueType(m));
+ l->setMode(p->ctrlMode(m));
}
}
else
@@ -1139,15 +1147,10 @@ void AudioTrack::mapRackPluginsToControllers()
// 0.9pre1 med file with broken controller sections they may not be set correct.
float min, max;
p->range(i, &min, &max);
- CtrlValueType t = p->valueType();
l->setRange(min, max);
l->setName(QString(p->paramName(i)));
- l->setValueType(t);
- LADSPA_PortRangeHint rh = p->range(i);
- if(LADSPA_IS_HINT_TOGGLED(rh.HintDescriptor))
- l->setMode(CtrlList::DISCRETE);
- else
- l->setMode(CtrlList::INTERPOLATE);
+ l->setValueType(p->ctrlValueType(i));
+ l->setMode(p->ctrlMode(i));
l->setCurVal(p->param(i));
//l->setDefault(p->defaultValue(i));
}