Main Page   Modules   Data Structures   File List   Data Fields   Globals   Related Pages   Examples  

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_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)
 queue controls - start/stop/continue

int snd_seq_create_simple_port (snd_seq_t *seq, const char *name, unsigned int caps, unsigned int type)
 create a port - simple version

int snd_seq_delete_simple_port (snd_seq_t *seq, int port)
 delete the port

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)

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)

int snd_seq_disconnect_from (snd_seq_t *seq, int my_port, int src_client, int src_port)
 simple disconnection

int snd_seq_disconnect_to (snd_seq_t *seq, int my_port, int dest_client, int dest_port)
 simple disconnection

int snd_seq_set_client_name (snd_seq_t *seq, const char *name)
 set client name

int snd_seq_set_client_event_filter (snd_seq_t *seq, int event_type)
 add client event filter

int snd_seq_set_client_pool_output (snd_seq_t *seq, size_t size)
 change the output pool size of the given client

int snd_seq_set_client_pool_output_room (snd_seq_t *seq, size_t size)
 change the output room size of the given client

int snd_seq_set_client_pool_input (snd_seq_t *seq, size_t size)
 change the input pool size of the given client

int snd_seq_sync_output_queue (snd_seq_t *seq)
 drain output queue

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

int snd_seq_reset_pool_output (snd_seq_t *seq)
 reset client output pool

int snd_seq_reset_pool_input (snd_seq_t *seq)
 reset client input pool


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
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

Parameters:
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

Parameters:
ev  event record pointer

#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
q  queue id to schedule
relative  relative time-stamp if non-zero
rtime  time-stamp to be delivered

#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
q  queue id to schedule
relative  relative time-stamp if non-zero
ttick  tick time-stamp to be delivered

#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

#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
ch  channel number
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
ch  channel number
cc  controller number
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
c  destination client id
p  destination port id

#define snd_seq_ev_set_direct ev       ((ev)->queue = SND_SEQ_QUEUE_DIRECT)
 

set direct passing mode (without queued)

Parameters:
ev  event instance

#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.

#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
ch  channel number
key  note key
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
ch  channel number
key  note key
vel  velocity
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
ch  channel number
key  note key
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
ch  channel number
key  note key
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
ch  channel number
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
ch  channel number
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
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
q  queue id to continue

#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
typ  event type
q  queue id
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
q  queue id to change tempo
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
q  queue id to change tempo
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
q  queue id to start

#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
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

Parameters:
ev  event record
q  queue id to change tempo
val  the new tempo value

#define snd_seq_ev_set_source ev,
     ((ev)->source.port = (p))
 

set the source port

Parameters:
ev  event record
p  source port id

#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

#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
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_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
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   
 

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
len  length of the external data
ptr  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

Parameters:
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

Parameters:
seq  sequencer handle
q  queue id to stop
ev  optional event record (see snd_seq_control_queue)


Function Documentation

int snd_seq_connect_from snd_seq_t   seq,
int    myport,
int    src_client,
int    src_port
 

simple subscription (w/o exclusive & time conversion)

Parameters:
myport  the port id as receiver
src_client  sender client id
src_port  sender port id
Returns:
0 on success or negative error code
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)

Parameters:
myport  the port id as sender
dest_client  destination client id
dest_port  destination port id
Returns:
0 on success or negative error code
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

Parameters:
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_event 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

Parameters:
seq  sequencer handle
name  the name of the port
caps  capability bits
type  type bits
Returns:
the created port number or negative error code
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

Parameters:
seq  sequencer handle
port  port id
Returns:
0 on success or negative error code

int snd_seq_disconnect_from snd_seq_t   seq,
int    myport,
int    src_client,
int    src_port
 

simple disconnection

Parameters:
myport  the port id as receiver
src_client  sender client id
src_port  sender port id
Returns:
0 on success or negative error code
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

Parameters:
myport  the port id as sender
dest_client  destination client id
dest_port  destination port id
Returns:
0 on success or negative error code
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

Parameters:
seq  sequencer handle
addr  the address pointer to be returned
arg  the string to be parsed
Returns:
0 on success or negative error code
This function parses the sequencer client and port numbers from the given string. The client and port tokes 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.

int snd_seq_reset_pool_input snd_seq_t   seq
 

reset client input pool

Parameters:
seq  sequencer handle
Returns:
0 on success or negative error code

int snd_seq_reset_pool_output snd_seq_t   seq
 

reset client output pool

Parameters:
seq  sequencer handle
Returns:
0 on success or negative error code

int snd_seq_set_client_event_filter snd_seq_t   seq,
int    event_type
 

add client event filter

Parameters:
seq  sequencer handle
event_type  event type to be added
Returns:
0 on success or negative error code

int snd_seq_set_client_name snd_seq_t   seq,
const char *    name
 

set client name

Parameters:
seq  sequencer handle
name  name string
Returns:
0 on success or negative error code

int snd_seq_set_client_pool_input snd_seq_t   seq,
size_t    size
 

change the input pool size of the given client

Parameters:
seq  sequencer handle
size  input pool size
Returns:
0 on success or negative error code

int snd_seq_set_client_pool_output snd_seq_t   seq,
size_t    size
 

change the output pool size of the given client

Parameters:
seq  sequencer handle
size  output pool size
Returns:
0 on success or negative error code

int snd_seq_set_client_pool_output_room snd_seq_t   seq,
size_t    size
 

change the output room size of the given client

Parameters:
seq  sequencer handle
size  output room size
Returns:
0 on success or negative error code

int snd_seq_sync_output_queue snd_seq_t   seq
 

drain output queue

Parameters:
seq  sequencer handle
Returns:
0 on success or negative error code


Generated on Thu Feb 20 16:45:52 2003 for ALSA project - the C library reference by doxygen1.2.18