Loading...
Searching...
No Matches
ump_msg.h
Go to the documentation of this file.
/* SPDX-License-Identifier: LGPL-2.1+ */
#if !defined(__ASOUNDLIB_H) && !defined(ALSA_LIBRARY_BUILD)
/* don't use ALSA_LIBRARY_BUILD define in sources outside alsa-lib */
#warning "use #include <alsa/asoundlib.h>, <alsa/ump_msg.h> should not be used directly"
#include <alsa/asoundlib.h>
#endif
#ifndef __ALSA_UMP_MSG_H
#define __ALSA_UMP_MSG_H
#ifdef __cplusplus
extern "C" {
#endif
#if __BYTE_ORDER != __LITTLE_ENDIAN && __BYTE_ORDER != __BIG_ENDIAN
#error "Endianness check failed!"
#endif
typedef struct _snd_ump_msg_hdr {
#if __BYTE_ORDER == __BIG_ENDIAN
uint8_t type:4;
uint8_t group:4;
uint8_t status:4;
uint8_t channel:4;
uint8_t byte1;
uint8_t byte2;
#else
uint8_t byte2;
uint8_t byte1;
uint8_t channel:4;
uint8_t status:4;
uint8_t group:4;
uint8_t type:4;
#endif
} __attribute((packed)) snd_ump_msg_hdr_t;
typedef struct _snd_ump_msg_midi1_note {
#if __BYTE_ORDER == __BIG_ENDIAN
uint8_t type:4;
uint8_t group:4;
uint8_t status:4;
uint8_t channel:4;
uint8_t note;
uint8_t velocity;
#else
uint8_t velocity;
uint8_t note;
uint8_t channel:4;
uint8_t status:4;
uint8_t group:4;
uint8_t type:4;
#endif
} __attribute((packed)) snd_ump_msg_midi1_note_t;
typedef struct _snd_ump_msg_midi1_paf {
#if __BYTE_ORDER == __BIG_ENDIAN
uint8_t type:4;
uint8_t group:4;
uint8_t status:4;
uint8_t channel:4;
uint8_t note;
uint8_t data;
#else
uint8_t data;
uint8_t note;
uint8_t channel:4;
uint8_t status:4;
uint8_t group:4;
uint8_t type:4;
#endif
} __attribute((packed)) snd_ump_msg_midi1_paf_t;
typedef struct _snd_ump_msg_midi1_cc {
#if __BYTE_ORDER == __BIG_ENDIAN
uint8_t type:4;
uint8_t group:4;
uint8_t status:4;
uint8_t channel:4;
uint8_t index;
uint8_t data;
#else
uint8_t data;
uint8_t index;
uint8_t channel:4;
uint8_t status:4;
uint8_t group:4;
uint8_t type:4;
#endif
} __attribute((packed)) snd_ump_msg_midi1_cc_t;
typedef struct _snd_ump_msg_midi1_program {
#if __BYTE_ORDER == __BIG_ENDIAN
uint8_t type:4;
uint8_t group:4;
uint8_t status:4;
uint8_t channel:4;
uint8_t program;
uint8_t reserved;
#else
uint8_t reserved;
uint8_t program;
uint8_t channel:4;
uint8_t status:4;
uint8_t group:4;
uint8_t type:4;
#endif
} __attribute((packed)) snd_ump_msg_midi1_program_t;
typedef struct _snd_ump_msg_midi1_caf {
#if __BYTE_ORDER == __BIG_ENDIAN
uint8_t type:4;
uint8_t group:4;
uint8_t status:4;
uint8_t channel:4;
uint8_t data;
uint8_t reserved;
#else
uint8_t reserved;
uint8_t data;
uint8_t channel:4;
uint8_t status:4;
uint8_t group:4;
uint8_t type:4;
#endif
} __attribute((packed)) snd_ump_msg_midi1_caf_t;
typedef struct _snd_ump_msg_midi1_pitchbend {
#if __BYTE_ORDER == __BIG_ENDIAN
uint8_t type:4;
uint8_t group:4;
uint8_t status:4;
uint8_t channel:4;
uint8_t data_lsb;
uint8_t data_msb;
#else
uint8_t data_msb;
uint8_t data_lsb;
uint8_t channel:4;
uint8_t status:4;
uint8_t group:4;
uint8_t type:4;
#endif
} __attribute((packed)) snd_ump_msg_midi1_pitchbend_t;
typedef struct snd_ump_msg_system {
#if __BYTE_ORDER == __BIG_ENDIAN
uint8_t type:4;
uint8_t group:4;
uint8_t status;
uint8_t parm1;
uint8_t parm2;
#else
uint8_t parm2;
uint8_t parm1;
uint8_t status;
uint8_t group:4;
uint8_t type:4;
#endif
} __attribute((packed)) snd_ump_msg_system_t;
typedef union _snd_ump_msg_midi1 {
snd_ump_msg_midi1_note_t note_on;
snd_ump_msg_midi1_note_t note_off;
snd_ump_msg_midi1_paf_t poly_pressure;
snd_ump_msg_midi1_cc_t control_change;
snd_ump_msg_midi1_program_t program_change;
snd_ump_msg_midi1_caf_t channel_pressure;
snd_ump_msg_midi1_pitchbend_t pitchbend;
snd_ump_msg_system_t system;
snd_ump_msg_hdr_t hdr;
uint32_t raw;
} snd_ump_msg_midi1_t;
enum {
SND_UMP_MIDI2_NOTE_ATTR_NO_DATA = 0x00,
SND_UMP_MIDI2_NOTE_ATTR_MANUFACTURER = 0x01,
SND_UMP_MIDI2_NOTE_ATTR_PROFILE = 0x02,
SND_UMP_MIDI2_NOTE_ATTR_PITCH79 = 0x03,
};
typedef struct _snd_ump_msg_midi2_note {
#if __BYTE_ORDER == __BIG_ENDIAN
uint8_t type:4;
uint8_t group:4;
uint8_t status:4;
uint8_t channel:4;
uint8_t note;
uint8_t attr_type;
uint16_t velocity;
uint16_t attr_data;
#else
uint8_t attr_type;
uint8_t note;
uint8_t channel:4;
uint8_t status:4;
uint8_t group:4;
uint8_t type:4;
uint16_t attr_data;
uint16_t velocity;
#endif
} __attribute((packed)) snd_ump_msg_midi2_note_t;
typedef struct _snd_ump_msg_midi2_paf {
#if __BYTE_ORDER == __BIG_ENDIAN
uint8_t type:4;
uint8_t group:4;
uint8_t status:4;
uint8_t channel:4;
uint8_t note;
uint8_t reserved;
uint32_t data;
#else
uint8_t reserved;
uint8_t note;
uint8_t channel:4;
uint8_t status:4;
uint8_t group:4;
uint8_t type:4;
uint32_t data;
#endif
} __attribute((packed)) snd_ump_msg_midi2_paf_t;
typedef struct _snd_ump_msg_midi2_per_note_cc {
#if __BYTE_ORDER == __BIG_ENDIAN
uint8_t type:4;
uint8_t group:4;
uint8_t status:4;
uint8_t channel:4;
uint8_t note;
uint8_t index;
uint32_t data;
#else
uint8_t index;
uint8_t note;
uint8_t channel:4;
uint8_t status:4;
uint8_t group:4;
uint8_t type:4;
uint32_t data;
#endif
} __attribute((packed)) snd_ump_msg_midi2_per_note_cc_t;
enum {
SND_UMP_MIDI2_PNMGMT_RESET_CONTROLLERS = 0x01,
SND_UMP_MIDI2_PNMGMT_DETACH_CONTROLLERS = 0x02,
};
typedef struct _snd_ump_msg_midi2_per_note_mgmt {
#if __BYTE_ORDER == __BIG_ENDIAN
uint8_t type:4;
uint8_t group:4;
uint8_t status:4;
uint8_t channel:4;
uint8_t note;
uint8_t flags;
uint32_t reserved;
#else
uint8_t flags;
uint8_t note;
uint8_t channel:4;
uint8_t status:4;
uint8_t group:4;
uint8_t type:4;
uint32_t reserved;
#endif
} __attribute((packed)) snd_ump_msg_midi2_per_note_mgmt_t;
typedef struct _snd_ump_msg_midi2_cc {
#if __BYTE_ORDER == __BIG_ENDIAN
uint8_t type:4;
uint8_t group:4;
uint8_t status:4;
uint8_t channel:4;
uint8_t index;
uint8_t reserved;
uint32_t data;
#else
uint8_t reserved;
uint8_t index;
uint8_t channel:4;
uint8_t status:4;
uint8_t group:4;
uint8_t type:4;
uint32_t data;
#endif
} __attribute((packed)) snd_ump_msg_midi2_cc_t;
typedef struct _snd_ump_msg_midi2_rpn {
#if __BYTE_ORDER == __BIG_ENDIAN
uint8_t type:4;
uint8_t group:4;
uint8_t status:4;
uint8_t channel:4;
uint8_t bank;
uint8_t index;
uint32_t data;
#else
uint8_t index;
uint8_t bank;
uint8_t channel:4;
uint8_t status:4;
uint8_t group:4;
uint8_t type:4;
uint32_t data;
#endif
} __attribute((packed)) snd_ump_msg_midi2_rpn_t;
typedef struct _snd_ump_msg_midi2_program {
#if __BYTE_ORDER == __BIG_ENDIAN
uint8_t type:4;
uint8_t group:4;
uint8_t status:4;
uint8_t channel:4;
uint16_t reserved:15;
uint16_t bank_valid:1;
uint8_t program;
uint8_t reserved2;
uint8_t bank_msb;
uint8_t bank_lsb;
#else
uint16_t bank_valid:1;
uint16_t reserved:15;
uint8_t channel:4;
uint8_t status:4;
uint8_t group:4;
uint8_t type:4;
uint8_t bank_lsb;
uint8_t bank_msb;
uint8_t reserved2;
uint8_t program;
#endif
} __attribute((packed)) snd_ump_msg_midi2_program_t;
typedef struct _snd_ump_msg_midi2_caf {
#if __BYTE_ORDER == __BIG_ENDIAN
uint8_t type:4;
uint8_t group:4;
uint8_t status:4;
uint8_t channel:4;
uint16_t reserved;
uint32_t data;
#else
uint16_t reserved;
uint8_t channel:4;
uint8_t status:4;
uint8_t group:4;
uint8_t type:4;
uint32_t data;
#endif
} __attribute((packed)) snd_ump_msg_midi2_caf_t;
typedef struct _snd_ump_msg_midi2_pitchbend {
#if __BYTE_ORDER == __BIG_ENDIAN
uint8_t type:4;
uint8_t group:4;
uint8_t status:4;
uint8_t channel:4;
uint16_t reserved;
uint32_t data;
#else
uint16_t reserved;
uint8_t channel:4;
uint8_t status:4;
uint8_t group:4;
uint8_t type:4;
uint32_t data;
#endif
} __attribute((packed)) snd_ump_msg_midi2_pitchbend_t;
typedef struct _snd_ump_msg_midi2_per_note_pitchbend {
#ifdef __BIG_ENDIAN_BITFIELD
uint8_t type:4;
uint8_t group:4;
uint8_t status:4;
uint8_t channel:4;
uint8_t note;
uint8_t reserved;
uint32_t data;
#else
uint8_t reserved;
uint8_t note;
uint8_t channel:4;
uint8_t status:4;
uint8_t group:4;
uint8_t type:4;
uint32_t data;
#endif
} __attribute((packed)) snd_ump_msg_midi2_per_note_pitchbend_t;
typedef union _snd_ump_msg_midi2 {
snd_ump_msg_midi2_note_t note_on;
snd_ump_msg_midi2_note_t note_off;
snd_ump_msg_midi2_paf_t poly_pressure;
snd_ump_msg_midi2_per_note_cc_t per_note_acc;
snd_ump_msg_midi2_per_note_cc_t per_note_rcc;
snd_ump_msg_midi2_per_note_mgmt_t per_note_mgmt;
snd_ump_msg_midi2_cc_t control_change;
snd_ump_msg_midi2_rpn_t rpn;
snd_ump_msg_midi2_rpn_t nrpn;
snd_ump_msg_midi2_rpn_t relative_rpn;
snd_ump_msg_midi2_rpn_t relative_nrpn;
snd_ump_msg_midi2_program_t program_change;
snd_ump_msg_midi2_caf_t channel_pressure;
snd_ump_msg_midi2_pitchbend_t pitchbend;
snd_ump_msg_midi2_per_note_pitchbend_t per_note_pitchbend;
snd_ump_msg_hdr_t hdr;
uint32_t raw[2];
} snd_ump_msg_midi2_t;
typedef struct _snd_ump_msg_stream_gen {
#if __BYTE_ORDER == __BIG_ENDIAN
uint16_t type:4;
uint16_t format:2;
uint16_t status:10;
uint16_t data1;
uint32_t data2;
uint32_t data3;
uint32_t data4;
#else
uint16_t data1;
uint16_t status:10;
uint16_t format:2;
uint16_t type:4;
uint32_t data2;
uint32_t data3;
uint32_t data4;
#endif
} __attribute((packed)) snd_ump_msg_stream_gen_t;
typedef union _snd_ump_msg_stream {
snd_ump_msg_stream_gen_t gen;
snd_ump_msg_hdr_t hdr;
uint32_t raw[4];
} snd_ump_msg_stream_t;
typedef struct _snd_ump_msg_flex_data_meta {
#if __BYTE_ORDER == __BIG_ENDIAN
uint8_t type:4;
uint8_t group:4;
uint8_t format:2;
uint8_t addrs:2;
uint8_t channel:4;
uint8_t status_bank;
uint8_t status;
uint32_t data[3];
#else
uint8_t status;
uint8_t status_bank;
uint8_t channel:4;
uint8_t addrs:2;
uint8_t format:2;
uint8_t group:4;
uint8_t type:4;
uint32_t data[3];
#endif
} __attribute((packed)) snd_ump_msg_flex_data_meta_t;
typedef struct _snd_ump_msg_set_tempo {
#if __BYTE_ORDER == __BIG_ENDIAN
uint8_t type:4;
uint8_t group:4;
uint8_t format:2;
uint8_t addrs:2;
uint8_t channel:4;
uint8_t status_bank;
uint8_t status;
uint32_t tempo;
uint32_t reserved[2];
#else
uint8_t status;
uint8_t status_bank;
uint8_t channel:4;
uint8_t addrs:2;
uint8_t format:2;
uint8_t group:4;
uint8_t type:4;
uint32_t tempo;
uint32_t reserved[2];
#endif
} __attribute((packed)) snd_ump_msg_set_tempo_t;
typedef struct _snd_ump_msg_set_time_sig {
#if __BYTE_ORDER == __BIG_ENDIAN
uint8_t type:4;
uint8_t group:4;
uint8_t format:2;
uint8_t addrs:2;
uint8_t channel:4;
uint8_t status_bank;
uint8_t status;
uint8_t numerator;
uint8_t denominator;
uint8_t num_notes;
uint8_t reserved1;
uint32_t reserved[2];
#else
uint8_t status;
uint8_t status_bank;
uint8_t channel:4;
uint8_t addrs:2;
uint8_t format:2;
uint8_t group:4;
uint8_t type:4;
uint8_t reserved1;
uint8_t num_notes;
uint8_t denominator;
uint8_t numerator;
uint32_t reserved[2];
#endif
} __attribute((packed)) snd_ump_msg_set_time_sig_t;
typedef struct _snd_ump_msg_set_metronome {
#if __BYTE_ORDER == __BIG_ENDIAN
uint8_t type:4;
uint8_t group:4;
uint8_t format:2;
uint8_t addrs:2;
uint8_t channel:4;
uint8_t status_bank;
uint8_t status;
uint8_t clocks_primary;
uint8_t bar_accent_1;
uint8_t bar_accent_2;
uint8_t bar_accent_3;
uint8_t subdivision_1;
uint8_t subdivision_2;
uint16_t reserved1;
uint32_t reserved2;
#else
uint8_t status;
uint8_t status_bank;
uint8_t channel:4;
uint8_t addrs:2;
uint8_t format:2;
uint8_t group:4;
uint8_t type:4;
uint8_t bar_accent_3;
uint8_t bar_accent_2;
uint8_t bar_accent_1;
uint8_t clocks_primary;
uint16_t reserved1;
uint8_t subdivision_2;
uint8_t subdivision_1;
uint32_t reserved2;
#endif
} __attribute((packed)) snd_ump_msg_set_metronome_t;
typedef struct _snd_ump_msg_set_key_sig {
#if __BYTE_ORDER == __BIG_ENDIAN
uint8_t type:4;
uint8_t group:4;
uint8_t format:2;
uint8_t addrs:2;
uint8_t channel:4;
uint8_t status_bank;
uint8_t status;
uint8_t sharps_flats:4;
uint8_t tonic_note:4;
uint8_t reserved1[3];
uint32_t reserved2[2];
#else
uint8_t status;
uint8_t status_bank;
uint8_t channel:4;
uint8_t addrs:2;
uint8_t format:2;
uint8_t group:4;
uint8_t type:4;
uint8_t reserved1[3];
uint8_t tonic_note:4;
uint8_t sharps_flats:4;
uint32_t reserved2[2];
#endif
} __attribute((packed)) snd_ump_msg_set_key_sig_t;
typedef struct _snd_ump_msg_set_chord_name {
#if __BYTE_ORDER == __BIG_ENDIAN
uint8_t type:4;
uint8_t group:4;
uint8_t format:2;
uint8_t addrs:2;
uint8_t channel:4;
uint8_t status_bank;
uint8_t status;
uint8_t tonic_sharp:4;
uint8_t chord_tonic:4;
uint8_t chord_type;
uint8_t alter1_type:4;
uint8_t alter1_degree:4;
uint8_t alter2_type:4;
uint8_t alter2_degree:4;
uint8_t alter3_type:4;
uint8_t alter3_degree:4;
uint8_t alter4_type:4;
uint8_t alter4_degree:4;
uint16_t reserved;
uint8_t bass_sharp:4;
uint8_t bass_note:4;
uint8_t bass_type;
uint8_t bass_alter1_type:4;
uint8_t bass_alter1_degree:4;
uint8_t bass_alter2_type:4;
uint8_t bass_alter2_degree:4;
#else
uint8_t status;
uint8_t status_bank;
uint8_t channel:4;
uint8_t addrs:2;
uint8_t format:2;
uint8_t group:4;
uint8_t type:4;
uint8_t alter2_degree:4;
uint8_t alter2_type:4;
uint8_t alter1_degree:4;
uint8_t alter1_type:4;
uint8_t chord_type;
uint8_t chord_tonic:4;
uint8_t tonic_sharp:4;
uint16_t reserved;
uint8_t alter4_degree:4;
uint8_t alter4_type:4;
uint8_t alter3_degree:4;
uint8_t alter3_type:4;
uint8_t bass_alter2_degree:4;
uint8_t bass_alter2_type:4;
uint8_t bass_alter1_degree:4;
uint8_t bass_alter1_type:4;
uint8_t bass_type;
uint8_t bass_note:4;
uint8_t bass_sharp:4;
#endif
} __attribute((packed)) snd_ump_msg_set_chord_name_t;
typedef union _snd_ump_msg_flex_data {
snd_ump_msg_flex_data_meta_t meta;
snd_ump_msg_flex_data_meta_t text;
snd_ump_msg_set_tempo_t set_tempo;
snd_ump_msg_set_time_sig_t set_time_sig;
snd_ump_msg_set_metronome_t set_metronome;
snd_ump_msg_set_key_sig_t set_key_sig;
snd_ump_msg_set_chord_name_t set_chord_name;
snd_ump_msg_hdr_t hdr;
uint32_t raw[4];
} snd_ump_msg_flex_data_t;
typedef struct _snd_ump_msg_mixed_data_header {
#ifdef __BIG_ENDIAN_BITFIELD
uint8_t type:4;
uint8_t group:4;
uint8_t status:4;
uint8_t mds_id:4;
uint16_t bytes;
uint16_t chunks;
uint16_t chunk;
uint16_t manufacturer;
uint16_t device;
uint16_t sub_id_1;
uint16_t sub_id_2;
#else
uint16_t bytes;
uint8_t mds_id:4;
uint8_t status:4;
uint8_t group:4;
uint8_t type:4;
uint16_t chunk;
uint16_t chunks;
uint16_t device;
uint16_t manufacturer;
uint16_t sub_id_2;
uint16_t sub_id_1;
#endif
} snd_ump_msg_mixed_data_header_t;
typedef struct _snd_ump_msg_mixed_data_payload {
#ifdef __BIG_ENDIAN_BITFIELD
uint8_t type:4;
uint8_t group:4;
uint8_t status:4;
uint8_t mds_id:4;
uint16_t payload1;
uint32_t payloads[3];
#else
uint16_t payload1;
uint8_t mds_id:4;
uint8_t status:4;
uint8_t group:4;
uint8_t type:4;
uint32_t payloads[3];
#endif
} snd_ump_msg_mixed_data_payload_t;
typedef union _snd_ump_msg_mixed_data {
snd_ump_msg_mixed_data_header_t header;
snd_ump_msg_mixed_data_payload_t payload;
uint32_t raw[4];
} snd_ump_msg_mixed_data_t;
typedef struct _snd_ump_msg_jr_clock {
#if __BYTE_ORDER == __BIG_ENDIAN
uint8_t type:4;
uint8_t group:4;
uint8_t status:4;
uint8_t reserved:4;
uint16_t time;
#else
uint16_t time;
uint8_t reserved:4;
uint8_t status:4;
uint8_t group:4;
uint8_t type:4;
#endif
} __attribute((packed)) snd_ump_msg_jr_clock_t;
typedef struct _snd_ump_msg_dctpq {
#if __BYTE_ORDER == __BIG_ENDIAN
uint8_t type:4;
uint8_t group:4;
uint8_t status:4;
uint8_t reserved:4;
uint16_t ticks;
#else
uint16_t ticks;
uint8_t reserved:4;
uint8_t status:4;
uint8_t group:4;
uint8_t type:4;
#endif
} __attribute((packed)) snd_ump_msg_dctpq_t;
typedef struct _snd_ump_msg_dc {
#if __BYTE_ORDER == __BIG_ENDIAN
uint32_t type:4;
uint32_t group:4;
uint32_t status:4;
uint32_t ticks:20;
#else
uint32_t ticks:20;
uint32_t status:4;
uint32_t group:4;
uint32_t type:4;
#endif
} __attribute((packed)) snd_ump_msg_dc_t;
typedef union _snd_ump_msg_utility {
snd_ump_msg_jr_clock_t jr_clock;
snd_ump_msg_dctpq_t dctpq;
snd_ump_msg_dc_t dc;
snd_ump_msg_hdr_t hdr;
uint32_t raw;
} snd_ump_msg_utility_t;
enum {
SND_UMP_MSG_TYPE_UTILITY = 0x00, /* Utility messages */
SND_UMP_MSG_TYPE_SYSTEM = 0x01, /* System messages */
SND_UMP_MSG_TYPE_MIDI1_CHANNEL_VOICE = 0x02, /* MIDI 1.0 messages */
SND_UMP_MSG_TYPE_DATA = 0x03, /* 7bit SysEx messages */
SND_UMP_MSG_TYPE_MIDI2_CHANNEL_VOICE = 0x04, /* MIDI 2.0 messages */
SND_UMP_MSG_TYPE_EXTENDED_DATA = 0x05, /* 8bit data message */
SND_UMP_MSG_TYPE_FLEX_DATA = 0x0d, /* Flexible data messages */
SND_UMP_MSG_TYPE_STREAM = 0x0f, /* Stream messages */
};
enum {
SND_UMP_MSG_PER_NOTE_RCC = 0x0,
SND_UMP_MSG_PER_NOTE_ACC = 0x1,
SND_UMP_MSG_RPN = 0x2,
SND_UMP_MSG_NRPN = 0x3,
SND_UMP_MSG_RELATIVE_RPN = 0x4,
SND_UMP_MSG_RELATIVE_NRPN = 0x5,
SND_UMP_MSG_PER_NOTE_PITCHBEND = 0x6,
SND_UMP_MSG_NOTE_OFF = 0x8,
SND_UMP_MSG_NOTE_ON = 0x9,
SND_UMP_MSG_POLY_PRESSURE = 0xa,
SND_UMP_MSG_CONTROL_CHANGE = 0xb,
SND_UMP_MSG_PROGRAM_CHANGE = 0xc,
SND_UMP_MSG_CHANNEL_PRESSURE = 0xd,
SND_UMP_MSG_PITCHBEND = 0xe,
SND_UMP_MSG_PER_NOTE_MGMT = 0xf,
};
enum {
SND_UMP_MSG_REALTIME = 0xf0, /* mask */
SND_UMP_MSG_SYSEX_START = 0xf0,
SND_UMP_MSG_MIDI_TIME_CODE = 0xf1,
SND_UMP_MSG_SONG_POSITION = 0xf2,
SND_UMP_MSG_SONG_SELECT = 0xf3,
SND_UMP_MSG_TUNE_REQUEST = 0xf6,
SND_UMP_MSG_SYSEX_END = 0xf7,
SND_UMP_MSG_TIMING_CLOCK = 0xf8,
SND_UMP_MSG_START = 0xfa,
SND_UMP_MSG_CONTINUE = 0xfb,
SND_UMP_MSG_STOP = 0xfc,
SND_UMP_MSG_ACTIVE_SENSING = 0xfe,
SND_UMP_MSG_RESET = 0xff,
};
enum {
SND_UMP_SYSEX_STATUS_SINGLE = 0,
SND_UMP_SYSEX_STATUS_START = 1,
SND_UMP_SYSEX_STATUS_CONTINUE = 2,
SND_UMP_SYSEX_STATUS_END = 3,
};
enum {
SND_UMP_MIXED_DATA_SET_STATUS_HEADER = 8,
SND_UMP_MIXED_DATA_SET_STATUS_PAYLOAD = 9,
};
enum {
SND_UMP_UTILITY_MSG_STATUS_NOOP = 0x00,
SND_UMP_UTILITY_MSG_STATUS_JR_CLOCK = 0x01,
SND_UMP_UTILITY_MSG_STATUS_JR_TSTAMP = 0x02,
SND_UMP_UTILITY_MSG_STATUS_DCTPQ = 0x03,
SND_UMP_UTILITY_MSG_STATUS_DC = 0x04,
};
enum {
SND_UMP_STREAM_MSG_STATUS_EP_DISCOVERY = 0x00,
SND_UMP_STREAM_MSG_STATUS_EP_INFO = 0x01,
SND_UMP_STREAM_MSG_STATUS_DEVICE_INFO = 0x02,
SND_UMP_STREAM_MSG_STATUS_EP_NAME = 0x03,
SND_UMP_STREAM_MSG_STATUS_PRODUCT_ID = 0x04,
SND_UMP_STREAM_MSG_STATUS_STREAM_CFG_REQUEST = 0x05,
SND_UMP_STREAM_MSG_STATUS_STREAM_CFG = 0x06,
SND_UMP_STREAM_MSG_STATUS_FB_DISCOVERY = 0x10,
SND_UMP_STREAM_MSG_STATUS_FB_INFO = 0x11,
SND_UMP_STREAM_MSG_STATUS_FB_NAME = 0x12,
SND_UMP_STREAM_MSG_STATUS_START_CLIP = 0x20,
SND_UMP_STREAM_MSG_STATUS_END_CLIP = 0x21,
};
enum {
SND_UMP_STREAM_MSG_REQUEST_EP_INFO = (1U << 0),
SND_UMP_STREAM_MSG_REQUEST_DEVICE_INFO = (1U << 1),
SND_UMP_STREAM_MSG_REQUEST_EP_NAME = (1U << 2),
SND_UMP_STREAM_MSG_REQUEST_PRODUCT_ID = (1U << 3),
SND_UMP_STREAM_MSG_REQUEST_STREAM_CFG = (1U << 4),
};
enum {
SND_UMP_STREAM_MSG_REQUEST_FB_INFO = (1U << 0),
SND_UMP_STREAM_MSG_REQUEST_FB_NAME = (1U << 1),
};
enum {
SND_UMP_STREAM_MSG_EP_INFO_CAP_TXJR = (1U << 0), /* Sending JRTS */
SND_UMP_STREAM_MSG_EP_INFO_CAP_RXJR = (1U << 1), /* Receiving JRTS */
SND_UMP_STREAM_MSG_EP_INFO_CAP_MIDI1 = (1U << 8), /* MIDI 1.0 */
SND_UMP_STREAM_MSG_EP_INFO_CAP_MIDI2 = (1U << 9), /* MIDI 2.0 */
};
enum {
SND_UMP_STREAM_MSG_FORMAT_SINGLE = 0,
SND_UMP_STREAM_MSG_FORMAT_START = 1,
SND_UMP_STREAM_MSG_FORMAT_CONTINUE = 2,
SND_UMP_STREAM_MSG_FORMAT_END = 3,
};
enum {
SND_UMP_FLEX_DATA_MSG_FORMAT_SINGLE = 0,
SND_UMP_FLEX_DATA_MSG_FORMAT_START = 1,
SND_UMP_FLEX_DATA_MSG_FORMAT_CONTINUE = 2,
SND_UMP_FLEX_DATA_MSG_FORMAT_END = 3,
};
enum {
SND_UMP_FLEX_DATA_MSG_ADDR_CHANNEL = 0,
SND_UMP_FLEX_DATA_MSG_ADDR_GROUP = 1,
};
enum {
SND_UMP_FLEX_DATA_MSG_BANK_SETUP = 0,
SND_UMP_FLEX_DATA_MSG_BANK_METADATA = 1,
SND_UMP_FLEX_DATA_MSG_BANK_PERF_TEXT = 2,
};
enum {
SND_UMP_FLEX_DATA_MSG_STATUS_SET_TEMPO = 0x00,
SND_UMP_FLEX_DATA_MSG_STATUS_SET_TIME_SIGNATURE = 0x01,
SND_UMP_FLEX_DATA_MSG_STATUS_SET_METRONOME = 0x02,
SND_UMP_FLEX_DATA_MSG_STATUS_SET_KEY_SIGNATURE = 0x05,
SND_UMP_FLEX_DATA_MSG_STATUS_SET_CHORD_NAME = 0x06,
};
enum {
SND_UMP_FLEX_DATA_MSG_STATUS_PROJECT_NAME = 0x01,
SND_UMP_FLEX_DATA_MSG_STATUS_SONG_NAME = 0x02,
SND_UMP_FLEX_DATA_MSG_STATUS_MIDI_CLIP_NAME = 0x03,
SND_UMP_FLEX_DATA_MSG_STATUS_COPYRIGHT_NOTICE = 0x04,
SND_UMP_FLEX_DATA_MSG_STATUS_COMPOSER_NAME = 0x05,
SND_UMP_FLEX_DATA_MSG_STATUS_LYRICIST_NAME = 0x06,
SND_UMP_FLEX_DATA_MSG_STATUS_ARRANGER_NAME = 0x07,
SND_UMP_FLEX_DATA_MSG_STATUS_PUBLISHER_NAME = 0x08,
SND_UMP_FLEX_DATA_MSG_STATUS_PRIMARY_PERFORMER = 0x09,
SND_UMP_FLEX_DATA_MSG_STATUS_ACCOMPANY_PERFORMAER = 0x0a,
SND_UMP_FLEX_DATA_MSG_STATUS_RECORDING_DATE = 0x0b,
SND_UMP_FLEX_DATA_MSG_STATUS_RECORDING_LOCATION = 0x0c,
};
enum {
SND_UMP_FLEX_DATA_MSG_STATUS_LYRICS = 0x01,
SND_UMP_FLEX_DATA_MSG_STATUS_LYRICS_LANGUAGE = 0x02,
SND_UMP_FLEX_DATA_MSG_STATUS_RUBY = 0x03,
SND_UMP_FLEX_DATA_MSG_STATUS_RUBY_LANGUAGE = 0x04,
};
static inline uint8_t snd_ump_msg_hdr_status(uint32_t ump)
{
return (ump >> 20) & 0x0f;
}
static inline uint8_t snd_ump_msg_hdr_channel(uint32_t ump)
{
return (ump >> 16) & 0x0f;
}
static inline uint8_t snd_ump_msg_hdr_type(uint32_t ump)
{
return (ump >> 28);
}
static inline int snd_ump_msg_type_is_groupless(uint8_t type)
{
return type == SND_UMP_MSG_TYPE_UTILITY || type == SND_UMP_MSG_TYPE_STREAM;
}
static inline uint8_t snd_ump_msg_hdr_group(uint32_t ump)
{
return (ump >> 24) & 0x0f;
}
static inline uint8_t snd_ump_msg_status(const uint32_t *ump)
{
return snd_ump_msg_hdr_status(*ump);
}
static inline uint8_t snd_ump_msg_channel(const uint32_t *ump)
{
return snd_ump_msg_hdr_channel(*ump);
}
static inline uint8_t snd_ump_msg_type(const uint32_t *ump)
{
return snd_ump_msg_hdr_type(*ump);
}
static inline uint8_t snd_ump_msg_group(const uint32_t *ump)
{
return snd_ump_msg_hdr_group(*ump);
}
static inline uint8_t snd_ump_sysex_msg_status(const uint32_t *ump)
{
return (*ump >> 20) & 0xf;
}
static inline uint8_t snd_ump_sysex_msg_length(const uint32_t *ump)
{
return (*ump >> 16) & 0xf;
}
static inline uint8_t snd_ump_get_byte(const uint32_t *ump, unsigned int offset)
{
#if __BYTE_ORDER == __BIG_ENDIAN
return ((const uint8_t *)ump)[offset];
#else
return ((const uint8_t *)ump)[(offset & ~3) | (3 - (offset & 3))];
#endif
}
int snd_ump_msg_sysex_expand(const uint32_t *ump, uint8_t *buf, size_t maxlen,
size_t *filled);
int snd_ump_packet_length(unsigned int type);
#ifdef __cplusplus
}
#endif
#endif /* __ALSA_UMP_MSG_H */
_snd_ump_msg_dc
Definition ump_msg.h:826
_snd_ump_msg_dc::group
uint32_t group
Definition ump_msg.h:829
_snd_ump_msg_dc::status
uint32_t status
Definition ump_msg.h:830
_snd_ump_msg_dc::ticks
uint32_t ticks
Definition ump_msg.h:831
_snd_ump_msg_dc::type
uint32_t type
Definition ump_msg.h:828
_snd_ump_msg_dctpq
Definition ump_msg.h:809
_snd_ump_msg_dctpq::type
uint8_t type
Definition ump_msg.h:811
_snd_ump_msg_dctpq::reserved
uint8_t reserved
Definition ump_msg.h:814
_snd_ump_msg_dctpq::group
uint8_t group
Definition ump_msg.h:812
_snd_ump_msg_dctpq::ticks
uint16_t ticks
Definition ump_msg.h:815
_snd_ump_msg_dctpq::status
uint8_t status
Definition ump_msg.h:813
_snd_ump_msg_flex_data_meta
Definition ump_msg.h:488
_snd_ump_msg_flex_data_meta::group
uint8_t group
Definition ump_msg.h:491
_snd_ump_msg_flex_data_meta::channel
uint8_t channel
Definition ump_msg.h:494
_snd_ump_msg_flex_data_meta::status
uint8_t status
Definition ump_msg.h:496
_snd_ump_msg_flex_data_meta::data
uint32_t data[3]
Definition ump_msg.h:497
_snd_ump_msg_flex_data_meta::type
uint8_t type
Definition ump_msg.h:490
_snd_ump_msg_flex_data_meta::format
uint8_t format
Definition ump_msg.h:492
_snd_ump_msg_flex_data_meta::addrs
uint8_t addrs
Definition ump_msg.h:493
_snd_ump_msg_flex_data_meta::status_bank
uint8_t status_bank
Definition ump_msg.h:495
_snd_ump_msg_hdr
Definition ump_msg.h:27
_snd_ump_msg_hdr::byte1
uint8_t byte1
Definition ump_msg.h:33
_snd_ump_msg_hdr::type
uint8_t type
Definition ump_msg.h:29
_snd_ump_msg_hdr::status
uint8_t status
Definition ump_msg.h:31
_snd_ump_msg_hdr::channel
uint8_t channel
Definition ump_msg.h:32
_snd_ump_msg_hdr::byte2
uint8_t byte2
Definition ump_msg.h:34
_snd_ump_msg_hdr::group
uint8_t group
Definition ump_msg.h:30
_snd_ump_msg_jr_clock
Definition ump_msg.h:792
_snd_ump_msg_jr_clock::status
uint8_t status
Definition ump_msg.h:796
_snd_ump_msg_jr_clock::type
uint8_t type
Definition ump_msg.h:794
_snd_ump_msg_jr_clock::time
uint16_t time
Definition ump_msg.h:798
_snd_ump_msg_jr_clock::reserved
uint8_t reserved
Definition ump_msg.h:797
_snd_ump_msg_jr_clock::group
uint8_t group
Definition ump_msg.h:795
_snd_ump_msg_midi1_caf
Definition ump_msg.h:122
_snd_ump_msg_midi1_caf::data
uint8_t data
Definition ump_msg.h:128
_snd_ump_msg_midi1_caf::type
uint8_t type
Definition ump_msg.h:124
_snd_ump_msg_midi1_caf::reserved
uint8_t reserved
Definition ump_msg.h:129
_snd_ump_msg_midi1_caf::channel
uint8_t channel
Definition ump_msg.h:127
_snd_ump_msg_midi1_caf::status
uint8_t status
Definition ump_msg.h:126
_snd_ump_msg_midi1_caf::group
uint8_t group
Definition ump_msg.h:125
_snd_ump_msg_midi1_cc
Definition ump_msg.h:84
_snd_ump_msg_midi1_cc::channel
uint8_t channel
Definition ump_msg.h:89
_snd_ump_msg_midi1_cc::data
uint8_t data
Definition ump_msg.h:91
_snd_ump_msg_midi1_cc::group
uint8_t group
Definition ump_msg.h:87
_snd_ump_msg_midi1_cc::type
uint8_t type
Definition ump_msg.h:86
_snd_ump_msg_midi1_cc::status
uint8_t status
Definition ump_msg.h:88
_snd_ump_msg_midi1_cc::index
uint8_t index
Definition ump_msg.h:90
_snd_ump_msg_midi1_note
Definition ump_msg.h:46
_snd_ump_msg_midi1_note::status
uint8_t status
Definition ump_msg.h:50
_snd_ump_msg_midi1_note::velocity
uint8_t velocity
Definition ump_msg.h:53
_snd_ump_msg_midi1_note::note
uint8_t note
Definition ump_msg.h:52
_snd_ump_msg_midi1_note::channel
uint8_t channel
Definition ump_msg.h:51
_snd_ump_msg_midi1_note::type
uint8_t type
Definition ump_msg.h:48
_snd_ump_msg_midi1_note::group
uint8_t group
Definition ump_msg.h:49
_snd_ump_msg_midi1_paf
Definition ump_msg.h:65
_snd_ump_msg_midi1_paf::type
uint8_t type
Definition ump_msg.h:67
_snd_ump_msg_midi1_paf::group
uint8_t group
Definition ump_msg.h:68
_snd_ump_msg_midi1_paf::data
uint8_t data
Definition ump_msg.h:72
_snd_ump_msg_midi1_paf::status
uint8_t status
Definition ump_msg.h:69
_snd_ump_msg_midi1_paf::channel
uint8_t channel
Definition ump_msg.h:70
_snd_ump_msg_midi1_paf::note
uint8_t note
Definition ump_msg.h:71
_snd_ump_msg_midi1_pitchbend
Definition ump_msg.h:141
_snd_ump_msg_midi1_pitchbend::status
uint8_t status
Definition ump_msg.h:145
_snd_ump_msg_midi1_pitchbend::channel
uint8_t channel
Definition ump_msg.h:146
_snd_ump_msg_midi1_pitchbend::group
uint8_t group
Definition ump_msg.h:144
_snd_ump_msg_midi1_pitchbend::data_lsb
uint8_t data_lsb
Definition ump_msg.h:147
_snd_ump_msg_midi1_pitchbend::type
uint8_t type
Definition ump_msg.h:143
_snd_ump_msg_midi1_pitchbend::data_msb
uint8_t data_msb
Definition ump_msg.h:148
_snd_ump_msg_midi1_program
Definition ump_msg.h:103
_snd_ump_msg_midi1_program::group
uint8_t group
Definition ump_msg.h:106
_snd_ump_msg_midi1_program::program
uint8_t program
Definition ump_msg.h:109
_snd_ump_msg_midi1_program::reserved
uint8_t reserved
Definition ump_msg.h:110
_snd_ump_msg_midi1_program::type
uint8_t type
Definition ump_msg.h:105
_snd_ump_msg_midi1_program::status
uint8_t status
Definition ump_msg.h:107
_snd_ump_msg_midi1_program::channel
uint8_t channel
Definition ump_msg.h:108
_snd_ump_msg_midi2_caf
Definition ump_msg.h:374
_snd_ump_msg_midi2_caf::type
uint8_t type
Definition ump_msg.h:376
_snd_ump_msg_midi2_caf::data
uint32_t data
Definition ump_msg.h:382
_snd_ump_msg_midi2_caf::status
uint8_t status
Definition ump_msg.h:378
_snd_ump_msg_midi2_caf::reserved
uint16_t reserved
Definition ump_msg.h:380
_snd_ump_msg_midi2_caf::group
uint8_t group
Definition ump_msg.h:377
_snd_ump_msg_midi2_caf::channel
uint8_t channel
Definition ump_msg.h:379
_snd_ump_msg_midi2_cc
Definition ump_msg.h:299
_snd_ump_msg_midi2_cc::group
uint8_t group
Definition ump_msg.h:302
_snd_ump_msg_midi2_cc::type
uint8_t type
Definition ump_msg.h:301
_snd_ump_msg_midi2_cc::channel
uint8_t channel
Definition ump_msg.h:304
_snd_ump_msg_midi2_cc::index
uint8_t index
Definition ump_msg.h:305
_snd_ump_msg_midi2_cc::data
uint32_t data
Definition ump_msg.h:308
_snd_ump_msg_midi2_cc::status
uint8_t status
Definition ump_msg.h:303
_snd_ump_msg_midi2_cc::reserved
uint8_t reserved
Definition ump_msg.h:306
_snd_ump_msg_midi2_note
Definition ump_msg.h:199
_snd_ump_msg_midi2_note::group
uint8_t group
Definition ump_msg.h:202
_snd_ump_msg_midi2_note::status
uint8_t status
Definition ump_msg.h:203
_snd_ump_msg_midi2_note::note
uint8_t note
Definition ump_msg.h:205
_snd_ump_msg_midi2_note::velocity
uint16_t velocity
Definition ump_msg.h:208
_snd_ump_msg_midi2_note::attr_type
uint8_t attr_type
Definition ump_msg.h:206
_snd_ump_msg_midi2_note::channel
uint8_t channel
Definition ump_msg.h:204
_snd_ump_msg_midi2_note::attr_data
uint16_t attr_data
Definition ump_msg.h:209
_snd_ump_msg_midi2_note::type
uint8_t type
Definition ump_msg.h:201
_snd_ump_msg_midi2_paf
Definition ump_msg.h:224
_snd_ump_msg_midi2_paf::group
uint8_t group
Definition ump_msg.h:227
_snd_ump_msg_midi2_paf::data
uint32_t data
Definition ump_msg.h:233
_snd_ump_msg_midi2_paf::channel
uint8_t channel
Definition ump_msg.h:229
_snd_ump_msg_midi2_paf::reserved
uint8_t reserved
Definition ump_msg.h:231
_snd_ump_msg_midi2_paf::type
uint8_t type
Definition ump_msg.h:226
_snd_ump_msg_midi2_paf::note
uint8_t note
Definition ump_msg.h:230
_snd_ump_msg_midi2_paf::status
uint8_t status
Definition ump_msg.h:228
_snd_ump_msg_midi2_per_note_cc
Definition ump_msg.h:247
_snd_ump_msg_midi2_per_note_cc::data
uint32_t data
Definition ump_msg.h:256
_snd_ump_msg_midi2_per_note_cc::note
uint8_t note
Definition ump_msg.h:253
_snd_ump_msg_midi2_per_note_cc::channel
uint8_t channel
Definition ump_msg.h:252
_snd_ump_msg_midi2_per_note_cc::status
uint8_t status
Definition ump_msg.h:251
_snd_ump_msg_midi2_per_note_cc::type
uint8_t type
Definition ump_msg.h:249
_snd_ump_msg_midi2_per_note_cc::index
uint8_t index
Definition ump_msg.h:254
_snd_ump_msg_midi2_per_note_cc::group
uint8_t group
Definition ump_msg.h:250
_snd_ump_msg_midi2_per_note_mgmt
Definition ump_msg.h:276
_snd_ump_msg_midi2_per_note_mgmt::note
uint8_t note
Definition ump_msg.h:282
_snd_ump_msg_midi2_per_note_mgmt::group
uint8_t group
Definition ump_msg.h:279
_snd_ump_msg_midi2_per_note_mgmt::status
uint8_t status
Definition ump_msg.h:280
_snd_ump_msg_midi2_per_note_mgmt::flags
uint8_t flags
Definition ump_msg.h:283
_snd_ump_msg_midi2_per_note_mgmt::channel
uint8_t channel
Definition ump_msg.h:281
_snd_ump_msg_midi2_per_note_mgmt::reserved
uint32_t reserved
Definition ump_msg.h:285
_snd_ump_msg_midi2_per_note_mgmt::type
uint8_t type
Definition ump_msg.h:278
_snd_ump_msg_midi2_per_note_pitchbend
Definition ump_msg.h:416
_snd_ump_msg_midi2_per_note_pitchbend::channel
uint8_t channel
Definition ump_msg.h:429
_snd_ump_msg_midi2_per_note_pitchbend::note
uint8_t note
Definition ump_msg.h:428
_snd_ump_msg_midi2_per_note_pitchbend::type
uint8_t type
Definition ump_msg.h:432
_snd_ump_msg_midi2_per_note_pitchbend::status
uint8_t status
Definition ump_msg.h:430
_snd_ump_msg_midi2_per_note_pitchbend::reserved
uint8_t reserved
Definition ump_msg.h:427
_snd_ump_msg_midi2_per_note_pitchbend::data
uint32_t data
Definition ump_msg.h:434
_snd_ump_msg_midi2_per_note_pitchbend::group
uint8_t group
Definition ump_msg.h:431
_snd_ump_msg_midi2_pitchbend
Definition ump_msg.h:395
_snd_ump_msg_midi2_pitchbend::channel
uint8_t channel
Definition ump_msg.h:400
_snd_ump_msg_midi2_pitchbend::group
uint8_t group
Definition ump_msg.h:398
_snd_ump_msg_midi2_pitchbend::reserved
uint16_t reserved
Definition ump_msg.h:401
_snd_ump_msg_midi2_pitchbend::status
uint8_t status
Definition ump_msg.h:399
_snd_ump_msg_midi2_pitchbend::type
uint8_t type
Definition ump_msg.h:397
_snd_ump_msg_midi2_pitchbend::data
uint32_t data
Definition ump_msg.h:403
_snd_ump_msg_midi2_program
Definition ump_msg.h:345
_snd_ump_msg_midi2_program::reserved
uint16_t reserved
Definition ump_msg.h:351
_snd_ump_msg_midi2_program::program
uint8_t program
Definition ump_msg.h:354
_snd_ump_msg_midi2_program::group
uint8_t group
Definition ump_msg.h:348
_snd_ump_msg_midi2_program::status
uint8_t status
Definition ump_msg.h:349
_snd_ump_msg_midi2_program::channel
uint8_t channel
Definition ump_msg.h:350
_snd_ump_msg_midi2_program::bank_msb
uint8_t bank_msb
Definition ump_msg.h:356
_snd_ump_msg_midi2_program::reserved2
uint8_t reserved2
Definition ump_msg.h:355
_snd_ump_msg_midi2_program::bank_valid
uint16_t bank_valid
Definition ump_msg.h:352
_snd_ump_msg_midi2_program::bank_lsb
uint8_t bank_lsb
Definition ump_msg.h:357
_snd_ump_msg_midi2_program::type
uint8_t type
Definition ump_msg.h:347
_snd_ump_msg_midi2_rpn
Definition ump_msg.h:322
_snd_ump_msg_midi2_rpn::bank
uint8_t bank
Definition ump_msg.h:328
_snd_ump_msg_midi2_rpn::status
uint8_t status
Definition ump_msg.h:326
_snd_ump_msg_midi2_rpn::type
uint8_t type
Definition ump_msg.h:324
_snd_ump_msg_midi2_rpn::channel
uint8_t channel
Definition ump_msg.h:327
_snd_ump_msg_midi2_rpn::data
uint32_t data
Definition ump_msg.h:331
_snd_ump_msg_midi2_rpn::index
uint8_t index
Definition ump_msg.h:329
_snd_ump_msg_midi2_rpn::group
uint8_t group
Definition ump_msg.h:325
_snd_ump_msg_set_chord_name
Definition ump_msg.h:651
_snd_ump_msg_set_chord_name::alter4_type
uint8_t alter4_type
Definition ump_msg.h:671
_snd_ump_msg_set_chord_name::bass_sharp
uint8_t bass_sharp
Definition ump_msg.h:675
_snd_ump_msg_set_chord_name::alter3_type
uint8_t alter3_type
Definition ump_msg.h:669
_snd_ump_msg_set_chord_name::tonic_sharp
uint8_t tonic_sharp
Definition ump_msg.h:661
_snd_ump_msg_set_chord_name::type
uint8_t type
Definition ump_msg.h:653
_snd_ump_msg_set_chord_name::alter4_degree
uint8_t alter4_degree
Definition ump_msg.h:672
_snd_ump_msg_set_chord_name::bass_type
uint8_t bass_type
Definition ump_msg.h:677
_snd_ump_msg_set_chord_name::alter3_degree
uint8_t alter3_degree
Definition ump_msg.h:670
_snd_ump_msg_set_chord_name::alter1_degree
uint8_t alter1_degree
Definition ump_msg.h:665
_snd_ump_msg_set_chord_name::bass_note
uint8_t bass_note
Definition ump_msg.h:676
_snd_ump_msg_set_chord_name::bass_alter1_degree
uint8_t bass_alter1_degree
Definition ump_msg.h:679
_snd_ump_msg_set_chord_name::format
uint8_t format
Definition ump_msg.h:655
_snd_ump_msg_set_chord_name::addrs
uint8_t addrs
Definition ump_msg.h:656
_snd_ump_msg_set_chord_name::chord_tonic
uint8_t chord_tonic
Definition ump_msg.h:662
_snd_ump_msg_set_chord_name::bass_alter2_degree
uint8_t bass_alter2_degree
Definition ump_msg.h:681
_snd_ump_msg_set_chord_name::alter1_type
uint8_t alter1_type
Definition ump_msg.h:664
_snd_ump_msg_set_chord_name::bass_alter2_type
uint8_t bass_alter2_type
Definition ump_msg.h:680
_snd_ump_msg_set_chord_name::reserved
uint16_t reserved
Definition ump_msg.h:673
_snd_ump_msg_set_chord_name::channel
uint8_t channel
Definition ump_msg.h:657
_snd_ump_msg_set_chord_name::status_bank
uint8_t status_bank
Definition ump_msg.h:658
_snd_ump_msg_set_chord_name::chord_type
uint8_t chord_type
Definition ump_msg.h:663
_snd_ump_msg_set_chord_name::alter2_degree
uint8_t alter2_degree
Definition ump_msg.h:667
_snd_ump_msg_set_chord_name::alter2_type
uint8_t alter2_type
Definition ump_msg.h:666
_snd_ump_msg_set_chord_name::status
uint8_t status
Definition ump_msg.h:659
_snd_ump_msg_set_chord_name::group
uint8_t group
Definition ump_msg.h:654
_snd_ump_msg_set_chord_name::bass_alter1_type
uint8_t bass_alter1_type
Definition ump_msg.h:678
_snd_ump_msg_set_key_sig
Definition ump_msg.h:618
_snd_ump_msg_set_key_sig::sharps_flats
uint8_t sharps_flats
Definition ump_msg.h:628
_snd_ump_msg_set_key_sig::group
uint8_t group
Definition ump_msg.h:621
_snd_ump_msg_set_key_sig::reserved2
uint32_t reserved2[2]
Definition ump_msg.h:632
_snd_ump_msg_set_key_sig::tonic_note
uint8_t tonic_note
Definition ump_msg.h:629
_snd_ump_msg_set_key_sig::reserved1
uint8_t reserved1[3]
Definition ump_msg.h:630
_snd_ump_msg_set_key_sig::status
uint8_t status
Definition ump_msg.h:626
_snd_ump_msg_set_key_sig::status_bank
uint8_t status_bank
Definition ump_msg.h:625
_snd_ump_msg_set_key_sig::channel
uint8_t channel
Definition ump_msg.h:624
_snd_ump_msg_set_key_sig::format
uint8_t format
Definition ump_msg.h:622
_snd_ump_msg_set_key_sig::addrs
uint8_t addrs
Definition ump_msg.h:623
_snd_ump_msg_set_key_sig::type
uint8_t type
Definition ump_msg.h:620
_snd_ump_msg_set_metronome
Definition ump_msg.h:575
_snd_ump_msg_set_metronome::clocks_primary
uint8_t clocks_primary
Definition ump_msg.h:585
_snd_ump_msg_set_metronome::reserved1
uint16_t reserved1
Definition ump_msg.h:592
_snd_ump_msg_set_metronome::channel
uint8_t channel
Definition ump_msg.h:581
_snd_ump_msg_set_metronome::bar_accent_1
uint8_t bar_accent_1
Definition ump_msg.h:586
_snd_ump_msg_set_metronome::status_bank
uint8_t status_bank
Definition ump_msg.h:582
_snd_ump_msg_set_metronome::group
uint8_t group
Definition ump_msg.h:578
_snd_ump_msg_set_metronome::format
uint8_t format
Definition ump_msg.h:579
_snd_ump_msg_set_metronome::type
uint8_t type
Definition ump_msg.h:577
_snd_ump_msg_set_metronome::status
uint8_t status
Definition ump_msg.h:583
_snd_ump_msg_set_metronome::bar_accent_2
uint8_t bar_accent_2
Definition ump_msg.h:587
_snd_ump_msg_set_metronome::subdivision_1
uint8_t subdivision_1
Definition ump_msg.h:590
_snd_ump_msg_set_metronome::addrs
uint8_t addrs
Definition ump_msg.h:580
_snd_ump_msg_set_metronome::subdivision_2
uint8_t subdivision_2
Definition ump_msg.h:591
_snd_ump_msg_set_metronome::reserved2
uint32_t reserved2
Definition ump_msg.h:594
_snd_ump_msg_set_metronome::bar_accent_3
uint8_t bar_accent_3
Definition ump_msg.h:588
_snd_ump_msg_set_tempo
Definition ump_msg.h:511
_snd_ump_msg_set_tempo::group
uint8_t group
Definition ump_msg.h:514
_snd_ump_msg_set_tempo::format
uint8_t format
Definition ump_msg.h:515
_snd_ump_msg_set_tempo::addrs
uint8_t addrs
Definition ump_msg.h:516
_snd_ump_msg_set_tempo::status
uint8_t status
Definition ump_msg.h:519
_snd_ump_msg_set_tempo::type
uint8_t type
Definition ump_msg.h:513
_snd_ump_msg_set_tempo::tempo
uint32_t tempo
Definition ump_msg.h:521
_snd_ump_msg_set_tempo::channel
uint8_t channel
Definition ump_msg.h:517
_snd_ump_msg_set_tempo::reserved
uint32_t reserved[2]
Definition ump_msg.h:523
_snd_ump_msg_set_tempo::status_bank
uint8_t status_bank
Definition ump_msg.h:518
_snd_ump_msg_set_time_sig
Definition ump_msg.h:540
_snd_ump_msg_set_time_sig::addrs
uint8_t addrs
Definition ump_msg.h:545
_snd_ump_msg_set_time_sig::channel
uint8_t channel
Definition ump_msg.h:546
_snd_ump_msg_set_time_sig::format
uint8_t format
Definition ump_msg.h:544
_snd_ump_msg_set_time_sig::status
uint8_t status
Definition ump_msg.h:548
_snd_ump_msg_set_time_sig::reserved
uint32_t reserved[2]
Definition ump_msg.h:555
_snd_ump_msg_set_time_sig::numerator
uint8_t numerator
Definition ump_msg.h:550
_snd_ump_msg_set_time_sig::denominator
uint8_t denominator
Definition ump_msg.h:551
_snd_ump_msg_set_time_sig::type
uint8_t type
Definition ump_msg.h:542
_snd_ump_msg_set_time_sig::group
uint8_t group
Definition ump_msg.h:543
_snd_ump_msg_set_time_sig::reserved1
uint8_t reserved1
Definition ump_msg.h:553
_snd_ump_msg_set_time_sig::status_bank
uint8_t status_bank
Definition ump_msg.h:547
_snd_ump_msg_set_time_sig::num_notes
uint8_t num_notes
Definition ump_msg.h:552
_snd_ump_msg_stream_gen
Definition ump_msg.h:460
_snd_ump_msg_stream_gen::data1
uint16_t data1
Definition ump_msg.h:465
_snd_ump_msg_stream_gen::data2
uint32_t data2
Definition ump_msg.h:466
_snd_ump_msg_stream_gen::data4
uint32_t data4
Definition ump_msg.h:468
_snd_ump_msg_stream_gen::data3
uint32_t data3
Definition ump_msg.h:467
_snd_ump_msg_stream_gen::type
uint16_t type
Definition ump_msg.h:462
_snd_ump_msg_stream_gen::format
uint16_t format
Definition ump_msg.h:463
_snd_ump_msg_stream_gen::status
uint16_t status
Definition ump_msg.h:464
snd_ump_msg_mixed_data_header_t
Definition ump_msg.h:729
snd_ump_msg_mixed_data_header_t::device
uint16_t device
Definition ump_msg.h:755
snd_ump_msg_mixed_data_header_t::type
uint8_t type
Definition ump_msg.h:750
snd_ump_msg_mixed_data_header_t::bytes
uint16_t bytes
Definition ump_msg.h:746
snd_ump_msg_mixed_data_header_t::status
uint8_t status
Definition ump_msg.h:748
snd_ump_msg_mixed_data_header_t::sub_id_2
uint16_t sub_id_2
Definition ump_msg.h:758
snd_ump_msg_mixed_data_header_t::manufacturer
uint16_t manufacturer
Definition ump_msg.h:756
snd_ump_msg_mixed_data_header_t::group
uint8_t group
Definition ump_msg.h:749
snd_ump_msg_mixed_data_header_t::chunk
uint16_t chunk
Definition ump_msg.h:752
snd_ump_msg_mixed_data_header_t::sub_id_1
uint16_t sub_id_1
Definition ump_msg.h:759
snd_ump_msg_mixed_data_header_t::mds_id
uint8_t mds_id
Definition ump_msg.h:747
snd_ump_msg_mixed_data_header_t::chunks
uint16_t chunks
Definition ump_msg.h:753
snd_ump_msg_mixed_data_payload_t
Definition ump_msg.h:764
snd_ump_msg_mixed_data_payload_t::group
uint8_t group
Definition ump_msg.h:777
snd_ump_msg_mixed_data_payload_t::mds_id
uint8_t mds_id
Definition ump_msg.h:775
snd_ump_msg_mixed_data_payload_t::type
uint8_t type
Definition ump_msg.h:778
snd_ump_msg_mixed_data_payload_t::payload1
uint16_t payload1
Definition ump_msg.h:774
snd_ump_msg_mixed_data_payload_t::status
uint8_t status
Definition ump_msg.h:776
snd_ump_msg_system
Definition ump_msg.h:160
snd_ump_msg_system::parm1
uint8_t parm1
Definition ump_msg.h:165
snd_ump_msg_system::type
uint8_t type
Definition ump_msg.h:162
snd_ump_msg_system::status
uint8_t status
Definition ump_msg.h:164
snd_ump_msg_system::parm2
uint8_t parm2
Definition ump_msg.h:166
snd_ump_msg_system::group
uint8_t group
Definition ump_msg.h:163
snd_ump_msg_sysex_expand
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
@ SND_UMP_MIDI2_NOTE_ATTR_MANUFACTURER
Definition ump_msg.h:193
SND_UMP_MIDI2_NOTE_ATTR_PROFILE
@ SND_UMP_MIDI2_NOTE_ATTR_PROFILE
Definition ump_msg.h:194
SND_UMP_MIDI2_NOTE_ATTR_NO_DATA
@ SND_UMP_MIDI2_NOTE_ATTR_NO_DATA
Definition ump_msg.h:192
SND_UMP_MIDI2_NOTE_ATTR_PITCH79
@ SND_UMP_MIDI2_NOTE_ATTR_PITCH79
Definition ump_msg.h:195
group
uint8_t group
Definition ump_msg.h:2
snd_ump_packet_length
int snd_ump_packet_length(unsigned int type)
return the length of a UMP packet type
Definition ump.c:1100
type
uint8_t type
Definition ump_msg.h:1
status
uint8_t status
Definition ump_msg.h:3
SND_UMP_MIDI2_PNMGMT_RESET_CONTROLLERS
@ SND_UMP_MIDI2_PNMGMT_RESET_CONTROLLERS
Definition ump_msg.h:271
SND_UMP_MIDI2_PNMGMT_DETACH_CONTROLLERS
@ SND_UMP_MIDI2_PNMGMT_DETACH_CONTROLLERS
Definition ump_msg.h:272
__attribute
enum @1 __attribute
snd_ump_msg_flex_data_t
Definition ump_msg.h:716
snd_ump_msg_flex_data_t::set_metronome
snd_ump_msg_set_metronome_t set_metronome
Definition ump_msg.h:721
snd_ump_msg_flex_data_t::set_chord_name
snd_ump_msg_set_chord_name_t set_chord_name
Definition ump_msg.h:723
snd_ump_msg_flex_data_t::set_key_sig
snd_ump_msg_set_key_sig_t set_key_sig
Definition ump_msg.h:722
snd_ump_msg_flex_data_t::set_time_sig
snd_ump_msg_set_time_sig_t set_time_sig
Definition ump_msg.h:720
snd_ump_msg_flex_data_t::hdr
snd_ump_msg_hdr_t hdr
Definition ump_msg.h:724
snd_ump_msg_flex_data_t::meta
snd_ump_msg_flex_data_meta_t meta
Definition ump_msg.h:717
snd_ump_msg_flex_data_t::text
snd_ump_msg_flex_data_meta_t text
Definition ump_msg.h:718
snd_ump_msg_flex_data_t::set_tempo
snd_ump_msg_set_tempo_t set_tempo
Definition ump_msg.h:719
snd_ump_msg_midi1_t
Definition ump_msg.h:177
snd_ump_msg_midi1_t::pitchbend
snd_ump_msg_midi1_pitchbend_t pitchbend
Definition ump_msg.h:184
snd_ump_msg_midi1_t::program_change
snd_ump_msg_midi1_program_t program_change
Definition ump_msg.h:182
snd_ump_msg_midi1_t::raw
uint32_t raw
Definition ump_msg.h:187
snd_ump_msg_midi1_t::control_change
snd_ump_msg_midi1_cc_t control_change
Definition ump_msg.h:181
snd_ump_msg_midi1_t::note_on
snd_ump_msg_midi1_note_t note_on
Definition ump_msg.h:178
snd_ump_msg_midi1_t::note_off
snd_ump_msg_midi1_note_t note_off
Definition ump_msg.h:179
snd_ump_msg_midi1_t::channel_pressure
snd_ump_msg_midi1_caf_t channel_pressure
Definition ump_msg.h:183
snd_ump_msg_midi1_t::hdr
snd_ump_msg_hdr_t hdr
Definition ump_msg.h:186
snd_ump_msg_midi1_t::system
snd_ump_msg_system_t system
Definition ump_msg.h:185
snd_ump_msg_midi1_t::poly_pressure
snd_ump_msg_midi1_paf_t poly_pressure
Definition ump_msg.h:180
snd_ump_msg_midi2_t
Definition ump_msg.h:439
snd_ump_msg_midi2_t::relative_rpn
snd_ump_msg_midi2_rpn_t relative_rpn
Definition ump_msg.h:449
snd_ump_msg_midi2_t::poly_pressure
snd_ump_msg_midi2_paf_t poly_pressure
Definition ump_msg.h:442
snd_ump_msg_midi2_t::note_off
snd_ump_msg_midi2_note_t note_off
Definition ump_msg.h:441
snd_ump_msg_midi2_t::program_change
snd_ump_msg_midi2_program_t program_change
Definition ump_msg.h:451
snd_ump_msg_midi2_t::rpn
snd_ump_msg_midi2_rpn_t rpn
Definition ump_msg.h:447
snd_ump_msg_midi2_t::per_note_mgmt
snd_ump_msg_midi2_per_note_mgmt_t per_note_mgmt
Definition ump_msg.h:445
snd_ump_msg_midi2_t::pitchbend
snd_ump_msg_midi2_pitchbend_t pitchbend
Definition ump_msg.h:453
snd_ump_msg_midi2_t::control_change
snd_ump_msg_midi2_cc_t control_change
Definition ump_msg.h:446
snd_ump_msg_midi2_t::per_note_pitchbend
snd_ump_msg_midi2_per_note_pitchbend_t per_note_pitchbend
Definition ump_msg.h:454
snd_ump_msg_midi2_t::note_on
snd_ump_msg_midi2_note_t note_on
Definition ump_msg.h:440
snd_ump_msg_midi2_t::nrpn
snd_ump_msg_midi2_rpn_t nrpn
Definition ump_msg.h:448
snd_ump_msg_midi2_t::per_note_acc
snd_ump_msg_midi2_per_note_cc_t per_note_acc
Definition ump_msg.h:443
snd_ump_msg_midi2_t::hdr
snd_ump_msg_hdr_t hdr
Definition ump_msg.h:455
snd_ump_msg_midi2_t::channel_pressure
snd_ump_msg_midi2_caf_t channel_pressure
Definition ump_msg.h:452
snd_ump_msg_midi2_t::per_note_rcc
snd_ump_msg_midi2_per_note_cc_t per_note_rcc
Definition ump_msg.h:444
snd_ump_msg_midi2_t::relative_nrpn
snd_ump_msg_midi2_rpn_t relative_nrpn
Definition ump_msg.h:450
snd_ump_msg_mixed_data_t
Definition ump_msg.h:785
snd_ump_msg_mixed_data_t::payload
snd_ump_msg_mixed_data_payload_t payload
Definition ump_msg.h:787
snd_ump_msg_mixed_data_t::header
snd_ump_msg_mixed_data_header_t header
Definition ump_msg.h:786
snd_ump_msg_stream_t
Definition ump_msg.h:481
snd_ump_msg_stream_t::hdr
snd_ump_msg_hdr_t hdr
Definition ump_msg.h:483
snd_ump_msg_stream_t::gen
snd_ump_msg_stream_gen_t gen
Definition ump_msg.h:482
snd_ump_msg_utility_t
Definition ump_msg.h:841
snd_ump_msg_utility_t::dc
snd_ump_msg_dc_t dc
Definition ump_msg.h:844
snd_ump_msg_utility_t::jr_clock
snd_ump_msg_jr_clock_t jr_clock
Definition ump_msg.h:842
snd_ump_msg_utility_t::dctpq
snd_ump_msg_dctpq_t dctpq
Definition ump_msg.h:843
snd_ump_msg_utility_t::raw
uint32_t raw
Definition ump_msg.h:846
snd_ump_msg_utility_t::hdr
snd_ump_msg_hdr_t hdr
Definition ump_msg.h:845