ALSA project - the C library reference
 
Loading...
Searching...
No Matches
ump_msg.h
Go to the documentation of this file.
1/* SPDX-License-Identifier: LGPL-2.1+ */
9#ifndef __ALSA_UMP_MSG_H
10#define __ALSA_UMP_MSG_H
12#include <stdint.h>
14#ifdef __cplusplus
15extern "C" {
16#endif
17
19typedef struct _snd_ump_msg_hdr {
20#ifdef SNDRV_BIG_ENDIAN_BITFIELD
21 uint8_t type:4;
22 uint8_t group:4;
23 uint8_t status:4;
24 uint8_t channel:4;
25 uint8_t byte1;
26 uint8_t byte2;
27#else
28 uint8_t byte2;
29 uint8_t byte1;
30 uint8_t channel:4;
31 uint8_t status:4;
32 uint8_t group:4;
33 uint8_t type:4;
34#endif
35} __attribute((packed)) snd_ump_msg_hdr_t;
36
39#ifdef SNDRV_BIG_ENDIAN_BITFIELD
40 uint8_t type:4;
41 uint8_t group:4;
42 uint8_t status:4;
43 uint8_t channel:4;
44 uint8_t note;
45 uint8_t velocity;
46#else
47 uint8_t velocity;
48 uint8_t note;
49 uint8_t channel:4;
50 uint8_t status:4;
51 uint8_t group:4;
52 uint8_t type:4;
53#endif
54} __attribute((packed)) snd_ump_msg_midi1_note_t;
57typedef struct _snd_ump_msg_midi1_paf {
58#ifdef SNDRV_BIG_ENDIAN_BITFIELD
59 uint8_t type:4;
60 uint8_t group:4;
61 uint8_t status:4;
62 uint8_t channel:4;
63 uint8_t note;
64 uint8_t data;
65#else
66 uint8_t data;
67 uint8_t note;
68 uint8_t channel:4;
69 uint8_t status:4;
70 uint8_t group:4;
71 uint8_t type:4;
72#endif
73} __attribute((packed)) snd_ump_msg_midi1_paf_t;
74
76typedef struct _snd_ump_msg_midi1_cc {
77#ifdef SNDRV_BIG_ENDIAN_BITFIELD
78 uint8_t type:4;
79 uint8_t group:4;
80 uint8_t status:4;
81 uint8_t channel:4;
82 uint8_t index;
83 uint8_t data;
84#else
85 uint8_t data;
86 uint8_t index;
87 uint8_t channel:4;
88 uint8_t status:4;
89 uint8_t group:4;
90 uint8_t type:4;
91#endif
92} __attribute((packed)) snd_ump_msg_midi1_cc_t;
93
96#ifdef SNDRV_BIG_ENDIAN_BITFIELD
97 uint8_t type:4;
98 uint8_t group:4;
99 uint8_t status:4;
100 uint8_t channel:4;
101 uint8_t program;
102 uint8_t reserved;
103#else
104 uint8_t reserved;
105 uint8_t program;
106 uint8_t channel:4;
107 uint8_t status:4;
108 uint8_t group:4;
109 uint8_t type:4;
110#endif
111} __attribute((packed)) snd_ump_msg_midi1_program_t;
112
115#ifdef SNDRV_BIG_ENDIAN_BITFIELD
116 uint8_t type:4;
117 uint8_t group:4;
118 uint8_t status:4;
119 uint8_t channel:4;
120 uint8_t data;
121 uint8_t reserved;
122#else
123 uint8_t reserved;
124 uint8_t data;
125 uint8_t channel:4;
126 uint8_t status:4;
127 uint8_t group:4;
128 uint8_t type:4;
129#endif
130} __attribute((packed)) snd_ump_msg_midi1_caf_t;
131
134#ifdef SNDRV_BIG_ENDIAN_BITFIELD
135 uint8_t type:4;
136 uint8_t group:4;
137 uint8_t status:4;
138 uint8_t channel:4;
139 uint8_t data_lsb;
140 uint8_t data_msb;
141#else
142 uint8_t data_msb;
143 uint8_t data_lsb;
144 uint8_t channel:4;
145 uint8_t status:4;
146 uint8_t group:4;
147 uint8_t type:4;
148#endif
149} __attribute((packed)) snd_ump_msg_midi1_pitchbend_t;
150
152typedef struct snd_ump_msg_system {
153#ifdef SNDRV_BIG_ENDIAN_BITFIELD
154 uint8_t type:4;
155 uint8_t group:4;
156 uint8_t status;
157 uint8_t parm1;
158 uint8_t parm2;
159#else
160 uint8_t parm2;
161 uint8_t parm1;
162 uint8_t status;
163 uint8_t group:4;
164 uint8_t type:4;
165#endif
166} __attribute((packed)) snd_ump_msg_system_t;
167
169typedef union _snd_ump_msg_midi1 {
170 snd_ump_msg_midi1_note_t note_on;
171 snd_ump_msg_midi1_note_t note_off;
172 snd_ump_msg_midi1_paf_t poly_pressure;
173 snd_ump_msg_midi1_cc_t control_change;
174 snd_ump_msg_midi1_program_t program_change;
175 snd_ump_msg_midi1_caf_t channel_pressure;
176 snd_ump_msg_midi1_pitchbend_t pitchbend;
177 snd_ump_msg_system_t system;
178 snd_ump_msg_hdr_t hdr;
179 uint32_t raw;
181
183enum {
188};
189
192#ifdef SNDRV_BIG_ENDIAN_BITFIELD
193 uint8_t type:4;
194 uint8_t group:4;
195 uint8_t status:4;
196 uint8_t channel:4;
197 uint8_t note;
198 uint8_t attr_type;
199
200 uint16_t velocity;
201 uint16_t attr_data;
202#else
203 uint8_t attr_type;
204 uint8_t note;
205 uint8_t channel:4;
206 uint8_t status:4;
207 uint8_t group:4;
208 uint8_t type:4;
209
210 uint16_t attr_data;
211 uint16_t velocity;
212#endif
213} __attribute((packed)) snd_ump_msg_midi2_note_t;
214
217#ifdef SNDRV_BIG_ENDIAN_BITFIELD
218 uint8_t type:4;
219 uint8_t group:4;
220 uint8_t status:4;
221 uint8_t channel:4;
222 uint8_t note;
223 uint8_t reserved;
224
225 uint32_t data;
226#else
227 uint8_t reserved;
228 uint8_t note;
229 uint8_t channel:4;
230 uint8_t status:4;
231 uint8_t group:4;
232 uint8_t type:4;
233
234 uint32_t data;
235#endif
236} __attribute((packed)) snd_ump_msg_midi2_paf_t;
237
240#ifdef SNDRV_BIG_ENDIAN_BITFIELD
241 uint8_t type:4;
242 uint8_t group:4;
243 uint8_t status:4;
244 uint8_t channel:4;
245 uint8_t note;
246 uint8_t index;
247
248 uint32_t data;
249#else
250 uint8_t index;
251 uint8_t note;
252 uint8_t channel:4;
253 uint8_t status:4;
254 uint8_t group:4;
255 uint8_t type:4;
256
257 uint32_t data;
258#endif
259} __attribute((packed)) snd_ump_msg_midi2_per_note_cc_t;
260
262enum {
266
269#ifdef SNDRV_BIG_ENDIAN_BITFIELD
270 uint8_t type:4;
271 uint8_t group:4;
272 uint8_t status:4;
273 uint8_t channel:4;
274 uint8_t note;
275 uint8_t flags;
276
277 uint32_t reserved;
278#else
279 uint8_t flags;
280 uint8_t note;
281 uint8_t channel:4;
282 uint8_t status:4;
283 uint8_t group:4;
284 uint8_t type:4;
285
286 uint32_t reserved;
287#endif
288} __attribute((packed)) snd_ump_msg_midi2_per_note_mgmt_t;
289
291typedef struct _snd_ump_msg_midi2_cc {
292#ifdef SNDRV_BIG_ENDIAN_BITFIELD
293 uint8_t type:4;
294 uint8_t group:4;
295 uint8_t status:4;
296 uint8_t channel:4;
297 uint8_t index;
298 uint8_t reserved;
299
300 uint32_t data;
301#else
302 uint8_t reserved;
303 uint8_t index;
304 uint8_t channel:4;
305 uint8_t status:4;
306 uint8_t group:4;
307 uint8_t type:4;
308
309 uint32_t data;
310#endif
311} __attribute((packed)) snd_ump_msg_midi2_cc_t;
312
315#ifdef SNDRV_BIG_ENDIAN_BITFIELD
316 uint8_t type:4;
317 uint8_t group:4;
318 uint8_t status:4;
319 uint8_t channel:4;
320 uint8_t bank;
321 uint8_t index;
322
323 uint32_t data;
324#else
325 uint8_t index;
326 uint8_t bank;
327 uint8_t channel:4;
328 uint8_t status:4;
329 uint8_t group:4;
330 uint8_t type:4;
331
332 uint32_t data;
333#endif
334} __attribute((packed)) snd_ump_msg_midi2_rpn_t;
335
338#ifdef SNDRV_BIG_ENDIAN_BITFIELD
339 uint8_t type:4;
340 uint8_t group:4;
341 uint8_t status:4;
342 uint8_t channel:4;
343 uint16_t reserved:15;
344 uint16_t bank_valid:1;
345
346 uint8_t program;
347 uint8_t reserved2;
348 uint8_t bank_msb;
349 uint8_t bank_lsb;
350#else
351 uint16_t bank_valid:1;
352 uint16_t reserved:15;
353 uint8_t channel:4;
354 uint8_t status:4;
355 uint8_t group:4;
356 uint8_t type:4;
357
358 uint8_t bank_lsb;
359 uint8_t bank_msb;
360 uint8_t reserved2;
361 uint8_t program;
362#endif
363} __attribute((packed)) snd_ump_msg_midi2_program_t;
364
367#ifdef SNDRV_BIG_ENDIAN_BITFIELD
368 uint8_t type:4;
369 uint8_t group:4;
370 uint8_t status:4;
371 uint8_t channel:4;
372 uint16_t reserved;
373
374 uint32_t data;
375#else
376 uint16_t reserved;
377 uint8_t channel:4;
378 uint8_t status:4;
379 uint8_t group:4;
380 uint8_t type:4;
381
382 uint32_t data;
383#endif
384} __attribute((packed)) snd_ump_msg_midi2_caf_t;
385
388#ifdef SNDRV_BIG_ENDIAN_BITFIELD
389 uint8_t type:4;
390 uint8_t group:4;
391 uint8_t status:4;
392 uint8_t channel:4;
393 uint16_t reserved;
394
395 uint32_t data;
396#else
397 uint16_t reserved;
398 uint8_t channel:4;
399 uint8_t status:4;
400 uint8_t group:4;
401 uint8_t type:4;
402
403 uint32_t data;
404#endif
405} __attribute((packed)) snd_ump_msg_midi2_pitchbend_t;
406
409#ifdef __BIG_ENDIAN_BITFIELD
410 uint8_t type:4;
411 uint8_t group:4;
412 uint8_t status:4;
413 uint8_t channel:4;
414 uint8_t note;
415 uint8_t reserved;
416
417 uint32_t data;
418#else
419 uint8_t reserved;
420 uint8_t note;
421 uint8_t channel:4;
422 uint8_t status:4;
423 uint8_t group:4;
424 uint8_t type:4;
425
426 uint32_t data;
427#endif
428} __attribute((packed)) snd_ump_msg_midi2_per_note_pitchbend_t;
429
431typedef union _snd_ump_msg_midi2 {
432 snd_ump_msg_midi2_note_t note_on;
433 snd_ump_msg_midi2_note_t note_off;
434 snd_ump_msg_midi2_paf_t poly_pressure;
435 snd_ump_msg_midi2_per_note_cc_t per_note_acc;
436 snd_ump_msg_midi2_per_note_cc_t per_note_rcc;
437 snd_ump_msg_midi2_per_note_mgmt_t per_note_mgmt;
438 snd_ump_msg_midi2_cc_t control_change;
439 snd_ump_msg_midi2_rpn_t rpn;
440 snd_ump_msg_midi2_rpn_t nrpn;
441 snd_ump_msg_midi2_rpn_t relative_rpn;
442 snd_ump_msg_midi2_rpn_t relative_nrpn;
443 snd_ump_msg_midi2_program_t program_change;
444 snd_ump_msg_midi2_caf_t channel_pressure;
445 snd_ump_msg_midi2_pitchbend_t pitchbend;
446 snd_ump_msg_midi2_per_note_pitchbend_t per_note_pitchbend;
447 snd_ump_msg_hdr_t hdr;
448 uint32_t raw[2];
450
453#ifdef SNDRV_BIG_ENDIAN_BITFIELD
454 uint16_t type:4;
455 uint16_t format:2;
456 uint16_t status:10;
457 uint16_t data1;
458 uint32_t data2;
459 uint32_t data3;
460 uint32_t data4;
461#else
462 uint16_t data1;
463 uint16_t status:10;
464 uint16_t format:2;
465 uint16_t type:4;
466 uint32_t data2;
467 uint32_t data3;
468 uint32_t data4;
469#endif
470} __attribute((packed)) snd_ump_msg_stream_gen_t;
471
473typedef union _snd_ump_msg_stream {
474 snd_ump_msg_stream_gen_t gen;
475 snd_ump_msg_hdr_t hdr;
476 uint32_t raw[4];
478
481#ifdef SNDRV_BIG_ENDIAN_BITFIELD
482 uint8_t type:4;
483 uint8_t group:4;
484 uint8_t format:2;
485 uint8_t addrs:2;
486 uint8_t channel:4;
487 uint8_t status_bank;
488 uint8_t status;
489 uint32_t data[3];
490#else
491 uint8_t status;
492 uint8_t status_bank;
493 uint8_t channel:4;
494 uint8_t addrs:2;
495 uint8_t format:2;
496 uint8_t group:4;
497 uint8_t type:4;
498 uint32_t data[3];
499#endif
500} __attribute((packed)) snd_ump_msg_flex_data_meta_t;
501
504#ifdef SNDRV_BIG_ENDIAN_BITFIELD
505 uint8_t type:4;
506 uint8_t group:4;
507 uint8_t format:2;
508 uint8_t addrs:2;
509 uint8_t channel:4;
510 uint8_t status_bank;
511 uint8_t status;
512
513 uint32_t tempo;
514
515 uint32_t reserved[2];
516#else
517 uint8_t status;
518 uint8_t status_bank;
519 uint8_t channel:4;
520 uint8_t addrs:2;
521 uint8_t format:2;
522 uint8_t group:4;
523 uint8_t type:4;
524
525 uint32_t tempo;
526
527 uint32_t reserved[2];
528#endif
529} __attribute((packed)) snd_ump_msg_set_tempo_t;
530
533#ifdef SNDRV_BIG_ENDIAN_BITFIELD
534 uint8_t type:4;
535 uint8_t group:4;
536 uint8_t format:2;
537 uint8_t addrs:2;
538 uint8_t channel:4;
539 uint8_t status_bank;
540 uint8_t status;
541
542 uint8_t numerator;
543 uint8_t denominator;
544 uint8_t num_notes;
545 uint8_t reserved1;
546
547 uint32_t reserved[2];
548#else
549 uint8_t status;
550 uint8_t status_bank;
551 uint8_t channel:4;
552 uint8_t addrs:2;
553 uint8_t format:2;
554 uint8_t group:4;
555 uint8_t type:4;
556
557 uint8_t reserved1;
558 uint8_t num_notes;
559 uint8_t denominator;
560 uint8_t numerator;
561
562 uint32_t reserved[2];
563#endif
564} __attribute((packed)) snd_ump_msg_set_time_sig_t;
565
568#ifdef SNDRV_BIG_ENDIAN_BITFIELD
569 uint8_t type:4;
570 uint8_t group:4;
571 uint8_t format:2;
572 uint8_t addrs:2;
573 uint8_t channel:4;
574 uint8_t status_bank;
575 uint8_t status;
576
577 uint8_t clocks_primary;
578 uint8_t bar_accent_1;
579 uint8_t bar_accent_2;
580 uint8_t bar_accent_3;
581
582 uint8_t subdivision_1;
583 uint8_t subdivision_2;
584 uint16_t reserved1;
585
586 uint32_t reserved2;
587#else
588 uint8_t status;
589 uint8_t status_bank;
590 uint8_t channel:4;
591 uint8_t addrs:2;
592 uint8_t format:2;
593 uint8_t group:4;
594 uint8_t type:4;
595
596 uint8_t bar_accent_3;
597 uint8_t bar_accent_2;
598 uint8_t bar_accent_1;
600
601 uint16_t reserved1;
604
605 uint32_t reserved2;
606#endif
607} __attribute((packed)) snd_ump_msg_set_metronome_t;
608
611#ifdef SNDRV_BIG_ENDIAN_BITFIELD
612 uint8_t type:4;
613 uint8_t group:4;
614 uint8_t format:2;
615 uint8_t addrs:2;
616 uint8_t channel:4;
617 uint8_t status_bank;
618 uint8_t status;
619
620 uint8_t sharps_flats:4;
621 uint8_t tonic_note:4;
622 uint8_t reserved1[3];
623
624 uint32_t reserved2[2];
625#else
626 uint8_t status;
627 uint8_t status_bank;
628 uint8_t channel:4;
629 uint8_t addrs:2;
630 uint8_t format:2;
631 uint8_t group:4;
632 uint8_t type:4;
633
634 uint8_t reserved1[3];
635 uint8_t tonic_note:4;
636 uint8_t sharps_flats:4;
637
638 uint32_t reserved2[2];
639#endif
640} __attribute((packed)) snd_ump_msg_set_key_sig_t;
641
644#ifdef SNDRV_BIG_ENDIAN_BITFIELD
645 uint8_t type:4;
646 uint8_t group:4;
647 uint8_t format:2;
648 uint8_t addrs:2;
649 uint8_t channel:4;
650 uint8_t status_bank;
651 uint8_t status;
652
653 uint8_t tonic_sharp:4;
654 uint8_t chord_tonic:4;
655 uint8_t chord_type;
656 uint8_t alter1_type:4;
657 uint8_t alter1_degree:4;
658 uint8_t alter2_type:4;
659 uint8_t alter2_degree:4;
660
661 uint8_t alter3_type:4;
662 uint8_t alter3_degree:4;
663 uint8_t alter4_type:4;
664 uint8_t alter4_degree:4;
665 uint16_t reserved;
666
667 uint8_t bass_sharp:4;
668 uint8_t bass_note:4;
669 uint8_t bass_type;
670 uint8_t bass_alter1_type:4;
671 uint8_t bass_alter1_degree:4;
672 uint8_t bass_alter2_type:4;
673 uint8_t bass_alter2_degree:4;
674#else
675 uint8_t status;
676 uint8_t status_bank;
677 uint8_t channel:4;
678 uint8_t addrs:2;
679 uint8_t format:2;
680 uint8_t group:4;
681 uint8_t type:4;
682
683 uint8_t alter2_degree:4;
684 uint8_t alter2_type:4;
685 uint8_t alter1_degree:4;
686 uint8_t alter1_type:4;
687 uint8_t chord_type;
688 uint8_t chord_tonic:4;
689 uint8_t tonic_sharp:4;
690
691 uint16_t reserved;
692 uint8_t alter4_degree:4;
693 uint8_t alter4_type:4;
694 uint8_t alter3_degree:4;
695 uint8_t alter3_type:4;
696
701 uint8_t bass_type;
702 uint8_t bass_note:4;
703 uint8_t bass_sharp:4;
704#endif
705} __attribute((packed)) snd_ump_msg_set_chord_name_t;
706
708typedef union _snd_ump_msg_flex_data {
709 snd_ump_msg_flex_data_meta_t meta;
710 snd_ump_msg_flex_data_meta_t text;
711 snd_ump_msg_set_tempo_t set_tempo;
712 snd_ump_msg_set_time_sig_t set_time_sig;
713 snd_ump_msg_set_metronome_t set_metronome;
714 snd_ump_msg_set_key_sig_t set_key_sig;
715 snd_ump_msg_set_chord_name_t set_chord_name;
716 snd_ump_msg_hdr_t hdr;
717 uint32_t raw[4];
719
721typedef struct _snd_ump_msg_mixed_data_header {
722#ifdef __BIG_ENDIAN_BITFIELD
723 uint8_t type:4;
724 uint8_t group:4;
725 uint8_t status:4;
726 uint8_t mds_id:4;
727 uint16_t bytes;
728
729 uint16_t chunks;
730 uint16_t chunk;
731
732 uint16_t manufacturer;
733 uint16_t device;
734
735 uint16_t sub_id_1;
736 uint16_t sub_id_2;
737#else
738 uint16_t bytes;
739 uint8_t mds_id:4;
740 uint8_t status:4;
741 uint8_t group:4;
742 uint8_t type:4;
743
744 uint16_t chunk;
745 uint16_t chunks;
746
747 uint16_t device;
748 uint16_t manufacturer;
749
750 uint16_t sub_id_2;
751 uint16_t sub_id_1;
752#endif
754
756typedef struct _snd_ump_msg_mixed_data_payload {
757#ifdef __BIG_ENDIAN_BITFIELD
758 uint8_t type:4;
759 uint8_t group:4;
760 uint8_t status:4;
761 uint8_t mds_id:4;
762 uint16_t payload1;
763
764 uint32_t payloads[3];
765#else
766 uint16_t payload1;
767 uint8_t mds_id:4;
768 uint8_t status:4;
769 uint8_t group:4;
770 uint8_t type:4;
771
772 uint32_t payloads[3];
773#endif
775
782
784typedef struct _snd_ump_msg_jr_clock {
785#ifdef SNDRV_BIG_ENDIAN_BITFIELD
786 uint8_t type:4;
787 uint8_t group:4;
788 uint8_t status:4;
789 uint8_t reserved:4;
790 uint16_t time;
791#else
792 uint16_t time;
793 uint8_t reserved:4;
794 uint8_t status:4;
795 uint8_t group:4;
796 uint8_t type:4;
797#endif
798} __attribute((packed)) snd_ump_msg_jr_clock_t;
799
801typedef struct _snd_ump_msg_dctpq {
802#ifdef SNDRV_BIG_ENDIAN_BITFIELD
803 uint8_t type:4;
804 uint8_t group:4;
805 uint8_t status:4;
806 uint8_t reserved:4;
807 uint16_t ticks;
808#else
809 uint16_t ticks;
810 uint8_t reserved:4;
811 uint8_t status:4;
812 uint8_t group:4;
813 uint8_t type:4;
814#endif
815} __attribute((packed)) snd_ump_msg_dctpq_t;
816
818typedef struct _snd_ump_msg_dc {
819#ifdef SNDRV_BIG_ENDIAN_BITFIELD
820 uint32_t type:4;
821 uint32_t group:4;
822 uint32_t status:4;
823 uint32_t ticks:20;
824#else
825 uint32_t ticks:20;
826 uint32_t status:4;
827 uint32_t group:4;
828 uint32_t type:4;
829#endif
830} __attribute((packed)) snd_ump_msg_dc_t;
831
833typedef union _snd_ump_msg_utility {
834 snd_ump_msg_jr_clock_t jr_clock;
835 snd_ump_msg_dctpq_t dctpq;
836 snd_ump_msg_dc_t dc;
837 snd_ump_msg_hdr_t hdr;
838 uint32_t raw;
840
844enum {
845 SND_UMP_MSG_TYPE_UTILITY = 0x00, /* Utility messages */
846 SND_UMP_MSG_TYPE_SYSTEM = 0x01, /* System messages */
847 SND_UMP_MSG_TYPE_MIDI1_CHANNEL_VOICE = 0x02, /* MIDI 1.0 messages */
848 SND_UMP_MSG_TYPE_DATA = 0x03, /* 7bit SysEx messages */
849 SND_UMP_MSG_TYPE_MIDI2_CHANNEL_VOICE = 0x04, /* MIDI 2.0 messages */
850 SND_UMP_MSG_TYPE_EXTENDED_DATA = 0x05, /* 8bit data message */
851 SND_UMP_MSG_TYPE_FLEX_DATA = 0x0d, /* Flexible data messages */
852 SND_UMP_MSG_TYPE_STREAM = 0x0f, /* Stream messages */
853};
854
858enum {
859 SND_UMP_MSG_PER_NOTE_RCC = 0x0,
860 SND_UMP_MSG_PER_NOTE_ACC = 0x1,
861 SND_UMP_MSG_RPN = 0x2,
862 SND_UMP_MSG_NRPN = 0x3,
863 SND_UMP_MSG_RELATIVE_RPN = 0x4,
864 SND_UMP_MSG_RELATIVE_NRPN = 0x5,
865 SND_UMP_MSG_PER_NOTE_PITCHBEND = 0x6,
866 SND_UMP_MSG_NOTE_OFF = 0x8,
867 SND_UMP_MSG_NOTE_ON = 0x9,
868 SND_UMP_MSG_POLY_PRESSURE = 0xa,
869 SND_UMP_MSG_CONTROL_CHANGE = 0xb,
870 SND_UMP_MSG_PROGRAM_CHANGE = 0xc,
871 SND_UMP_MSG_CHANNEL_PRESSURE = 0xd,
872 SND_UMP_MSG_PITCHBEND = 0xe,
873 SND_UMP_MSG_PER_NOTE_MGMT = 0xf,
874};
875
879enum {
880 SND_UMP_MSG_REALTIME = 0xf0, /* mask */
881 SND_UMP_MSG_SYSEX_START = 0xf0,
882 SND_UMP_MSG_MIDI_TIME_CODE = 0xf1,
883 SND_UMP_MSG_SONG_POSITION = 0xf2,
884 SND_UMP_MSG_SONG_SELECT = 0xf3,
885 SND_UMP_MSG_TUNE_REQUEST = 0xf6,
886 SND_UMP_MSG_SYSEX_END = 0xf7,
887 SND_UMP_MSG_TIMING_CLOCK = 0xf8,
888 SND_UMP_MSG_START = 0xfa,
889 SND_UMP_MSG_CONTINUE = 0xfb,
890 SND_UMP_MSG_STOP = 0xfc,
891 SND_UMP_MSG_ACTIVE_SENSING = 0xfe,
892 SND_UMP_MSG_RESET = 0xff,
893};
894
896enum {
897 SND_UMP_SYSEX_STATUS_SINGLE = 0,
898 SND_UMP_SYSEX_STATUS_START = 1,
899 SND_UMP_SYSEX_STATUS_CONTINUE = 2,
900 SND_UMP_SYSEX_STATUS_END = 3,
901};
902
904enum {
905 SND_UMP_MIXED_DATA_SET_STATUS_HEADER = 8,
906 SND_UMP_MIXED_DATA_SET_STATUS_PAYLOAD = 9,
907};
908
910enum {
911 SND_UMP_UTILITY_MSG_STATUS_NOOP = 0x00,
912 SND_UMP_UTILITY_MSG_STATUS_JR_CLOCK = 0x01,
913 SND_UMP_UTILITY_MSG_STATUS_JR_TSTAMP = 0x02,
914 SND_UMP_UTILITY_MSG_STATUS_DCTPQ = 0x03,
915 SND_UMP_UTILITY_MSG_STATUS_DC = 0x04,
916};
917
919enum {
920 SND_UMP_STREAM_MSG_STATUS_EP_DISCOVERY = 0x00,
921 SND_UMP_STREAM_MSG_STATUS_EP_INFO = 0x01,
922 SND_UMP_STREAM_MSG_STATUS_DEVICE_INFO = 0x02,
923 SND_UMP_STREAM_MSG_STATUS_EP_NAME = 0x03,
924 SND_UMP_STREAM_MSG_STATUS_PRODUCT_ID = 0x04,
925 SND_UMP_STREAM_MSG_STATUS_STREAM_CFG_REQUEST = 0x05,
926 SND_UMP_STREAM_MSG_STATUS_STREAM_CFG = 0x06,
927 SND_UMP_STREAM_MSG_STATUS_FB_DISCOVERY = 0x10,
928 SND_UMP_STREAM_MSG_STATUS_FB_INFO = 0x11,
929 SND_UMP_STREAM_MSG_STATUS_FB_NAME = 0x12,
930 SND_UMP_STREAM_MSG_STATUS_START_CLIP = 0x20,
931 SND_UMP_STREAM_MSG_STATUS_END_CLIP = 0x21,
932};
933
935enum {
936 SND_UMP_STREAM_MSG_REQUEST_EP_INFO = (1U << 0),
937 SND_UMP_STREAM_MSG_REQUEST_DEVICE_INFO = (1U << 1),
938 SND_UMP_STREAM_MSG_REQUEST_EP_NAME = (1U << 2),
939 SND_UMP_STREAM_MSG_REQUEST_PRODUCT_ID = (1U << 3),
940 SND_UMP_STREAM_MSG_REQUEST_STREAM_CFG = (1U << 4),
941};
942
944enum {
945 SND_UMP_STREAM_MSG_REQUEST_FB_INFO = (1U << 0),
946 SND_UMP_STREAM_MSG_REQUEST_FB_NAME = (1U << 1),
947};
948
950enum {
951 SND_UMP_STREAM_MSG_EP_INFO_CAP_TXJR = (1U << 0), /* Sending JRTS */
952 SND_UMP_STREAM_MSG_EP_INFO_CAP_RXJR = (1U << 1), /* Receiving JRTS */
953 SND_UMP_STREAM_MSG_EP_INFO_CAP_MIDI1 = (1U << 8), /* MIDI 1.0 */
954 SND_UMP_STREAM_MSG_EP_INFO_CAP_MIDI2 = (1U << 9), /* MIDI 2.0 */
955};
956
958enum {
959 SND_UMP_STREAM_MSG_FORMAT_SINGLE = 0,
960 SND_UMP_STREAM_MSG_FORMAT_START = 1,
961 SND_UMP_STREAM_MSG_FORMAT_CONTINUE = 2,
962 SND_UMP_STREAM_MSG_FORMAT_END = 3,
963};
964
966enum {
967 SND_UMP_FLEX_DATA_MSG_FORMAT_SINGLE = 0,
968 SND_UMP_FLEX_DATA_MSG_FORMAT_START = 1,
969 SND_UMP_FLEX_DATA_MSG_FORMAT_CONTINUE = 2,
970 SND_UMP_FLEX_DATA_MSG_FORMAT_END = 3,
971};
972
974enum {
975 SND_UMP_FLEX_DATA_MSG_ADDR_CHANNEL = 0,
976 SND_UMP_FLEX_DATA_MSG_ADDR_GROUP = 1,
977};
978
980enum {
981 SND_UMP_FLEX_DATA_MSG_BANK_SETUP = 0,
982 SND_UMP_FLEX_DATA_MSG_BANK_METADATA = 1,
983 SND_UMP_FLEX_DATA_MSG_BANK_PERF_TEXT = 2,
984};
985
987enum {
988 SND_UMP_FLEX_DATA_MSG_STATUS_SET_TEMPO = 0x00,
989 SND_UMP_FLEX_DATA_MSG_STATUS_SET_TIME_SIGNATURE = 0x01,
990 SND_UMP_FLEX_DATA_MSG_STATUS_SET_METRONOME = 0x02,
991 SND_UMP_FLEX_DATA_MSG_STATUS_SET_KEY_SIGNATURE = 0x05,
992 SND_UMP_FLEX_DATA_MSG_STATUS_SET_CHORD_NAME = 0x06,
993};
994
996enum {
997 SND_UMP_FLEX_DATA_MSG_STATUS_PROJECT_NAME = 0x01,
998 SND_UMP_FLEX_DATA_MSG_STATUS_SONG_NAME = 0x02,
999 SND_UMP_FLEX_DATA_MSG_STATUS_MIDI_CLIP_NAME = 0x03,
1000 SND_UMP_FLEX_DATA_MSG_STATUS_COPYRIGHT_NOTICE = 0x04,
1001 SND_UMP_FLEX_DATA_MSG_STATUS_COMPOSER_NAME = 0x05,
1002 SND_UMP_FLEX_DATA_MSG_STATUS_LYRICIST_NAME = 0x06,
1003 SND_UMP_FLEX_DATA_MSG_STATUS_ARRANGER_NAME = 0x07,
1004 SND_UMP_FLEX_DATA_MSG_STATUS_PUBLISHER_NAME = 0x08,
1005 SND_UMP_FLEX_DATA_MSG_STATUS_PRIMARY_PERFORMER = 0x09,
1006 SND_UMP_FLEX_DATA_MSG_STATUS_ACCOMPANY_PERFORMAER = 0x0a,
1007 SND_UMP_FLEX_DATA_MSG_STATUS_RECORDING_DATE = 0x0b,
1008 SND_UMP_FLEX_DATA_MSG_STATUS_RECORDING_LOCATION = 0x0c,
1009};
1010
1012enum {
1013 SND_UMP_FLEX_DATA_MSG_STATUS_LYRICS = 0x01,
1014 SND_UMP_FLEX_DATA_MSG_STATUS_LYRICS_LANGUAGE = 0x02,
1015 SND_UMP_FLEX_DATA_MSG_STATUS_RUBY = 0x03,
1016 SND_UMP_FLEX_DATA_MSG_STATUS_RUBY_LANGUAGE = 0x04,
1017};
1018
1022static inline uint8_t snd_ump_msg_hdr_status(uint32_t ump)
1023{
1024 return (ump >> 20) & 0x0f;
1025}
1026
1030static inline uint8_t snd_ump_msg_hdr_channel(uint32_t ump)
1031{
1032 return (ump >> 16) & 0x0f;
1033}
1034
1038static inline uint8_t snd_ump_msg_hdr_type(uint32_t ump)
1039{
1040 return (ump >> 28);
1041}
1042
1046static inline int snd_ump_msg_type_is_groupless(uint8_t type)
1047{
1048 return type == SND_UMP_MSG_TYPE_UTILITY || type == SND_UMP_MSG_TYPE_STREAM;
1049}
1050
1054static inline uint8_t snd_ump_msg_hdr_group(uint32_t ump)
1055{
1056 return (ump >> 24) & 0x0f;
1057}
1058
1062static inline uint8_t snd_ump_msg_status(const uint32_t *ump)
1063{
1064 return snd_ump_msg_hdr_status(*ump);
1065}
1066
1070static inline uint8_t snd_ump_msg_channel(const uint32_t *ump)
1071{
1072 return snd_ump_msg_hdr_channel(*ump);
1073}
1074
1078static inline uint8_t snd_ump_msg_type(const uint32_t *ump)
1079{
1080 return snd_ump_msg_hdr_type(*ump);
1081}
1082
1086static inline uint8_t snd_ump_msg_group(const uint32_t *ump)
1087{
1088 return snd_ump_msg_hdr_group(*ump);
1089}
1090
1094static inline uint8_t snd_ump_sysex_msg_status(const uint32_t *ump)
1095{
1096 return (*ump >> 20) & 0xf;
1097}
1098
1102static inline uint8_t snd_ump_sysex_msg_length(const uint32_t *ump)
1103{
1104 return (*ump >> 16) & 0xf;
1105}
1106
1110static inline uint8_t snd_ump_get_byte(const uint32_t *ump, unsigned int offset)
1111{
1112#ifdef SNDRV_BIG_ENDIAN
1113 return ((const uint8_t *)ump)[offset];
1114#else
1115 return ((const uint8_t *)ump)[(offset & ~3) | (3 - (offset & 3))];
1116#endif
1117}
1118
1119int snd_ump_msg_sysex_expand(const uint32_t *ump, uint8_t *buf, size_t maxlen,
1120 size_t *filled);
1121int snd_ump_packet_length(unsigned int type);
1122
1123#ifdef __cplusplus
1124}
1125#endif
1126
1127#endif /* __ALSA_UMP_MSG_H */
Definition ump_msg.h:818
uint32_t group
Definition ump_msg.h:827
uint32_t status
Definition ump_msg.h:826
uint32_t ticks
Definition ump_msg.h:825
uint32_t type
Definition ump_msg.h:828
Definition ump_msg.h:801
uint8_t type
Definition ump_msg.h:813
uint8_t reserved
Definition ump_msg.h:810
uint8_t group
Definition ump_msg.h:812
uint16_t ticks
Definition ump_msg.h:809
uint8_t status
Definition ump_msg.h:811
Definition ump_msg.h:480
uint8_t group
Definition ump_msg.h:496
uint8_t channel
Definition ump_msg.h:493
uint8_t status
Definition ump_msg.h:491
uint32_t data[3]
Definition ump_msg.h:498
uint8_t type
Definition ump_msg.h:497
uint8_t format
Definition ump_msg.h:495
uint8_t addrs
Definition ump_msg.h:494
uint8_t status_bank
Definition ump_msg.h:492
Definition ump_msg.h:19
uint8_t byte1
Definition ump_msg.h:29
uint8_t type
Definition ump_msg.h:33
uint8_t status
Definition ump_msg.h:31
uint8_t channel
Definition ump_msg.h:30
uint8_t byte2
Definition ump_msg.h:28
uint8_t group
Definition ump_msg.h:32
Definition ump_msg.h:784
uint8_t status
Definition ump_msg.h:794
uint8_t type
Definition ump_msg.h:796
uint16_t time
Definition ump_msg.h:792
uint8_t reserved
Definition ump_msg.h:793
uint8_t group
Definition ump_msg.h:795
Definition ump_msg.h:114
uint8_t data
Definition ump_msg.h:124
uint8_t type
Definition ump_msg.h:128
uint8_t reserved
Definition ump_msg.h:123
uint8_t channel
Definition ump_msg.h:125
uint8_t status
Definition ump_msg.h:126
uint8_t group
Definition ump_msg.h:127
Definition ump_msg.h:76
uint8_t channel
Definition ump_msg.h:87
uint8_t data
Definition ump_msg.h:85
uint8_t group
Definition ump_msg.h:89
uint8_t type
Definition ump_msg.h:90
uint8_t status
Definition ump_msg.h:88
uint8_t index
Definition ump_msg.h:86
Definition ump_msg.h:38
uint8_t status
Definition ump_msg.h:50
uint8_t velocity
Definition ump_msg.h:47
uint8_t note
Definition ump_msg.h:48
uint8_t channel
Definition ump_msg.h:49
uint8_t type
Definition ump_msg.h:52
uint8_t group
Definition ump_msg.h:51
Definition ump_msg.h:57
uint8_t type
Definition ump_msg.h:71
uint8_t group
Definition ump_msg.h:70
uint8_t data
Definition ump_msg.h:66
uint8_t status
Definition ump_msg.h:69
uint8_t channel
Definition ump_msg.h:68
uint8_t note
Definition ump_msg.h:67
Definition ump_msg.h:133
uint8_t status
Definition ump_msg.h:145
uint8_t channel
Definition ump_msg.h:144
uint8_t group
Definition ump_msg.h:146
uint8_t data_lsb
Definition ump_msg.h:143
uint8_t type
Definition ump_msg.h:147
uint8_t data_msb
Definition ump_msg.h:142
Definition ump_msg.h:95
uint8_t group
Definition ump_msg.h:108
uint8_t program
Definition ump_msg.h:105
uint8_t reserved
Definition ump_msg.h:104
uint8_t type
Definition ump_msg.h:109
uint8_t status
Definition ump_msg.h:107
uint8_t channel
Definition ump_msg.h:106
Definition ump_msg.h:366
uint8_t type
Definition ump_msg.h:380
uint32_t data
Definition ump_msg.h:382
uint8_t status
Definition ump_msg.h:378
uint16_t reserved
Definition ump_msg.h:376
uint8_t group
Definition ump_msg.h:379
uint8_t channel
Definition ump_msg.h:377
Definition ump_msg.h:291
uint8_t group
Definition ump_msg.h:306
uint8_t type
Definition ump_msg.h:307
uint8_t channel
Definition ump_msg.h:304
uint8_t index
Definition ump_msg.h:303
uint32_t data
Definition ump_msg.h:309
uint8_t status
Definition ump_msg.h:305
uint8_t reserved
Definition ump_msg.h:302
Definition ump_msg.h:191
uint8_t group
Definition ump_msg.h:207
uint8_t status
Definition ump_msg.h:206
uint8_t note
Definition ump_msg.h:204
uint16_t velocity
Definition ump_msg.h:211
uint8_t attr_type
Definition ump_msg.h:203
uint8_t channel
Definition ump_msg.h:205
uint16_t attr_data
Definition ump_msg.h:210
uint8_t type
Definition ump_msg.h:208
Definition ump_msg.h:216
uint8_t group
Definition ump_msg.h:231
uint32_t data
Definition ump_msg.h:234
uint8_t channel
Definition ump_msg.h:229
uint8_t reserved
Definition ump_msg.h:227
uint8_t type
Definition ump_msg.h:232
uint8_t note
Definition ump_msg.h:228
uint8_t status
Definition ump_msg.h:230
Definition ump_msg.h:239
uint32_t data
Definition ump_msg.h:257
uint8_t note
Definition ump_msg.h:251
uint8_t channel
Definition ump_msg.h:252
uint8_t status
Definition ump_msg.h:253
uint8_t type
Definition ump_msg.h:255
uint8_t index
Definition ump_msg.h:250
uint8_t group
Definition ump_msg.h:254
Definition ump_msg.h:268
uint8_t note
Definition ump_msg.h:280
uint8_t group
Definition ump_msg.h:283
uint8_t status
Definition ump_msg.h:282
uint8_t flags
Definition ump_msg.h:279
uint8_t channel
Definition ump_msg.h:281
uint32_t reserved
Definition ump_msg.h:286
uint8_t type
Definition ump_msg.h:284
uint8_t channel
Definition ump_msg.h:421
uint8_t note
Definition ump_msg.h:420
uint8_t type
Definition ump_msg.h:424
uint8_t status
Definition ump_msg.h:422
uint8_t reserved
Definition ump_msg.h:419
uint32_t data
Definition ump_msg.h:426
uint8_t group
Definition ump_msg.h:423
Definition ump_msg.h:387
uint8_t channel
Definition ump_msg.h:398
uint8_t group
Definition ump_msg.h:400
uint16_t reserved
Definition ump_msg.h:397
uint8_t status
Definition ump_msg.h:399
uint8_t type
Definition ump_msg.h:401
uint32_t data
Definition ump_msg.h:403
Definition ump_msg.h:337
uint16_t reserved
Definition ump_msg.h:352
uint8_t program
Definition ump_msg.h:361
uint8_t group
Definition ump_msg.h:355
uint8_t status
Definition ump_msg.h:354
uint8_t channel
Definition ump_msg.h:353
uint8_t bank_msb
Definition ump_msg.h:359
uint8_t reserved2
Definition ump_msg.h:360
uint16_t bank_valid
Definition ump_msg.h:351
uint8_t bank_lsb
Definition ump_msg.h:358
uint8_t type
Definition ump_msg.h:356
Definition ump_msg.h:314
uint8_t bank
Definition ump_msg.h:326
uint8_t status
Definition ump_msg.h:328
uint8_t type
Definition ump_msg.h:330
uint8_t channel
Definition ump_msg.h:327
uint32_t data
Definition ump_msg.h:332
uint8_t index
Definition ump_msg.h:325
uint8_t group
Definition ump_msg.h:329
Definition ump_msg.h:643
uint8_t alter4_type
Definition ump_msg.h:693
uint8_t bass_sharp
Definition ump_msg.h:703
uint8_t alter3_type
Definition ump_msg.h:695
uint8_t tonic_sharp
Definition ump_msg.h:689
uint8_t type
Definition ump_msg.h:681
uint8_t alter4_degree
Definition ump_msg.h:692
uint8_t bass_type
Definition ump_msg.h:701
uint8_t alter3_degree
Definition ump_msg.h:694
uint8_t alter1_degree
Definition ump_msg.h:685
uint8_t bass_note
Definition ump_msg.h:702
uint8_t bass_alter1_degree
Definition ump_msg.h:699
uint8_t format
Definition ump_msg.h:679
uint8_t addrs
Definition ump_msg.h:678
uint8_t chord_tonic
Definition ump_msg.h:688
uint8_t bass_alter2_degree
Definition ump_msg.h:697
uint8_t alter1_type
Definition ump_msg.h:686
uint8_t bass_alter2_type
Definition ump_msg.h:698
uint16_t reserved
Definition ump_msg.h:691
uint8_t channel
Definition ump_msg.h:677
uint8_t status_bank
Definition ump_msg.h:676
uint8_t chord_type
Definition ump_msg.h:687
uint8_t alter2_degree
Definition ump_msg.h:683
uint8_t alter2_type
Definition ump_msg.h:684
uint8_t status
Definition ump_msg.h:675
uint8_t group
Definition ump_msg.h:680
uint8_t bass_alter1_type
Definition ump_msg.h:700
Definition ump_msg.h:610
uint8_t sharps_flats
Definition ump_msg.h:636
uint8_t group
Definition ump_msg.h:631
uint32_t reserved2[2]
Definition ump_msg.h:638
uint8_t tonic_note
Definition ump_msg.h:635
uint8_t reserved1[3]
Definition ump_msg.h:634
uint8_t status
Definition ump_msg.h:626
uint8_t status_bank
Definition ump_msg.h:627
uint8_t channel
Definition ump_msg.h:628
uint8_t format
Definition ump_msg.h:630
uint8_t addrs
Definition ump_msg.h:629
uint8_t type
Definition ump_msg.h:632
Definition ump_msg.h:567
uint8_t clocks_primary
Definition ump_msg.h:599
uint16_t reserved1
Definition ump_msg.h:601
uint8_t channel
Definition ump_msg.h:590
uint8_t bar_accent_1
Definition ump_msg.h:598
uint8_t status_bank
Definition ump_msg.h:589
uint8_t group
Definition ump_msg.h:593
uint8_t format
Definition ump_msg.h:592
uint8_t type
Definition ump_msg.h:594
uint8_t status
Definition ump_msg.h:588
uint8_t bar_accent_2
Definition ump_msg.h:597
uint8_t subdivision_1
Definition ump_msg.h:603
uint8_t addrs
Definition ump_msg.h:591
uint8_t subdivision_2
Definition ump_msg.h:602
uint32_t reserved2
Definition ump_msg.h:605
uint8_t bar_accent_3
Definition ump_msg.h:596
Definition ump_msg.h:503
uint8_t group
Definition ump_msg.h:522
uint8_t format
Definition ump_msg.h:521
uint8_t addrs
Definition ump_msg.h:520
uint8_t status
Definition ump_msg.h:517
uint8_t type
Definition ump_msg.h:523
uint32_t tempo
Definition ump_msg.h:525
uint8_t channel
Definition ump_msg.h:519
uint32_t reserved[2]
Definition ump_msg.h:527
uint8_t status_bank
Definition ump_msg.h:518
Definition ump_msg.h:532
uint8_t addrs
Definition ump_msg.h:552
uint8_t channel
Definition ump_msg.h:551
uint8_t format
Definition ump_msg.h:553
uint8_t status
Definition ump_msg.h:549
uint32_t reserved[2]
Definition ump_msg.h:562
uint8_t numerator
Definition ump_msg.h:560
uint8_t denominator
Definition ump_msg.h:559
uint8_t type
Definition ump_msg.h:555
uint8_t group
Definition ump_msg.h:554
uint8_t reserved1
Definition ump_msg.h:557
uint8_t status_bank
Definition ump_msg.h:550
uint8_t num_notes
Definition ump_msg.h:558
Definition ump_msg.h:452
uint16_t data1
Definition ump_msg.h:462
uint32_t data2
Definition ump_msg.h:466
uint32_t data4
Definition ump_msg.h:468
uint32_t data3
Definition ump_msg.h:467
uint16_t type
Definition ump_msg.h:465
uint16_t format
Definition ump_msg.h:464
uint16_t status
Definition ump_msg.h:463
Definition ump_msg.h:721
uint16_t device
Definition ump_msg.h:747
uint8_t type
Definition ump_msg.h:742
uint16_t bytes
Definition ump_msg.h:738
uint8_t status
Definition ump_msg.h:740
uint16_t sub_id_2
Definition ump_msg.h:750
uint16_t manufacturer
Definition ump_msg.h:748
uint8_t group
Definition ump_msg.h:741
uint16_t chunk
Definition ump_msg.h:744
uint16_t sub_id_1
Definition ump_msg.h:751
uint8_t mds_id
Definition ump_msg.h:739
uint16_t chunks
Definition ump_msg.h:745
Definition ump_msg.h:756
uint8_t group
Definition ump_msg.h:769
uint8_t mds_id
Definition ump_msg.h:767
uint8_t type
Definition ump_msg.h:770
uint32_t payloads[3]
Definition ump_msg.h:772
uint16_t payload1
Definition ump_msg.h:766
uint8_t status
Definition ump_msg.h:768
Definition ump_msg.h:152
uint8_t parm1
Definition ump_msg.h:161
uint8_t type
Definition ump_msg.h:164
uint8_t status
Definition ump_msg.h:162
uint8_t parm2
Definition ump_msg.h:160
uint8_t group
Definition ump_msg.h:163
int snd_ump_msg_sysex_expand(const uint32_t *ump, uint8_t *buf, size_t maxlen, size_t *filled)
fill sysex byte from a UMP packet
Definition ump.c:1063
uint8_t group
Definition ump_msg.h:12
uint8_t data
Definition ump_msg.h:8
@ SND_UMP_MIDI2_PNMGMT_RESET_CONTROLLERS
Definition ump_msg.h:263
@ SND_UMP_MIDI2_PNMGMT_DETACH_CONTROLLERS
Definition ump_msg.h:264
uint8_t byte2
Definition ump_msg.h:8
uint8_t byte1
Definition ump_msg.h:9
uint8_t channel
Definition ump_msg.h:10
uint8_t note
Definition ump_msg.h:9
uint8_t velocity
Definition ump_msg.h:8
int snd_ump_packet_length(unsigned int type)
return the length of a UMP packet type
Definition ump.c:1082
@ SND_UMP_MIDI2_NOTE_ATTR_MANUFACTURER
Definition ump_msg.h:185
@ SND_UMP_MIDI2_NOTE_ATTR_PROFILE
Definition ump_msg.h:186
@ SND_UMP_MIDI2_NOTE_ATTR_NO_DATA
Definition ump_msg.h:184
@ SND_UMP_MIDI2_NOTE_ATTR_PITCH79
Definition ump_msg.h:187
uint8_t type
Definition ump_msg.h:13
uint8_t status
Definition ump_msg.h:11
enum @200117165113047007046214241147260313261302351231 __attribute
Definition ump_msg.h:708
snd_ump_msg_set_metronome_t set_metronome
Definition ump_msg.h:713
snd_ump_msg_set_chord_name_t set_chord_name
Definition ump_msg.h:715
snd_ump_msg_set_key_sig_t set_key_sig
Definition ump_msg.h:714
uint32_t raw[4]
Definition ump_msg.h:717
snd_ump_msg_set_time_sig_t set_time_sig
Definition ump_msg.h:712
snd_ump_msg_hdr_t hdr
Definition ump_msg.h:716
snd_ump_msg_flex_data_meta_t meta
Definition ump_msg.h:709
snd_ump_msg_flex_data_meta_t text
Definition ump_msg.h:710
snd_ump_msg_set_tempo_t set_tempo
Definition ump_msg.h:711
Definition ump_msg.h:169
snd_ump_msg_midi1_pitchbend_t pitchbend
Definition ump_msg.h:176
snd_ump_msg_midi1_program_t program_change
Definition ump_msg.h:174
uint32_t raw
Definition ump_msg.h:179
snd_ump_msg_midi1_cc_t control_change
Definition ump_msg.h:173
snd_ump_msg_midi1_note_t note_on
Definition ump_msg.h:170
snd_ump_msg_midi1_note_t note_off
Definition ump_msg.h:171
snd_ump_msg_midi1_caf_t channel_pressure
Definition ump_msg.h:175
snd_ump_msg_hdr_t hdr
Definition ump_msg.h:178
snd_ump_msg_system_t system
Definition ump_msg.h:177
snd_ump_msg_midi1_paf_t poly_pressure
Definition ump_msg.h:172
Definition ump_msg.h:431
snd_ump_msg_midi2_rpn_t relative_rpn
Definition ump_msg.h:441
snd_ump_msg_midi2_paf_t poly_pressure
Definition ump_msg.h:434
snd_ump_msg_midi2_note_t note_off
Definition ump_msg.h:433
snd_ump_msg_midi2_program_t program_change
Definition ump_msg.h:443
snd_ump_msg_midi2_rpn_t rpn
Definition ump_msg.h:439
snd_ump_msg_midi2_per_note_mgmt_t per_note_mgmt
Definition ump_msg.h:437
snd_ump_msg_midi2_pitchbend_t pitchbend
Definition ump_msg.h:445
snd_ump_msg_midi2_cc_t control_change
Definition ump_msg.h:438
snd_ump_msg_midi2_per_note_pitchbend_t per_note_pitchbend
Definition ump_msg.h:446
snd_ump_msg_midi2_note_t note_on
Definition ump_msg.h:432
snd_ump_msg_midi2_rpn_t nrpn
Definition ump_msg.h:440
uint32_t raw[2]
Definition ump_msg.h:448
snd_ump_msg_midi2_per_note_cc_t per_note_acc
Definition ump_msg.h:435
snd_ump_msg_hdr_t hdr
Definition ump_msg.h:447
snd_ump_msg_midi2_caf_t channel_pressure
Definition ump_msg.h:444
snd_ump_msg_midi2_per_note_cc_t per_note_rcc
Definition ump_msg.h:436
snd_ump_msg_midi2_rpn_t relative_nrpn
Definition ump_msg.h:442
Definition ump_msg.h:777
uint32_t raw[4]
Definition ump_msg.h:780
snd_ump_msg_mixed_data_payload_t payload
Definition ump_msg.h:779
snd_ump_msg_mixed_data_header_t header
Definition ump_msg.h:778
Definition ump_msg.h:473
snd_ump_msg_hdr_t hdr
Definition ump_msg.h:475
snd_ump_msg_stream_gen_t gen
Definition ump_msg.h:474
uint32_t raw[4]
Definition ump_msg.h:476
Definition ump_msg.h:833
snd_ump_msg_dc_t dc
Definition ump_msg.h:836
snd_ump_msg_jr_clock_t jr_clock
Definition ump_msg.h:834
snd_ump_msg_dctpq_t dctpq
Definition ump_msg.h:835
uint32_t raw
Definition ump_msg.h:838
snd_ump_msg_hdr_t hdr
Definition ump_msg.h:837