diff options
Diffstat (limited to 'libs/panners/2in2out')
-rw-r--r-- | libs/panners/2in2out/panner_2in2out.cc | 21 | ||||
-rw-r--r-- | libs/panners/2in2out/panner_2in2out.h | 3 |
2 files changed, 20 insertions, 4 deletions
diff --git a/libs/panners/2in2out/panner_2in2out.cc b/libs/panners/2in2out/panner_2in2out.cc index 57b8836787..a316b764c7 100644 --- a/libs/panners/2in2out/panner_2in2out.cc +++ b/libs/panners/2in2out/panner_2in2out.cc @@ -152,8 +152,8 @@ Panner2in2out::update () */ float pos[2]; - double width = _pannable->pan_width_control->get_value(); - const double direction_as_lr_fract = _pannable->pan_azimuth_control->get_value(); + double width = this->width (); + const double direction_as_lr_fract = position (); if (width < 0.0) { width = -width; @@ -189,17 +189,30 @@ Panner2in2out::update () bool Panner2in2out::clamp_position (double& p) { - double w = _pannable->pan_width_control->get_value(); + double w = width (); return clamp_stereo_pan (p, w); } bool Panner2in2out::clamp_width (double& w) { - double p = _pannable->pan_azimuth_control->get_value(); + double p = position (); return clamp_stereo_pan (p, w); } +pair<double, double> +Panner2in2out::position_range () const +{ + return make_pair (0.5 - (1 - width()) / 2, 0.5 + (1 - width()) / 2); +} + +pair<double, double> +Panner2in2out::width_range () const +{ + double const w = min (position(), (1 - position())) * 2; + return make_pair (-w, w); +} + bool Panner2in2out::clamp_stereo_pan (double& direction_as_lr_fract, double& width) { diff --git a/libs/panners/2in2out/panner_2in2out.h b/libs/panners/2in2out/panner_2in2out.h index 001d3064e8..a34556d463 100644 --- a/libs/panners/2in2out/panner_2in2out.h +++ b/libs/panners/2in2out/panner_2in2out.h @@ -49,6 +49,9 @@ class Panner2in2out : public Panner bool clamp_position (double&); bool clamp_width (double&); + std::pair<double, double> position_range () const; + std::pair<double, double> width_range () const; + void set_position (double); void set_width (double); |