Sequencer Middle Level Interface
[MIDI Sequencer]

Defines

#define snd_seq_ev_clear(ev)   memset(ev, 0, sizeof(snd_seq_event_t))
 initialize event record
#define snd_seq_ev_set_tag(ev, t)   ((ev)->tag = (t))
 set the tag for given event
#define snd_seq_ev_set_dest(ev, c, p)   ((ev)->dest.client = (c), (ev)->dest.port = (p))
 set the explicit destination
#define snd_seq_ev_set_subs(ev)
 set broadcasting to subscribers
#define snd_seq_ev_set_broadcast(ev)
 set broadcasting to all clients/ports
#define snd_seq_ev_set_source(ev, p)   ((ev)->source.port = (p))
 set the source port
#define snd_seq_ev_set_direct(ev)   ((ev)->queue = SND_SEQ_QUEUE_DIRECT)
 set direct passing mode (without queued)
#define snd_seq_ev_schedule_tick(ev, q, relative, ttick)
 set tick-scheduling mode on queue
#define snd_seq_ev_schedule_real(ev, q, relative, rtime)
 set real-time-scheduling mode on queue
#define snd_seq_ev_set_priority(ev, high_prior)
 set event priority
#define snd_seq_ev_set_fixed(ev)
 set fixed data
#define snd_seq_ev_set_variable(ev, datalen, dataptr)
 set variable data
#define snd_seq_ev_set_varusr(ev, datalen, dataptr)
 set varusr data
#define snd_seq_ev_set_queue_control(ev, typ, q, val)
 set queue controls
#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
#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
#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
#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
#define snd_seq_ev_set_queue_pos_real(ev, q, rtime)
 set the real-time position of a queue
#define snd_seq_ev_set_queue_pos_tick(ev, q, ttime)
 set the tick-time position of a queue
#define snd_seq_start_queue(seq, q, ev)   snd_seq_control_queue(seq, q, SND_SEQ_EVENT_START, 0, ev)
 start the specified 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
#define snd_seq_continue_queue(seq, q, ev)   snd_seq_control_queue(seq, q, SND_SEQ_EVENT_CONTINUE, 0, ev)
 continue the specified queue
#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
#define snd_seq_ev_set_note(ev, ch, key, vel, dur)
 set note event
#define snd_seq_ev_set_noteon(ev, ch, key, vel)
 set note-on event
#define snd_seq_ev_set_noteoff(ev, ch, key, vel)
 set note-off event
#define snd_seq_ev_set_keypress(ev, ch, key, vel)
 set key-pressure event
#define snd_seq_ev_set_controller(ev, ch, cc, val)
 set MIDI controller event
#define snd_seq_ev_set_pgmchange(ev, ch, val)
 set program change event
#define snd_seq_ev_set_pitchbend(ev, ch, val)
 set pitch-bend event
#define snd_seq_ev_set_chanpress(ev, ch, val)
 set channel pressure event
#define snd_seq_ev_set_sysex(ev, datalen, dataptr)
 set sysex event

Functions

int snd_seq_control_queue (snd_seq_t *seq, int q, int type, int value, snd_seq_event_t *ev)
int snd_seq_create_simple_port (snd_seq_t *seq, const char *name, unsigned int caps, unsigned int type)
int snd_seq_delete_simple_port (snd_seq_t *seq, int port)
int snd_seq_connect_from (snd_seq_t *seq, int my_port, int src_client, int src_port)
int snd_seq_connect_to (snd_seq_t *seq, int my_port, int dest_client, int dest_port)
int snd_seq_disconnect_from (snd_seq_t *seq, int my_port, int src_client, int src_port)
int snd_seq_disconnect_to (snd_seq_t *seq, int my_port, int dest_client, int dest_port)
int snd_seq_set_client_name (snd_seq_t *seq, const char *name)
int snd_seq_set_client_event_filter (snd_seq_t *seq, int event_type)
int snd_seq_set_client_pool_output (snd_seq_t *seq, size_t size)
int snd_seq_set_client_pool_output_room (snd_seq_t *seq, size_t size)
int snd_seq_set_client_pool_input (snd_seq_t *seq, size_t size)
int snd_seq_sync_output_queue (snd_seq_t *seq)
int snd_seq_parse_address (snd_seq_t *seq, snd_seq_addr_t *addr, const char *str)
int snd_seq_reset_pool_output (snd_seq_t *seq)
int snd_seq_reset_pool_input (snd_seq_t *seq)

Detailed Description

Sequencer Middle Level Interface


Define Documentation

