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 u32 make_fmmod(struct snd_emux_voice *vp);
37 static u32 make_fm2frq2(struct snd_emux_voice *vp);
83 struct snd_emux_voice *vp;
93 vp = &emu->voices[best[i].voice];
94 ch = vp->ch;
102 vp->emu->num_voices--;
103 vp->ch = -1;
104 vp->state = SNDRV_EMUX_ST_OFF;
118 release_voice(struct snd_emux_voice *vp)
122 hw = vp->hw;
123 snd_emu10k1_ptr_write_multiple(hw, vp->ch,
124 DCYSUSM, (unsigned char)vp->reg.parm.modrelease | DCYSUSM_PHASE1_MASK,
125 DCYSUSV, (unsigned char)vp->reg.parm.volrelease | DCYSUSV_PHASE1_MASK | DCYSUSV_CHANNELENABLE_MASK,
134 terminate_voice(struct snd_emux_voice *vp)
138 if (snd_BUG_ON(!vp))
140 hw = vp->hw;
141 snd_emu10k1_ptr_write_multiple(hw, vp->ch,
148 if (vp->block) {
150 emem = (struct snd_emu10k1_memblk *)vp->block;
160 free_voice(struct snd_emux_voice *vp)
164 hw = vp->hw;
169 if (hw && (vp->ch >= 0)) {
170 snd_emu10k1_voice_free(hw, &hw->voices[vp->ch]);
171 vp->emu->num_voices--;
172 vp->ch = -1;
181 update_voice(struct snd_emux_voice *vp, int update)
185 hw = vp->hw;
187 snd_emu10k1_ptr_write(hw, IFATN_ATTENUATION, vp->ch, vp->avol);
189 snd_emu10k1_ptr_write(hw, IP, vp->ch, vp->apitch);
191 snd_emu10k1_ptr_write(hw, PTRX_FXSENDAMOUNT_A, vp->ch, vp->apan);
192 snd_emu10k1_ptr_write(hw, PTRX_FXSENDAMOUNT_B, vp->ch, vp->aaux);
195 snd_emu10k1_ptr_write(hw, FMMOD, vp->ch, make_fmmod(vp));
197 snd_emu10k1_ptr_write(hw, TREMFRQ, vp->ch, vp->reg.parm.tremfrq);
199 snd_emu10k1_ptr_write(hw, FM2FRQ2, vp->ch, make_fm2frq2(vp));
201 snd_emu10k1_ptr_write(hw, CCCA_RESONANCE, vp->ch, vp->reg.parm.filterQ);
213 struct snd_emux_voice *vp;
229 vp = &emu->voices[i];
230 state = vp->state;
232 if (vp->ch < 0) {
243 val = snd_emu10k1_ptr_read(hw, CVCF_CURRENTVOL, vp->ch);
257 (vp->reg.sample_mode & SNDRV_SFNT_SAMPLE_SINGLESHOT)) {
258 val = snd_emu10k1_ptr_read(hw, CCCA_CURRADDR, vp->ch) - 64;
259 if (val >= vp->reg.loopstart)
263 if (vp->time < bp->time) {
264 bp->time = vp->time;
279 struct snd_emux_voice *vp;
288 vp = &emu->voices[best[i].voice];
289 if (vp->ch < 0) {
294 vp->ch = hwvoice->number;
297 return vp;
309 start_voice(struct snd_emux_voice *vp)
319 hw = vp->hw;
320 ch = vp->ch;
323 chan = vp->chan;
325 emem = (struct snd_emu10k1_memblk *)vp->block;
334 vp->reg.start += mapped_offset;
335 vp->reg.end += mapped_offset;
336 vp->reg.loopstart += mapped_offset;
337 vp->reg.loopend += mapped_offset;
351 temp = vp->reg.parm.reverb;
352 temp += (int)vp->chan->control[MIDI_CTL_E1_REVERB_DEPTH] * 9 / 10;
354 addr = vp->reg.loopstart;
357 addr = vp->reg.loopend;
358 temp = vp->reg.parm.chorus;
365 addr = vp->reg.start + 64;
366 temp = vp->reg.parm.filterQ;
368 if (vp->apitch < 0xe400)
371 unsigned int shift = (vp->apitch - 0xe000) >> 10;
374 if (vp->reg.sample_mode & SNDRV_SFNT_SAMPLE_8BITS)
377 vtarget = (unsigned int)vp->vtarget << 16;
388 IP, vp->apitch,
391 ENVVAL, vp->reg.parm.moddelay,
392 ATKHLDM, vp->reg.parm.modatkhld,
393 DCYSUSM, vp->reg.parm.moddcysus,
394 ENVVOL, vp->reg.parm.voldelay,
395 ATKHLDV, vp->reg.parm.volatkhld,
400 IFATN, (unsigned int)vp->acutoff << 8 | (unsigned char)vp->avol,
403 PEFE, vp->reg.parm.pefe,
406 LFOVAL1, vp->reg.parm.lfo1delay,
407 LFOVAL2, vp->reg.parm.lfo2delay,
410 FMMOD, make_fmmod(vp),
412 TREMFRQ, vp->reg.parm.tremfrq,
414 FM2FRQ2, make_fm2frq2(vp),
437 VTFT, vtarget | vp->ftarget,
450 trigger_voice(struct snd_emux_voice *vp)
456 hw = vp->hw;
458 emem = (struct snd_emu10k1_memblk *)vp->block;
463 ptarget = (unsigned int)vp->ptarget << 16;
465 ptarget = IP_TO_CP(vp->apitch);
467 snd_emu10k1_ptr_write_multiple(hw, vp->ch,
469 PTRX, ptarget | (vp->apan << 8) | vp->aaux,
475 DCYSUSV, vp->reg.parm.voldcysus | DCYSUSV_CHANNELENABLE_MASK,
484 make_fmmod(struct snd_emux_voice *vp)
490 pitch = (char)(vp->reg.parm.fmmod>>8);
491 cutoff = (vp->reg.parm.fmmod & 0xff);
492 modulation = vp->chan->gm_modulation + vp->chan->midi_pressure;
500 make_fm2frq2(struct snd_emux_voice *vp)
506 pitch = (char)(vp->reg.parm.fm2frq2>>8);
507 freq = vp->reg.parm.fm2frq2 & 0xff;
508 modulation = vp->chan->gm_modulation + vp->chan->midi_pressure;