I found the bug that causes the emu10k1 to sound bad when X is busy with other things.
The fix is a one liner (below).
Danny
diff -Paru linux-2.4.20/sound/pci/emu10k1/emupcm.c emu10k1/emupcm.c
--- linux-2.4.20/sound/pci/emu10k1/emupcm.c 2003-02-17 15:46:22.000000000 +0100
+++ emu10k1/emupcm.c 2003-02-10 12:53:50.000000000 +0100
@@ -989,7 +989,7 @@
emu->pcm = pcm;
for (substream = pcm->streams[SNDRV_PCM_STREAM_PLAYBACK].substream; substream;
substream = substream->next)
- if ((err = snd_pcm_lib_preallocate_sg_pages(emu->pci, substream,
64*128, 128*1024)) < 0)
+ if ((err = snd_pcm_lib_preallocate_sg_pages(emu->pci, substream,
+64*1024, 64*1024)) < 0)
return err;
for (substream = pcm->streams[SNDRV_PCM_STREAM_CAPTURE].substream; substream;
substream = substream->next)