#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

Parameters:
seq sequencer handle
Parameters:
q queue id
Parameters:
tempo the new tempo value
Parameters:
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

Parameters:
seq sequencer handle
Parameters:
q queue id to continue
Parameters:
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

Parameters:
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   ) 
Value:
((ev)->flags &= ~(SND_SEQ_TIME_STAMP_MASK | SND_SEQ_TIME_MODE_MASK),\
         (ev)->flags |= SND_SEQ_TIME_STAMP_REAL,\
         (ev)->flags |= (relative) ? SND_SEQ_TIME_MODE_REL : SND_SEQ_TIME_MODE_ABS,\
         (ev)->time.time = *(rtime),\
         (ev)->queue = (q))

set real-time-scheduling mode on queue

Parameters:
ev event instance
Parameters:
q queue id to schedule
Parameters:
relative relative time-stamp if non-zero
Parameters:
rtime time-stamp to be delivered
This macro sets the scheduling of the event in the realtime mode.
See also:
snd_seq_ev_schedule_tick(), snd_seq_ev_set_direct()
#define snd_seq_ev_schedule_tick ( ev,
q,
relative,
ttick   ) 
Value:
((ev)->flags &= ~(SND_SEQ_TIME_STAMP_MASK | SND_SEQ_TIME_MODE_MASK),\
         (ev)->flags |= SND_SEQ_TIME_STAMP_TICK,\
         (ev)->flags |= (relative) ? SND_SEQ_TIME_MODE_REL : SND_SEQ_TIME_MODE_ABS,\
         (ev)->time.tick = (ttick),\
         (ev)->queue = (q))

set tick-scheduling mode on queue

Parameters:
ev event instance
Parameters:
q queue id to schedule
Parameters:
relative relative time-stamp if non-zero
Parameters:
ttick tick time-stamp to be delivered
This macro sets the scheduling of the event in the MIDI tick mode.
See also:
snd_seq_ev_schedule_real(), snd_seq_ev_set_direct()
#define snd_seq_ev_set_broadcast ( ev   ) 
Value:
((ev)->dest.client = SND_SEQ_ADDRESS_BROADCAST,\
         (ev)->dest.port = SND_SEQ_ADDRESS_BROADCAST)

set broadcasting to all clients/ports

Parameters:
ev event record
This macro sets the destination as the broadcasting.

See also:
snd_seq_ev_set_dest()
#define snd_seq_ev_set_chanpress ( ev,
ch,
val   ) 
Value:
((ev)->type = SND_SEQ_EVENT_CHANPRESS,\
         snd_seq_ev_set_fixed(ev),\
         (ev)->data.control.channel = (ch),\
         (ev)->data.control.value = (val))

set channel pressure event

Parameters:
ev event record
Parameters:
ch channel number
Parameters:
val channel pressure value
#define snd_seq_ev_set_controller ( ev,
ch,
cc,
val   ) 
Value:
((ev)->type = SND_SEQ_EVENT_CONTROLLER,\
         snd_seq_ev_set_fixed(ev),\
         (ev)->data.control.channel = (ch),\
         (ev)->data.control.param = (cc),\
         (ev)->data.control.value = (val))

set MIDI controller event

Parameters:
ev event record
Parameters:
ch channel number
Parameters:
cc controller number
Parameters:
val control value
#define snd_seq_ev_set_dest ( ev,
c,
 )     ((ev)->dest.client = (c), (ev)->dest.port = (p))

set the explicit destination

Parameters:
ev event record
Parameters:
c destination client id
Parameters:
p destination port id
This macro sets the client and port id numbers to the given event record.
See also:
snd_seq_ev_set_subs()
#define snd_seq_ev_set_direct ( ev   )     ((ev)->queue = SND_SEQ_QUEUE_DIRECT)

set direct passing mode (without queued)

Parameters:
ev event instance
This macro sets the event to the direct passing mode to be delivered immediately without queueing.

See also:
snd_seq_ev_schedule_tick(), snd_seq_ev_schedule_real()
#define snd_seq_ev_set_fixed ( ev   ) 
Value:
((ev)->flags &= ~SND_SEQ_EVENT_LENGTH_MASK,\
         (ev)->flags |= SND_SEQ_EVENT_LENGTH_FIXED)

set fixed data

Parameters:
ev event instance
Sets the event length mode as fixed size.

