diff options
author | Paul Davis <paul@linuxaudiosystems.com> | 2011-01-27 01:31:03 +0000 |
---|---|---|
committer | Paul Davis <paul@linuxaudiosystems.com> | 2011-01-27 01:31:03 +0000 |
commit | 15b5fce90480490455237da917167b0bcb5ce946 (patch) | |
tree | 5c1c5929a83c05db1a901e775fefe4f6cf8dc1b7 /libs/surfaces | |
parent | 1385643131a2b2231bbbc0c584c76883fcfb580a (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.cc | 27 | ||||
-rw-r--r-- | libs/surfaces/mackie/route_signal.cc | 4 | ||||
-rw-r--r-- | libs/surfaces/osc/osc.cc | 4 |
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); } } |