2 Generated by scripts/generate-surface.rb
5 #include "bcf_surface.h"
8 #include "mackie_button_handler.h"
10 using namespace Mackie;
12 void Mackie::BcfSurface::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 ( "automation" );
45 groups["automation"] = group;
47 group = new Group ( "functions" );
48 groups["functions"] = 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;
83 // initialise controls
89 group = groups["strip_1"];
90 fader = new Fader ( 0, 1, "gain", *group );
92 controls.push_back( fader );
95 group = groups["strip_2"];
96 fader = new Fader ( 1, 2, "gain", *group );
98 controls.push_back( fader );
101 group = groups["strip_3"];
102 fader = new Fader ( 2, 3, "gain", *group );
103 faders[0x02] = fader;
104 controls.push_back( fader );
105 group->add( *fader );
107 group = groups["strip_4"];
108 fader = new Fader ( 3, 4, "gain", *group );
109 faders[0x03] = fader;
110 controls.push_back( fader );
111 group->add( *fader );
113 group = groups["strip_5"];
114 fader = new Fader ( 4, 5, "gain", *group );
115 faders[0x04] = fader;
116 controls.push_back( fader );
117 group->add( *fader );
119 group = groups["strip_6"];
120 fader = new Fader ( 5, 6, "gain", *group );
121 faders[0x05] = fader;
122 controls.push_back( fader );
123 group->add( *fader );
125 group = groups["strip_7"];
126 fader = new Fader ( 6, 7, "gain", *group );
127 faders[0x06] = fader;
128 controls.push_back( fader );
129 group->add( *fader );
131 group = groups["master"];
132 fader = new Fader ( 7, 1, "gain", *group );
133 faders[0x07] = fader;
134 controls.push_back( fader );
135 group->add( *fader );
137 group = groups["strip_1"];
138 pot = new Pot ( 16, 1, "vpot", *group );
140 controls.push_back( pot );
143 group = groups["strip_2"];
144 pot = new Pot ( 17, 2, "vpot", *group );
146 controls.push_back( pot );
149 group = groups["strip_3"];
150 pot = new Pot ( 18, 3, "vpot", *group );
152 controls.push_back( pot );
155 group = groups["strip_4"];
156 pot = new Pot ( 19, 4, "vpot", *group );
158 controls.push_back( pot );
161 group = groups["strip_5"];
162 pot = new Pot ( 20, 5, "vpot", *group );
164 controls.push_back( pot );
167 group = groups["strip_6"];
168 pot = new Pot ( 21, 6, "vpot", *group );
170 controls.push_back( pot );
173 group = groups["strip_7"];
174 pot = new Pot ( 22, 7, "vpot", *group );
176 controls.push_back( pot );
179 group = groups["none"];
180 pot = new Jog ( 23, 1, "jog", *group );
182 controls.push_back( pot );
183 controls_by_name["jog"] = pot;
186 group = groups["none"];
187 pot = new Pot ( 46, 1, "external", *group );
189 controls.push_back( pot );
190 controls_by_name["external"] = pot;
193 group = groups["strip_1"];
194 button = new Button ( 24, 1, "recenable", *group );
195 buttons[0x18] = button;
196 controls.push_back( button );
197 group->add( *button );
199 group = groups["strip_2"];
200 button = new Button ( 25, 2, "recenable", *group );
201 buttons[0x19] = button;
202 controls.push_back( button );
203 group->add( *button );
205 group = groups["strip_3"];
206 button = new Button ( 26, 3, "recenable", *group );
207 buttons[0x1a] = button;
208 controls.push_back( button );
209 group->add( *button );
211 group = groups["strip_4"];
212 button = new Button ( 27, 4, "recenable", *group );
213 buttons[0x1b] = button;
214 controls.push_back( button );
215 group->add( *button );
217 group = groups["strip_5"];
218 button = new Button ( 28, 5, "recenable", *group );
219 buttons[0x1c] = button;
220 controls.push_back( button );
221 group->add( *button );
223 group = groups["strip_6"];
224 button = new Button ( 29, 6, "recenable", *group );
225 buttons[0x1d] = button;
226 controls.push_back( button );
227 group->add( *button );
229 group = groups["strip_7"];
230 button = new Button ( 30, 7, "recenable", *group );
231 buttons[0x1e] = button;
232 controls.push_back( button );
233 group->add( *button );
235 group = groups["strip_1"];
236 button = new Button ( 32, 1, "solo", *group );
237 buttons[0x20] = button;
238 controls.push_back( button );
239 group->add( *button );
241 group = groups["strip_2"];
242 button = new Button ( 33, 2, "solo", *group );
243 buttons[0x21] = button;
244 controls.push_back( button );
245 group->add( *button );
247 group = groups["strip_3"];
248 button = new Button ( 34, 3, "solo", *group );
249 buttons[0x22] = button;
250 controls.push_back( button );
251 group->add( *button );
253 group = groups["strip_4"];
254 button = new Button ( 35, 4, "solo", *group );
255 buttons[0x23] = button;
256 controls.push_back( button );
257 group->add( *button );
259 group = groups["strip_5"];
260 button = new Button ( 36, 5, "solo", *group );
261 buttons[0x24] = button;
262 controls.push_back( button );
263 group->add( *button );
265 group = groups["strip_6"];
266 button = new Button ( 37, 6, "solo", *group );
267 buttons[0x25] = button;
268 controls.push_back( button );
269 group->add( *button );
271 group = groups["strip_7"];
272 button = new Button ( 38, 7, "solo", *group );
273 buttons[0x26] = button;
274 controls.push_back( button );
275 group->add( *button );
277 group = groups["strip_1"];
278 button = new Button ( 16, 1, "mute", *group );
279 buttons[0x10] = button;
280 controls.push_back( button );
281 group->add( *button );
283 group = groups["strip_2"];
284 button = new Button ( 17, 2, "mute", *group );
285 buttons[0x11] = button;
286 controls.push_back( button );
287 group->add( *button );
289 group = groups["strip_3"];
290 button = new Button ( 18, 3, "mute", *group );
291 buttons[0x12] = button;
292 controls.push_back( button );
293 group->add( *button );
295 group = groups["strip_4"];
296 button = new Button ( 19, 4, "mute", *group );
297 buttons[0x13] = button;
298 controls.push_back( button );
299 group->add( *button );
301 group = groups["strip_5"];
302 button = new Button ( 20, 5, "mute", *group );
303 buttons[0x14] = button;
304 controls.push_back( button );
305 group->add( *button );
307 group = groups["strip_6"];
308 button = new Button ( 21, 6, "mute", *group );
309 buttons[0x15] = button;
310 controls.push_back( button );
311 group->add( *button );
313 group = groups["strip_7"];
314 button = new Button ( 22, 7, "mute", *group );
315 buttons[0x16] = button;
316 controls.push_back( button );
317 group->add( *button );
319 group = groups["strip_1"];
320 button = new Button ( 0, 1, "select", *group );
321 buttons[0x00] = button;
322 controls.push_back( button );
323 group->add( *button );
325 group = groups["strip_2"];
326 button = new Button ( 1, 2, "select", *group );
327 buttons[0x01] = button;
328 controls.push_back( button );
329 group->add( *button );
331 group = groups["strip_3"];
332 button = new Button ( 2, 3, "select", *group );
333 buttons[0x02] = button;
334 controls.push_back( button );
335 group->add( *button );
337 group = groups["strip_4"];
338 button = new Button ( 3, 4, "select", *group );
339 buttons[0x03] = button;
340 controls.push_back( button );
341 group->add( *button );
343 group = groups["strip_5"];
344 button = new Button ( 4, 5, "select", *group );
345 buttons[0x04] = button;
346 controls.push_back( button );
347 group->add( *button );
349 group = groups["strip_6"];
350 button = new Button ( 5, 6, "select", *group );
351 buttons[0x05] = button;
352 controls.push_back( button );
353 group->add( *button );
355 group = groups["strip_7"];
356 button = new Button ( 6, 7, "select", *group );
357 buttons[0x06] = button;
358 controls.push_back( button );
359 group->add( *button );
361 group = groups["strip_1"];
362 button = new Button ( 8, 1, "vselect", *group );
363 buttons[0x08] = button;
364 controls.push_back( button );
365 group->add( *button );
367 group = groups["strip_2"];
368 button = new Button ( 9, 2, "vselect", *group );
369 buttons[0x09] = button;
370 controls.push_back( button );
371 group->add( *button );
373 group = groups["strip_3"];
374 button = new Button ( 10, 3, "vselect", *group );
375 buttons[0x0a] = button;
376 controls.push_back( button );
377 group->add( *button );
379 group = groups["strip_4"];
380 button = new Button ( 11, 4, "vselect", *group );
381 buttons[0x0b] = button;
382 controls.push_back( button );
383 group->add( *button );
385 group = groups["strip_5"];
386 button = new Button ( 12, 5, "vselect", *group );
387 buttons[0x0c] = button;
388 controls.push_back( button );
389 group->add( *button );
391 group = groups["strip_6"];
392 button = new Button ( 13, 6, "vselect", *group );
393 buttons[0x0d] = button;
394 controls.push_back( button );
395 group->add( *button );
397 group = groups["strip_7"];
398 button = new Button ( 14, 7, "vselect", *group );
399 buttons[0x0e] = button;
400 controls.push_back( button );
401 group->add( *button );
403 group = groups["assignment"];
404 button = new Button ( 40, 1, "io", *group );
405 buttons[0x28] = button;
406 controls.push_back( button );
407 controls_by_name["io"] = button;
408 group->add( *button );
410 group = groups["assignment"];
411 button = new Button ( 90, 1, "sends", *group );
412 buttons[0x5a] = button;
413 controls.push_back( button );
414 controls_by_name["sends"] = button;
415 group->add( *button );
417 group = groups["assignment"];
418 button = new Button ( 89, 1, "pan", *group );
419 buttons[0x59] = button;
420 controls.push_back( button );
421 controls_by_name["pan"] = button;
422 group->add( *button );
424 group = groups["assignment"];
425 button = new Button ( 87, 1, "plugin", *group );
426 buttons[0x57] = button;
427 controls.push_back( button );
428 controls_by_name["plugin"] = button;
429 group->add( *button );
431 group = groups["functions"];
432 button = new Button ( 88, 1, "drop", *group );
433 buttons[0x58] = button;
434 controls.push_back( button );
435 controls_by_name["drop"] = button;
436 group->add( *button );
438 group = groups["assignment"];
439 button = new Button ( 45, 1, "zoom", *group );
440 buttons[0x2d] = button;
441 controls.push_back( button );
442 controls_by_name["zoom"] = button;
443 group->add( *button );
445 group = groups["bank"];
446 button = new Button ( 46, 1, "left", *group );
447 buttons[0x2e] = button;
448 controls.push_back( button );
449 controls_by_name["left"] = button;
450 group->add( *button );
452 group = groups["bank"];
453 button = new Button ( 47, 1, "right", *group );
454 buttons[0x2f] = button;
455 controls.push_back( button );
456 controls_by_name["right"] = button;
457 group->add( *button );
459 group = groups["bank"];
460 button = new Button ( 48, 1, "channel_left", *group );
461 buttons[0x30] = button;
462 controls.push_back( button );
463 controls_by_name["channel_left"] = button;
464 group->add( *button );
466 group = groups["bank"];
467 button = new Button ( 49, 1, "channel_right", *group );
468 buttons[0x31] = button;
469 controls.push_back( button );
470 controls_by_name["channel_right"] = button;
471 group->add( *button );
473 group = groups["none"];
474 button = new Button ( 50, 1, "scrub", *group );
475 buttons[0x32] = button;
476 controls.push_back( button );
477 controls_by_name["scrub"] = button;
478 group->add( *button );
480 group = groups["none"];
481 button = new Button ( 86, 1, "edit", *group );
482 buttons[0x56] = button;
483 controls.push_back( button );
484 controls_by_name["edit"] = button;
485 group->add( *button );
487 group = groups["display"];
488 button = new Button ( 52, 1, "name_value", *group );
489 buttons[0x34] = button;
490 controls.push_back( button );
491 controls_by_name["name_value"] = button;
492 group->add( *button );
494 group = groups["display"];
495 button = new Button ( 53, 1, "timecode_beats", *group );
496 buttons[0x35] = button;
497 controls.push_back( button );
498 controls_by_name["timecode_beats"] = button;
499 group->add( *button );
501 group = groups["none"];
502 button = new Button ( 54, 1, "F1", *group );
503 buttons[0x36] = button;
504 controls.push_back( button );
505 controls_by_name["F1"] = button;
506 group->add( *button );
508 group = groups["none"];
509 button = new Button ( 55, 1, "F2", *group );
510 buttons[0x37] = button;
511 controls.push_back( button );
512 controls_by_name["F2"] = button;
513 group->add( *button );
515 group = groups["none"];
516 button = new Button ( 56, 1, "F3", *group );
517 buttons[0x38] = button;
518 controls.push_back( button );
519 controls_by_name["F3"] = button;
520 group->add( *button );
522 group = groups["none"];
523 button = new Button ( 57, 1, "F4", *group );
524 buttons[0x39] = button;
525 controls.push_back( button );
526 controls_by_name["F4"] = button;
527 group->add( *button );
529 group = groups["none"];
530 button = new Button ( 58, 1, "F5", *group );
531 buttons[0x3a] = button;
532 controls.push_back( button );
533 controls_by_name["F5"] = button;
534 group->add( *button );
536 group = groups["none"];
537 button = new Button ( 59, 1, "F6", *group );
538 buttons[0x3b] = button;
539 controls.push_back( button );
540 controls_by_name["F6"] = button;
541 group->add( *button );
543 group = groups["none"];
544 button = new Button ( 60, 1, "F7", *group );
545 buttons[0x3c] = button;
546 controls.push_back( button );
547 controls_by_name["F7"] = button;
548 group->add( *button );
550 group = groups["none"];
551 button = new Button ( 61, 1, "F8", *group );
552 buttons[0x3d] = button;
553 controls.push_back( button );
554 controls_by_name["F8"] = button;
555 group->add( *button );
557 group = groups["none"];
558 button = new Button ( 62, 1, "F9", *group );
559 buttons[0x3e] = button;
560 controls.push_back( button );
561 controls_by_name["F9"] = button;
562 group->add( *button );
564 group = groups["none"];
565 button = new Button ( 63, 1, "F10", *group );
566 buttons[0x3f] = button;
567 controls.push_back( button );
568 controls_by_name["F10"] = button;
569 group->add( *button );
571 group = groups["none"];
572 button = new Button ( 64, 1, "F11", *group );
573 buttons[0x40] = button;
574 controls.push_back( button );
575 controls_by_name["F11"] = button;
576 group->add( *button );
578 group = groups["none"];
579 button = new Button ( 65, 1, "F12", *group );
580 buttons[0x41] = button;
581 controls.push_back( button );
582 controls_by_name["F12"] = button;
583 group->add( *button );
585 group = groups["none"];
586 button = new Button ( 66, 1, "F13", *group );
587 buttons[0x42] = button;
588 controls.push_back( button );
589 controls_by_name["F13"] = button;
590 group->add( *button );
592 group = groups["none"];
593 button = new Button ( 67, 1, "F14", *group );
594 buttons[0x43] = button;
595 controls.push_back( button );
596 controls_by_name["F14"] = button;
597 group->add( *button );
599 group = groups["none"];
600 button = new Button ( 68, 1, "F15", *group );
601 buttons[0x44] = button;
602 controls.push_back( button );
603 controls_by_name["F15"] = button;
604 group->add( *button );
606 group = groups["none"];
607 button = new Button ( 69, 1, "F16", *group );
608 buttons[0x45] = button;
609 controls.push_back( button );
610 controls_by_name["F16"] = button;
611 group->add( *button );
613 group = groups["none"];
614 button = new Button ( 39, 1, "global_solo", *group );
615 buttons[0x27] = button;
616 controls.push_back( button );
617 controls_by_name["global_solo"] = button;
618 group->add( *button );
620 group = groups["modifiers"];
621 button = new Button ( 80, 1, "option", *group );
622 buttons[0x50] = button;
623 controls.push_back( button );
624 controls_by_name["option"] = button;
625 group->add( *button );
627 group = groups["modifiers"];
628 button = new Button ( 73, 1, "cmd_alt", *group );
629 buttons[0x49] = button;
630 controls.push_back( button );
631 controls_by_name["cmd_alt"] = button;
632 group->add( *button );
634 group = groups["automation"];
635 button = new Button ( 74, 1, "on", *group );
636 buttons[0x4a] = button;
637 controls.push_back( button );
638 controls_by_name["on"] = button;
639 group->add( *button );
641 group = groups["automation"];
642 button = new Button ( 75, 1, "rec_ready", *group );
643 buttons[0x4b] = button;
644 controls.push_back( button );
645 controls_by_name["rec_ready"] = button;
646 group->add( *button );
648 group = groups["functions"];
649 button = new Button ( 76, 1, "undo", *group );
650 buttons[0x4c] = button;
651 controls.push_back( button );
652 controls_by_name["undo"] = button;
653 group->add( *button );
655 group = groups["automation"];
656 button = new Button ( 95, 1, "snapshot", *group );
657 buttons[0x5f] = button;
658 controls.push_back( button );
659 controls_by_name["snapshot"] = button;
660 group->add( *button );
662 group = groups["functions"];
663 button = new Button ( 79, 1, "redo", *group );
664 buttons[0x4f] = button;
665 controls.push_back( button );
666 controls_by_name["redo"] = button;
667 group->add( *button );
669 group = groups["functions"];
670 button = new Button ( 71, 1, "marker", *group );
671 buttons[0x47] = button;
672 controls.push_back( button );
673 controls_by_name["marker"] = button;
674 group->add( *button );
676 group = groups["functions"];
677 button = new Button ( 81, 1, "enter", *group );
678 buttons[0x51] = button;
679 controls.push_back( button );
680 controls_by_name["enter"] = button;
681 group->add( *button );
683 group = groups["functions"];
684 button = new Button ( 82, 1, "cancel", *group );
685 buttons[0x52] = button;
686 controls.push_back( button );
687 controls_by_name["cancel"] = button;
688 group->add( *button );
690 group = groups["functions"];
691 button = new Button ( 83, 1, "mixer", *group );
692 buttons[0x53] = button;
693 controls.push_back( button );
694 controls_by_name["mixer"] = button;
695 group->add( *button );
697 group = groups["functions"];
698 button = new Button ( 77, 1, "save", *group );
699 buttons[0x4d] = button;
700 controls.push_back( button );
701 controls_by_name["save"] = button;
702 group->add( *button );
704 group = groups["transport"];
705 button = new Button ( 91, 1, "frm_left", *group );
706 buttons[0x5b] = button;
707 controls.push_back( button );
708 controls_by_name["frm_left"] = button;
709 group->add( *button );
711 group = groups["transport"];
712 button = new Button ( 92, 1, "frm_right", *group );
713 buttons[0x5c] = button;
714 controls.push_back( button );
715 controls_by_name["frm_right"] = button;
716 group->add( *button );
718 group = groups["transport"];
719 button = new Button ( 70, 1, "loop", *group );
720 buttons[0x46] = button;
721 controls.push_back( button );
722 controls_by_name["loop"] = button;
723 group->add( *button );
725 group = groups["transport"];
726 button = new Button ( 72, 1, "punch_in", *group );
727 buttons[0x48] = button;
728 controls.push_back( button );
729 controls_by_name["punch_in"] = button;
730 group->add( *button );
732 group = groups["transport"];
733 button = new Button ( 78, 1, "punch_out", *group );
734 buttons[0x4e] = button;
735 controls.push_back( button );
736 controls_by_name["punch_out"] = button;
737 group->add( *button );
739 group = groups["transport"];
740 button = new Button ( 42, 1, "home", *group );
741 buttons[0x2a] = button;
742 controls.push_back( button );
743 controls_by_name["home"] = button;
744 group->add( *button );
746 group = groups["transport"];
747 button = new Button ( 41, 1, "end", *group );
748 buttons[0x29] = button;
749 controls.push_back( button );
750 controls_by_name["end"] = button;
751 group->add( *button );
753 group = groups["transport"];
754 button = new Button ( 44, 1, "rewind", *group );
755 buttons[0x2c] = button;
756 controls.push_back( button );
757 controls_by_name["rewind"] = button;
758 group->add( *button );
760 group = groups["transport"];
761 button = new Button ( 43, 1, "ffwd", *group );
762 buttons[0x2b] = button;
763 controls.push_back( button );
764 controls_by_name["ffwd"] = button;
765 group->add( *button );
767 group = groups["transport"];
768 button = new Button ( 93, 1, "stop", *group );
769 buttons[0x5d] = button;
770 controls.push_back( button );
771 controls_by_name["stop"] = button;
772 group->add( *button );
774 group = groups["transport"];
775 button = new Button ( 94, 1, "play", *group );
776 buttons[0x5e] = button;
777 controls.push_back( button );
778 controls_by_name["play"] = button;
779 group->add( *button );
781 group = groups["transport"];
782 button = new Button ( 31, 1, "record", *group );
783 buttons[0x1f] = button;
784 controls.push_back( button );
785 controls_by_name["record"] = button;
786 group->add( *button );
788 group = groups["cursor"];
789 button = new Button ( 96, 1, "cursor_up", *group );
790 buttons[0x60] = button;
791 controls.push_back( button );
792 controls_by_name["cursor_up"] = button;
793 group->add( *button );
795 group = groups["cursor"];
796 button = new Button ( 97, 1, "cursor_down", *group );
797 buttons[0x61] = button;
798 controls.push_back( button );
799 controls_by_name["cursor_down"] = button;
800 group->add( *button );
802 group = groups["cursor"];
803 button = new Button ( 98, 1, "cursor_left", *group );
804 buttons[0x62] = button;
805 controls.push_back( button );
806 controls_by_name["cursor_left"] = button;
807 group->add( *button );
809 group = groups["cursor"];
810 button = new Button ( 99, 1, "cursor_right", *group );
811 buttons[0x63] = button;
812 controls.push_back( button );
813 controls_by_name["cursor_right"] = button;
814 group->add( *button );
816 group = groups["none"];
817 button = new Button ( 100, 1, "dyn", *group );
818 buttons[0x64] = button;
819 controls.push_back( button );
820 controls_by_name["dyn"] = button;
821 group->add( *button );
823 group = groups["none"];
824 button = new Button ( 101, 1, "flip", *group );
825 buttons[0x65] = button;
826 controls.push_back( button );
827 controls_by_name["flip"] = button;
828 group->add( *button );
830 group = groups["user"];
831 button = new Button ( 102, 1, "user_a", *group );
832 buttons[0x66] = button;
833 controls.push_back( button );
834 controls_by_name["user_a"] = button;
835 group->add( *button );
837 group = groups["user"];
838 button = new Button ( 103, 1, "user_b", *group );
839 buttons[0x67] = button;
840 controls.push_back( button );
841 controls_by_name["user_b"] = button;
842 group->add( *button );
844 group = groups["strip_1"];
845 button = new Button ( 104, 1, "fader_touch", *group );
846 buttons[0x68] = button;
847 controls.push_back( button );
848 group->add( *button );
850 group = groups["strip_2"];
851 button = new Button ( 105, 2, "fader_touch", *group );
852 buttons[0x69] = button;
853 controls.push_back( button );
854 group->add( *button );
856 group = groups["strip_3"];
857 button = new Button ( 106, 3, "fader_touch", *group );
858 buttons[0x6a] = button;
859 controls.push_back( button );
860 group->add( *button );
862 group = groups["strip_4"];
863 button = new Button ( 107, 4, "fader_touch", *group );
864 buttons[0x6b] = button;
865 controls.push_back( button );
866 group->add( *button );
868 group = groups["strip_5"];
869 button = new Button ( 108, 5, "fader_touch", *group );
870 buttons[0x6c] = button;
871 controls.push_back( button );
872 group->add( *button );
874 group = groups["strip_6"];
875 button = new Button ( 109, 6, "fader_touch", *group );
876 buttons[0x6d] = button;
877 controls.push_back( button );
878 group->add( *button );
880 group = groups["strip_7"];
881 button = new Button ( 110, 7, "fader_touch", *group );
882 buttons[0x6e] = button;
883 controls.push_back( button );
884 group->add( *button );
886 group = groups["master"];
887 button = new Button ( 111, 1, "fader_touch", *group );
888 buttons[0x6f] = button;
889 controls.push_back( button );
890 group->add( *button );
892 group = groups["master"];
893 button = new Button ( 23, 1, "mute", *group );
894 buttons[0x17] = button;
895 controls.push_back( button );
896 group->add( *button );
898 group = groups["none"];
899 button = new Button ( 51, 1, "clicking", *group );
900 buttons[0x33] = button;
901 controls.push_back( button );
902 controls_by_name["clicking"] = button;
903 group->add( *button );
905 group = groups["none"];
906 led = new Led ( 113, 1, "timecode", *group );
908 controls.push_back( led );
909 controls_by_name["timecode"] = led;
912 group = groups["none"];
913 led = new Led ( 114, 1, "beats", *group );
915 controls.push_back( led );
916 controls_by_name["beats"] = led;
919 group = groups["none"];
920 led = new Led ( 115, 1, "solo", *group );
922 controls.push_back( led );
923 controls_by_name["solo"] = led;
926 group = groups["none"];
927 led = new Led ( 118, 1, "relay_click", *group );
929 controls.push_back( led );
930 controls_by_name["relay_click"] = led;
935 void Mackie::BcfSurface::handle_button( MackieButtonHandler & mbh, ButtonState bs, Button & button )
937 if ( bs != press && bs != release )
939 mbh.update_led( button, none );
944 switch ( button.id() )
949 case press: ls = mbh.io_press( button ); break;
950 case release: ls = mbh.io_release( button ); break;
955 case 0x905a: // sends
957 case press: ls = mbh.sends_press( button ); break;
958 case release: ls = mbh.sends_release( button ); break;
965 case press: ls = mbh.pan_press( button ); break;
966 case release: ls = mbh.pan_release( button ); break;
971 case 0x9057: // plugin
973 case press: ls = mbh.plugin_press( button ); break;
974 case release: ls = mbh.plugin_release( button ); break;
981 case press: ls = mbh.drop_press( button ); break;
982 case release: ls = mbh.drop_release( button ); break;
989 case press: ls = mbh.zoom_press( button ); break;
990 case release: ls = mbh.zoom_release( button ); break;
997 case press: ls = mbh.left_press( button ); break;
998 case release: ls = mbh.left_release( button ); break;
1003 case 0x902f: // right
1005 case press: ls = mbh.right_press( button ); break;
1006 case release: ls = mbh.right_release( button ); break;
1007 case neither: break;
1011 case 0x9030: // channel_left
1013 case press: ls = mbh.channel_left_press( button ); break;
1014 case release: ls = mbh.channel_left_release( button ); break;
1015 case neither: break;
1019 case 0x9031: // channel_right
1021 case press: ls = mbh.channel_right_press( button ); break;
1022 case release: ls = mbh.channel_right_release( button ); break;
1023 case neither: break;
1027 case 0x9032: // scrub
1029 case press: ls = mbh.scrub_press( button ); break;
1030 case release: ls = mbh.scrub_release( button ); break;
1031 case neither: break;
1035 case 0x9056: // edit
1037 case press: ls = mbh.edit_press( button ); break;
1038 case release: ls = mbh.edit_release( button ); break;
1039 case neither: break;
1043 case 0x9034: // name_value
1045 case press: ls = mbh.name_value_press( button ); break;
1046 case release: ls = mbh.name_value_release( button ); break;
1047 case neither: break;
1051 case 0x9035: // timecode_beats
1053 case press: ls = mbh.timecode_beats_press( button ); break;
1054 case release: ls = mbh.timecode_beats_release( button ); break;
1055 case neither: break;
1061 case press: ls = mbh.F1_press( button ); break;
1062 case release: ls = mbh.F1_release( button ); break;
1063 case neither: break;
1069 case press: ls = mbh.F2_press( button ); break;
1070 case release: ls = mbh.F2_release( button ); break;
1071 case neither: break;
1077 case press: ls = mbh.F3_press( button ); break;
1078 case release: ls = mbh.F3_release( button ); break;
1079 case neither: break;
1085 case press: ls = mbh.F4_press( button ); break;
1086 case release: ls = mbh.F4_release( button ); break;
1087 case neither: break;
1093 case press: ls = mbh.F5_press( button ); break;
1094 case release: ls = mbh.F5_release( button ); break;
1095 case neither: break;
1101 case press: ls = mbh.F6_press( button ); break;
1102 case release: ls = mbh.F6_release( button ); break;
1103 case neither: break;
1109 case press: ls = mbh.F7_press( button ); break;
1110 case release: ls = mbh.F7_release( button ); break;
1111 case neither: break;
1117 case press: ls = mbh.F8_press( button ); break;
1118 case release: ls = mbh.F8_release( button ); break;
1119 case neither: break;
1125 case press: ls = mbh.F9_press( button ); break;
1126 case release: ls = mbh.F9_release( button ); break;
1127 case neither: break;
1133 case press: ls = mbh.F10_press( button ); break;
1134 case release: ls = mbh.F10_release( button ); break;
1135 case neither: break;
1141 case press: ls = mbh.F11_press( button ); break;
1142 case release: ls = mbh.F11_release( button ); break;
1143 case neither: break;
1149 case press: ls = mbh.F12_press( button ); break;
1150 case release: ls = mbh.F12_release( button ); break;
1151 case neither: break;
1157 case press: ls = mbh.F13_press( button ); break;
1158 case release: ls = mbh.F13_release( button ); break;
1159 case neither: break;
1165 case press: ls = mbh.F14_press( button ); break;
1166 case release: ls = mbh.F14_release( button ); break;
1167 case neither: break;
1173 case press: ls = mbh.F15_press( button ); break;
1174 case release: ls = mbh.F15_release( button ); break;
1175 case neither: break;
1181 case press: ls = mbh.F16_press( button ); break;
1182 case release: ls = mbh.F16_release( button ); break;
1183 case neither: break;
1187 case 0x9027: // global_solo
1189 case press: ls = mbh.global_solo_press( button ); break;
1190 case release: ls = mbh.global_solo_release( button ); break;
1191 case neither: break;
1195 case 0x9050: // option
1197 case press: ls = mbh.option_press( button ); break;
1198 case release: ls = mbh.option_release( button ); break;
1199 case neither: break;
1203 case 0x9049: // cmd_alt
1205 case press: ls = mbh.cmd_alt_press( button ); break;
1206 case release: ls = mbh.cmd_alt_release( button ); break;
1207 case neither: break;
1213 case press: ls = mbh.on_press( button ); break;
1214 case release: ls = mbh.on_release( button ); break;
1215 case neither: break;
1219 case 0x904b: // rec_ready
1221 case press: ls = mbh.rec_ready_press( button ); break;
1222 case release: ls = mbh.rec_ready_release( button ); break;
1223 case neither: break;
1227 case 0x904c: // undo
1229 case press: ls = mbh.undo_press( button ); break;
1230 case release: ls = mbh.undo_release( button ); break;
1231 case neither: break;
1235 case 0x905f: // snapshot
1237 case press: ls = mbh.snapshot_press( button ); break;
1238 case release: ls = mbh.snapshot_release( button ); break;
1239 case neither: break;
1243 case 0x904f: // redo
1245 case press: ls = mbh.redo_press( button ); break;
1246 case release: ls = mbh.redo_release( button ); break;
1247 case neither: break;
1251 case 0x9047: // marker
1253 case press: ls = mbh.marker_press( button ); break;
1254 case release: ls = mbh.marker_release( button ); break;
1255 case neither: break;
1259 case 0x9051: // enter
1261 case press: ls = mbh.enter_press( button ); break;
1262 case release: ls = mbh.enter_release( button ); break;
1263 case neither: break;
1267 case 0x9052: // cancel
1269 case press: ls = mbh.cancel_press( button ); break;
1270 case release: ls = mbh.cancel_release( button ); break;
1271 case neither: break;
1275 case 0x9053: // mixer
1277 case press: ls = mbh.mixer_press( button ); break;
1278 case release: ls = mbh.mixer_release( button ); break;
1279 case neither: break;
1283 case 0x904d: // save
1285 case press: ls = mbh.save_press( button ); break;
1286 case release: ls = mbh.save_release( button ); break;
1287 case neither: break;
1291 case 0x905b: // frm_left
1293 case press: ls = mbh.frm_left_press( button ); break;
1294 case release: ls = mbh.frm_left_release( button ); break;
1295 case neither: break;
1299 case 0x905c: // frm_right
1301 case press: ls = mbh.frm_right_press( button ); break;
1302 case release: ls = mbh.frm_right_release( button ); break;
1303 case neither: break;
1307 case 0x9046: // loop
1309 case press: ls = mbh.loop_press( button ); break;
1310 case release: ls = mbh.loop_release( button ); break;
1311 case neither: break;
1315 case 0x9048: // punch_in
1317 case press: ls = mbh.punch_in_press( button ); break;
1318 case release: ls = mbh.punch_in_release( button ); break;
1319 case neither: break;
1323 case 0x904e: // punch_out
1325 case press: ls = mbh.punch_out_press( button ); break;
1326 case release: ls = mbh.punch_out_release( button ); break;
1327 case neither: break;
1331 case 0x902a: // home
1333 case press: ls = mbh.home_press( button ); break;
1334 case release: ls = mbh.home_release( button ); break;
1335 case neither: break;
1341 case press: ls = mbh.end_press( button ); break;
1342 case release: ls = mbh.end_release( button ); break;
1343 case neither: break;
1347 case 0x902c: // rewind
1349 case press: ls = mbh.rewind_press( button ); break;
1350 case release: ls = mbh.rewind_release( button ); break;
1351 case neither: break;
1355 case 0x902b: // ffwd
1357 case press: ls = mbh.ffwd_press( button ); break;
1358 case release: ls = mbh.ffwd_release( button ); break;
1359 case neither: break;
1363 case 0x905d: // stop
1365 case press: ls = mbh.stop_press( button ); break;
1366 case release: ls = mbh.stop_release( button ); break;
1367 case neither: break;
1371 case 0x905e: // play
1373 case press: ls = mbh.play_press( button ); break;
1374 case release: ls = mbh.play_release( button ); break;
1375 case neither: break;
1379 case 0x901f: // record
1381 case press: ls = mbh.record_press( button ); break;
1382 case release: ls = mbh.record_release( button ); break;
1383 case neither: break;
1387 case 0x9060: // cursor_up
1389 case press: ls = mbh.cursor_up_press( button ); break;
1390 case release: ls = mbh.cursor_up_release( button ); break;
1391 case neither: break;
1395 case 0x9061: // cursor_down
1397 case press: ls = mbh.cursor_down_press( button ); break;
1398 case release: ls = mbh.cursor_down_release( button ); break;
1399 case neither: break;
1403 case 0x9062: // cursor_left
1405 case press: ls = mbh.cursor_left_press( button ); break;
1406 case release: ls = mbh.cursor_left_release( button ); break;
1407 case neither: break;
1411 case 0x9063: // cursor_right
1413 case press: ls = mbh.cursor_right_press( button ); break;
1414 case release: ls = mbh.cursor_right_release( button ); break;
1415 case neither: break;
1421 case press: ls = mbh.dyn_press( button ); break;
1422 case release: ls = mbh.dyn_release( button ); break;
1423 case neither: break;
1427 case 0x9065: // flip
1429 case press: ls = mbh.flip_press( button ); break;
1430 case release: ls = mbh.flip_release( button ); break;
1431 case neither: break;
1435 case 0x9066: // user_a
1437 case press: ls = mbh.user_a_press( button ); break;
1438 case release: ls = mbh.user_a_release( button ); break;
1439 case neither: break;
1443 case 0x9067: // user_b
1445 case press: ls = mbh.user_b_press( button ); break;
1446 case release: ls = mbh.user_b_release( button ); break;
1447 case neither: break;
1451 case 0x9033: // clicking
1453 case press: ls = mbh.clicking_press( button ); break;
1454 case release: ls = mbh.clicking_release( button ); break;
1455 case neither: break;
1460 mbh.update_led( button, ls );