diff options
author | Tim <tedon@rogers.com> | 2005-10-25 05:10:55 -0400 |
---|---|---|
committer | Jaroslav Kysela <perex@suse.cz> | 2005-11-04 07:20:13 -0500 |
commit | fc20773329c993ec7d1b2c65618351f057d9d679 (patch) | |
tree | 0a3159b9d7017e932dbd976338f29d34d4b9e8ad /sound | |
parent | aa92c4af15224d8a96343286cdcf7c73b2ad3809 (diff) |
[ALSA] Fix emu10k1 synth problems.
Modules: EMU10K1/EMU10K2 driver,Common EMU synth
This patch fixes problems with voices cutting off or not
sounding at all.
Signed-off-by: Tim <tedon@rogers.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Diffstat (limited to 'sound')
-rw-r--r-- | sound/pci/emu10k1/emu10k1_callback.c | 4 | ||||
-rw-r--r-- | sound/synth/emux/emux_synth.c | 1 |
2 files changed, 2 insertions, 3 deletions
diff --git a/sound/pci/emu10k1/emu10k1_callback.c b/sound/pci/emu10k1/emu10k1_callback.c index 7cf2f908eed9..6589bf24abcd 100644 --- a/sound/pci/emu10k1/emu10k1_callback.c +++ b/sound/pci/emu10k1/emu10k1_callback.c | |||
@@ -241,7 +241,7 @@ lookup_voices(snd_emux_t *emu, emu10k1_t *hw, best_voice_t *best, int active_onl | |||
241 | else if (state == SNDRV_EMUX_ST_RELEASED || | 241 | else if (state == SNDRV_EMUX_ST_RELEASED || |
242 | state == SNDRV_EMUX_ST_PENDING) { | 242 | state == SNDRV_EMUX_ST_PENDING) { |
243 | bp = best + V_RELEASED; | 243 | bp = best + V_RELEASED; |
244 | #if 0 | 244 | #if 1 |
245 | val = snd_emu10k1_ptr_read(hw, CVCF_CURRENTVOL, vp->ch); | 245 | val = snd_emu10k1_ptr_read(hw, CVCF_CURRENTVOL, vp->ch); |
246 | if (! val) | 246 | if (! val) |
247 | bp = best + V_OFF; | 247 | bp = best + V_OFF; |
@@ -349,7 +349,7 @@ start_voice(snd_emux_voice_t *vp) | |||
349 | } | 349 | } |
350 | 350 | ||
351 | /* channel to be silent and idle */ | 351 | /* channel to be silent and idle */ |
352 | snd_emu10k1_ptr_write(hw, DCYSUSV, ch, 0x0080); | 352 | snd_emu10k1_ptr_write(hw, DCYSUSV, ch, 0x0000); |
353 | snd_emu10k1_ptr_write(hw, VTFT, ch, 0x0000FFFF); | 353 | snd_emu10k1_ptr_write(hw, VTFT, ch, 0x0000FFFF); |
354 | snd_emu10k1_ptr_write(hw, CVCF, ch, 0x0000FFFF); | 354 | snd_emu10k1_ptr_write(hw, CVCF, ch, 0x0000FFFF); |
355 | snd_emu10k1_ptr_write(hw, PTRX, ch, 0); | 355 | snd_emu10k1_ptr_write(hw, PTRX, ch, 0); |
diff --git a/sound/synth/emux/emux_synth.c b/sound/synth/emux/emux_synth.c index 751bf1272af3..bd71b73be657 100644 --- a/sound/synth/emux/emux_synth.c +++ b/sound/synth/emux/emux_synth.c | |||
@@ -171,7 +171,6 @@ snd_emux_note_off(void *p, int note, int vel, snd_midi_channel_t *chan) | |||
171 | vp = &emu->voices[ch]; | 171 | vp = &emu->voices[ch]; |
172 | if (STATE_IS_PLAYING(vp->state) && | 172 | if (STATE_IS_PLAYING(vp->state) && |
173 | vp->chan == chan && vp->key == note) { | 173 | vp->chan == chan && vp->key == note) { |
174 | vp->time = emu->use_time++; | ||
175 | vp->state = SNDRV_EMUX_ST_RELEASED; | 174 | vp->state = SNDRV_EMUX_ST_RELEASED; |
176 | if (vp->ontime == jiffies) { | 175 | if (vp->ontime == jiffies) { |
177 | /* if note-off is sent too shortly after | 176 | /* if note-off is sent too shortly after |