1*6c94880fSSascha Wildner /*- 2*6c94880fSSascha Wildner * Copyright (c) 2003 Mathew Kanner 3*6c94880fSSascha Wildner * Copyright (c) 1999 Seigo Tanimura 4*6c94880fSSascha Wildner * All rights reserved. 5*6c94880fSSascha Wildner * 6*6c94880fSSascha Wildner * Redistribution and use in source and binary forms, with or without 7*6c94880fSSascha Wildner * modification, are permitted provided that the following conditions 8*6c94880fSSascha Wildner * are met: 9*6c94880fSSascha Wildner * 1. Redistributions of source code must retain the above copyright 10*6c94880fSSascha Wildner * notice, this list of conditions and the following disclaimer. 11*6c94880fSSascha Wildner * 2. Redistributions in binary form must reproduce the above copyright 12*6c94880fSSascha Wildner * notice, this list of conditions and the following disclaimer in the 13*6c94880fSSascha Wildner * documentation and/or other materials provided with the distribution. 14*6c94880fSSascha Wildner * 15*6c94880fSSascha Wildner * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND 16*6c94880fSSascha Wildner * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 17*6c94880fSSascha Wildner * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 18*6c94880fSSascha Wildner * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 19*6c94880fSSascha Wildner * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 20*6c94880fSSascha Wildner * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 21*6c94880fSSascha Wildner * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 22*6c94880fSSascha Wildner * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 23*6c94880fSSascha Wildner * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 24*6c94880fSSascha Wildner * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 25*6c94880fSSascha Wildner * SUCH DAMAGE. 26*6c94880fSSascha Wildner * 27*6c94880fSSascha Wildner * $FreeBSD: head/sys/dev/sound/midi/sequencer.h 193640 2009-06-07 19:12:08Z ariff $ 28*6c94880fSSascha Wildner */ 29*6c94880fSSascha Wildner 30*6c94880fSSascha Wildner /* 31*6c94880fSSascha Wildner * Include file for the midi sequence driver. 32*6c94880fSSascha Wildner */ 33*6c94880fSSascha Wildner 34*6c94880fSSascha Wildner #ifndef _SEQUENCER_H_ 35*6c94880fSSascha Wildner #define _SEQUENCER_H_ 36*6c94880fSSascha Wildner 37*6c94880fSSascha Wildner 38*6c94880fSSascha Wildner #define NSEQ_MAX 16 39*6c94880fSSascha Wildner 40*6c94880fSSascha Wildner /* 41*6c94880fSSascha Wildner * many variables should be reduced to a range. Here define a macro 42*6c94880fSSascha Wildner */ 43*6c94880fSSascha Wildner 44*6c94880fSSascha Wildner #define RANGE(var, low, high) (var) = \ 45*6c94880fSSascha Wildner ((var)<(low)?(low) : (var)>(high)?(high) : (var)) 46*6c94880fSSascha Wildner 47*6c94880fSSascha Wildner #ifdef _KERNEL 48*6c94880fSSascha Wildner 49*6c94880fSSascha Wildner void seq_timer(void *arg); 50*6c94880fSSascha Wildner 51*6c94880fSSascha Wildner SYSCTL_DECL(_hw_midi_seq); 52*6c94880fSSascha Wildner 53*6c94880fSSascha Wildner extern int seq_debug; 54*6c94880fSSascha Wildner 55*6c94880fSSascha Wildner #define SEQ_DEBUG(y, x) \ 56*6c94880fSSascha Wildner do { \ 57*6c94880fSSascha Wildner if (seq_debug >= y) { \ 58*6c94880fSSascha Wildner (x); \ 59*6c94880fSSascha Wildner } \ 60*6c94880fSSascha Wildner } while (0) 61*6c94880fSSascha Wildner 62*6c94880fSSascha Wildner SYSCTL_DECL(_hw_midi); 63*6c94880fSSascha Wildner 64*6c94880fSSascha Wildner #endif /* _KERNEL */ 65*6c94880fSSascha Wildner 66*6c94880fSSascha Wildner #define SYNTHPROP_MIDI 1 67*6c94880fSSascha Wildner #define SYNTHPROP_SYNTH 2 68*6c94880fSSascha Wildner #define SYNTHPROP_RX 4 69*6c94880fSSascha Wildner #define SYNTHPROP_TX 8 70*6c94880fSSascha Wildner 71*6c94880fSSascha Wildner struct _midi_cmdtab { 72*6c94880fSSascha Wildner int cmd; 73*6c94880fSSascha Wildner char *name; 74*6c94880fSSascha Wildner }; 75*6c94880fSSascha Wildner typedef struct _midi_cmdtab midi_cmdtab; 76*6c94880fSSascha Wildner extern midi_cmdtab cmdtab_seqevent[]; 77*6c94880fSSascha Wildner extern midi_cmdtab cmdtab_seqioctl[]; 78*6c94880fSSascha Wildner extern midi_cmdtab cmdtab_timer[]; 79*6c94880fSSascha Wildner extern midi_cmdtab cmdtab_seqcv[]; 80*6c94880fSSascha Wildner extern midi_cmdtab cmdtab_seqccmn[]; 81*6c94880fSSascha Wildner 82*6c94880fSSascha Wildner char *midi_cmdname(int cmd, midi_cmdtab * tab); 83*6c94880fSSascha Wildner 84*6c94880fSSascha Wildner enum { 85*6c94880fSSascha Wildner MORE, 86*6c94880fSSascha Wildner TIMERARMED, 87*6c94880fSSascha Wildner QUEUEFULL 88*6c94880fSSascha Wildner }; 89*6c94880fSSascha Wildner 90*6c94880fSSascha Wildner #endif 91