summaryrefslogtreecommitdiff
path: root/libs/panners/2in2out
diff options
context:
space:
mode:
authorRobin Gareus <robin@gareus.org>2020-03-23 16:46:03 +0100
committerRobin Gareus <robin@gareus.org>2020-03-23 17:38:08 +0100
commit4780a0fd60a5f62eb02efec82ddfcd27e9d3bffe (patch)
tree9fb620ad431435996bf0b55349cf10673b55137b /libs/panners/2in2out
parentac9e16f0b8a36b57609c4613e0030145d384eed3 (diff)
NO-OP: whitespace
Diffstat (limited to 'libs/panners/2in2out')
-rw-r--r--libs/panners/2in2out/panner_2in2out.cc415
-rw-r--r--libs/panners/2in2out/panner_2in2out.h34
2 files changed, 221 insertions, 228 deletions
diff --git a/libs/panners/2in2out/panner_2in2out.cc b/libs/panners/2in2out/panner_2in2out.cc
index e6127194c4..e7c1365e46 100644
--- a/libs/panners/2in2out/panner_2in2out.cc
+++ b/libs/panners/2in2out/panner_2in2out.cc
@@ -20,35 +20,34 @@
#include <inttypes.h>
-#include <cmath>
#include <cerrno>
-#include <cstdlib>
-#include <string>
+#include <cmath>
#include <cstdio>
+#include <cstdlib>
+#include <float.h>
#include <locale.h>
+#include <string>
#include <unistd.h>
-#include <float.h>
#include <glibmm.h>
#include "pbd/cartesian.h"
#include "pbd/convert.h"
+#include "pbd/enumwriter.h"
#include "pbd/error.h"
#include "pbd/failed_constructor.h"
#include "pbd/xml++.h"
-#include "pbd/enumwriter.h"
#include "evoral/Curve.h"
#include "ardour/audio_buffer.h"
-#include "ardour/audio_buffer.h"
#include "ardour/buffer_set.h"
+#include "ardour/mix.h"
#include "ardour/pan_controllable.h"
#include "ardour/pannable.h"
#include "ardour/runtime_functions.h"
#include "ardour/session.h"
#include "ardour/utils.h"
-#include "ardour/mix.h"
#include "panner_2in2out.h"
@@ -61,45 +60,49 @@ using namespace ARDOUR;
using namespace PBD;
static PanPluginDescriptor _descriptor = {
- "Equal Power Stereo",
- "http://ardour.org/plugin/panner_2in2out",
- "http://ardour.org/plugin/panner_2in2out#ui",
- 2, 2,
- 20,
- Panner2in2out::factory
+ "Equal Power Stereo",
+ "http://ardour.org/plugin/panner_2in2out",
+ "http://ardour.org/plugin/panner_2in2out#ui",
+ 2, 2,
+ 20,
+ Panner2in2out::factory
};
-extern "C" ARDOURPANNER_API PanPluginDescriptor* panner_descriptor () { return &_descriptor; }
+extern "C" ARDOURPANNER_API PanPluginDescriptor*
+panner_descriptor ()
+{
+ return &_descriptor;
+}
Panner2in2out::Panner2in2out (boost::shared_ptr<Pannable> p)
: Panner (p)
{
- if (!_pannable->has_state()) {
- _pannable->pan_azimuth_control->set_value (0.5, Controllable::NoGroup);
- _pannable->pan_width_control->set_value (1.0, Controllable::NoGroup);
- }
+ if (!_pannable->has_state ()) {
+ _pannable->pan_azimuth_control->set_value (0.5, Controllable::NoGroup);
+ _pannable->pan_width_control->set_value (1.0, Controllable::NoGroup);
+ }
- double const w = width();
- double const wrange = min (position(), (1 - position())) * 2;
- if (fabs(w) > wrange) {
- set_width(w > 0 ? wrange : -wrange);
- }
+ double const w = width ();
+ double const wrange = min (position (), (1 - position ())) * 2;
+ if (fabs (w) > wrange) {
+ set_width (w > 0 ? wrange : -wrange);
+ }
- _can_automate_list.insert (Evoral::Parameter (PanAzimuthAutomation));
- _can_automate_list.insert (Evoral::Parameter (PanWidthAutomation));
+ _can_automate_list.insert (Evoral::Parameter (PanAzimuthAutomation));
+ _can_automate_list.insert (Evoral::Parameter (PanWidthAutomation));
- update ();
+ update ();
- /* LEFT SIGNAL */
- left_interp[0] = left[0] = desired_left[0];
- right_interp[0] = right[0] = desired_right[0];
+ /* LEFT SIGNAL */
+ left_interp[0] = left[0] = desired_left[0];
+ right_interp[0] = right[0] = desired_right[0];
- /* RIGHT SIGNAL */
- left_interp[1] = left[1] = desired_left[1];
- right_interp[1] = right[1] = desired_right[1];
+ /* RIGHT SIGNAL */
+ left_interp[1] = left[1] = desired_left[1];
+ right_interp[1] = right[1] = desired_right[1];
- _pannable->pan_azimuth_control->Changed.connect_same_thread (*this, boost::bind (&Panner2in2out::update, this));
- _pannable->pan_width_control->Changed.connect_same_thread (*this, boost::bind (&Panner2in2out::update, this));
+ _pannable->pan_azimuth_control->Changed.connect_same_thread (*this, boost::bind (&Panner2in2out::update, this));
+ _pannable->pan_width_control->Changed.connect_same_thread (*this, boost::bind (&Panner2in2out::update, this));
}
Panner2in2out::~Panner2in2out ()
@@ -109,29 +112,29 @@ Panner2in2out::~Panner2in2out ()
double
Panner2in2out::position () const
{
- return _pannable->pan_azimuth_control->get_value();
+ return _pannable->pan_azimuth_control->get_value ();
}
double
Panner2in2out::width () const
{
- return _pannable->pan_width_control->get_value();
+ return _pannable->pan_width_control->get_value ();
}
void
Panner2in2out::set_position (double p)
{
- if (clamp_position (p)) {
- _pannable->pan_azimuth_control->set_value (p, Controllable::NoGroup);
- }
+ if (clamp_position (p)) {
+ _pannable->pan_azimuth_control->set_value (p, Controllable::NoGroup);
+ }
}
void
Panner2in2out::set_width (double p)
{
- if (clamp_width (p)) {
- _pannable->pan_width_control->set_value (p, Controllable::NoGroup);
- }
+ if (clamp_width (p)) {
+ _pannable->pan_width_control->set_value (p, Controllable::NoGroup);
+ }
}
void
@@ -150,149 +153,148 @@ Panner2in2out::update ()
return;
}
- /* it would be very nice to split this out into a virtual function
- that can be accessed from BaseStereoPanner and used in do_distribute_automated().
-
- but the place where its used in do_distribute_automated() is a tight inner loop,
- and making "nframes" virtual function calls to compute values is an absurd
- overhead.
- */
-
- /* x == 0 => hard left = 180.0 degrees
- x == 1 => hard right = 0.0 degrees
- */
-
- float pos[2];
- double width = this->width ();
- const double direction_as_lr_fract = position ();
-
- double const wrange = min (position(), (1 - position())) * 2;
- if (fabs(width) > wrange) {
- width = (width > 0 ? wrange : -wrange);
- }
+ /* it would be very nice to split this out into a virtual function
+ * that can be accessed from BaseStereoPanner and used in do_distribute_automated().
+ *
+ * but the place where its used in do_distribute_automated() is a tight inner loop,
+ * and making "nframes" virtual function calls to compute values is an absurd
+ * overhead.
+ */
+
+ /* x == 0 => hard left = 180.0 degrees
+ * x == 1 => hard right = 0.0 degrees
+ */
+
+ float pos[2];
+ double width = this->width ();
+ const double direction_as_lr_fract = position ();
+
+ double const wrange = min (position (), (1 - position ())) * 2;
+ if (fabs (width) > wrange) {
+ width = (width > 0 ? wrange : -wrange);
+ }
- if (width < 0.0) {
- width = -width;
- pos[0] = direction_as_lr_fract + (width/2.0); // left signal lr_fract
- pos[1] = direction_as_lr_fract - (width/2.0); // right signal lr_fract
- } else {
- pos[1] = direction_as_lr_fract + (width/2.0); // right signal lr_fract
- pos[0] = direction_as_lr_fract - (width/2.0); // left signal lr_fract
- }
+ if (width < 0.0) {
+ width = -width;
+ pos[0] = direction_as_lr_fract + (width / 2.0); // left signal lr_fract
+ pos[1] = direction_as_lr_fract - (width / 2.0); // right signal lr_fract
+ } else {
+ pos[1] = direction_as_lr_fract + (width / 2.0); // right signal lr_fract
+ pos[0] = direction_as_lr_fract - (width / 2.0); // left signal lr_fract
+ }
- /* compute target gain coefficients for both input signals */
+ /* compute target gain coefficients for both input signals */
- float const pan_law_attenuation = -3.0f;
- float const scale = 2.0f - 4.0f * powf (10.0f,pan_law_attenuation/20.0f);
- float panR;
- float panL;
+ float const pan_law_attenuation = -3.0f;
+ float const scale = 2.0f - 4.0f * powf (10.0f, pan_law_attenuation / 20.0f);
+ float panR;
+ float panL;
- /* left signal */
+ /* left signal */
- panR = pos[0];
- panL = 1 - panR;
- desired_left[0] = panL * (scale * panL + 1.0f - scale);
- desired_right[0] = panR * (scale * panR + 1.0f - scale);
+ panR = pos[0];
+ panL = 1 - panR;
+ desired_left[0] = panL * (scale * panL + 1.0f - scale);
+ desired_right[0] = panR * (scale * panR + 1.0f - scale);
- /* right signal */
+ /* right signal */
- panR = pos[1];
- panL = 1 - panR;
- desired_left[1] = panL * (scale * panL + 1.0f - scale);
- desired_right[1] = panR * (scale * panR + 1.0f - scale);
+ panR = pos[1];
+ panL = 1 - panR;
+ desired_left[1] = panL * (scale * panL + 1.0f - scale);
+ desired_right[1] = panR * (scale * panR + 1.0f - scale);
}
bool
Panner2in2out::clamp_position (double& p)
{
- double w = width ();
- return clamp_stereo_pan (p, w);
+ double w = width ();
+ return clamp_stereo_pan (p, w);
}
bool
Panner2in2out::clamp_width (double& w)
{
- double p = position ();
- return clamp_stereo_pan (p, w);
+ 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);
+ 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;
+ 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)
{
- double r_pos;
- double l_pos;
+ double r_pos;
+ double l_pos;
- width = max (min (width, 1.0), -1.0);
- direction_as_lr_fract = max (min (direction_as_lr_fract, 1.0), 0.0);
+ width = max (min (width, 1.0), -1.0);
+ direction_as_lr_fract = max (min (direction_as_lr_fract, 1.0), 0.0);
- r_pos = direction_as_lr_fract + (width/2.0);
- l_pos = direction_as_lr_fract - (width/2.0);
+ r_pos = direction_as_lr_fract + (width / 2.0);
+ l_pos = direction_as_lr_fract - (width / 2.0);
- if (width < 0.0) {
- swap (r_pos, l_pos);
- }
-
- /* if the new left position is less than or equal to zero (hard left) and the left panner
- is already there, we're not moving the left signal.
- */
+ if (width < 0.0) {
+ swap (r_pos, l_pos);
+ }
- if (l_pos < 0.0) {
- return false;
- }
+ /* if the new left position is less than or equal to zero (hard left)
+ * and the left panner is already there, we're not moving the left signal.
+ */
- /* if the new right position is less than or equal to 1.0 (hard right) and the right panner
- is already there, we're not moving the right signal.
- */
+ if (l_pos < 0.0) {
+ return false;
+ }
- if (r_pos > 1.0) {
- return false;
+ /* if the new right position is less than or equal to 1.0 (hard right)
+ * and the right panner is already there, we're not moving the right signal.
+ */
- }
+ if (r_pos > 1.0) {
+ return false;
+ }
- return true;
+ return true;
}
void
Panner2in2out::distribute_one (AudioBuffer& srcbuf, BufferSet& obufs, gain_t gain_coeff, pframes_t nframes, uint32_t which)
{
- assert (obufs.count().n_audio() == 2);
+ assert (obufs.count ().n_audio () == 2);
- pan_t delta;
+ pan_t delta;
Sample* dst;
- pan_t pan;
+ pan_t pan;
- Sample* const src = srcbuf.data();
+ Sample* const src = srcbuf.data ();
/* LEFT OUTPUT */
- dst = obufs.get_audio(0).data();
+ dst = obufs.get_audio (0).data ();
if (fabsf ((delta = (left[which] - desired_left[which]))) > 0.002) { // about 1 degree of arc
/* we've moving the pan by an appreciable amount, so we must
- interpolate over 64 samples or nframes, whichever is smaller */
+ * interpolate over 64 samples or nframes, whichever is smaller */
- pframes_t const limit = min ((pframes_t) 64, nframes);
- pframes_t n;
+ pframes_t const limit = min ((pframes_t)64, nframes);
+ pframes_t n;
- delta = -(delta / (float) (limit));
+ delta = -(delta / (float)(limit));
for (n = 0; n < limit; n++) {
left_interp[which] = left_interp[which] + delta;
- left[which] = left_interp[which] + 0.9 * (left[which] - left_interp[which]);
+ left[which] = left_interp[which] + 0.9 * (left[which] - left_interp[which]);
dst[n] += src[n] * left[which] * gain_coeff;
}
@@ -300,33 +302,25 @@ Panner2in2out::distribute_one (AudioBuffer& srcbuf, BufferSet& obufs, gain_t gai
pan = left[which] * gain_coeff;
- mix_buffers_with_gain (dst+n,src+n,nframes-n,pan);
+ mix_buffers_with_gain (dst + n, src + n, nframes - n, pan);
} else {
-
- left[which] = desired_left[which];
+ left[which] = desired_left[which];
left_interp[which] = left[which];
if ((pan = (left[which] * gain_coeff)) != 1.0f) {
-
if (pan != 0.0f) {
-
/* pan is 1 but also not 0, so we must do it "properly" */
- //obufs.get_audio(1).read_from (srcbuf, nframes);
- mix_buffers_with_gain(dst,src,nframes,pan);
-
- /* mark that we wrote into the buffer */
-
- // obufs[0] = 0;
+ mix_buffers_with_gain (dst, src, nframes, pan);
+ /* XXX it would be nice to mark that we wrote into the buffer */
}
} else {
-
/* pan is 1 so we can just copy the input samples straight in */
- mix_buffers_no_gain(dst,src,nframes);
+ mix_buffers_no_gain (dst, src, nframes);
/* XXX it would be nice to mark that we wrote into the buffer */
}
@@ -334,21 +328,21 @@ Panner2in2out::distribute_one (AudioBuffer& srcbuf, BufferSet& obufs, gain_t gai
/* RIGHT OUTPUT */
- dst = obufs.get_audio(1).data();
+ dst = obufs.get_audio (1).data ();
if (fabsf ((delta = (right[which] - desired_right[which]))) > 0.002) { // about 1 degree of arc
/* we're moving the pan by an appreciable amount, so we must
- interpolate over 64 samples or nframes, whichever is smaller */
+ * interpolate over 64 samples or nframes, whichever is smaller */
- pframes_t const limit = min ((pframes_t) 64, nframes);
- pframes_t n;
+ pframes_t const limit = min ((pframes_t)64, nframes);
+ pframes_t n;
- delta = -(delta / (float) (limit));
+ delta = -(delta / (float)(limit));
for (n = 0; n < limit; n++) {
right_interp[which] = right_interp[which] + delta;
- right[which] = right_interp[which] + 0.9 * (right[which] - right_interp[which]);
+ right[which] = right_interp[which] + 0.9 * (right[which] - right_interp[which]);
dst[n] += src[n] * right[which] * gain_coeff;
}
@@ -356,32 +350,27 @@ Panner2in2out::distribute_one (AudioBuffer& srcbuf, BufferSet& obufs, gain_t gai
pan = right[which] * gain_coeff;
- mix_buffers_with_gain(dst+n,src+n,nframes-n,pan);
+ mix_buffers_with_gain (dst + n, src + n, nframes - n, pan);
/* XXX it would be nice to mark the buffer as written to */
} else {
-
- right[which] = desired_right[which];
+ right[which] = desired_right[which];
right_interp[which] = right[which];
if ((pan = (right[which] * gain_coeff)) != 1.0f) {
-
if (pan != 0.0f) {
-
/* pan is not 1 but also not 0, so we must do it "properly" */
- mix_buffers_with_gain(dst,src,nframes,pan);
- // obufs.get_audio(1).read_from (srcbuf, nframes);
+ mix_buffers_with_gain (dst, src, nframes, pan);
/* XXX it would be nice to mark the buffer as written to */
}
} else {
-
/* pan is 1 so we can just copy the input samples straight in */
- mix_buffers_no_gain(dst,src,nframes);
+ mix_buffers_no_gain (dst, src, nframes);
/* XXX it would be nice to mark the buffer as written to */
}
@@ -393,65 +382,64 @@ Panner2in2out::distribute_one_automated (AudioBuffer& srcbuf, BufferSet& obufs,
samplepos_t start, samplepos_t end, pframes_t nframes,
pan_t** buffers, uint32_t which)
{
- assert (obufs.count().n_audio() == 2);
+ assert (obufs.count ().n_audio () == 2);
- Sample* dst;
- pan_t* pbuf;
- Sample* const src = srcbuf.data();
- pan_t* const position = buffers[0];
- pan_t* const width = buffers[1];
+ Sample* dst;
+ pan_t* pbuf;
+ Sample* const src = srcbuf.data ();
+ pan_t* const position = buffers[0];
+ pan_t* const width = buffers[1];
/* fetch positional data */
- if (!_pannable->pan_azimuth_control->list()->curve().rt_safe_get_vector (start, end, position, nframes)) {
+ if (!_pannable->pan_azimuth_control->list ()->curve ().rt_safe_get_vector (start, end, position, nframes)) {
/* fallback */
- distribute_one (srcbuf, obufs, 1.0, nframes, which);
+ distribute_one (srcbuf, obufs, 1.0, nframes, which);
return;
}
- if (!_pannable->pan_width_control->list()->curve().rt_safe_get_vector (start, end, width, nframes)) {
+ if (!_pannable->pan_width_control->list ()->curve ().rt_safe_get_vector (start, end, width, nframes)) {
/* fallback */
- distribute_one (srcbuf, obufs, 1.0, nframes, which);
+ distribute_one (srcbuf, obufs, 1.0, nframes, which);
return;
}
/* apply pan law to convert positional data into pan coefficients for
- each buffer (output)
+ * each buffer (output)
*/
const float pan_law_attenuation = -3.0f;
- const float scale = 2.0f - 4.0f * powf (10.0f,pan_law_attenuation/20.0f);
+ const float scale = 2.0f - 4.0f * powf (10.0f, pan_law_attenuation / 20.0f);
for (pframes_t n = 0; n < nframes; ++n) {
+ float panR;
- float panR;
-
- if (which == 0) {
- // panning left signal
- panR = position[n] - (width[n]/2.0f); // center - width/2
- } else {
- // panning right signal
- panR = position[n] + (width[n]/2.0f); // center - width/2
- }
+ if (which == 0) {
+ /* panning left signal */
+ panR = position[n] - (width[n] / 2.0f); // center - width/2
+ } else {
+ /* panning right signal */
+ panR = position[n] + (width[n] / 2.0f); // center - width/2
+ }
- panR = max(0.f, min(1.f, panR));
+ panR = max (0.f, min (1.f, panR));
- const float panL = 1 - panR;
+ const float panL = 1 - panR;
- /* note that are overwriting buffers, but its OK
- because we're finished with their old contents
- (position/width automation data) and are
- replacing it with panning/gain coefficients
- that we need to actually process the data.
- */
+ /* note that are overwriting buffers, but its OK
+ * because we're finished with their old contents
+ * (position/width automation data) and are
+ * replacing it with panning/gain coefficients
+ * that we need to actually process the data.
+ */
- buffers[0][n] = panL * (scale * panL + 1.0f - scale);
- buffers[1][n] = panR * (scale * panR + 1.0f - scale);
- }
+ buffers[0][n] = panL * (scale * panL + 1.0f - scale);
+ buffers[1][n] = panR * (scale * panR + 1.0f - scale);
+ }
/* LEFT OUTPUT */
- dst = obufs.get_audio(0).data();
+ dst = obufs.get_audio (0).data ();
pbuf = buffers[0];
for (pframes_t n = 0; n < nframes; ++n) {
@@ -462,7 +450,7 @@ Panner2in2out::distribute_one_automated (AudioBuffer& srcbuf, BufferSet& obufs,
/* RIGHT OUTPUT */
- dst = obufs.get_audio(1).data();
+ dst = obufs.get_audio (1).data ();
pbuf = buffers[1];
for (pframes_t n = 0; n < nframes; ++n) {
@@ -482,41 +470,40 @@ XMLNode&
Panner2in2out::get_state ()
{
XMLNode& root (Panner::get_state ());
- root.set_property (X_("uri"), _descriptor.panner_uri);
+ root.set_property (X_ ("uri"), _descriptor.panner_uri);
/* this is needed to allow new sessions to load with old Ardour: */
- root.set_property (X_("type"), _descriptor.name);
+ root.set_property (X_ ("type"), _descriptor.name);
return root;
}
string
Panner2in2out::value_as_string (boost::shared_ptr<const AutomationControl> ac) const
{
- /* DO NOT USE LocaleGuard HERE */
- double val = ac->get_value();
-
- switch (ac->parameter().type()) {
- case PanAzimuthAutomation:
- /* We show the position of the center of the image relative to the left & right.
- This is expressed as a pair of percentage values that ranges from (100,0)
- (hard left) through (50,50) (hard center) to (0,100) (hard right).
-
- This is pretty wierd, but its the way audio engineers expect it. Just remember that
- the center of the USA isn't Kansas, its (50LA, 50NY) and it will all make sense.
-
- This is designed to be as narrow as possible. Dedicated
- panner GUIs can do their own version of this if they need
- something less compact.
- */
-
- return string_compose (_("L%1R%2"), (int) rint (100.0 * (1.0 - val)),
- (int) rint (100.0 * val));
-
- case PanWidthAutomation:
- return string_compose (_("Width: %1%%"), (int) floor (100.0 * val));
-
- default:
- return _("unused");
- }
+ double val = ac->get_value ();
+
+ switch (ac->parameter ().type ()) {
+ case PanAzimuthAutomation:
+ /* We show the position of the center of the image relative to the left & right.
+ * This is expressed as a pair of percentage values that ranges from (100,0)
+ * (hard left) through (50,50) (hard center) to (0,100) (hard right).
+ *
+ * This is pretty wierd, but its the way audio engineers expect it. Just remember that
+ * the center of the USA isn't Kansas, its (50LA, 50NY) and it will all make sense.
+ *
+ * This is designed to be as narrow as possible. Dedicated
+ * panner GUIs can do their own version of this if they need
+ * something less compact.
+ */
+
+ return string_compose (_ ("L%1R%2"), (int)rint (100.0 * (1.0 - val)),
+ (int)rint (100.0 * val));
+
+ case PanWidthAutomation:
+ return string_compose (_ ("Width: %1%%"), (int)floor (100.0 * val));
+
+ default:
+ return _ ("unused");
+ }
}
void
diff --git a/libs/panners/2in2out/panner_2in2out.h b/libs/panners/2in2out/panner_2in2out.h
index 4816be7734..cbf6d88e4c 100644
--- a/libs/panners/2in2out/panner_2in2out.h
+++ b/libs/panners/2in2out/panner_2in2out.h
@@ -20,31 +20,37 @@
#ifndef __ardour_panner_2in2out_h__
#define __ardour_panner_2in2out_h__
-#include <cmath>
#include <cassert>
-#include <vector>
-#include <string>
+#include <cmath>
#include <iostream>
+#include <string>
+#include <vector>
-#include "pbd/stateful.h"
-#include "pbd/controllable.h"
#include "pbd/cartesian.h"
+#include "pbd/controllable.h"
+#include "pbd/stateful.h"
-#include "ardour/automation_control.h"
#include "ardour/automatable.h"
+#include "ardour/automation_control.h"
#include "ardour/panner.h"
#include "ardour/types.h"
-namespace ARDOUR {
-
+namespace ARDOUR
+{
class Panner2in2out : public Panner
{
- public:
+public:
Panner2in2out (boost::shared_ptr<Pannable>);
~Panner2in2out ();
- ChanCount in() const { return ChanCount (DataType::AUDIO, 2); }
- ChanCount out() const { return ChanCount (DataType::AUDIO, 2); }
+ ChanCount in () const
+ {
+ return ChanCount (DataType::AUDIO, 2);
+ }
+ ChanCount out () const
+ {
+ return ChanCount (DataType::AUDIO, 2);
+ }
bool clamp_position (double&);
bool clamp_width (double&);
@@ -69,7 +75,7 @@ class Panner2in2out : public Panner
void reset ();
void thaw ();
- protected:
+protected:
float left[2];
float right[2];
float desired_left[2];
@@ -77,7 +83,7 @@ class Panner2in2out : public Panner
float left_interp[2];
float right_interp[2];
- private:
+private:
bool clamp_stereo_pan (double& direction_as_lr_fract, double& width);
void distribute_one (AudioBuffer& srcbuf, BufferSet& obufs, gain_t gain_coeff, pframes_t nframes, uint32_t which);
@@ -86,6 +92,6 @@ class Panner2in2out : public Panner
pan_t** buffers, uint32_t which);
};
-} // namespace
+} // namespace ARDOUR
#endif /* __ardour_panner_2in2out_h__ */