xref: /freebsd/sys/dev/sound/midi/synth_if.m (revision 0b3105a37d7adcadcb720112fed4dc4e8040be99)
1#-
2# Copyright (c) 2003 Mathew Kanner
3# All rights reserved.
4#
5# Redistribution and use in source and binary forms, with or without
6# modification, are permitted provided that the following conditions
7# are met:
8# 1. Redistributions of source code must retain the above copyright
9#    notice, this list of conditions and the following disclaimer.
10# 2. Redistributions in binary form must reproduce the above copyright
11#    notice, this list of conditions and the following disclaimer in the
12#    documentation and/or other materials provided with the distribution.
13#
14# THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
15# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
16# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
17# ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
18# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
19# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
20# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
21# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
22# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
23# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
24# SUCH DAMAGE.
25#
26# $FreeBSD$
27#
28
29INTERFACE synth;
30
31#include <sys/systm.h>
32
33CODE {
34
35synth_killnote_t nokillnote;
36synth_startnote_t nostartnote;
37synth_setinstr_t nosetinstr;
38synth_hwcontrol_t nohwcontrol;
39synth_aftertouch_t noaftertouch;
40synth_panning_t nopanning;
41synth_controller_t nocontroller;
42synth_volumemethod_t novolumemethod;
43synth_bender_t nobender;
44synth_setupvoice_t nosetupvoice;
45synth_sendsysex_t nosendsysex;
46synth_allocvoice_t noallocvoice;
47synth_writeraw_t nowriteraw;
48synth_reset_t noreset;
49synth_shortname_t noshortname;
50synth_open_t noopen;
51synth_close_t noclose;
52synth_query_t noquery;
53synth_insync_t noinsync;
54synth_alloc_t noalloc;
55
56    int
57	nokillnote(void *_kobj, uint8_t _chn, uint8_t _note, uint8_t _vel)
58	{
59	    printf("nokillnote\n");
60	    return 0;
61	}
62
63    int
64	noopen(void *_kobj, void *_arg, int mode)
65	{
66	    printf("noopen\n");
67	    return 0;
68	}
69
70    int
71	noquery(void *_kboj)
72	{
73	    printf("noquery\n");
74	    return 0;
75	}
76
77    int
78	nostartnote(void *_kb, uint8_t _voice, uint8_t _note, uint8_t _parm)
79	{
80	    printf("nostartnote\n");
81	    return 0;
82	}
83
84    int
85	nosetinstr(void *_kb, uint8_t _chn, uint16_t _patchno)
86	{
87	    printf("nosetinstr\n");
88	    return 0;
89	}
90
91    int
92	nohwcontrol(void *_kb, uint8_t *_event)
93	{
94	    printf("nohwcontrol\n");
95	    return 0;
96	}
97
98    int
99	noaftertouch ( void /* X */ * _kobj, uint8_t _x1, uint8_t _x2)
100	{
101	    printf("noaftertouch\n");
102	    return 0;
103	}
104
105    int
106	nopanning ( void /* X */ * _kobj, uint8_t _x1, uint8_t _x2)
107	{
108	    printf("nopanning\n");
109	    return 0;
110	}
111
112    int
113	nocontroller ( void /* X */ * _kobj, uint8_t _x1, uint8_t _x2, uint16_t _x3)
114	{
115	    printf("nocontroller\n");
116	    return 0;
117	}
118
119    int
120	novolumemethod (
121		void /* X */ * _kobj,
122		uint8_t _x1)
123	{
124	    printf("novolumemethod\n");
125	    return 0;
126	}
127
128    int
129	nobender ( void /* X */ * _kobj, uint8_t _voice, uint16_t _bend)
130	{
131	    printf("nobender\n");
132	    return 0;
133	}
134
135    int
136	nosetupvoice ( void /* X */ * _kobj, uint8_t _voice, uint8_t _chn)
137	{
138
139	    printf("nosetupvoice\n");
140	    return 0;
141	}
142
143    int
144	nosendsysex ( void /* X */ * _kobj, void * _buf, size_t _len)
145	{
146	    printf("nosendsysex\n");
147	    return 0;
148	}
149
150    int
151	noallocvoice ( void /* X */ * _kobj, uint8_t _chn, uint8_t _note, void *_x)
152	{
153	    printf("noallocvoice\n");
154	    return 0;
155	}
156
157    int
158	nowriteraw ( void /* X */ * _kobjt, uint8_t * _buf, size_t _len)
159	{
160	    printf("nowriteraw\n");
161	    return 1;
162	}
163
164    int
165	noreset ( void /* X */ * _kobjt)
166	{
167
168	    printf("noreset\n");
169	    return 0;
170	}
171
172    char *
173	noshortname (void /* X */ * _kobjt)
174	{
175	    printf("noshortname\n");
176	    return "noshortname";
177	}
178
179    int
180	noclose ( void /* X */ * _kobjt)
181	{
182
183	    printf("noclose\n");
184	    return 0;
185	}
186
187    int
188	noinsync (void /* X */ * _kobjt)
189	{
190
191	    printf("noinsync\n");
192	    return 0;
193	}
194
195    int
196	noalloc ( void /* x */ * _kbojt, uint8_t _chn, uint8_t _note)
197	{
198	    printf("noalloc\n");
199	    return 0;
200	}
201}
202
203METHOD int killnote {
204	void /* X */ *_kobj;
205	uint8_t	_chan;
206	uint8_t	_note;
207	uint8_t	_vel;
208} DEFAULT nokillnote;
209
210METHOD int startnote {
211	void /* X */ *_kobj;
212	uint8_t	_voice;
213	uint8_t	_note;
214	uint8_t	_parm;
215} DEFAULT nostartnote;
216
217METHOD int setinstr {
218	void /* X */ *_kobj;
219	uint8_t	_chn;
220	uint16_t _patchno;
221} DEFAULT nosetinstr;
222
223METHOD int hwcontrol {
224	void /* X */ *_kobj;
225	uint8_t *_event;
226} DEFAULT nohwcontrol;
227
228METHOD int aftertouch {
229	void /* X */ *_kobj;
230	uint8_t	_x1;
231	uint8_t	_x2;
232} DEFAULT noaftertouch;
233
234METHOD int panning {
235	void /* X */ *_kobj;
236	uint8_t	_x1;
237	uint8_t	_x2;
238} DEFAULT nopanning;
239
240METHOD int controller {
241	void /* X */ *_kobj;
242	uint8_t	_x1;
243	uint8_t	_x2;
244	uint16_t _x3;
245} DEFAULT nocontroller;
246
247METHOD int volumemethod {
248	void /* X */ *_kobj;
249	uint8_t	_x1;
250} DEFAULT novolumemethod;
251
252METHOD int bender {
253	void /* X */ *_kobj;
254	uint8_t	_voice;
255	uint16_t _bend;
256} DEFAULT nobender;
257
258METHOD int setupvoice {
259	void /* X */ *_kobj;
260	uint8_t	_voice;
261	uint8_t	_chn;
262} DEFAULT nosetupvoice;
263
264METHOD int sendsysex {
265	void /* X */ *_kobj;
266	void   *_buf;
267	size_t	_len;
268} DEFAULT nosendsysex;
269
270METHOD int allocvoice {
271	void /* X */ *_kobj;
272	uint8_t	_chn;
273	uint8_t	_note;
274	void   *_x;
275} DEFAULT noallocvoice;
276
277METHOD int writeraw {
278	void /* X */ *_kobjt;
279	uint8_t *_buf;
280	size_t	_len;
281} DEFAULT nowriteraw;
282
283METHOD int reset {
284	void /* X */ *_kobjt;
285} DEFAULT noreset;
286
287METHOD char * shortname {
288	void /* X */ *_kobjt;
289} DEFAULT noshortname;
290
291METHOD int open {
292	void /* X */ *_kobjt;
293	void   *_sythn;
294	int	_mode;
295} DEFAULT noopen;
296
297METHOD int close {
298	void /* X */ *_kobjt;
299} DEFAULT noclose;
300
301METHOD int query {
302	void /* X */ *_kobjt;
303} DEFAULT noquery;
304
305METHOD int insync {
306	void /* X */ *_kobjt;
307} DEFAULT noinsync;
308
309METHOD int alloc {
310	void /* x */ *_kbojt;
311	uint8_t	_chn;
312	uint8_t	_note;
313} DEFAULT noalloc;
314