1 #ifndef _DRIVERS_SOUND_DM_H
2 #define _DRIVERS_SOUND_DM_H
3 
4 /*
5  *	Definitions of the 'direct midi sound' interface used
6  *	by the newer commercial OSS package. We should export
7  *	this to userland somewhere in glibc later.
8  */
9 
10 /*
11  * Data structure composing an FM "note" or sound event.
12  */
13 
14 struct dm_fm_voice
15 {
16 	u8 op;
17 	u8 voice;
18 	u8 am;
19 	u8 vibrato;
20 	u8 do_sustain;
21 	u8 kbd_scale;
22 	u8 harmonic;
23 	u8 scale_level;
24 	u8 volume;
25 	u8 attack;
26 	u8 decay;
27 	u8 sustain;
28 	u8 release;
29 	u8 feedback;
30 	u8 connection;
31 	u8 left;
32 	u8 right;
33 	u8 waveform;
34 };
35 
36 /*
37  *	This describes an FM note by its voice, octave, frequency number (10bit)
38  *	and key on/off.
39  */
40 
41 struct dm_fm_note
42 {
43 	u8 voice;
44 	u8 octave;
45 	u32 fnum;
46 	u8 key_on;
47 };
48 
49 /*
50  * FM parameters that apply globally to all voices, and thus are not "notes"
51  */
52 
53 struct dm_fm_params
54 {
55 	u8 am_depth;
56 	u8 vib_depth;
57 	u8 kbd_split;
58 	u8 rhythm;
59 
60 	/* This block is the percussion instrument data */
61 	u8 bass;
62 	u8 snare;
63 	u8 tomtom;
64 	u8 cymbal;
65 	u8 hihat;
66 };
67 
68 /*
69  *	FM mode ioctl settings
70  */
71 
72 #define FM_IOCTL_RESET        0x20
73 #define FM_IOCTL_PLAY_NOTE    0x21
74 #define FM_IOCTL_SET_VOICE    0x22
75 #define FM_IOCTL_SET_PARAMS   0x23
76 #define FM_IOCTL_SET_MODE     0x24
77 #define FM_IOCTL_SET_OPL      0x25
78 
79 #endif
80