Sound Blaster Live
Creativelabs soundblaster live! for linux
This howto is intended for those people who want to get the most out of their soundblaster live! There are a lot of cool and nifty features available, but it's not that easy to get it working. But if you want the enjoy good sound, it's worth it.
Prelimiary
Before we get all exited about modules and features and stuff, i'd like to point out that this howto uses the OSS-drivers. Yeah, i know. The moment i'm writing this oss is allready depricated in the 2.6 kernel. ALSA is indeed a good driver (clean code and good support). But there's just one problem with it: it's support for the live! soundbaster sucks. OSS supports a lot of features, and frankly i don't know if ALSA has good live! support or not. For know, i stuck with oss.
An other thing is that not everything considered here may work on your system. Creativelabs has released al lot of different versions of it's soundcard. And that makes compatibility rather difficult. Even windows has troubles with it (i had to search one hell of a long time to get a working driver for my live! player value for win2k and i wasn't able to get the rear speakers working). It's a common tragedy in the hardware world and it's sad that the consumers are victim of it. Since I got a live! player 1024, I'm not quite able to test all the nifty features of the other cards in the series. For most of them, though, their configuration is quite simular to all the other features.
Getting started
We'll start with a simple task: get the soundblaster working on your system. To do that you'll probably have to enable oss and the emu10k1 module in the kernel. Make sure you got the right modules loaded, and your system wellconfigured (duh).
For those who got stuck allready: http://www.tldp.org/HOWTO/Sound-HOWTO/index.html here's the sound-howto
Configuring
Allright, the sound is working! But there are stil some leftovers the default install isn't covering. To get most of the jucy stuff working, you can download http://sourceforge.net/projects/emu10k1 emu-tools. Emu-tools has a default configuration script, which will enable some handy features. If you want it to work out of the box: edit /usr/local/etc/emu10k1.conf and run /usr/local/etc/emu-script.
For most users, this is where their journey though driverland ends. It works, and most of the features are enabled. But acctually, it is really a pity to waste a good soundcard on an unconfigured system. I want to get the most out of my box. And that's exactly what we're gonna do know.
Bring out the candy
Emu-tools provides some neat features to configure your soundcard. The goal of my journey here, is to provide a simple script, which will configure the emu10k1 driver every time it is loaded into the kernel.
Routing
The soundcard has several incoming (signals coming from /dev/dsp, spdif, aux, ...) and outgoing (out-connector, ...) channels. The driver maps an incoming channel to an outgoing one. This is done by a routingtable. There's a complete list of available input and outputs in de documentation provided. Your soundcard manual could give you a clue on which you really need and emu-dspmgr can give you some info too: emu-dspmgr -i :list all available inputs emu-dspmgr -o :list all available outputs emu-dspmgr -r :list all assigned routes
You can add a route with: emu-dspmgr -a"<input>:<output>" You can remove a route with: emu-dspmgr -r"<input>:<output>"
Here's a simple example: Because there is a front and a rear speakeroutput it would be nice to be able to send the default sound-output to the front, and an additional one to the rear. Very nice if you want to play dj. To do this, we'll route the default pcm (/dev/dsp) to the front, and the additional pcm1 (/dev/dsp1) to the rear:
emu-dspmgr -a"Pcm L:Digital L" emu-dspmgr -a"Pcm R:Digital R" emu-dspmgr -a"Pcm1 R:Rear R" emu-dspmgr -a"Pcm1 L:Rear L"
Actually, you can route the default pcm to the rear and virsaversa. This way, you can switch between outputs fast. Notice, that there isn't any reason to glue the left and right outputs together. It is indeed possible to route 2 different outputs to the left and right box :).
Patches
Next, we take a look at the extra effects and features provided by emu-tools. In order to get it working you have to load and attach a binary patch to a channel (input or output). You can find the patches at /usr/local/share/emu10k1/. You'll have to do a bit of trial and error to know which work on you system. To get a list of all currently loaded issue emu-dspmgr -c .
To load a patch do: emu-dspmgr -l"<channel>" -f"<patch>"
Control GPRs
You can control a patch by its control parameter. Every patch has an identifier name, and a set of controle parameter names. You can the names and parameters of all currently loaded patches with emu-dspmgr -c.
To edit a parameter issue: emu-dspmgr -p"<patchname>" -c"<parametername>" -s#<value>
A value can have 3 different prefix-modifiers: # - a fractional value (0x7fffffff is 1, 0x80000000 is -1) & - delay in seconds (exponential format is ok, i.e. &1e-3) % - delay in number of samples




