Typedefs | |
typedef struct snd_midi_event | snd_midi_event_t |
Functions | |
int | snd_midi_event_new (size_t bufsize, snd_midi_event_t **rdev) |
Creates a MIDI event parser. | |
int | snd_midi_event_resize_buffer (snd_midi_event_t *dev, size_t bufsize) |
Resizes the MIDI message encoding buffer. | |
void | snd_midi_event_free (snd_midi_event_t *dev) |
Frees a MIDI event parser. | |
void | snd_midi_event_init (snd_midi_event_t *dev) |
Resets MIDI encode/decode parsers. | |
void | snd_midi_event_reset_encode (snd_midi_event_t *dev) |
Resets MIDI encode parser. | |
void | snd_midi_event_reset_decode (snd_midi_event_t *dev) |
Resets MIDI decode parser. | |
void | snd_midi_event_no_status (snd_midi_event_t *dev, int on) |
Enables/disables MIDI command merging. | |
long | snd_midi_event_encode (snd_midi_event_t *dev, const unsigned char *buf, long count, snd_seq_event_t *ev) |
Encodes bytes to sequencer event. | |
int | snd_midi_event_encode_byte (snd_midi_event_t *dev, int c, snd_seq_event_t *ev) |
Encodes byte to sequencer event. | |
long | snd_midi_event_decode (snd_midi_event_t *dev, unsigned char *buf, long count, const snd_seq_event_t *ev) |
Decodes sequencer event to MIDI byte stream. |
typedef struct snd_midi_event snd_midi_event_t |
container for sequencer midi event parsers
long snd_midi_event_decode | ( | snd_midi_event_t * | dev, | |
unsigned char * | buf, | |||
long | count, | |||
const snd_seq_event_t * | ev | |||
) |
Decodes sequencer event to MIDI byte stream.
[in] | dev | MIDI event parser. |
[out] | buf | Buffer for the resulting MIDI byte stream. |
[in] | count | Number of bytes in buf. |
[in] | ev | The sequencer event to decode. |
The generated MIDI messages may use running status, unless disabled with snd_midi_event_no_status.
The required buffer size for a sequencer event it as most 12 bytes, except for System Exclusive events (ev->type == SND_SEQ_EVENT_SYSEX) which can have any length (as specified by ev->data.ext.len).
The following sequencer events correspond to MIDI messages:
long snd_midi_event_encode | ( | snd_midi_event_t * | dev, | |
const unsigned char * | buf, | |||
long | count, | |||
snd_seq_event_t * | ev | |||
) |
Encodes bytes to sequencer event.
[in] | dev | MIDI event parser. |
[in] | buf | Buffer containing bytes of a raw MIDI stream. |
[in] | count | Number of bytes in buf. |
[out] | ev | Sequencer event. |
The buffer in dev is used to hold any bytes of a not-yet-complete MIDI message. If a System Exclusive message is larger than the buffer, the message is split into multiple parts, and a sequencer event is returned at the end of each part.
Any bytes that are not part of a valid MIDI message are silently ignored, i.e., they are consumed without signaling an error.
When this function returns a system exclusive sequencer event (ev->type is SND_SEQ_EVENT_SYSEX), the data pointer (ev->data.ext.ptr) points into the MIDI event parser's buffer. Therefore, the sequencer event can only be used as long as that buffer remains valid, i.e., until the next call to snd_midi_event_encode, snd_midi_event_encode_byte, snd_midi_event_resize_buffer, snd_midi_event_init, snd_midi_event_reset_encode, or snd_midi_event_free for that MIDI event parser.
This function can generate any sequencer event that corresponds to a MIDI message, i.e.:
int snd_midi_event_encode_byte | ( | snd_midi_event_t * | dev, | |
int | c, | |||
snd_seq_event_t * | ev | |||
) |
Encodes byte to sequencer event.
[in] | dev | MIDI event parser. |
[in] | c | A byte of a raw MIDI stream. |
[out] | ev | Sequencer event. |
See also the description of snd_midi_event_encode.
void snd_midi_event_free | ( | snd_midi_event_t * | dev | ) |
Frees a MIDI event parser.
dev | MIDI event parser. |
void snd_midi_event_init | ( | snd_midi_event_t * | dev | ) |
Resets MIDI encode/decode parsers.
dev | MIDI event parser. |
int snd_midi_event_new | ( | size_t | bufsize, | |
snd_midi_event_t ** | rdev | |||
) |
Creates a MIDI event parser.
[in] | bufsize | Size of the buffer used for encoding; this should be large enough to hold the largest MIDI message to be encoded. |
[out] | rdev | The new MIDI event parser. |
void snd_midi_event_no_status | ( | snd_midi_event_t * | dev, | |
int | on | |||
) |
Enables/disables MIDI command merging.
dev | MIDI event parser. | |
on | 0 to enable MIDI command merging, 1 to always write the command byte. |
When MIDI command merging is not disabled, snd_midi_event_decode is allowed to omit any status byte that is identical to the previous status byte.
void snd_midi_event_reset_decode | ( | snd_midi_event_t * | dev | ) |
Resets MIDI decode parser.
dev | MIDI event parser. |
void snd_midi_event_reset_encode | ( | snd_midi_event_t * | dev | ) |
Resets MIDI encode parser.
dev | MIDI event parser. |
int snd_midi_event_resize_buffer | ( | snd_midi_event_t * | dev, | |
size_t | bufsize | |||
) |
Resizes the MIDI message encoding buffer.
dev | MIDI event parser. | |
bufsize | The new buffer size. |
If there is a partially encoded message in the buffer, it is dropped.