See also:
snd_seq_ev_set_variable(), snd_seq_ev_set_varusr()
#define snd_seq_ev_set_keypress ( ev,
ch,
key,
vel   ) 
Value:
((ev)->type = SND_SEQ_EVENT_KEYPRESS,\
         snd_seq_ev_set_fixed(ev),\
         (ev)->data.note.channel = (ch),\
         (ev)->data.note.note = (key),\
         (ev)->data.note.velocity = (vel))

set key-pressure event

Parameters:
ev event record
Parameters:
ch channel number
Parameters:
key note key
Parameters:
vel velocity
#define snd_seq_ev_set_note ( ev,
ch,
key,
vel,
dur   ) 
Value:
((ev)->type = SND_SEQ_EVENT_NOTE,\
         snd_seq_ev_set_fixed(ev),\
         (ev)->data.note.channel = (ch),\
         (ev)->data.note.note = (key),\
         (ev)->data.note.velocity = (vel),\
         (ev)->data.note.duration = (dur))

set note event

Parameters:
ev event record
Parameters:
ch channel number
Parameters:
key note key
Parameters:
vel velocity
Parameters:
dur duration (in tick or msec)
#define snd_seq_ev_set_noteoff ( ev,
ch,
key,
vel   ) 
Value:
((ev)->type = SND_SEQ_EVENT_NOTEOFF,\
         snd_seq_ev_set_fixed(ev),\
         (ev)->data.note.channel = (ch),\
         (ev)->data.note.note = (key),\
         (ev)->data.note.velocity = (vel))

set note-off event

Parameters:
ev event record
Parameters:
ch channel number
Parameters:
key note key
Parameters:
vel velocity
#define snd_seq_ev_set_noteon ( ev,
ch,
key,
vel   ) 
Value:
((ev)->type = SND_SEQ_EVENT_NOTEON,\
         snd_seq_ev_set_fixed(ev),\
         (ev)->data.note.channel = (ch),\
         (ev)->data.note.note = (key),\
         (ev)->data.note.velocity = (vel))

set note-on event

Parameters:
ev event record
Parameters:
ch channel number
Parameters:
key note key
Parameters:
vel velocity
#define snd_seq_ev_set_pgmchange ( ev,
ch,
val   ) 
Value:
((ev)->type = SND_SEQ_EVENT_PGMCHANGE,\
         snd_seq_ev_set_fixed(ev),\
         (ev)->data.control.channel = (ch),\
         (ev)->data.control.value = (val))

set program change event

Parameters:
ev event record
Parameters:
ch channel number
Parameters:
val program number
#define snd_seq_ev_set_pitchbend ( ev,
ch,
val   ) 
Value:
((ev)->type = SND_SEQ_EVENT_PITCHBEND,\
         snd_seq_ev_set_fixed(ev),\
         (ev)->data.control.channel = (ch),\
         (ev)->data.control.value = (val))

set pitch-bend event

Parameters:
ev event record
Parameters:
ch channel number
Parameters:
val pitch bend; zero centered from -8192 to 8191
#define snd_seq_ev_set_priority ( ev,
high_prior   ) 
Value:
((ev)->flags &= ~SND_SEQ_PRIORITY_MASK,\
         (ev)->flags |= (high_prior) ? SND_SEQ_PRIORITY_HIGH : SND_SEQ_PRIORITY_NORMAL)

set event priority

Parameters:
ev event instance
Parameters:
high_prior 1 for high priority mode
#define snd_seq_ev_set_queue_continue ( ev,
 )     snd_seq_ev_set_queue_control(ev, SND_SEQ_EVENT_CONTINUE, q, 0)

set the stop queue event

Parameters:
ev event record
Parameters:
q queue id to continue
See also:
snd_seq_ev_set_queue_start(), snd_seq_ev_set_queue_stop()
#define snd_seq_ev_set_queue_control ( ev,
typ,
q,
val   ) 
Value:
((ev)->type = (typ),\
         snd_seq_ev_set_dest(ev, SND_SEQ_CLIENT_SYSTEM, SND_SEQ_PORT_SYSTEM_TIMER),\
         (ev)->data.queue.queue = (q),\
         (ev)->data.queue.param.value = (val))

set queue controls

Parameters:
ev event record
Parameters:
typ event type
Parameters:
q queue id
Parameters:
val control value
#define snd_seq_ev_set_queue_pos_real ( ev,
q,
rtime   ) 
Value:
((ev)->type = SND_SEQ_EVENT_SETPOS_TIME,\
         snd_seq_ev_set_dest(ev, SND_SEQ_CLIENT_SYSTEM, SND_SEQ_PORT_SYSTEM_TIMER),\
         (ev)->data.queue.queue = (q),\
         (ev)->data.queue.param.time.time = *(rtime))

