📄 seq.h
字号:
#define SND_SEQ_PORT_TYPE_DIRECT_SAMPLE (1<<11)/** Instruments can be downloaded to this port (with SND_SEQ_EVENT_INSTR_xxx messages sent directly or through a queue). */#define SND_SEQ_PORT_TYPE_SAMPLE (1<<12)/** This port is implemented in hardware. */#define SND_SEQ_PORT_TYPE_HARDWARE (1<<16)/** This port is implemented in software. */#define SND_SEQ_PORT_TYPE_SOFTWARE (1<<17)/** Messages sent to this port will generate sounds. */#define SND_SEQ_PORT_TYPE_SYNTHESIZER (1<<18)/** This port may connect to other devices (whose characteristics are not known). */#define SND_SEQ_PORT_TYPE_PORT (1<<19)/** This port belongs to an application, such as a sequencer or editor. */#define SND_SEQ_PORT_TYPE_APPLICATION (1<<20)size_t snd_seq_port_info_sizeof(void);/** allocate a #snd_seq_port_info_t container on stack */#define snd_seq_port_info_alloca(ptr) \ SND_ALLOCA(snd_seq_port_info, ptr)int snd_seq_port_info_malloc(snd_seq_port_info_t **ptr);void snd_seq_port_info_free(snd_seq_port_info_t *ptr);void snd_seq_port_info_copy(snd_seq_port_info_t *dst, const snd_seq_port_info_t *src);int snd_seq_port_info_get_client(const snd_seq_port_info_t *info);int snd_seq_port_info_get_port(const snd_seq_port_info_t *info);const snd_seq_addr_t *snd_seq_port_info_get_addr(const snd_seq_port_info_t *info);const char *snd_seq_port_info_get_name(const snd_seq_port_info_t *info);unsigned int snd_seq_port_info_get_capability(const snd_seq_port_info_t *info);unsigned int snd_seq_port_info_get_type(const snd_seq_port_info_t *info);int snd_seq_port_info_get_midi_channels(const snd_seq_port_info_t *info);int snd_seq_port_info_get_midi_voices(const snd_seq_port_info_t *info);int snd_seq_port_info_get_synth_voices(const snd_seq_port_info_t *info);int snd_seq_port_info_get_read_use(const snd_seq_port_info_t *info);int snd_seq_port_info_get_write_use(const snd_seq_port_info_t *info);int snd_seq_port_info_get_port_specified(const snd_seq_port_info_t *info);int snd_seq_port_info_get_timestamping(const snd_seq_port_info_t *info);int snd_seq_port_info_get_timestamp_real(const snd_seq_port_info_t *info);int snd_seq_port_info_get_timestamp_queue(const snd_seq_port_info_t *info);void snd_seq_port_info_set_client(snd_seq_port_info_t *info, int client);void snd_seq_port_info_set_port(snd_seq_port_info_t *info, int port);void snd_seq_port_info_set_addr(snd_seq_port_info_t *info, const snd_seq_addr_t *addr);void snd_seq_port_info_set_name(snd_seq_port_info_t *info, const char *name);void snd_seq_port_info_set_capability(snd_seq_port_info_t *info, unsigned int capability);void snd_seq_port_info_set_type(snd_seq_port_info_t *info, unsigned int type);void snd_seq_port_info_set_midi_channels(snd_seq_port_info_t *info, int channels);void snd_seq_port_info_set_midi_voices(snd_seq_port_info_t *info, int voices);void snd_seq_port_info_set_synth_voices(snd_seq_port_info_t *info, int voices);void snd_seq_port_info_set_port_specified(snd_seq_port_info_t *info, int val);void snd_seq_port_info_set_timestamping(snd_seq_port_info_t *info, int enable);void snd_seq_port_info_set_timestamp_real(snd_seq_port_info_t *info, int realtime);void snd_seq_port_info_set_timestamp_queue(snd_seq_port_info_t *info, int queue);int snd_seq_create_port(snd_seq_t *handle, snd_seq_port_info_t *info);int snd_seq_delete_port(snd_seq_t *handle, int port);int snd_seq_get_port_info(snd_seq_t *handle, int port, snd_seq_port_info_t *info);int snd_seq_get_any_port_info(snd_seq_t *handle, int client, int port, snd_seq_port_info_t *info);int snd_seq_set_port_info(snd_seq_t *handle, int port, snd_seq_port_info_t *info);int snd_seq_query_next_port(snd_seq_t *handle, snd_seq_port_info_t *info);/** \} *//** * \defgroup SeqSubscribe Sequencer Port Subscription * Sequencer Port Subscription * \ingroup Sequencer * \{ *//** port subscription container */typedef struct _snd_seq_port_subscribe snd_seq_port_subscribe_t;size_t snd_seq_port_subscribe_sizeof(void);/** allocate a #snd_seq_port_subscribe_t container on stack */#define snd_seq_port_subscribe_alloca(ptr) \ SND_ALLOCA(snd_seq_port_subscribe, ptr)int snd_seq_port_subscribe_malloc(snd_seq_port_subscribe_t **ptr);void snd_seq_port_subscribe_free(snd_seq_port_subscribe_t *ptr);void snd_seq_port_subscribe_copy(snd_seq_port_subscribe_t *dst, const snd_seq_port_subscribe_t *src);const snd_seq_addr_t *snd_seq_port_subscribe_get_sender(const snd_seq_port_subscribe_t *info);const snd_seq_addr_t *snd_seq_port_subscribe_get_dest(const snd_seq_port_subscribe_t *info);int snd_seq_port_subscribe_get_queue(const snd_seq_port_subscribe_t *info);int snd_seq_port_subscribe_get_exclusive(const snd_seq_port_subscribe_t *info);int snd_seq_port_subscribe_get_time_update(const snd_seq_port_subscribe_t *info);int snd_seq_port_subscribe_get_time_real(const snd_seq_port_subscribe_t *info);void snd_seq_port_subscribe_set_sender(snd_seq_port_subscribe_t *info, const snd_seq_addr_t *addr);void snd_seq_port_subscribe_set_dest(snd_seq_port_subscribe_t *info, const snd_seq_addr_t *addr);void snd_seq_port_subscribe_set_queue(snd_seq_port_subscribe_t *info, int q);void snd_seq_port_subscribe_set_exclusive(snd_seq_port_subscribe_t *info, int val);void snd_seq_port_subscribe_set_time_update(snd_seq_port_subscribe_t *info, int val);void snd_seq_port_subscribe_set_time_real(snd_seq_port_subscribe_t *info, int val);int snd_seq_get_port_subscription(snd_seq_t *handle, snd_seq_port_subscribe_t *sub);int snd_seq_subscribe_port(snd_seq_t *handle, snd_seq_port_subscribe_t *sub);int snd_seq_unsubscribe_port(snd_seq_t *handle, snd_seq_port_subscribe_t *sub);/* *//** subscription query container */typedef struct _snd_seq_query_subscribe snd_seq_query_subscribe_t;/** type of query subscription */typedef enum { SND_SEQ_QUERY_SUBS_READ, /**< query read subscriptions */ SND_SEQ_QUERY_SUBS_WRITE /**< query write subscriptions */} snd_seq_query_subs_type_t;size_t snd_seq_query_subscribe_sizeof(void);/** allocate a #snd_seq_query_subscribe_t container on stack */#define snd_seq_query_subscribe_alloca(ptr) \ SND_ALLOCA(snd_seq_query_subscribe, ptr)int snd_seq_query_subscribe_malloc(snd_seq_query_subscribe_t **ptr);void snd_seq_query_subscribe_free(snd_seq_query_subscribe_t *ptr);void snd_seq_query_subscribe_copy(snd_seq_query_subscribe_t *dst, const snd_seq_query_subscribe_t *src);int snd_seq_query_subscribe_get_client(const snd_seq_query_subscribe_t *info);int snd_seq_query_subscribe_get_port(const snd_seq_query_subscribe_t *info);const snd_seq_addr_t *snd_seq_query_subscribe_get_root(const snd_seq_query_subscribe_t *info);snd_seq_query_subs_type_t snd_seq_query_subscribe_get_type(const snd_seq_query_subscribe_t *info);int snd_seq_query_subscribe_get_index(const snd_seq_query_subscribe_t *info);int snd_seq_query_subscribe_get_num_subs(const snd_seq_query_subscribe_t *info);const snd_seq_addr_t *snd_seq_query_subscribe_get_addr(const snd_seq_query_subscribe_t *info);int snd_seq_query_subscribe_get_queue(const snd_seq_query_subscribe_t *info);int snd_seq_query_subscribe_get_exclusive(const snd_seq_query_subscribe_t *info);int snd_seq_query_subscribe_get_time_update(const snd_seq_query_subscribe_t *info);int snd_seq_query_subscribe_get_time_real(const snd_seq_query_subscribe_t *info);void snd_seq_query_subscribe_set_client(snd_seq_query_subscribe_t *info, int client);void snd_seq_query_subscribe_set_port(snd_seq_query_subscribe_t *info, int port);void snd_seq_query_subscribe_set_root(snd_seq_query_subscribe_t *info, const snd_seq_addr_t *addr);void snd_seq_query_subscribe_set_type(snd_seq_query_subscribe_t *info, snd_seq_query_subs_type_t type);void snd_seq_query_subscribe_set_index(snd_seq_query_subscribe_t *info, int _index);int snd_seq_query_port_subscribers(snd_seq_t *seq, snd_seq_query_subscribe_t * subs);/** \} *//** * \defgroup SeqQueue Sequencer Queue Interface * Sequencer Queue Interface * \ingroup Sequencer * \{ *//** queue information container */typedef struct _snd_seq_queue_info snd_seq_queue_info_t;/** queue status container */typedef struct _snd_seq_queue_status snd_seq_queue_status_t;/** queue tempo container */typedef struct _snd_seq_queue_tempo snd_seq_queue_tempo_t;/** queue timer information container */typedef struct _snd_seq_queue_timer snd_seq_queue_timer_t;/** special queue ids */#define SND_SEQ_QUEUE_DIRECT 253 /**< direct dispatch */size_t snd_seq_queue_info_sizeof(void);/** allocate a #snd_seq_queue_info_t container on stack */#define snd_seq_queue_info_alloca(ptr) \ SND_ALLOCA(snd_seq_queue_info, ptr)int snd_seq_queue_info_malloc(snd_seq_queue_info_t **ptr);void snd_seq_queue_info_free(snd_seq_queue_info_t *ptr);void snd_seq_queue_info_copy(snd_seq_queue_info_t *dst, const snd_seq_queue_info_t *src);int snd_seq_queue_info_get_queue(const snd_seq_queue_info_t *info);const char *snd_seq_queue_info_get_name(const snd_seq_queue_info_t *info);int snd_seq_queue_info_get_owner(const snd_seq_queue_info_t *info);int snd_seq_queue_info_get_locked(const snd_seq_queue_info_t *info);unsigned int snd_seq_queue_info_get_flags(const snd_seq_queue_info_t *info);void snd_seq_queue_info_set_name(snd_seq_queue_info_t *info, const char *name);void snd_seq_queue_info_set_owner(snd_seq_queue_info_t *info, int owner);void snd_seq_queue_info_set_locked(snd_seq_queue_info_t *info, int locked);void snd_seq_queue_info_set_flags(snd_seq_queue_info_t *info, unsigned int flags);int snd_seq_create_queue(snd_seq_t *seq, snd_seq_queue_info_t *info);int snd_seq_alloc_named_queue(snd_seq_t *seq, const char *name);int snd_seq_alloc_queue(snd_seq_t *handle);int snd_seq_free_queue(snd_seq_t *handle, int q);int snd_seq_get_queue_info(snd_seq_t *seq, int q, snd_seq_queue_info_t *info);int snd_seq_set_queue_info(snd_seq_t *seq, int q, snd_seq_queue_info_t *info);int snd_seq_query_named_queue(snd_seq_t *seq, const char *name);int snd_seq_get_queue_usage(snd_seq_t *handle, int q);int snd_seq_set_queue_usage(snd_seq_t *handle, int q, int used);/* */size_t snd_seq_queue_status_sizeof(void);/** allocate a #snd_seq_queue_status_t container on stack */#define snd_seq_queue_status_alloca(ptr) \ SND_ALLOCA(snd_seq_queue_status, ptr)int snd_seq_queue_status_malloc(snd_seq_queue_status_t **ptr);void snd_seq_queue_status_free(snd_seq_queue_status_t *ptr);void snd_seq_queue_status_copy(snd_seq_queue_status_t *dst, const snd_seq_queue_status_t *src);int snd_seq_queue_status_get_queue(const snd_seq_queue_status_t *info);int snd_seq_queue_status_get_events(const snd_seq_queue_status_t *info);snd_seq_tick_time_t snd_seq_queue_status_get_tick_time(const snd_seq_queue_status_t *info);const snd_seq_real_time_t *snd_seq_queue_status_get_real_time(const snd_seq_queue_status_t *info);unsigned int snd_seq_queue_status_get_status(const snd_seq_queue_status_t *info);int snd_seq_get_queue_status(snd_seq_t *handle, int q, snd_seq_queue_status_t *status);/* */size_t snd_seq_queue_tempo_sizeof(void);/** allocate a #snd_seq_queue_tempo_t container on stack */#define snd_seq_queue_tempo_alloca(ptr) \ SND_ALLOCA(snd_seq_queue_tempo, ptr)int snd_seq_queue_tempo_malloc(snd_seq_queue_tempo_t **ptr);void snd_seq_queue_tempo_free(snd_seq_queue_tempo_t *ptr);void snd_seq_queue_tempo_copy(snd_seq_queue_tempo_t *dst, const snd_seq_queue_tempo_t *src);int snd_seq_queue_tempo_get_queue(const snd_seq_queue_tempo_t *info);unsigned int snd_seq_queue_tempo_get_tempo(const snd_seq_queue_tempo_t *info);int snd_seq_queue_tempo_get_ppq(const snd_seq_queue_tempo_t *info);unsigned int snd_seq_queue_tempo_get_skew(const snd_seq_queue_tempo_t *info);unsigned int snd_seq_queue_tempo_get_skew_base(const snd_seq_queue_tempo_t *info);void snd_seq_queue_tempo_set_tempo(snd_seq_queue_tempo_t *info, unsigned int tempo);void snd_seq_queue_tempo_set_ppq(snd_seq_queue_tempo_t *info, int ppq);void snd_seq_queue_tempo_set_skew(snd_seq_queue_tempo_t *info, unsigned int skew);void snd_seq_queue_tempo_set_skew_base(snd_seq_queue_tempo_t *info, unsigned int base);int snd_seq_get_queue_tempo(snd_seq_t *handle, int q, snd_seq_queue_tempo_t *tempo);int snd_seq_set_queue_tempo(snd_seq_t *handle, int q, snd_seq_queue_tempo_t *tempo);/* *//** sequencer timer sources */typedef enum { SND_SEQ_TIMER_ALSA = 0, /* ALSA timer */ SND_SEQ_TIMER_MIDI_CLOCK = 1, /* Midi Clock (CLOCK event) */ SND_SEQ_TIMER_MIDI_TICK = 2 /* Midi Timer Tick (TICK event */} snd_seq_queue_timer_type_t;size_t snd_seq_queue_timer_sizeof(void);/** allocate a #snd_seq_queue_timer_t container on stack */#define snd_seq_queue_timer_alloca(ptr) \
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -