summaryrefslogtreecommitdiff
path: root/libs/surfaces
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2011-01-27 01:31:03 +0000
committerPaul Davis <paul@linuxaudiosystems.com>2011-01-27 01:31:03 +0000
commit15b5fce90480490455237da917167b0bcb5ce946 (patch)
tree5c1c5929a83c05db1a901e775fefe4f6cf8dc1b7 /libs/surfaces
parent1385643131a2b2231bbbc0c584c76883fcfb580a (diff)
merge 3.0-panexp (pan experiments) branch, revisions 8534-8585 into 3.0, thus ending 3.0-panexp. THIS COMMIT WILL BREAK ALL EXISTING 3.0 SESSIONS IN SOME WAY (possibly not fatally).
git-svn-id: svn://localhost/ardour2/branches/3.0@8586 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'libs/surfaces')
-rw-r--r--libs/surfaces/mackie/mackie_control_protocol.cc27
-rw-r--r--libs/surfaces/mackie/route_signal.cc4
-rw-r--r--libs/surfaces/osc/osc.cc4
3 files changed, 14 insertions, 21 deletions
diff --git a/libs/surfaces/mackie/mackie_control_protocol.cc b/libs/surfaces/mackie/mackie_control_protocol.cc
index ce2b2088d2..005d28f7aa 100644
--- a/libs/surfaces/mackie/mackie_control_protocol.cc
+++ b/libs/surfaces/mackie/mackie_control_protocol.cc
@@ -45,6 +45,7 @@
#include "ardour/location.h"
#include "ardour/midi_ui.h"
#include "ardour/panner.h"
+#include "ardour/panner_shell.h"
#include "ardour/route.h"
#include "ardour/session.h"
#include "ardour/tempo.h"
@@ -832,19 +833,17 @@ MackieControlProtocol::handle_control_event (SurfacePort & port, Control & contr
// pot (jog wheel, external control)
case Control::type_pot:
if (control.group().is_strip()) {
- if (route != 0 && route->panner())
- {
+ if (route) {
+ boost::shared_ptr<Panner> panner = route->panner_shell()->panner();
// pan for mono input routes, or stereo linked panners
- if (route->panner()->npanners() == 1 || (route->panner()->npanners() == 2 && route->panner()->linked()))
- {
- // assume pan for now
- AngularVector a = route->panner()->streampanner (0).get_effective_position ();
+ if (panner) {
+ double p = panner->position ();
// calculate new value, and adjust
- a.azi += 180.0 * state.delta * state.sign;
- a.azi = min (180.0, a.azi);
- a.azi = max (0.0, a.azi);
- route->panner()->streampanner (0).set_position (a);
+ p += state.delta * state.sign;
+ p = min (1.0, p);
+ p = max (0.0, p);
+ panner->set_position (p);
}
}
else
@@ -1000,15 +999,13 @@ MackieControlProtocol::notify_panner_changed (RouteSignal * route_signal, bool f
{
Pot & pot = route_signal->strip().vpot();
boost::shared_ptr<Panner> panner = route_signal->route()->panner();
- if ((panner && panner->npanners() == 1) || (panner->npanners() == 2 && panner->linked()))
- {
- AngularVector pos = route_signal->route()->panner()->streampanner(0).get_effective_position ();
- float fract = 1.0 - (pos.azi / 180.0); /* 1.0 = 0 degrees = right; 0.0 = 180 degrees = left */
+ if (panner) {
+ double pos = panner->position ();
// cache the MidiByteArray here, because the mackie led control is much lower
// resolution than the panner control. So we save lots of byte
// sends in spite of more work on the comparison
- MidiByteArray bytes = builder.build_led_ring (pot, ControlState (on, fract), MackieMidiBuilder::midi_pot_mode_dot);
+ MidiByteArray bytes = builder.build_led_ring (pot, ControlState (on, pos), MackieMidiBuilder::midi_pot_mode_dot);
// check that something has actually changed
if (force_update || bytes != route_signal->last_pan_written())
{
diff --git a/libs/surfaces/mackie/route_signal.cc b/libs/surfaces/mackie/route_signal.cc
index 2f6a6f7c5f..f6db125b8c 100644
--- a/libs/surfaces/mackie/route_signal.cc
+++ b/libs/surfaces/mackie/route_signal.cc
@@ -52,10 +52,6 @@ void RouteSignal::connect()
if (_route->panner()) {
_route->panner()->Changed.connect(connections, MISSING_INVALIDATOR, ui_bind (&MackieControlProtocol::notify_panner_changed, &_mcp, this, false), midi_ui_context());
-
- for ( unsigned int i = 0; i < _route->panner()->npanners(); ++i ) {
- _route->panner()->streampanner(i).Changed.connect (connections, MISSING_INVALIDATOR, ui_bind (&MackieControlProtocol::notify_panner_changed, &_mcp, this, false), midi_ui_context());
- }
}
boost::shared_ptr<Track> trk = boost::dynamic_pointer_cast<ARDOUR::Track>(_route);
diff --git a/libs/surfaces/osc/osc.cc b/libs/surfaces/osc/osc.cc
index 93b56a8a97..280959ae09 100644
--- a/libs/surfaces/osc/osc.cc
+++ b/libs/surfaces/osc/osc.cc
@@ -870,7 +870,7 @@ OSC::route_set_pan_stereo_position (int rid, float pos)
if (r) {
boost::shared_ptr<Panner> panner = r->panner();
if (panner) {
- panner->set_stereo_position (pos);
+ panner->set_position (pos);
}
}
@@ -888,7 +888,7 @@ OSC::route_set_pan_stereo_width (int rid, float pos)
if (r) {
boost::shared_ptr<Panner> panner = r->panner();
if (panner) {
- panner->set_stereo_width (pos);
+ panner->set_width (pos);
}
}