]> git.proxmox.com Git - mirror_ubuntu-kernels.git/blob - sound/oss/dm.h
Linux-2.6.12-rc2
[mirror_ubuntu-kernels.git] / sound / oss / dm.h
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