80 lines
1.2 KiB
C
80 lines
1.2 KiB
C
|
#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
|