diff options
author | Ben Loftis <ben@harrisonconsoles.com> | 2018-02-01 14:39:17 -0600 |
---|---|---|
committer | Ben Loftis <ben@harrisonconsoles.com> | 2018-02-01 14:39:59 -0600 |
commit | ae3d9deefb4e88c85111f818eb909763561e0d60 (patch) | |
tree | 42eb489986cf0c66e8ca2071bebbbe48a3c15864 /libs/surfaces/mackie/surface.cc | |
parent | 79cb57e31a87af095d668d9d66fad64343784221 (diff) |
Support for the iCON Qcon mcp device - sysex strings. Submitted by Michal Barhon.
Diffstat (limited to 'libs/surfaces/mackie/surface.cc')
-rwxr-xr-x[-rw-r--r--] | libs/surfaces/mackie/surface.cc | 36 |
1 files changed, 32 insertions, 4 deletions
diff --git a/libs/surfaces/mackie/surface.cc b/libs/surfaces/mackie/surface.cc index 079d057d43..7ed0c5c26a 100644..100755 --- a/libs/surfaces/mackie/surface.cc +++ b/libs/surfaces/mackie/surface.cc @@ -84,6 +84,15 @@ static MidiByteArray mackie_sysex_hdr (5, MIDI::sysex, 0x0, 0x0, 0x66, 0x14); // the device type static MidiByteArray mackie_sysex_hdr_xt (5, MIDI::sysex, 0x0, 0x0, 0x66, 0x15); +//QCON +// The MCU sysex header for QCon Control surface +static MidiByteArray mackie_sysex_hdr_qcon (5, MIDI::sysex, 0x0, 0x0, 0x66, 0x14); + +// The MCU sysex header for QCon Control - extender +// The extender differs from Mackie by 4th bit - it's same like for main control surface (for display) +static MidiByteArray mackie_sysex_hdr_xt_qcon (5, MIDI::sysex, 0x0, 0x0, 0x66, 0x14); + + static MidiByteArray empty_midi_byte_array; Surface::Surface (MackieControlProtocol& mcp, const std::string& device_name, uint32_t number, surface_type_t stype) @@ -287,8 +296,18 @@ const MidiByteArray& Surface::sysex_hdr() const { switch (_stype) { - case mcu: return mackie_sysex_hdr; - case ext: return mackie_sysex_hdr_xt; + case mcu: + if (_mcp.device_info().is_qcon()) { + return mackie_sysex_hdr_qcon; + } else { + return mackie_sysex_hdr; + } + case ext: + if(_mcp.device_info().is_qcon()) { + return mackie_sysex_hdr_xt_qcon; + } else { + return mackie_sysex_hdr_xt; + } } cout << "SurfacePort::sysex_hdr _port_type not known" << endl; return mackie_sysex_hdr; @@ -682,9 +701,18 @@ Surface::handle_midi_sysex (MIDI::Parser &, MIDI::byte * raw_bytes, size_t count */ if (_stype == mcu) { - mackie_sysex_hdr[4] = bytes[4]; + if (_mcp.device_info().is_qcon()) { + mackie_sysex_hdr_qcon[4] = bytes[4]; + } else { + mackie_sysex_hdr[4] = bytes[4]; + } + } else { - mackie_sysex_hdr_xt[4] = bytes[4]; + if (_mcp.device_info().is_qcon()) { + mackie_sysex_hdr_xt_qcon[4] = bytes[4]; + } else { + mackie_sysex_hdr_xt[4] = bytes[4]; + } } switch (bytes[5]) { |