1 |
zhen |
1.3 |
<?xml version='1.0' encoding="UTF-8"?> |
2 |
swift |
1.32 |
<!-- $Header: /home/cvsroot/gentoo/xml/htdocs/doc/en/alsa-guide.xml,v 1.31 2004/04/11 10:52:16 cam Exp $ --> |
3 |
drobbins |
1.1 |
<!DOCTYPE guide SYSTEM "/dtd/guide.dtd"> |
4 |
|
|
|
5 |
zhen |
1.2 |
<guide link = "/doc/en/alsa-guide.xml"> |
6 |
drobbins |
1.1 |
<title>Gentoo Linux ALSA Guide</title> |
7 |
swift |
1.20 |
<author title="Author"> |
8 |
|
|
<mail link="zu@pandora.be">Vincent Verleye</mail> |
9 |
drobbins |
1.1 |
</author> |
10 |
swift |
1.20 |
<author title="Author"> |
11 |
|
|
<mail link="g2boojum@gentoo.org">Grant Goodyear</mail> |
12 |
peesh |
1.10 |
</author> |
13 |
swift |
1.20 |
<author title="Author"> |
14 |
|
|
<mail link="agenkin@gentoo.org">Arcady Genkin</mail> |
15 |
peesh |
1.10 |
</author> |
16 |
erwin |
1.26 |
<author title="Author"> |
17 |
|
|
<mail link="eradicator@gentoo.org">Jeremy Huddleston</mail> |
18 |
|
|
</author> |
19 |
swift |
1.18 |
<author title="Editor"><!-- zhen@gentoo.org --> |
20 |
|
|
John P. Davis |
21 |
drobbins |
1.1 |
</author> |
22 |
swift |
1.20 |
<author title="Editor"> |
23 |
|
|
<mail link="swift@gentoo.org">Sven Vermeulen</mail> |
24 |
swift |
1.12 |
</author> |
25 |
swift |
1.20 |
<author title="Editor"> |
26 |
|
|
<mail link="bennyc@gentoo.org">Benny Chuang</mail> |
27 |
bennyc |
1.14 |
</author> |
28 |
swift |
1.20 |
<author title="Editor"> |
29 |
|
|
<mail link="blubber@gentoo.org">Tiemo Kieft</mail> |
30 |
blubber |
1.16 |
</author> |
31 |
erwin |
1.26 |
<author title="Editor"> |
32 |
|
|
<mail link="erwin@gentoo.org">Erwin</mail> |
33 |
|
|
</author> |
34 |
drobbins |
1.1 |
|
35 |
|
|
<abstract> |
36 |
swift |
1.20 |
This guide will show you how to set up the Advanced Linux Sound Architecture |
37 |
|
|
(ALSA) on Gentoo Linux. In addition to the Gentoo Linux Desktop Configuration |
38 |
|
|
Guide, this guide is supposed to give you more information on this subject. |
39 |
|
|
</abstract> |
40 |
drobbins |
1.1 |
|
41 |
swift |
1.25 |
<license/> |
42 |
|
|
|
43 |
swift |
1.32 |
<version>1.4.3</version> |
44 |
|
|
<date>May 09, 2004</date> |
45 |
drobbins |
1.1 |
|
46 |
|
|
<chapter> |
47 |
|
|
<title>Introduction</title> |
48 |
|
|
<section> |
49 |
swift |
1.20 |
<title>What is ALSA?</title> |
50 |
drobbins |
1.1 |
<body> |
51 |
swift |
1.20 |
|
52 |
drobbins |
1.1 |
<p> |
53 |
swift |
1.20 |
The Advanced Linux Sound Architecture (ALSA) is a project to improve the Linux |
54 |
erwin |
1.26 |
sound subsystem by rewriting large chunks of it. It has replaced the Open |
55 |
|
|
Sound System (OSS) as the default sound subsystem in the 2.6 kernel, but it |
56 |
|
|
can be used with either 2.4 or 2.6 kernels. |
57 |
drobbins |
1.1 |
</p> |
58 |
|
|
|
59 |
|
|
<p> |
60 |
|
|
ALSA provides audio and MIDI functionality for Linux. |
61 |
|
|
</p> |
62 |
|
|
|
63 |
|
|
<p> |
64 |
swift |
1.20 |
Quoted from <uri>http://www.alsa-project.org</uri>, ALSA has the following |
65 |
|
|
features: |
66 |
|
|
</p> |
67 |
|
|
|
68 |
|
|
<ul> |
69 |
|
|
<li> |
70 |
|
|
Efficient support for all types of audio interfaces, from consumer |
71 |
|
|
soundcards to professional multichannel audio interfaces |
72 |
|
|
</li> |
73 |
|
|
<li>Fully modularized sound drivers</li> |
74 |
|
|
<li>SMP and thread-safe design</li> |
75 |
|
|
<li> |
76 |
|
|
User space library (alsa-lib) to simplify application programming and |
77 |
|
|
provide higher level functionality |
78 |
|
|
</li> |
79 |
|
|
<li> |
80 |
|
|
Support for the older OSS API, providing binary compatibility for most OSS |
81 |
|
|
programs |
82 |
|
|
</li> |
83 |
drobbins |
1.1 |
</ul> |
84 |
swift |
1.20 |
|
85 |
|
|
<p> |
86 |
|
|
There's lots more to ALSA however, like support for Full Duplex playback and |
87 |
|
|
recording, multiple soundcard support, hardware mixing of streams, extensive |
88 |
|
|
mixer capabilities (to support advanced features of new soundcards), ... |
89 |
drobbins |
1.1 |
</p> |
90 |
swift |
1.20 |
|
91 |
drobbins |
1.1 |
</body> |
92 |
|
|
</section> |
93 |
|
|
<section> |
94 |
swift |
1.20 |
<title>Why use ALSA?</title> |
95 |
drobbins |
1.1 |
<body> |
96 |
swift |
1.20 |
|
97 |
drobbins |
1.1 |
<p> |
98 |
erwin |
1.26 |
Your sound card may be supported by modules available in the 2.4 kernel (these |
99 |
|
|
are also provided in the 2.6 kernel under the 'Open Sound System (DEPRECATED)' |
100 |
|
|
option). Additionally, you might be able to use the commercial OSS/4Front sound |
101 |
|
|
driver system. If you wish to use either of these systems, then you should read |
102 |
|
|
through the <uri link="http://www.tldp.org/HOWTO/Sound-HOWTO/index.html">Linux |
103 |
|
|
Sound HOWTO</uri>. |
104 |
drobbins |
1.1 |
</p> |
105 |
swift |
1.20 |
|
106 |
drobbins |
1.1 |
<p> |
107 |
erwin |
1.26 |
The OSS/4Front drivers have some limitations, however. Being commercial is |
108 |
|
|
one. ALSA is an attempt to go beyond these limitations with an open source |
109 |
|
|
development model. ALSA is a fully GPL and LGPL'ed sound driver system that |
110 |
swift |
1.20 |
provides a professional quality system for recording, playback, and MIDI |
111 |
|
|
sequencing. |
112 |
drobbins |
1.1 |
</p> |
113 |
swift |
1.20 |
|
114 |
drobbins |
1.1 |
</body> |
115 |
|
|
</section> |
116 |
|
|
<section> |
117 |
swift |
1.20 |
<title>What cards does ALSA support?</title> |
118 |
drobbins |
1.1 |
<body> |
119 |
swift |
1.20 |
|
120 |
drobbins |
1.1 |
<p> |
121 |
swift |
1.20 |
ALSA tries to support as many (new) cards as possible by providing open-source |
122 |
|
|
drivers. However, some vendors may provide binary-only packages. |
123 |
drobbins |
1.1 |
</p> |
124 |
swift |
1.20 |
|
125 |
|
|
<p> |
126 |
|
|
To know if your card is supported, you can find a Soundcard Matrix of supported |
127 |
|
|
and not-supported cards here: <uri>http://www.alsa-project.org/alsa-doc/</uri>. |
128 |
drobbins |
1.1 |
</p> |
129 |
swift |
1.20 |
|
130 |
drobbins |
1.1 |
</body> |
131 |
|
|
</section> |
132 |
|
|
</chapter> |
133 |
|
|
|
134 |
|
|
<chapter> |
135 |
|
|
<title>Installation</title> |
136 |
|
|
<section> |
137 |
swift |
1.17 |
<title>Gentoo USE flags</title> |
138 |
|
|
<body> |
139 |
|
|
|
140 |
|
|
<p> |
141 |
|
|
To compile programs with ALSA-support, be sure to add <e>alsa</e> to |
142 |
|
|
your USE-variable. However, several tools don't support alsa yet, and |
143 |
|
|
require OSS. ALSA provides OSS-emulation if you define <e>oss</e> in your |
144 |
|
|
USE-variable before you start. |
145 |
|
|
</p> |
146 |
|
|
|
147 |
|
|
</body> |
148 |
|
|
</section> |
149 |
|
|
<section> |
150 |
swift |
1.20 |
<title>Kernel modules</title> |
151 |
drobbins |
1.1 |
<body> |
152 |
swift |
1.20 |
|
153 |
drobbins |
1.1 |
<p> |
154 |
erwin |
1.26 |
When using the 2.4 kernels, you'll need to compile the alsa drivers separately |
155 |
|
|
from the rest of the kernel. If you are using a 2.6 kernel, you have the |
156 |
|
|
option of using the ALSA drivers included in the kernel or those provided |
157 |
|
|
by the <c>alsa-driver</c> package. |
158 |
drobbins |
1.1 |
</p> |
159 |
swift |
1.20 |
|
160 |
drobbins |
1.1 |
<p> |
161 |
|
|
First we'll make sure that our kernel configuration is ready for use with ALSA. |
162 |
swift |
1.20 |
All you need in your kernel configuration is having Sound Card Support set to |
163 |
|
|
be built as a module (M). This will build <path>soundcore.o</path>. |
164 |
drobbins |
1.1 |
</p> |
165 |
swift |
1.20 |
|
166 |
drobbins |
1.1 |
<note> |
167 |
erwin |
1.26 |
Possibly, this will also work if you build 'Sound Card Support' in the kernel |
168 |
swift |
1.20 |
(Y) instead of building it as a module (M). However, the official ALSA |
169 |
|
|
documentation suggests building it as a module, since ALSA will try loading it. |
170 |
drobbins |
1.1 |
</note> |
171 |
swift |
1.20 |
|
172 |
|
|
<p> |
173 |
|
|
If you already have a working kernel configuration, make sure you remove all |
174 |
|
|
sound drivers (except for Sound Card Support). If you wish to do this without |
175 |
|
|
having to reboot, you could do like this: |
176 |
drobbins |
1.1 |
</p> |
177 |
swift |
1.20 |
|
178 |
|
|
<pre caption="Kernel configuration"> |
179 |
blubber |
1.16 |
# <i>cd /usr/src/linux</i> |
180 |
|
|
# <i>cp .config ~/</i> |
181 |
|
|
# <i>make mrproper</i> |
182 |
|
|
# <i>cp ~/.config .</i> |
183 |
|
|
# <i>make menuconfig</i> |
184 |
drobbins |
1.1 |
</pre> |
185 |
swift |
1.20 |
|
186 |
drobbins |
1.1 |
<p> |
187 |
swift |
1.20 |
Now select <e>Sound Card Support</e> as Module (M) and deselect all other sound |
188 |
erwin |
1.26 |
drivers. If you are using 2.6 with the ALSA modules provided by the kernel, select |
189 |
|
|
the drivers for your sound card as well (look in the <uri |
190 |
|
|
link="#doc_chap2_sect3">ALSA modules</uri> section below if you need help |
191 |
|
|
choosing the right drivers). Exit and say Y to save your kernel configuration. |
192 |
|
|
After that, build the modules: |
193 |
drobbins |
1.1 |
</p> |
194 |
swift |
1.20 |
|
195 |
erwin |
1.26 |
<pre caption="2.4 Kernel compilation"> |
196 |
blubber |
1.16 |
# <i>make dep clean</i> |
197 |
|
|
# <i>make modules modules_install</i> |
198 |
drobbins |
1.1 |
</pre> |
199 |
swift |
1.20 |
|
200 |
erwin |
1.26 |
<pre caption="2.6 Kernel compilation"> |
201 |
|
|
# <i>make</i> |
202 |
|
|
# <i>make modules_install</i> |
203 |
|
|
</pre> |
204 |
|
|
|
205 |
|
|
<p> |
206 |
|
|
If you compiled 2.6 with the ALSA modules provided by the kernel, please skip to |
207 |
|
|
<uri link="#doc_chap2_sect4">Configuration of ALSA</uri> below. |
208 |
|
|
</p> |
209 |
|
|
|
210 |
drobbins |
1.1 |
<p> |
211 |
swift |
1.20 |
Before installing your new modules, this last line will delete all your previous |
212 |
|
|
modules, even the ones from a previous ALSA installation. |
213 |
drobbins |
1.1 |
</p> |
214 |
swift |
1.20 |
|
215 |
drobbins |
1.1 |
<impo> |
216 |
swift |
1.20 |
This means, whenever you recompile your kernel later on, you MUST recompile |
217 |
|
|
<c>alsa-driver</c>. |
218 |
drobbins |
1.1 |
</impo> |
219 |
swift |
1.20 |
|
220 |
drobbins |
1.1 |
</body> |
221 |
|
|
</section> |
222 |
|
|
<section> |
223 |
swift |
1.20 |
<title>ALSA modules</title> |
224 |
drobbins |
1.1 |
<body> |
225 |
|
|
|
226 |
|
|
<p> |
227 |
swift |
1.20 |
Now it's time to install the ALSA drivers for your soundcard(s). If your |
228 |
|
|
soundcard is PCI, you can find out the name and type of your soundcard by |
229 |
|
|
looking at the output of <path>/proc/pci</path>. |
230 |
drobbins |
1.1 |
</p> |
231 |
swift |
1.20 |
|
232 |
|
|
<pre caption="Search for soundcard information"> |
233 |
blubber |
1.16 |
# <i>grep audio /proc/pci</i> |
234 |
|
|
</pre> |
235 |
|
|
|
236 |
drobbins |
1.1 |
<warn> |
237 |
swift |
1.20 |
If you had a previous sound setup and there are still non-ALSA sound modules |
238 |
|
|
loaded, unload them <e>now</e>. Check with <c>lsmod</c> and use <c>rmmod</c> |
239 |
erwin |
1.26 |
to unload all sound-related modules on your system. If <c>rmmod</c> complains |
240 |
|
|
about not being able to unload the modules because they are in use, try using |
241 |
|
|
<c>/etc/init.c/alsasound stop</c> to remove them. |
242 |
drobbins |
1.1 |
</warn> |
243 |
|
|
|
244 |
|
|
<p> |
245 |
swift |
1.20 |
We could simply do an <c>emerge alsa-driver</c> now, this would compile and |
246 |
|
|
install <e>all</e> ALSA sound drivers. |
247 |
drobbins |
1.1 |
</p> |
248 |
swift |
1.20 |
|
249 |
drobbins |
1.1 |
<p> |
250 |
swift |
1.20 |
However, to save some time, lookup the <e>Module Name</e> of your soundcard(s) |
251 |
|
|
on the <uri link="http://www.alsa-project.org/alsa-doc">ALSA Soundcard |
252 |
|
|
Matrix</uri> by following the <e>Details</e> link in the <e>Driver and Docs</e> |
253 |
|
|
column in the row of the chipset of your soundcard. Mine is <c>snd-emu10k1</c>, |
254 |
|
|
since I have an SBlive! soundcard, with the <e>EMU10K1</e> chipset. We'll set |
255 |
|
|
ALSA_CARDS environment to the value of the module name before emerging (but |
256 |
|
|
without the snd prefix), so emerge will only compile the drivers we need. |
257 |
drobbins |
1.1 |
</p> |
258 |
|
|
|
259 |
erwin |
1.26 |
<pre caption="With 2.4 Kernel"> |
260 |
blubber |
1.16 |
# <i>env ALSA_CARDS='emu10k1' emerge alsa-driver</i> |
261 |
drobbins |
1.1 |
</pre> |
262 |
swift |
1.20 |
|
263 |
erwin |
1.26 |
<pre caption="With 2.6 Kernel"> |
264 |
|
|
# <i>env ALSA_CARDS='emu10k1' emerge \>=media-sound/alsa-driver-1.0.2c</i> |
265 |
|
|
</pre> |
266 |
|
|
|
267 |
|
|
<note> |
268 |
aaby |
1.27 |
2.6 kernels require alsa-driver to be at least version 1.0.2c. |
269 |
erwin |
1.26 |
</note> |
270 |
|
|
|
271 |
drobbins |
1.1 |
<note> |
272 |
swift |
1.20 |
You can also add this value in <path>/etc/make.conf</path>, so when you have |
273 |
|
|
to emerge the alsa-driver later on you can just run <c>emerge alsa-driver</c>. |
274 |
seo |
1.8 |
For example, like this: <c>echo 'ALSA_CARDS="emu10k1"' >> /etc/make.conf</c> |
275 |
|
|
</note> |
276 |
|
|
|
277 |
|
|
<note> |
278 |
swift |
1.20 |
When you want to install ALSA drivers for more than one soundcard, you could |
279 |
|
|
set ALSA_CARDS to a space-separated list of drivers; like this: <c>env |
280 |
|
|
ALSA_CARDS='emu10k1 intel8x0 ens1370' emerge alsa-driver</c> |
281 |
drobbins |
1.1 |
</note> |
282 |
|
|
|
283 |
swift |
1.20 |
<note> |
284 |
cam |
1.31 |
If you want to have OSS compatibility, make sure to emerge <c>alsa-oss</c>, it |
285 |
swift |
1.20 |
is the ALSA/OSS compatibility wrapper. |
286 |
|
|
</note> |
287 |
drobbins |
1.1 |
|
288 |
swift |
1.20 |
<note> |
289 |
|
|
If you plan on recompiling your kernels numerous times, it might |
290 |
swift |
1.13 |
be adviseable to emerge <c>alsa-driver</c> with <c>--buildpkg</c>. This |
291 |
|
|
will create a binary package for it. Later, after recompiling your kernel, |
292 |
|
|
you can just do <c>emerge --usepkg alsa-driver</c> which will install the |
293 |
erwin |
1.26 |
binary package instead of recompiling it completely. If 'depmod -a' ever |
294 |
|
|
complains about sound drivers having unreferenced symbols when you do this, |
295 |
|
|
you will need to recompile the alsa-driver package from source. |
296 |
swift |
1.20 |
</note> |
297 |
swift |
1.13 |
|
298 |
drobbins |
1.1 |
<p> |
299 |
|
|
After this, the ALSA modules should be installed on your system. |
300 |
|
|
</p> |
301 |
swift |
1.20 |
|
302 |
drobbins |
1.1 |
</body> |
303 |
|
|
</section> |
304 |
|
|
<section> |
305 |
swift |
1.20 |
<title>Configuration of ALSA</title> |
306 |
drobbins |
1.1 |
<body> |
307 |
swift |
1.20 |
|
308 |
drobbins |
1.1 |
<p> |
309 |
swift |
1.20 |
Let's start configuring now to get ALSA working properly. We'll need to edit |
310 |
|
|
some files, to let our system know about the freshly installed ALSA modules. |
311 |
drobbins |
1.1 |
</p> |
312 |
swift |
1.12 |
|
313 |
drobbins |
1.1 |
<p> |
314 |
swift |
1.12 |
First, install <c>alsa-utils</c> on your system: |
315 |
|
|
</p> |
316 |
|
|
|
317 |
|
|
<pre caption = "Emerging alsa-utils"> |
318 |
|
|
# <i>emerge alsa-utils</i> |
319 |
|
|
</pre> |
320 |
|
|
|
321 |
|
|
<p> |
322 |
|
|
Hereafter, we need to edit <path>/etc/modules.d/alsa</path>. |
323 |
drobbins |
1.1 |
</p> |
324 |
swift |
1.20 |
|
325 |
drobbins |
1.1 |
<warn> |
326 |
swift |
1.20 |
There is no need to edit <path>/etc/modules.conf</path>. Instead, always edit |
327 |
erwin |
1.26 |
files in <path>/etc/modules.d</path> and run <c>modules-update</c> to generate |
328 |
|
|
<path>/etc/modules.conf</path> from the updated data. |
329 |
drobbins |
1.1 |
</warn> |
330 |
swift |
1.20 |
|
331 |
seo |
1.8 |
<pre caption="In /etc/modules.d/alsa"> |
332 |
bennyc |
1.14 |
## and then run `modules-update' command. |
333 |
drobbins |
1.1 |
## Read alsa-driver's INSTALL file in /usr/share/doc for more info. |
334 |
|
|
## |
335 |
|
|
## ALSA portion |
336 |
blubber |
1.16 |
alias snd-card-0 snd-emu10k1 |
337 |
drobbins |
1.1 |
## alias snd-card-1 snd-intel8x0 |
338 |
blubber |
1.16 |
## alias snd-card-2 snd-ens1370 |
339 |
drobbins |
1.1 |
## OSS/Free portion |
340 |
erwin |
1.26 |
alias sound-slot-0 snd-card-0 |
341 |
drobbins |
1.1 |
## alias sound-slot-1 snd-card-1 |
342 |
erwin |
1.26 |
## alias sound-slot-2 snd-card-2 |
343 |
drobbins |
1.1 |
## |
344 |
|
|
</pre> |
345 |
swift |
1.20 |
|
346 |
drobbins |
1.1 |
<note> |
347 |
erwin |
1.26 |
If you have more than one soundcard, add more <c>snd-card</c> and <c>snd-slot</c> |
348 |
|
|
aliases and adjust the <c>cards_limit</c> value at the end of the file. You can |
349 |
|
|
find examples for configurations with two or more soundcards in <uri |
350 |
swift |
1.20 |
link="http://www.alsa-project.org/alsa-doc/alsa-howto/c1660.htm">Chapter 6</uri> |
351 |
|
|
of the <uri |
352 |
|
|
link="http://www.alsa-project.org/alsa-doc/alsa-howto/alsa-howto.html">ALSA |
353 |
|
|
Howto</uri>. |
354 |
drobbins |
1.1 |
</note> |
355 |
swift |
1.20 |
|
356 |
drobbins |
1.1 |
<p> |
357 |
swift |
1.20 |
Last thing to do in this file, almost at the end, check if these lines are there |
358 |
|
|
and uncommented: |
359 |
blubber |
1.16 |
</p> |
360 |
swift |
1.20 |
|
361 |
seo |
1.8 |
<pre caption="Near the end of /etc/modules.d/alsa"> |
362 |
drobbins |
1.1 |
alias /dev/mixer snd-mixer-oss |
363 |
|
|
alias /dev/dsp snd-pcm-oss |
364 |
|
|
alias /dev/midi snd-seq-oss |
365 |
|
|
</pre> |
366 |
swift |
1.20 |
|
367 |
drobbins |
1.1 |
<p> |
368 |
erwin |
1.26 |
After double-checking the file <path>/etc/modules.d/alsa</path> to make sure |
369 |
swift |
1.20 |
everyting is ok, run <c>modules-update</c>. |
370 |
|
|
</p> |
371 |
|
|
|
372 |
|
|
<pre caption="Running modules-update"> |
373 |
bennyc |
1.14 |
# <i>modules-update</i> |
374 |
drobbins |
1.1 |
</pre> |
375 |
swift |
1.20 |
|
376 |
drobbins |
1.1 |
<note> |
377 |
swift |
1.20 |
Running <c>modules-update</c> here will insert the data from |
378 |
|
|
<path>/etc/modules.d/alsa</path> into <path>/etc/modules.conf</path> |
379 |
drobbins |
1.1 |
</note> |
380 |
swift |
1.20 |
|
381 |
drobbins |
1.1 |
<p> |
382 |
swift |
1.20 |
You should also verify that <path>/etc/devfsd.conf</path> has the alsa devices |
383 |
|
|
and permissions correctly registered. |
384 |
drobbins |
1.1 |
</p> |
385 |
swift |
1.20 |
|
386 |
seo |
1.8 |
<pre caption="/etc/devfsd.conf"> |
387 |
drobbins |
1.1 |
# ALSA/OSS stuff |
388 |
|
|
# Comment/change these if you want to change the permissions on |
389 |
|
|
# the audio devices |
390 |
|
|
LOOKUP snd MODLOAD ACTION snd |
391 |
|
|
LOOKUP dsp MODLOAD |
392 |
|
|
LOOKUP mixer MODLOAD |
393 |
|
|
LOOKUP midi MODLOAD |
394 |
|
|
REGISTER sound/.* PERMISSIONS root.audio 660 |
395 |
|
|
REGISTER snd/.* PERMISSIONS root.audio 660 |
396 |
|
|
</pre> |
397 |
swift |
1.20 |
|
398 |
drobbins |
1.1 |
<note> |
399 |
swift |
1.20 |
Notice that devfsd.conf sets <path>/dev/sound</path> permissions to be |
400 |
|
|
root.audio. Thus, for non-root users to use audio they will have to be part of |
401 |
|
|
the audio group. |
402 |
drobbins |
1.1 |
</note> |
403 |
swift |
1.20 |
|
404 |
drobbins |
1.1 |
</body> |
405 |
|
|
</section> |
406 |
|
|
</chapter> |
407 |
swift |
1.20 |
|
408 |
drobbins |
1.1 |
<chapter> |
409 |
|
|
<title>Starting ALSA</title> |
410 |
|
|
<section> |
411 |
swift |
1.20 |
<title>Adding alsasound to a runlevel</title> |
412 |
drobbins |
1.1 |
<body> |
413 |
swift |
1.20 |
|
414 |
drobbins |
1.1 |
<p> |
415 |
neysx |
1.29 |
An init script is provided for you which will install all necessary sound |
416 |
|
|
drivers for your card (including the OSS support drivers if you set USE=oss). |
417 |
|
|
The first thing to do now is to make ALSA startup at boot time: |
418 |
swift |
1.20 |
</p> |
419 |
|
|
|
420 |
aaby |
1.22 |
<pre caption="Add ALSA to the boot runlevel"> |
421 |
blubber |
1.16 |
# <i>rc-update add alsasound boot</i> |
422 |
drobbins |
1.1 |
</pre> |
423 |
swift |
1.20 |
|
424 |
|
|
<warn> |
425 |
|
|
Note that the alsasound script should be added to the "boot" runlevel, not the |
426 |
|
|
"default" runlevel. |
427 |
|
|
</warn> |
428 |
|
|
|
429 |
drobbins |
1.1 |
</body> |
430 |
|
|
</section> |
431 |
|
|
<section> |
432 |
swift |
1.20 |
<title>Running and unmuting</title> |
433 |
drobbins |
1.1 |
<body> |
434 |
swift |
1.20 |
|
435 |
drobbins |
1.1 |
<p> |
436 |
swift |
1.20 |
Since we're Linux users, we don't want to reboot. So we'll start the alsasound |
437 |
|
|
script manually. |
438 |
drobbins |
1.1 |
</p> |
439 |
swift |
1.20 |
|
440 |
|
|
<pre caption="Starting ALSA"> |
441 |
blubber |
1.16 |
# <i>/etc/init.d/alsasound start</i> |
442 |
drobbins |
1.1 |
</pre> |
443 |
swift |
1.20 |
|
444 |
drobbins |
1.1 |
<p> |
445 |
swift |
1.20 |
ALSA is running now. If everything is ok, you should be able to see the ALSA |
446 |
|
|
modules loaded when running <c>lsmod</c>. However, sound won't work yet, |
447 |
aaby |
1.22 |
because the channels are still muted. We need <c>amixer</c> to fix this. |
448 |
drobbins |
1.1 |
</p> |
449 |
swift |
1.20 |
|
450 |
swift |
1.12 |
<pre caption = "Running amixer"> |
451 |
|
|
# <i>amixer</i> |
452 |
drobbins |
1.1 |
</pre> |
453 |
swift |
1.20 |
|
454 |
erwin |
1.26 |
<!-- alsasound init script will do this for them now... |
455 |
drobbins |
1.1 |
<warn> |
456 |
swift |
1.20 |
You shouldn't get this, but <e>if</e> you get an error about "amixer: Mixer |
457 |
|
|
attach default error: No such file or directory", you should manually modprobe |
458 |
drobbins |
1.1 |
<c>snd-mixer-oss</c> and <c>snd-pcm-oss</c> once. After that run amixer again. |
459 |
|
|
</warn> |
460 |
swift |
1.20 |
|
461 |
|
|
<pre caption="Only if you get an error when running amixer"> |
462 |
bennyc |
1.15 |
# <i>modprobe snd-mixer-oss</i> |
463 |
|
|
# <i>modprobe snd-pcm-oss</i> |
464 |
|
|
# <i>amixer</i> |
465 |
drobbins |
1.1 |
</pre> |
466 |
erwin |
1.26 |
--> |
467 |
swift |
1.20 |
|
468 |
drobbins |
1.1 |
<p> |
469 |
swift |
1.13 |
If you got this far, now unmute Master and PCM channels. Some hardware |
470 |
|
|
even requires you to unmute the center channel or even the surround |
471 |
|
|
channel. |
472 |
drobbins |
1.1 |
</p> |
473 |
swift |
1.20 |
|
474 |
swift |
1.13 |
<pre caption = "Unmuting channels"> |
475 |
|
|
# <i>amixer set Master 100 unmute</i> |
476 |
|
|
# <i>amixer set PCM 100 unmute</i> |
477 |
|
|
<comment>Only if the above doesn't succeed on its own:</comment> |
478 |
|
|
# <i>amixer set Center 100 unmute</i> |
479 |
|
|
# <i>amixer set Surround 100 unmute</i> |
480 |
|
|
<comment>Test the sound:</comment> |
481 |
|
|
# <i>aplay $KDEDIR/share/sounds/pop.wav</i> <codenote>(pop.wav is part of KDE)</codenote> |
482 |
drobbins |
1.1 |
</pre> |
483 |
swift |
1.20 |
|
484 |
|
|
<p> |
485 |
|
|
We check to see if sound is working by using the aplay (alsa play) command. If |
486 |
|
|
you hear a pop, then sound is indeed working. Then, adjust the volume settings |
487 |
|
|
to your liking; the ncurses-based <c>alsamixer</c> is a great way to get them |
488 |
|
|
"just so". |
489 |
drobbins |
1.1 |
</p> |
490 |
swift |
1.20 |
|
491 |
|
|
<p> |
492 |
erwin |
1.26 |
When you reboot your system, the <c>alsasound</c> init script will |
493 |
|
|
properly save and restore your volume settings. |
494 |
|
|
</p> |
495 |
|
|
|
496 |
|
|
</body> |
497 |
|
|
</section> |
498 |
|
|
</chapter> |
499 |
|
|
|
500 |
|
|
<chapter> |
501 |
|
|
<title>MIDI Support</title> |
502 |
|
|
<section> |
503 |
|
|
<title>Hardware Synthesizer</title> |
504 |
|
|
<body> |
505 |
|
|
|
506 |
|
|
<p> |
507 |
|
|
Some sound cards (SBLive, Audigy, and others) come with onboard MIDI synthesizers. |
508 |
|
|
To use them, you must first install the <c>awesfx</c> package. |
509 |
|
|
</p> |
510 |
|
|
|
511 |
|
|
<pre caption="Install awesfx"> |
512 |
|
|
# <i>emerge awesfx</i> |
513 |
|
|
</pre> |
514 |
|
|
|
515 |
|
|
<p> |
516 |
|
|
Now, you should place your sound fonts in <path>/usr/share/sfbank/</path>. You |
517 |
|
|
can probably get the sound fonts off of the windows driver CD for your sound card. |
518 |
|
|
With the SBLive, one of the included sound font files is called 8MBGMSFX.SF2. |
519 |
|
|
</p> |
520 |
|
|
|
521 |
swift |
1.28 |
<note> |
522 |
|
|
On some recents CD supplied with a SBLive, the font file is called CT4GMSFX.SF2. |
523 |
neysx |
1.29 |
If it is your case, please replace all occurrences of 8MBGMSFX.SF2 with |
524 |
swift |
1.28 |
CT4GMSFX.SF2 in the examples. |
525 |
|
|
</note> |
526 |
|
|
|
527 |
erwin |
1.26 |
<p> |
528 |
|
|
After copying over the sound font you want to use, you need to select it for use |
529 |
|
|
with <c>/usr/bin/sfxload</c>. |
530 |
|
|
</p> |
531 |
|
|
|
532 |
|
|
<pre caption="Selecting the sound font"> |
533 |
|
|
# <i>/usr/bin/sfxload /usr/share/sfbank/8MBGMSFX.SF2</i> |
534 |
|
|
</pre> |
535 |
|
|
|
536 |
|
|
<note> |
537 |
|
|
You may wish to place this command in /etc/conf.d/local.start or in the startup |
538 |
|
|
script for your sound card (/etc/alsa.d/emu10k1) to make sure it gets loaded |
539 |
|
|
at startup. |
540 |
|
|
</note> |
541 |
|
|
|
542 |
swift |
1.32 |
<p> |
543 |
|
|
If you can't find soundfonts on your driver CD you can download some online from |
544 |
|
|
<uri>http://www.parabola.demon.co.uk/alsa/awe64.html</uri>. |
545 |
|
|
</p> |
546 |
|
|
|
547 |
erwin |
1.26 |
</body> |
548 |
|
|
</section> |
549 |
|
|
<section> |
550 |
|
|
<title>Timidity++ Virtual Synthesizer</title> |
551 |
|
|
<body> |
552 |
|
|
|
553 |
|
|
<p> |
554 |
|
|
If your sound card does not come with a hardware synthesizer (or you don't |
555 |
|
|
want to use it), you can use <c>timidity++</c> to provide you with a virtual |
556 |
|
|
synthesizer. Start by emerging this package: |
557 |
|
|
</p> |
558 |
|
|
|
559 |
|
|
<pre caption="Installing Timidity++"> |
560 |
|
|
# <i>emerge timidity++</i> |
561 |
|
|
</pre> |
562 |
|
|
|
563 |
|
|
<p> |
564 |
|
|
A sample configuration file will be installed for you in |
565 |
|
|
<path>/usr/share/timitidy/config/timidity.cfg</path>. If you don't have a |
566 |
|
|
timidity++ configuration setup yet, you can just use this one. |
567 |
|
|
</p> |
568 |
|
|
|
569 |
|
|
<pre caption="Use the default Timidity++ configuration file"> |
570 |
swift |
1.30 |
# <i>cp /usr/share/timidity/config/timidity.cfg /usr/share/timidity</i> |
571 |
erwin |
1.26 |
</pre> |
572 |
|
|
|
573 |
|
|
<p> |
574 |
|
|
Now, you need to enable the init script to run when your system boots |
575 |
|
|
and enable it now. |
576 |
|
|
</p> |
577 |
|
|
|
578 |
|
|
<pre caption="Add timidity to default runlevel and start it now"> |
579 |
|
|
# <i>rc-update add timidity default</i> |
580 |
|
|
# <i>/etc/init.d/timidity start</i> |
581 |
|
|
</pre> |
582 |
|
|
|
583 |
|
|
<p> |
584 |
|
|
Note that there is a configuration file for the init script that you can |
585 |
|
|
modify in <path>/etc/conf.d/timidity</path>, and sane defaults have been |
586 |
|
|
chosen for you. |
587 |
|
|
</p> |
588 |
|
|
|
589 |
|
|
</body> |
590 |
|
|
</section> |
591 |
|
|
<section> |
592 |
|
|
<title>Testing MIDI Support</title> |
593 |
|
|
<body> |
594 |
|
|
|
595 |
|
|
<p> |
596 |
|
|
You can use <c>pmidi</c> to test out your MIDI configuration. To do so, |
597 |
|
|
you need to first emerge its package. |
598 |
swift |
1.20 |
</p> |
599 |
|
|
|
600 |
erwin |
1.26 |
<pre caption="Installing pmidi"> |
601 |
|
|
# <i>emerge pmidi</i> |
602 |
|
|
</pre> |
603 |
|
|
|
604 |
drobbins |
1.1 |
<p> |
605 |
erwin |
1.26 |
The '-l' command line option to pmidi will list all detected MIDI output ports, |
606 |
|
|
and '-p' can be used to select the one for playback. Check to see what |
607 |
|
|
MIDI output ports are available on your system: |
608 |
|
|
</p> |
609 |
|
|
|
610 |
swift |
1.28 |
<pre caption="Listed ports when using hardware synthesizer"> |
611 |
erwin |
1.26 |
# <i>pmidi -l</i> |
612 |
|
|
Port Client name Port name |
613 |
|
|
64:0 Rawmidi 0 - EMU10K1 MPU-401 (U EMU10K1 MPU-401 (UART) |
614 |
|
|
65:0 Emu10k1 WaveTable Emu10k1 Port 0 |
615 |
|
|
65:1 Emu10k1 WaveTable Emu10k1 Port 1 |
616 |
|
|
65:2 Emu10k1 WaveTable Emu10k1 Port 2 |
617 |
|
|
65:3 Emu10k1 WaveTable Emu10k1 Port 3 |
618 |
|
|
</pre> |
619 |
|
|
|
620 |
|
|
<pre caption="Listed ports when using Timidity++"> |
621 |
|
|
# <i>pmidi -l</i> |
622 |
|
|
Port Client name Port name |
623 |
|
|
64:0 Rawmidi 0 - ES1371 ES1371 |
624 |
|
|
128:0 TiMidity TiMidity port 0 |
625 |
|
|
128:1 TiMidity TiMidity port 1 |
626 |
|
|
128:2 TiMidity TiMidity port 2 |
627 |
|
|
128:3 TiMidity TiMidity port 3 |
628 |
|
|
</pre> |
629 |
|
|
|
630 |
|
|
<p> |
631 |
|
|
Now, try playing a MIDI file to make sure everything works: |
632 |
drobbins |
1.1 |
</p> |
633 |
swift |
1.20 |
|
634 |
erwin |
1.26 |
<pre caption="Play a song"> |
635 |
|
|
# <i>pmidi -p 65:0 Final\ Fantasy\ 7\ -\ Aerith\'s\ Theme.mid</i> |
636 |
|
|
or |
637 |
|
|
# <i>pmidi -p 128:0 Final\ Fantasy\ 7\ -\ Aerith\'s\ Theme.mid</i> |
638 |
|
|
</pre> |
639 |
|
|
|
640 |
drobbins |
1.1 |
</body> |
641 |
|
|
</section> |
642 |
|
|
</chapter> |
643 |
swift |
1.20 |
|
644 |
drobbins |
1.1 |
<chapter> |
645 |
|
|
<title>Final Notes</title> |
646 |
|
|
<section> |
647 |
aaby |
1.22 |
<title>After kernel-upgrades...</title> |
648 |
drobbins |
1.1 |
<body> |
649 |
swift |
1.20 |
|
650 |
|
|
<p> |
651 |
|
|
When you ever rebuild your kernel, or upgrade to another kernel, you'll have to |
652 |
|
|
rebuild the ALSA modules. |
653 |
|
|
</p> |
654 |
|
|
|
655 |
|
|
<p> |
656 |
neysx |
1.24 |
Although you might have installed <c>alsa-driver</c>, <c>alsa-lib</c> and |
657 |
swift |
1.20 |
<c>alsa-utils</c>, only the first will have to be installed again, since it will |
658 |
|
|
put the alsa modules in <path>/lib/modules/*/kernel/sound/pci/</path>. |
659 |
|
|
</p> |
660 |
|
|
|
661 |
aaby |
1.22 |
<pre caption="Needed after each kernel compile"> |
662 |
blubber |
1.16 |
# <i>emerge alsa-driver</i> |
663 |
drobbins |
1.1 |
</pre> |
664 |
swift |
1.20 |
|
665 |
drobbins |
1.1 |
</body> |
666 |
|
|
</section> |
667 |
|
|
<section> |
668 |
erwin |
1.26 |
<title>alsa-tools and alsa-firmware</title> |
669 |
|
|
<body> |
670 |
|
|
|
671 |
|
|
<p> |
672 |
|
|
The alsa-tools and alsa-firmware packages contain tools useful to only users of |
673 |
|
|
specific sound cards. Most users will not need these. If you do need alsa-tools, |
674 |
|
|
you can set the environment variable 'ALSA_TOOLS' to install just the needed tools |
675 |
|
|
for your card: |
676 |
|
|
</p> |
677 |
|
|
|
678 |
|
|
<pre caption="Installing alsa-tools"> |
679 |
|
|
# <i>env ALSA_TOOLS='as10k1 ac3dec' emerge alsa-tools</i> |
680 |
|
|
</pre> |
681 |
|
|
|
682 |
|
|
</body> |
683 |
|
|
</section> |
684 |
|
|
<section> |
685 |
|
|
<title>Mixing versions</title> |
686 |
|
|
<body> |
687 |
|
|
|
688 |
|
|
<p> |
689 |
|
|
Often times, different versions of <c>alsa-driver</c>, <c>alsa-lib</c>, |
690 |
|
|
<c>alsa-utils</c>, <c>alsa-tools</c>, and <c>alsa-oss</c> will work with each |
691 |
|
|
other, but it is recommended that you try to keep the versions in sync. |
692 |
|
|
</p> |
693 |
|
|
|
694 |
|
|
</body> |
695 |
|
|
</section> |
696 |
|
|
<section> |
697 |
swift |
1.20 |
<title>/etc/modules.autoload</title> |
698 |
drobbins |
1.1 |
<body> |
699 |
swift |
1.20 |
|
700 |
|
|
<p> |
701 |
erwin |
1.26 |
You won't have to edit this file for use with ALSA. After doing <c>rc-update add |
702 |
|
|
alsasound boot</c>, the correct modules will be loaded at startup. |
703 |
swift |
1.20 |
</p> |
704 |
|
|
|
705 |
erwin |
1.26 |
<!-- |
706 |
swift |
1.20 |
<p> |
707 |
|
|
It's not necessary to add <c>snd-pcm-oss</c> or <c>snd-mixer-oss</c> in this |
708 |
|
|
file. Check the <uri link="http://www.djcj.org/LAU/guide/alsbook/faq1.html">this |
709 |
|
|
FAQ</uri> for more info. |
710 |
|
|
</p> |
711 |
erwin |
1.26 |
--> |
712 |
swift |
1.20 |
|
713 |
drobbins |
1.1 |
</body> |
714 |
|
|
</section> |
715 |
swift |
1.17 |
<section> |
716 |
|
|
<title>Known bugs</title> |
717 |
|
|
<body> |
718 |
|
|
|
719 |
|
|
<note> |
720 |
|
|
This guide lags behind on the alsa-development. Chances are these bugs |
721 |
|
|
are already fixed when you read this. |
722 |
|
|
</note> |
723 |
|
|
|
724 |
|
|
<ul> |
725 |
swift |
1.20 |
<li> |
726 |
|
|
If you have <b>lots of noise</b> when using <b>oss</b> emulation, add |
727 |
|
|
<e>options snd-pcm-oss dsp_map=1</e> to <path>/etc/modules.d/alsa</path> |
728 |
|
|
</li> |
729 |
swift |
1.17 |
</ul> |
730 |
swift |
1.21 |
|
731 |
|
|
</body> |
732 |
|
|
</section> |
733 |
|
|
<section> |
734 |
|
|
<title>Activating Joystick Support</title> |
735 |
|
|
<body> |
736 |
|
|
|
737 |
|
|
<p> |
738 |
|
|
If your soundcard has a joystick plug, you might be interested in activating |
739 |
|
|
joystick support for your soundcard. If so, start by verifying if your soundcard |
740 |
|
|
driver has a joystick parameter. You can verify this by running <c>modinfo</c> |
741 |
|
|
against your <path>snd-<your chipset></path>. For instance, for the |
742 |
|
|
<c>snd-via82xx</c>: |
743 |
|
|
</p> |
744 |
|
|
|
745 |
|
|
<pre caption="Running modinfo"> |
746 |
|
|
# <i>modinfo snd-via82xx</i> |
747 |
|
|
filename: /lib/modules/2.4.22-ck2/snd-via82xx.o |
748 |
|
|
description: "VIA VT82xx audio" |
749 |
|
|
author: "Jaroslav Kysela <perex@suse.cz>" |
750 |
|
|
license: "GPL" |
751 |
|
|
parm: index int array (min = 1, max = 8), description "Index value for VIA 82xx bridge." |
752 |
|
|
parm: id string array (min = 1, max = 8), description "ID string for VIA 82xx bridge." |
753 |
|
|
parm: enable int array (min = 1, max = 8), description "Enable audio part of VIA 82xx bridge." |
754 |
|
|
parm: mpu_port long array (min = 1, max = 8), description "MPU-401 port. (VT82C686x only)" |
755 |
|
|
<i>parm: joystick int array (min = 1, max = 8), description "Enable joystick. (VT82C686x only)"</i> |
756 |
|
|
parm: ac97_clock int array (min = 1, max = 8), description "AC'97 codec clock (default 48000Hz)." |
757 |
|
|
parm: dxs_support int array (min = 1, max = 8), description "Support for DXS channels |
758 |
|
|
(0 = auto, 1 = enable, 2 = disable, 3 = 48k only, 4 = no VRA)" |
759 |
|
|
</pre> |
760 |
|
|
|
761 |
|
|
<p> |
762 |
|
|
If it has the <c>joystick</c> parameter, then append <c>joystick=1</c> to your |
763 |
|
|
<c>options</c> line in <path>/etc/modules.d/alsa</path>. For instance, for the |
764 |
|
|
<c>snd-via82xx</c>: |
765 |
|
|
</p> |
766 |
|
|
|
767 |
|
|
<pre caption="Adding the joystick parameter"> |
768 |
|
|
alias snd-card-0 snd-via82xx |
769 |
|
|
options snd-via82xx joystick=1 |
770 |
|
|
</pre> |
771 |
swift |
1.17 |
|
772 |
|
|
</body> |
773 |
|
|
</section> |
774 |
drobbins |
1.1 |
<section> |
775 |
aaby |
1.22 |
<title>More links...</title> |
776 |
drobbins |
1.1 |
<body> |
777 |
swift |
1.20 |
|
778 |
drobbins |
1.1 |
<p> |
779 |
|
|
You could check these for additional info: |
780 |
|
|
</p> |
781 |
swift |
1.20 |
|
782 |
drobbins |
1.1 |
<ul> |
783 |
swift |
1.20 |
<li> |
784 |
|
|
<uri link="http://www.gentoo.org/doc/en/desktop.xml">The Gentoo Linux |
785 |
|
|
Desktop Configuration Guide</uri> |
786 |
|
|
</li> |
787 |
|
|
<li> |
788 |
|
|
<uri link="http://www.alsa-project.org">ALSA Project Homepage</uri> |
789 |
|
|
</li> |
790 |
|
|
<li> |
791 |
|
|
<uri link="http://www.alsa-project.org/documentation.php3">ALSA Users |
792 |
|
|
Documentation</uri> |
793 |
|
|
</li> |
794 |
|
|
<li> |
795 |
|
|
<uri link="http://www.djcj.org">ALSA Howto's and FAQ's</uri> |
796 |
|
|
</li> |
797 |
|
|
<li> |
798 |
|
|
<uri link="http://tldp.org/HOWTO/Sound-HOWTO/index.html">Linux Sound |
799 |
|
|
HOWTO</uri> |
800 |
|
|
</li> |
801 |
|
|
<li> |
802 |
|
|
<uri link="http://linux-sound.org/">Sound and MIDI Software For Linux</uri> |
803 |
|
|
</li> |
804 |
drobbins |
1.1 |
</ul> |
805 |
swift |
1.20 |
|
806 |
drobbins |
1.1 |
</body> |
807 |
|
|
</section> |
808 |
|
|
</chapter> |
809 |
|
|
</guide> |