mirror of
https://github.com/alsa-project/alsa-lib.git
synced 2026-03-02 01:40:08 -05:00
Update asound_fm.h for patch loading over hwdep
Update asound_fm.h to add the new struct and ioctl for patch loading over hwdep.
This commit is contained in:
parent
68e5771a6f
commit
078112dfdf
1 changed files with 31 additions and 12 deletions
|
|
@ -29,16 +29,16 @@
|
||||||
#define SNDRV_DM_FM_MODE_OPL2 0x00
|
#define SNDRV_DM_FM_MODE_OPL2 0x00
|
||||||
#define SNDRV_DM_FM_MODE_OPL3 0x01
|
#define SNDRV_DM_FM_MODE_OPL3 0x01
|
||||||
|
|
||||||
typedef struct snd_dm_fm_info {
|
struct snd_dm_fm_info {
|
||||||
unsigned char fm_mode; /* OPL mode, see SNDRV_DM_FM_MODE_XXX */
|
unsigned char fm_mode; /* OPL mode, see SNDRV_DM_FM_MODE_XXX */
|
||||||
unsigned char rhythm; /* percussion mode flag */
|
unsigned char rhythm; /* percussion mode flag */
|
||||||
} snd_dm_fm_info_t;
|
};
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Data structure composing an FM "note" or sound event.
|
* Data structure composing an FM "note" or sound event.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
typedef struct snd_dm_fm_voice {
|
struct snd_dm_fm_voice {
|
||||||
unsigned char op; /* operator cell (0 or 1) */
|
unsigned char op; /* operator cell (0 or 1) */
|
||||||
unsigned char voice; /* FM voice (0 to 17) */
|
unsigned char voice; /* FM voice (0 to 17) */
|
||||||
|
|
||||||
|
|
@ -60,25 +60,25 @@ typedef struct snd_dm_fm_voice {
|
||||||
unsigned char left; /* stereo left */
|
unsigned char left; /* stereo left */
|
||||||
unsigned char right; /* stereo right */
|
unsigned char right; /* stereo right */
|
||||||
unsigned char waveform; /* 3 bits: waveform shape */
|
unsigned char waveform; /* 3 bits: waveform shape */
|
||||||
} snd_dm_fm_voice_t;
|
};
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* This describes an FM note by its voice, octave, frequency number (10bit)
|
* This describes an FM note by its voice, octave, frequency number (10bit)
|
||||||
* and key on/off.
|
* and key on/off.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
typedef struct snd_dm_fm_note {
|
struct snd_dm_fm_note {
|
||||||
unsigned char voice; /* 0-17 voice channel */
|
unsigned char voice; /* 0-17 voice channel */
|
||||||
unsigned char octave; /* 3 bits: what octave to play */
|
unsigned char octave; /* 3 bits: what octave to play */
|
||||||
unsigned int fnum; /* 10 bits: frequency number */
|
unsigned int fnum; /* 10 bits: frequency number */
|
||||||
unsigned char key_on; /* set for active, clear for silent */
|
unsigned char key_on; /* set for active, clear for silent */
|
||||||
} snd_dm_fm_note_t;
|
};
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* FM parameters that apply globally to all voices, and thus are not "notes"
|
* FM parameters that apply globally to all voices, and thus are not "notes"
|
||||||
*/
|
*/
|
||||||
|
|
||||||
typedef struct snd_dm_fm_params {
|
struct snd_dm_fm_params {
|
||||||
unsigned char am_depth; /* amplitude modulation depth (1=hi) */
|
unsigned char am_depth; /* amplitude modulation depth (1=hi) */
|
||||||
unsigned char vib_depth; /* vibrato depth (1=hi) */
|
unsigned char vib_depth; /* vibrato depth (1=hi) */
|
||||||
unsigned char kbd_split; /* keyboard split */
|
unsigned char kbd_split; /* keyboard split */
|
||||||
|
|
@ -90,20 +90,22 @@ typedef struct snd_dm_fm_params {
|
||||||
unsigned char tomtom;
|
unsigned char tomtom;
|
||||||
unsigned char cymbal;
|
unsigned char cymbal;
|
||||||
unsigned char hihat;
|
unsigned char hihat;
|
||||||
} snd_dm_fm_params_t;
|
};
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* FM mode ioctl settings
|
* FM mode ioctl settings
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#define SNDRV_DM_FM_IOCTL_INFO _IOR('H', 0x20, snd_dm_fm_info_t)
|
#define SNDRV_DM_FM_IOCTL_INFO _IOR('H', 0x20, struct snd_dm_fm_info)
|
||||||
#define SNDRV_DM_FM_IOCTL_RESET _IO ('H', 0x21)
|
#define SNDRV_DM_FM_IOCTL_RESET _IO ('H', 0x21)
|
||||||
#define SNDRV_DM_FM_IOCTL_PLAY_NOTE _IOW('H', 0x22, snd_dm_fm_note_t)
|
#define SNDRV_DM_FM_IOCTL_PLAY_NOTE _IOW('H', 0x22, struct snd_dm_fm_note)
|
||||||
#define SNDRV_DM_FM_IOCTL_SET_VOICE _IOW('H', 0x23, snd_dm_fm_voice_t)
|
#define SNDRV_DM_FM_IOCTL_SET_VOICE _IOW('H', 0x23, struct snd_dm_fm_voice)
|
||||||
#define SNDRV_DM_FM_IOCTL_SET_PARAMS _IOW('H', 0x24, snd_dm_fm_params_t)
|
#define SNDRV_DM_FM_IOCTL_SET_PARAMS _IOW('H', 0x24, struct snd_dm_fm_params)
|
||||||
#define SNDRV_DM_FM_IOCTL_SET_MODE _IOW('H', 0x25, int)
|
#define SNDRV_DM_FM_IOCTL_SET_MODE _IOW('H', 0x25, int)
|
||||||
/* for OPL3 only */
|
/* for OPL3 only */
|
||||||
#define SNDRV_DM_FM_IOCTL_SET_CONNECTION _IOW('H', 0x26, int)
|
#define SNDRV_DM_FM_IOCTL_SET_CONNECTION _IOW('H', 0x26, int)
|
||||||
|
/* SBI patch management */
|
||||||
|
#define SNDRV_DM_FM_IOCTL_CLEAR_PATCHES _IO ('H', 0x40)
|
||||||
|
|
||||||
#define SNDRV_DM_FM_OSS_IOCTL_RESET 0x20
|
#define SNDRV_DM_FM_OSS_IOCTL_RESET 0x20
|
||||||
#define SNDRV_DM_FM_OSS_IOCTL_PLAY_NOTE 0x21
|
#define SNDRV_DM_FM_OSS_IOCTL_PLAY_NOTE 0x21
|
||||||
|
|
@ -112,4 +114,21 @@ typedef struct snd_dm_fm_params {
|
||||||
#define SNDRV_DM_FM_OSS_IOCTL_SET_MODE 0x24
|
#define SNDRV_DM_FM_OSS_IOCTL_SET_MODE 0x24
|
||||||
#define SNDRV_DM_FM_OSS_IOCTL_SET_OPL 0x25
|
#define SNDRV_DM_FM_OSS_IOCTL_SET_OPL 0x25
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Patch Record - fixed size for write
|
||||||
|
*/
|
||||||
|
|
||||||
|
#define FM_KEY_SBI "SBI\032"
|
||||||
|
#define FM_KEY_2OP "2OP\032"
|
||||||
|
#define FM_KEY_4OP "4OP\032"
|
||||||
|
|
||||||
|
struct sbi_patch {
|
||||||
|
unsigned char prog;
|
||||||
|
unsigned char bank;
|
||||||
|
char key[4];
|
||||||
|
char name[25];
|
||||||
|
char extension[7];
|
||||||
|
unsigned char data[32];
|
||||||
|
};
|
||||||
|
|
||||||
#endif /* __SOUND_ASOUND_FM_H */
|
#endif /* __SOUND_ASOUND_FM_H */
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue