Home
Main website
Display Sidebar
Hide Ads
Recent Changes
View Source:
AlsaNotes
Edit
PageHistory
Diff
Info
LikePages
<b>See also [Alsa5.1Notes].</b> !!! Application support for [ALSA] * There is a version of esd(1) that uses [ALSA] – that means that any app that currently uses esd(1) will be fine. (In [Debian] the [Package] is called <tt>libesd-alsa0</tt>.) * [ALSA] has optional support for [OSS] compatibility for older apps that only know about the [OSS]-style sound drivers. To use it, make sure the <tt>snd-pcm-oss</tt> module is loaded. (In Debian, you can just set <tt>startosslayer=true</tt> in <tt>/etc/default/alsa</tt> for the startup scripts to do this for you.) !!! Module hints * It may be a good idea to make sure you have the <tt>snd-pcm-oss</tt> module if you want backwards-compatibility for older apps (see further below). If you are compiling the modules from source, include <tt>--with-oss=yes</tt> on your <tt>./configure</tt> line. * The sound-card on a Thinkpad 600E needs the <tt>snd-cs4236</tt> module, despite the card claiming to be a 46xx (and using a module named cs4232 in the older [OSS] driver series). !!! My sound card doesn't work after an upgrade Run <tt>alsaconf</tt>, it will probably fix it. !!! Not all sound devices work If one of your sound devices doesn't work and you get an error similar to <tt>EMU10K1_Audigy: probe of 0000:02:0a.0 failed with error -12</tt> then it might be because the devices are fighting over which sound card number they want to be. To fix this alter the sound card module options (see [Module] page on how to do this). One example of a configuration that works is <tt>options snd-emu10k1 index=-15</tt>. The <tt>index</tt> parameter specifies which card becomes which number, or if negative then it is a bitmask of numbers that it can be autoassigned to. To learn more about this look at the LinuxKernel source file <tt>Documentation/sound/alsa/ALSA-Configuration.txt</tt> !!! Software Mixing With [ALSA] You can get [ALSA] to do software mixing for you without having to resort to something like esd(1). This is done via the dmix plugin and as [documented on the ALSA wiki | http://alsa.opensrc.org/index.php?page=DmixPlugin]. As of 1.0.9rc2, this is configured out of the box for the vast majority of consumer sound chipsets. (The first [Ubuntu] version to benefit from this was Breezy.) If you have an earlier version, after you get [ALSA] going, you need to put the following in a <tt>.asoundrc</tt> file in your home directory. <verbatim> # .asoundrc file. Put this in your home directory. pcm.mixed { type dmix ipc_key 123456 # Any unique value ipc_key_add_uid true # No idea... slave { pcm "hw:0,0" # Apparently for OSS emulation device, you have to set the period # and the buffer sizes in powers of two. period_time 0 period_size 1024 # must be power of 2 buffer_size 4096 # ditto rate 44100 } # bindings are cool. This says, that only the first # two channels are to be used by dmix, which is enough for # (most) oss apps and also lets multichannel chios work # much faster: bindings { 0 0 # from 0 => to 0 1 1 # from 1 => to 1 } } pcm.!default { type plug slave.pcm mixed } pcm.dsp0 { type plug slave.pcm mixed } pcm.mixer0 { type hw card 0 } </verbatim> There are some problems with this. First of all, [OSS] [Kernel] emulation won’t go through this layer. For an [OSS]-based application to use this, you need to use the <tt>aoss</tt> helper utility. Also, for [SDL] based applications (usually games) to use this, you will want the EnvironmentVariable <tt>AUDIODEV</tt> to be set to <tt>default</tt>, ie. <tt>export AUDIODEV=default</tt>. !!! Surround-Sound Notes Couple of pages that might be useful, at the [ALSA Wiki|http://alsa.opensrc.org/SurroundSound] and [Halfgaar|http://www.halfgaar.net/surround-sound-in-linux], thanks to [Dave Phillips|http://www.linuxjournal.com/node/1000244]. !!! Soundblaster SB16 module On my [LinuxKernel2.6] system, I couldn't load the [ALSA] module for the [ISA] SB16 card, no matter what I did. Eventually, I discovered it loaded fine if I disabled the <tt>isapnp</tt> option for the module. Eg in <tt>/etc/modprobe.conf</tt>, I had <verbatim> options snd-sb16 isapnp=0 </verbatim> It seemed to be defaulting to trying to use <tt>isapnp</tt> but that didn't work, whether or not I enabled [Kernel] [ISA] [PnP] support and [BIOS] [PnP] support. !!! modprobe(8) complains about unresolved symbols in <tt>schedule_work</tt> You need to run <tt>touch include/linux/workqueue.h</tt> between <tt>./configure</tt> and <tt>make</tt> on <tt>alsa-driver</tt>. If you want to do this while building from [SRPM], do the following: Install the [SRPM]: <verbatim> rpm -ivh alsa-driver.x.y.z-p.src.rpm </verbatim> Now open the <tt>alsa-driver.x.y.z-p.spec</tt> in the <tt>SPECS/</tt> directory, locate the <tt>%configure</tt> and <tt>make</tt> commands and add the following command between them: <verbatim> touch include/linux/workqueue.h </verbatim> Finally, [RPM] needs to be told to build the ''spec file'': <verbatim> rpmbuild -bb --define 'cards als4000' --target $arch \ alsa-driver.x.y.z-p.spec </verbatim> You can now install the [RPM]s built in the <tt>RPMS/$arch/</tt> directory. !!! Compiling [ALSA] on RedHatLinux using the FreshRpms [SRPM] You probably want to set up your own <tt>.rpmmacros</b> file first, as per [RPMNotes]. Remember to specify the target architecture and the card (see the [ALSA soundcard matrix | http://www.alsa-project.org/alsa-doc/] to find yours) to compile for, eg.: <verbatim> rpmbuild --rebuild alsa-driver.x.y.z-p.src.rpm \ --define 'cards als4000' --target $arch </verbatim> where <tt>$arch</tt> might be <tt>athlon</tt>, f.ex. The [RPM]s will end up in <tt>RPMS/$arch/</tt>, ie f.ex in <tt>RPMS/athlon/</tt>. As with all source builds, you will need to recompile the [SRPM] if you upgrade your [Kernel]; you only need to install the <tt>kernel-module-alsa</tt> [RPM], however. !!! See also [ALSA configuration notes|http://www.sabi.co.uk/Notes/linuxSoundALSA.html]
3 pages link to
AlsaNotes
:
AudioNotes
UserSubmittedNotes
pci/1102:0002