ALSA project - the C library reference
Loading...
Searching...
No Matches
seq_event.h
Go to the documentation of this file.
1
11/*
12 * This library is free software; you can redistribute it and/or modify
13 * it under the terms of the GNU Lesser General Public License as
14 * published by the Free Software Foundation; either version 2.1 of
15 * the License, or (at your option) any later version.
16 *
17 * This program is distributed in the hope that it will be useful,
18 * but WITHOUT ANY WARRANTY; without even the implied warranty of
19 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
20 * GNU Lesser General Public License for more details.
21 *
22 * You should have received a copy of the GNU Lesser General Public
23 * License along with this library; if not, write to the Free Software
24 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
25 *
26 */
27
28#if !defined(__ASOUNDLIB_H) && !defined(ALSA_LIBRARY_BUILD)
29/* don't use ALSA_LIBRARY_BUILD define in sources outside alsa-lib */
30#warning "use #include <alsa/asoundlib.h>, <alsa/seq_event.h> should not be used directly"
31#include <alsa/asoundlib.h>
32#endif
33
34#ifndef __ALSA_SEQ_EVENT_H
35#define __ALSA_SEQ_EVENT_H
36
47typedef unsigned char snd_seq_event_type_t;
48
50enum snd_seq_event_type {
52 SND_SEQ_EVENT_SYSTEM = 0,
54 SND_SEQ_EVENT_RESULT,
55
57 SND_SEQ_EVENT_NOTE = 5,
59 SND_SEQ_EVENT_NOTEON,
61 SND_SEQ_EVENT_NOTEOFF,
63 SND_SEQ_EVENT_KEYPRESS,
64
66 SND_SEQ_EVENT_CONTROLLER = 10,
68 SND_SEQ_EVENT_PGMCHANGE,
70 SND_SEQ_EVENT_CHANPRESS,
72 SND_SEQ_EVENT_PITCHBEND,
74 SND_SEQ_EVENT_CONTROL14,
76 SND_SEQ_EVENT_NONREGPARAM,
78 SND_SEQ_EVENT_REGPARAM,
79
81 SND_SEQ_EVENT_SONGPOS = 20,
83 SND_SEQ_EVENT_SONGSEL,
85 SND_SEQ_EVENT_QFRAME,
87 SND_SEQ_EVENT_TIMESIGN,
89 SND_SEQ_EVENT_KEYSIGN,
90
92 SND_SEQ_EVENT_START = 30,
94 SND_SEQ_EVENT_CONTINUE,
96 SND_SEQ_EVENT_STOP,
98 SND_SEQ_EVENT_SETPOS_TICK,
100 SND_SEQ_EVENT_SETPOS_TIME,
102 SND_SEQ_EVENT_TEMPO,
104 SND_SEQ_EVENT_CLOCK,
106 SND_SEQ_EVENT_TICK,
108 SND_SEQ_EVENT_QUEUE_SKEW,
110 SND_SEQ_EVENT_SYNC_POS,
111
113 SND_SEQ_EVENT_TUNE_REQUEST = 40,
115 SND_SEQ_EVENT_RESET,
117 SND_SEQ_EVENT_SENSING,
118
120 SND_SEQ_EVENT_ECHO = 50,
122 SND_SEQ_EVENT_OSS,
123
125 SND_SEQ_EVENT_CLIENT_START = 60,
127 SND_SEQ_EVENT_CLIENT_EXIT,
129 SND_SEQ_EVENT_CLIENT_CHANGE,
131 SND_SEQ_EVENT_PORT_START,
133 SND_SEQ_EVENT_PORT_EXIT,
135 SND_SEQ_EVENT_PORT_CHANGE,
136
138 SND_SEQ_EVENT_PORT_SUBSCRIBED,
140 SND_SEQ_EVENT_PORT_UNSUBSCRIBED,
141
143 SND_SEQ_EVENT_UMP_EP_CHANGE,
145 SND_SEQ_EVENT_UMP_BLOCK_CHANGE,
146
148 SND_SEQ_EVENT_USR0 = 90,
150 SND_SEQ_EVENT_USR1,
152 SND_SEQ_EVENT_USR2,
154 SND_SEQ_EVENT_USR3,
156 SND_SEQ_EVENT_USR4,
158 SND_SEQ_EVENT_USR5,
160 SND_SEQ_EVENT_USR6,
162 SND_SEQ_EVENT_USR7,
164 SND_SEQ_EVENT_USR8,
166 SND_SEQ_EVENT_USR9,
167
169 SND_SEQ_EVENT_SYSEX = 130,
171 SND_SEQ_EVENT_BOUNCE,
173 SND_SEQ_EVENT_USR_VAR0 = 135,
175 SND_SEQ_EVENT_USR_VAR1,
177 SND_SEQ_EVENT_USR_VAR2,
179 SND_SEQ_EVENT_USR_VAR3,
181 SND_SEQ_EVENT_USR_VAR4,
182
184 SND_SEQ_EVENT_NONE = 255
185};
186
187
189typedef struct snd_seq_addr {
190 unsigned char client;
191 unsigned char port;
192} snd_seq_addr_t;
193
195typedef struct snd_seq_connect {
196 snd_seq_addr_t sender;
197 snd_seq_addr_t dest;
198} snd_seq_connect_t;
199
200
202typedef struct snd_seq_real_time {
203 unsigned int tv_sec;
204 unsigned int tv_nsec;
205} snd_seq_real_time_t;
206
208typedef unsigned int snd_seq_tick_time_t;
209
211typedef union snd_seq_timestamp {
212 snd_seq_tick_time_t tick;
213 struct snd_seq_real_time time;
214} snd_seq_timestamp_t;
215
216
222#define SND_SEQ_TIME_STAMP_TICK (0<<0)
223#define SND_SEQ_TIME_STAMP_REAL (1<<0)
224#define SND_SEQ_TIME_STAMP_MASK (1<<0)
226#define SND_SEQ_TIME_MODE_ABS (0<<1)
227#define SND_SEQ_TIME_MODE_REL (1<<1)
228#define SND_SEQ_TIME_MODE_MASK (1<<1)
230#define SND_SEQ_EVENT_LENGTH_FIXED (0<<2)
231#define SND_SEQ_EVENT_LENGTH_VARIABLE (1<<2)
232#define SND_SEQ_EVENT_LENGTH_VARUSR (2<<2)
233#define SND_SEQ_EVENT_LENGTH_MASK (3<<2)
235#define SND_SEQ_PRIORITY_NORMAL (0<<4)
236#define SND_SEQ_PRIORITY_HIGH (1<<4)
237#define SND_SEQ_PRIORITY_MASK (1<<4)
239#define SND_SEQ_EVENT_UMP (1<<5)
242typedef struct snd_seq_ev_note {
243 unsigned char channel;
244 unsigned char note;
245 unsigned char velocity;
246 unsigned char off_velocity;
247 unsigned int duration;
248} snd_seq_ev_note_t;
249
251typedef struct snd_seq_ev_ctrl {
252 unsigned char channel;
253 unsigned char unused[3];
254 unsigned int param;
255 signed int value;
256} snd_seq_ev_ctrl_t;
257
259typedef struct snd_seq_ev_raw8 {
260 unsigned char d[12];
261} snd_seq_ev_raw8_t;
262
264typedef struct snd_seq_ev_raw32 {
265 unsigned int d[3];
266} snd_seq_ev_raw32_t;
267
269struct snd_seq_ev_ext {
270 unsigned int len;
271 void *ptr;
272} __attribute__((packed));
274typedef struct snd_seq_ev_ext snd_seq_ev_ext_t;
275#ifdef DOC_HIDDEN
276/* redefine typedef for stupid doxygen */
277typedef snd_seq_ev_ext snd_seq_ev_ext_t;
278#endif
279
281typedef struct snd_seq_result {
282 int event;
283 int result;
284} snd_seq_result_t;
285
287typedef struct snd_seq_queue_skew {
288 unsigned int value;
289 unsigned int base;
290} snd_seq_queue_skew_t;
291
293typedef struct snd_seq_ev_queue_control {
294 unsigned char queue;
295 unsigned char unused[3];
296 union {
297 signed int value;
298 snd_seq_timestamp_t time;
299 unsigned int position;
300 snd_seq_queue_skew_t skew;
301 unsigned int d32[2];
302 unsigned char d8[8];
303 } param;
304} snd_seq_ev_queue_control_t;
305
307typedef struct snd_seq_ev_ump_notify {
308 unsigned char client;
309 unsigned char block;
310} snd_seq_ev_ump_notify_t;
311
313typedef union snd_seq_event_data {
314 snd_seq_ev_note_t note;
315 snd_seq_ev_ctrl_t control;
316 snd_seq_ev_raw8_t raw8;
317 snd_seq_ev_raw32_t raw32;
318 snd_seq_ev_ext_t ext;
319 snd_seq_ev_queue_control_t queue;
320 snd_seq_timestamp_t time;
321 snd_seq_addr_t addr;
322 snd_seq_connect_t connect;
323 snd_seq_result_t result;
324 snd_seq_ev_ump_notify_t ump_notify;
325} snd_seq_event_data_t;
326
328typedef struct snd_seq_event {
329 snd_seq_event_type_t type;
330 unsigned char flags;
331 unsigned char tag;
333 unsigned char queue;
334 snd_seq_timestamp_t time;
336 snd_seq_addr_t source;
337 snd_seq_addr_t dest;
339 snd_seq_event_data_t data;
340} snd_seq_event_t;
341
343typedef struct snd_seq_ump_event {
344 snd_seq_event_type_t type;
345 unsigned char flags;
346 unsigned char tag;
347 unsigned char queue;
348 snd_seq_timestamp_t time;
349 snd_seq_addr_t source;
350 snd_seq_addr_t dest;
352 union {
353 snd_seq_event_data_t data;
354 unsigned int ump[4];
355 };
356} snd_seq_ump_event_t;
357
360#endif /* __ALSA_SEQ_EVENT_H */
361