0001
0002 #ifndef __SOUND_SFNT_INFO_H
0003 #define __SOUND_SFNT_INFO_H
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022
0023
0024
0025
0026 #include <sound/asound.h>
0027
0028
0029
0030
0031
0032 #ifdef SNDRV_BIG_ENDIAN
0033 #define SNDRV_OSS_PATCHKEY(id) (0xfd00|id)
0034 #else
0035 #define SNDRV_OSS_PATCHKEY(id) ((id<<8)|0xfd)
0036 #endif
0037
0038
0039 struct soundfont_patch_info {
0040 unsigned short key;
0041 #define SNDRV_OSS_SOUNDFONT_PATCH SNDRV_OSS_PATCHKEY(0x07)
0042
0043 short device_no;
0044 unsigned short sf_id;
0045 short optarg;
0046 int len;
0047
0048 short type;
0049 #define SNDRV_SFNT_LOAD_INFO 0
0050 #define SNDRV_SFNT_LOAD_DATA 1
0051 #define SNDRV_SFNT_OPEN_PATCH 2
0052 #define SNDRV_SFNT_CLOSE_PATCH 3
0053
0054 #define SNDRV_SFNT_REPLACE_DATA 5
0055 #define SNDRV_SFNT_MAP_PRESET 6
0056
0057 #define SNDRV_SFNT_PROBE_DATA 8
0058 #define SNDRV_SFNT_REMOVE_INFO 9
0059
0060 short reserved;
0061
0062
0063 };
0064
0065
0066
0067
0068
0069
0070 #define SNDRV_SFNT_PATCH_NAME_LEN 32
0071
0072 struct soundfont_open_parm {
0073 unsigned short type;
0074 #define SNDRV_SFNT_PAT_TYPE_MISC 0
0075 #define SNDRV_SFNT_PAT_TYPE_GUS 6
0076 #define SNDRV_SFNT_PAT_TYPE_MAP 7
0077 #define SNDRV_SFNT_PAT_LOCKED 0x100
0078 #define SNDRV_SFNT_PAT_SHARED 0x200
0079
0080 short reserved;
0081 char name[SNDRV_SFNT_PATCH_NAME_LEN];
0082 };
0083
0084
0085
0086
0087
0088
0089
0090 struct soundfont_voice_parm {
0091 unsigned short moddelay;
0092 unsigned short modatkhld;
0093 unsigned short moddcysus;
0094 unsigned short modrelease;
0095 short modkeyhold, modkeydecay;
0096 unsigned short voldelay;
0097 unsigned short volatkhld;
0098 unsigned short voldcysus;
0099 unsigned short volrelease;
0100 short volkeyhold, volkeydecay;
0101 unsigned short lfo1delay;
0102 unsigned short lfo2delay;
0103 unsigned short pefe;
0104 unsigned short fmmod;
0105 unsigned short tremfrq;
0106 unsigned short fm2frq2;
0107 unsigned char cutoff;
0108 unsigned char filterQ;
0109 unsigned char chorus;
0110 unsigned char reverb;
0111 unsigned short reserved[4];
0112 };
0113
0114
0115
0116 struct soundfont_voice_info {
0117 unsigned short sf_id;
0118 unsigned short sample;
0119 int start, end;
0120 int loopstart, loopend;
0121 short rate_offset;
0122 unsigned short mode;
0123 #define SNDRV_SFNT_MODE_ROMSOUND 0x8000
0124 #define SNDRV_SFNT_MODE_STEREO 1
0125 #define SNDRV_SFNT_MODE_LOOPING 2
0126 #define SNDRV_SFNT_MODE_NORELEASE 4
0127 #define SNDRV_SFNT_MODE_INIT_PARM 8
0128
0129 short root;
0130 short tune;
0131 unsigned char low, high;
0132 unsigned char vellow, velhigh;
0133 signed char fixkey, fixvel;
0134 signed char pan, fixpan;
0135 short exclusiveClass;
0136 unsigned char amplitude;
0137 unsigned char attenuation;
0138 short scaleTuning;
0139 struct soundfont_voice_parm parm;
0140 unsigned short sample_mode;
0141 };
0142
0143
0144
0145 struct soundfont_voice_rec_hdr {
0146 unsigned char bank;
0147 unsigned char instr;
0148 char nvoices;
0149 char write_mode;
0150 #define SNDRV_SFNT_WR_APPEND 0
0151 #define SNDRV_SFNT_WR_EXCLUSIVE 1
0152 #define SNDRV_SFNT_WR_REPLACE 2
0153 };
0154
0155
0156
0157
0158
0159
0160
0161 struct soundfont_sample_info {
0162 unsigned short sf_id;
0163 unsigned short sample;
0164 int start, end;
0165 int loopstart, loopend;
0166 int size;
0167 short dummy;
0168 unsigned short mode_flags;
0169 #define SNDRV_SFNT_SAMPLE_8BITS 1
0170 #define SNDRV_SFNT_SAMPLE_UNSIGNED 2
0171 #define SNDRV_SFNT_SAMPLE_NO_BLANK 4
0172 #define SNDRV_SFNT_SAMPLE_SINGLESHOT 8
0173 #define SNDRV_SFNT_SAMPLE_BIDIR_LOOP 16
0174 #define SNDRV_SFNT_SAMPLE_STEREO_LEFT 32
0175 #define SNDRV_SFNT_SAMPLE_STEREO_RIGHT 64
0176 #define SNDRV_SFNT_SAMPLE_REVERSE_LOOP 128
0177 unsigned int truesize;
0178 };
0179
0180
0181
0182
0183
0184
0185 struct soundfont_voice_map {
0186 int map_bank, map_instr, map_key;
0187 int src_bank, src_instr, src_key;
0188 };
0189
0190
0191
0192
0193
0194
0195 #define SNDRV_EMUX_HWDEP_NAME "Emux WaveTable"
0196
0197 #define SNDRV_EMUX_VERSION ((1 << 16) | (0 << 8) | 0)
0198
0199 struct snd_emux_misc_mode {
0200 int port;
0201 int mode;
0202 int value;
0203 int value2;
0204 };
0205
0206 #define SNDRV_EMUX_IOCTL_VERSION _IOR('H', 0x80, unsigned int)
0207 #define SNDRV_EMUX_IOCTL_LOAD_PATCH _IOWR('H', 0x81, struct soundfont_patch_info)
0208 #define SNDRV_EMUX_IOCTL_RESET_SAMPLES _IO('H', 0x82)
0209 #define SNDRV_EMUX_IOCTL_REMOVE_LAST_SAMPLES _IO('H', 0x83)
0210 #define SNDRV_EMUX_IOCTL_MEM_AVAIL _IOW('H', 0x84, int)
0211 #define SNDRV_EMUX_IOCTL_MISC_MODE _IOWR('H', 0x84, struct snd_emux_misc_mode)
0212
0213 #endif