annotate plugin/api/alsa/seq.h @ 282:d9319859a4cf tip

(none)
author benoitrigolleau
date Fri, 31 Oct 2008 11:00:24 +0000
parents fc9323a41f5a
children
rev   line source
lbajardsilogic@0 1 /* DSSI ALSA compatibility library
lbajardsilogic@0 2 *
lbajardsilogic@0 3 * This library provides for Mac OS X the ALSA snd_seq_event_t handling
lbajardsilogic@0 4 * necessary to compile and run DSSI. It was extracted from alsa-lib 1.0.8.
lbajardsilogic@0 5 */
lbajardsilogic@0 6
lbajardsilogic@0 7 /**
lbajardsilogic@0 8 * \file <alsa/seq.h>
lbajardsilogic@0 9 * \brief Application interface library for the ALSA driver
lbajardsilogic@0 10 * \author Jaroslav Kysela <perex@suse.cz>
lbajardsilogic@0 11 * \author Abramo Bagnara <abramo@alsa-project.org>
lbajardsilogic@0 12 * \author Takashi Iwai <tiwai@suse.de>
lbajardsilogic@0 13 * \date 1998-2001
lbajardsilogic@0 14 */
lbajardsilogic@0 15 /*
lbajardsilogic@0 16 * Application interface library for the ALSA driver
lbajardsilogic@0 17 *
lbajardsilogic@0 18 *
lbajardsilogic@0 19 * This library is free software; you can redistribute it and/or modify
lbajardsilogic@0 20 * it under the terms of the GNU Lesser General Public License as
lbajardsilogic@0 21 * published by the Free Software Foundation; either version 2.1 of
lbajardsilogic@0 22 * the License, or (at your option) any later version.
lbajardsilogic@0 23 *
lbajardsilogic@0 24 * This program is distributed in the hope that it will be useful,
lbajardsilogic@0 25 * but WITHOUT ANY WARRANTY; without even the implied warranty of
lbajardsilogic@0 26 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
lbajardsilogic@0 27 * GNU Lesser General Public License for more details.
lbajardsilogic@0 28 *
lbajardsilogic@0 29 * You should have received a copy of the GNU Lesser General Public
lbajardsilogic@0 30 * License along with this library; if not, write to the Free Software
lbajardsilogic@0 31 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
lbajardsilogic@0 32 *
lbajardsilogic@0 33 */
lbajardsilogic@0 34
lbajardsilogic@0 35 #ifndef __ALSA_SEQ_H
lbajardsilogic@0 36 #define __ALSA_SEQ_H
lbajardsilogic@0 37
lbajardsilogic@0 38 #ifdef __cplusplus
lbajardsilogic@0 39 extern "C" {
lbajardsilogic@0 40 #endif
lbajardsilogic@0 41
lbajardsilogic@0 42 /**
lbajardsilogic@0 43 * \defgroup SeqEvType Sequencer Event Type Checks
lbajardsilogic@0 44 * Sequencer Event Type Checks
lbajardsilogic@0 45 * \ingroup Sequencer
lbajardsilogic@0 46 * \{
lbajardsilogic@0 47 */
lbajardsilogic@0 48
lbajardsilogic@0 49 /* event type macros */
lbajardsilogic@0 50 enum {
lbajardsilogic@0 51 SND_SEQ_EVFLG_RESULT,
lbajardsilogic@0 52 SND_SEQ_EVFLG_NOTE,
lbajardsilogic@0 53 SND_SEQ_EVFLG_CONTROL,
lbajardsilogic@0 54 SND_SEQ_EVFLG_QUEUE,
lbajardsilogic@0 55 SND_SEQ_EVFLG_SYSTEM,
lbajardsilogic@0 56 SND_SEQ_EVFLG_MESSAGE,
lbajardsilogic@0 57 SND_SEQ_EVFLG_CONNECTION,
lbajardsilogic@0 58 SND_SEQ_EVFLG_SAMPLE,
lbajardsilogic@0 59 SND_SEQ_EVFLG_USERS,
lbajardsilogic@0 60 SND_SEQ_EVFLG_INSTR,
lbajardsilogic@0 61 SND_SEQ_EVFLG_QUOTE,
lbajardsilogic@0 62 SND_SEQ_EVFLG_NONE,
lbajardsilogic@0 63 SND_SEQ_EVFLG_RAW,
lbajardsilogic@0 64 SND_SEQ_EVFLG_FIXED,
lbajardsilogic@0 65 SND_SEQ_EVFLG_VARIABLE,
lbajardsilogic@0 66 SND_SEQ_EVFLG_VARUSR
lbajardsilogic@0 67 };
lbajardsilogic@0 68
lbajardsilogic@0 69 enum {
lbajardsilogic@0 70 SND_SEQ_EVFLG_NOTE_ONEARG,
lbajardsilogic@0 71 SND_SEQ_EVFLG_NOTE_TWOARG
lbajardsilogic@0 72 };
lbajardsilogic@0 73
lbajardsilogic@0 74 enum {
lbajardsilogic@0 75 SND_SEQ_EVFLG_QUEUE_NOARG,
lbajardsilogic@0 76 SND_SEQ_EVFLG_QUEUE_TICK,
lbajardsilogic@0 77 SND_SEQ_EVFLG_QUEUE_TIME,
lbajardsilogic@0 78 SND_SEQ_EVFLG_QUEUE_VALUE
lbajardsilogic@0 79 };
lbajardsilogic@0 80
lbajardsilogic@0 81 /**
lbajardsilogic@0 82 * Exported event type table
lbajardsilogic@0 83 *
lbajardsilogic@0 84 * This table is referred by snd_seq_ev_is_xxx.
lbajardsilogic@0 85 */
lbajardsilogic@0 86 extern const unsigned int snd_seq_event_types[];
lbajardsilogic@0 87
lbajardsilogic@0 88 #define _SND_SEQ_TYPE(x) (1<<(x)) /**< master type - 24bit */
lbajardsilogic@0 89 #define _SND_SEQ_TYPE_OPT(x) ((x)<<24) /**< optional type - 8bit */
lbajardsilogic@0 90
lbajardsilogic@0 91 /** check the event type */
lbajardsilogic@0 92 #define snd_seq_type_check(ev,x) (snd_seq_event_types[(ev)->type] & _SND_SEQ_TYPE(x))
lbajardsilogic@0 93
lbajardsilogic@0 94 /** event type check: result events */
lbajardsilogic@0 95 #define snd_seq_ev_is_result_type(ev) \
lbajardsilogic@0 96 snd_seq_type_check(ev, SND_SEQ_EVFLG_RESULT)
lbajardsilogic@0 97 /** event type check: note events */
lbajardsilogic@0 98 #define snd_seq_ev_is_note_type(ev) \
lbajardsilogic@0 99 snd_seq_type_check(ev, SND_SEQ_EVFLG_NOTE)
lbajardsilogic@0 100 /** event type check: control events */
lbajardsilogic@0 101 #define snd_seq_ev_is_control_type(ev) \
lbajardsilogic@0 102 snd_seq_type_check(ev, SND_SEQ_EVFLG_CONTROL)
lbajardsilogic@0 103 /** event type check: channel specific events */
lbajardsilogic@0 104 #define snd_seq_ev_is_channel_type(ev) \
lbajardsilogic@0 105 (snd_seq_event_types[(ev)->type] & (_SND_SEQ_TYPE(SND_SEQ_EVFLG_NOTE) | _SND_SEQ_TYPE(SND_SEQ_EVFLG_CONTROL)))
lbajardsilogic@0 106
lbajardsilogic@0 107 /** event type check: queue control events */
lbajardsilogic@0 108 #define snd_seq_ev_is_queue_type(ev) \
lbajardsilogic@0 109 snd_seq_type_check(ev, SND_SEQ_EVFLG_QUEUE)
lbajardsilogic@0 110 /** event type check: system status messages */
lbajardsilogic@0 111 #define snd_seq_ev_is_message_type(ev) \
lbajardsilogic@0 112 snd_seq_type_check(ev, SND_SEQ_EVFLG_MESSAGE)
lbajardsilogic@0 113 /** event type check: system status messages */
lbajardsilogic@0 114 #define snd_seq_ev_is_subscribe_type(ev) \
lbajardsilogic@0 115 snd_seq_type_check(ev, SND_SEQ_EVFLG_CONNECTION)
lbajardsilogic@0 116 /** event type check: sample messages */
lbajardsilogic@0 117 #define snd_seq_ev_is_sample_type(ev) \
lbajardsilogic@0 118 snd_seq_type_check(ev, SND_SEQ_EVFLG_SAMPLE)
lbajardsilogic@0 119 /** event type check: user-defined messages */
lbajardsilogic@0 120 #define snd_seq_ev_is_user_type(ev) \
lbajardsilogic@0 121 snd_seq_type_check(ev, SND_SEQ_EVFLG_USERS)
lbajardsilogic@0 122 /** event type check: instrument layer events */
lbajardsilogic@0 123 #define snd_seq_ev_is_instr_type(ev) \
lbajardsilogic@0 124 snd_seq_type_check(ev, SND_SEQ_EVFLG_INSTR)
lbajardsilogic@0 125 /** event type check: fixed length events */
lbajardsilogic@0 126 #define snd_seq_ev_is_fixed_type(ev) \
lbajardsilogic@0 127 snd_seq_type_check(ev, SND_SEQ_EVFLG_FIXED)
lbajardsilogic@0 128 /** event type check: variable length events */
lbajardsilogic@0 129 #define snd_seq_ev_is_variable_type(ev) \
lbajardsilogic@0 130 snd_seq_type_check(ev, SND_SEQ_EVFLG_VARIABLE)
lbajardsilogic@0 131 /** event type check: user pointer events */
lbajardsilogic@0 132 #define snd_seq_ev_is_varusr_type(ev) \
lbajardsilogic@0 133 snd_seq_type_check(ev, SND_SEQ_EVFLG_VARUSR)
lbajardsilogic@0 134 /** event type check: reserved for kernel */
lbajardsilogic@0 135 #define snd_seq_ev_is_reserved(ev) \
lbajardsilogic@0 136 (! snd_seq_event_types[(ev)->type])
lbajardsilogic@0 137
lbajardsilogic@0 138 /**
lbajardsilogic@0 139 * macros to check event flags
lbajardsilogic@0 140 */
lbajardsilogic@0 141 /** prior events */
lbajardsilogic@0 142 #define snd_seq_ev_is_prior(ev) \
lbajardsilogic@0 143 (((ev)->flags & SND_SEQ_PRIORITY_MASK) == SND_SEQ_PRIORITY_HIGH)
lbajardsilogic@0 144
lbajardsilogic@0 145 /** get the data length type */
lbajardsilogic@0 146 #define snd_seq_ev_length_type(ev) \
lbajardsilogic@0 147 ((ev)->flags & SND_SEQ_EVENT_LENGTH_MASK)
lbajardsilogic@0 148 /** fixed length events */
lbajardsilogic@0 149 #define snd_seq_ev_is_fixed(ev) \
lbajardsilogic@0 150 (snd_seq_ev_length_type(ev) == SND_SEQ_EVENT_LENGTH_FIXED)
lbajardsilogic@0 151 /** variable length events */
lbajardsilogic@0 152 #define snd_seq_ev_is_variable(ev) \
lbajardsilogic@0 153 (snd_seq_ev_length_type(ev) == SND_SEQ_EVENT_LENGTH_VARIABLE)
lbajardsilogic@0 154 /** variable length on user-space */
lbajardsilogic@0 155 #define snd_seq_ev_is_varusr(ev) \
lbajardsilogic@0 156 (snd_seq_ev_length_type(ev) == SND_SEQ_EVENT_LENGTH_VARUSR)
lbajardsilogic@0 157
lbajardsilogic@0 158 /** time-stamp type */
lbajardsilogic@0 159 #define snd_seq_ev_timestamp_type(ev) \
lbajardsilogic@0 160 ((ev)->flags & SND_SEQ_TIME_STAMP_MASK)
lbajardsilogic@0 161 /** event is in tick time */
lbajardsilogic@0 162 #define snd_seq_ev_is_tick(ev) \
lbajardsilogic@0 163 (snd_seq_ev_timestamp_type(ev) == SND_SEQ_TIME_STAMP_TICK)
lbajardsilogic@0 164 /** event is in real-time */
lbajardsilogic@0 165 #define snd_seq_ev_is_real(ev) \
lbajardsilogic@0 166 (snd_seq_ev_timestamp_type(ev) == SND_SEQ_TIME_STAMP_REAL)
lbajardsilogic@0 167
lbajardsilogic@0 168 /** time-mode type */
lbajardsilogic@0 169 #define snd_seq_ev_timemode_type(ev) \
lbajardsilogic@0 170 ((ev)->flags & SND_SEQ_TIME_MODE_MASK)
lbajardsilogic@0 171 /** scheduled in absolute time */
lbajardsilogic@0 172 #define snd_seq_ev_is_abstime(ev) \
lbajardsilogic@0 173 (snd_seq_ev_timemode_type(ev) == SND_SEQ_TIME_MODE_ABS)
lbajardsilogic@0 174 /** scheduled in relative time */
lbajardsilogic@0 175 #define snd_seq_ev_is_reltime(ev) \
lbajardsilogic@0 176 (snd_seq_ev_timemode_type(ev) == SND_SEQ_TIME_MODE_REL)
lbajardsilogic@0 177
lbajardsilogic@0 178 /** direct dispatched events */
lbajardsilogic@0 179 #define snd_seq_ev_is_direct(ev) \
lbajardsilogic@0 180 ((ev)->queue == SND_SEQ_QUEUE_DIRECT)
lbajardsilogic@0 181
lbajardsilogic@0 182 /** \} */
lbajardsilogic@0 183
lbajardsilogic@0 184 #ifdef __cplusplus
lbajardsilogic@0 185 }
lbajardsilogic@0 186 #endif
lbajardsilogic@0 187
lbajardsilogic@0 188 #endif /* __ALSA_SEQ_H */
lbajardsilogic@0 189