2 Generated by scripts/generate-surface.rb
5 #include "mackie_surface.h"
8 #include "mackie_button_handler.h"
10 using namespace Mackie;
12 void Mackie::MackieSurface::init_controls()
14 // intialise groups and strips
17 // make sure there are enough strips
20 group = new Group ( "user" );
21 groups["user"] = group;
23 group = new Group ( "assignment" );
24 groups["assignment"] = group;
26 group = new Group ( "none" );
27 groups["none"] = group;
29 group = new MasterStrip ( "master", 0 );
30 groups["master"] = group;
31 strips[0] = dynamic_cast<Strip*>( group );
33 group = new Strip ( "strip_1", 0 );
34 groups["strip_1"] = group;
35 strips[0] = dynamic_cast<Strip*>( group );
37 group = new Group ( "cursor" );
38 groups["cursor"] = group;
40 group = new Strip ( "strip_2", 1 );
41 groups["strip_2"] = group;
42 strips[1] = dynamic_cast<Strip*>( group );
44 group = new Group ( "functions" );
45 groups["functions"] = group;
47 group = new Group ( "automation" );
48 groups["automation"] = group;
50 group = new Strip ( "strip_3", 2 );
51 groups["strip_3"] = group;
52 strips[2] = dynamic_cast<Strip*>( group );
54 group = new Group ( "display" );
55 groups["display"] = group;
57 group = new Strip ( "strip_4", 3 );
58 groups["strip_4"] = group;
59 strips[3] = dynamic_cast<Strip*>( group );
61 group = new Strip ( "strip_5", 4 );
62 groups["strip_5"] = group;
63 strips[4] = dynamic_cast<Strip*>( group );
65 group = new Strip ( "strip_6", 5 );
66 groups["strip_6"] = group;
67 strips[5] = dynamic_cast<Strip*>( group );
69 group = new Group ( "transport" );
70 groups["transport"] = group;
72 group = new Strip ( "strip_7", 6 );
73 groups["strip_7"] = group;
74 strips[6] = dynamic_cast<Strip*>( group );
76 group = new Group ( "modifiers" );
77 groups["modifiers"] = group;
79 group = new Group ( "bank" );
80 groups["bank"] = group;
82 group = new Strip ( "strip_8", 7 );
83 groups["strip_8"] = group;
84 strips[7] = dynamic_cast<Strip*>( group );
87 // initialise controls
93 group = groups["strip_1"];
94 fader = new Fader ( 0, 1, "gain", *group );
96 controls.push_back( fader );
99 group = groups["strip_2"];
100 fader = new Fader ( 1, 2, "gain", *group );
101 faders[0x01] = fader;
102 controls.push_back( fader );
103 group->add( *fader );
105 group = groups["strip_3"];
106 fader = new Fader ( 2, 3, "gain", *group );
107 faders[0x02] = fader;
108 controls.push_back( fader );
109 group->add( *fader );
111 group = groups["strip_4"];
112 fader = new Fader ( 3, 4, "gain", *group );
113 faders[0x03] = fader;
114 controls.push_back( fader );
115 group->add( *fader );
117 group = groups["strip_5"];
118 fader = new Fader ( 4, 5, "gain", *group );
119 faders[0x04] = fader;
120 controls.push_back( fader );
121 group->add( *fader );
123 group = groups["strip_6"];
124 fader = new Fader ( 5, 6, "gain", *group );
125 faders[0x05] = fader;
126 controls.push_back( fader );
127 group->add( *fader );
129 group = groups["strip_7"];
130 fader = new Fader ( 6, 7, "gain", *group );
131 faders[0x06] = fader;
132 controls.push_back( fader );
133 group->add( *fader );
135 group = groups["strip_8"];
136 fader = new Fader ( 7, 8, "gain", *group );
137 faders[0x07] = fader;
138 controls.push_back( fader );
139 group->add( *fader );
141 group = groups["master"];
142 fader = new Fader ( 8, 1, "gain", *group );
143 faders[0x08] = fader;
144 controls.push_back( fader );
145 group->add( *fader );
147 group = groups["strip_1"];
148 pot = new Pot ( 16, 1, "vpot", *group );
150 controls.push_back( pot );
153 group = groups["strip_2"];
154 pot = new Pot ( 17, 2, "vpot", *group );
156 controls.push_back( pot );
159 group = groups["strip_3"];
160 pot = new Pot ( 18, 3, "vpot", *group );
162 controls.push_back( pot );
165 group = groups["strip_4"];
166 pot = new Pot ( 19, 4, "vpot", *group );
168 controls.push_back( pot );
171 group = groups["strip_5"];
172 pot = new Pot ( 20, 5, "vpot", *group );
174 controls.push_back( pot );
177 group = groups["strip_6"];
178 pot = new Pot ( 21, 6, "vpot", *group );
180 controls.push_back( pot );
183 group = groups["strip_7"];
184 pot = new Pot ( 22, 7, "vpot", *group );
186 controls.push_back( pot );
189 group = groups["strip_8"];
190 pot = new Pot ( 23, 8, "vpot", *group );
192 controls.push_back( pot );
195 group = groups["none"];
196 pot = new Jog ( 60, 1, "jog", *group );
198 controls.push_back( pot );
199 controls_by_name["jog"] = pot;
202 group = groups["none"];
203 pot = new Pot ( 46, 1, "external", *group );
205 controls.push_back( pot );
206 controls_by_name["external"] = pot;
209 group = groups["strip_1"];
210 button = new Button ( 0, 1, "recenable", *group );
211 buttons[0x00] = button;
212 controls.push_back( button );
213 group->add( *button );
215 group = groups["strip_2"];
216 button = new Button ( 1, 2, "recenable", *group );
217 buttons[0x01] = button;
218 controls.push_back( button );
219 group->add( *button );
221 group = groups["strip_3"];
222 button = new Button ( 2, 3, "recenable", *group );
223 buttons[0x02] = button;
224 controls.push_back( button );
225 group->add( *button );
227 group = groups["strip_4"];
228 button = new Button ( 3, 4, "recenable", *group );
229 buttons[0x03] = button;
230 controls.push_back( button );
231 group->add( *button );
233 group = groups["strip_5"];
234 button = new Button ( 4, 5, "recenable", *group );
235 buttons[0x04] = button;
236 controls.push_back( button );
237 group->add( *button );
239 group = groups["strip_6"];
240 button = new Button ( 5, 6, "recenable", *group );
241 buttons[0x05] = button;
242 controls.push_back( button );
243 group->add( *button );
245 group = groups["strip_7"];
246 button = new Button ( 6, 7, "recenable", *group );
247 buttons[0x06] = button;
248 controls.push_back( button );
249 group->add( *button );
251 group = groups["strip_8"];
252 button = new Button ( 7, 8, "recenable", *group );
253 buttons[0x07] = button;
254 controls.push_back( button );
255 group->add( *button );
257 group = groups["strip_1"];
258 button = new Button ( 8, 1, "solo", *group );
259 buttons[0x08] = button;
260 controls.push_back( button );
261 group->add( *button );
263 group = groups["strip_2"];
264 button = new Button ( 9, 2, "solo", *group );
265 buttons[0x09] = button;
266 controls.push_back( button );
267 group->add( *button );
269 group = groups["strip_3"];
270 button = new Button ( 10, 3, "solo", *group );
271 buttons[0x0a] = button;
272 controls.push_back( button );
273 group->add( *button );
275 group = groups["strip_4"];
276 button = new Button ( 11, 4, "solo", *group );
277 buttons[0x0b] = button;
278 controls.push_back( button );
279 group->add( *button );
281 group = groups["strip_5"];
282 button = new Button ( 12, 5, "solo", *group );
283 buttons[0x0c] = button;
284 controls.push_back( button );
285 group->add( *button );
287 group = groups["strip_6"];
288 button = new Button ( 13, 6, "solo", *group );
289 buttons[0x0d] = button;
290 controls.push_back( button );
291 group->add( *button );
293 group = groups["strip_7"];
294 button = new Button ( 14, 7, "solo", *group );
295 buttons[0x0e] = button;
296 controls.push_back( button );
297 group->add( *button );
299 group = groups["strip_8"];
300 button = new Button ( 15, 8, "solo", *group );
301 buttons[0x0f] = button;
302 controls.push_back( button );
303 group->add( *button );
305 group = groups["strip_1"];
306 button = new Button ( 16, 1, "mute", *group );
307 buttons[0x10] = button;
308 controls.push_back( button );
309 group->add( *button );
311 group = groups["strip_2"];
312 button = new Button ( 17, 2, "mute", *group );
313 buttons[0x11] = button;
314 controls.push_back( button );
315 group->add( *button );
317 group = groups["strip_3"];
318 button = new Button ( 18, 3, "mute", *group );
319 buttons[0x12] = button;
320 controls.push_back( button );
321 group->add( *button );
323 group = groups["strip_4"];
324 button = new Button ( 19, 4, "mute", *group );
325 buttons[0x13] = button;
326 controls.push_back( button );
327 group->add( *button );
329 group = groups["strip_5"];
330 button = new Button ( 20, 5, "mute", *group );
331 buttons[0x14] = button;
332 controls.push_back( button );
333 group->add( *button );
335 group = groups["strip_6"];
336 button = new Button ( 21, 6, "mute", *group );
337 buttons[0x15] = button;
338 controls.push_back( button );
339 group->add( *button );
341 group = groups["strip_7"];
342 button = new Button ( 22, 7, "mute", *group );
343 buttons[0x16] = button;
344 controls.push_back( button );
345 group->add( *button );
347 group = groups["strip_8"];
348 button = new Button ( 23, 8, "mute", *group );
349 buttons[0x17] = button;
350 controls.push_back( button );
351 group->add( *button );
353 group = groups["strip_1"];
354 button = new Button ( 24, 1, "select", *group );
355 buttons[0x18] = button;
356 controls.push_back( button );
357 group->add( *button );
359 group = groups["strip_2"];
360 button = new Button ( 25, 2, "select", *group );
361 buttons[0x19] = button;
362 controls.push_back( button );
363 group->add( *button );
365 group = groups["strip_3"];
366 button = new Button ( 26, 3, "select", *group );
367 buttons[0x1a] = button;
368 controls.push_back( button );
369 group->add( *button );
371 group = groups["strip_4"];
372 button = new Button ( 27, 4, "select", *group );
373 buttons[0x1b] = button;
374 controls.push_back( button );
375 group->add( *button );
377 group = groups["strip_5"];
378 button = new Button ( 28, 5, "select", *group );
379 buttons[0x1c] = button;
380 controls.push_back( button );
381 group->add( *button );
383 group = groups["strip_6"];
384 button = new Button ( 29, 6, "select", *group );
385 buttons[0x1d] = button;
386 controls.push_back( button );
387 group->add( *button );
389 group = groups["strip_7"];
390 button = new Button ( 30, 7, "select", *group );
391 buttons[0x1e] = button;
392 controls.push_back( button );
393 group->add( *button );
395 group = groups["strip_8"];
396 button = new Button ( 31, 8, "select", *group );
397 buttons[0x1f] = button;
398 controls.push_back( button );
399 group->add( *button );
401 group = groups["strip_1"];
402 button = new Button ( 32, 1, "vselect", *group );
403 buttons[0x20] = button;
404 controls.push_back( button );
405 group->add( *button );
407 group = groups["strip_2"];
408 button = new Button ( 33, 2, "vselect", *group );
409 buttons[0x21] = button;
410 controls.push_back( button );
411 group->add( *button );
413 group = groups["strip_3"];
414 button = new Button ( 34, 3, "vselect", *group );
415 buttons[0x22] = button;
416 controls.push_back( button );
417 group->add( *button );
419 group = groups["strip_4"];
420 button = new Button ( 35, 4, "vselect", *group );
421 buttons[0x23] = button;
422 controls.push_back( button );
423 group->add( *button );
425 group = groups["strip_5"];
426 button = new Button ( 36, 5, "vselect", *group );
427 buttons[0x24] = button;
428 controls.push_back( button );
429 group->add( *button );
431 group = groups["strip_6"];
432 button = new Button ( 37, 6, "vselect", *group );
433 buttons[0x25] = button;
434 controls.push_back( button );
435 group->add( *button );
437 group = groups["strip_7"];
438 button = new Button ( 38, 7, "vselect", *group );
439 buttons[0x26] = button;
440 controls.push_back( button );
441 group->add( *button );
443 group = groups["strip_8"];
444 button = new Button ( 39, 8, "vselect", *group );
445 buttons[0x27] = button;
446 controls.push_back( button );
447 group->add( *button );
449 group = groups["assignment"];
450 button = new Button ( 40, 1, "io", *group );
451 buttons[0x28] = button;
452 controls.push_back( button );
453 controls_by_name["io"] = button;
454 group->add( *button );
456 group = groups["assignment"];
457 button = new Button ( 41, 1, "sends", *group );
458 buttons[0x29] = button;
459 controls.push_back( button );
460 controls_by_name["sends"] = button;
461 group->add( *button );
463 group = groups["assignment"];
464 button = new Button ( 42, 1, "pan", *group );
465 buttons[0x2a] = button;
466 controls.push_back( button );
467 controls_by_name["pan"] = button;
468 group->add( *button );
470 group = groups["assignment"];
471 button = new Button ( 43, 1, "plugin", *group );
472 buttons[0x2b] = button;
473 controls.push_back( button );
474 controls_by_name["plugin"] = button;
475 group->add( *button );
477 group = groups["assignment"];
478 button = new Button ( 44, 1, "eq", *group );
479 buttons[0x2c] = button;
480 controls.push_back( button );
481 controls_by_name["eq"] = button;
482 group->add( *button );
484 group = groups["assignment"];
485 button = new Button ( 45, 1, "dyn", *group );
486 buttons[0x2d] = button;
487 controls.push_back( button );
488 controls_by_name["dyn"] = button;
489 group->add( *button );
491 group = groups["bank"];
492 button = new Button ( 46, 1, "left", *group );
493 buttons[0x2e] = button;
494 controls.push_back( button );
495 controls_by_name["left"] = button;
496 group->add( *button );
498 group = groups["bank"];
499 button = new Button ( 47, 1, "right", *group );
500 buttons[0x2f] = button;
501 controls.push_back( button );
502 controls_by_name["right"] = button;
503 group->add( *button );
505 group = groups["bank"];
506 button = new Button ( 48, 1, "channel_left", *group );
507 buttons[0x30] = button;
508 controls.push_back( button );
509 controls_by_name["channel_left"] = button;
510 group->add( *button );
512 group = groups["bank"];
513 button = new Button ( 49, 1, "channel_right", *group );
514 buttons[0x31] = button;
515 controls.push_back( button );
516 controls_by_name["channel_right"] = button;
517 group->add( *button );
519 group = groups["none"];
520 button = new Button ( 50, 1, "flip", *group );
521 buttons[0x32] = button;
522 controls.push_back( button );
523 controls_by_name["flip"] = button;
524 group->add( *button );
526 group = groups["none"];
527 button = new Button ( 51, 1, "edit", *group );
528 buttons[0x33] = button;
529 controls.push_back( button );
530 controls_by_name["edit"] = button;
531 group->add( *button );
533 group = groups["display"];
534 button = new Button ( 52, 1, "name_value", *group );
535 buttons[0x34] = button;
536 controls.push_back( button );
537 controls_by_name["name_value"] = button;
538 group->add( *button );
540 group = groups["display"];
541 button = new Button ( 53, 1, "timecode_beats", *group );
542 buttons[0x35] = button;
543 controls.push_back( button );
544 controls_by_name["timecode_beats"] = button;
545 group->add( *button );
547 group = groups["none"];
548 button = new Button ( 54, 1, "F1", *group );
549 buttons[0x36] = button;
550 controls.push_back( button );
551 controls_by_name["F1"] = button;
552 group->add( *button );
554 group = groups["none"];
555 button = new Button ( 55, 1, "F2", *group );
556 buttons[0x37] = button;
557 controls.push_back( button );
558 controls_by_name["F2"] = button;
559 group->add( *button );
561 group = groups["none"];
562 button = new Button ( 56, 1, "F3", *group );
563 buttons[0x38] = button;
564 controls.push_back( button );
565 controls_by_name["F3"] = button;
566 group->add( *button );
568 group = groups["none"];
569 button = new Button ( 57, 1, "F4", *group );
570 buttons[0x39] = button;
571 controls.push_back( button );
572 controls_by_name["F4"] = button;
573 group->add( *button );
575 group = groups["none"];
576 button = new Button ( 58, 1, "F5", *group );
577 buttons[0x3a] = button;
578 controls.push_back( button );
579 controls_by_name["F5"] = button;
580 group->add( *button );
582 group = groups["none"];
583 button = new Button ( 59, 1, "F6", *group );
584 buttons[0x3b] = button;
585 controls.push_back( button );
586 controls_by_name["F6"] = button;
587 group->add( *button );
589 group = groups["none"];
590 button = new Button ( 60, 1, "F7", *group );
591 buttons[0x3c] = button;
592 controls.push_back( button );
593 controls_by_name["F7"] = button;
594 group->add( *button );
596 group = groups["none"];
597 button = new Button ( 61, 1, "F8", *group );
598 buttons[0x3d] = button;
599 controls.push_back( button );
600 controls_by_name["F8"] = button;
601 group->add( *button );
603 group = groups["none"];
604 button = new Button ( 62, 1, "F9", *group );
605 buttons[0x3e] = button;
606 controls.push_back( button );
607 controls_by_name["F9"] = button;
608 group->add( *button );
610 group = groups["none"];
611 button = new Button ( 63, 1, "F10", *group );
612 buttons[0x3f] = button;
613 controls.push_back( button );
614 controls_by_name["F10"] = button;
615 group->add( *button );
617 group = groups["none"];
618 button = new Button ( 64, 1, "F11", *group );
619 buttons[0x40] = button;
620 controls.push_back( button );
621 controls_by_name["F11"] = button;
622 group->add( *button );
624 group = groups["none"];
625 button = new Button ( 65, 1, "F12", *group );
626 buttons[0x41] = button;
627 controls.push_back( button );
628 controls_by_name["F12"] = button;
629 group->add( *button );
631 group = groups["none"];
632 button = new Button ( 66, 1, "F13", *group );
633 buttons[0x42] = button;
634 controls.push_back( button );
635 controls_by_name["F13"] = button;
636 group->add( *button );
638 group = groups["none"];
639 button = new Button ( 67, 1, "F14", *group );
640 buttons[0x43] = button;
641 controls.push_back( button );
642 controls_by_name["F14"] = button;
643 group->add( *button );
645 group = groups["none"];
646 button = new Button ( 68, 1, "F15", *group );
647 buttons[0x44] = button;
648 controls.push_back( button );
649 controls_by_name["F15"] = button;
650 group->add( *button );
652 group = groups["none"];
653 button = new Button ( 69, 1, "F16", *group );
654 buttons[0x45] = button;
655 controls.push_back( button );
656 controls_by_name["F16"] = button;
657 group->add( *button );
659 group = groups["modifiers"];
660 button = new Button ( 70, 1, "shift", *group );
661 buttons[0x46] = button;
662 controls.push_back( button );
663 controls_by_name["shift"] = button;
664 group->add( *button );
666 group = groups["modifiers"];
667 button = new Button ( 71, 1, "option", *group );
668 buttons[0x47] = button;
669 controls.push_back( button );
670 controls_by_name["option"] = button;
671 group->add( *button );
673 group = groups["modifiers"];
674 button = new Button ( 72, 1, "control", *group );
675 buttons[0x48] = button;
676 controls.push_back( button );
677 controls_by_name["control"] = button;
678 group->add( *button );
680 group = groups["modifiers"];
681 button = new Button ( 73, 1, "cmd_alt", *group );
682 buttons[0x49] = button;
683 controls.push_back( button );
684 controls_by_name["cmd_alt"] = button;
685 group->add( *button );
687 group = groups["automation"];
688 button = new Button ( 74, 1, "on", *group );
689 buttons[0x4a] = button;
690 controls.push_back( button );
691 controls_by_name["on"] = button;
692 group->add( *button );
694 group = groups["automation"];
695 button = new Button ( 75, 1, "rec_ready", *group );
696 buttons[0x4b] = button;
697 controls.push_back( button );
698 controls_by_name["rec_ready"] = button;
699 group->add( *button );
701 group = groups["functions"];
702 button = new Button ( 76, 1, "undo", *group );
703 buttons[0x4c] = button;
704 controls.push_back( button );
705 controls_by_name["undo"] = button;
706 group->add( *button );
708 group = groups["automation"];
709 button = new Button ( 77, 1, "snapshot", *group );
710 buttons[0x4d] = button;
711 controls.push_back( button );
712 controls_by_name["snapshot"] = button;
713 group->add( *button );
715 group = groups["automation"];
716 button = new Button ( 78, 1, "touch", *group );
717 buttons[0x4e] = button;
718 controls.push_back( button );
719 controls_by_name["touch"] = button;
720 group->add( *button );
722 group = groups["functions"];
723 button = new Button ( 79, 1, "redo", *group );
724 buttons[0x4f] = button;
725 controls.push_back( button );
726 controls_by_name["redo"] = button;
727 group->add( *button );
729 group = groups["functions"];
730 button = new Button ( 80, 1, "marker", *group );
731 buttons[0x50] = button;
732 controls.push_back( button );
733 controls_by_name["marker"] = button;
734 group->add( *button );
736 group = groups["functions"];
737 button = new Button ( 81, 1, "enter", *group );
738 buttons[0x51] = button;
739 controls.push_back( button );
740 controls_by_name["enter"] = button;
741 group->add( *button );
743 group = groups["functions"];
744 button = new Button ( 82, 1, "cancel", *group );
745 buttons[0x52] = button;
746 controls.push_back( button );
747 controls_by_name["cancel"] = button;
748 group->add( *button );
750 group = groups["functions"];
751 button = new Button ( 83, 1, "mixer", *group );
752 buttons[0x53] = button;
753 controls.push_back( button );
754 controls_by_name["mixer"] = button;
755 group->add( *button );
757 group = groups["transport"];
758 button = new Button ( 84, 1, "frm_left", *group );
759 buttons[0x54] = button;
760 controls.push_back( button );
761 controls_by_name["frm_left"] = button;
762 group->add( *button );
764 group = groups["transport"];
765 button = new Button ( 85, 1, "frm_right", *group );
766 buttons[0x55] = button;
767 controls.push_back( button );
768 controls_by_name["frm_right"] = button;
769 group->add( *button );
771 group = groups["transport"];
772 button = new Button ( 86, 1, "loop", *group );
773 buttons[0x56] = button;
774 controls.push_back( button );
775 controls_by_name["loop"] = button;
776 group->add( *button );
778 group = groups["transport"];
779 button = new Button ( 87, 1, "punch_in", *group );
780 buttons[0x57] = button;
781 controls.push_back( button );
782 controls_by_name["punch_in"] = button;
783 group->add( *button );
785 group = groups["transport"];
786 button = new Button ( 88, 1, "punch_out", *group );
787 buttons[0x58] = button;
788 controls.push_back( button );
789 controls_by_name["punch_out"] = button;
790 group->add( *button );
792 group = groups["transport"];
793 button = new Button ( 89, 1, "home", *group );
794 buttons[0x59] = button;
795 controls.push_back( button );
796 controls_by_name["home"] = button;
797 group->add( *button );
799 group = groups["transport"];
800 button = new Button ( 90, 1, "end", *group );
801 buttons[0x5a] = button;
802 controls.push_back( button );
803 controls_by_name["end"] = button;
804 group->add( *button );
806 group = groups["transport"];
807 button = new Button ( 91, 1, "rewind", *group );
808 buttons[0x5b] = button;
809 controls.push_back( button );
810 controls_by_name["rewind"] = button;
811 group->add( *button );
813 group = groups["transport"];
814 button = new Button ( 92, 1, "ffwd", *group );
815 buttons[0x5c] = button;
816 controls.push_back( button );
817 controls_by_name["ffwd"] = button;
818 group->add( *button );
820 group = groups["transport"];
821 button = new Button ( 93, 1, "stop", *group );
822 buttons[0x5d] = button;
823 controls.push_back( button );
824 controls_by_name["stop"] = button;
825 group->add( *button );
827 group = groups["transport"];
828 button = new Button ( 94, 1, "play", *group );
829 buttons[0x5e] = button;
830 controls.push_back( button );
831 controls_by_name["play"] = button;
832 group->add( *button );
834 group = groups["transport"];
835 button = new Button ( 95, 1, "record", *group );
836 buttons[0x5f] = button;
837 controls.push_back( button );
838 controls_by_name["record"] = button;
839 group->add( *button );
841 group = groups["cursor"];
842 button = new Button ( 96, 1, "cursor_up", *group );
843 buttons[0x60] = button;
844 controls.push_back( button );
845 controls_by_name["cursor_up"] = button;
846 group->add( *button );
848 group = groups["cursor"];
849 button = new Button ( 97, 1, "cursor_down", *group );
850 buttons[0x61] = button;
851 controls.push_back( button );
852 controls_by_name["cursor_down"] = button;
853 group->add( *button );
855 group = groups["cursor"];
856 button = new Button ( 98, 1, "cursor_left", *group );
857 buttons[0x62] = button;
858 controls.push_back( button );
859 controls_by_name["cursor_left"] = button;
860 group->add( *button );
862 group = groups["cursor"];
863 button = new Button ( 99, 1, "cursor_right", *group );
864 buttons[0x63] = button;
865 controls.push_back( button );
866 controls_by_name["cursor_right"] = button;
867 group->add( *button );
869 group = groups["none"];
870 button = new Button ( 100, 1, "zoom", *group );
871 buttons[0x64] = button;
872 controls.push_back( button );
873 controls_by_name["zoom"] = button;
874 group->add( *button );
876 group = groups["none"];
877 button = new Button ( 101, 1, "scrub", *group );
878 buttons[0x65] = button;
879 controls.push_back( button );
880 controls_by_name["scrub"] = button;
881 group->add( *button );
883 group = groups["user"];
884 button = new Button ( 102, 1, "user_a", *group );
885 buttons[0x66] = button;
886 controls.push_back( button );
887 controls_by_name["user_a"] = button;
888 group->add( *button );
890 group = groups["user"];
891 button = new Button ( 103, 1, "user_b", *group );
892 buttons[0x67] = button;
893 controls.push_back( button );
894 controls_by_name["user_b"] = button;
895 group->add( *button );
897 group = groups["strip_1"];
898 button = new Button ( 104, 1, "fader_touch", *group );
899 buttons[0x68] = button;
900 controls.push_back( button );
901 group->add( *button );
903 group = groups["strip_2"];
904 button = new Button ( 105, 2, "fader_touch", *group );
905 buttons[0x69] = button;
906 controls.push_back( button );
907 group->add( *button );
909 group = groups["strip_3"];
910 button = new Button ( 106, 3, "fader_touch", *group );
911 buttons[0x6a] = button;
912 controls.push_back( button );
913 group->add( *button );
915 group = groups["strip_4"];
916 button = new Button ( 107, 4, "fader_touch", *group );
917 buttons[0x6b] = button;
918 controls.push_back( button );
919 group->add( *button );
921 group = groups["strip_5"];
922 button = new Button ( 108, 5, "fader_touch", *group );
923 buttons[0x6c] = button;
924 controls.push_back( button );
925 group->add( *button );
927 group = groups["strip_6"];
928 button = new Button ( 109, 6, "fader_touch", *group );
929 buttons[0x6d] = button;
930 controls.push_back( button );
931 group->add( *button );
933 group = groups["strip_7"];
934 button = new Button ( 110, 7, "fader_touch", *group );
935 buttons[0x6e] = button;
936 controls.push_back( button );
937 group->add( *button );
939 group = groups["strip_8"];
940 button = new Button ( 111, 8, "fader_touch", *group );
941 buttons[0x6f] = button;
942 controls.push_back( button );
943 group->add( *button );
945 group = groups["master"];
946 button = new Button ( 112, 1, "fader_touch", *group );
947 buttons[0x70] = button;
948 controls.push_back( button );
949 group->add( *button );
951 group = groups["none"];
952 led = new Led ( 113, 1, "timecode", *group );
954 controls.push_back( led );
955 controls_by_name["timecode"] = led;
958 group = groups["none"];
959 led = new Led ( 114, 1, "beats", *group );
961 controls.push_back( led );
962 controls_by_name["beats"] = led;
965 group = groups["none"];
966 led = new Led ( 115, 1, "solo", *group );
968 controls.push_back( led );
969 controls_by_name["solo"] = led;
972 group = groups["none"];
973 led = new Led ( 118, 1, "relay_click", *group );
975 controls.push_back( led );
976 controls_by_name["relay_click"] = led;
981 void Mackie::MackieSurface::handle_button( MackieButtonHandler & mbh, ButtonState bs, Button & button )
983 if ( bs != press && bs != release )
985 mbh.update_led( button, none );
990 switch ( button.id() )
995 case press: ls = mbh.io_press( button ); break;
996 case release: ls = mbh.io_release( button ); break;
1001 case 0x9029: // sends
1003 case press: ls = mbh.sends_press( button ); break;
1004 case release: ls = mbh.sends_release( button ); break;
1005 case neither: break;
1011 case press: ls = mbh.pan_press( button ); break;
1012 case release: ls = mbh.pan_release( button ); break;
1013 case neither: break;
1017 case 0x902b: // plugin
1019 case press: ls = mbh.plugin_press( button ); break;
1020 case release: ls = mbh.plugin_release( button ); break;
1021 case neither: break;
1027 case press: ls = mbh.eq_press( button ); break;
1028 case release: ls = mbh.eq_release( button ); break;
1029 case neither: break;
1035 case press: ls = mbh.dyn_press( button ); break;
1036 case release: ls = mbh.dyn_release( button ); break;
1037 case neither: break;
1041 case 0x902e: // left
1043 case press: ls = mbh.left_press( button ); break;
1044 case release: ls = mbh.left_release( button ); break;
1045 case neither: break;
1049 case 0x902f: // right
1051 case press: ls = mbh.right_press( button ); break;
1052 case release: ls = mbh.right_release( button ); break;
1053 case neither: break;
1057 case 0x9030: // channel_left
1059 case press: ls = mbh.channel_left_press( button ); break;
1060 case release: ls = mbh.channel_left_release( button ); break;
1061 case neither: break;
1065 case 0x9031: // channel_right
1067 case press: ls = mbh.channel_right_press( button ); break;
1068 case release: ls = mbh.channel_right_release( button ); break;
1069 case neither: break;
1073 case 0x9032: // flip
1075 case press: ls = mbh.flip_press( button ); break;
1076 case release: ls = mbh.flip_release( button ); break;
1077 case neither: break;
1081 case 0x9033: // edit
1083 case press: ls = mbh.edit_press( button ); break;
1084 case release: ls = mbh.edit_release( button ); break;
1085 case neither: break;
1089 case 0x9034: // name_value
1091 case press: ls = mbh.name_value_press( button ); break;
1092 case release: ls = mbh.name_value_release( button ); break;
1093 case neither: break;
1097 case 0x9035: // timecode_beats
1099 case press: ls = mbh.timecode_beats_press( button ); break;
1100 case release: ls = mbh.timecode_beats_release( button ); break;
1101 case neither: break;
1107 case press: ls = mbh.F1_press( button ); break;
1108 case release: ls = mbh.F1_release( button ); break;
1109 case neither: break;
1115 case press: ls = mbh.F2_press( button ); break;
1116 case release: ls = mbh.F2_release( button ); break;
1117 case neither: break;
1123 case press: ls = mbh.F3_press( button ); break;
1124 case release: ls = mbh.F3_release( button ); break;
1125 case neither: break;
1131 case press: ls = mbh.F4_press( button ); break;
1132 case release: ls = mbh.F4_release( button ); break;
1133 case neither: break;
1139 case press: ls = mbh.F5_press( button ); break;
1140 case release: ls = mbh.F5_release( button ); break;
1141 case neither: break;
1147 case press: ls = mbh.F6_press( button ); break;
1148 case release: ls = mbh.F6_release( button ); break;
1149 case neither: break;
1155 case press: ls = mbh.F7_press( button ); break;
1156 case release: ls = mbh.F7_release( button ); break;
1157 case neither: break;
1163 case press: ls = mbh.F8_press( button ); break;
1164 case release: ls = mbh.F8_release( button ); break;
1165 case neither: break;
1171 case press: ls = mbh.F9_press( button ); break;
1172 case release: ls = mbh.F9_release( button ); break;
1173 case neither: break;
1179 case press: ls = mbh.F10_press( button ); break;
1180 case release: ls = mbh.F10_release( button ); break;
1181 case neither: break;
1187 case press: ls = mbh.F11_press( button ); break;
1188 case release: ls = mbh.F11_release( button ); break;
1189 case neither: break;
1195 case press: ls = mbh.F12_press( button ); break;
1196 case release: ls = mbh.F12_release( button ); break;
1197 case neither: break;
1203 case press: ls = mbh.F13_press( button ); break;
1204 case release: ls = mbh.F13_release( button ); break;
1205 case neither: break;
1211 case press: ls = mbh.F14_press( button ); break;
1212 case release: ls = mbh.F14_release( button ); break;
1213 case neither: break;
1219 case press: ls = mbh.F15_press( button ); break;
1220 case release: ls = mbh.F15_release( button ); break;
1221 case neither: break;
1227 case press: ls = mbh.F16_press( button ); break;
1228 case release: ls = mbh.F16_release( button ); break;
1229 case neither: break;
1233 case 0x9046: // shift
1235 case press: ls = mbh.shift_press( button ); break;
1236 case release: ls = mbh.shift_release( button ); break;
1237 case neither: break;
1241 case 0x9047: // option
1243 case press: ls = mbh.option_press( button ); break;
1244 case release: ls = mbh.option_release( button ); break;
1245 case neither: break;
1249 case 0x9048: // control
1251 case press: ls = mbh.control_press( button ); break;
1252 case release: ls = mbh.control_release( button ); break;
1253 case neither: break;
1257 case 0x9049: // cmd_alt
1259 case press: ls = mbh.cmd_alt_press( button ); break;
1260 case release: ls = mbh.cmd_alt_release( button ); break;
1261 case neither: break;
1267 case press: ls = mbh.on_press( button ); break;
1268 case release: ls = mbh.on_release( button ); break;
1269 case neither: break;
1273 case 0x904b: // rec_ready
1275 case press: ls = mbh.rec_ready_press( button ); break;
1276 case release: ls = mbh.rec_ready_release( button ); break;
1277 case neither: break;
1281 case 0x904c: // undo
1283 case press: ls = mbh.undo_press( button ); break;
1284 case release: ls = mbh.undo_release( button ); break;
1285 case neither: break;
1289 case 0x904d: // snapshot
1291 case press: ls = mbh.snapshot_press( button ); break;
1292 case release: ls = mbh.snapshot_release( button ); break;
1293 case neither: break;
1297 case 0x904e: // touch
1299 case press: ls = mbh.touch_press( button ); break;
1300 case release: ls = mbh.touch_release( button ); break;
1301 case neither: break;
1305 case 0x904f: // redo
1307 case press: ls = mbh.redo_press( button ); break;
1308 case release: ls = mbh.redo_release( button ); break;
1309 case neither: break;
1313 case 0x9050: // marker
1315 case press: ls = mbh.marker_press( button ); break;
1316 case release: ls = mbh.marker_release( button ); break;
1317 case neither: break;
1321 case 0x9051: // enter
1323 case press: ls = mbh.enter_press( button ); break;
1324 case release: ls = mbh.enter_release( button ); break;
1325 case neither: break;
1329 case 0x9052: // cancel
1331 case press: ls = mbh.cancel_press( button ); break;
1332 case release: ls = mbh.cancel_release( button ); break;
1333 case neither: break;
1337 case 0x9053: // mixer
1339 case press: ls = mbh.mixer_press( button ); break;
1340 case release: ls = mbh.mixer_release( button ); break;
1341 case neither: break;
1345 case 0x9054: // frm_left
1347 case press: ls = mbh.frm_left_press( button ); break;
1348 case release: ls = mbh.frm_left_release( button ); break;
1349 case neither: break;
1353 case 0x9055: // frm_right
1355 case press: ls = mbh.frm_right_press( button ); break;
1356 case release: ls = mbh.frm_right_release( button ); break;
1357 case neither: break;
1361 case 0x9056: // loop
1363 case press: ls = mbh.loop_press( button ); break;
1364 case release: ls = mbh.loop_release( button ); break;
1365 case neither: break;
1369 case 0x9057: // punch_in
1371 case press: ls = mbh.punch_in_press( button ); break;
1372 case release: ls = mbh.punch_in_release( button ); break;
1373 case neither: break;
1377 case 0x9058: // punch_out
1379 case press: ls = mbh.punch_out_press( button ); break;
1380 case release: ls = mbh.punch_out_release( button ); break;
1381 case neither: break;
1385 case 0x9059: // home
1387 case press: ls = mbh.home_press( button ); break;
1388 case release: ls = mbh.home_release( button ); break;
1389 case neither: break;
1395 case press: ls = mbh.end_press( button ); break;
1396 case release: ls = mbh.end_release( button ); break;
1397 case neither: break;
1401 case 0x905b: // rewind
1403 case press: ls = mbh.rewind_press( button ); break;
1404 case release: ls = mbh.rewind_release( button ); break;
1405 case neither: break;
1409 case 0x905c: // ffwd
1411 case press: ls = mbh.ffwd_press( button ); break;
1412 case release: ls = mbh.ffwd_release( button ); break;
1413 case neither: break;
1417 case 0x905d: // stop
1419 case press: ls = mbh.stop_press( button ); break;
1420 case release: ls = mbh.stop_release( button ); break;
1421 case neither: break;
1425 case 0x905e: // play
1427 case press: ls = mbh.play_press( button ); break;
1428 case release: ls = mbh.play_release( button ); break;
1429 case neither: break;
1433 case 0x905f: // record
1435 case press: ls = mbh.record_press( button ); break;
1436 case release: ls = mbh.record_release( button ); break;
1437 case neither: break;
1441 case 0x9060: // cursor_up
1443 case press: ls = mbh.cursor_up_press( button ); break;
1444 case release: ls = mbh.cursor_up_release( button ); break;
1445 case neither: break;
1449 case 0x9061: // cursor_down
1451 case press: ls = mbh.cursor_down_press( button ); break;
1452 case release: ls = mbh.cursor_down_release( button ); break;
1453 case neither: break;
1457 case 0x9062: // cursor_left
1459 case press: ls = mbh.cursor_left_press( button ); break;
1460 case release: ls = mbh.cursor_left_release( button ); break;
1461 case neither: break;
1465 case 0x9063: // cursor_right
1467 case press: ls = mbh.cursor_right_press( button ); break;
1468 case release: ls = mbh.cursor_right_release( button ); break;
1469 case neither: break;
1473 case 0x9064: // zoom
1475 case press: ls = mbh.zoom_press( button ); break;
1476 case release: ls = mbh.zoom_release( button ); break;
1477 case neither: break;
1481 case 0x9065: // scrub
1483 case press: ls = mbh.scrub_press( button ); break;
1484 case release: ls = mbh.scrub_release( button ); break;
1485 case neither: break;
1489 case 0x9066: // user_a
1491 case press: ls = mbh.user_a_press( button ); break;
1492 case release: ls = mbh.user_a_release( button ); break;
1493 case neither: break;
1497 case 0x9067: // user_b
1499 case press: ls = mbh.user_b_press( button ); break;
1500 case release: ls = mbh.user_b_release( button ); break;
1501 case neither: break;
1506 mbh.update_led( button, ls );