0001
0002 #ifndef __SOUND_ASOUND_FM_H
0003 #define __SOUND_ASOUND_FM_H
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022
0023
0024
0025
0026
0027
0028
0029
0030 #define SNDRV_DM_FM_MODE_OPL2 0x00
0031 #define SNDRV_DM_FM_MODE_OPL3 0x01
0032
0033 struct snd_dm_fm_info {
0034 unsigned char fm_mode;
0035 unsigned char rhythm;
0036 };
0037
0038
0039
0040
0041
0042 struct snd_dm_fm_voice {
0043 unsigned char op;
0044 unsigned char voice;
0045
0046 unsigned char am;
0047 unsigned char vibrato;
0048 unsigned char do_sustain;
0049 unsigned char kbd_scale;
0050 unsigned char harmonic;
0051 unsigned char scale_level;
0052 unsigned char volume;
0053
0054 unsigned char attack;
0055 unsigned char decay;
0056 unsigned char sustain;
0057 unsigned char release;
0058
0059 unsigned char feedback;
0060 unsigned char connection;
0061 unsigned char left;
0062 unsigned char right;
0063 unsigned char waveform;
0064 };
0065
0066
0067
0068
0069
0070
0071 struct snd_dm_fm_note {
0072 unsigned char voice;
0073 unsigned char octave;
0074 unsigned int fnum;
0075 unsigned char key_on;
0076 };
0077
0078
0079
0080
0081
0082 struct snd_dm_fm_params {
0083 unsigned char am_depth;
0084 unsigned char vib_depth;
0085 unsigned char kbd_split;
0086 unsigned char rhythm;
0087
0088
0089 unsigned char bass;
0090 unsigned char snare;
0091 unsigned char tomtom;
0092 unsigned char cymbal;
0093 unsigned char hihat;
0094 };
0095
0096
0097
0098
0099
0100 #define SNDRV_DM_FM_IOCTL_INFO _IOR('H', 0x20, struct snd_dm_fm_info)
0101 #define SNDRV_DM_FM_IOCTL_RESET _IO ('H', 0x21)
0102 #define SNDRV_DM_FM_IOCTL_PLAY_NOTE _IOW('H', 0x22, struct snd_dm_fm_note)
0103 #define SNDRV_DM_FM_IOCTL_SET_VOICE _IOW('H', 0x23, struct snd_dm_fm_voice)
0104 #define SNDRV_DM_FM_IOCTL_SET_PARAMS _IOW('H', 0x24, struct snd_dm_fm_params)
0105 #define SNDRV_DM_FM_IOCTL_SET_MODE _IOW('H', 0x25, int)
0106
0107 #define SNDRV_DM_FM_IOCTL_SET_CONNECTION _IOW('H', 0x26, int)
0108
0109 #define SNDRV_DM_FM_IOCTL_CLEAR_PATCHES _IO ('H', 0x40)
0110
0111 #define SNDRV_DM_FM_OSS_IOCTL_RESET 0x20
0112 #define SNDRV_DM_FM_OSS_IOCTL_PLAY_NOTE 0x21
0113 #define SNDRV_DM_FM_OSS_IOCTL_SET_VOICE 0x22
0114 #define SNDRV_DM_FM_OSS_IOCTL_SET_PARAMS 0x23
0115 #define SNDRV_DM_FM_OSS_IOCTL_SET_MODE 0x24
0116 #define SNDRV_DM_FM_OSS_IOCTL_SET_OPL 0x25
0117
0118
0119
0120
0121
0122 #define FM_KEY_SBI "SBI\032"
0123 #define FM_KEY_2OP "2OP\032"
0124 #define FM_KEY_4OP "4OP\032"
0125
0126 struct sbi_patch {
0127 unsigned char prog;
0128 unsigned char bank;
0129 char key[4];
0130 char name[25];
0131 char extension[7];
0132 unsigned char data[32];
0133 };
0134
0135 #endif