Soundblaster Live! on SMP Windows Systems

I own a dual-processor computer and a Soundblaster Live sound card. I use the drivers published by Creative Labs because those that come with Windows don't support all the features of the card. Unfortunately, the Windows sblive drivers published by Creative Labs behave rather badly on multiprocessor systems. This results in frequent audio skipping, and occasional loud popping and screeching, when playing video files and 3D audio effects. The Creative support team have made it clear that they don't intend to support SMP systems, and there is no sign of plans to fix their drivers. However, I have found that I can work around most of the audio problems in Windows 2000 by binding all the software in the audio chain to the same CPU, using processor affinity masks.

September 2004 Update:  I have recently learned of the kX Project, which offers an independently created driver for Soundblaster Live! cards on Windows.  It seems to be geared for music professionals, has a rather non-intuitive user interface, and exhibits some of the same skipping problems on SMP systems that Creative's drivers have.  It is also more stable, easy to download, and simple to bind to a single CPU than the Creative driver.  I'm using it now, and hope to offer the kX developers some feedback on ways their driver could improve, such as eliminating audio skipping entirely.



PROCEDURE

  • Install the latest Windows 2000 sound card drivers from Creative Labs.
  • Install the Windows 2000 Interrupt Affinity Filter Tool (IntFiltr) from Microsoft.
  • Follow the IntFiltr instructions to assign the same single-CPU affinity mask to all Creative Labs devices that use a hardware interrupt.  You can find these by opening the Device Manager, and selecting Resources by Type from the View menu.  On my system, the Creative SB Live! Value is shown on IRQ 19.  Bringing up the properties for that device revealed the Creative EMU10K1 Audio Processor device in the Audio Devices list.  That's the one I bound to a single CPU (mask value 0x00000001).
  • When running a program (such as a media player or game) that exhibits signs of an SMP audio driver problem, set the processor affinity mask of that process to match the mask you set for the Creative drivers. (Right-click the process in Task Manager, and choose Set Affinity.)

NOTES

  • I have read of a version of IntFilter for Windows NT 4.0, possibly called IntBind. I don't know whether it is effective or appropriate on NT4 systems, but it might be worth trying. At the time of this writing, a link to IntBind could be found at the bottom of this page (under the NT Tools heading), and at this page (under the Management heading).
  • I have not verified whether it matters which CPU you choose to bind drivers to. I suppose it's possible that Windows favors one CPU over another by default, in which case it might be advantageous to choose the same CPU that Windows chooses. This is merely conjecture for now, as I haven't bothered to investigate further. The /INTAFFINITY option in the boot.ini file may have some bearing on this matter as well. In any case, I chose CPU 0 (affinity mask 0x01), just to be sure that the chosen CPU will still exist if I upgrade to a single CPU motherboard one day.
  • Since I got tired of using Task Manager to set my media player's affinity mask every time I play an AVI file, I wrote a program to launch the player with an affinity mask specified by a command line. I then modified the shortcuts in my Start menu to use my program to start my media player. The program is called startaff.exe, and you can download it here, or download the source code here. You may use this program so long as you assume liability for any problems or damage it might cause. As with any software you download from the net, be sure to scan it for viruses before using it.
  • Another cause of audio skipping on Windows 2000 is the use of DirectSound playback devices. If a program you use is playing skipping audio, and it allows you to choose a WaveOut playback device, give that a try. Unfortunately, the (Intervideo) Dolby Digital AC3 driver I have used seems to require DirectSound output in order to play 5.1 audio on my 4 speaker SoundBlaster Live. If you use WinDVD, you might be stuck with DirectSound output.

[tibit.com]