OSDN Git Service

Get rid of enum type checking ugly trick
[android-x86/external-alsa-lib.git] / include / seq.h
1 /****************************************************************************
2  *                                                                          *
3  *                                seq.h                                     *
4  *                              Sequencer                                   *
5  *                                                                          *
6  ****************************************************************************/
7
8 typedef sndrv_seq_tick_time_t snd_seq_tick_time_t;
9 typedef sndrv_seq_position_t snd_seq_position_t;
10 typedef sndrv_seq_frequency_t snd_seq_frequency_t;
11 typedef sndrv_seq_instr_cluster_t snd_seq_instr_cluster_t;
12 typedef struct sndrv_seq_port_info snd_seq_port_info_t;
13 typedef struct sndrv_seq_port_subscribe snd_seq_port_subscribe_t;
14 typedef struct sndrv_seq_event snd_seq_event_t;
15 typedef struct sndrv_seq_addr snd_seq_addr_t;
16 typedef struct sndrv_seq_ev_volume snd_seq_ev_volume_t;
17 typedef struct sndrv_seq_ev_loop snd_seq_ev_loop_t;
18 typedef struct sndrv_seq_remove_events snd_seq_remove_events_t;
19 typedef struct sndrv_seq_query_subs snd_seq_query_subs_t;
20 typedef struct sndrv_seq_real_time snd_seq_real_time_t;
21 typedef struct sndrv_seq_system_info snd_seq_system_info_t;
22 typedef struct sndrv_seq_client_info snd_seq_client_info_t;
23 typedef struct sndrv_seq_queue_info snd_seq_queue_info_t;
24 typedef struct sndrv_seq_queue_status snd_seq_queue_status_t;
25 typedef struct sndrv_seq_queue_tempo snd_seq_queue_tempo_t;
26 typedef struct sndrv_seq_queue_owner snd_seq_queue_owner_t;
27 typedef struct sndrv_seq_queue_timer snd_seq_queue_timer_t;
28 typedef struct sndrv_seq_queue_client snd_seq_queue_client_t;
29 typedef struct sndrv_seq_client_pool snd_seq_client_pool_t;
30 typedef struct sndrv_seq_instr snd_seq_instr_t;
31 typedef struct sndrv_seq_instr_data snd_seq_instr_data_t;
32 typedef struct sndrv_seq_instr_free snd_seq_instr_free_t;
33 typedef struct sndrv_seq_instr_put snd_seq_instr_put_t;
34 typedef struct sndrv_seq_instr_get snd_seq_instr_get_t;
35 typedef union sndrv_seq_timestamp snd_seq_timestamp_t;
36
37 typedef enum sndrv_seq_client_type snd_seq_client_type_t;
38 typedef enum sndrv_seq_stop_mode snd_seq_stop_mode_t;
39
40 #define snd_seq_event_bounce_ext_data   sndrv_seq_event_bounce_ext_data 
41 #define snd_seq_ev_is_result_type       sndrv_seq_ev_is_result_type     
42 #define snd_seq_ev_is_channel_type      sndrv_seq_ev_is_channel_type    
43 #define snd_seq_ev_is_note_type         sndrv_seq_ev_is_note_type       
44 #define snd_seq_ev_is_control_type      sndrv_seq_ev_is_control_type    
45 #define snd_seq_ev_is_queue_type        sndrv_seq_ev_is_queue_type      
46 #define snd_seq_ev_is_message_type      sndrv_seq_ev_is_message_type    
47 #define snd_seq_ev_is_sample_type       sndrv_seq_ev_is_sample_type     
48 #define snd_seq_ev_is_user_type         sndrv_seq_ev_is_user_type       
49 #define snd_seq_ev_is_fixed_type        sndrv_seq_ev_is_fixed_type      
50 #define snd_seq_ev_is_instr_type        sndrv_seq_ev_is_instr_type      
51 #define snd_seq_ev_is_variable_type     sndrv_seq_ev_is_variable_type   
52 #define snd_seq_ev_is_varipc_type       sndrv_seq_ev_is_varipc_type     
53 #define snd_seq_ev_is_reserved          sndrv_seq_ev_is_reserved        
54 #define snd_seq_ev_is_direct            sndrv_seq_ev_is_direct          
55 #define snd_seq_ev_is_prior             sndrv_seq_ev_is_prior           
56 #define snd_seq_ev_length_type          sndrv_seq_ev_length_type        
57 #define snd_seq_ev_is_fixed             sndrv_seq_ev_is_fixed           
58 #define snd_seq_ev_is_variable          sndrv_seq_ev_is_variable        
59 #define snd_seq_ev_is_varusr            sndrv_seq_ev_is_varusr          
60 #define snd_seq_ev_is_varipc            sndrv_seq_ev_is_varipc          
61 #define snd_seq_ev_timestamp_type       sndrv_seq_ev_timestamp_type     
62 #define snd_seq_ev_is_tick              sndrv_seq_ev_is_tick            
63 #define snd_seq_ev_is_real              sndrv_seq_ev_is_real            
64 #define snd_seq_ev_timemode_type        sndrv_seq_ev_timemode_type      
65 #define snd_seq_ev_is_abstime           sndrv_seq_ev_is_abstime         
66 #define snd_seq_ev_is_reltime           sndrv_seq_ev_is_reltime         
67 #define snd_seq_queue_sync_port         sndrv_seq_queue_sync_port       
68 #define snd_seq_queue_owner             sndrv_seq_queue_owner           
69
70 #ifdef SNDRV_SEQ_SYNC_SUPPORT
71 #define SND_SEQ_SYNC_SUPPORT SNDRV_SEQ_SYNC_SUPPORT
72 #endif
73
74 #define SND_SEQ_EVENT_SYSTEM SNDRV_SEQ_EVENT_SYSTEM
75 #define SND_SEQ_EVENT_RESULT SNDRV_SEQ_EVENT_RESULT
76 #define SND_SEQ_EVENT_NOTE SNDRV_SEQ_EVENT_NOTE
77 #define SND_SEQ_EVENT_NOTEON SNDRV_SEQ_EVENT_NOTEON
78 #define SND_SEQ_EVENT_NOTEOFF SNDRV_SEQ_EVENT_NOTEOFF
79 #define SND_SEQ_EVENT_KEYPRESS SNDRV_SEQ_EVENT_KEYPRESS
80 #define SND_SEQ_EVENT_CONTROLLER SNDRV_SEQ_EVENT_CONTROLLER
81 #define SND_SEQ_EVENT_PGMCHANGE SNDRV_SEQ_EVENT_PGMCHANGE
82 #define SND_SEQ_EVENT_CHANPRESS SNDRV_SEQ_EVENT_CHANPRESS
83 #define SND_SEQ_EVENT_PITCHBEND SNDRV_SEQ_EVENT_PITCHBEND
84 #define SND_SEQ_EVENT_CONTROL14 SNDRV_SEQ_EVENT_CONTROL14
85 #define SND_SEQ_EVENT_NONREGPARAM SNDRV_SEQ_EVENT_NONREGPARAM
86 #define SND_SEQ_EVENT_REGPARAM SNDRV_SEQ_EVENT_REGPARAM
87 #define SND_SEQ_EVENT_SONGPOS SNDRV_SEQ_EVENT_SONGPOS
88 #define SND_SEQ_EVENT_SONGSEL SNDRV_SEQ_EVENT_SONGSEL
89 #define SND_SEQ_EVENT_QFRAME SNDRV_SEQ_EVENT_QFRAME
90 #define SND_SEQ_EVENT_TIMESIGN SNDRV_SEQ_EVENT_TIMESIGN
91 #define SND_SEQ_EVENT_KEYSIGN SNDRV_SEQ_EVENT_KEYSIGN
92 #define SND_SEQ_EVENT_START SNDRV_SEQ_EVENT_START
93 #define SND_SEQ_EVENT_CONTINUE SNDRV_SEQ_EVENT_CONTINUE
94 #define SND_SEQ_EVENT_STOP SNDRV_SEQ_EVENT_STOP
95 #define SND_SEQ_EVENT_SETPOS_TICK SNDRV_SEQ_EVENT_SETPOS_TICK
96 #define SND_SEQ_EVENT_SETPOS_TIME SNDRV_SEQ_EVENT_SETPOS_TIME
97 #define SND_SEQ_EVENT_TEMPO SNDRV_SEQ_EVENT_TEMPO
98 #define SND_SEQ_EVENT_CLOCK SNDRV_SEQ_EVENT_CLOCK
99 #define SND_SEQ_EVENT_TICK SNDRV_SEQ_EVENT_TICK
100 #define SND_SEQ_EVENT_SYNC SNDRV_SEQ_EVENT_SYNC
101 #define SND_SEQ_EVENT_SYNC_POS SNDRV_SEQ_EVENT_SYNC_POS
102 #define SND_SEQ_EVENT_TUNE_REQUEST SNDRV_SEQ_EVENT_TUNE_REQUEST
103 #define SND_SEQ_EVENT_RESET SNDRV_SEQ_EVENT_RESET
104 #define SND_SEQ_EVENT_SENSING SNDRV_SEQ_EVENT_SENSING
105 #define SND_SEQ_EVENT_ECHO SNDRV_SEQ_EVENT_ECHO
106 #define SND_SEQ_EVENT_OSS SNDRV_SEQ_EVENT_OSS
107 #define SND_SEQ_EVENT_CLIENT_START SNDRV_SEQ_EVENT_CLIENT_START
108 #define SND_SEQ_EVENT_CLIENT_EXIT SNDRV_SEQ_EVENT_CLIENT_EXIT
109 #define SND_SEQ_EVENT_CLIENT_CHANGE SNDRV_SEQ_EVENT_CLIENT_CHANGE
110 #define SND_SEQ_EVENT_PORT_START SNDRV_SEQ_EVENT_PORT_START
111 #define SND_SEQ_EVENT_PORT_EXIT SNDRV_SEQ_EVENT_PORT_EXIT
112 #define SND_SEQ_EVENT_PORT_CHANGE SNDRV_SEQ_EVENT_PORT_CHANGE
113 #define SND_SEQ_EVENT_PORT_SUBSCRIBED SNDRV_SEQ_EVENT_PORT_SUBSCRIBED
114 #define SND_SEQ_EVENT_PORT_USED SNDRV_SEQ_EVENT_PORT_USED
115 #define SND_SEQ_EVENT_PORT_UNSUBSCRIBED SNDRV_SEQ_EVENT_PORT_UNSUBSCRIBED
116 #define SND_SEQ_EVENT_PORT_UNUSED SNDRV_SEQ_EVENT_PORT_UNUSED
117 #define SND_SEQ_EVENT_SAMPLE SNDRV_SEQ_EVENT_SAMPLE
118 #define SND_SEQ_EVENT_SAMPLE_CLUSTER SNDRV_SEQ_EVENT_SAMPLE_CLUSTER
119 #define SND_SEQ_EVENT_SAMPLE_START SNDRV_SEQ_EVENT_SAMPLE_START
120 #define SND_SEQ_EVENT_SAMPLE_STOP SNDRV_SEQ_EVENT_SAMPLE_STOP
121 #define SND_SEQ_EVENT_SAMPLE_FREQ SNDRV_SEQ_EVENT_SAMPLE_FREQ
122 #define SND_SEQ_EVENT_SAMPLE_VOLUME SNDRV_SEQ_EVENT_SAMPLE_VOLUME
123 #define SND_SEQ_EVENT_SAMPLE_LOOP SNDRV_SEQ_EVENT_SAMPLE_LOOP
124 #define SND_SEQ_EVENT_SAMPLE_POSITION SNDRV_SEQ_EVENT_SAMPLE_POSITION
125 #define SND_SEQ_EVENT_SAMPLE_PRIVATE1 SNDRV_SEQ_EVENT_SAMPLE_PRIVATE1
126 #define SND_SEQ_EVENT_USR0 SNDRV_SEQ_EVENT_USR0
127 #define SND_SEQ_EVENT_USR1 SNDRV_SEQ_EVENT_USR1
128 #define SND_SEQ_EVENT_USR2 SNDRV_SEQ_EVENT_USR2
129 #define SND_SEQ_EVENT_USR3 SNDRV_SEQ_EVENT_USR3
130 #define SND_SEQ_EVENT_USR4 SNDRV_SEQ_EVENT_USR4
131 #define SND_SEQ_EVENT_USR5 SNDRV_SEQ_EVENT_USR5
132 #define SND_SEQ_EVENT_USR6 SNDRV_SEQ_EVENT_USR6
133 #define SND_SEQ_EVENT_USR7 SNDRV_SEQ_EVENT_USR7
134 #define SND_SEQ_EVENT_USR8 SNDRV_SEQ_EVENT_USR8
135 #define SND_SEQ_EVENT_USR9 SNDRV_SEQ_EVENT_USR9
136 #define SND_SEQ_EVENT_INSTR_BEGIN SNDRV_SEQ_EVENT_INSTR_BEGIN
137 #define SND_SEQ_EVENT_INSTR_END SNDRV_SEQ_EVENT_INSTR_END
138 #define SND_SEQ_EVENT_INSTR_INFO SNDRV_SEQ_EVENT_INSTR_INFO
139 #define SND_SEQ_EVENT_INSTR_INFO_RESULT SNDRV_SEQ_EVENT_INSTR_INFO_RESULT
140 #define SND_SEQ_EVENT_INSTR_FINFO SNDRV_SEQ_EVENT_INSTR_FINFO
141 #define SND_SEQ_EVENT_INSTR_FINFO_RESULT SNDRV_SEQ_EVENT_INSTR_FINFO_RESULT
142 #define SND_SEQ_EVENT_INSTR_RESET SNDRV_SEQ_EVENT_INSTR_RESET
143 #define SND_SEQ_EVENT_INSTR_STATUS SNDRV_SEQ_EVENT_INSTR_STATUS
144 #define SND_SEQ_EVENT_INSTR_STATUS_RESULT SNDRV_SEQ_EVENT_INSTR_STATUS_RESULT
145 #define SND_SEQ_EVENT_INSTR_PUT SNDRV_SEQ_EVENT_INSTR_PUT
146 #define SND_SEQ_EVENT_INSTR_GET SNDRV_SEQ_EVENT_INSTR_GET
147 #define SND_SEQ_EVENT_INSTR_GET_RESULT SNDRV_SEQ_EVENT_INSTR_GET_RESULT
148 #define SND_SEQ_EVENT_INSTR_FREE SNDRV_SEQ_EVENT_INSTR_FREE
149 #define SND_SEQ_EVENT_INSTR_LIST SNDRV_SEQ_EVENT_INSTR_LIST
150 #define SND_SEQ_EVENT_INSTR_LIST_RESULT SNDRV_SEQ_EVENT_INSTR_LIST_RESULT
151 #define SND_SEQ_EVENT_INSTR_CLUSTER SNDRV_SEQ_EVENT_INSTR_CLUSTER
152 #define SND_SEQ_EVENT_INSTR_CLUSTER_GET SNDRV_SEQ_EVENT_INSTR_CLUSTER_GET
153 #define SND_SEQ_EVENT_INSTR_CLUSTER_RESULT SNDRV_SEQ_EVENT_INSTR_CLUSTER_RESULT
154 #define SND_SEQ_EVENT_INSTR_CHANGE SNDRV_SEQ_EVENT_INSTR_CHANGE
155 #define SND_SEQ_EVENT_LENGTH_VARIABLE SNDRV_SEQ_EVENT_LENGTH_VARIABLE
156 #define SND_SEQ_EVENT_SYSEX SNDRV_SEQ_EVENT_SYSEX
157 #define SND_SEQ_EVENT_BOUNCE SNDRV_SEQ_EVENT_BOUNCE
158 #define SND_SEQ_EVENT_USR_VAR0 SNDRV_SEQ_EVENT_USR_VAR0
159 #define SND_SEQ_EVENT_USR_VAR1 SNDRV_SEQ_EVENT_USR_VAR1
160 #define SND_SEQ_EVENT_USR_VAR2 SNDRV_SEQ_EVENT_USR_VAR2
161 #define SND_SEQ_EVENT_USR_VAR3 SNDRV_SEQ_EVENT_USR_VAR3
162 #define SND_SEQ_EVENT_USR_VAR4 SNDRV_SEQ_EVENT_USR_VAR4
163 #define SND_SEQ_EVENT_LENGTH_VARIPC SNDRV_SEQ_EVENT_LENGTH_VARIPC
164 #define SND_SEQ_EVENT_IPCSHM SNDRV_SEQ_EVENT_IPCSHM
165 #define SND_SEQ_EVENT_USR_VARIPC0 SNDRV_SEQ_EVENT_USR_VARIPC0
166 #define SND_SEQ_EVENT_USR_VARIPC1 SNDRV_SEQ_EVENT_USR_VARIPC1
167 #define SND_SEQ_EVENT_USR_VARIPC2 SNDRV_SEQ_EVENT_USR_VARIPC2
168 #define SND_SEQ_EVENT_USR_VARIPC3 SNDRV_SEQ_EVENT_USR_VARIPC3
169 #define SND_SEQ_EVENT_USR_VARIPC4 SNDRV_SEQ_EVENT_USR_VARIPC4
170 #define SND_SEQ_EVENT_KERNEL_ERROR SNDRV_SEQ_EVENT_KERNEL_ERROR
171 #define SND_SEQ_EVENT_KERNEL_QUOTE SNDRV_SEQ_EVENT_KERNEL_QUOTE
172 #define SND_SEQ_EVENT_NONE SNDRV_SEQ_EVENT_NONE
173 #define SND_SEQ_ADDRESS_UNKNOWN SNDRV_SEQ_ADDRESS_UNKNOWN
174 #define SND_SEQ_ADDRESS_SUBSCRIBERS SNDRV_SEQ_ADDRESS_SUBSCRIBERS
175 #define SND_SEQ_ADDRESS_BROADCAST SNDRV_SEQ_ADDRESS_BROADCAST
176 #define SND_SEQ_QUEUE_DIRECT SNDRV_SEQ_QUEUE_DIRECT
177 #define SND_SEQ_TIME_STAMP_TICK SNDRV_SEQ_TIME_STAMP_TICK
178 #define SND_SEQ_TIME_STAMP_REAL SNDRV_SEQ_TIME_STAMP_REAL
179 #define SND_SEQ_TIME_STAMP_MASK SNDRV_SEQ_TIME_STAMP_MASK
180 #define SND_SEQ_TIME_MODE_ABS SNDRV_SEQ_TIME_MODE_ABS
181 #define SND_SEQ_TIME_MODE_REL SNDRV_SEQ_TIME_MODE_REL
182 #define SND_SEQ_TIME_MODE_MASK SNDRV_SEQ_TIME_MODE_MASK
183 #define SND_SEQ_EVENT_LENGTH_FIXED SNDRV_SEQ_EVENT_LENGTH_FIXED
184 #define SND_SEQ_EVENT_LENGTH_VARIABLE SNDRV_SEQ_EVENT_LENGTH_VARIABLE
185 #define SND_SEQ_EVENT_LENGTH_VARUSR SNDRV_SEQ_EVENT_LENGTH_VARUSR
186 #define SND_SEQ_EVENT_LENGTH_VARIPC SNDRV_SEQ_EVENT_LENGTH_VARIPC
187 #define SND_SEQ_EVENT_LENGTH_MASK SNDRV_SEQ_EVENT_LENGTH_MASK
188 #define SND_SEQ_PRIORITY_NORMAL SNDRV_SEQ_PRIORITY_NORMAL
189 #define SND_SEQ_PRIORITY_HIGH SNDRV_SEQ_PRIORITY_HIGH
190 #define SND_SEQ_PRIORITY_MASK SNDRV_SEQ_PRIORITY_MASK
191 #define SND_SEQ_EVENT_NOTE SNDRV_SEQ_EVENT_NOTE
192 #define SND_SEQ_EVENT_NOTE SNDRV_SEQ_EVENT_NOTE
193 #define SND_SEQ_QUEUE_DIRECT SNDRV_SEQ_QUEUE_DIRECT
194 #define SND_SEQ_PRIORITY_MASK SNDRV_SEQ_PRIORITY_MASK
195 #define SND_SEQ_EVENT_LENGTH_MASK SNDRV_SEQ_EVENT_LENGTH_MASK
196 #define SND_SEQ_EVENT_LENGTH_FIXED SNDRV_SEQ_EVENT_LENGTH_FIXED
197 #define SND_SEQ_EVENT_LENGTH_VARIABLE SNDRV_SEQ_EVENT_LENGTH_VARIABLE
198 #define SND_SEQ_EVENT_LENGTH_VARUSR SNDRV_SEQ_EVENT_LENGTH_VARUSR
199 #define SND_SEQ_EVENT_LENGTH_VARIPC SNDRV_SEQ_EVENT_LENGTH_VARIPC
200 #define SND_SEQ_TIME_STAMP_MASK SNDRV_SEQ_TIME_STAMP_MASK
201 #define SND_SEQ_TIME_STAMP_TICK SNDRV_SEQ_TIME_STAMP_TICK
202 #define SND_SEQ_TIME_STAMP_REAL SNDRV_SEQ_TIME_STAMP_REAL
203 #define SND_SEQ_TIME_MODE_MASK SNDRV_SEQ_TIME_MODE_MASK
204 #define SND_SEQ_TIME_MODE_ABS SNDRV_SEQ_TIME_MODE_ABS
205 #define SND_SEQ_TIME_MODE_REL SNDRV_SEQ_TIME_MODE_REL
206 #define SND_SEQ_CLIENT_SYSTEM SNDRV_SEQ_CLIENT_SYSTEM
207 #define SND_SEQ_CLIENT_DUMMY SNDRV_SEQ_CLIENT_DUMMY
208 #define SND_SEQ_CLIENT_OSS SNDRV_SEQ_CLIENT_OSS
209 #define SND_SEQ_FILTER_BROADCAST SNDRV_SEQ_FILTER_BROADCAST
210 #define SND_SEQ_FILTER_MULTICAST SNDRV_SEQ_FILTER_MULTICAST
211 #define SND_SEQ_FILTER_BOUNCE SNDRV_SEQ_FILTER_BOUNCE
212 #define SND_SEQ_FILTER_USE_EVENT SNDRV_SEQ_FILTER_USE_EVENT
213 #define SND_SEQ_REMOVE_DEST SNDRV_SEQ_REMOVE_DEST
214 #define SND_SEQ_REMOVE_DEST_CHANNEL SNDRV_SEQ_REMOVE_DEST_CHANNEL
215 #define SND_SEQ_REMOVE_TIME_BEFORE SNDRV_SEQ_REMOVE_TIME_BEFORE
216 #define SND_SEQ_REMOVE_TIME_AFTER SNDRV_SEQ_REMOVE_TIME_AFTER
217 #define SND_SEQ_REMOVE_EVENT_TYPE SNDRV_SEQ_REMOVE_EVENT_TYPE
218 #define SND_SEQ_REMOVE_IGNORE_OFF SNDRV_SEQ_REMOVE_IGNORE_OFF
219 #define SND_SEQ_REMOVE_TAG_MATCH SNDRV_SEQ_REMOVE_TAG_MATCH
220 #define SND_SEQ_PORT_SYSTEM_TIMER SNDRV_SEQ_PORT_SYSTEM_TIMER
221 #define SND_SEQ_PORT_SYSTEM_ANNOUNCE SNDRV_SEQ_PORT_SYSTEM_ANNOUNCE
222 #define SND_SEQ_PORT_CAP_READ SNDRV_SEQ_PORT_CAP_READ
223 #define SND_SEQ_PORT_CAP_WRITE SNDRV_SEQ_PORT_CAP_WRITE
224 #define SND_SEQ_PORT_CAP_SYNC_READ SNDRV_SEQ_PORT_CAP_SYNC_READ
225 #define SND_SEQ_PORT_CAP_SYNC_WRITE SNDRV_SEQ_PORT_CAP_SYNC_WRITE
226 #define SND_SEQ_PORT_CAP_DUPLEX SNDRV_SEQ_PORT_CAP_DUPLEX
227 #define SND_SEQ_PORT_CAP_SUBS_READ SNDRV_SEQ_PORT_CAP_SUBS_READ
228 #define SND_SEQ_PORT_CAP_SUBS_WRITE SNDRV_SEQ_PORT_CAP_SUBS_WRITE
229 #define SND_SEQ_PORT_CAP_NO_EXPORT SNDRV_SEQ_PORT_CAP_NO_EXPORT
230 #define SND_SEQ_PORT_TYPE_SPECIFIC SNDRV_SEQ_PORT_TYPE_SPECIFIC
231 #define SND_SEQ_PORT_TYPE_MIDI_GENERIC SNDRV_SEQ_PORT_TYPE_MIDI_GENERIC
232 #define SND_SEQ_PORT_TYPE_MIDI_GM SNDRV_SEQ_PORT_TYPE_MIDI_GM
233 #define SND_SEQ_PORT_TYPE_MIDI_GS SNDRV_SEQ_PORT_TYPE_MIDI_GS
234 #define SND_SEQ_PORT_TYPE_MIDI_XG SNDRV_SEQ_PORT_TYPE_MIDI_XG
235 #define SND_SEQ_PORT_TYPE_MIDI_MT32 SNDRV_SEQ_PORT_TYPE_MIDI_MT32
236 #define SND_SEQ_PORT_TYPE_SYNTH SNDRV_SEQ_PORT_TYPE_SYNTH
237 #define SND_SEQ_PORT_TYPE_DIRECT_SAMPLE SNDRV_SEQ_PORT_TYPE_DIRECT_SAMPLE
238 #define SND_SEQ_PORT_TYPE_SAMPLE SNDRV_SEQ_PORT_TYPE_SAMPLE
239 #define SND_SEQ_PORT_TYPE_APPLICATION SNDRV_SEQ_PORT_TYPE_APPLICATION
240 #define SND_SEQ_GROUP_SYSTEM SNDRV_SEQ_GROUP_SYSTEM
241 #define SND_SEQ_GROUP_DEVICE SNDRV_SEQ_GROUP_DEVICE
242 #define SND_SEQ_GROUP_APPLICATION SNDRV_SEQ_GROUP_APPLICATION
243 #define SND_SEQ_PORT_FLG_GIVEN_PORT SNDRV_SEQ_PORT_FLG_GIVEN_PORT
244 #define SND_SEQ_QUEUE_FLG_SYNC SNDRV_SEQ_QUEUE_FLG_SYNC
245 #define SND_SEQ_QUEUE_FLG_SYNC_LOST SNDRV_SEQ_QUEUE_FLG_SYNC_LOST
246 #define SND_SEQ_SYNC_TICK SNDRV_SEQ_SYNC_TICK
247 #define SND_SEQ_SYNC_TIME SNDRV_SEQ_SYNC_TIME
248 #define SND_SEQ_SYNC_MODE SNDRV_SEQ_SYNC_MODE
249 #define SND_SEQ_SYNC_FMT_PRIVATE_CLOCK SNDRV_SEQ_SYNC_FMT_PRIVATE_CLOCK
250 #define SND_SEQ_SYNC_FMT_PRIVATE_TIME SNDRV_SEQ_SYNC_FMT_PRIVATE_TIME
251 #define SND_SEQ_SYNC_FMT_MIDI_CLOCK SNDRV_SEQ_SYNC_FMT_MIDI_CLOCK
252 #define SND_SEQ_SYNC_FMT_MTC SNDRV_SEQ_SYNC_FMT_MTC
253 #define SND_SEQ_SYNC_FMT_DTL SNDRV_SEQ_SYNC_FMT_DTL
254 #define SND_SEQ_SYNC_FMT_SMPTE SNDRV_SEQ_SYNC_FMT_SMPTE
255 #define SND_SEQ_SYNC_FMT_MIDI_TICK SNDRV_SEQ_SYNC_FMT_MIDI_TICK
256 #define SND_SEQ_SYNC_FPS_24 SNDRV_SEQ_SYNC_FPS_24
257 #define SND_SEQ_SYNC_FPS_25 SNDRV_SEQ_SYNC_FPS_25
258 #define SND_SEQ_SYNC_FPS_30_DP SNDRV_SEQ_SYNC_FPS_30_DP
259 #define SND_SEQ_SYNC_FPS_30_NDP SNDRV_SEQ_SYNC_FPS_30_NDP
260 #define SND_SEQ_TIMER_ALSA SNDRV_SEQ_TIMER_ALSA
261 #define SND_SEQ_TIMER_MIDI_CLOCK SNDRV_SEQ_TIMER_MIDI_CLOCK
262 #define SND_SEQ_TIMER_MIDI_TICK SNDRV_SEQ_TIMER_MIDI_TICK
263 #define SND_SEQ_QUERY_SUBS_READ SNDRV_SEQ_QUERY_SUBS_READ
264 #define SND_SEQ_QUERY_SUBS_WRITE SNDRV_SEQ_QUERY_SUBS_WRITE
265 #define SND_SEQ_INSTR_ATYPE_DATA SNDRV_SEQ_INSTR_ATYPE_DATA
266 #define SND_SEQ_INSTR_ATYPE_ALIAS SNDRV_SEQ_INSTR_ATYPE_ALIAS
267 #define SND_SEQ_INSTR_ID_DLS1 SNDRV_SEQ_INSTR_ID_DLS1
268 #define SND_SEQ_INSTR_ID_DLS2 SNDRV_SEQ_INSTR_ID_DLS2
269 #define SND_SEQ_INSTR_ID_SIMPLE SNDRV_SEQ_INSTR_ID_SIMPLE
270 #define SND_SEQ_INSTR_ID_SOUNDFONT SNDRV_SEQ_INSTR_ID_SOUNDFONT
271 #define SND_SEQ_INSTR_ID_GUS_PATCH SNDRV_SEQ_INSTR_ID_GUS_PATCH
272 #define SND_SEQ_INSTR_ID_INTERWAVE SNDRV_SEQ_INSTR_ID_INTERWAVE
273 #define SND_SEQ_INSTR_ID_OPL2_3 SNDRV_SEQ_INSTR_ID_OPL2_3
274 #define SND_SEQ_INSTR_ID_OPL4 SNDRV_SEQ_INSTR_ID_OPL4
275 #define SND_SEQ_INSTR_TYPE0_DLS1 SNDRV_SEQ_INSTR_TYPE0_DLS1
276 #define SND_SEQ_INSTR_TYPE0_DLS2 SNDRV_SEQ_INSTR_TYPE0_DLS2
277 #define SND_SEQ_INSTR_TYPE1_SIMPLE SNDRV_SEQ_INSTR_TYPE1_SIMPLE
278 #define SND_SEQ_INSTR_TYPE1_SOUNDFONT SNDRV_SEQ_INSTR_TYPE1_SOUNDFONT
279 #define SND_SEQ_INSTR_TYPE1_GUS_PATCH SNDRV_SEQ_INSTR_TYPE1_GUS_PATCH
280 #define SND_SEQ_INSTR_TYPE1_INTERWAVE SNDRV_SEQ_INSTR_TYPE1_INTERWAVE
281 #define SND_SEQ_INSTR_TYPE2_OPL2_3 SNDRV_SEQ_INSTR_TYPE2_OPL2_3
282 #define SND_SEQ_INSTR_TYPE2_OPL4 SNDRV_SEQ_INSTR_TYPE2_OPL4
283 #define SND_SEQ_INSTR_PUT_CMD_CREATE SNDRV_SEQ_INSTR_PUT_CMD_CREATE
284 #define SND_SEQ_INSTR_PUT_CMD_REPLACE SNDRV_SEQ_INSTR_PUT_CMD_REPLACE
285 #define SND_SEQ_INSTR_PUT_CMD_MODIFY SNDRV_SEQ_INSTR_PUT_CMD_MODIFY
286 #define SND_SEQ_INSTR_PUT_CMD_ADD SNDRV_SEQ_INSTR_PUT_CMD_ADD
287 #define SND_SEQ_INSTR_PUT_CMD_REMOVE SNDRV_SEQ_INSTR_PUT_CMD_REMOVE
288 #define SND_SEQ_INSTR_GET_CMD_FULL SNDRV_SEQ_INSTR_GET_CMD_FULL
289 #define SND_SEQ_INSTR_GET_CMD_PARTIAL SNDRV_SEQ_INSTR_GET_CMD_PARTIAL
290 #define SND_SEQ_INSTR_QUERY_FOLLOW_ALIAS SNDRV_SEQ_INSTR_QUERY_FOLLOW_ALIAS
291 #define SND_SEQ_INSTR_FREE_CMD_ALL SNDRV_SEQ_INSTR_FREE_CMD_ALL
292 #define SND_SEQ_INSTR_FREE_CMD_PRIVATE SNDRV_SEQ_INSTR_FREE_CMD_PRIVATE
293 #define SND_SEQ_INSTR_FREE_CMD_CLUSTER SNDRV_SEQ_INSTR_FREE_CMD_CLUSTER
294 #define SND_SEQ_INSTR_FREE_CMD_SINGLE SNDRV_SEQ_INSTR_FREE_CMD_SINGLE
295
296
297 #define SND_SEQ_OPEN_OUTPUT     1
298 #define SND_SEQ_OPEN_INPUT      2
299 #define SND_SEQ_OPEN_DUPLEX     (SND_SEQ_OPEN_OUTPUT|SND_SEQ_OPEN_INPUT)
300
301 #define SND_SEQ_NONBLOCK        1
302
303 typedef enum _snd_seq_type {
304         SND_SEQ_TYPE_HW,
305         SND_SEQ_TYPE_SHM,
306         SND_SEQ_TYPE_INET,
307 } snd_seq_type_t;
308
309 /** Sequencer handle */
310 typedef struct _snd_seq snd_seq_t;
311
312 #ifdef __cplusplus
313 extern "C" {
314 #endif
315
316 int snd_seq_open(snd_seq_t **handle, const char *name, int streams, int mode);
317 int snd_seq_close(snd_seq_t *handle);
318 int snd_seq_poll_descriptors_count(snd_seq_t *handle, short events);
319 int snd_seq_poll_descriptors(snd_seq_t *handle, struct pollfd *pfds, unsigned int space, short events);
320 int snd_seq_nonblock(snd_seq_t *handle, int nonblock);
321 int snd_seq_client_id(snd_seq_t *handle);
322 int snd_seq_output_buffer_size(snd_seq_t *handle);
323 int snd_seq_input_buffer_size(snd_seq_t *handle);
324 int snd_seq_resize_output_buffer(snd_seq_t *handle, size_t size);
325 int snd_seq_resize_input_buffer(snd_seq_t *handle, size_t size);
326 int snd_seq_system_info(snd_seq_t *handle, snd_seq_system_info_t *info);
327 int snd_seq_get_client_info(snd_seq_t *handle, snd_seq_client_info_t *info);
328 int snd_seq_get_any_client_info(snd_seq_t *handle, int client, snd_seq_client_info_t *info);
329 int snd_seq_set_client_info(snd_seq_t *handle, snd_seq_client_info_t *info);
330 int snd_seq_create_port(snd_seq_t *handle, snd_seq_port_info_t *info);
331 int snd_seq_delete_port(snd_seq_t *handle, snd_seq_port_info_t *info);
332 int snd_seq_get_port_info(snd_seq_t *handle, int port, snd_seq_port_info_t *info);
333 int snd_seq_get_any_port_info(snd_seq_t *handle, int client, int port, snd_seq_port_info_t *info);
334 int snd_seq_set_port_info(snd_seq_t *handle, int port, snd_seq_port_info_t *info);
335 int snd_seq_get_port_subscription(snd_seq_t *handle, snd_seq_port_subscribe_t *sub);
336 int snd_seq_subscribe_port(snd_seq_t *handle, snd_seq_port_subscribe_t *sub);
337 int snd_seq_unsubscribe_port(snd_seq_t *handle, snd_seq_port_subscribe_t *sub);
338 int snd_seq_query_port_subscribers(snd_seq_t *seq, snd_seq_query_subs_t * subs);
339 int snd_seq_get_queue_status(snd_seq_t *handle, int q, snd_seq_queue_status_t *status);
340 int snd_seq_get_queue_tempo(snd_seq_t *handle, int q, snd_seq_queue_tempo_t *tempo);
341 int snd_seq_set_queue_tempo(snd_seq_t *handle, int q, snd_seq_queue_tempo_t *tempo);
342 int snd_seq_get_queue_owner(snd_seq_t *handle, int q, snd_seq_queue_owner_t *owner);
343 int snd_seq_set_queue_owner(snd_seq_t *handle, int q, snd_seq_queue_owner_t *owner);
344 int snd_seq_get_queue_timer(snd_seq_t *handle, int q, snd_seq_queue_timer_t *timer);
345 int snd_seq_set_queue_timer(snd_seq_t *handle, int q, snd_seq_queue_timer_t *timer);
346 int snd_seq_get_queue_client(snd_seq_t *handle, int q, snd_seq_queue_client_t *queue);
347 int snd_seq_set_queue_client(snd_seq_t *handle, int q, snd_seq_queue_client_t *queue);
348 int snd_seq_create_queue(snd_seq_t *seq, snd_seq_queue_info_t *info);
349 int snd_seq_alloc_named_queue(snd_seq_t *seq, const char *name);
350 int snd_seq_alloc_queue(snd_seq_t *handle);
351 #ifdef SND_SEQ_SYNC_SUPPORT
352 int snd_seq_alloc_sync_queue(snd_seq_t *seq, const char *name);
353 #endif
354 int snd_seq_free_queue(snd_seq_t *handle, int q);
355 int snd_seq_get_queue_info(snd_seq_t *seq, int q, snd_seq_queue_info_t *info);
356 int snd_seq_set_queue_info(snd_seq_t *seq, int q, snd_seq_queue_info_t *info);
357 int snd_seq_get_named_queue(snd_seq_t *seq, const char *name);
358 int snd_seq_get_client_pool(snd_seq_t *handle, snd_seq_client_pool_t * info);
359 int snd_seq_set_client_pool(snd_seq_t *handle, snd_seq_client_pool_t * info);
360 int snd_seq_query_next_client(snd_seq_t *handle, snd_seq_client_info_t * info);
361 int snd_seq_query_next_port(snd_seq_t *handle, snd_seq_port_info_t * info);
362 #ifdef SND_SEQ_SYNC_SUPPORT
363 int snd_seq_add_sync_master(snd_seq_t *seq, int queue, snd_seq_addr_t *dest, snd_seq_queue_sync_t *info);
364 int snd_seq_remove_sync_master(snd_seq_t *seq, int queue, snd_seq_addr_t *dest);
365 int snd_seq_add_sync_std_master(snd_seq_t *seq, int queue, snd_seq_addr_t *dest, int format, int time_format, unsigned char *opt_info);
366 #define snd_seq_add_sync_master_clock(seq,q,dest) snd_seq_add_sync_std_master(seq, q, dest, SND_SEQ_SYNC_FMT_MIDI_CLOCK, 0, 0)
367 #define snd_seq_add_sync_master_mtc(seq,q,dest,tfmt) snd_seq_add_sync_std_master(seq, q, dest, SND_SEQ_SYNC_FMT_MTC, tfmt, 0)
368
369 int snd_seq_set_sync_slave(snd_seq_t *seq, int queue, snd_seq_addr_t *src, snd_seq_queue_sync_t *info);
370 int snd_seq_reset_sync_slave(snd_seq_t *seq, int queue, snd_seq_addr_t *src);
371 const char *snd_seq_name(snd_seq_t *seq);
372 snd_seq_type_t snd_seq_type(snd_seq_t *seq);
373
374 #endif
375
376 /* event routines */
377 snd_seq_event_t *snd_seq_create_event(void);
378 int snd_seq_free_event(snd_seq_event_t *ev);
379 ssize_t snd_seq_event_length(snd_seq_event_t *ev);
380 int snd_seq_event_output(snd_seq_t *handle, snd_seq_event_t *ev);
381 int snd_seq_event_output(snd_seq_t *handle, snd_seq_event_t *ev);
382 int snd_seq_event_output_buffer(snd_seq_t *handle, snd_seq_event_t *ev);
383 int snd_seq_event_output_direct(snd_seq_t *handle, snd_seq_event_t *ev);
384 int snd_seq_event_input(snd_seq_t *handle, snd_seq_event_t **ev);
385 int snd_seq_event_input_pending(snd_seq_t *seq, int fetch_sequencer);
386 int snd_seq_drain_output(snd_seq_t *handle);
387 int snd_seq_event_output_pending(snd_seq_t *seq);
388 int snd_seq_extract_output(snd_seq_t *handle, snd_seq_event_t **ev);
389 int snd_seq_drop_output(snd_seq_t *handle);
390 int snd_seq_drop_output_buffer(snd_seq_t *handle);
391 int snd_seq_drop_input(snd_seq_t *handle);
392 int snd_seq_drop_input_buffer(snd_seq_t *handle);
393 int snd_seq_remove_events(snd_seq_t *handle, snd_seq_remove_events_t *info);
394 /* misc */
395 void snd_seq_set_bit(int nr, void *array);
396 int snd_seq_change_bit(int nr, void *array);
397 int snd_seq_get_bit(int nr, void *array);
398
399 #ifdef __cplusplus
400 }
401 #endif
402