Lines Matching defs: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 */
516 /* patch must be opened */
524 printk(KERN_ERR "Soundfont error: invalid patch zone length\n");
541 "patch length(%ld) is smaller than nvoices(%d)\n",
702 /* patch must be opened */
936 /* load GUS patch */
941 struct patch_info patch;
948 if (count < (long)sizeof(patch)) {
949 snd_printk(KERN_ERR "patch record too small %ld\n", count);
952 if (copy_from_user(&patch, data, sizeof(patch)))
955 count -= sizeof(patch);
956 data += sizeof(patch);
966 smp->v.end = patch.len;
967 smp->v.loopstart = patch.loop_start;
968 smp->v.loopend = patch.loop_end;
969 smp->v.size = patch.len;
973 if (!(patch.mode & WAVE_16_BITS))
975 if (patch.mode & WAVE_UNSIGNED)
978 if (!(patch.mode & (WAVE_LOOPING|WAVE_BIDIR_LOOP|WAVE_LOOP_BACK)))
980 if (patch.mode & WAVE_BIDIR_LOOP)
982 if (patch.mode & WAVE_LOOP_BACK)
985 if (patch.mode & WAVE_16_BITS) {
1023 zone->v.rate_offset = calc_rate_offset(patch.base_freq);
1024 note = freq_to_note(patch.base_note);
1027 zone->v.low = (freq_to_note(patch.low_note) + 99) / 100;
1028 zone->v.high = freq_to_note(patch.high_note) / 100;
1030 zone->v.pan = (patch.panning + 128) / 2;
1034 (int)patch.base_freq, zone->v.rate_offset,
1040 if (patch.mode & WAVE_ENVELOPES) {
1043 (patch.env_rate[0], 0, patch.env_offset[0]);
1045 (patch.env_rate[1], patch.env_offset[0],
1046 patch.env_offset[1]);
1048 (patch.env_rate[2], patch.env_offset[1],
1049 patch.env_offset[2]);
1051 (patch.env_rate[3], patch.env_offset[1],
1052 patch.env_offset[4]);
1054 (patch.env_rate[4], patch.env_offset[3],
1055 patch.env_offset[4]);
1057 (patch.env_rate[5], patch.env_offset[4],
1058 patch.env_offset[5]);
1062 zone->v.parm.voldcysus = (calc_gus_sustain(patch.env_offset[2]) << 8) |
1065 zone->v.attenuation = calc_gus_attenuation(patch.env_offset[0]);
1077 if (patch.mode & WAVE_FAST_RELEASE) {
1082 if (patch.mode & WAVE_TREMOLO) {
1083 int rate = (patch.tremolo_rate * 1000 / 38) / 42;
1084 zone->v.parm.tremfrq = ((patch.tremolo_depth / 2) << 8) | rate;
1087 if (patch.mode & WAVE_VIBRATO) {
1088 int rate = (patch.vibrato_rate * 1000 / 38) / 42;
1089 zone->v.parm.fm2frq2 = ((patch.vibrato_depth / 6) << 8) | rate;
1102 zone->instr = patch.instr_no;
1114 /* load GUS patch */