summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobin Gareus <robin@gareus.org>2015-12-02 00:55:01 +0100
committerRobin Gareus <robin@gareus.org>2015-12-02 00:55:01 +0100
commit0544e74fdf2fd702cfdd02bb8ef2893700aad023 (patch)
treeeda23a31239abb066b26baa67d2113c0dd83d8e3
parentb0fe298f7295d1b076443c7252ecdb44ddb5896f (diff)
merge from mixbus branch.
keep control surfaces special cases upstream.
-rw-r--r--libs/surfaces/faderport/operations.cc20
1 files changed, 20 insertions, 0 deletions
diff --git a/libs/surfaces/faderport/operations.cc b/libs/surfaces/faderport/operations.cc
index 0677c0adbb..9578bab024 100644
--- a/libs/surfaces/faderport/operations.cc
+++ b/libs/surfaces/faderport/operations.cc
@@ -20,6 +20,7 @@
#include "ardour/async_midi_port.h"
#include "ardour/monitor_processor.h"
#include "ardour/pannable.h"
+#include "ardour/plugin_insert.h"
#include "ardour/rc_configuration.h"
#include "ardour/session.h"
#include "ardour/track.h"
@@ -260,7 +261,26 @@ FaderPort::ardour_pan_width(int delta)
void
FaderPort::mixbus_pan (int delta)
{
+#ifdef MIXBUS
+ if (!_current_route) {
+ return;
+ }
+
+ const uint32_t port_channel_post_pan = 2; // gtk2_ardour/mixbus_ports.h
+ boost::shared_ptr<ARDOUR::PluginInsert> plug = _current_route->ch_post();
+
+ if (!plug) {
+ return;
+ }
+ boost::shared_ptr<AutomationControl> azimuth = boost::dynamic_pointer_cast<ARDOUR::AutomationControl> (plug->control (Evoral::Parameter (ARDOUR::PluginAutomation, 0, port_channel_post_pan)));
+
+ if (!azimuth) {
+ return;
+ }
+
+ azimuth->set_value (azimuth->interface_to_internal (azimuth->internal_to_interface (azimuth->get_value()) + (delta / encoder_divider)));
+#endif
}
void