set the real-time position of a queue

Parameters:
ev event record
Parameters:
q queue id to change tempo
Parameters:
rtime the new real-time pointer
#define snd_seq_ev_set_queue_pos_tick ( ev,
q,
ttime   ) 
Value:
((ev)->type = SND_SEQ_EVENT_SETPOS_TICK,\
         snd_seq_ev_set_dest(ev, SND_SEQ_CLIENT_SYSTEM, SND_SEQ_PORT_SYSTEM_TIMER),\
         (ev)->data.queue.queue = (q),\
         (ev)->data.queue.param.time.tick = (ttime))

set the tick-time position of a queue

Parameters:
ev event record
Parameters:
q queue id to change tempo
Parameters:
ttime the new tick-time
#define snd_seq_ev_set_queue_start ( ev,
 )     snd_seq_ev_set_queue_control(ev, SND_SEQ_EVENT_START, q, 0)

set the start queue event

Parameters:
ev event record
Parameters:
q queue id to start
See also:
snd_seq_ev_set_queue_stop(), snd_seq_ev_set_queue_continue()
#define snd_seq_ev_set_queue_stop ( ev,
 )     snd_seq_ev_set_queue_control(ev, SND_SEQ_EVENT_STOP, q, 0)

set the stop queue event

Parameters:
ev event record
Parameters:
q queue id to stop
See also:
snd_seq_ev_set_queue_start(), snd_seq_ev_set_queue_continue()
#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

Parameters:
ev event record
Parameters:
q queue id to change tempo
Parameters:
val the new tempo value
#define snd_seq_ev_set_source ( ev,
 )     ((ev)->source.port = (p))

set the source port

Parameters:
ev event record
Parameters:
p source port id
This macro sets the source port id number.
#define snd_seq_ev_set_subs ( ev   ) 
Value:
((ev)->dest.client = SND_SEQ_ADDRESS_SUBSCRIBERS,\
         (ev)->dest.port = SND_SEQ_ADDRESS_UNKNOWN)

set broadcasting to subscribers

Parameters:
ev event record
This macro sets the destination as the subscribers.

See also:
snd_seq_ev_set_dest()
#define snd_seq_ev_set_sysex ( ev,
datalen,
dataptr   ) 
Value:
((ev)->type = SND_SEQ_EVENT_SYSEX,\
         snd_seq_ev_set_variable(ev, datalen, dataptr))

set sysex event

Parameters:
ev event record
Parameters:
datalen length of sysex data
Parameters:
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,
 )     ((ev)->tag = (t))

set the tag for given event

Parameters:
ev event record
Parameters:
t event tag
This macro sets the tag to the given event record.
#define snd_seq_ev_set_variable ( ev,
datalen,
dataptr   ) 
Value:
((ev)->flags &= ~SND_SEQ_EVENT_LENGTH_MASK,\
         (ev)->flags |= SND_SEQ_EVENT_LENGTH_VARIABLE,\
         (ev)->data.ext.len = (datalen),\
         (ev)->data.ext.ptr = (dataptr))

set variable data

Parameters:
ev event instance
Parameters:
datalen length of the external data
Parameters:
dataptr pointer of the external data
Sets the event length mode as variable length and stores the data.
See also:
snd_seq_ev_set_fixed(), snd_seq_ev_set_varusr()
#define snd_seq_ev_set_varusr ( ev,
datalen,
dataptr   ) 
Value:
((ev)->flags &= ~SND_SEQ_EVENT_LENGTH_MASK,\
         (ev)->flags |= SND_SEQ_EVENT_LENGTH_VARUSR,\
         (ev)->data.ext.len = (datalen),\
         (ev)->data.ext.ptr = (dataptr))

set varusr data

Parameters:
ev event instance
Parameters:
datalen length of the external data
Parameters:
dataptr pointer of the external data
Sets the event length mode as variable user-space data and stores the data.
See also:
snd_seq_ev_set_fixed(), snd_seq_ev_set_variable()
#define snd_seq_start_queue ( seq,
q,
ev   )     snd_seq_control_queue(seq, q, SND_SEQ_EVENT_START, 0, ev)

start the specified queue

Parameters:
seq sequencer handle
Parameters:
q queue id to start
Parameters:
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

Parameters:
seq sequencer handle
Parameters:
q queue id to stop
Parameters:
ev optional event record (see snd_seq_control_queue)
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Defines
Generated on Fri Jan 27 14:19:57 2012 for ALSA project - the C library reference by  doxygen 1.6.3