continue;
}
- if (cui->control || cui->clickbox || cui->combo) {
+ if (cui->controller || cui->clickbox || cui->combo) {
box->pack_start (*cui, false, false);
}
/* create the controller */
-
- control_ui->controller = AutomationController::create(insert, mcontrol->parameter(), mcontrol);
+ control_ui->controller = AutomationController::create(insert, mcontrol->parameter(), mcontrol);
/* XXX this code is not right yet, because it doesn't handle
the absence of bounds in any sensible fashion.
*/
}
}
- cui->controller->display_effective_value();
+ if( cui->controller ) {
+ cui->controller->display_effective_value();
+ }
/*} else {
struct PluginControl : public AutomationControl
{
- PluginControl (PluginInsert& p, boost::shared_ptr<AutomationList> list);
+ PluginControl (PluginInsert* p, const Parameter ¶m,
+ boost::shared_ptr<AutomationList> list = boost::shared_ptr<AutomationList>());
void set_value (float val);
float get_value (void) const;
private:
- PluginInsert& _plugin;
- boost::shared_ptr<AutomationList> _list;
+ PluginInsert* _plugin;
bool _logarithmic;
bool _toggled;
};
#include <ardour/session.h>
#include <ardour/automatable.h>
#include <ardour/midi_track.h>
+#include <ardour/plugin_insert.h>
#include "i18n.h"
Evoral::Control* control = NULL;
if (param.type() >= MidiCCAutomation && param.type() <= MidiChannelPressureAutomation) {
control = new MidiTrack::MidiControl((MidiTrack*)this, param);
+ } else if (param.type() == PluginAutomation) {
+ control = new PluginInsert::PluginControl((PluginInsert*)this, param);
} else {
control = new AutomationControl(_a_session, param);
}
}
if ((prop = node.property (X_("automation-id"))) != 0){
- _parameter = Parameter(prop->value());
+ _parameter = Evoral::Parameter(prop->value());
} else {
warning << "Legacy session: automation list has no automation-id property.";
}
{
uint32_t n = 0;
uint32_t meterable = std::min(bufs.count().n_total(), (uint32_t)_peak_power.size());
- uint32_t limit = std::min (meterable, bufs.count().n_midi());
+ uint32_t limit = std::min (meterable, (uint32_t)bufs.count().n_midi());
// Meter what we have (midi)
for ( ; n < limit; ++n) {
throw failed_constructor();
}
- // set_automatable ();
+ set_automatable ();
{
Glib::Mutex::Lock em (_session.engine().process_lock());
Parameter param(*i);
param.set_range(desc.lower, desc.upper, _plugins.front()->default_value(i->id()));
boost::shared_ptr<AutomationList> list(new AutomationList(param));
- add_control(boost::shared_ptr<AutomationControl>(new PluginControl(*this, list)));
+ add_control(boost::shared_ptr<AutomationControl>(new PluginControl(this, *i, list)));
}
}
}
}
}
-PluginInsert::PluginControl::PluginControl (PluginInsert& p, boost::shared_ptr<AutomationList> list)
- : AutomationControl (p.session(), list->parameter(), list, p.describe_parameter(list->parameter()))
+PluginInsert::PluginControl::PluginControl (PluginInsert* p, const Parameter ¶m, boost::shared_ptr<AutomationList> list)
+ : AutomationControl (p->session(), param, list, p->describe_parameter(param))
, _plugin (p)
- , _list (list)
{
Plugin::ParameterDescriptor desc;
- p.plugin(0)->get_parameter_descriptor (list->parameter().id(), desc);
+ p->plugin(0)->get_parameter_descriptor (param.id(), desc);
_logarithmic = desc.logarithmic;
_toggled = desc.toggled;
}
}
- for (vector<boost::shared_ptr<Plugin> >::iterator i = _plugin._plugins.begin();
- i != _plugin._plugins.end(); ++i) {
+ for (vector<boost::shared_ptr<Plugin> >::iterator i = _plugin->_plugins.begin();
+ i != _plugin->_plugins.end(); ++i) {
(*i)->set_parameter (_list->parameter().id(), val);
}
{
/* FIXME: probably should be taking out some lock here.. */
- float val = _plugin.get_parameter (_list->parameter());
+ float val = _plugin->get_parameter (_list->parameter());
return val;