32 #include "ardour/utils.h"
48 : MotionFeedback (p, MotionFeedback::Rotary, c, def, step, page,
"", with_numeric, subw, subh)
52 value->set_width_chars (8);
73 snprintf (buf, 32,
"+%5.2f dB", val);
75 snprintf (buf, 32,
"%5.2f dB", val);
79 snprintf (buf, 32,
"+%2ld dB", lrint (val));
81 snprintf (buf, 32,
"%2ld dB", lrint (val));
91 snprintf (buf, 32,
"+%5.2f dB", dB);
93 snprintf (buf, 32,
"%5.2f dB", dB);
97 snprintf (buf, 32,
"+%2ld dB", lrint (dB));
99 snprintf (buf, 32,
"%2ld dB", lrint (dB));
104 snprintf (buf, 32,
"--");
114 display_value = std::max (0.0, std::min (1.0, display_value));
158 v = std::max (0.0, std::min (1.0, v));
166 if (control_delta > 0.0) {
167 v = ceil (v * 10.0) / 10.0;
169 v = floor (v * 10.0) / 10.0;
212 double arange = (v >= 0.001) ? ( ((20.0 * log10(v)) + 80.0) * 23.250244732 ) : ( 0 );
214 v = rint(arange) + rint(control_delta * 1000.0);
216 if (v < 466) v = (control_delta > 0) ? 0.001 : 0;
219 else v = pow(10, (v * 0.00215051499) - 4.0);
227 if (control_delta < 0.0) {
233 if (fabs (control_delta) < 0.05) {
234 control_delta = mult * 0.05;
236 control_delta = mult * 0.1;
245 if (control_delta > 0.0) {
254 if (control_delta < 0 && v < dB_minus_200) {
263 if (v < dB_minus_100) {
264 control_delta *= 1000.0;
265 }
else if (v < dB_minus_50) {
266 control_delta *= 100.0;
267 }
else if (v < dB_minus_20) {
268 control_delta *= 10.0;
void set_print_func(void(*pf)(char buf[32], const boost::shared_ptr< PBD::Controllable > &, void *), void *arg)
LIBARDOUR_API double slider_position_to_gain_with_max(double g, double max_gain=2.0)
double to_display_value(double)
virtual double upper() const
double adjust(double nominal_delta)
static float accurate_coefficient_to_dB(float coeff)
LIBARDOUR_API RCConfiguration * Config
virtual double lower() const
virtual double get_value(void) const =0
LIBARDOUR_API double gain_to_slider_position_with_max(double g, double max_gain=2.0)
void dB_printer(char buf[32], const boost::shared_ptr< PBD::Controllable > &adj)
static void _dB_printer(char buf[32], const boost::shared_ptr< PBD::Controllable > &adj, void *arg)
VolumeController(Glib::RefPtr< Gdk::Pixbuf >, boost::shared_ptr< PBD::Controllable >, double def, double step, double page, bool with_numeric=true, int image_width=40, int image_height=40, bool linear=true)
static float dB_to_coefficient(float dB)
boost::shared_ptr< PBD::Controllable > _controllable
double to_control_value(double)