Lines Matching refs:vp
30 static int start_voice(struct snd_emux_voice *vp);
31 static void trigger_voice(struct snd_emux_voice *vp);
32 static void release_voice(struct snd_emux_voice *vp);
33 static void update_voice(struct snd_emux_voice *vp, int update);
34 static void terminate_voice(struct snd_emux_voice *vp);
35 static void free_voice(struct snd_emux_voice *vp);
36 static void set_fmmod(struct snd_emu10k1 *hw, struct snd_emux_voice *vp);
37 static void set_fm2frq2(struct snd_emu10k1 *hw, struct snd_emux_voice *vp);
38 static void set_filterQ(struct snd_emu10k1 *hw, struct snd_emux_voice *vp);
82 struct snd_emux_voice *vp; in snd_emu10k1_synth_get_voice() local
92 vp = &emu->voices[best[i].voice]; in snd_emu10k1_synth_get_voice()
93 ch = vp->ch; in snd_emu10k1_synth_get_voice()
101 vp->emu->num_voices--; in snd_emu10k1_synth_get_voice()
102 vp->ch = -1; in snd_emu10k1_synth_get_voice()
103 vp->state = SNDRV_EMUX_ST_OFF; in snd_emu10k1_synth_get_voice()
117 release_voice(struct snd_emux_voice *vp) in release_voice() argument
122 hw = vp->hw; in release_voice()
123 dcysusv = 0x8000 | (unsigned char)vp->reg.parm.modrelease; in release_voice()
124 snd_emu10k1_ptr_write(hw, DCYSUSM, vp->ch, dcysusv); in release_voice()
125 dcysusv = 0x8000 | (unsigned char)vp->reg.parm.volrelease | DCYSUSV_CHANNELENABLE_MASK; in release_voice()
126 snd_emu10k1_ptr_write(hw, DCYSUSV, vp->ch, dcysusv); in release_voice()
134 terminate_voice(struct snd_emux_voice *vp) in terminate_voice() argument
138 if (snd_BUG_ON(!vp)) in terminate_voice()
140 hw = vp->hw; in terminate_voice()
141 snd_emu10k1_ptr_write(hw, DCYSUSV, vp->ch, 0x807f | DCYSUSV_CHANNELENABLE_MASK); in terminate_voice()
142 if (vp->block) { in terminate_voice()
144 emem = (struct snd_emu10k1_memblk *)vp->block; in terminate_voice()
154 free_voice(struct snd_emux_voice *vp) in free_voice() argument
158 hw = vp->hw; in free_voice()
163 if (hw && (vp->ch >= 0)) { in free_voice()
164 snd_emu10k1_ptr_write(hw, IFATN, vp->ch, 0xff00); in free_voice()
165 snd_emu10k1_ptr_write(hw, DCYSUSV, vp->ch, 0x807f | DCYSUSV_CHANNELENABLE_MASK); in free_voice()
167 snd_emu10k1_ptr_write(hw, VTFT, vp->ch, 0xffff); in free_voice()
168 snd_emu10k1_ptr_write(hw, CVCF, vp->ch, 0xffff); in free_voice()
169 snd_emu10k1_voice_free(hw, &hw->voices[vp->ch]); in free_voice()
170 vp->emu->num_voices--; in free_voice()
171 vp->ch = -1; in free_voice()
180 update_voice(struct snd_emux_voice *vp, int update) in update_voice() argument
184 hw = vp->hw; in update_voice()
186 snd_emu10k1_ptr_write(hw, IFATN_ATTENUATION, vp->ch, vp->avol); in update_voice()
188 snd_emu10k1_ptr_write(hw, IP, vp->ch, vp->apitch); in update_voice()
190 snd_emu10k1_ptr_write(hw, PTRX_FXSENDAMOUNT_A, vp->ch, vp->apan); in update_voice()
191 snd_emu10k1_ptr_write(hw, PTRX_FXSENDAMOUNT_B, vp->ch, vp->aaux); in update_voice()
194 set_fmmod(hw, vp); in update_voice()
196 snd_emu10k1_ptr_write(hw, TREMFRQ, vp->ch, vp->reg.parm.tremfrq); in update_voice()
198 set_fm2frq2(hw, vp); in update_voice()
200 set_filterQ(hw, vp); in update_voice()
212 struct snd_emux_voice *vp; in lookup_voices() local
228 vp = &emu->voices[i]; in lookup_voices()
229 state = vp->state; in lookup_voices()
231 if (vp->ch < 0) { in lookup_voices()
242 val = snd_emu10k1_ptr_read(hw, CVCF_CURRENTVOL, vp->ch); in lookup_voices()
256 (vp->reg.sample_mode & SNDRV_SFNT_SAMPLE_SINGLESHOT)) { in lookup_voices()
257 val = snd_emu10k1_ptr_read(hw, CCCA_CURRADDR, vp->ch); in lookup_voices()
258 if (val >= vp->reg.loopstart) in lookup_voices()
262 if (vp->time < bp->time) { in lookup_voices()
263 bp->time = vp->time; in lookup_voices()
278 struct snd_emux_voice *vp; in get_voice() local
287 vp = &emu->voices[best[i].voice]; in get_voice()
288 if (vp->ch < 0) { in get_voice()
293 vp->ch = hwvoice->number; in get_voice()
296 return vp; in get_voice()
308 start_voice(struct snd_emux_voice *vp) in start_voice() argument
317 hw = vp->hw; in start_voice()
318 ch = vp->ch; in start_voice()
321 chan = vp->chan; in start_voice()
323 emem = (struct snd_emu10k1_memblk *)vp->block; in start_voice()
332 vp->reg.start += mapped_offset; in start_voice()
333 vp->reg.end += mapped_offset; in start_voice()
334 vp->reg.loopstart += mapped_offset; in start_voice()
335 vp->reg.loopend += mapped_offset; in start_voice()
357 snd_emu10k1_ptr_write(hw, IP, vp->ch, vp->apitch); in start_voice()
360 snd_emu10k1_ptr_write(hw, ENVVAL, ch, vp->reg.parm.moddelay); in start_voice()
361 snd_emu10k1_ptr_write(hw, ATKHLDM, ch, vp->reg.parm.modatkhld); in start_voice()
362 snd_emu10k1_ptr_write(hw, DCYSUSM, ch, vp->reg.parm.moddcysus); in start_voice()
363 snd_emu10k1_ptr_write(hw, ENVVOL, ch, vp->reg.parm.voldelay); in start_voice()
364 snd_emu10k1_ptr_write(hw, ATKHLDV, ch, vp->reg.parm.volatkhld); in start_voice()
369 temp = (unsigned int)vp->acutoff << 8 | (unsigned char)vp->avol; in start_voice()
370 snd_emu10k1_ptr_write(hw, IFATN, vp->ch, temp); in start_voice()
373 snd_emu10k1_ptr_write(hw, PEFE, ch, vp->reg.parm.pefe); in start_voice()
376 snd_emu10k1_ptr_write(hw, LFOVAL1, ch, vp->reg.parm.lfo1delay); in start_voice()
377 snd_emu10k1_ptr_write(hw, LFOVAL2, ch, vp->reg.parm.lfo2delay); in start_voice()
380 set_fmmod(hw, vp); in start_voice()
382 snd_emu10k1_ptr_write(hw, TREMFRQ, vp->ch, vp->reg.parm.tremfrq); in start_voice()
384 set_fm2frq2(hw, vp); in start_voice()
387 temp = vp->reg.parm.reverb; in start_voice()
388 temp += (int)vp->chan->control[MIDI_CTL_E1_REVERB_DEPTH] * 9 / 10; in start_voice()
390 addr = vp->reg.loopstart; in start_voice()
391 snd_emu10k1_ptr_write(hw, PSST, vp->ch, (temp << 24) | addr); in start_voice()
394 addr = vp->reg.loopend; in start_voice()
395 temp = vp->reg.parm.chorus; in start_voice()
414 if (vp->reg.sample_mode & SNDRV_SFNT_SAMPLE_8BITS) in start_voice()
440 addr = vp->reg.start; in start_voice()
441 temp = vp->reg.parm.filterQ; in start_voice()
443 if (vp->apitch < 0xe400) in start_voice()
446 unsigned int shift = (vp->apitch - 0xe000) >> 10; in start_voice()
449 if (vp->reg.sample_mode & SNDRV_SFNT_SAMPLE_8BITS) in start_voice()
454 temp = (unsigned int)vp->vtarget << 16; in start_voice()
455 snd_emu10k1_ptr_write(hw, VTFT, ch, temp | vp->ftarget); in start_voice()
464 trigger_voice(struct snd_emux_voice *vp) in trigger_voice() argument
470 hw = vp->hw; in trigger_voice()
472 emem = (struct snd_emu10k1_memblk *)vp->block; in trigger_voice()
477 ptarget = (unsigned int)vp->ptarget << 16; in trigger_voice()
479 ptarget = IP_TO_CP(vp->apitch); in trigger_voice()
482 temp = ptarget | (vp->apan << 8) | vp->aaux; in trigger_voice()
483 snd_emu10k1_ptr_write(hw, PTRX, vp->ch, temp); in trigger_voice()
486 snd_emu10k1_ptr_write(hw, CPF, vp->ch, ptarget); in trigger_voice()
489 snd_emu10k1_ptr_write(hw, DCYSUSV, vp->ch, vp->reg.parm.voldcysus|DCYSUSV_CHANNELENABLE_MASK); in trigger_voice()
496 set_fmmod(struct snd_emu10k1 *hw, struct snd_emux_voice *vp) in set_fmmod() argument
503 pitch = (char)(vp->reg.parm.fmmod>>8); in set_fmmod()
504 cutoff = (vp->reg.parm.fmmod & 0xff); in set_fmmod()
505 modulation = vp->chan->gm_modulation + vp->chan->midi_pressure; in set_fmmod()
509 snd_emu10k1_ptr_write(hw, FMMOD, vp->ch, fmmod); in set_fmmod()
514 set_fm2frq2(struct snd_emu10k1 *hw, struct snd_emux_voice *vp) in set_fm2frq2() argument
521 pitch = (char)(vp->reg.parm.fm2frq2>>8); in set_fm2frq2()
522 freq = vp->reg.parm.fm2frq2 & 0xff; in set_fm2frq2()
523 modulation = vp->chan->gm_modulation + vp->chan->midi_pressure; in set_fm2frq2()
527 snd_emu10k1_ptr_write(hw, FM2FRQ2, vp->ch, fm2frq2); in set_fm2frq2()
532 set_filterQ(struct snd_emu10k1 *hw, struct snd_emux_voice *vp) in set_filterQ() argument
535 val = snd_emu10k1_ptr_read(hw, CCCA, vp->ch) & ~CCCA_RESONANCE; in set_filterQ()
536 val |= (vp->reg.parm.filterQ << 28); in set_filterQ()
537 snd_emu10k1_ptr_write(hw, CCCA, vp->ch, val); in set_filterQ()