// 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)
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;
*/
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]) {