72 , _ignore_change(false)
81 but->set_name(
"mute button");
83 but->set_name(
"solo button");
85 but->set_name(
"generic button");
95 bar->set_name(
X_(
"ProcessorControlSlider"));
100 bar->signal_button_release_event().connect(
135 new Gtk::Adjustment (normal, lo, up, smallstep, largestep));
147 if (
_adjustment->get_value () != interface_value) {
214 }
else if (!was_active && !but->
get_active()) {
224 const double tuning = 440.0;
225 return tuning * pow(2, (note - 69.0) / 12.0);
229 clamp(
double val,
double min,
double max)
233 }
else if (val > max) {
244 if (dialog->run() == Gtk::RESPONSE_ACCEPT) {
261 const double bps = bpm / 60.0;
262 const double freq = bps / beats;
279 if (ev->button != 3) {
285 Gtk::Menu* menu = manage(
new Menu());
286 MenuList& items = menu->items();
287 items.push_back(MenuElem(
_(
"Select Note..."),
289 menu->popup(1, ev->time);
292 Gtk::Menu* menu = manage(
new Menu());
293 MenuList& items = menu->items();
294 items.push_back(MenuElem(
_(
"Halve"),
297 items.push_back(MenuElem(
_(
"Double"),
300 const bool is_audible = desc.
upper > 40.0;
301 const bool is_low = desc.
lower < 1.0;
303 items.push_back(MenuElem(
_(
"Select Note..."),
307 for (
int beats = 1; beats <= 16; ++beats) {
308 items.push_back(MenuElem (
string_compose(
P_(
"Set to %1 beat",
"Set to %1 beats", beats), beats),
313 menu->popup(1, ev->time);
framepos_t audible_frame() const
bool transport_rolling() const
std::string get_label(double &)
sigc::connection _screen_update_connection
AutoState automation_state() const
void set_tweaks(PixFader::Tweaks t)
Gtk::Adjustment * adjustment()
float lower
Minimum value (in Hz, for frequencies)
float normal
Default value.
bool on_button_release(GdkEventButton *ev)
PBD::ScopedConnection _changed_connection
boost::shared_ptr< ARDOUR::Automatable > _printer
sigc::signal< void > StartGesture
void run_note_select_dialog()
static double midi_note_to_hz(int note)
void display_effective_value()
uint8_t note_number() const
sigc::signal< void > StartGesture
#define P_(Singular, Plural, HowMany)
void set_freq_beats(double beats)
void set_ratio(double ratio)
void start_touch(double when)
virtual std::string value_as_string(boost::shared_ptr< AutomationControl >) const
float upper
Maximum value (in Hz, for frequencies)
static boost::shared_ptr< AutomationController > create(boost::shared_ptr< ARDOUR::Automatable > parent, const Evoral::Parameter ¶m, const ARDOUR::ParameterDescriptor &desc, boost::shared_ptr< ARDOUR::AutomationControl > ac)
const ParameterDescriptor & desc() const
sigc::signal< void > StopGesture
virtual double internal_to_interface(double i) const
const ARDOUR::Session & session() const
framepos_t transport_frame() const
boost::shared_ptr< ARDOUR::AutomationControl > _controllable
AutomationBarController(boost::shared_ptr< ARDOUR::Automatable > printer, boost::shared_ptr< ARDOUR::AutomationControl > ac, Gtk::Adjustment *adj)
LIBARDOUR_API PBD::PropertyDescriptor< bool > active
double beats_per_minute() const
boost::shared_ptr< ARDOUR::Automatable > _printer
const Parameter & parameter() const
void call_slot(EventLoop::InvalidationRecord *, const boost::function< void()> &)
void disable_vertical_scroll()
~AutomationBarController()
boost::shared_ptr< ControlList > list()
PBD::Signal0< void > Changed
virtual double interface_to_internal(double i) const
AutomationController(boost::shared_ptr< ARDOUR::Automatable > printer, boost::shared_ptr< ARDOUR::AutomationControl > ac, Gtk::Adjustment *adj)
static double clamp(double val, double min, double max)
void set_automation_state(AutoState as)
boost::shared_ptr< ARDOUR::AutomationControl > _controllable
PixFader::Tweaks tweaks() const
sigc::connection rapid_connect(const sigc::slot< void > &slot)
Gtk::Adjustment * _adjustment
const Tempo & tempo_at(framepos_t) const
sigc::signal< void > StopGesture
std::string string_compose(const std::string &fmt, const T1 &o1)
void stop_touch(bool mark, double when)