summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--libs/surfaces/mackie/device_info.cc9
-rw-r--r--libs/surfaces/mackie/device_info.h2
-rw-r--r--libs/surfaces/mackie/mackie_control_protocol.cc5
-rw-r--r--mcp/ruco.device15
4 files changed, 31 insertions, 0 deletions
diff --git a/libs/surfaces/mackie/device_info.cc b/libs/surfaces/mackie/device_info.cc
index a9b7d9d0d5..c085aea812 100644
--- a/libs/surfaces/mackie/device_info.cc
+++ b/libs/surfaces/mackie/device_info.cc
@@ -62,6 +62,7 @@ DeviceInfo::DeviceInfo()
, _is_qcon(false)
, _has_meters (true)
, _has_separate_meters (false)
+ , _single_fader_follows_selection (false)
, _device_type (MCU)
, _name (X_("Mackie Control Universal Pro"))
{
@@ -254,6 +255,8 @@ DeviceInfo::set_state (const XMLNode& node, int /* version */)
if (!child->get_property ("value", _strip_cnt)) {
_strip_cnt = 8;
}
+ if (_strip_cnt==1)
+ _single_fader_follows_selection = true;
} else {
return -1;
}
@@ -425,6 +428,12 @@ DeviceInfo::has_meters() const
}
bool
+DeviceInfo::single_fader_follows_selection() const
+{
+ return _single_fader_follows_selection;
+}
+
+bool
DeviceInfo::has_separate_meters() const
{
return _has_separate_meters;
diff --git a/libs/surfaces/mackie/device_info.h b/libs/surfaces/mackie/device_info.h
index dc8803e91c..db0837f26c 100644
--- a/libs/surfaces/mackie/device_info.h
+++ b/libs/surfaces/mackie/device_info.h
@@ -83,6 +83,7 @@ class DeviceInfo
bool is_qcon() const;
bool has_meters() const;
bool has_separate_meters() const;
+ bool single_fader_follows_selection() const;
const std::string& name() const;
static std::map<std::string,DeviceInfo> device_info;
@@ -113,6 +114,7 @@ class DeviceInfo
bool _is_qcon;
bool _has_meters;
bool _has_separate_meters;
+ bool _single_fader_follows_selection;
DeviceType _device_type;
std::string _name;
std::string _global_button_name;
diff --git a/libs/surfaces/mackie/mackie_control_protocol.cc b/libs/surfaces/mackie/mackie_control_protocol.cc
index 9887ed9402..7878a795bc 100644
--- a/libs/surfaces/mackie/mackie_control_protocol.cc
+++ b/libs/surfaces/mackie/mackie_control_protocol.cc
@@ -2437,6 +2437,11 @@ MackieControlProtocol::first_selected_stripable () const
return s;
}
+ /* if it's a single-fader surface, it should follow the selection */
+ if (_device_info.single_fader_follows_selection()) {
+ return s;
+ }
+
/* stripable is not mapped. thus, the currently selected stripable is
* not on the surfaces, and so from our perspective, there is
* no currently selected stripable.
diff --git a/mcp/ruco.device b/mcp/ruco.device
new file mode 100644
index 0000000000..de2d642a15
--- /dev/null
+++ b/mcp/ruco.device
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<MackieProtocolDevice>
+ <Name value="RuCo"/>
+ <DeviceType value="MCU"/>
+ <Strips value="1"/>
+ <MasterFader value="no"/>
+ <TimecodeDisplay value="yes"/>
+ <TwoCharacterDisplay value="yes"/>
+ <Extenders value="0"/>
+ <MasterPosition value="0"/>
+ <GlobalControls value="yes"/>
+ <JogWheel value="yes"/>
+ <TouchSenseFaders value="yes"/>
+ <HasSeparateMeters value="yes"/>
+</MackieProtocolDevice>