8d68313b7b0b06c0600078e40c2f51b7eab91906
[ardour.git] / libs / surfaces / mackie / bcf_surface_generated.cc
1 /*
2         Generated by scripts/generate-surface.rb
3 */
4
5 #include "bcf_surface.h"
6
7 #include "controls.h"
8 #include "mackie_button_handler.h"
9
10 using namespace Mackie;
11
12 void Mackie::BcfSurface::init_controls()
13 {
14         // intialise groups and strips
15         Group * group = 0;
16         
17         // make sure there are enough strips
18         strips.resize( 7 );
19         
20         group = new Group ( "user" );
21         groups["user"] = group;
22         
23         group = new Group ( "assignment" );
24         groups["assignment"] = group;
25         
26         group = new Group ( "none" );
27         groups["none"] = group;
28         
29         group = new MasterStrip ( "master", 0 );
30         groups["master"] = group;
31         strips[0] = dynamic_cast<Strip*>( group );
32         
33         group = new Strip ( "strip_1", 0 );
34         groups["strip_1"] = group;
35         strips[0] = dynamic_cast<Strip*>( group );
36         
37         group = new Group ( "cursor" );
38         groups["cursor"] = group;
39         
40         group = new Strip ( "strip_2", 1 );
41         groups["strip_2"] = group;
42         strips[1] = dynamic_cast<Strip*>( group );
43         
44         group = new Group ( "automation" );
45         groups["automation"] = group;
46         
47         group = new Group ( "functions" );
48         groups["functions"] = group;
49         
50         group = new Strip ( "strip_3", 2 );
51         groups["strip_3"] = group;
52         strips[2] = dynamic_cast<Strip*>( group );
53         
54         group = new Group ( "display" );
55         groups["display"] = group;
56         
57         group = new Strip ( "strip_4", 3 );
58         groups["strip_4"] = group;
59         strips[3] = dynamic_cast<Strip*>( group );
60         
61         group = new Strip ( "strip_5", 4 );
62         groups["strip_5"] = group;
63         strips[4] = dynamic_cast<Strip*>( group );
64         
65         group = new Strip ( "strip_6", 5 );
66         groups["strip_6"] = group;
67         strips[5] = dynamic_cast<Strip*>( group );
68         
69         group = new Group ( "transport" );
70         groups["transport"] = group;
71         
72         group = new Strip ( "strip_7", 6 );
73         groups["strip_7"] = group;
74         strips[6] = dynamic_cast<Strip*>( group );
75         
76         group = new Group ( "modifiers" );
77         groups["modifiers"] = group;
78         
79         group = new Group ( "bank" );
80         groups["bank"] = group;
81         
82
83         // initialise controls
84         Fader * fader = 0;
85         Pot * pot = 0;
86         Button * button = 0;
87         Led * led = 0;
88
89         group = groups["strip_1"];
90         fader = new Fader ( 0, 1, "gain", *group );
91         faders[0x00] = fader;
92         controls.push_back( fader );
93         group->add( *fader );
94
95         group = groups["strip_2"];
96         fader = new Fader ( 1, 2, "gain", *group );
97         faders[0x01] = fader;
98         controls.push_back( fader );
99         group->add( *fader );
100
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 );
106
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 );
112
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 );
118
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 );
124
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 );
130
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 );
136
137         group = groups["strip_1"];
138         pot = new Pot ( 16, 1, "vpot", *group );
139         pots[0x10] = pot;
140         controls.push_back( pot );
141         group->add( *pot );
142
143         group = groups["strip_2"];
144         pot = new Pot ( 17, 2, "vpot", *group );
145         pots[0x11] = pot;
146         controls.push_back( pot );
147         group->add( *pot );
148
149         group = groups["strip_3"];
150         pot = new Pot ( 18, 3, "vpot", *group );
151         pots[0x12] = pot;
152         controls.push_back( pot );
153         group->add( *pot );
154
155         group = groups["strip_4"];
156         pot = new Pot ( 19, 4, "vpot", *group );
157         pots[0x13] = pot;
158         controls.push_back( pot );
159         group->add( *pot );
160
161         group = groups["strip_5"];
162         pot = new Pot ( 20, 5, "vpot", *group );
163         pots[0x14] = pot;
164         controls.push_back( pot );
165         group->add( *pot );
166
167         group = groups["strip_6"];
168         pot = new Pot ( 21, 6, "vpot", *group );
169         pots[0x15] = pot;
170         controls.push_back( pot );
171         group->add( *pot );
172
173         group = groups["strip_7"];
174         pot = new Pot ( 22, 7, "vpot", *group );
175         pots[0x16] = pot;
176         controls.push_back( pot );
177         group->add( *pot );
178
179         group = groups["none"];
180         pot = new Jog ( 23, 1, "jog", *group );
181         pots[0x17] = pot;
182         controls.push_back( pot );
183         controls_by_name["jog"] = pot;
184         group->add( *pot );
185
186         group = groups["none"];
187         pot = new Pot ( 46, 1, "external", *group );
188         pots[0x2e] = pot;
189         controls.push_back( pot );
190         controls_by_name["external"] = pot;
191         group->add( *pot );
192
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 );
198
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 );
204
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 );
210
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 );
216
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 );
222
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 );
228
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 );
234
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 );
240
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 );
246
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 );
252
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 );
258
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 );
264
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 );
270
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 );
276
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 );
282
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 );
288
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 );
294
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 );
300
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 );
306
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 );
312
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 );
318
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 );
324
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 );
330
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 );
336
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 );
342
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 );
348
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 );
354
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 );
360
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 );
366
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 );
372
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 );
378
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 );
384
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 );
390
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 );
396
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 );
402
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 );
409
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 );
416
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 );
423
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 );
430
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 );
437
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 );
444
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 );
451
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 );
458
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 );
465
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 );
472
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 );
479
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 );
486
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 );
493
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 );
500
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 );
507
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 );
514
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 );
521
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 );
528
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 );
535
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 );
542
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 );
549
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 );
556
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 );
563
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 );
570
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 );
577
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 );
584
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 );
591
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 );
598
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 );
605
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 );
612
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 );
619
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 );
626
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 );
633
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 );
640
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 );
647
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 );
654
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 );
661
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 );
668
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 );
675
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 );
682
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 );
689
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 );
696
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 );
703
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 );
710
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 );
717
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 );
724
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 );
731
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 );
738
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 );
745
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 );
752
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 );
759
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 );
766
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 );
773
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 );
780
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 );
787
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 );
794
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 );
801
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 );
808
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 );
815
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 );
822
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 );
829
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 );
836
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 );
843
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 );
849
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 );
855
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 );
861
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 );
867
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 );
873
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 );
879
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 );
885
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 );
891
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 );
897
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 );
904
905         group = groups["none"];
906         led = new Led ( 113, 1, "timecode", *group );
907         leds[0x71] = led;
908         controls.push_back( led );
909         controls_by_name["timecode"] = led;
910         group->add( *led );
911
912         group = groups["none"];
913         led = new Led ( 114, 1, "beats", *group );
914         leds[0x72] = led;
915         controls.push_back( led );
916         controls_by_name["beats"] = led;
917         group->add( *led );
918
919         group = groups["none"];
920         led = new Led ( 115, 1, "solo", *group );
921         leds[0x73] = led;
922         controls.push_back( led );
923         controls_by_name["solo"] = led;
924         group->add( *led );
925
926         group = groups["none"];
927         led = new Led ( 118, 1, "relay_click", *group );
928         leds[0x76] = led;
929         controls.push_back( led );
930         controls_by_name["relay_click"] = led;
931         group->add( *led );
932
933 }
934
935 void Mackie::BcfSurface::handle_button( MackieButtonHandler & mbh, ButtonState bs, Button & button )
936 {
937         if ( bs != press && bs != release )
938         {
939                 mbh.update_led( button, none );
940                 return;
941         }
942         
943         LedState ls;
944         switch ( button.id() )
945         {
946
947                 case 0x9028: // io
948                         switch ( bs ) {
949                                 case press: ls = mbh.io_press( button ); break;
950                                 case release: ls = mbh.io_release( button ); break;
951                                 case neither: break;
952                         }
953                         break;
954
955                 case 0x905a: // sends
956                         switch ( bs ) {
957                                 case press: ls = mbh.sends_press( button ); break;
958                                 case release: ls = mbh.sends_release( button ); break;
959                                 case neither: break;
960                         }
961                         break;
962
963                 case 0x9059: // pan
964                         switch ( bs ) {
965                                 case press: ls = mbh.pan_press( button ); break;
966                                 case release: ls = mbh.pan_release( button ); break;
967                                 case neither: break;
968                         }
969                         break;
970
971                 case 0x9057: // plugin
972                         switch ( bs ) {
973                                 case press: ls = mbh.plugin_press( button ); break;
974                                 case release: ls = mbh.plugin_release( button ); break;
975                                 case neither: break;
976                         }
977                         break;
978
979                 case 0x9058: // drop
980                         switch ( bs ) {
981                                 case press: ls = mbh.drop_press( button ); break;
982                                 case release: ls = mbh.drop_release( button ); break;
983                                 case neither: break;
984                         }
985                         break;
986
987                 case 0x902d: // zoom
988                         switch ( bs ) {
989                                 case press: ls = mbh.zoom_press( button ); break;
990                                 case release: ls = mbh.zoom_release( button ); break;
991                                 case neither: break;
992                         }
993                         break;
994
995                 case 0x902e: // left
996                         switch ( bs ) {
997                                 case press: ls = mbh.left_press( button ); break;
998                                 case release: ls = mbh.left_release( button ); break;
999                                 case neither: break;
1000                         }
1001                         break;
1002
1003                 case 0x902f: // right
1004                         switch ( bs ) {
1005                                 case press: ls = mbh.right_press( button ); break;
1006                                 case release: ls = mbh.right_release( button ); break;
1007                                 case neither: break;
1008                         }
1009                         break;
1010
1011                 case 0x9030: // channel_left
1012                         switch ( bs ) {
1013                                 case press: ls = mbh.channel_left_press( button ); break;
1014                                 case release: ls = mbh.channel_left_release( button ); break;
1015                                 case neither: break;
1016                         }
1017                         break;
1018
1019                 case 0x9031: // channel_right
1020                         switch ( bs ) {
1021                                 case press: ls = mbh.channel_right_press( button ); break;
1022                                 case release: ls = mbh.channel_right_release( button ); break;
1023                                 case neither: break;
1024                         }
1025                         break;
1026
1027                 case 0x9032: // scrub
1028                         switch ( bs ) {
1029                                 case press: ls = mbh.scrub_press( button ); break;
1030                                 case release: ls = mbh.scrub_release( button ); break;
1031                                 case neither: break;
1032                         }
1033                         break;
1034
1035                 case 0x9056: // edit
1036                         switch ( bs ) {
1037                                 case press: ls = mbh.edit_press( button ); break;
1038                                 case release: ls = mbh.edit_release( button ); break;
1039                                 case neither: break;
1040                         }
1041                         break;
1042
1043                 case 0x9034: // name_value
1044                         switch ( bs ) {
1045                                 case press: ls = mbh.name_value_press( button ); break;
1046                                 case release: ls = mbh.name_value_release( button ); break;
1047                                 case neither: break;
1048                         }
1049                         break;
1050
1051                 case 0x9035: // timecode_beats
1052                         switch ( bs ) {
1053                                 case press: ls = mbh.timecode_beats_press( button ); break;
1054                                 case release: ls = mbh.timecode_beats_release( button ); break;
1055                                 case neither: break;
1056                         }
1057                         break;
1058
1059                 case 0x9036: // F1
1060                         switch ( bs ) {
1061                                 case press: ls = mbh.F1_press( button ); break;
1062                                 case release: ls = mbh.F1_release( button ); break;
1063                                 case neither: break;
1064                         }
1065                         break;
1066
1067                 case 0x9037: // F2
1068                         switch ( bs ) {
1069                                 case press: ls = mbh.F2_press( button ); break;
1070                                 case release: ls = mbh.F2_release( button ); break;
1071                                 case neither: break;
1072                         }
1073                         break;
1074
1075                 case 0x9038: // F3
1076                         switch ( bs ) {
1077                                 case press: ls = mbh.F3_press( button ); break;
1078                                 case release: ls = mbh.F3_release( button ); break;
1079                                 case neither: break;
1080                         }
1081                         break;
1082
1083                 case 0x9039: // F4
1084                         switch ( bs ) {
1085                                 case press: ls = mbh.F4_press( button ); break;
1086                                 case release: ls = mbh.F4_release( button ); break;
1087                                 case neither: break;
1088                         }
1089                         break;
1090
1091                 case 0x903a: // F5
1092                         switch ( bs ) {
1093                                 case press: ls = mbh.F5_press( button ); break;
1094                                 case release: ls = mbh.F5_release( button ); break;
1095                                 case neither: break;
1096                         }
1097                         break;
1098
1099                 case 0x903b: // F6
1100                         switch ( bs ) {
1101                                 case press: ls = mbh.F6_press( button ); break;
1102                                 case release: ls = mbh.F6_release( button ); break;
1103                                 case neither: break;
1104                         }
1105                         break;
1106
1107                 case 0x903c: // F7
1108                         switch ( bs ) {
1109                                 case press: ls = mbh.F7_press( button ); break;
1110                                 case release: ls = mbh.F7_release( button ); break;
1111                                 case neither: break;
1112                         }
1113                         break;
1114
1115                 case 0x903d: // F8
1116                         switch ( bs ) {
1117                                 case press: ls = mbh.F8_press( button ); break;
1118                                 case release: ls = mbh.F8_release( button ); break;
1119                                 case neither: break;
1120                         }
1121                         break;
1122
1123                 case 0x903e: // F9
1124                         switch ( bs ) {
1125                                 case press: ls = mbh.F9_press( button ); break;
1126                                 case release: ls = mbh.F9_release( button ); break;
1127                                 case neither: break;
1128                         }
1129                         break;
1130
1131                 case 0x903f: // F10
1132                         switch ( bs ) {
1133                                 case press: ls = mbh.F10_press( button ); break;
1134                                 case release: ls = mbh.F10_release( button ); break;
1135                                 case neither: break;
1136                         }
1137                         break;
1138
1139                 case 0x9040: // F11
1140                         switch ( bs ) {
1141                                 case press: ls = mbh.F11_press( button ); break;
1142                                 case release: ls = mbh.F11_release( button ); break;
1143                                 case neither: break;
1144                         }
1145                         break;
1146
1147                 case 0x9041: // F12
1148                         switch ( bs ) {
1149                                 case press: ls = mbh.F12_press( button ); break;
1150                                 case release: ls = mbh.F12_release( button ); break;
1151                                 case neither: break;
1152                         }
1153                         break;
1154
1155                 case 0x9042: // F13
1156                         switch ( bs ) {
1157                                 case press: ls = mbh.F13_press( button ); break;
1158                                 case release: ls = mbh.F13_release( button ); break;
1159                                 case neither: break;
1160                         }
1161                         break;
1162
1163                 case 0x9043: // F14
1164                         switch ( bs ) {
1165                                 case press: ls = mbh.F14_press( button ); break;
1166                                 case release: ls = mbh.F14_release( button ); break;
1167                                 case neither: break;
1168                         }
1169                         break;
1170
1171                 case 0x9044: // F15
1172                         switch ( bs ) {
1173                                 case press: ls = mbh.F15_press( button ); break;
1174                                 case release: ls = mbh.F15_release( button ); break;
1175                                 case neither: break;
1176                         }
1177                         break;
1178
1179                 case 0x9045: // F16
1180                         switch ( bs ) {
1181                                 case press: ls = mbh.F16_press( button ); break;
1182                                 case release: ls = mbh.F16_release( button ); break;
1183                                 case neither: break;
1184                         }
1185                         break;
1186
1187                 case 0x9027: // global_solo
1188                         switch ( bs ) {
1189                                 case press: ls = mbh.global_solo_press( button ); break;
1190                                 case release: ls = mbh.global_solo_release( button ); break;
1191                                 case neither: break;
1192                         }
1193                         break;
1194
1195                 case 0x9050: // option
1196                         switch ( bs ) {
1197                                 case press: ls = mbh.option_press( button ); break;
1198                                 case release: ls = mbh.option_release( button ); break;
1199                                 case neither: break;
1200                         }
1201                         break;
1202
1203                 case 0x9049: // cmd_alt
1204                         switch ( bs ) {
1205                                 case press: ls = mbh.cmd_alt_press( button ); break;
1206                                 case release: ls = mbh.cmd_alt_release( button ); break;
1207                                 case neither: break;
1208                         }
1209                         break;
1210
1211                 case 0x904a: // on
1212                         switch ( bs ) {
1213                                 case press: ls = mbh.on_press( button ); break;
1214                                 case release: ls = mbh.on_release( button ); break;
1215                                 case neither: break;
1216                         }
1217                         break;
1218
1219                 case 0x904b: // rec_ready
1220                         switch ( bs ) {
1221                                 case press: ls = mbh.rec_ready_press( button ); break;
1222                                 case release: ls = mbh.rec_ready_release( button ); break;
1223                                 case neither: break;
1224                         }
1225                         break;
1226
1227                 case 0x904c: // undo
1228                         switch ( bs ) {
1229                                 case press: ls = mbh.undo_press( button ); break;
1230                                 case release: ls = mbh.undo_release( button ); break;
1231                                 case neither: break;
1232                         }
1233                         break;
1234
1235                 case 0x905f: // snapshot
1236                         switch ( bs ) {
1237                                 case press: ls = mbh.snapshot_press( button ); break;
1238                                 case release: ls = mbh.snapshot_release( button ); break;
1239                                 case neither: break;
1240                         }
1241                         break;
1242
1243                 case 0x904f: // redo
1244                         switch ( bs ) {
1245                                 case press: ls = mbh.redo_press( button ); break;
1246                                 case release: ls = mbh.redo_release( button ); break;
1247                                 case neither: break;
1248                         }
1249                         break;
1250
1251                 case 0x9047: // marker
1252                         switch ( bs ) {
1253                                 case press: ls = mbh.marker_press( button ); break;
1254                                 case release: ls = mbh.marker_release( button ); break;
1255                                 case neither: break;
1256                         }
1257                         break;
1258
1259                 case 0x9051: // enter
1260                         switch ( bs ) {
1261                                 case press: ls = mbh.enter_press( button ); break;
1262                                 case release: ls = mbh.enter_release( button ); break;
1263                                 case neither: break;
1264                         }
1265                         break;
1266
1267                 case 0x9052: // cancel
1268                         switch ( bs ) {
1269                                 case press: ls = mbh.cancel_press( button ); break;
1270                                 case release: ls = mbh.cancel_release( button ); break;
1271                                 case neither: break;
1272                         }
1273                         break;
1274
1275                 case 0x9053: // mixer
1276                         switch ( bs ) {
1277                                 case press: ls = mbh.mixer_press( button ); break;
1278                                 case release: ls = mbh.mixer_release( button ); break;
1279                                 case neither: break;
1280                         }
1281                         break;
1282
1283                 case 0x904d: // save
1284                         switch ( bs ) {
1285                                 case press: ls = mbh.save_press( button ); break;
1286                                 case release: ls = mbh.save_release( button ); break;
1287                                 case neither: break;
1288                         }
1289                         break;
1290
1291                 case 0x905b: // frm_left
1292                         switch ( bs ) {
1293                                 case press: ls = mbh.frm_left_press( button ); break;
1294                                 case release: ls = mbh.frm_left_release( button ); break;
1295                                 case neither: break;
1296                         }
1297                         break;
1298
1299                 case 0x905c: // frm_right
1300                         switch ( bs ) {
1301                                 case press: ls = mbh.frm_right_press( button ); break;
1302                                 case release: ls = mbh.frm_right_release( button ); break;
1303                                 case neither: break;
1304                         }
1305                         break;
1306
1307                 case 0x9046: // loop
1308                         switch ( bs ) {
1309                                 case press: ls = mbh.loop_press( button ); break;
1310                                 case release: ls = mbh.loop_release( button ); break;
1311                                 case neither: break;
1312                         }
1313                         break;
1314
1315                 case 0x9048: // punch_in
1316                         switch ( bs ) {
1317                                 case press: ls = mbh.punch_in_press( button ); break;
1318                                 case release: ls = mbh.punch_in_release( button ); break;
1319                                 case neither: break;
1320                         }
1321                         break;
1322
1323                 case 0x904e: // punch_out
1324                         switch ( bs ) {
1325                                 case press: ls = mbh.punch_out_press( button ); break;
1326                                 case release: ls = mbh.punch_out_release( button ); break;
1327                                 case neither: break;
1328                         }
1329                         break;
1330
1331                 case 0x902a: // home
1332                         switch ( bs ) {
1333                                 case press: ls = mbh.home_press( button ); break;
1334                                 case release: ls = mbh.home_release( button ); break;
1335                                 case neither: break;
1336                         }
1337                         break;
1338
1339                 case 0x9029: // end
1340                         switch ( bs ) {
1341                                 case press: ls = mbh.end_press( button ); break;
1342                                 case release: ls = mbh.end_release( button ); break;
1343                                 case neither: break;
1344                         }
1345                         break;
1346
1347                 case 0x902c: // rewind
1348                         switch ( bs ) {
1349                                 case press: ls = mbh.rewind_press( button ); break;
1350                                 case release: ls = mbh.rewind_release( button ); break;
1351                                 case neither: break;
1352                         }
1353                         break;
1354
1355                 case 0x902b: // ffwd
1356                         switch ( bs ) {
1357                                 case press: ls = mbh.ffwd_press( button ); break;
1358                                 case release: ls = mbh.ffwd_release( button ); break;
1359                                 case neither: break;
1360                         }
1361                         break;
1362
1363                 case 0x905d: // stop
1364                         switch ( bs ) {
1365                                 case press: ls = mbh.stop_press( button ); break;
1366                                 case release: ls = mbh.stop_release( button ); break;
1367                                 case neither: break;
1368                         }
1369                         break;
1370
1371                 case 0x905e: // play
1372                         switch ( bs ) {
1373                                 case press: ls = mbh.play_press( button ); break;
1374                                 case release: ls = mbh.play_release( button ); break;
1375                                 case neither: break;
1376                         }
1377                         break;
1378
1379                 case 0x901f: // record
1380                         switch ( bs ) {
1381                                 case press: ls = mbh.record_press( button ); break;
1382                                 case release: ls = mbh.record_release( button ); break;
1383                                 case neither: break;
1384                         }
1385                         break;
1386
1387                 case 0x9060: // cursor_up
1388                         switch ( bs ) {
1389                                 case press: ls = mbh.cursor_up_press( button ); break;
1390                                 case release: ls = mbh.cursor_up_release( button ); break;
1391                                 case neither: break;
1392                         }
1393                         break;
1394
1395                 case 0x9061: // cursor_down
1396                         switch ( bs ) {
1397                                 case press: ls = mbh.cursor_down_press( button ); break;
1398                                 case release: ls = mbh.cursor_down_release( button ); break;
1399                                 case neither: break;
1400                         }
1401                         break;
1402
1403                 case 0x9062: // cursor_left
1404                         switch ( bs ) {
1405                                 case press: ls = mbh.cursor_left_press( button ); break;
1406                                 case release: ls = mbh.cursor_left_release( button ); break;
1407                                 case neither: break;
1408                         }
1409                         break;
1410
1411                 case 0x9063: // cursor_right
1412                         switch ( bs ) {
1413                                 case press: ls = mbh.cursor_right_press( button ); break;
1414                                 case release: ls = mbh.cursor_right_release( button ); break;
1415                                 case neither: break;
1416                         }
1417                         break;
1418
1419                 case 0x9064: // dyn
1420                         switch ( bs ) {
1421                                 case press: ls = mbh.dyn_press( button ); break;
1422                                 case release: ls = mbh.dyn_release( button ); break;
1423                                 case neither: break;
1424                         }
1425                         break;
1426
1427                 case 0x9065: // flip
1428                         switch ( bs ) {
1429                                 case press: ls = mbh.flip_press( button ); break;
1430                                 case release: ls = mbh.flip_release( button ); break;
1431                                 case neither: break;
1432                         }
1433                         break;
1434
1435                 case 0x9066: // user_a
1436                         switch ( bs ) {
1437                                 case press: ls = mbh.user_a_press( button ); break;
1438                                 case release: ls = mbh.user_a_release( button ); break;
1439                                 case neither: break;
1440                         }
1441                         break;
1442
1443                 case 0x9067: // user_b
1444                         switch ( bs ) {
1445                                 case press: ls = mbh.user_b_press( button ); break;
1446                                 case release: ls = mbh.user_b_release( button ); break;
1447                                 case neither: break;
1448                         }
1449                         break;
1450
1451                 case 0x9033: // clicking
1452                         switch ( bs ) {
1453                                 case press: ls = mbh.clicking_press( button ); break;
1454                                 case release: ls = mbh.clicking_release( button ); break;
1455                                 case neither: break;
1456                         }
1457                         break;
1458
1459         }
1460         mbh.update_led( button, ls );
1461 }