80 строки
1.2 KiB
C
80 строки
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
|