#include "ardour/tempo.h"
#include "ardour_button.h"
+#include "ardour_knob.h"
#include "automation_controller.h"
#include "gui_thread.h"
#include "note_select_dialog.h"
#include "timers.h"
-#include "i18n.h"
+#include "pbd/i18n.h"
using namespace ARDOUR;
using namespace Gtk;
AutomationController::AutomationController(boost::shared_ptr<Automatable> printer,
boost::shared_ptr<AutomationControl> ac,
- Adjustment* adj)
+ Adjustment* adj,
+ bool use_knob)
: _widget(NULL)
, _printer (printer)
, _controllable(ac)
but->set_controllable(ac);
but->signal_clicked.connect(
sigc::mem_fun(*this, &AutomationController::toggled));
+ const bool active = _adjustment->get_value() >= 0.5;
+ if (but->get_active() != active) {
+ but->set_active(active);
+ }
_widget = but;
+ } else if (use_knob) {
+ ArdourKnob* knob = manage (new ArdourKnob (ArdourKnob::default_elements, ArdourKnob::Detent));
+ knob->set_controllable (ac);
+ knob->set_name("processor control knob");
+ _widget = knob;
} else {
AutomationBarController* bar = manage(new AutomationBarController(_printer, ac, adj));
AutomationController::create(boost::shared_ptr<Automatable> printer,
const Evoral::Parameter& param,
const ParameterDescriptor& desc,
- boost::shared_ptr<AutomationControl> ac)
+ boost::shared_ptr<AutomationControl> ac,
+ bool use_knob)
{
const double lo = ac->internal_to_interface(desc.lower);
const double up = ac->internal_to_interface(desc.upper);
assert (ac);
assert(ac->parameter() == param);
- return boost::shared_ptr<AutomationController>(new AutomationController(printer, ac, adjustment));
+ return boost::shared_ptr<AutomationController>(new AutomationController(printer, ac, adjustment, use_knob));
}
void
const ARDOUR::ParameterDescriptor& desc = _controllable->desc();
const ARDOUR::Session& session = _controllable->session();
const framepos_t pos = session.transport_frame();
- const ARDOUR::Tempo& tempo = session.tempo_map().tempo_at(pos);
- const double bpm = tempo.beats_per_minute();
+ const ARDOUR::Tempo& tempo = session.tempo_map().tempo_at_frame (pos);
+ const double bpm = tempo.note_types_per_minute();
const double bps = bpm / 60.0;
const double freq = bps / beats;
_controllable->set_value(clamp(freq, desc.lower, desc.upper), Controllable::NoGroup);