ALSA project - the C library reference
|
Macros | |
#define | snd_seq_ev_clear(ev) memset(ev, 0, sizeof(snd_seq_event_t)) |
initialize event record More... | |
#define | snd_seq_ev_set_tag(ev, t) ((ev)->tag = (t)) |
set the tag for given event More... | |
#define | snd_seq_ev_set_dest(ev, c, p) ((ev)->dest.client = (c), (ev)->dest.port = (p)) |
set the explicit destination More... | |
#define | snd_seq_ev_set_subs(ev) |
set broadcasting to subscribers More... | |
#define | snd_seq_ev_set_broadcast(ev) |
set broadcasting to all clients/ports More... | |
#define | snd_seq_ev_set_source(ev, p) ((ev)->source.port = (p)) |
set the source port More... | |
#define | snd_seq_ev_set_direct(ev) ((ev)->queue = SND_SEQ_QUEUE_DIRECT) |
set direct passing mode (without queued) More... | |
#define | snd_seq_ev_schedule_tick(ev, q, relative, ttick) |
set tick-scheduling mode on queue More... | |
#define | snd_seq_ev_schedule_real(ev, q, relative, rtime) |
set real-time-scheduling mode on queue More... | |
#define | snd_seq_ev_set_priority(ev, high_prior) |
set event priority More... | |
#define | snd_seq_ev_set_fixed(ev) |
set fixed data More... | |
#define | snd_seq_ev_set_variable(ev, datalen, dataptr) |
set variable data More... | |
#define | snd_seq_ev_set_varusr(ev, datalen, dataptr) |
set varusr data More... | |
#define | snd_seq_ev_set_queue_control(ev, typ, q, val) |
set queue controls More... | |
#define | snd_seq_ev_set_queue_start(ev, q) snd_seq_ev_set_queue_control(ev, SND_SEQ_EVENT_START, q, 0) |
set the start queue event More... | |
#define | snd_seq_ev_set_queue_stop(ev, q) snd_seq_ev_set_queue_control(ev, SND_SEQ_EVENT_STOP, q, 0) |
set the stop queue event More... | |
#define | snd_seq_ev_set_queue_continue(ev, q) snd_seq_ev_set_queue_control(ev, SND_SEQ_EVENT_CONTINUE, q, 0) |
set the stop queue event More... | |
#define | snd_seq_ev_set_queue_tempo(ev, q, val) snd_seq_ev_set_queue_control(ev, SND_SEQ_EVENT_TEMPO, q, val) |
set the stop queue event More... | |
#define | snd_seq_ev_set_queue_pos_real(ev, q, rtime) |
set the real-time position of a queue More... | |
#define | snd_seq_ev_set_queue_pos_tick(ev, q, ttime) |
set the tick-time position of a queue More... | |
#define | snd_seq_start_queue(seq, q, ev) snd_seq_control_queue(seq, q, SND_SEQ_EVENT_START, 0, ev) |
start the specified queue More... | |
#define | snd_seq_stop_queue(seq, q, ev) snd_seq_control_queue(seq, q, SND_SEQ_EVENT_STOP, 0, ev) |
stop the specified queue More... | |
#define | snd_seq_continue_queue(seq, q, ev) snd_seq_control_queue(seq, q, SND_SEQ_EVENT_CONTINUE, 0, ev) |
continue the specified queue More... | |
#define | snd_seq_change_queue_tempo(seq, q, tempo, ev) snd_seq_control_queue(seq, q, SND_SEQ_EVENT_TEMPO, tempo, ev) |
change the tempo of the specified queue More... | |
#define | snd_seq_ev_set_note(ev, ch, key, vel, dur) |
set note event More... | |
#define | snd_seq_ev_set_noteon(ev, ch, key, vel) |
set note-on event More... | |
#define | snd_seq_ev_set_noteoff(ev, ch, key, vel) |
set note-off event More... | |
#define | snd_seq_ev_set_keypress(ev, ch, key, vel) |
set key-pressure event More... | |
#define | snd_seq_ev_set_controller(ev, ch, cc, val) |
set MIDI controller event More... | |
#define | snd_seq_ev_set_pgmchange(ev, ch, val) |
set program change event More... | |
#define | snd_seq_ev_set_pitchbend(ev, ch, val) |
set pitch-bend event More... | |
#define | snd_seq_ev_set_chanpress(ev, ch, val) |
set channel pressure event More... | |
#define | snd_seq_ev_set_sysex(ev, datalen, dataptr) |
set sysex event More... | |
Functions | |
int | snd_seq_control_queue (snd_seq_t *seq, int q, int type, int value, snd_seq_event_t *ev) |
queue controls - start/stop/continue More... | |
int | snd_seq_create_simple_port (snd_seq_t *seq, const char *name, unsigned int caps, unsigned int type) |
create a port - simple version More... | |
int | snd_seq_delete_simple_port (snd_seq_t *seq, int port) |
delete the port More... | |
int | snd_seq_connect_from (snd_seq_t *seq, int my_port, int src_client, int src_port) |
simple subscription (w/o exclusive & time conversion) More... | |
int | snd_seq_connect_to (snd_seq_t *seq, int my_port, int dest_client, int dest_port) |
simple subscription (w/o exclusive & time conversion) More... | |
int | snd_seq_disconnect_from (snd_seq_t *seq, int my_port, int src_client, int src_port) |
simple disconnection More... | |
int | snd_seq_disconnect_to (snd_seq_t *seq, int my_port, int dest_client, int dest_port) |
simple disconnection More... | |
int | snd_seq_set_client_name (snd_seq_t *seq, const char *name) |
set client name More... | |
int | snd_seq_set_client_event_filter (snd_seq_t *seq, int event_type) |
add client event filter More... | |
int | snd_seq_set_client_pool_output (snd_seq_t *seq, size_t size) |
change the output pool size of the given client More... | |
int | snd_seq_set_client_pool_output_room (snd_seq_t *seq, size_t size) |
change the output room size of the given client More... | |
int | snd_seq_set_client_pool_input (snd_seq_t *seq, size_t size) |
change the input pool size of the given client More... | |
int | snd_seq_sync_output_queue (snd_seq_t *seq) |
wait until all events are processed More... | |
int | snd_seq_parse_address (snd_seq_t *seq, snd_seq_addr_t *addr, const char *str) |
parse the given string and get the sequencer address More... | |
int | snd_seq_reset_pool_output (snd_seq_t *seq) |
reset client output pool More... | |
int | snd_seq_reset_pool_input (snd_seq_t *seq) |
reset client input pool More... | |
Sequencer Middle Level Interface
#define snd_seq_change_queue_tempo | ( | seq, | |
q, | |||
tempo, | |||
ev | |||
) | snd_seq_control_queue(seq, q, SND_SEQ_EVENT_TEMPO, tempo, ev) |
change the tempo of the specified queue
seq | sequencer handle |
q | queue id |
tempo | the new tempo value |
ev | optional event record (see snd_seq_control_queue) |
#define snd_seq_continue_queue | ( | seq, | |
q, | |||
ev | |||
) | snd_seq_control_queue(seq, q, SND_SEQ_EVENT_CONTINUE, 0, ev) |
continue the specified queue
seq | sequencer handle |
q | queue id to continue |
ev | optional event record (see snd_seq_control_queue) |
#define snd_seq_ev_clear | ( | ev | ) | memset(ev, 0, sizeof(snd_seq_event_t)) |
initialize event record
ev | event record pointer |
This macro clears the given event record pointer to the default status.
#define snd_seq_ev_schedule_real | ( | ev, | |
q, | |||
relative, | |||
rtime | |||
) |
set real-time-scheduling mode on queue
ev | event instance |
q | queue id to schedule |
relative | relative time-stamp if non-zero |
rtime | time-stamp to be delivered |
This macro sets the scheduling of the event in the realtime mode.
#define snd_seq_ev_schedule_tick | ( | ev, | |
q, | |||
relative, | |||
ttick | |||
) |
set tick-scheduling mode on queue
ev | event instance |
q | queue id to schedule |
relative | relative time-stamp if non-zero |
ttick | tick time-stamp to be delivered |
This macro sets the scheduling of the event in the MIDI tick mode.
#define snd_seq_ev_set_broadcast | ( | ev | ) |
set broadcasting to all clients/ports
ev | event record |
This macro sets the destination as the broadcasting.
#define snd_seq_ev_set_chanpress | ( | ev, | |
ch, | |||
val | |||
) |
set channel pressure event
ev | event record |
ch | channel number |
val | channel pressure value |
#define snd_seq_ev_set_controller | ( | ev, | |
ch, | |||
cc, | |||
val | |||
) |
set MIDI controller event
ev | event record |
ch | channel number |
cc | controller number |
val | control value |
#define snd_seq_ev_set_dest | ( | ev, | |
c, | |||
p | |||
) | ((ev)->dest.client = (c), (ev)->dest.port = (p)) |
set the explicit destination
ev | event record |
c | destination client id |
p | destination port id |
This macro sets the client and port id numbers to the given event record.
#define snd_seq_ev_set_direct | ( | ev | ) | ((ev)->queue = SND_SEQ_QUEUE_DIRECT) |
set direct passing mode (without queued)
ev | event instance |
This macro sets the event to the direct passing mode to be delivered immediately without queueing.
#define snd_seq_ev_set_fixed | ( | ev | ) |
set fixed data
ev | event instance |
Sets the event length mode as fixed size.
#define snd_seq_ev_set_keypress | ( | ev, | |
ch, | |||
key, | |||
vel | |||
) |
set key-pressure event
ev | event record |
ch | channel number |
key | note key |
vel | velocity |
#define snd_seq_ev_set_note | ( | ev, | |
ch, | |||
key, | |||
vel, | |||
dur | |||
) |
set note event
ev | event record |
ch | channel number |
key | note key |
vel | velocity |
dur | duration (in tick or msec) |
#define snd_seq_ev_set_noteoff | ( | ev, | |
ch, | |||
key, | |||
vel | |||
) |
set note-off event
ev | event record |
ch | channel number |
key | note key |
vel | velocity |
#define snd_seq_ev_set_noteon | ( | ev, | |
ch, | |||
key, | |||
vel | |||
) |
set note-on event
ev | event record |
ch | channel number |
key | note key |
vel | velocity |
#define snd_seq_ev_set_pgmchange | ( | ev, | |
ch, | |||
val | |||
) |
set program change event
ev | event record |
ch | channel number |
val | program number |
#define snd_seq_ev_set_pitchbend | ( | ev, | |
ch, | |||
val | |||
) |
set pitch-bend event
ev | event record |
ch | channel number |
val | pitch bend; zero centered from -8192 to 8191 |
#define snd_seq_ev_set_priority | ( | ev, | |
high_prior | |||
) |
set event priority
ev | event instance |
high_prior | 1 for high priority mode |
#define snd_seq_ev_set_queue_continue | ( | ev, | |
q | |||
) | snd_seq_ev_set_queue_control(ev, SND_SEQ_EVENT_CONTINUE, q, 0) |
set the stop queue event
ev | event record |
q | queue id to continue |
#define snd_seq_ev_set_queue_control | ( | ev, | |
typ, | |||
q, | |||
val | |||
) |
set queue controls
ev | event record |
typ | event type |
q | queue id |
val | control value |
#define snd_seq_ev_set_queue_pos_real | ( | ev, | |
q, | |||
rtime | |||
) |
set the real-time position of a queue
ev | event record |
q | queue id to change tempo |
rtime | the new real-time pointer |
#define snd_seq_ev_set_queue_pos_tick | ( | ev, | |
q, | |||
ttime | |||
) |
set the tick-time position of a queue
ev | event record |
q | queue id to change tempo |
ttime | the new tick-time |
#define snd_seq_ev_set_queue_start | ( | ev, | |
q | |||
) | snd_seq_ev_set_queue_control(ev, SND_SEQ_EVENT_START, q, 0) |
set the start queue event
ev | event record |
q | queue id to start |
#define snd_seq_ev_set_queue_stop | ( | ev, | |
q | |||
) | snd_seq_ev_set_queue_control(ev, SND_SEQ_EVENT_STOP, q, 0) |
set the stop queue event
ev | event record |
q | queue id to stop |
#define snd_seq_ev_set_queue_tempo | ( | ev, | |
q, | |||
val | |||
) | snd_seq_ev_set_queue_control(ev, SND_SEQ_EVENT_TEMPO, q, val) |
set the stop queue event
ev | event record |
q | queue id to change tempo |
val | the new tempo value |
#define snd_seq_ev_set_source | ( | ev, | |
p | |||
) | ((ev)->source.port = (p)) |
set the source port
ev | event record |
p | source port id |
This macro sets the source port id number.
#define snd_seq_ev_set_subs | ( | ev | ) |
set broadcasting to subscribers
ev | event record |
This macro sets the destination as the subscribers.
#define snd_seq_ev_set_sysex | ( | ev, | |
datalen, | |||
dataptr | |||
) |
set sysex event
ev | event record |
datalen | length of sysex data |
dataptr | sysex data pointer |
the sysex data must contain the start byte 0xf0 and the end byte 0xf7.
#define snd_seq_ev_set_tag | ( | ev, | |
t | |||
) | ((ev)->tag = (t)) |
set the tag for given event
ev | event record |
t | event tag |
This macro sets the tag to the given event record.
#define snd_seq_ev_set_variable | ( | ev, | |
datalen, | |||
dataptr | |||
) |
set variable data
ev | event instance |
datalen | length of the external data |
dataptr | pointer of the external data |
Sets the event length mode as variable length and stores the data.
#define snd_seq_ev_set_varusr | ( | ev, | |
datalen, | |||
dataptr | |||
) |
set varusr data
ev | event instance |
datalen | length of the external data |
dataptr | pointer of the external data |
Sets the event length mode as variable user-space data and stores the data.
#define snd_seq_start_queue | ( | seq, | |
q, | |||
ev | |||
) | snd_seq_control_queue(seq, q, SND_SEQ_EVENT_START, 0, ev) |
start the specified queue
seq | sequencer handle |
q | queue id to start |
ev | optional event record (see snd_seq_control_queue) |
#define snd_seq_stop_queue | ( | seq, | |
q, | |||
ev | |||
) | snd_seq_control_queue(seq, q, SND_SEQ_EVENT_STOP, 0, ev) |
stop the specified queue
seq | sequencer handle |
q | queue id to stop |
ev | optional event record (see snd_seq_control_queue) |
int snd_seq_connect_from | ( | snd_seq_t * | seq, |
int | myport, | ||
int | src_client, | ||
int | src_port | ||
) |
simple subscription (w/o exclusive & time conversion)
seq | sequencer handle |
myport | the port id as receiver |
src_client | sender client id |
src_port | sender port id |
Connect from the given sender client:port to the given destination port in the current client.
int snd_seq_connect_to | ( | snd_seq_t * | seq, |
int | myport, | ||
int | dest_client, | ||
int | dest_port | ||
) |
simple subscription (w/o exclusive & time conversion)
seq | sequencer handle |
myport | the port id as sender |
dest_client | destination client id |
dest_port | destination port id |
Connect from the given receiver port in the current client to the given destination client:port.
int snd_seq_control_queue | ( | snd_seq_t * | seq, |
int | q, | ||
int | type, | ||
int | value, | ||
snd_seq_event_t * | ev | ||
) |
queue controls - start/stop/continue
seq | sequencer handle |
q | queue id to control |
type | event type |
value | event value |
ev | event instance |
This function sets up general queue control event and sends it. To send at scheduled time, set the schedule in ev. If ev is NULL, the event is composed locally and sent immediately to the specified queue. In any cases, you need to call snd_seq_drain_output() appropriately to feed the event.
int snd_seq_create_simple_port | ( | snd_seq_t * | seq, |
const char * | name, | ||
unsigned int | caps, | ||
unsigned int | type | ||
) |
create a port - simple version
seq | sequencer handle |
name | the name of the port |
caps | capability bits |
type | type bits |
Creates a port with the given capability and type bits.
int snd_seq_delete_simple_port | ( | snd_seq_t * | seq, |
int | port | ||
) |
delete the port
seq | sequencer handle |
port | port id |
int snd_seq_disconnect_from | ( | snd_seq_t * | seq, |
int | myport, | ||
int | src_client, | ||
int | src_port | ||
) |
simple disconnection
seq | sequencer handle |
myport | the port id as receiver |
src_client | sender client id |
src_port | sender port id |
Remove connection from the given sender client:port to the given destination port in the current client.
int snd_seq_disconnect_to | ( | snd_seq_t * | seq, |
int | myport, | ||
int | dest_client, | ||
int | dest_port | ||
) |
simple disconnection
seq | sequencer handle |
myport | the port id as sender |
dest_client | destination client id |
dest_port | destination port id |
Remove connection from the given sender client:port to the given destination port in the current client.
int snd_seq_parse_address | ( | snd_seq_t * | seq, |
snd_seq_addr_t * | addr, | ||
const char * | arg | ||
) |
parse the given string and get the sequencer address
seq | sequencer handle |
addr | the address pointer to be returned |
arg | the string to be parsed |
This function parses the sequencer client and port numbers from the given string. The client and port tokens are separated by either colon or period, e.g. 128:1. When seq is not NULL, the function accepts also a client name not only digit numbers. Actually arg need to be only a prefix of the wanted client. That is, if a client named "Foobar XXL Master 2012" with number 128 is available, then parsing "Foobar" will return the address 128:0 if no other client is an exact match.
int snd_seq_reset_pool_input | ( | snd_seq_t * | seq | ) |
reset client input pool
seq | sequencer handle |
So far, this works identically like snd_seq_drop_input().
int snd_seq_reset_pool_output | ( | snd_seq_t * | seq | ) |
reset client output pool
seq | sequencer handle |
So far, this works identically like snd_seq_drop_output().
int snd_seq_set_client_event_filter | ( | snd_seq_t * | seq, |
int | event_type | ||
) |
add client event filter
seq | sequencer handle |
event_type | event type to be added |
int snd_seq_set_client_name | ( | snd_seq_t * | seq, |
const char * | name | ||
) |
set client name
seq | sequencer handle |
name | name string |
int snd_seq_set_client_pool_input | ( | snd_seq_t * | seq, |
size_t | size | ||
) |
change the input pool size of the given client
seq | sequencer handle |
size | input pool size |
int snd_seq_set_client_pool_output | ( | snd_seq_t * | seq, |
size_t | size | ||
) |
change the output pool size of the given client
seq | sequencer handle |
size | output pool size |
int snd_seq_set_client_pool_output_room | ( | snd_seq_t * | seq, |
size_t | size | ||
) |
change the output room size of the given client
seq | sequencer handle |
size | output room size |
int snd_seq_sync_output_queue | ( | snd_seq_t * | seq | ) |
wait until all events are processed
seq | sequencer handle |
This function waits until all events of this client are processed.