#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