Lines Matching refs:patch

91  * close the patch if the patch was opened by this client.
108 * Deal with a soundfont patch. Any driver could use these routines
119 struct soundfont_patch_info patch;
123 if (count < (long)sizeof(patch)) {
124 snd_printk(KERN_ERR "patch record too small %ld\n", count);
127 if (copy_from_user(&patch, data, sizeof(patch)))
130 count -= sizeof(patch);
131 data += sizeof(patch);
133 if (patch.key != SNDRV_OSS_SOUNDFONT_PATCH) {
134 snd_printk(KERN_ERR "The wrong kind of patch %x\n", patch.key);
137 if (count < patch.len) {
139 count, patch.len);
142 if (patch.len < 0) {
143 snd_printk(KERN_ERR "poor length %d\n", patch.len);
147 if (patch.type == SNDRV_SFNT_OPEN_PATCH) {
155 /* check if other client already opened patch */
165 switch (patch.type) {
176 /*rc = replace_data(&patch, data, count);*/
182 rc = probe_data(sflist, patch.optarg);
185 /* patch must be opened */
188 "patch not opened\n");
192 bank = ((unsigned short)patch.optarg >> 8) & 0xff;
193 instr = (unsigned short)patch.optarg & 0xff;
217 /* open patch; create sf list */
301 * Close the current patch.
323 /* patch must be opened */
519 /* patch must be opened */
528 printk(KERN_ERR "Soundfont error: invalid patch zone length\n");
545 "patch length(%ld) is smaller than nvoices(%d)\n",
706 /* patch must be opened */
942 /* load GUS patch */
947 struct patch_info patch;
954 if (count < (long)sizeof(patch)) {
955 snd_printk(KERN_ERR "patch record too small %ld\n", count);
958 if (copy_from_user(&patch, data, sizeof(patch)))
961 count -= sizeof(patch);
962 data += sizeof(patch);
973 smp->v.end = patch.len;
974 smp->v.loopstart = patch.loop_start;
975 smp->v.loopend = patch.loop_end;
976 smp->v.size = patch.len;
980 if (!(patch.mode & WAVE_16_BITS))
982 if (patch.mode & WAVE_UNSIGNED)
985 if (!(patch.mode & (WAVE_LOOPING|WAVE_BIDIR_LOOP|WAVE_LOOP_BACK)))
987 if (patch.mode & WAVE_BIDIR_LOOP)
989 if (patch.mode & WAVE_LOOP_BACK)
992 if (patch.mode & WAVE_16_BITS) {
1031 zone->v.rate_offset = calc_rate_offset(patch.base_freq);
1032 note = freq_to_note(patch.base_note);
1035 zone->v.low = (freq_to_note(patch.low_note) + 99) / 100;
1036 zone->v.high = freq_to_note(patch.high_note) / 100;
1038 zone->v.pan = (patch.panning + 128) / 2;
1042 (int)patch.base_freq, zone->v.rate_offset,
1048 if (patch.mode & WAVE_ENVELOPES) {
1051 (patch.env_rate[0], 0, patch.env_offset[0]);
1053 (patch.env_rate[1], patch.env_offset[0],
1054 patch.env_offset[1]);
1056 (patch.env_rate[2], patch.env_offset[1],
1057 patch.env_offset[2]);
1059 (patch.env_rate[3], patch.env_offset[1],
1060 patch.env_offset[4]);
1062 (patch.env_rate[4], patch.env_offset[3],
1063 patch.env_offset[4]);
1065 (patch.env_rate[5], patch.env_offset[4],
1066 patch.env_offset[5]);
1070 zone->v.parm.voldcysus = (calc_gus_sustain(patch.env_offset[2]) << 8) |
1073 zone->v.attenuation = calc_gus_attenuation(patch.env_offset[0]);
1085 if (patch.mode & WAVE_FAST_RELEASE) {
1090 if (patch.mode & WAVE_TREMOLO) {
1091 int rate = (patch.tremolo_rate * 1000 / 38) / 42;
1092 zone->v.parm.tremfrq = ((patch.tremolo_depth / 2) << 8) | rate;
1095 if (patch.mode & WAVE_VIBRATO) {
1096 int rate = (patch.vibrato_rate * 1000 / 38) / 42;
1097 zone->v.parm.fm2frq2 = ((patch.vibrato_depth / 6) << 8) | rate;
1110 zone->instr = patch.instr_no;
1122 /* load GUS patch */