Blame view
include/sound/asequencer.h
24.2 KB
1da177e4c Linux-2.6.12-rc2 |
1 2 3 |
/* * Main header file for the ALSA sequencer * Copyright (c) 1998-1999 by Frank van de Pol <fvdpol@coil.demon.nl> |
c1017a4cd [ALSA] Changed Ja... |
4 |
* (c) 1998-1999 by Jaroslav Kysela <perex@perex.cz> |
1da177e4c Linux-2.6.12-rc2 |
5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
* * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * */ #ifndef __SOUND_ASEQUENCER_H #define __SOUND_ASEQUENCER_H |
6560c349c [ALSA] Clean up i... |
24 |
#ifdef __KERNEL__ |
1da177e4c Linux-2.6.12-rc2 |
25 |
#include <linux/ioctl.h> |
1da177e4c Linux-2.6.12-rc2 |
26 |
#include <sound/asound.h> |
6560c349c [ALSA] Clean up i... |
27 |
#endif |
1da177e4c Linux-2.6.12-rc2 |
28 29 30 31 32 33 34 35 36 |
/** version of the sequencer */ #define SNDRV_SEQ_VERSION SNDRV_PROTOCOL_VERSION (1, 0, 1) /** * definition of sequencer event types */ /** system messages |
c7e0b5bf9 [ALSA] Remove xxx... |
37 |
* event data type = #snd_seq_result |
1da177e4c Linux-2.6.12-rc2 |
38 39 40 41 42 |
*/ #define SNDRV_SEQ_EVENT_SYSTEM 0 #define SNDRV_SEQ_EVENT_RESULT 1 /** note messages (channel specific) |
c7e0b5bf9 [ALSA] Remove xxx... |
43 |
* event data type = #snd_seq_ev_note |
1da177e4c Linux-2.6.12-rc2 |
44 45 46 47 48 49 50 |
*/ #define SNDRV_SEQ_EVENT_NOTE 5 #define SNDRV_SEQ_EVENT_NOTEON 6 #define SNDRV_SEQ_EVENT_NOTEOFF 7 #define SNDRV_SEQ_EVENT_KEYPRESS 8 /** control messages (channel specific) |
c7e0b5bf9 [ALSA] Remove xxx... |
51 |
* event data type = #snd_seq_ev_ctrl |
1da177e4c Linux-2.6.12-rc2 |
52 53 54 55 56 57 58 59 60 61 |
*/ #define SNDRV_SEQ_EVENT_CONTROLLER 10 #define SNDRV_SEQ_EVENT_PGMCHANGE 11 #define SNDRV_SEQ_EVENT_CHANPRESS 12 #define SNDRV_SEQ_EVENT_PITCHBEND 13 /**< from -8192 to 8191 */ #define SNDRV_SEQ_EVENT_CONTROL14 14 /**< 14 bit controller value */ #define SNDRV_SEQ_EVENT_NONREGPARAM 15 /**< 14 bit NRPN address + 14 bit unsigned value */ #define SNDRV_SEQ_EVENT_REGPARAM 16 /**< 14 bit RPN address + 14 bit unsigned value */ /** synchronisation messages |
c7e0b5bf9 [ALSA] Remove xxx... |
62 |
* event data type = #snd_seq_ev_ctrl |
1da177e4c Linux-2.6.12-rc2 |
63 64 65 66 67 68 69 70 |
*/ #define SNDRV_SEQ_EVENT_SONGPOS 20 /* Song Position Pointer with LSB and MSB values */ #define SNDRV_SEQ_EVENT_SONGSEL 21 /* Song Select with song ID number */ #define SNDRV_SEQ_EVENT_QFRAME 22 /* midi time code quarter frame */ #define SNDRV_SEQ_EVENT_TIMESIGN 23 /* SMF Time Signature event */ #define SNDRV_SEQ_EVENT_KEYSIGN 24 /* SMF Key Signature event */ /** timer messages |
c7e0b5bf9 [ALSA] Remove xxx... |
71 |
* event data type = snd_seq_ev_queue_control |
1da177e4c Linux-2.6.12-rc2 |
72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 |
*/ #define SNDRV_SEQ_EVENT_START 30 /* midi Real Time Start message */ #define SNDRV_SEQ_EVENT_CONTINUE 31 /* midi Real Time Continue message */ #define SNDRV_SEQ_EVENT_STOP 32 /* midi Real Time Stop message */ #define SNDRV_SEQ_EVENT_SETPOS_TICK 33 /* set tick queue position */ #define SNDRV_SEQ_EVENT_SETPOS_TIME 34 /* set realtime queue position */ #define SNDRV_SEQ_EVENT_TEMPO 35 /* (SMF) Tempo event */ #define SNDRV_SEQ_EVENT_CLOCK 36 /* midi Real Time Clock message */ #define SNDRV_SEQ_EVENT_TICK 37 /* midi Real Time Tick message */ #define SNDRV_SEQ_EVENT_QUEUE_SKEW 38 /* skew queue tempo */ /** others * event data type = none */ #define SNDRV_SEQ_EVENT_TUNE_REQUEST 40 /* tune request */ #define SNDRV_SEQ_EVENT_RESET 41 /* reset to power-on state */ #define SNDRV_SEQ_EVENT_SENSING 42 /* "active sensing" event */ /** echo back, kernel private messages * event data type = any type */ #define SNDRV_SEQ_EVENT_ECHO 50 /* echo event */ #define SNDRV_SEQ_EVENT_OSS 51 /* OSS raw event */ /** system status messages (broadcast for subscribers) |
c7e0b5bf9 [ALSA] Remove xxx... |
97 |
* event data type = snd_seq_addr |
1da177e4c Linux-2.6.12-rc2 |
98 99 100 101 102 103 104 105 106 |
*/ #define SNDRV_SEQ_EVENT_CLIENT_START 60 /* new client has connected */ #define SNDRV_SEQ_EVENT_CLIENT_EXIT 61 /* client has left the system */ #define SNDRV_SEQ_EVENT_CLIENT_CHANGE 62 /* client status/info has changed */ #define SNDRV_SEQ_EVENT_PORT_START 63 /* new port was created */ #define SNDRV_SEQ_EVENT_PORT_EXIT 64 /* port was deleted from system */ #define SNDRV_SEQ_EVENT_PORT_CHANGE 65 /* port status/info has changed */ /** port connection changes |
c7e0b5bf9 [ALSA] Remove xxx... |
107 |
* event data type = snd_seq_connect |
1da177e4c Linux-2.6.12-rc2 |
108 109 110 |
*/ #define SNDRV_SEQ_EVENT_PORT_SUBSCRIBED 66 /* ports connected */ #define SNDRV_SEQ_EVENT_PORT_UNSUBSCRIBED 67 /* ports disconnected */ |
e5723b41a [ALSA] Remove seq... |
111 |
/* 70-89: synthesizer events - obsoleted */ |
1da177e4c Linux-2.6.12-rc2 |
112 113 114 115 116 117 118 119 120 121 122 123 124 125 |
/** user-defined events with fixed length * event data type = any */ #define SNDRV_SEQ_EVENT_USR0 90 #define SNDRV_SEQ_EVENT_USR1 91 #define SNDRV_SEQ_EVENT_USR2 92 #define SNDRV_SEQ_EVENT_USR3 93 #define SNDRV_SEQ_EVENT_USR4 94 #define SNDRV_SEQ_EVENT_USR5 95 #define SNDRV_SEQ_EVENT_USR6 96 #define SNDRV_SEQ_EVENT_USR7 97 #define SNDRV_SEQ_EVENT_USR8 98 #define SNDRV_SEQ_EVENT_USR9 99 |
e5723b41a [ALSA] Remove seq... |
126 |
/* 100-118: instrument layer - obsoleted */ |
1da177e4c Linux-2.6.12-rc2 |
127 128 129 |
/* 119-129: reserved */ /* 130-139: variable length events |
c7e0b5bf9 [ALSA] Remove xxx... |
130 |
* event data type = snd_seq_ev_ext |
1da177e4c Linux-2.6.12-rc2 |
131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 |
* (SNDRV_SEQ_EVENT_LENGTH_VARIABLE must be set) */ #define SNDRV_SEQ_EVENT_SYSEX 130 /* system exclusive data (variable length) */ #define SNDRV_SEQ_EVENT_BOUNCE 131 /* error event */ /* 132-134: reserved */ #define SNDRV_SEQ_EVENT_USR_VAR0 135 #define SNDRV_SEQ_EVENT_USR_VAR1 136 #define SNDRV_SEQ_EVENT_USR_VAR2 137 #define SNDRV_SEQ_EVENT_USR_VAR3 138 #define SNDRV_SEQ_EVENT_USR_VAR4 139 /* 150-151: kernel events with quote - DO NOT use in user clients */ #define SNDRV_SEQ_EVENT_KERNEL_ERROR 150 #define SNDRV_SEQ_EVENT_KERNEL_QUOTE 151 /* obsolete */ /* 152-191: reserved */ /* 192-254: hardware specific events */ /* 255: special event */ #define SNDRV_SEQ_EVENT_NONE 255 |
c7e0b5bf9 [ALSA] Remove xxx... |
152 |
typedef unsigned char snd_seq_event_type_t; |
1da177e4c Linux-2.6.12-rc2 |
153 154 |
/** event address */ |
c7e0b5bf9 [ALSA] Remove xxx... |
155 |
struct snd_seq_addr { |
1da177e4c Linux-2.6.12-rc2 |
156 157 158 159 160 |
unsigned char client; /**< Client number: 0..255, 255 = broadcast to all clients */ unsigned char port; /**< Port within client: 0..255, 255 = broadcast to all ports */ }; /** port connection */ |
c7e0b5bf9 [ALSA] Remove xxx... |
161 162 163 |
struct snd_seq_connect { struct snd_seq_addr sender; struct snd_seq_addr dest; |
1da177e4c Linux-2.6.12-rc2 |
164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 |
}; #define SNDRV_SEQ_ADDRESS_UNKNOWN 253 /* unknown source */ #define SNDRV_SEQ_ADDRESS_SUBSCRIBERS 254 /* send event to all subscribed ports */ #define SNDRV_SEQ_ADDRESS_BROADCAST 255 /* send event to all queues/clients/ports/channels */ #define SNDRV_SEQ_QUEUE_DIRECT 253 /* direct dispatch */ /* event mode flag - NOTE: only 8 bits available! */ #define SNDRV_SEQ_TIME_STAMP_TICK (0<<0) /* timestamp in clock ticks */ #define SNDRV_SEQ_TIME_STAMP_REAL (1<<0) /* timestamp in real time */ #define SNDRV_SEQ_TIME_STAMP_MASK (1<<0) #define SNDRV_SEQ_TIME_MODE_ABS (0<<1) /* absolute timestamp */ #define SNDRV_SEQ_TIME_MODE_REL (1<<1) /* relative to current time */ #define SNDRV_SEQ_TIME_MODE_MASK (1<<1) #define SNDRV_SEQ_EVENT_LENGTH_FIXED (0<<2) /* fixed event size */ #define SNDRV_SEQ_EVENT_LENGTH_VARIABLE (1<<2) /* variable event size */ #define SNDRV_SEQ_EVENT_LENGTH_VARUSR (2<<2) /* variable event size - user memory space */ #define SNDRV_SEQ_EVENT_LENGTH_MASK (3<<2) #define SNDRV_SEQ_PRIORITY_NORMAL (0<<4) /* normal priority */ #define SNDRV_SEQ_PRIORITY_HIGH (1<<4) /* event should be processed before others */ #define SNDRV_SEQ_PRIORITY_MASK (1<<4) /* note event */ |
c7e0b5bf9 [ALSA] Remove xxx... |
192 |
struct snd_seq_ev_note { |
1da177e4c Linux-2.6.12-rc2 |
193 194 195 196 197 198 199 200 |
unsigned char channel; unsigned char note; unsigned char velocity; unsigned char off_velocity; /* only for SNDRV_SEQ_EVENT_NOTE */ unsigned int duration; /* only for SNDRV_SEQ_EVENT_NOTE */ }; /* controller event */ |
c7e0b5bf9 [ALSA] Remove xxx... |
201 |
struct snd_seq_ev_ctrl { |
1da177e4c Linux-2.6.12-rc2 |
202 203 204 205 206 207 208 |
unsigned char channel; unsigned char unused1, unused2, unused3; /* pad */ unsigned int param; signed int value; }; /* generic set of bytes (12x8 bit) */ |
c7e0b5bf9 [ALSA] Remove xxx... |
209 |
struct snd_seq_ev_raw8 { |
1da177e4c Linux-2.6.12-rc2 |
210 211 212 213 |
unsigned char d[12]; /* 8 bit value */ }; /* generic set of integers (3x32 bit) */ |
c7e0b5bf9 [ALSA] Remove xxx... |
214 |
struct snd_seq_ev_raw32 { |
1da177e4c Linux-2.6.12-rc2 |
215 216 217 218 |
unsigned int d[3]; /* 32 bit value */ }; /* external stored data */ |
c7e0b5bf9 [ALSA] Remove xxx... |
219 |
struct snd_seq_ev_ext { |
1da177e4c Linux-2.6.12-rc2 |
220 221 222 |
unsigned int len; /* length of data */ void *ptr; /* pointer to data (note: maybe 64-bit) */ } __attribute__((packed)); |
c7e0b5bf9 [ALSA] Remove xxx... |
223 |
struct snd_seq_result { |
1da177e4c Linux-2.6.12-rc2 |
224 225 226 |
int event; /* processed event type */ int result; }; |
c7e0b5bf9 [ALSA] Remove xxx... |
227 |
struct snd_seq_real_time { |
1da177e4c Linux-2.6.12-rc2 |
228 229 230 |
unsigned int tv_sec; /* seconds */ unsigned int tv_nsec; /* nanoseconds */ }; |
c7e0b5bf9 [ALSA] Remove xxx... |
231 |
typedef unsigned int snd_seq_tick_time_t; /* midi ticks */ |
1da177e4c Linux-2.6.12-rc2 |
232 |
|
c7e0b5bf9 [ALSA] Remove xxx... |
233 234 235 |
union snd_seq_timestamp { snd_seq_tick_time_t tick; struct snd_seq_real_time time; |
1da177e4c Linux-2.6.12-rc2 |
236 |
}; |
c7e0b5bf9 [ALSA] Remove xxx... |
237 |
struct snd_seq_queue_skew { |
1da177e4c Linux-2.6.12-rc2 |
238 239 240 241 242 |
unsigned int value; unsigned int base; }; /* queue timer control */ |
c7e0b5bf9 [ALSA] Remove xxx... |
243 |
struct snd_seq_ev_queue_control { |
1da177e4c Linux-2.6.12-rc2 |
244 245 246 247 |
unsigned char queue; /* affected queue */ unsigned char pad[3]; /* reserved */ union { signed int value; /* affected value (e.g. tempo) */ |
c7e0b5bf9 [ALSA] Remove xxx... |
248 |
union snd_seq_timestamp time; /* time */ |
1da177e4c Linux-2.6.12-rc2 |
249 |
unsigned int position; /* sync position */ |
c7e0b5bf9 [ALSA] Remove xxx... |
250 |
struct snd_seq_queue_skew skew; |
1da177e4c Linux-2.6.12-rc2 |
251 252 253 254 255 256 |
unsigned int d32[2]; unsigned char d8[8]; } param; }; /* quoted event - inside the kernel only */ |
c7e0b5bf9 [ALSA] Remove xxx... |
257 258 |
struct snd_seq_ev_quote { struct snd_seq_addr origin; /* original sender */ |
1da177e4c Linux-2.6.12-rc2 |
259 |
unsigned short value; /* optional data */ |
c7e0b5bf9 [ALSA] Remove xxx... |
260 |
struct snd_seq_event *event; /* quoted event */ |
1da177e4c Linux-2.6.12-rc2 |
261 262 263 264 |
} __attribute__((packed)); /* sequencer event */ |
c7e0b5bf9 [ALSA] Remove xxx... |
265 266 |
struct snd_seq_event { snd_seq_event_type_t type; /* event type */ |
1da177e4c Linux-2.6.12-rc2 |
267 268 269 270 |
unsigned char flags; /* event flags */ char tag; unsigned char queue; /* schedule queue */ |
c7e0b5bf9 [ALSA] Remove xxx... |
271 |
union snd_seq_timestamp time; /* schedule time */ |
1da177e4c Linux-2.6.12-rc2 |
272 |
|
c7e0b5bf9 [ALSA] Remove xxx... |
273 274 |
struct snd_seq_addr source; /* source address */ struct snd_seq_addr dest; /* destination address */ |
1da177e4c Linux-2.6.12-rc2 |
275 276 |
union { /* event data... */ |
c7e0b5bf9 [ALSA] Remove xxx... |
277 278 279 280 281 282 283 284 285 286 |
struct snd_seq_ev_note note; struct snd_seq_ev_ctrl control; struct snd_seq_ev_raw8 raw8; struct snd_seq_ev_raw32 raw32; struct snd_seq_ev_ext ext; struct snd_seq_ev_queue_control queue; union snd_seq_timestamp time; struct snd_seq_addr addr; struct snd_seq_connect connect; struct snd_seq_result result; |
c7e0b5bf9 [ALSA] Remove xxx... |
287 |
struct snd_seq_ev_quote quote; |
1da177e4c Linux-2.6.12-rc2 |
288 289 290 291 292 293 294 |
} data; }; /* * bounce event - stored as variable size data */ |
c7e0b5bf9 [ALSA] Remove xxx... |
295 |
struct snd_seq_event_bounce { |
1da177e4c Linux-2.6.12-rc2 |
296 |
int err; |
c7e0b5bf9 [ALSA] Remove xxx... |
297 |
struct snd_seq_event event; |
1da177e4c Linux-2.6.12-rc2 |
298 299 |
/* external data follows here. */ }; |
c7e0b5bf9 [ALSA] Remove xxx... |
300 301 302 303 |
#ifdef __KERNEL__ /* helper macro */ #define snd_seq_event_bounce_ext_data(ev) ((void*)((char *)(ev)->data.ext.ptr + sizeof(struct snd_seq_event_bounce))) |
1da177e4c Linux-2.6.12-rc2 |
304 305 306 307 308 |
/* * type check macros */ /* result events: 0-4 */ |
c7e0b5bf9 [ALSA] Remove xxx... |
309 |
#define snd_seq_ev_is_result_type(ev) ((ev)->type < 5) |
1da177e4c Linux-2.6.12-rc2 |
310 |
/* channel specific events: 5-19 */ |
c7e0b5bf9 [ALSA] Remove xxx... |
311 |
#define snd_seq_ev_is_channel_type(ev) ((ev)->type >= 5 && (ev)->type < 20) |
1da177e4c Linux-2.6.12-rc2 |
312 |
/* note events: 5-9 */ |
c7e0b5bf9 [ALSA] Remove xxx... |
313 |
#define snd_seq_ev_is_note_type(ev) ((ev)->type >= 5 && (ev)->type < 10) |
1da177e4c Linux-2.6.12-rc2 |
314 |
/* control events: 10-19 */ |
c7e0b5bf9 [ALSA] Remove xxx... |
315 |
#define snd_seq_ev_is_control_type(ev) ((ev)->type >= 10 && (ev)->type < 20) |
1da177e4c Linux-2.6.12-rc2 |
316 |
/* queue control events: 30-39 */ |
c7e0b5bf9 [ALSA] Remove xxx... |
317 |
#define snd_seq_ev_is_queue_type(ev) ((ev)->type >= 30 && (ev)->type < 40) |
1da177e4c Linux-2.6.12-rc2 |
318 |
/* system status messages */ |
c7e0b5bf9 [ALSA] Remove xxx... |
319 |
#define snd_seq_ev_is_message_type(ev) ((ev)->type >= 60 && (ev)->type < 69) |
1da177e4c Linux-2.6.12-rc2 |
320 |
/* sample messages */ |
c7e0b5bf9 [ALSA] Remove xxx... |
321 |
#define snd_seq_ev_is_sample_type(ev) ((ev)->type >= 70 && (ev)->type < 79) |
1da177e4c Linux-2.6.12-rc2 |
322 |
/* user-defined messages */ |
c7e0b5bf9 [ALSA] Remove xxx... |
323 |
#define snd_seq_ev_is_user_type(ev) ((ev)->type >= 90 && (ev)->type < 99) |
1da177e4c Linux-2.6.12-rc2 |
324 |
/* fixed length events: 0-99 */ |
c7e0b5bf9 [ALSA] Remove xxx... |
325 |
#define snd_seq_ev_is_fixed_type(ev) ((ev)->type < 100) |
1da177e4c Linux-2.6.12-rc2 |
326 |
/* variable length events: 130-139 */ |
c7e0b5bf9 [ALSA] Remove xxx... |
327 |
#define snd_seq_ev_is_variable_type(ev) ((ev)->type >= 130 && (ev)->type < 140) |
1da177e4c Linux-2.6.12-rc2 |
328 |
/* reserved for kernel */ |
c7e0b5bf9 [ALSA] Remove xxx... |
329 |
#define snd_seq_ev_is_reserved(ev) ((ev)->type >= 150) |
1da177e4c Linux-2.6.12-rc2 |
330 331 |
/* direct dispatched events */ |
c7e0b5bf9 [ALSA] Remove xxx... |
332 |
#define snd_seq_ev_is_direct(ev) ((ev)->queue == SNDRV_SEQ_QUEUE_DIRECT) |
1da177e4c Linux-2.6.12-rc2 |
333 334 335 336 337 |
/* * macros to check event flags */ /* prior events */ |
c7e0b5bf9 [ALSA] Remove xxx... |
338 |
#define snd_seq_ev_is_prior(ev) (((ev)->flags & SNDRV_SEQ_PRIORITY_MASK) == SNDRV_SEQ_PRIORITY_HIGH) |
1da177e4c Linux-2.6.12-rc2 |
339 340 |
/* event length type */ |
c7e0b5bf9 [ALSA] Remove xxx... |
341 342 343 344 |
#define snd_seq_ev_length_type(ev) ((ev)->flags & SNDRV_SEQ_EVENT_LENGTH_MASK) #define snd_seq_ev_is_fixed(ev) (snd_seq_ev_length_type(ev) == SNDRV_SEQ_EVENT_LENGTH_FIXED) #define snd_seq_ev_is_variable(ev) (snd_seq_ev_length_type(ev) == SNDRV_SEQ_EVENT_LENGTH_VARIABLE) #define snd_seq_ev_is_varusr(ev) (snd_seq_ev_length_type(ev) == SNDRV_SEQ_EVENT_LENGTH_VARUSR) |
1da177e4c Linux-2.6.12-rc2 |
345 346 |
/* time-stamp type */ |
c7e0b5bf9 [ALSA] Remove xxx... |
347 348 349 |
#define snd_seq_ev_timestamp_type(ev) ((ev)->flags & SNDRV_SEQ_TIME_STAMP_MASK) #define snd_seq_ev_is_tick(ev) (snd_seq_ev_timestamp_type(ev) == SNDRV_SEQ_TIME_STAMP_TICK) #define snd_seq_ev_is_real(ev) (snd_seq_ev_timestamp_type(ev) == SNDRV_SEQ_TIME_STAMP_REAL) |
1da177e4c Linux-2.6.12-rc2 |
350 351 |
/* time-mode type */ |
c7e0b5bf9 [ALSA] Remove xxx... |
352 353 354 |
#define snd_seq_ev_timemode_type(ev) ((ev)->flags & SNDRV_SEQ_TIME_MODE_MASK) #define snd_seq_ev_is_abstime(ev) (snd_seq_ev_timemode_type(ev) == SNDRV_SEQ_TIME_MODE_ABS) #define snd_seq_ev_is_reltime(ev) (snd_seq_ev_timemode_type(ev) == SNDRV_SEQ_TIME_MODE_REL) |
1da177e4c Linux-2.6.12-rc2 |
355 356 |
/* queue sync port */ |
c7e0b5bf9 [ALSA] Remove xxx... |
357 358 359 |
#define snd_seq_queue_sync_port(q) ((q) + 16) #endif /* __KERNEL__ */ |
1da177e4c Linux-2.6.12-rc2 |
360 361 |
/* system information */ |
c7e0b5bf9 [ALSA] Remove xxx... |
362 |
struct snd_seq_system_info { |
1da177e4c Linux-2.6.12-rc2 |
363 364 365 366 367 368 369 370 371 372 373 |
int queues; /* maximum queues count */ int clients; /* maximum clients count */ int ports; /* maximum ports per client */ int channels; /* maximum channels per port */ int cur_clients; /* current clients */ int cur_queues; /* current queues */ char reserved[24]; }; /* system running information */ |
c7e0b5bf9 [ALSA] Remove xxx... |
374 |
struct snd_seq_running_info { |
1da177e4c Linux-2.6.12-rc2 |
375 376 377 378 379 380 381 382 383 384 |
unsigned char client; /* client id */ unsigned char big_endian; /* 1 = big-endian */ unsigned char cpu_mode; /* 4 = 32bit, 8 = 64bit */ unsigned char pad; /* reserved */ unsigned char reserved[12]; }; /* known client numbers */ #define SNDRV_SEQ_CLIENT_SYSTEM 0 |
aa1e77e69 [ALSA] seq: reorg... |
385 386 387 |
/* internal client numbers */ #define SNDRV_SEQ_CLIENT_DUMMY 14 /* midi through */ #define SNDRV_SEQ_CLIENT_OSS 15 /* oss sequencer emulator */ |
1da177e4c Linux-2.6.12-rc2 |
388 389 390 |
/* client types */ |
c7e0b5bf9 [ALSA] Remove xxx... |
391 392 393 394 |
typedef int __bitwise snd_seq_client_type_t; #define NO_CLIENT ((__force snd_seq_client_type_t) 0) #define USER_CLIENT ((__force snd_seq_client_type_t) 1) #define KERNEL_CLIENT ((__force snd_seq_client_type_t) 2) |
1da177e4c Linux-2.6.12-rc2 |
395 396 397 398 399 400 |
/* event filter flags */ #define SNDRV_SEQ_FILTER_BROADCAST (1<<0) /* accept broadcast messages */ #define SNDRV_SEQ_FILTER_MULTICAST (1<<1) /* accept multicast messages */ #define SNDRV_SEQ_FILTER_BOUNCE (1<<2) /* accept bounce event in error */ #define SNDRV_SEQ_FILTER_USE_EVENT (1<<31) /* use event filter */ |
c7e0b5bf9 [ALSA] Remove xxx... |
401 |
struct snd_seq_client_info { |
1da177e4c Linux-2.6.12-rc2 |
402 |
int client; /* client number to inquire */ |
c7e0b5bf9 [ALSA] Remove xxx... |
403 |
snd_seq_client_type_t type; /* client type */ |
1da177e4c Linux-2.6.12-rc2 |
404 405 406 407 408 409 410 411 412 413 414 |
char name[64]; /* client name */ unsigned int filter; /* filter flags */ unsigned char multicast_filter[8]; /* multicast filter bitmap */ unsigned char event_filter[32]; /* event filter bitmap */ int num_ports; /* RO: number of ports */ int event_lost; /* number of lost events */ char reserved[64]; /* for future use */ }; /* client pool size */ |
c7e0b5bf9 [ALSA] Remove xxx... |
415 |
struct snd_seq_client_pool { |
1da177e4c Linux-2.6.12-rc2 |
416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 |
int client; /* client number to inquire */ int output_pool; /* outgoing (write) pool size */ int input_pool; /* incoming (read) pool size */ int output_room; /* minimum free pool size for select/blocking mode */ int output_free; /* unused size */ int input_free; /* unused size */ char reserved[64]; }; /* Remove events by specified criteria */ #define SNDRV_SEQ_REMOVE_INPUT (1<<0) /* Flush input queues */ #define SNDRV_SEQ_REMOVE_OUTPUT (1<<1) /* Flush output queues */ #define SNDRV_SEQ_REMOVE_DEST (1<<2) /* Restrict by destination q:client:port */ #define SNDRV_SEQ_REMOVE_DEST_CHANNEL (1<<3) /* Restrict by channel */ #define SNDRV_SEQ_REMOVE_TIME_BEFORE (1<<4) /* Restrict to before time */ #define SNDRV_SEQ_REMOVE_TIME_AFTER (1<<5) /* Restrict to time or after */ #define SNDRV_SEQ_REMOVE_TIME_TICK (1<<6) /* Time is in ticks */ #define SNDRV_SEQ_REMOVE_EVENT_TYPE (1<<7) /* Restrict to event type */ #define SNDRV_SEQ_REMOVE_IGNORE_OFF (1<<8) /* Do not flush off events */ #define SNDRV_SEQ_REMOVE_TAG_MATCH (1<<9) /* Restrict to events with given tag */ |
c7e0b5bf9 [ALSA] Remove xxx... |
438 |
struct snd_seq_remove_events { |
1da177e4c Linux-2.6.12-rc2 |
439 |
unsigned int remove_mode; /* Flags that determine what gets removed */ |
c7e0b5bf9 [ALSA] Remove xxx... |
440 |
union snd_seq_timestamp time; |
1da177e4c Linux-2.6.12-rc2 |
441 442 |
unsigned char queue; /* Queue for REMOVE_DEST */ |
c7e0b5bf9 [ALSA] Remove xxx... |
443 |
struct snd_seq_addr dest; /* Address for REMOVE_DEST */ |
1da177e4c Linux-2.6.12-rc2 |
444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 |
unsigned char channel; /* Channel for REMOVE_DEST */ int type; /* For REMOVE_EVENT_TYPE */ char tag; /* Tag for REMOVE_TAG */ int reserved[10]; /* To allow for future binary compatibility */ }; /* known port numbers */ #define SNDRV_SEQ_PORT_SYSTEM_TIMER 0 #define SNDRV_SEQ_PORT_SYSTEM_ANNOUNCE 1 /* port capabilities (32 bits) */ #define SNDRV_SEQ_PORT_CAP_READ (1<<0) /* readable from this port */ #define SNDRV_SEQ_PORT_CAP_WRITE (1<<1) /* writable to this port */ #define SNDRV_SEQ_PORT_CAP_SYNC_READ (1<<2) #define SNDRV_SEQ_PORT_CAP_SYNC_WRITE (1<<3) #define SNDRV_SEQ_PORT_CAP_DUPLEX (1<<4) #define SNDRV_SEQ_PORT_CAP_SUBS_READ (1<<5) /* allow read subscription */ #define SNDRV_SEQ_PORT_CAP_SUBS_WRITE (1<<6) /* allow write subscription */ #define SNDRV_SEQ_PORT_CAP_NO_EXPORT (1<<7) /* routing not allowed */ /* port type */ #define SNDRV_SEQ_PORT_TYPE_SPECIFIC (1<<0) /* hardware specific */ #define SNDRV_SEQ_PORT_TYPE_MIDI_GENERIC (1<<1) /* generic MIDI device */ #define SNDRV_SEQ_PORT_TYPE_MIDI_GM (1<<2) /* General MIDI compatible device */ #define SNDRV_SEQ_PORT_TYPE_MIDI_GS (1<<3) /* GS compatible device */ #define SNDRV_SEQ_PORT_TYPE_MIDI_XG (1<<4) /* XG compatible device */ #define SNDRV_SEQ_PORT_TYPE_MIDI_MT32 (1<<5) /* MT-32 compatible device */ #define SNDRV_SEQ_PORT_TYPE_MIDI_GM2 (1<<6) /* General MIDI 2 compatible device */ /* other standards...*/ #define SNDRV_SEQ_PORT_TYPE_SYNTH (1<<10) /* Synth device (no MIDI compatible - direct wavetable) */ #define SNDRV_SEQ_PORT_TYPE_DIRECT_SAMPLE (1<<11) /* Sampling device (support sample download) */ #define SNDRV_SEQ_PORT_TYPE_SAMPLE (1<<12) /* Sampling device (sample can be downloaded at any time) */ /*...*/ |
450047a78 [ALSA] add more s... |
485 486 487 488 |
#define SNDRV_SEQ_PORT_TYPE_HARDWARE (1<<16) /* driver for a hardware device */ #define SNDRV_SEQ_PORT_TYPE_SOFTWARE (1<<17) /* implemented in software */ #define SNDRV_SEQ_PORT_TYPE_SYNTHESIZER (1<<18) /* generates sound */ #define SNDRV_SEQ_PORT_TYPE_PORT (1<<19) /* connects to other device(s) */ |
1da177e4c Linux-2.6.12-rc2 |
489 490 491 492 493 494 |
#define SNDRV_SEQ_PORT_TYPE_APPLICATION (1<<20) /* application (sequencer/editor) */ /* misc. conditioning flags */ #define SNDRV_SEQ_PORT_FLG_GIVEN_PORT (1<<0) #define SNDRV_SEQ_PORT_FLG_TIMESTAMP (1<<1) #define SNDRV_SEQ_PORT_FLG_TIME_REAL (1<<2) |
c7e0b5bf9 [ALSA] Remove xxx... |
495 496 |
struct snd_seq_port_info { struct snd_seq_addr addr; /* client/port numbers */ |
1da177e4c Linux-2.6.12-rc2 |
497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 |
char name[64]; /* port name */ unsigned int capability; /* port capability bits */ unsigned int type; /* port type bits */ int midi_channels; /* channels per MIDI port */ int midi_voices; /* voices per MIDI port */ int synth_voices; /* voices per SYNTH port */ int read_use; /* R/O: subscribers for output (from this port) */ int write_use; /* R/O: subscribers for input (to this port) */ void *kernel; /* reserved for kernel use (must be NULL) */ unsigned int flags; /* misc. conditioning */ unsigned char time_queue; /* queue # for timestamping */ char reserved[59]; /* for future use */ }; /* queue flags */ #define SNDRV_SEQ_QUEUE_FLG_SYNC (1<<0) /* sync enabled */ /* queue information */ |
c7e0b5bf9 [ALSA] Remove xxx... |
519 |
struct snd_seq_queue_info { |
1da177e4c Linux-2.6.12-rc2 |
520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 |
int queue; /* queue id */ /* * security settings, only owner of this queue can start/stop timer * etc. if the queue is locked for other clients */ int owner; /* client id for owner of the queue */ unsigned locked:1; /* timing queue locked for other queues */ char name[64]; /* name of this queue */ unsigned int flags; /* flags */ char reserved[60]; /* for future use */ }; /* queue info/status */ |
c7e0b5bf9 [ALSA] Remove xxx... |
535 |
struct snd_seq_queue_status { |
1da177e4c Linux-2.6.12-rc2 |
536 537 |
int queue; /* queue id */ int events; /* read-only - queue size */ |
c7e0b5bf9 [ALSA] Remove xxx... |
538 539 |
snd_seq_tick_time_t tick; /* current tick */ struct snd_seq_real_time time; /* current time */ |
1da177e4c Linux-2.6.12-rc2 |
540 541 542 543 544 545 546 |
int running; /* running state of queue */ int flags; /* various flags */ char reserved[64]; /* for the future */ }; /* queue tempo */ |
c7e0b5bf9 [ALSA] Remove xxx... |
547 |
struct snd_seq_queue_tempo { |
1da177e4c Linux-2.6.12-rc2 |
548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 |
int queue; /* sequencer queue */ unsigned int tempo; /* current tempo, us/tick */ int ppq; /* time resolution, ticks/quarter */ unsigned int skew_value; /* queue skew */ unsigned int skew_base; /* queue skew base */ char reserved[24]; /* for the future */ }; /* sequencer timer sources */ #define SNDRV_SEQ_TIMER_ALSA 0 /* ALSA timer */ #define SNDRV_SEQ_TIMER_MIDI_CLOCK 1 /* Midi Clock (CLOCK event) */ #define SNDRV_SEQ_TIMER_MIDI_TICK 2 /* Midi Timer Tick (TICK event) */ /* queue timer info */ |
c7e0b5bf9 [ALSA] Remove xxx... |
563 |
struct snd_seq_queue_timer { |
1da177e4c Linux-2.6.12-rc2 |
564 565 566 567 |
int queue; /* sequencer queue */ int type; /* source timer type */ union { struct { |
c7e0b5bf9 [ALSA] Remove xxx... |
568 |
struct snd_timer_id id; /* ALSA's timer ID */ |
1da177e4c Linux-2.6.12-rc2 |
569 570 571 572 573 |
unsigned int resolution; /* resolution in Hz */ } alsa; } u; char reserved[64]; /* for the future use */ }; |
c7e0b5bf9 [ALSA] Remove xxx... |
574 |
struct snd_seq_queue_client { |
1da177e4c Linux-2.6.12-rc2 |
575 576 577 578 579 580 581 582 583 584 585 586 |
int queue; /* sequencer queue */ int client; /* sequencer client */ int used; /* queue is used with this client (must be set for accepting events) */ /* per client watermarks */ char reserved[64]; /* for future use */ }; #define SNDRV_SEQ_PORT_SUBS_EXCLUSIVE (1<<0) /* exclusive connection */ #define SNDRV_SEQ_PORT_SUBS_TIMESTAMP (1<<1) #define SNDRV_SEQ_PORT_SUBS_TIME_REAL (1<<2) |
c7e0b5bf9 [ALSA] Remove xxx... |
587 588 589 |
struct snd_seq_port_subscribe { struct snd_seq_addr sender; /* sender address */ struct snd_seq_addr dest; /* destination address */ |
1da177e4c Linux-2.6.12-rc2 |
590 591 592 593 594 595 596 597 598 599 |
unsigned int voices; /* number of voices to be allocated (0 = don't care) */ unsigned int flags; /* modes */ unsigned char queue; /* input time-stamp queue (optional) */ unsigned char pad[3]; /* reserved */ char reserved[64]; }; /* type of query subscription */ #define SNDRV_SEQ_QUERY_SUBS_READ 0 #define SNDRV_SEQ_QUERY_SUBS_WRITE 1 |
c7e0b5bf9 [ALSA] Remove xxx... |
600 601 |
struct snd_seq_query_subs { struct snd_seq_addr root; /* client/port id to be searched */ |
1da177e4c Linux-2.6.12-rc2 |
602 603 604 |
int type; /* READ or WRITE */ int index; /* 0..N-1 */ int num_subs; /* R/O: number of subscriptions on this port */ |
c7e0b5bf9 [ALSA] Remove xxx... |
605 |
struct snd_seq_addr addr; /* R/O: result */ |
1da177e4c Linux-2.6.12-rc2 |
606 607 608 609 610 611 612 |
unsigned char queue; /* R/O: result */ unsigned int flags; /* R/O: result */ char reserved[64]; /* for future use */ }; /* |
1da177e4c Linux-2.6.12-rc2 |
613 614 615 616 617 |
* IOCTL commands */ #define SNDRV_SEQ_IOCTL_PVERSION _IOR ('S', 0x00, int) #define SNDRV_SEQ_IOCTL_CLIENT_ID _IOR ('S', 0x01, int) |
c7e0b5bf9 [ALSA] Remove xxx... |
618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 |
#define SNDRV_SEQ_IOCTL_SYSTEM_INFO _IOWR('S', 0x02, struct snd_seq_system_info) #define SNDRV_SEQ_IOCTL_RUNNING_MODE _IOWR('S', 0x03, struct snd_seq_running_info) #define SNDRV_SEQ_IOCTL_GET_CLIENT_INFO _IOWR('S', 0x10, struct snd_seq_client_info) #define SNDRV_SEQ_IOCTL_SET_CLIENT_INFO _IOW ('S', 0x11, struct snd_seq_client_info) #define SNDRV_SEQ_IOCTL_CREATE_PORT _IOWR('S', 0x20, struct snd_seq_port_info) #define SNDRV_SEQ_IOCTL_DELETE_PORT _IOW ('S', 0x21, struct snd_seq_port_info) #define SNDRV_SEQ_IOCTL_GET_PORT_INFO _IOWR('S', 0x22, struct snd_seq_port_info) #define SNDRV_SEQ_IOCTL_SET_PORT_INFO _IOW ('S', 0x23, struct snd_seq_port_info) #define SNDRV_SEQ_IOCTL_SUBSCRIBE_PORT _IOW ('S', 0x30, struct snd_seq_port_subscribe) #define SNDRV_SEQ_IOCTL_UNSUBSCRIBE_PORT _IOW ('S', 0x31, struct snd_seq_port_subscribe) #define SNDRV_SEQ_IOCTL_CREATE_QUEUE _IOWR('S', 0x32, struct snd_seq_queue_info) #define SNDRV_SEQ_IOCTL_DELETE_QUEUE _IOW ('S', 0x33, struct snd_seq_queue_info) #define SNDRV_SEQ_IOCTL_GET_QUEUE_INFO _IOWR('S', 0x34, struct snd_seq_queue_info) #define SNDRV_SEQ_IOCTL_SET_QUEUE_INFO _IOWR('S', 0x35, struct snd_seq_queue_info) #define SNDRV_SEQ_IOCTL_GET_NAMED_QUEUE _IOWR('S', 0x36, struct snd_seq_queue_info) #define SNDRV_SEQ_IOCTL_GET_QUEUE_STATUS _IOWR('S', 0x40, struct snd_seq_queue_status) #define SNDRV_SEQ_IOCTL_GET_QUEUE_TEMPO _IOWR('S', 0x41, struct snd_seq_queue_tempo) #define SNDRV_SEQ_IOCTL_SET_QUEUE_TEMPO _IOW ('S', 0x42, struct snd_seq_queue_tempo) #define SNDRV_SEQ_IOCTL_GET_QUEUE_OWNER _IOWR('S', 0x43, struct snd_seq_queue_owner) #define SNDRV_SEQ_IOCTL_SET_QUEUE_OWNER _IOW ('S', 0x44, struct snd_seq_queue_owner) #define SNDRV_SEQ_IOCTL_GET_QUEUE_TIMER _IOWR('S', 0x45, struct snd_seq_queue_timer) #define SNDRV_SEQ_IOCTL_SET_QUEUE_TIMER _IOW ('S', 0x46, struct snd_seq_queue_timer) |
1da177e4c Linux-2.6.12-rc2 |
644 |
/* XXX |
c7e0b5bf9 [ALSA] Remove xxx... |
645 646 |
#define SNDRV_SEQ_IOCTL_GET_QUEUE_SYNC _IOWR('S', 0x53, struct snd_seq_queue_sync) #define SNDRV_SEQ_IOCTL_SET_QUEUE_SYNC _IOW ('S', 0x54, struct snd_seq_queue_sync) |
1da177e4c Linux-2.6.12-rc2 |
647 |
*/ |
c7e0b5bf9 [ALSA] Remove xxx... |
648 649 650 651 652 653 654 655 656 |
#define SNDRV_SEQ_IOCTL_GET_QUEUE_CLIENT _IOWR('S', 0x49, struct snd_seq_queue_client) #define SNDRV_SEQ_IOCTL_SET_QUEUE_CLIENT _IOW ('S', 0x4a, struct snd_seq_queue_client) #define SNDRV_SEQ_IOCTL_GET_CLIENT_POOL _IOWR('S', 0x4b, struct snd_seq_client_pool) #define SNDRV_SEQ_IOCTL_SET_CLIENT_POOL _IOW ('S', 0x4c, struct snd_seq_client_pool) #define SNDRV_SEQ_IOCTL_REMOVE_EVENTS _IOW ('S', 0x4e, struct snd_seq_remove_events) #define SNDRV_SEQ_IOCTL_QUERY_SUBS _IOWR('S', 0x4f, struct snd_seq_query_subs) #define SNDRV_SEQ_IOCTL_GET_SUBSCRIPTION _IOWR('S', 0x50, struct snd_seq_port_subscribe) #define SNDRV_SEQ_IOCTL_QUERY_NEXT_CLIENT _IOWR('S', 0x51, struct snd_seq_client_info) #define SNDRV_SEQ_IOCTL_QUERY_NEXT_PORT _IOWR('S', 0x52, struct snd_seq_port_info) |
1da177e4c Linux-2.6.12-rc2 |
657 658 |
#endif /* __SOUND_ASEQUENCER_H */ |