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