xref: /freebsd/sys/dev/sound/midi/sequencer.h (revision 95ee2897)
1206b17d7SAlexander Leidinger /*-
24d846d26SWarner Losh  * SPDX-License-Identifier: BSD-2-Clause
3718cf2ccSPedro F. Giffuni  *
448351eafSJoel Dahl  * Copyright (c) 2003 Mathew Kanner
548351eafSJoel Dahl  * Copyright (c) 1999 Seigo Tanimura
648351eafSJoel Dahl  * All rights reserved.
7206b17d7SAlexander Leidinger  *
8206b17d7SAlexander Leidinger  * Redistribution and use in source and binary forms, with or without
9206b17d7SAlexander Leidinger  * modification, are permitted provided that the following conditions
10206b17d7SAlexander Leidinger  * are met:
11206b17d7SAlexander Leidinger  * 1. Redistributions of source code must retain the above copyright
12206b17d7SAlexander Leidinger  *    notice, this list of conditions and the following disclaimer.
13206b17d7SAlexander Leidinger  * 2. Redistributions in binary form must reproduce the above copyright
14206b17d7SAlexander Leidinger  *    notice, this list of conditions and the following disclaimer in the
15206b17d7SAlexander Leidinger  *    documentation and/or other materials provided with the distribution.
16206b17d7SAlexander Leidinger  *
17206b17d7SAlexander Leidinger  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
18206b17d7SAlexander Leidinger  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
19206b17d7SAlexander Leidinger  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
20206b17d7SAlexander Leidinger  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
21206b17d7SAlexander Leidinger  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
22206b17d7SAlexander Leidinger  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
23206b17d7SAlexander Leidinger  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
24206b17d7SAlexander Leidinger  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
25206b17d7SAlexander Leidinger  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
26206b17d7SAlexander Leidinger  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
27206b17d7SAlexander Leidinger  * SUCH DAMAGE.
28206b17d7SAlexander Leidinger  */
29206b17d7SAlexander Leidinger 
3048351eafSJoel Dahl /*
3148351eafSJoel Dahl  * Include file for the midi sequence driver.
3248351eafSJoel Dahl  */
3348351eafSJoel Dahl 
34206b17d7SAlexander Leidinger #ifndef _SEQUENCER_H_
35206b17d7SAlexander Leidinger #define _SEQUENCER_H_
36206b17d7SAlexander Leidinger 
37206b17d7SAlexander Leidinger #define NSEQ_MAX	16
38206b17d7SAlexander Leidinger 
39206b17d7SAlexander Leidinger /*
40206b17d7SAlexander Leidinger  * many variables should be reduced to a range. Here define a macro
41206b17d7SAlexander Leidinger  */
42206b17d7SAlexander Leidinger 
43206b17d7SAlexander Leidinger #define RANGE(var, low, high) (var) = \
44206b17d7SAlexander Leidinger ((var)<(low)?(low) : (var)>(high)?(high) : (var))
45206b17d7SAlexander Leidinger 
46206b17d7SAlexander Leidinger #ifdef _KERNEL
47206b17d7SAlexander Leidinger 
48206b17d7SAlexander Leidinger void	seq_timer(void *arg);
49206b17d7SAlexander Leidinger 
50206b17d7SAlexander Leidinger SYSCTL_DECL(_hw_midi_seq);
51206b17d7SAlexander Leidinger 
52206b17d7SAlexander Leidinger extern int seq_debug;
538f981688SAlexander Leidinger 
54206b17d7SAlexander Leidinger #define SEQ_DEBUG(y, x)			\
55206b17d7SAlexander Leidinger 	do {				\
56206b17d7SAlexander Leidinger 		if (seq_debug >= y) {	\
57206b17d7SAlexander Leidinger 			(x);		\
58206b17d7SAlexander Leidinger 		}			\
59206b17d7SAlexander Leidinger 	} while (0)
60206b17d7SAlexander Leidinger 
61206b17d7SAlexander Leidinger SYSCTL_DECL(_hw_midi);
62206b17d7SAlexander Leidinger 
63206b17d7SAlexander Leidinger #endif					/* _KERNEL */
64206b17d7SAlexander Leidinger 
65206b17d7SAlexander Leidinger #define SYNTHPROP_MIDI		1
66206b17d7SAlexander Leidinger #define SYNTHPROP_SYNTH		2
67206b17d7SAlexander Leidinger #define SYNTHPROP_RX		4
68206b17d7SAlexander Leidinger #define SYNTHPROP_TX		8
69206b17d7SAlexander Leidinger 
70206b17d7SAlexander Leidinger struct _midi_cmdtab {
71206b17d7SAlexander Leidinger 	int	cmd;
72206b17d7SAlexander Leidinger 	char   *name;
73206b17d7SAlexander Leidinger };
74206b17d7SAlexander Leidinger typedef struct _midi_cmdtab midi_cmdtab;
75206b17d7SAlexander Leidinger extern midi_cmdtab cmdtab_seqevent[];
76206b17d7SAlexander Leidinger extern midi_cmdtab cmdtab_seqioctl[];
77206b17d7SAlexander Leidinger extern midi_cmdtab cmdtab_timer[];
78206b17d7SAlexander Leidinger extern midi_cmdtab cmdtab_seqcv[];
79206b17d7SAlexander Leidinger extern midi_cmdtab cmdtab_seqccmn[];
80206b17d7SAlexander Leidinger 
81206b17d7SAlexander Leidinger char   *midi_cmdname(int cmd, midi_cmdtab * tab);
82206b17d7SAlexander Leidinger 
83206b17d7SAlexander Leidinger enum {
84206b17d7SAlexander Leidinger 	MORE,
85206b17d7SAlexander Leidinger 	TIMERARMED,
86206b17d7SAlexander Leidinger 	QUEUEFULL
87206b17d7SAlexander Leidinger };
88206b17d7SAlexander Leidinger 
89206b17d7SAlexander Leidinger #endif
90