MCP: add debug tracing for timeouts
[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["master"];
90         fader = new Fader  (0x07, 1, "gain", *group);
91         faders[0x07] = fader;
92         controls.push_back (fader);
93         group->add (*fader);
94
95         group = groups["none"];
96         pot = new Jog  (0x17, 1, "jog", *group);
97         pots[0x17] = pot;
98         controls.push_back (pot);
99         controls_by_name["jog"] = pot;
100         group->add (*pot);
101
102         group = groups["none"];
103         pot = new Pot (0x2e, 1, "external", *group);
104         pots[0x2e] = pot;
105         controls.push_back (pot);
106         controls_by_name["external"] = pot;
107         group->add (*pot);
108
109         group = groups["assignment"];
110         button = new Button (0x28, 1, "io", *group);
111         buttons[0x28] = button;
112         controls.push_back (button);
113         controls_by_name["io"] = button;
114         group->add (*button);
115
116         group = groups["assignment"];
117         button = new Button  (0x5a, 1, "sends", *group);
118         buttons[0x5a] = button;
119         controls.push_back (button);
120         controls_by_name["sends"] = button;
121         group->add (*button);
122
123         group = groups["assignment"];
124         button = new Button  (0x59, 1, "pan", *group);
125         buttons[0x59] = button;
126         controls.push_back (button);
127         controls_by_name["pan"] = button;
128         group->add (*button);
129
130         group = groups["assignment"];
131         button = new Button  (0x57, 1, "plugin", *group);
132         buttons[0x57] = button;
133         controls.push_back (button);
134         controls_by_name["plugin"] = button;
135         group->add (*button);
136
137         group = groups["functions"];
138         button = new Button  (0x58, 1, "drop", *group);
139         buttons[0x58] = button;
140         controls.push_back (button);
141         controls_by_name["drop"] = button;
142         group->add (*button);
143
144         group = groups["assignment"];
145         button = new Button  (0x2d, 1, "zoom", *group);
146         buttons[0x2d] = button;
147         controls.push_back (button);
148         controls_by_name["zoom"] = button;
149         group->add (*button);
150
151         group = groups["bank"];
152         button = new Button  (0x2e, 1, "left", *group);
153         buttons[0x2e] = button;
154         controls.push_back (button);
155         controls_by_name["left"] = button;
156         group->add (*button);
157
158         group = groups["bank"];
159         button = new Button  (0x2f, 1, "right", *group);
160         buttons[0x2f] = button;
161         controls.push_back (button);
162         controls_by_name["right"] = button;
163         group->add (*button);
164
165         group = groups["bank"];
166         button = new Button  (0x30, 1, "channel_left", *group);
167         buttons[0x30] = button;
168         controls.push_back (button);
169         controls_by_name["channel_left"] = button;
170         group->add (*button);
171
172         group = groups["bank"];
173         button = new Button  (0x31, 1, "channel_right", *group);
174         buttons[0x31] = button;
175         controls.push_back (button);
176         controls_by_name["channel_right"] = button;
177         group->add (*button);
178
179         group = groups["none"];
180         button = new Button  (0x32, 1, "scrub", *group);
181         buttons[0x32] = button;
182         controls.push_back (button);
183         controls_by_name["scrub"] = button;
184         group->add (*button);
185
186         group = groups["none"];
187         button = new Button  (0x56, 1, "edit", *group);
188         buttons[0x56] = button;
189         controls.push_back (button);
190         controls_by_name["edit"] = button;
191         group->add (*button);
192
193         group = groups["display"];
194         button = new Button  (0x34, 1, "name_value", *group);
195         buttons[0x34] = button;
196         controls.push_back (button);
197         controls_by_name["name_value"] = button;
198         group->add (*button);
199
200         group = groups["display"];
201         button = new Button  (0x35, 1, "timecode_beats", *group);
202         buttons[0x35] = button;
203         controls.push_back (button);
204         controls_by_name["timecode_beats"] = button;
205         group->add (*button);
206
207         group = groups["none"];
208         button = new Button  (0x36, 1, "F1", *group);
209         buttons[0x36] = button;
210         controls.push_back (button);
211         controls_by_name["F1"] = button;
212         group->add (*button);
213
214         group = groups["none"];
215         button = new Button  (0x37, 1, "F2", *group);
216         buttons[0x37] = button;
217         controls.push_back (button);
218         controls_by_name["F2"] = button;
219         group->add (*button);
220
221         group = groups["none"];
222         button = new Button  (0x38, 1, "F3", *group);
223         buttons[0x38] = button;
224         controls.push_back (button);
225         controls_by_name["F3"] = button;
226         group->add (*button);
227
228         group = groups["none"];
229         button = new Button  (0x39, 1, "F4", *group);
230         buttons[0x39] = button;
231         controls.push_back (button);
232         controls_by_name["F4"] = button;
233         group->add (*button);
234
235         group = groups["none"];
236         button = new Button  (0x3a, 1, "F5", *group);
237         buttons[0x3a] = button;
238         controls.push_back (button);
239         controls_by_name["F5"] = button;
240         group->add (*button);
241
242         group = groups["none"];
243         button = new Button  (0x3b, 1, "F6", *group);
244         buttons[0x3b] = button;
245         controls.push_back (button);
246         controls_by_name["F6"] = button;
247         group->add (*button);
248
249         group = groups["none"];
250         button = new Button  (0x3c, 1, "F7", *group);
251         buttons[0x3c] = button;
252         controls.push_back (button);
253         controls_by_name["F7"] = button;
254         group->add (*button);
255
256         group = groups["none"];
257         button = new Button  (0x3d, 1, "F8", *group);
258         buttons[0x3d] = button;
259         controls.push_back (button);
260         controls_by_name["F8"] = button;
261         group->add (*button);
262
263         group = groups["none"];
264         button = new Button  (0x3e, 1, "F9", *group);
265         buttons[0x3e] = button;
266         controls.push_back (button);
267         controls_by_name["F9"] = button;
268         group->add (*button);
269
270         group = groups["none"];
271         button = new Button  (0x3f, 1, "F10", *group);
272         buttons[0x3f] = button;
273         controls.push_back (button);
274         controls_by_name["F10"] = button;
275         group->add (*button);
276
277         group = groups["none"];
278         button = new Button  (0x40, 1, "F11", *group);
279         buttons[0x40] = button;
280         controls.push_back (button);
281         controls_by_name["F11"] = button;
282         group->add (*button);
283
284         group = groups["none"];
285         button = new Button  (0x41, 1, "F12", *group);
286         buttons[0x41] = button;
287         controls.push_back (button);
288         controls_by_name["F12"] = button;
289         group->add (*button);
290
291         group = groups["none"];
292         button = new Button  (0x42, 1, "F13", *group);
293         buttons[0x42] = button;
294         controls.push_back (button);
295         controls_by_name["F13"] = button;
296         group->add (*button);
297
298         group = groups["none"];
299         button = new Button  (0x43, 1, "F14", *group);
300         buttons[0x43] = button;
301         controls.push_back (button);
302         controls_by_name["F14"] = button;
303         group->add (*button);
304
305         group = groups["none"];
306         button = new Button  (0x44, 1, "F15", *group);
307         buttons[0x44] = button;
308         controls.push_back (button);
309         controls_by_name["F15"] = button;
310         group->add (*button);
311
312         group = groups["none"];
313         button = new Button  (0x45, 1, "F16", *group);
314         buttons[0x45] = button;
315         controls.push_back (button);
316         controls_by_name["F16"] = button;
317         group->add (*button);
318
319         group = groups["none"];
320         button = new Button  (0x27, 1, "global_solo", *group);
321         buttons[0x27] = button;
322         controls.push_back (button);
323         controls_by_name["global_solo"] = button;
324         group->add (*button);
325
326         group = groups["modifiers"];
327         button = new Button  (0x50, 1, "option", *group);
328         buttons[0x50] = button;
329         controls.push_back (button);
330         controls_by_name["option"] = button;
331         group->add (*button);
332
333         group = groups["modifiers"];
334         button = new Button  (0x49, 1, "cmd_alt", *group);
335         buttons[0x49] = button;
336         controls.push_back (button);
337         controls_by_name["cmd_alt"] = button;
338         group->add (*button);
339
340         group = groups["automation"];
341         button = new Button  (0x4a, 1, "on", *group);
342         buttons[0x4a] = button;
343         controls.push_back (button);
344         controls_by_name["on"] = button;
345         group->add (*button);
346
347         group = groups["automation"];
348         button = new Button  (0x4b, 1, "rec_ready", *group);
349         buttons[0x4b] = button;
350         controls.push_back (button);
351         controls_by_name["rec_ready"] = button;
352         group->add (*button);
353
354         group = groups["functions"];
355         button = new Button  (0x4c, 1, "undo", *group);
356         buttons[0x4c] = button;
357         controls.push_back (button);
358         controls_by_name["undo"] = button;
359         group->add (*button);
360
361         group = groups["automation"];
362         button = new Button  (0x5f, 1, "snapshot", *group);
363         buttons[0x5f] = button;
364         controls.push_back (button);
365         controls_by_name["snapshot"] = button;
366         group->add (*button);
367
368         group = groups["functions"];
369         button = new Button  (0x4f, 1, "redo", *group);
370         buttons[0x4f] = button;
371         controls.push_back (button);
372         controls_by_name["redo"] = button;
373         group->add (*button);
374
375         group = groups["functions"];
376         button = new Button  (0x47, 1, "marker", *group);
377         buttons[0x47] = button;
378         controls.push_back (button);
379         controls_by_name["marker"] = button;
380         group->add (*button);
381
382         group = groups["functions"];
383         button = new Button  (0x51, 1, "enter", *group);
384         buttons[0x51] = button;
385         controls.push_back (button);
386         controls_by_name["enter"] = button;
387         group->add (*button);
388
389         group = groups["functions"];
390         button = new Button  (0x52, 1, "cancel", *group);
391         buttons[0x52] = button;
392         controls.push_back (button);
393         controls_by_name["cancel"] = button;
394         group->add (*button);
395
396         group = groups["functions"];
397         button = new Button  (0x53, 1, "mixer", *group);
398         buttons[0x53] = button;
399         controls.push_back (button);
400         controls_by_name["mixer"] = button;
401         group->add (*button);
402
403         group = groups["functions"];
404         button = new Button  (0x4d, 1, "save", *group);
405         buttons[0x4d] = button;
406         controls.push_back (button);
407         controls_by_name["save"] = button;
408         group->add (*button);
409
410         group = groups["transport"];
411         button = new Button  (0x5b, 1, "frm_left", *group);
412         buttons[0x5b] = button;
413         controls.push_back (button);
414         controls_by_name["frm_left"] = button;
415         group->add (*button);
416
417         group = groups["transport"];
418         button = new Button  (0x5c, 1, "frm_right", *group);
419         buttons[0x5c] = button;
420         controls.push_back (button);
421         controls_by_name["frm_right"] = button;
422         group->add (*button);
423
424         group = groups["transport"];
425         button = new Button  (0x46, 1, "loop", *group);
426         buttons[0x46] = button;
427         controls.push_back (button);
428         controls_by_name["loop"] = button;
429         group->add (*button);
430
431         group = groups["transport"];
432         button = new Button  (0x48, 1, "punch_in", *group);
433         buttons[0x48] = button;
434         controls.push_back (button);
435         controls_by_name["punch_in"] = button;
436         group->add (*button);
437
438         group = groups["transport"];
439         button = new Button  (0x4e, 1, "punch_out", *group);
440         buttons[0x4e] = button;
441         controls.push_back (button);
442         controls_by_name["punch_out"] = button;
443         group->add (*button);
444
445         group = groups["transport"];
446         button = new Button  (0x2a, 1, "home", *group);
447         buttons[0x2a] = button;
448         controls.push_back (button);
449         controls_by_name["home"] = button;
450         group->add (*button);
451
452         group = groups["transport"];
453         button = new Button (0x29, 1, "end", *group);
454         buttons[0x29] = button;
455         controls.push_back (button);
456         controls_by_name["end"] = button;
457         group->add (*button);
458
459         group = groups["transport"];
460         button = new Button (0x2c, 1, "rewind", *group);
461         buttons[0x2c] = button;
462         controls.push_back (button);
463         controls_by_name["rewind"] = button;
464         group->add (*button);
465
466         group = groups["transport"];
467         button = new Button (0x2b, 1, "ffwd", *group);
468         buttons[0x2b] = button;
469         controls.push_back (button);
470         controls_by_name["ffwd"] = button;
471         group->add (*button);
472
473         group = groups["transport"];
474         button = new Button (0x5d, 1, "stop", *group);
475         buttons[0x5d] = button;
476         controls.push_back (button);
477         controls_by_name["stop"] = button;
478         group->add (*button);
479
480         group = groups["transport"];
481         button = new Button (0x5e, 1, "play", *group);
482         buttons[0x5e] = button;
483         controls.push_back (button);
484         controls_by_name["play"] = button;
485         group->add (*button);
486
487         group = groups["transport"];
488         button = new Button (0x1f, 1, "record", *group);
489         buttons[0x1f] = button;
490         controls.push_back (button);
491         controls_by_name["record"] = button;
492         group->add (*button);
493
494         group = groups["cursor"];
495         button = new Button (0x60, 1, "cursor_up", *group);
496         buttons[0x60] = button;
497         controls.push_back (button);
498         controls_by_name["cursor_up"] = button;
499         group->add (*button);
500
501         group = groups["cursor"];
502         button = new Button (0x61, 1, "cursor_down", *group);
503         buttons[0x61] = button;
504         controls.push_back (button);
505         controls_by_name["cursor_down"] = button;
506         group->add (*button);
507
508         group = groups["cursor"];
509         button = new Button (0x62, 1, "cursor_left", *group);
510         buttons[0x62] = button;
511         controls.push_back (button);
512         controls_by_name["cursor_left"] = button;
513         group->add (*button);
514
515         group = groups["cursor"];
516         button = new Button (0x63, 1, "cursor_right", *group);
517         buttons[0x63] = button;
518         controls.push_back (button);
519         controls_by_name["cursor_right"] = button;
520         group->add (*button);
521
522         group = groups["none"];
523         button = new Button (0x64, 1, "dyn", *group);
524         buttons[0x64] = button;
525         controls.push_back (button);
526         controls_by_name["dyn"] = button;
527         group->add (*button);
528
529         group = groups["none"];
530         button = new Button (0x65, 1, "flip", *group);
531         buttons[0x65] = button;
532         controls.push_back (button);
533         controls_by_name["flip"] = button;
534         group->add (*button);
535
536         group = groups["user"];
537         button = new Button (0x66, 1, "user_a", *group);
538         buttons[0x66] = button;
539         controls.push_back (button);
540         controls_by_name["user_a"] = button;
541         group->add (*button);
542
543         group = groups["user"];
544         button = new Button (0x67, 1, "user_b", *group);
545         buttons[0x67] = button;
546         controls.push_back (button);
547         controls_by_name["user_b"] = button;
548         group->add (*button);
549
550         group = groups["master"];
551         button = new Button (0x17, 1, "mute", *group);
552         buttons[0x17] = button;
553         controls.push_back (button);
554         group->add (*button);
555
556         group = groups["none"];
557         button = new Button (0x33, 1, "clicking", *group);
558         buttons[0x33] = button;
559         controls.push_back (button);
560         controls_by_name["clicking"] = button;
561         group->add (*button);
562
563         group = groups["none"];
564         led = new Led  (0x71, 1, "timecode", *group);
565         leds[0x71] = led;
566         controls.push_back (led);
567         controls_by_name["timecode"] = led;
568         group->add (*led);
569
570         group = groups["none"];
571         led = new Led  (0x72, 1, "beats", *group);
572         leds[0x72] = led;
573         controls.push_back (led);
574         controls_by_name["beats"] = led;
575         group->add (*led);
576
577         group = groups["none"];
578         led = new Led  (0x73, 1, "solo", *group);
579         leds[0x73] = led;
580         controls.push_back (led);
581         controls_by_name["solo"] = led;
582         group->add (*led);
583
584         group = groups["none"];
585         led = new Led  (0x76, 1, "relay_click", *group);
586         leds[0x76] = led;
587         controls.push_back (led);
588         controls_by_name["relay_click"] = led;
589         group->add (*led);
590
591 }
592
593 void Mackie::BcfSurface::handle_button (MackieButtonHandler & mbh, ButtonState bs, Button & button)
594 {
595         if  (bs != press && bs != release)
596         {
597                 mbh.update_led (button, none);
598                 return;
599         }
600         
601         LedState ls;
602         switch  (button.id())
603         {
604
605                 case 0x9028: // io
606                         switch  (bs) {
607                                 case press: ls = mbh.io_press (button); break;
608                                 case release: ls = mbh.io_release (button); break;
609                                 case neither: break;
610                         }
611                         break;
612
613                 case 0x905a: // sends
614                         switch  (bs) {
615                                 case press: ls = mbh.sends_press (button); break;
616                                 case release: ls = mbh.sends_release (button); break;
617                                 case neither: break;
618                         }
619                         break;
620
621                 case 0x9059: // pan
622                         switch  (bs) {
623                                 case press: ls = mbh.pan_press (button); break;
624                                 case release: ls = mbh.pan_release (button); break;
625                                 case neither: break;
626                         }
627                         break;
628
629                 case 0x9057: // plugin
630                         switch  (bs) {
631                                 case press: ls = mbh.plugin_press (button); break;
632                                 case release: ls = mbh.plugin_release (button); break;
633                                 case neither: break;
634                         }
635                         break;
636
637                 case 0x9058: // drop
638                         switch  (bs) {
639                                 case press: ls = mbh.drop_press (button); break;
640                                 case release: ls = mbh.drop_release (button); break;
641                                 case neither: break;
642                         }
643                         break;
644
645                 case 0x902d: // zoom
646                         switch  (bs) {
647                                 case press: ls = mbh.zoom_press (button); break;
648                                 case release: ls = mbh.zoom_release (button); break;
649                                 case neither: break;
650                         }
651                         break;
652
653                 case 0x902e: // left
654                         switch  (bs) {
655                                 case press: ls = mbh.left_press (button); break;
656                                 case release: ls = mbh.left_release (button); break;
657                                 case neither: break;
658                         }
659                         break;
660
661                 case 0x902f: // right
662                         switch  (bs) {
663                                 case press: ls = mbh.right_press (button); break;
664                                 case release: ls = mbh.right_release (button); break;
665                                 case neither: break;
666                         }
667                         break;
668
669                 case 0x9030: // channel_left
670                         switch  (bs) {
671                                 case press: ls = mbh.channel_left_press (button); break;
672                                 case release: ls = mbh.channel_left_release (button); break;
673                                 case neither: break;
674                         }
675                         break;
676
677                 case 0x9031: // channel_right
678                         switch  (bs) {
679                                 case press: ls = mbh.channel_right_press (button); break;
680                                 case release: ls = mbh.channel_right_release (button); break;
681                                 case neither: break;
682                         }
683                         break;
684
685                 case 0x9032: // scrub
686                         switch  (bs) {
687                                 case press: ls = mbh.scrub_press (button); break;
688                                 case release: ls = mbh.scrub_release (button); break;
689                                 case neither: break;
690                         }
691                         break;
692
693                 case 0x9056: // edit
694                         switch  (bs) {
695                                 case press: ls = mbh.edit_press (button); break;
696                                 case release: ls = mbh.edit_release (button); break;
697                                 case neither: break;
698                         }
699                         break;
700
701                 case 0x9034: // name_value
702                         switch  (bs) {
703                                 case press: ls = mbh.name_value_press (button); break;
704                                 case release: ls = mbh.name_value_release (button); break;
705                                 case neither: break;
706                         }
707                         break;
708
709                 case 0x9035: // timecode_beats
710                         switch  (bs) {
711                                 case press: ls = mbh.timecode_beats_press (button); break;
712                                 case release: ls = mbh.timecode_beats_release (button); break;
713                                 case neither: break;
714                         }
715                         break;
716
717                 case 0x9036: // F1
718                         switch  (bs) {
719                                 case press: ls = mbh.F1_press (button); break;
720                                 case release: ls = mbh.F1_release (button); break;
721                                 case neither: break;
722                         }
723                         break;
724
725                 case 0x9037: // F2
726                         switch  (bs) {
727                                 case press: ls = mbh.F2_press (button); break;
728                                 case release: ls = mbh.F2_release (button); break;
729                                 case neither: break;
730                         }
731                         break;
732
733                 case 0x9038: // F3
734                         switch  (bs) {
735                                 case press: ls = mbh.F3_press (button); break;
736                                 case release: ls = mbh.F3_release (button); break;
737                                 case neither: break;
738                         }
739                         break;
740
741                 case 0x9039: // F4
742                         switch  (bs) {
743                                 case press: ls = mbh.F4_press (button); break;
744                                 case release: ls = mbh.F4_release (button); break;
745                                 case neither: break;
746                         }
747                         break;
748
749                 case 0x903a: // F5
750                         switch  (bs) {
751                                 case press: ls = mbh.F5_press (button); break;
752                                 case release: ls = mbh.F5_release (button); break;
753                                 case neither: break;
754                         }
755                         break;
756
757                 case 0x903b: // F6
758                         switch  (bs) {
759                                 case press: ls = mbh.F6_press (button); break;
760                                 case release: ls = mbh.F6_release (button); break;
761                                 case neither: break;
762                         }
763                         break;
764
765                 case 0x903c: // F7
766                         switch  (bs) {
767                                 case press: ls = mbh.F7_press (button); break;
768                                 case release: ls = mbh.F7_release (button); break;
769                                 case neither: break;
770                         }
771                         break;
772
773                 case 0x903d: // F8
774                         switch  (bs) {
775                                 case press: ls = mbh.F8_press (button); break;
776                                 case release: ls = mbh.F8_release (button); break;
777                                 case neither: break;
778                         }
779                         break;
780
781                 case 0x903e: // F9
782                         switch  (bs) {
783                                 case press: ls = mbh.F9_press (button); break;
784                                 case release: ls = mbh.F9_release (button); break;
785                                 case neither: break;
786                         }
787                         break;
788
789                 case 0x903f: // F10
790                         switch  (bs) {
791                                 case press: ls = mbh.F10_press (button); break;
792                                 case release: ls = mbh.F10_release (button); break;
793                                 case neither: break;
794                         }
795                         break;
796
797                 case 0x9040: // F11
798                         switch  (bs) {
799                                 case press: ls = mbh.F11_press (button); break;
800                                 case release: ls = mbh.F11_release (button); break;
801                                 case neither: break;
802                         }
803                         break;
804
805                 case 0x9041: // F12
806                         switch  (bs) {
807                                 case press: ls = mbh.F12_press (button); break;
808                                 case release: ls = mbh.F12_release (button); break;
809                                 case neither: break;
810                         }
811                         break;
812
813                 case 0x9042: // F13
814                         switch  (bs) {
815                                 case press: ls = mbh.F13_press (button); break;
816                                 case release: ls = mbh.F13_release (button); break;
817                                 case neither: break;
818                         }
819                         break;
820
821                 case 0x9043: // F14
822                         switch  (bs) {
823                                 case press: ls = mbh.F14_press (button); break;
824                                 case release: ls = mbh.F14_release (button); break;
825                                 case neither: break;
826                         }
827                         break;
828
829                 case 0x9044: // F15
830                         switch  (bs) {
831                                 case press: ls = mbh.F15_press (button); break;
832                                 case release: ls = mbh.F15_release (button); break;
833                                 case neither: break;
834                         }
835                         break;
836
837                 case 0x9045: // F16
838                         switch  (bs) {
839                                 case press: ls = mbh.F16_press (button); break;
840                                 case release: ls = mbh.F16_release (button); break;
841                                 case neither: break;
842                         }
843                         break;
844
845                 case 0x9027: // global_solo
846                         switch  (bs) {
847                                 case press: ls = mbh.global_solo_press (button); break;
848                                 case release: ls = mbh.global_solo_release (button); break;
849                                 case neither: break;
850                         }
851                         break;
852
853                 case 0x9050: // option
854                         switch  (bs) {
855                                 case press: ls = mbh.option_press (button); break;
856                                 case release: ls = mbh.option_release (button); break;
857                                 case neither: break;
858                         }
859                         break;
860
861                 case 0x9049: // cmd_alt
862                         switch  (bs) {
863                                 case press: ls = mbh.cmd_alt_press (button); break;
864                                 case release: ls = mbh.cmd_alt_release (button); break;
865                                 case neither: break;
866                         }
867                         break;
868
869                 case 0x904a: // on
870                         switch  (bs) {
871                                 case press: ls = mbh.on_press (button); break;
872                                 case release: ls = mbh.on_release (button); break;
873                                 case neither: break;
874                         }
875                         break;
876
877                 case 0x904b: // rec_ready
878                         switch  (bs) {
879                                 case press: ls = mbh.rec_ready_press (button); break;
880                                 case release: ls = mbh.rec_ready_release (button); break;
881                                 case neither: break;
882                         }
883                         break;
884
885                 case 0x904c: // undo
886                         switch  (bs) {
887                                 case press: ls = mbh.undo_press (button); break;
888                                 case release: ls = mbh.undo_release (button); break;
889                                 case neither: break;
890                         }
891                         break;
892
893                 case 0x905f: // snapshot
894                         switch  (bs) {
895                                 case press: ls = mbh.snapshot_press (button); break;
896                                 case release: ls = mbh.snapshot_release (button); break;
897                                 case neither: break;
898                         }
899                         break;
900
901                 case 0x904f: // redo
902                         switch  (bs) {
903                                 case press: ls = mbh.redo_press (button); break;
904                                 case release: ls = mbh.redo_release (button); break;
905                                 case neither: break;
906                         }
907                         break;
908
909                 case 0x9047: // marker
910                         switch  (bs) {
911                                 case press: ls = mbh.marker_press (button); break;
912                                 case release: ls = mbh.marker_release (button); break;
913                                 case neither: break;
914                         }
915                         break;
916
917                 case 0x9051: // enter
918                         switch  (bs) {
919                                 case press: ls = mbh.enter_press (button); break;
920                                 case release: ls = mbh.enter_release (button); break;
921                                 case neither: break;
922                         }
923                         break;
924
925                 case 0x9052: // cancel
926                         switch  (bs) {
927                                 case press: ls = mbh.cancel_press (button); break;
928                                 case release: ls = mbh.cancel_release (button); break;
929                                 case neither: break;
930                         }
931                         break;
932
933                 case 0x9053: // mixer
934                         switch  (bs) {
935                                 case press: ls = mbh.mixer_press (button); break;
936                                 case release: ls = mbh.mixer_release (button); break;
937                                 case neither: break;
938                         }
939                         break;
940
941                 case 0x904d: // save
942                         switch  (bs) {
943                                 case press: ls = mbh.save_press (button); break;
944                                 case release: ls = mbh.save_release (button); break;
945                                 case neither: break;
946                         }
947                         break;
948
949                 case 0x905b: // frm_left
950                         switch  (bs) {
951                                 case press: ls = mbh.frm_left_press (button); break;
952                                 case release: ls = mbh.frm_left_release (button); break;
953                                 case neither: break;
954                         }
955                         break;
956
957                 case 0x905c: // frm_right
958                         switch  (bs) {
959                                 case press: ls = mbh.frm_right_press (button); break;
960                                 case release: ls = mbh.frm_right_release (button); break;
961                                 case neither: break;
962                         }
963                         break;
964
965                 case 0x9046: // loop
966                         switch  (bs) {
967                                 case press: ls = mbh.loop_press (button); break;
968                                 case release: ls = mbh.loop_release (button); break;
969                                 case neither: break;
970                         }
971                         break;
972
973                 case 0x9048: // punch_in
974                         switch  (bs) {
975                                 case press: ls = mbh.punch_in_press (button); break;
976                                 case release: ls = mbh.punch_in_release (button); break;
977                                 case neither: break;
978                         }
979                         break;
980
981                 case 0x904e: // punch_out
982                         switch  (bs) {
983                                 case press: ls = mbh.punch_out_press (button); break;
984                                 case release: ls = mbh.punch_out_release (button); break;
985                                 case neither: break;
986                         }
987                         break;
988
989                 case 0x902a: // home
990                         switch  (bs) {
991                                 case press: ls = mbh.home_press (button); break;
992                                 case release: ls = mbh.home_release (button); break;
993                                 case neither: break;
994                         }
995                         break;
996
997                 case 0x9029: // end
998                         switch  (bs) {
999                                 case press: ls = mbh.end_press (button); break;
1000                                 case release: ls = mbh.end_release (button); break;
1001                                 case neither: break;
1002                         }
1003                         break;
1004
1005                 case 0x902c: // rewind
1006                         switch  (bs) {
1007                                 case press: ls = mbh.rewind_press (button); break;
1008                                 case release: ls = mbh.rewind_release (button); break;
1009                                 case neither: break;
1010                         }
1011                         break;
1012
1013                 case 0x902b: // ffwd
1014                         switch  (bs) {
1015                                 case press: ls = mbh.ffwd_press (button); break;
1016                                 case release: ls = mbh.ffwd_release (button); break;
1017                                 case neither: break;
1018                         }
1019                         break;
1020
1021                 case 0x905d: // stop
1022                         switch  (bs) {
1023                                 case press: ls = mbh.stop_press (button); break;
1024                                 case release: ls = mbh.stop_release (button); break;
1025                                 case neither: break;
1026                         }
1027                         break;
1028
1029                 case 0x905e: // play
1030                         switch  (bs) {
1031                                 case press: ls = mbh.play_press (button); break;
1032                                 case release: ls = mbh.play_release (button); break;
1033                                 case neither: break;
1034                         }
1035                         break;
1036
1037                 case 0x901f: // record
1038                         switch  (bs) {
1039                                 case press: ls = mbh.record_press (button); break;
1040                                 case release: ls = mbh.record_release (button); break;
1041                                 case neither: break;
1042                         }
1043                         break;
1044
1045                 case 0x9060: // cursor_up
1046                         switch  (bs) {
1047                                 case press: ls = mbh.cursor_up_press (button); break;
1048                                 case release: ls = mbh.cursor_up_release (button); break;
1049                                 case neither: break;
1050                         }
1051                         break;
1052
1053                 case 0x9061: // cursor_down
1054                         switch  (bs) {
1055                                 case press: ls = mbh.cursor_down_press (button); break;
1056                                 case release: ls = mbh.cursor_down_release (button); break;
1057                                 case neither: break;
1058                         }
1059                         break;
1060
1061                 case 0x9062: // cursor_left
1062                         switch  (bs) {
1063                                 case press: ls = mbh.cursor_left_press (button); break;
1064                                 case release: ls = mbh.cursor_left_release (button); break;
1065                                 case neither: break;
1066                         }
1067                         break;
1068
1069                 case 0x9063: // cursor_right
1070                         switch  (bs) {
1071                                 case press: ls = mbh.cursor_right_press (button); break;
1072                                 case release: ls = mbh.cursor_right_release (button); break;
1073                                 case neither: break;
1074                         }
1075                         break;
1076
1077                 case 0x9064: // dyn
1078                         switch  (bs) {
1079                                 case press: ls = mbh.dyn_press (button); break;
1080                                 case release: ls = mbh.dyn_release (button); break;
1081                                 case neither: break;
1082                         }
1083                         break;
1084
1085                 case 0x9065: // flip
1086                         switch  (bs) {
1087                                 case press: ls = mbh.flip_press (button); break;
1088                                 case release: ls = mbh.flip_release (button); break;
1089                                 case neither: break;
1090                         }
1091                         break;
1092
1093                 case 0x9066: // user_a
1094                         switch  (bs) {
1095                                 case press: ls = mbh.user_a_press (button); break;
1096                                 case release: ls = mbh.user_a_release (button); break;
1097                                 case neither: break;
1098                         }
1099                         break;
1100
1101                 case 0x9067: // user_b
1102                         switch  (bs) {
1103                                 case press: ls = mbh.user_b_press (button); break;
1104                                 case release: ls = mbh.user_b_release (button); break;
1105                                 case neither: break;
1106                         }
1107                         break;
1108
1109                 case 0x9033: // clicking
1110                         switch  (bs) {
1111                                 case press: ls = mbh.clicking_press (button); break;
1112                                 case release: ls = mbh.clicking_release (button); break;
1113                                 case neither: break;
1114                         }
1115                         break;
1116
1117         }
1118         mbh.update_led (button, ls);
1119 }