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 + 3;
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)
320 hw = vp->hw;
321 ch = vp->ch;
324 chan = vp->chan;
325 w_16 = !(vp->reg.sample_mode & SNDRV_SFNT_SAMPLE_8BITS);
327 emem = (struct snd_emu10k1_memblk *)vp->block;
336 vp->reg.start += mapped_offset;
337 vp->reg.end += mapped_offset;
338 vp->reg.loopstart += mapped_offset;
339 vp->reg.loopend += mapped_offset;
353 temp = vp->reg.parm.reverb;
354 temp += (int)vp->chan->control[MIDI_CTL_E1_REVERB_DEPTH] * 9 / 10;
356 addr = vp->reg.loopstart;
359 addr = vp->reg.loopend;
360 temp = vp->reg.parm.chorus;
367 addr = vp->reg.start + 64 - 3;
368 temp = vp->reg.parm.filterQ;
370 if (vp->apitch < 0xe400)
373 unsigned int shift = (vp->apitch - 0xe000) >> 10;
379 vtarget = (unsigned int)vp->vtarget << 16;
390 IP, vp->apitch,
393 ENVVAL, vp->reg.parm.moddelay,
394 ATKHLDM, vp->reg.parm.modatkhld,
395 DCYSUSM, vp->reg.parm.moddcysus,
396 ENVVOL, vp->reg.parm.voldelay,
397 ATKHLDV, vp->reg.parm.volatkhld,
402 IFATN, (unsigned int)vp->acutoff << 8 | (unsigned char)vp->avol,
405 PEFE, vp->reg.parm.pefe,
408 LFOVAL1, vp->reg.parm.lfo1delay,
409 LFOVAL2, vp->reg.parm.lfo2delay,
412 FMMOD, make_fmmod(vp),
414 TREMFRQ, vp->reg.parm.tremfrq,
416 FM2FRQ2, make_fm2frq2(vp),
439 VTFT, vtarget | vp->ftarget,
452 trigger_voice(struct snd_emux_voice *vp)
458 hw = vp->hw;
460 emem = (struct snd_emu10k1_memblk *)vp->block;
465 ptarget = (unsigned int)vp->ptarget << 16;
467 ptarget = IP_TO_CP(vp->apitch);
469 snd_emu10k1_ptr_write_multiple(hw, vp->ch,
471 PTRX, ptarget | (vp->apan << 8) | vp->aaux,
477 DCYSUSV, vp->reg.parm.voldcysus | DCYSUSV_CHANNELENABLE_MASK,
486 make_fmmod(struct snd_emux_voice *vp)
492 pitch = (char)(vp->reg.parm.fmmod>>8);
493 cutoff = (vp->reg.parm.fmmod & 0xff);
494 modulation = vp->chan->gm_modulation + vp->chan->midi_pressure;
502 make_fm2frq2(struct snd_emux_voice *vp)
508 pitch = (char)(vp->reg.parm.fm2frq2>>8);
509 freq = vp->reg.parm.fm2frq2 & 0xff;
510 modulation = vp->chan->gm_modulation + vp->chan->midi_pressure;