summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohn Anderson <ardour@semiosix.com>2007-07-17 06:30:26 +0000
committerJohn Anderson <ardour@semiosix.com>2007-07-17 06:30:26 +0000
commita1a859b1e8a4624da280cdf1715db117e0be74fc (patch)
tree07fb5f4a7094057987746c1680cbe648bcd5982e
parentc0529df1a354d51911921b15acdb771707c44287 (diff)
fix for overlapping control ids (jog wheel with F7 and external with left)
git-svn-id: svn://localhost/ardour2/branches/2.0-ongoing@2136 d708f5d6-7413-0410-9779-e7cbd77b26cf
-rw-r--r--libs/surfaces/mackie/bcf_surface.cc134
-rw-r--r--libs/surfaces/mackie/controls.h17
-rw-r--r--libs/surfaces/mackie/mackie_midi_builder.cc6
-rw-r--r--libs/surfaces/mackie/mackie_midi_builder.h7
-rw-r--r--libs/surfaces/mackie/mackie_surface.cc128
-rw-r--r--libs/surfaces/mackie/scripts/controls.rb1
-rw-r--r--libs/surfaces/mackie/scripts/surface-cc-template.erb2
-rw-r--r--libs/surfaces/mackie/surface.cc6
-rw-r--r--libs/surfaces/mackie/surface.h2
9 files changed, 161 insertions, 142 deletions
diff --git a/libs/surfaces/mackie/bcf_surface.cc b/libs/surfaces/mackie/bcf_surface.cc
index 45b5ad85fa..b84226c7f5 100644
--- a/libs/surfaces/mackie/bcf_surface.cc
+++ b/libs/surfaces/mackie/bcf_surface.cc
@@ -7,6 +7,11 @@
#include "controls.h"
#include "mackie_button_handler.h"
+#ifdef DEBUG
+#include <iostream>
+using namespace std;
+#endif
+
using namespace Mackie;
void Mackie::BcfSurface::init_controls()
@@ -931,10 +936,13 @@ void Mackie::BcfSurface::handle_button( MackieButtonHandler & mbh, ButtonState b
}
LedState ls;
+#ifdef DEBUG
+ cout << button << " switching on " << hex << button.id() << endl;
+#endif
switch ( button.id() )
{
- case 0x28: // io
+ case 0x9028: // io
switch ( bs ) {
case press: ls = mbh.io_press( button ); break;
case release: ls = mbh.io_release( button ); break;
@@ -942,7 +950,7 @@ void Mackie::BcfSurface::handle_button( MackieButtonHandler & mbh, ButtonState b
}
break;
- case 0x5a: // sends
+ case 0x905a: // sends
switch ( bs ) {
case press: ls = mbh.sends_press( button ); break;
case release: ls = mbh.sends_release( button ); break;
@@ -950,7 +958,7 @@ void Mackie::BcfSurface::handle_button( MackieButtonHandler & mbh, ButtonState b
}
break;
- case 0x59: // pan
+ case 0x9059: // pan
switch ( bs ) {
case press: ls = mbh.pan_press( button ); break;
case release: ls = mbh.pan_release( button ); break;
@@ -958,7 +966,7 @@ void Mackie::BcfSurface::handle_button( MackieButtonHandler & mbh, ButtonState b
}
break;
- case 0x57: // plugin
+ case 0x9057: // plugin
switch ( bs ) {
case press: ls = mbh.plugin_press( button ); break;
case release: ls = mbh.plugin_release( button ); break;
@@ -966,7 +974,7 @@ void Mackie::BcfSurface::handle_button( MackieButtonHandler & mbh, ButtonState b
}
break;
- case 0x58: // eq
+ case 0x9058: // eq
switch ( bs ) {
case press: ls = mbh.eq_press( button ); break;
case release: ls = mbh.eq_release( button ); break;
@@ -974,7 +982,7 @@ void Mackie::BcfSurface::handle_button( MackieButtonHandler & mbh, ButtonState b
}
break;
- case 0x2d: // dyn
+ case 0x902d: // dyn
switch ( bs ) {
case press: ls = mbh.dyn_press( button ); break;
case release: ls = mbh.dyn_release( button ); break;
@@ -982,7 +990,7 @@ void Mackie::BcfSurface::handle_button( MackieButtonHandler & mbh, ButtonState b
}
break;
- case 0x2e: // left
+ case 0x902e: // left
switch ( bs ) {
case press: ls = mbh.left_press( button ); break;
case release: ls = mbh.left_release( button ); break;
@@ -990,7 +998,7 @@ void Mackie::BcfSurface::handle_button( MackieButtonHandler & mbh, ButtonState b
}
break;
- case 0x2f: // right
+ case 0x902f: // right
switch ( bs ) {
case press: ls = mbh.right_press( button ); break;
case release: ls = mbh.right_release( button ); break;
@@ -998,7 +1006,7 @@ void Mackie::BcfSurface::handle_button( MackieButtonHandler & mbh, ButtonState b
}
break;
- case 0x30: // channel_left
+ case 0x9030: // channel_left
switch ( bs ) {
case press: ls = mbh.channel_left_press( button ); break;
case release: ls = mbh.channel_left_release( button ); break;
@@ -1006,7 +1014,7 @@ void Mackie::BcfSurface::handle_button( MackieButtonHandler & mbh, ButtonState b
}
break;
- case 0x31: // channel_right
+ case 0x9031: // channel_right
switch ( bs ) {
case press: ls = mbh.channel_right_press( button ); break;
case release: ls = mbh.channel_right_release( button ); break;
@@ -1014,7 +1022,7 @@ void Mackie::BcfSurface::handle_button( MackieButtonHandler & mbh, ButtonState b
}
break;
- case 0x32: // flip
+ case 0x9032: // flip
switch ( bs ) {
case press: ls = mbh.flip_press( button ); break;
case release: ls = mbh.flip_release( button ); break;
@@ -1022,7 +1030,7 @@ void Mackie::BcfSurface::handle_button( MackieButtonHandler & mbh, ButtonState b
}
break;
- case 0x56: // edit
+ case 0x9056: // edit
switch ( bs ) {
case press: ls = mbh.edit_press( button ); break;
case release: ls = mbh.edit_release( button ); break;
@@ -1030,7 +1038,7 @@ void Mackie::BcfSurface::handle_button( MackieButtonHandler & mbh, ButtonState b
}
break;
- case 0x34: // name_value
+ case 0x9034: // name_value
switch ( bs ) {
case press: ls = mbh.name_value_press( button ); break;
case release: ls = mbh.name_value_release( button ); break;
@@ -1038,7 +1046,7 @@ void Mackie::BcfSurface::handle_button( MackieButtonHandler & mbh, ButtonState b
}
break;
- case 0x35: // smpte_beats
+ case 0x9035: // smpte_beats
switch ( bs ) {
case press: ls = mbh.smpte_beats_press( button ); break;
case release: ls = mbh.smpte_beats_release( button ); break;
@@ -1046,7 +1054,7 @@ void Mackie::BcfSurface::handle_button( MackieButtonHandler & mbh, ButtonState b
}
break;
- case 0x36: // F1
+ case 0x9036: // F1
switch ( bs ) {
case press: ls = mbh.F1_press( button ); break;
case release: ls = mbh.F1_release( button ); break;
@@ -1054,7 +1062,7 @@ void Mackie::BcfSurface::handle_button( MackieButtonHandler & mbh, ButtonState b
}
break;
- case 0x37: // F2
+ case 0x9037: // F2
switch ( bs ) {
case press: ls = mbh.F2_press( button ); break;
case release: ls = mbh.F2_release( button ); break;
@@ -1062,7 +1070,7 @@ void Mackie::BcfSurface::handle_button( MackieButtonHandler & mbh, ButtonState b
}
break;
- case 0x38: // F3
+ case 0x9038: // F3
switch ( bs ) {
case press: ls = mbh.F3_press( button ); break;
case release: ls = mbh.F3_release( button ); break;
@@ -1070,7 +1078,7 @@ void Mackie::BcfSurface::handle_button( MackieButtonHandler & mbh, ButtonState b
}
break;
- case 0x39: // F4
+ case 0x9039: // F4
switch ( bs ) {
case press: ls = mbh.F4_press( button ); break;
case release: ls = mbh.F4_release( button ); break;
@@ -1078,7 +1086,7 @@ void Mackie::BcfSurface::handle_button( MackieButtonHandler & mbh, ButtonState b
}
break;
- case 0x3a: // F5
+ case 0x903a: // F5
switch ( bs ) {
case press: ls = mbh.F5_press( button ); break;
case release: ls = mbh.F5_release( button ); break;
@@ -1086,7 +1094,7 @@ void Mackie::BcfSurface::handle_button( MackieButtonHandler & mbh, ButtonState b
}
break;
- case 0x3b: // F6
+ case 0x903b: // F6
switch ( bs ) {
case press: ls = mbh.F6_press( button ); break;
case release: ls = mbh.F6_release( button ); break;
@@ -1094,7 +1102,7 @@ void Mackie::BcfSurface::handle_button( MackieButtonHandler & mbh, ButtonState b
}
break;
- case 0x3c: // F7
+ case 0x903c: // F7
switch ( bs ) {
case press: ls = mbh.F7_press( button ); break;
case release: ls = mbh.F7_release( button ); break;
@@ -1102,7 +1110,7 @@ void Mackie::BcfSurface::handle_button( MackieButtonHandler & mbh, ButtonState b
}
break;
- case 0x3d: // F8
+ case 0x903d: // F8
switch ( bs ) {
case press: ls = mbh.F8_press( button ); break;
case release: ls = mbh.F8_release( button ); break;
@@ -1110,7 +1118,7 @@ void Mackie::BcfSurface::handle_button( MackieButtonHandler & mbh, ButtonState b
}
break;
- case 0x3e: // F9
+ case 0x903e: // F9
switch ( bs ) {
case press: ls = mbh.F9_press( button ); break;
case release: ls = mbh.F9_release( button ); break;
@@ -1118,7 +1126,7 @@ void Mackie::BcfSurface::handle_button( MackieButtonHandler & mbh, ButtonState b
}
break;
- case 0x3f: // F10
+ case 0x903f: // F10
switch ( bs ) {
case press: ls = mbh.F10_press( button ); break;
case release: ls = mbh.F10_release( button ); break;
@@ -1126,7 +1134,7 @@ void Mackie::BcfSurface::handle_button( MackieButtonHandler & mbh, ButtonState b
}
break;
- case 0x40: // F11
+ case 0x9040: // F11
switch ( bs ) {
case press: ls = mbh.F11_press( button ); break;
case release: ls = mbh.F11_release( button ); break;
@@ -1134,7 +1142,7 @@ void Mackie::BcfSurface::handle_button( MackieButtonHandler & mbh, ButtonState b
}
break;
- case 0x41: // F12
+ case 0x9041: // F12
switch ( bs ) {
case press: ls = mbh.F12_press( button ); break;
case release: ls = mbh.F12_release( button ); break;
@@ -1142,7 +1150,7 @@ void Mackie::BcfSurface::handle_button( MackieButtonHandler & mbh, ButtonState b
}
break;
- case 0x42: // F13
+ case 0x9042: // F13
switch ( bs ) {
case press: ls = mbh.F13_press( button ); break;
case release: ls = mbh.F13_release( button ); break;
@@ -1150,7 +1158,7 @@ void Mackie::BcfSurface::handle_button( MackieButtonHandler & mbh, ButtonState b
}
break;
- case 0x43: // F14
+ case 0x9043: // F14
switch ( bs ) {
case press: ls = mbh.F14_press( button ); break;
case release: ls = mbh.F14_release( button ); break;
@@ -1158,7 +1166,7 @@ void Mackie::BcfSurface::handle_button( MackieButtonHandler & mbh, ButtonState b
}
break;
- case 0x44: // F15
+ case 0x9044: // F15
switch ( bs ) {
case press: ls = mbh.F15_press( button ); break;
case release: ls = mbh.F15_release( button ); break;
@@ -1166,7 +1174,7 @@ void Mackie::BcfSurface::handle_button( MackieButtonHandler & mbh, ButtonState b
}
break;
- case 0x45: // F16
+ case 0x9045: // F16
switch ( bs ) {
case press: ls = mbh.F16_press( button ); break;
case release: ls = mbh.F16_release( button ); break;
@@ -1174,7 +1182,7 @@ void Mackie::BcfSurface::handle_button( MackieButtonHandler & mbh, ButtonState b
}
break;
- case 0x27: // global_solo
+ case 0x9027: // global_solo
switch ( bs ) {
case press: ls = mbh.global_solo_press( button ); break;
case release: ls = mbh.global_solo_release( button ); break;
@@ -1182,7 +1190,7 @@ void Mackie::BcfSurface::handle_button( MackieButtonHandler & mbh, ButtonState b
}
break;
- case 0x50: // option
+ case 0x9050: // option
switch ( bs ) {
case press: ls = mbh.option_press( button ); break;
case release: ls = mbh.option_release( button ); break;
@@ -1190,7 +1198,7 @@ void Mackie::BcfSurface::handle_button( MackieButtonHandler & mbh, ButtonState b
}
break;
- case 0x49: // cmd_alt
+ case 0x9049: // cmd_alt
switch ( bs ) {
case press: ls = mbh.cmd_alt_press( button ); break;
case release: ls = mbh.cmd_alt_release( button ); break;
@@ -1198,7 +1206,7 @@ void Mackie::BcfSurface::handle_button( MackieButtonHandler & mbh, ButtonState b
}
break;
- case 0x4a: // on
+ case 0x904a: // on
switch ( bs ) {
case press: ls = mbh.on_press( button ); break;
case release: ls = mbh.on_release( button ); break;
@@ -1206,7 +1214,7 @@ void Mackie::BcfSurface::handle_button( MackieButtonHandler & mbh, ButtonState b
}
break;
- case 0x4b: // rec_ready
+ case 0x904b: // rec_ready
switch ( bs ) {
case press: ls = mbh.rec_ready_press( button ); break;
case release: ls = mbh.rec_ready_release( button ); break;
@@ -1214,7 +1222,7 @@ void Mackie::BcfSurface::handle_button( MackieButtonHandler & mbh, ButtonState b
}
break;
- case 0x4c: // undo
+ case 0x904c: // undo
switch ( bs ) {
case press: ls = mbh.undo_press( button ); break;
case release: ls = mbh.undo_release( button ); break;
@@ -1222,7 +1230,7 @@ void Mackie::BcfSurface::handle_button( MackieButtonHandler & mbh, ButtonState b
}
break;
- case 0x4d: // snapshot
+ case 0x904d: // snapshot
switch ( bs ) {
case press: ls = mbh.snapshot_press( button ); break;
case release: ls = mbh.snapshot_release( button ); break;
@@ -1230,7 +1238,7 @@ void Mackie::BcfSurface::handle_button( MackieButtonHandler & mbh, ButtonState b
}
break;
- case 0x4f: // redo
+ case 0x904f: // redo
switch ( bs ) {
case press: ls = mbh.redo_press( button ); break;
case release: ls = mbh.redo_release( button ); break;
@@ -1238,7 +1246,7 @@ void Mackie::BcfSurface::handle_button( MackieButtonHandler & mbh, ButtonState b
}
break;
- case 0x47: // marker
+ case 0x9047: // marker
switch ( bs ) {
case press: ls = mbh.marker_press( button ); break;
case release: ls = mbh.marker_release( button ); break;
@@ -1246,7 +1254,7 @@ void Mackie::BcfSurface::handle_button( MackieButtonHandler & mbh, ButtonState b
}
break;
- case 0x51: // enter
+ case 0x9051: // enter
switch ( bs ) {
case press: ls = mbh.enter_press( button ); break;
case release: ls = mbh.enter_release( button ); break;
@@ -1254,7 +1262,7 @@ void Mackie::BcfSurface::handle_button( MackieButtonHandler & mbh, ButtonState b
}
break;
- case 0x52: // cancel
+ case 0x9052: // cancel
switch ( bs ) {
case press: ls = mbh.cancel_press( button ); break;
case release: ls = mbh.cancel_release( button ); break;
@@ -1262,7 +1270,7 @@ void Mackie::BcfSurface::handle_button( MackieButtonHandler & mbh, ButtonState b
}
break;
- case 0x53: // mixer
+ case 0x9053: // mixer
switch ( bs ) {
case press: ls = mbh.mixer_press( button ); break;
case release: ls = mbh.mixer_release( button ); break;
@@ -1270,7 +1278,7 @@ void Mackie::BcfSurface::handle_button( MackieButtonHandler & mbh, ButtonState b
}
break;
- case 0x5b: // frm_left
+ case 0x905b: // frm_left
switch ( bs ) {
case press: ls = mbh.frm_left_press( button ); break;
case release: ls = mbh.frm_left_release( button ); break;
@@ -1278,7 +1286,7 @@ void Mackie::BcfSurface::handle_button( MackieButtonHandler & mbh, ButtonState b
}
break;
- case 0x5c: // frm_right
+ case 0x905c: // frm_right
switch ( bs ) {
case press: ls = mbh.frm_right_press( button ); break;
case release: ls = mbh.frm_right_release( button ); break;
@@ -1286,7 +1294,7 @@ void Mackie::BcfSurface::handle_button( MackieButtonHandler & mbh, ButtonState b
}
break;
- case 0x46: // loop
+ case 0x9046: // loop
switch ( bs ) {
case press: ls = mbh.loop_press( button ); break;
case release: ls = mbh.loop_release( button ); break;
@@ -1294,7 +1302,7 @@ void Mackie::BcfSurface::handle_button( MackieButtonHandler & mbh, ButtonState b
}
break;
- case 0x48: // punch_in
+ case 0x9048: // punch_in
switch ( bs ) {
case press: ls = mbh.punch_in_press( button ); break;
case release: ls = mbh.punch_in_release( button ); break;
@@ -1302,7 +1310,7 @@ void Mackie::BcfSurface::handle_button( MackieButtonHandler & mbh, ButtonState b
}
break;
- case 0x4e: // punch_out
+ case 0x904e: // punch_out
switch ( bs ) {
case press: ls = mbh.punch_out_press( button ); break;
case release: ls = mbh.punch_out_release( button ); break;
@@ -1310,7 +1318,7 @@ void Mackie::BcfSurface::handle_button( MackieButtonHandler & mbh, ButtonState b
}
break;
- case 0x2a: // home
+ case 0x902a: // home
switch ( bs ) {
case press: ls = mbh.home_press( button ); break;
case release: ls = mbh.home_release( button ); break;
@@ -1318,7 +1326,7 @@ void Mackie::BcfSurface::handle_button( MackieButtonHandler & mbh, ButtonState b
}
break;
- case 0x29: // end
+ case 0x9029: // end
switch ( bs ) {
case press: ls = mbh.end_press( button ); break;
case release: ls = mbh.end_release( button ); break;
@@ -1326,7 +1334,7 @@ void Mackie::BcfSurface::handle_button( MackieButtonHandler & mbh, ButtonState b
}
break;
- case 0x2c: // rewind
+ case 0x902c: // rewind
switch ( bs ) {
case press: ls = mbh.rewind_press( button ); break;
case release: ls = mbh.rewind_release( button ); break;
@@ -1334,7 +1342,7 @@ void Mackie::BcfSurface::handle_button( MackieButtonHandler & mbh, ButtonState b
}
break;
- case 0x2b: // ffwd
+ case 0x902b: // ffwd
switch ( bs ) {
case press: ls = mbh.ffwd_press( button ); break;
case release: ls = mbh.ffwd_release( button ); break;
@@ -1342,7 +1350,7 @@ void Mackie::BcfSurface::handle_button( MackieButtonHandler & mbh, ButtonState b
}
break;
- case 0x5d: // stop
+ case 0x905d: // stop
switch ( bs ) {
case press: ls = mbh.stop_press( button ); break;
case release: ls = mbh.stop_release( button ); break;
@@ -1350,7 +1358,7 @@ void Mackie::BcfSurface::handle_button( MackieButtonHandler & mbh, ButtonState b
}
break;
- case 0x5e: // play
+ case 0x905e: // play
switch ( bs ) {
case press: ls = mbh.play_press( button ); break;
case release: ls = mbh.play_release( button ); break;
@@ -1358,7 +1366,7 @@ void Mackie::BcfSurface::handle_button( MackieButtonHandler & mbh, ButtonState b
}
break;
- case 0x1f: // record
+ case 0x901f: // record
switch ( bs ) {
case press: ls = mbh.record_press( button ); break;
case release: ls = mbh.record_release( button ); break;
@@ -1366,7 +1374,7 @@ void Mackie::BcfSurface::handle_button( MackieButtonHandler & mbh, ButtonState b
}
break;
- case 0x60: // cursor_up
+ case 0x9060: // cursor_up
switch ( bs ) {
case press: ls = mbh.cursor_up_press( button ); break;
case release: ls = mbh.cursor_up_release( button ); break;
@@ -1374,7 +1382,7 @@ void Mackie::BcfSurface::handle_button( MackieButtonHandler & mbh, ButtonState b
}
break;
- case 0x61: // cursor_down
+ case 0x9061: // cursor_down
switch ( bs ) {
case press: ls = mbh.cursor_down_press( button ); break;
case release: ls = mbh.cursor_down_release( button ); break;
@@ -1382,7 +1390,7 @@ void Mackie::BcfSurface::handle_button( MackieButtonHandler & mbh, ButtonState b
}
break;
- case 0x62: // cursor_left
+ case 0x9062: // cursor_left
switch ( bs ) {
case press: ls = mbh.cursor_left_press( button ); break;
case release: ls = mbh.cursor_left_release( button ); break;
@@ -1390,7 +1398,7 @@ void Mackie::BcfSurface::handle_button( MackieButtonHandler & mbh, ButtonState b
}
break;
- case 0x63: // cursor_right
+ case 0x9063: // cursor_right
switch ( bs ) {
case press: ls = mbh.cursor_right_press( button ); break;
case release: ls = mbh.cursor_right_release( button ); break;
@@ -1398,7 +1406,7 @@ void Mackie::BcfSurface::handle_button( MackieButtonHandler & mbh, ButtonState b
}
break;
- case 0x64: // zoom
+ case 0x9064: // zoom
switch ( bs ) {
case press: ls = mbh.zoom_press( button ); break;
case release: ls = mbh.zoom_release( button ); break;
@@ -1406,7 +1414,7 @@ void Mackie::BcfSurface::handle_button( MackieButtonHandler & mbh, ButtonState b
}
break;
- case 0x65: // scrub
+ case 0x9065: // scrub
switch ( bs ) {
case press: ls = mbh.scrub_press( button ); break;
case release: ls = mbh.scrub_release( button ); break;
@@ -1414,7 +1422,7 @@ void Mackie::BcfSurface::handle_button( MackieButtonHandler & mbh, ButtonState b
}
break;
- case 0x66: // user_a
+ case 0x9066: // user_a
switch ( bs ) {
case press: ls = mbh.user_a_press( button ); break;
case release: ls = mbh.user_a_release( button ); break;
@@ -1422,7 +1430,7 @@ void Mackie::BcfSurface::handle_button( MackieButtonHandler & mbh, ButtonState b
}
break;
- case 0x67: // user_b
+ case 0x9067: // user_b
switch ( bs ) {
case press: ls = mbh.user_b_press( button ); break;
case release: ls = mbh.user_b_release( button ); break;
@@ -1430,7 +1438,7 @@ void Mackie::BcfSurface::handle_button( MackieButtonHandler & mbh, ButtonState b
}
break;
- case 0x33: // clicking
+ case 0x9033: // clicking
switch ( bs ) {
case press: ls = mbh.clicking_press( button ); break;
case release: ls = mbh.clicking_release( button ); break;
diff --git a/libs/surfaces/mackie/controls.h b/libs/surfaces/mackie/controls.h
index 1092c40453..129fe070c6 100644
--- a/libs/surfaces/mackie/controls.h
+++ b/libs/surfaces/mackie/controls.h
@@ -151,7 +151,7 @@ class Led;
class Control
{
public:
- enum type_t { type_fader, type_button, type_pot, type_led, type_led_ring };
+ enum type_t { type_led, type_led_ring, type_fader = 0xe0, type_button = 0x90, type_pot = 0xb0 };
Control( int id, int ordinal, std::string name, Group & group )
: _id( id ), _ordinal( ordinal ), _name( name ), _group( group )
@@ -165,17 +165,20 @@ public:
throw MackieControlException( "no led available" );
}
- /// The midi id of the control
+ /// type() << 8 + midi id of the control. This
+ /// provides a unique id of any control on the surface.
int id() const
{
- return _id;
+ return ( type() << 8 ) + _id;
}
+ /// the value of the second bytes of the message. It's
+ /// the id of the control, but only guaranteed to be
+ /// unique within the control type.
+ int raw_id() const { return _id; }
+
/// The 1-based number of the control
- int ordinal() const
- {
- return _ordinal;
- }
+ int ordinal() const { return _ordinal; }
const std::string & name() const
{
diff --git a/libs/surfaces/mackie/mackie_midi_builder.cc b/libs/surfaces/mackie/mackie_midi_builder.cc
index 8ed98a5720..8ca4c2e3ed 100644
--- a/libs/surfaces/mackie/mackie_midi_builder.cc
+++ b/libs/surfaces/mackie/mackie_midi_builder.cc
@@ -58,7 +58,7 @@ MidiByteArray MackieMidiBuilder::build_led_ring( const LedRing & led_ring, const
// the control type
, midi_pot_id
// the id
- , 0x20 + led_ring.id()
+ , 0x20 + led_ring.raw_id()
// the value
, calculate_pot_value( midi_pot_mode_dot, state )
);
@@ -82,7 +82,7 @@ MidiByteArray MackieMidiBuilder::build_led( const Led & led, LedState ls )
return MidiByteArray ( 3
, midi_button_id
- , led.id()
+ , led.raw_id()
, state
);
}
@@ -92,7 +92,7 @@ MidiByteArray MackieMidiBuilder::build_fader( const Fader & fader, float pos )
int posi = int( 0x3fff * pos );
return MidiByteArray ( 3
- , midi_fader_id | fader.id()
+ , midi_fader_id | fader.raw_id()
// lower-order bits
, posi & 0x7f
// higher-order bits
diff --git a/libs/surfaces/mackie/mackie_midi_builder.h b/libs/surfaces/mackie/mackie_midi_builder.h
index f0c3d51a54..4f8e2c1140 100644
--- a/libs/surfaces/mackie/mackie_midi_builder.h
+++ b/libs/surfaces/mackie/mackie_midi_builder.h
@@ -20,6 +20,7 @@
#include "midi_byte_array.h"
#include "types.h"
+#include "controls.h"
namespace Mackie
{
@@ -37,9 +38,9 @@ public:
with the control id
*/
enum midi_types {
- midi_fader_id = 0xe0
- , midi_button_id = 0x90
- , midi_pot_id = 0xb0
+ midi_fader_id = Control::type_fader
+ , midi_button_id = Control::type_button
+ , midi_pot_id = Control::type_pot
};
/**
diff --git a/libs/surfaces/mackie/mackie_surface.cc b/libs/surfaces/mackie/mackie_surface.cc
index b527f710cc..8d10814b55 100644
--- a/libs/surfaces/mackie/mackie_surface.cc
+++ b/libs/surfaces/mackie/mackie_surface.cc
@@ -987,7 +987,7 @@ void Mackie::MackieSurface::handle_button( MackieButtonHandler & mbh, ButtonStat
switch ( button.id() )
{
- case 0x28: // io
+ case 0x9028: // io
switch ( bs ) {
case press: ls = mbh.io_press( button ); break;
case release: ls = mbh.io_release( button ); break;
@@ -995,7 +995,7 @@ void Mackie::MackieSurface::handle_button( MackieButtonHandler & mbh, ButtonStat
}
break;
- case 0x29: // sends
+ case 0x9029: // sends
switch ( bs ) {
case press: ls = mbh.sends_press( button ); break;
case release: ls = mbh.sends_release( button ); break;
@@ -1003,7 +1003,7 @@ void Mackie::MackieSurface::handle_button( MackieButtonHandler & mbh, ButtonStat
}
break;
- case 0x2a: // pan
+ case 0x902a: // pan
switch ( bs ) {
case press: ls = mbh.pan_press( button ); break;
case release: ls = mbh.pan_release( button ); break;
@@ -1011,7 +1011,7 @@ void Mackie::MackieSurface::handle_button( MackieButtonHandler & mbh, ButtonStat
}
break;
- case 0x2b: // plugin
+ case 0x902b: // plugin
switch ( bs ) {
case press: ls = mbh.plugin_press( button ); break;
case release: ls = mbh.plugin_release( button ); break;
@@ -1019,7 +1019,7 @@ void Mackie::MackieSurface::handle_button( MackieButtonHandler & mbh, ButtonStat
}
break;
- case 0x2c: // eq
+ case 0x902c: // eq
switch ( bs ) {
case press: ls = mbh.eq_press( button ); break;
case release: ls = mbh.eq_release( button ); break;
@@ -1027,7 +1027,7 @@ void Mackie::MackieSurface::handle_button( MackieButtonHandler & mbh, ButtonStat
}
break;
- case 0x2d: // dyn
+ case 0x902d: // dyn
switch ( bs ) {
case press: ls = mbh.dyn_press( button ); break;
case release: ls = mbh.dyn_release( button ); break;
@@ -1035,7 +1035,7 @@ void Mackie::MackieSurface::handle_button( MackieButtonHandler & mbh, ButtonStat
}
break;
- case 0x2e: // left
+ case 0x902e: // left
switch ( bs ) {
case press: ls = mbh.left_press( button ); break;
case release: ls = mbh.left_release( button ); break;
@@ -1043,7 +1043,7 @@ void Mackie::MackieSurface::handle_button( MackieButtonHandler & mbh, ButtonStat
}
break;
- case 0x2f: // right
+ case 0x902f: // right
switch ( bs ) {
case press: ls = mbh.right_press( button ); break;
case release: ls = mbh.right_release( button ); break;
@@ -1051,7 +1051,7 @@ void Mackie::MackieSurface::handle_button( MackieButtonHandler & mbh, ButtonStat
}
break;
- case 0x30: // channel_left
+ case 0x9030: // channel_left
switch ( bs ) {
case press: ls = mbh.channel_left_press( button ); break;
case release: ls = mbh.channel_left_release( button ); break;
@@ -1059,7 +1059,7 @@ void Mackie::MackieSurface::handle_button( MackieButtonHandler & mbh, ButtonStat
}
break;
- case 0x31: // channel_right
+ case 0x9031: // channel_right
switch ( bs ) {
case press: ls = mbh.channel_right_press( button ); break;
case release: ls = mbh.channel_right_release( button ); break;
@@ -1067,7 +1067,7 @@ void Mackie::MackieSurface::handle_button( MackieButtonHandler & mbh, ButtonStat
}
break;
- case 0x32: // flip
+ case 0x9032: // flip
switch ( bs ) {
case press: ls = mbh.flip_press( button ); break;
case release: ls = mbh.flip_release( button ); break;
@@ -1075,7 +1075,7 @@ void Mackie::MackieSurface::handle_button( MackieButtonHandler & mbh, ButtonStat
}
break;
- case 0x33: // edit
+ case 0x9033: // edit
switch ( bs ) {
case press: ls = mbh.edit_press( button ); break;
case release: ls = mbh.edit_release( button ); break;
@@ -1083,7 +1083,7 @@ void Mackie::MackieSurface::handle_button( MackieButtonHandler & mbh, ButtonStat
}
break;
- case 0x34: // name_value
+ case 0x9034: // name_value
switch ( bs ) {
case press: ls = mbh.name_value_press( button ); break;
case release: ls = mbh.name_value_release( button ); break;
@@ -1091,7 +1091,7 @@ void Mackie::MackieSurface::handle_button( MackieButtonHandler & mbh, ButtonStat
}
break;
- case 0x35: // smpte_beats
+ case 0x9035: // smpte_beats
switch ( bs ) {
case press: ls = mbh.smpte_beats_press( button ); break;
case release: ls = mbh.smpte_beats_release( button ); break;
@@ -1099,7 +1099,7 @@ void Mackie::MackieSurface::handle_button( MackieButtonHandler & mbh, ButtonStat
}
break;
- case 0x36: // F1
+ case 0x9036: // F1
switch ( bs ) {
case press: ls = mbh.F1_press( button ); break;
case release: ls = mbh.F1_release( button ); break;
@@ -1107,7 +1107,7 @@ void Mackie::MackieSurface::handle_button( MackieButtonHandler & mbh, ButtonStat
}
break;
- case 0x37: // F2
+ case 0x9037: // F2
switch ( bs ) {
case press: ls = mbh.F2_press( button ); break;
case release: ls = mbh.F2_release( button ); break;
@@ -1115,7 +1115,7 @@ void Mackie::MackieSurface::handle_button( MackieButtonHandler & mbh, ButtonStat
}
break;
- case 0x38: // F3
+ case 0x9038: // F3
switch ( bs ) {
case press: ls = mbh.F3_press( button ); break;
case release: ls = mbh.F3_release( button ); break;
@@ -1123,7 +1123,7 @@ void Mackie::MackieSurface::handle_button( MackieButtonHandler & mbh, ButtonStat
}
break;
- case 0x39: // F4
+ case 0x9039: // F4
switch ( bs ) {
case press: ls = mbh.F4_press( button ); break;
case release: ls = mbh.F4_release( button ); break;
@@ -1131,7 +1131,7 @@ void Mackie::MackieSurface::handle_button( MackieButtonHandler & mbh, ButtonStat
}
break;
- case 0x3a: // F5
+ case 0x903a: // F5
switch ( bs ) {
case press: ls = mbh.F5_press( button ); break;
case release: ls = mbh.F5_release( button ); break;
@@ -1139,7 +1139,7 @@ void Mackie::MackieSurface::handle_button( MackieButtonHandler & mbh, ButtonStat
}
break;
- case 0x3b: // F6
+ case 0x903b: // F6
switch ( bs ) {
case press: ls = mbh.F6_press( button ); break;
case release: ls = mbh.F6_release( button ); break;
@@ -1147,7 +1147,7 @@ void Mackie::MackieSurface::handle_button( MackieButtonHandler & mbh, ButtonStat
}
break;
- case 0x3c: // F7
+ case 0x903c: // F7
switch ( bs ) {
case press: ls = mbh.F7_press( button ); break;
case release: ls = mbh.F7_release( button ); break;
@@ -1155,7 +1155,7 @@ void Mackie::MackieSurface::handle_button( MackieButtonHandler & mbh, ButtonStat
}
break;
- case 0x3d: // F8
+ case 0x903d: // F8
switch ( bs ) {
case press: ls = mbh.F8_press( button ); break;
case release: ls = mbh.F8_release( button ); break;
@@ -1163,7 +1163,7 @@ void Mackie::MackieSurface::handle_button( MackieButtonHandler & mbh, ButtonStat
}
break;
- case 0x3e: // F9
+ case 0x903e: // F9
switch ( bs ) {
case press: ls = mbh.F9_press( button ); break;
case release: ls = mbh.F9_release( button ); break;
@@ -1171,7 +1171,7 @@ void Mackie::MackieSurface::handle_button( MackieButtonHandler & mbh, ButtonStat
}
break;
- case 0x3f: // F10
+ case 0x903f: // F10
switch ( bs ) {
case press: ls = mbh.F10_press( button ); break;
case release: ls = mbh.F10_release( button ); break;
@@ -1179,7 +1179,7 @@ void Mackie::MackieSurface::handle_button( MackieButtonHandler & mbh, ButtonStat
}
break;
- case 0x40: // F11
+ case 0x9040: // F11
switch ( bs ) {
case press: ls = mbh.F11_press( button ); break;
case release: ls = mbh.F11_release( button ); break;
@@ -1187,7 +1187,7 @@ void Mackie::MackieSurface::handle_button( MackieButtonHandler & mbh, ButtonStat
}
break;
- case 0x41: // F12
+ case 0x9041: // F12
switch ( bs ) {
case press: ls = mbh.F12_press( button ); break;
case release: ls = mbh.F12_release( button ); break;
@@ -1195,7 +1195,7 @@ void Mackie::MackieSurface::handle_button( MackieButtonHandler & mbh, ButtonStat
}
break;
- case 0x42: // F13
+ case 0x9042: // F13
switch ( bs ) {
case press: ls = mbh.F13_press( button ); break;
case release: ls = mbh.F13_release( button ); break;
@@ -1203,7 +1203,7 @@ void Mackie::MackieSurface::handle_button( MackieButtonHandler & mbh, ButtonStat
}
break;
- case 0x43: // F14
+ case 0x9043: // F14
switch ( bs ) {
case press: ls = mbh.F14_press( button ); break;
case release: ls = mbh.F14_release( button ); break;
@@ -1211,7 +1211,7 @@ void Mackie::MackieSurface::handle_button( MackieButtonHandler & mbh, ButtonStat
}
break;
- case 0x44: // F15
+ case 0x9044: // F15
switch ( bs ) {
case press: ls = mbh.F15_press( button ); break;
case release: ls = mbh.F15_release( button ); break;
@@ -1219,7 +1219,7 @@ void Mackie::MackieSurface::handle_button( MackieButtonHandler & mbh, ButtonStat
}
break;
- case 0x45: // F16
+ case 0x9045: // F16
switch ( bs ) {
case press: ls = mbh.F16_press( button ); break;
case release: ls = mbh.F16_release( button ); break;
@@ -1227,7 +1227,7 @@ void Mackie::MackieSurface::handle_button( MackieButtonHandler & mbh, ButtonStat
}
break;
- case 0x46: // shift
+ case 0x9046: // shift
switch ( bs ) {
case press: ls = mbh.shift_press( button ); break;
case release: ls = mbh.shift_release( button ); break;
@@ -1235,7 +1235,7 @@ void Mackie::MackieSurface::handle_button( MackieButtonHandler & mbh, ButtonStat
}
break;
- case 0x47: // option
+ case 0x9047: // option
switch ( bs ) {
case press: ls = mbh.option_press( button ); break;
case release: ls = mbh.option_release( button ); break;
@@ -1243,7 +1243,7 @@ void Mackie::MackieSurface::handle_button( MackieButtonHandler & mbh, ButtonStat
}
break;
- case 0x48: // control
+ case 0x9048: // control
switch ( bs ) {
case press: ls = mbh.control_press( button ); break;
case release: ls = mbh.control_release( button ); break;
@@ -1251,7 +1251,7 @@ void Mackie::MackieSurface::handle_button( MackieButtonHandler & mbh, ButtonStat
}
break;
- case 0x49: // cmd_alt
+ case 0x9049: // cmd_alt
switch ( bs ) {
case press: ls = mbh.cmd_alt_press( button ); break;
case release: ls = mbh.cmd_alt_release( button ); break;
@@ -1259,7 +1259,7 @@ void Mackie::MackieSurface::handle_button( MackieButtonHandler & mbh, ButtonStat
}
break;
- case 0x4a: // on
+ case 0x904a: // on
switch ( bs ) {
case press: ls = mbh.on_press( button ); break;
case release: ls = mbh.on_release( button ); break;
@@ -1267,7 +1267,7 @@ void Mackie::MackieSurface::handle_button( MackieButtonHandler & mbh, ButtonStat
}
break;
- case 0x4b: // rec_ready
+ case 0x904b: // rec_ready
switch ( bs ) {
case press: ls = mbh.rec_ready_press( button ); break;
case release: ls = mbh.rec_ready_release( button ); break;
@@ -1275,7 +1275,7 @@ void Mackie::MackieSurface::handle_button( MackieButtonHandler & mbh, ButtonStat
}
break;
- case 0x4c: // undo
+ case 0x904c: // undo
switch ( bs ) {
case press: ls = mbh.undo_press( button ); break;
case release: ls = mbh.undo_release( button ); break;
@@ -1283,7 +1283,7 @@ void Mackie::MackieSurface::handle_button( MackieButtonHandler & mbh, ButtonStat
}
break;
- case 0x4d: // snapshot
+ case 0x904d: // snapshot
switch ( bs ) {
case press: ls = mbh.snapshot_press( button ); break;
case release: ls = mbh.snapshot_release( button ); break;
@@ -1291,7 +1291,7 @@ void Mackie::MackieSurface::handle_button( MackieButtonHandler & mbh, ButtonStat
}
break;
- case 0x4e: // touch
+ case 0x904e: // touch
switch ( bs ) {
case press: ls = mbh.touch_press( button ); break;
case release: ls = mbh.touch_release( button ); break;
@@ -1299,7 +1299,7 @@ void Mackie::MackieSurface::handle_button( MackieButtonHandler & mbh, ButtonStat
}
break;
- case 0x4f: // redo
+ case 0x904f: // redo
switch ( bs ) {
case press: ls = mbh.redo_press( button ); break;
case release: ls = mbh.redo_release( button ); break;
@@ -1307,7 +1307,7 @@ void Mackie::MackieSurface::handle_button( MackieButtonHandler & mbh, ButtonStat
}
break;
- case 0x50: // marker
+ case 0x9050: // marker
switch ( bs ) {
case press: ls = mbh.marker_press( button ); break;
case release: ls = mbh.marker_release( button ); break;
@@ -1315,7 +1315,7 @@ void Mackie::MackieSurface::handle_button( MackieButtonHandler & mbh, ButtonStat
}
break;
- case 0x51: // enter
+ case 0x9051: // enter
switch ( bs ) {
case press: ls = mbh.enter_press( button ); break;
case release: ls = mbh.enter_release( button ); break;
@@ -1323,7 +1323,7 @@ void Mackie::MackieSurface::handle_button( MackieButtonHandler & mbh, ButtonStat
}
break;
- case 0x52: // cancel
+ case 0x9052: // cancel
switch ( bs ) {
case press: ls = mbh.cancel_press( button ); break;
case release: ls = mbh.cancel_release( button ); break;
@@ -1331,7 +1331,7 @@ void Mackie::MackieSurface::handle_button( MackieButtonHandler & mbh, ButtonStat
}
break;
- case 0x53: // mixer
+ case 0x9053: // mixer
switch ( bs ) {
case press: ls = mbh.mixer_press( button ); break;
case release: ls = mbh.mixer_release( button ); break;
@@ -1339,7 +1339,7 @@ void Mackie::MackieSurface::handle_button( MackieButtonHandler & mbh, ButtonStat
}
break;
- case 0x54: // frm_left
+ case 0x9054: // frm_left
switch ( bs ) {
case press: ls = mbh.frm_left_press( button ); break;
case release: ls = mbh.frm_left_release( button ); break;
@@ -1347,7 +1347,7 @@ void Mackie::MackieSurface::handle_button( MackieButtonHandler & mbh, ButtonStat
}
break;
- case 0x55: // frm_right
+ case 0x9055: // frm_right
switch ( bs ) {
case press: ls = mbh.frm_right_press( button ); break;
case release: ls = mbh.frm_right_release( button ); break;
@@ -1355,7 +1355,7 @@ void Mackie::MackieSurface::handle_button( MackieButtonHandler & mbh, ButtonStat
}
break;
- case 0x56: // loop
+ case 0x9056: // loop
switch ( bs ) {
case press: ls = mbh.loop_press( button ); break;
case release: ls = mbh.loop_release( button ); break;
@@ -1363,7 +1363,7 @@ void Mackie::MackieSurface::handle_button( MackieButtonHandler & mbh, ButtonStat
}
break;
- case 0x57: // punch_in
+ case 0x9057: // punch_in
switch ( bs ) {
case press: ls = mbh.punch_in_press( button ); break;
case release: ls = mbh.punch_in_release( button ); break;
@@ -1371,7 +1371,7 @@ void Mackie::MackieSurface::handle_button( MackieButtonHandler & mbh, ButtonStat
}
break;
- case 0x58: // punch_out
+ case 0x9058: // punch_out
switch ( bs ) {
case press: ls = mbh.punch_out_press( button ); break;
case release: ls = mbh.punch_out_release( button ); break;
@@ -1379,7 +1379,7 @@ void Mackie::MackieSurface::handle_button( MackieButtonHandler & mbh, ButtonStat
}
break;
- case 0x59: // home
+ case 0x9059: // home
switch ( bs ) {
case press: ls = mbh.home_press( button ); break;
case release: ls = mbh.home_release( button ); break;
@@ -1387,7 +1387,7 @@ void Mackie::MackieSurface::handle_button( MackieButtonHandler & mbh, ButtonStat
}
break;
- case 0x5a: // end
+ case 0x905a: // end
switch ( bs ) {
case press: ls = mbh.end_press( button ); break;
case release: ls = mbh.end_release( button ); break;
@@ -1395,7 +1395,7 @@ void Mackie::MackieSurface::handle_button( MackieButtonHandler & mbh, ButtonStat
}
break;
- case 0x5b: // rewind
+ case 0x905b: // rewind
switch ( bs ) {
case press: ls = mbh.rewind_press( button ); break;
case release: ls = mbh.rewind_release( button ); break;
@@ -1403,7 +1403,7 @@ void Mackie::MackieSurface::handle_button( MackieButtonHandler & mbh, ButtonStat
}
break;
- case 0x5c: // ffwd
+ case 0x905c: // ffwd
switch ( bs ) {
case press: ls = mbh.ffwd_press( button ); break;
case release: ls = mbh.ffwd_release( button ); break;
@@ -1411,7 +1411,7 @@ void Mackie::MackieSurface::handle_button( MackieButtonHandler & mbh, ButtonStat
}
break;
- case 0x5d: // stop
+ case 0x905d: // stop
switch ( bs ) {
case press: ls = mbh.stop_press( button ); break;
case release: ls = mbh.stop_release( button ); break;
@@ -1419,7 +1419,7 @@ void Mackie::MackieSurface::handle_button( MackieButtonHandler & mbh, ButtonStat
}
break;
- case 0x5e: // play
+ case 0x905e: // play
switch ( bs ) {
case press: ls = mbh.play_press( button ); break;
case release: ls = mbh.play_release( button ); break;
@@ -1427,7 +1427,7 @@ void Mackie::MackieSurface::handle_button( MackieButtonHandler & mbh, ButtonStat
}
break;
- case 0x5f: // record
+ case 0x905f: // record
switch ( bs ) {
case press: ls = mbh.record_press( button ); break;
case release: ls = mbh.record_release( button ); break;
@@ -1435,7 +1435,7 @@ void Mackie::MackieSurface::handle_button( MackieButtonHandler & mbh, ButtonStat
}
break;
- case 0x60: // cursor_up
+ case 0x9060: // cursor_up
switch ( bs ) {
case press: ls = mbh.cursor_up_press( button ); break;
case release: ls = mbh.cursor_up_release( button ); break;
@@ -1443,7 +1443,7 @@ void Mackie::MackieSurface::handle_button( MackieButtonHandler & mbh, ButtonStat
}
break;
- case 0x61: // cursor_down
+ case 0x9061: // cursor_down
switch ( bs ) {
case press: ls = mbh.cursor_down_press( button ); break;
case release: ls = mbh.cursor_down_release( button ); break;
@@ -1451,7 +1451,7 @@ void Mackie::MackieSurface::handle_button( MackieButtonHandler & mbh, ButtonStat
}
break;
- case 0x62: // cursor_left
+ case 0x9062: // cursor_left
switch ( bs ) {
case press: ls = mbh.cursor_left_press( button ); break;
case release: ls = mbh.cursor_left_release( button ); break;
@@ -1459,7 +1459,7 @@ void Mackie::MackieSurface::handle_button( MackieButtonHandler & mbh, ButtonStat
}
break;
- case 0x63: // cursor_right
+ case 0x9063: // cursor_right
switch ( bs ) {
case press: ls = mbh.cursor_right_press( button ); break;
case release: ls = mbh.cursor_right_release( button ); break;
@@ -1467,7 +1467,7 @@ void Mackie::MackieSurface::handle_button( MackieButtonHandler & mbh, ButtonStat
}
break;
- case 0x64: // zoom
+ case 0x9064: // zoom
switch ( bs ) {
case press: ls = mbh.zoom_press( button ); break;
case release: ls = mbh.zoom_release( button ); break;
@@ -1475,7 +1475,7 @@ void Mackie::MackieSurface::handle_button( MackieButtonHandler & mbh, ButtonStat
}
break;
- case 0x65: // scrub
+ case 0x9065: // scrub
switch ( bs ) {
case press: ls = mbh.scrub_press( button ); break;
case release: ls = mbh.scrub_release( button ); break;
@@ -1483,7 +1483,7 @@ void Mackie::MackieSurface::handle_button( MackieButtonHandler & mbh, ButtonStat
}
break;
- case 0x66: // user_a
+ case 0x9066: // user_a
switch ( bs ) {
case press: ls = mbh.user_a_press( button ); break;
case release: ls = mbh.user_a_release( button ); break;
@@ -1491,7 +1491,7 @@ void Mackie::MackieSurface::handle_button( MackieButtonHandler & mbh, ButtonStat
}
break;
- case 0x67: // user_b
+ case 0x9067: // user_b
switch ( bs ) {
case press: ls = mbh.user_b_press( button ); break;
case release: ls = mbh.user_b_release( button ); break;
diff --git a/libs/surfaces/mackie/scripts/controls.rb b/libs/surfaces/mackie/scripts/controls.rb
index 1644672077..7d414cf966 100644
--- a/libs/surfaces/mackie/scripts/controls.rb
+++ b/libs/surfaces/mackie/scripts/controls.rb
@@ -191,6 +191,7 @@ class Surface
end
# add the new control to the various lookups
+ # but first print a warning if the id is duplicated
if @controls_by_id.has_key?( row.id ) && control.group.class != Strip
duplicated = @controls_by_id[row.id]
puts "duplicate id #{control.id}:#{control.name} of #{duplicated.id}:#{duplicated.name}"
diff --git a/libs/surfaces/mackie/scripts/surface-cc-template.erb b/libs/surfaces/mackie/scripts/surface-cc-template.erb
index 3b29be3249..a04d5addd7 100644
--- a/libs/surfaces/mackie/scripts/surface-cc-template.erb
+++ b/libs/surfaces/mackie/scripts/surface-cc-template.erb
@@ -82,7 +82,7 @@ void Mackie::<%= sf.name %>Surface::handle_button( MackieButtonHandler & mbh, Bu
buttons = sf.controls.find_all{|x| x.class == Button && x.group.class != Strip}
buttons.each do |button|
%>
- case 0x<%= button.id.to_hex %>: // <%= button.name %>
+ case 0x<%= ( button.class.midi_zero_byte << 8 | button.id ).to_hex %>: // <%= button.name %>
switch ( bs ) {
case press: ls = mbh.<%= button.name %>_press( button ); break;
case release: ls = mbh.<%= button.name %>_release( button ); break;
diff --git a/libs/surfaces/mackie/surface.cc b/libs/surfaces/mackie/surface.cc
index 01be2c60c2..3981e8ef80 100644
--- a/libs/surfaces/mackie/surface.cc
+++ b/libs/surfaces/mackie/surface.cc
@@ -70,7 +70,11 @@ ostream & Mackie::operator << ( ostream & os, const Mackie::Control & control )
os << " { ";
os << "name: " << control.name();
os << ", ";
- os << "id: " << "0x" << setw(2) << setfill('0') << hex << control.id() << setfill(' ');
+ os << "id: " << "0x" << setw(4) << setfill('0') << hex << control.id() << setfill(' ');
+ os << ", ";
+ os << "type: " << "0x" << setw(2) << setfill('0') << hex << control.type() << setfill(' ');
+ os << ", ";
+ os << "raw_id: " << "0x" << setw(2) << setfill('0') << hex << control.raw_id() << setfill(' ');
os << ", ";
os << "ordinal: " << dec << control.ordinal();
os << ", ";
diff --git a/libs/surfaces/mackie/surface.h b/libs/surfaces/mackie/surface.h
index 0ccde75537..9b04e5decb 100644
--- a/libs/surfaces/mackie/surface.h
+++ b/libs/surfaces/mackie/surface.h
@@ -53,6 +53,8 @@ public:
These are alternative addressing schemes
They use maps because the indices aren't always
0-based.
+
+ Indexed by raw_id not by id. @see Control for the distinction.
*/
std::map<int,Control*> faders;
std::map<int,Control*> pots;