| #ifndef _DRIVERS_SOUND_DM_H |
| #define _DRIVERS_SOUND_DM_H |
| |
| /* |
| * Definitions of the 'direct midi sound' interface used |
| * by the newer commercial OSS package. We should export |
| * this to userland somewhere in glibc later. |
| */ |
| |
| /* |
| * Data structure composing an FM "note" or sound event. |
| */ |
| |
| struct dm_fm_voice |
| { |
| u8 op; |
| u8 voice; |
| u8 am; |
| u8 vibrato; |
| u8 do_sustain; |
| u8 kbd_scale; |
| u8 harmonic; |
| u8 scale_level; |
| u8 volume; |
| u8 attack; |
| u8 decay; |
| u8 sustain; |
| u8 release; |
| u8 feedback; |
| u8 connection; |
| u8 left; |
| u8 right; |
| u8 waveform; |
| }; |
| |
| /* |
| * This describes an FM note by its voice, octave, frequency number (10bit) |
| * and key on/off. |
| */ |
| |
| struct dm_fm_note |
| { |
| u8 voice; |
| u8 octave; |
| u32 fnum; |
| u8 key_on; |
| }; |
| |
| /* |
| * FM parameters that apply globally to all voices, and thus are not "notes" |
| */ |
| |
| struct dm_fm_params |
| { |
| u8 am_depth; |
| u8 vib_depth; |
| u8 kbd_split; |
| u8 rhythm; |
| |
| /* This block is the percussion instrument data */ |
| u8 bass; |
| u8 snare; |
| u8 tomtom; |
| u8 cymbal; |
| u8 hihat; |
| }; |
| |
| /* |
| * FM mode ioctl settings |
| */ |
| |
| #define FM_IOCTL_RESET 0x20 |
| #define FM_IOCTL_PLAY_NOTE 0x21 |
| #define FM_IOCTL_SET_VOICE 0x22 |
| #define FM_IOCTL_SET_PARAMS 0x23 |
| #define FM_IOCTL_SET_MODE 0x24 |
| #define FM_IOCTL_SET_OPL 0x25 |
| |
| #endif |