Lines Matching +full:vp +full:- +full:p

1 // SPDX-License-Identifier: GPL-2.0-or-later
6 * Copyright (c) 1999-2000 Takashi Iwai <[email protected]>
19 #define xoffsetof(type,tag) ((long)(&((type)NULL)->tag) - (long)(NULL))
40 long offset; /* offset in parameter record (-1 = not written) */
41 int update; /* flgas for real-time update */
61 {PARM_SIGN_HI, -128, 127, parm_offset(tremfrq), SNDRV_EMUX_UPDATE_TREMFREQ}, /* lfo1 vol */
62 {PARM_SIGN_HI, -128, 127, parm_offset(fmmod), SNDRV_EMUX_UPDATE_FMMOD}, /* lfo1 pitch */
67 {PARM_SIGN_HI, -128, 127, parm_offset(fm2frq2), SNDRV_EMUX_UPDATE_FM2FRQ2}, /* lfo2 pitch */
69 {PARM_WORD, 0, 0xffff, -1, SNDRV_EMUX_UPDATE_PITCH}, /* initial pitch */
75 {PARM_WORD, 0, 0xffff, -1, 0}, /* sample start */
76 {PARM_WORD, 0, 0xffff, -1, 0}, /* loop start */
77 {PARM_WORD, 0, 0xffff, -1, 0}, /* loop end */
78 {PARM_WORD, 0, 0xffff, -1, 0}, /* coarse sample start */
79 {PARM_WORD, 0, 0xffff, -1, 0}, /* coarse loop start */
80 {PARM_WORD, 0, 0xffff, -1, 0}, /* coarse loop end */
81 {PARM_BYTE, 0, 0xff, -1, SNDRV_EMUX_UPDATE_VOLUME}, /* initial attenuation */
89 struct snd_emux_effect_table *fx = chan->private; in effect_set_byte()
91 effect = fx->val[type]; in effect_set_byte()
92 if (fx->flag[type] == EMUX_FX_FLAG_ADD) { in effect_set_byte()
110 struct snd_emux_effect_table *fx = chan->private; in effect_set_word()
112 effect = *(unsigned short*)&fx->val[type]; in effect_set_word()
113 if (fx->flag[type] == EMUX_FX_FLAG_ADD) in effect_set_word()
127 struct snd_emux_effect_table *fx = chan->private; in effect_get_offset()
129 if (fx->flag[hi]) in effect_get_offset()
130 addr = (short)fx->val[hi]; in effect_get_offset()
132 if (fx->flag[lo]) in effect_get_offset()
133 addr += (short)fx->val[lo]; in effect_get_offset()
140 /* change effects - for OSS sequencer compatibility */
173 emu = port->emu; in snd_emux_send_effect()
174 fx = chan->private; in snd_emux_send_effect()
180 fx->val[type] = val; in snd_emux_send_effect()
181 fx->flag[type] = mode; in snd_emux_send_effect()
198 spin_lock_irqsave(&emu->voice_lock, flags); in snd_emux_send_effect()
199 for (i = 0; i < emu->max_voices; i++) { in snd_emux_send_effect()
200 struct snd_emux_voice *vp = &emu->voices[i]; in snd_emux_send_effect() local
201 if (!STATE_IS_PLAYING(vp->state) || vp->chan != chan) in snd_emux_send_effect()
203 srcp = (unsigned char*)&vp->reg.parm + offset; in snd_emux_send_effect()
204 origp = (unsigned char*)&vp->zone->v.parm + offset; in snd_emux_send_effect()
213 spin_unlock_irqrestore(&emu->voice_lock, flags); in snd_emux_send_effect()
222 snd_emux_setup_effect(struct snd_emux_voice *vp) in snd_emux_setup_effect() argument
224 struct snd_midi_channel *chan = vp->chan; in snd_emux_setup_effect()
229 fx = chan->private; in snd_emux_setup_effect()
236 if (!fx->flag[i]) in snd_emux_setup_effect()
248 srcp = (unsigned char*)&vp->reg.parm + offset; in snd_emux_setup_effect()
256 vp->reg.start += effect_get_offset(chan, EMUX_FX_SAMPLE_START, in snd_emux_setup_effect()
258 vp->reg.sample_mode); in snd_emux_setup_effect()
260 vp->reg.loopstart += effect_get_offset(chan, EMUX_FX_LOOP_START, in snd_emux_setup_effect()
262 vp->reg.sample_mode); in snd_emux_setup_effect()
264 vp->reg.loopend += effect_get_offset(chan, EMUX_FX_LOOP_END, in snd_emux_setup_effect()
266 vp->reg.sample_mode); in snd_emux_setup_effect()
273 snd_emux_create_effect(struct snd_emux_port *p) in snd_emux_create_effect() argument
276 p->effect = kcalloc(p->chset.max_channels, in snd_emux_create_effect()
278 if (p->effect) { in snd_emux_create_effect()
279 for (i = 0; i < p->chset.max_channels; i++) in snd_emux_create_effect()
280 p->chset.channels[i].private = p->effect + i; in snd_emux_create_effect()
282 for (i = 0; i < p->chset.max_channels; i++) in snd_emux_create_effect()
283 p->chset.channels[i].private = NULL; in snd_emux_create_effect()
288 snd_emux_delete_effect(struct snd_emux_port *p) in snd_emux_delete_effect() argument
290 kfree(p->effect); in snd_emux_delete_effect()
291 p->effect = NULL; in snd_emux_delete_effect()
295 snd_emux_clear_effect(struct snd_emux_port *p) in snd_emux_clear_effect() argument
297 if (p->effect) { in snd_emux_clear_effect()
298 memset(p->effect, 0, sizeof(struct snd_emux_effect_table) * in snd_emux_clear_effect()
299 p->chset.max_channels); in snd_emux_clear_effect()