/[gentoo]/xml/htdocs/doc/en/alsa-guide.xml
Gentoo

Contents of /xml/htdocs/doc/en/alsa-guide.xml

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.35 - (show annotations) (download) (as text)
Tue May 18 15:46:40 2004 UTC (10 years, 2 months ago) by swift
Branch: MAIN
Changes since 1.34: +169 -491 lines
File MIME type: application/xml
Heavy cleaning of the ALSA Guide. Including:
- Removing obsoleted parts
- Removing verbose output on several commands that has no function in the guide
- Removing the various colors the guide originally had
- Rewriting parts such as kernel configuration

1 <?xml version='1.0' encoding="UTF-8"?>
2 <!-- $Header: /home/cvsroot/gentoo/xml/htdocs/doc/en/alsa-guide.xml,v 1.34 2004/05/14 09:35:05 cam Exp $ -->
3 <!DOCTYPE guide SYSTEM "/dtd/guide.dtd">
4
5 <guide link = "/doc/en/alsa-guide.xml">
6 <title>Gentoo Linux ALSA Guide</title>
7 <author title="Author">
8 <mail link="zu@pandora.be">Vincent Verleye</mail>
9 </author>
10 <author title="Author">
11 <mail link="g2boojum@gentoo.org">Grant Goodyear</mail>
12 </author>
13 <author title="Author">
14 <mail link="agenkin@gentoo.org">Arcady Genkin</mail>
15 </author>
16 <author title="Author">
17 <mail link="eradicator@gentoo.org">Jeremy Huddleston</mail>
18 </author>
19 <author title="Editor"><!-- zhen@gentoo.org -->
20 John P. Davis
21 </author>
22 <author title="Editor">
23 <mail link="swift@gentoo.org">Sven Vermeulen</mail>
24 </author>
25 <author title="Editor">
26 <mail link="bennyc@gentoo.org">Benny Chuang</mail>
27 </author>
28 <author title="Editor">
29 <mail link="blubber@gentoo.org">Tiemo Kieft</mail>
30 </author>
31 <author title="Editor">
32 <mail link="erwin@gentoo.org">Erwin</mail>
33 </author>
34
35 <abstract>
36 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
41 <license/>
42
43 <version>1.5.0</version>
44 <date>May 18, 2004</date>
45
46 <chapter>
47 <title>The Advanced Linux Sound Architecture</title>
48 <section>
49 <title>What is ALSA?</title>
50 <body>
51
52 <p>
53 ALSA is the <e>Advanced Linux Sound Architecture</e>, a project dedicated to the
54 development of a high-quality Linux sound subsystem. It has replaced OSS
55 (<e>Open Sound System</e>) as default sound subsystem in the 2.6 kernel series.
56 </p>
57
58 <p>
59 ALSA provides efficient support for all types of audio interfaces, is fully
60 modularized, is SMP and thread-safe and provides a high-quality user space
61 library called <e>alsa-lib</e> to simplify application programming. It also
62 provides a backwards compatibility layer with OSS.
63 </p>
64
65 </body>
66 </section>
67 </chapter>
68 <chapter>
69 <title>Installing ALSA</title>
70 <section>
71 <title>USE Flags</title>
72 <body>
73
74 <p>
75 Gentoo provides an <c>alsa</c> USE flag which you should set in
76 <path>/etc/make.conf</path> to allow our available packages to compile with
77 ALSA support. If you have <c>oss</c> in your USE variable as well, ALSA will
78 compile with OSS backward compatibility.
79 </p>
80
81 </body>
82 </section>
83 <section>
84 <title>Kernel Modules</title>
85 <body>
86
87 <p>
88 First of all, before continuing, make sure your kernel has <e>Sound Card
89 Support</e> enabled. If you used <c>genkernel</c> to build your kernel, then
90 this is automatically true. Otherwise reconfigure your kernel.
91 </p>
92
93 <p>
94 If you use a 2.6 kernel you can skip the rest of this section and continue with
95 <uri link="#alsa-utils">Installing the ALSA Utils</uri> as 2.6 already has the
96 necessary ALSA drivers in it. Of course, don't forget to enable support for the
97 sound card you have when configuring your kernel.
98 </p>
99
100 <p>
101 Users of 2.4 kernel sources will have to install the necessary ALSA drivers for
102 their soundcard. First find out what soundcard you have. An easy trick is to
103 search for "audio" in <path>/proc/pci</path>:
104 </p>
105
106 <pre caption="Finding out the soundcard type">
107 # <i>grep -i audio /proc/pci</i>
108 Multimedia audio controller: VIA Technologies, Inc. VT82C686 AC97 Audio
109 Controller (rev 64).
110 </pre>
111
112 <p>
113 Now go to the <uri link="http://www.alsa-project.org/alsa-doc">ALSA Soundcard
114 Matrix</uri> and search for your soundcard. In the above example you should go
115 to the "VIA" manufacturer. You will receive a table with the known chipsets of
116 that vendor. The chipset in the above example is "via82c686"; the "Details" link
117 then informs me that the driver is called <path>via82xx</path>.
118 </p>
119
120 <p>
121 Based on this information we can now install the <c>alsa-driver</c> for our
122 soundcard. First edit <path>/etc/make.conf</path> and <e>add</e> a new option
123 called ALSA_CARDS to it. Inside this variable you declare the soundcard driver
124 you want to use:
125 </p>
126
127 <pre caption="Editing /etc/make.conf for ALSA_CARDS">
128 ALSA_CARDS="via82xx"
129 </pre>
130
131 <p>
132 Now install <c>alsa-driver</c>:
133 </p>
134
135 <pre caption="Installing ALSA Drivers">
136 # <i>emerge alsa-driver</i>
137 </pre>
138
139 <impo>
140 Whenever you (re)compile your kernel sources, chances are that the ALSA drivers
141 will be overwritten. It is therefore adviseable to rerun <c>emerge
142 alsa-driver</c> every time you (re)compile your kernel <e>after</e> having
143 rebooted into the new kernel.
144 </impo>
145
146 </body>
147 </section>
148 <section id="alsa-utils">
149 <title>Installing the ALSA Utils</title>
150 <body>
151
152 <p>
153 If you want backwards compatibility with OSS, you need to install
154 <c>alsa-oss</c>:
155 </p>
156
157 <pre caption="Installing the ALSA OSS compatibility layer">
158 # <i>emerge alsa-oss</i>
159 </pre>
160
161 <p>
162 Now install the ALSA Utils on your system (this is mandatory):
163 </p>
164
165 <pre caption="Installing ALSA Utils">
166 # <i>emerge alsa-utils</i>
167 </pre>
168
169 <p>
170 Now that the utils are installed, it is time to configure ALSA...
171 </p>
172
173 </body>
174 </section>
175 </chapter>
176 <chapter>
177 <title>Configuring ALSA</title>
178 <section>
179 <title>Automatically Loading the Kernel Modules</title>
180 <body>
181
182 <p>
183 If you use a modular kernel (such as when using <c>genkernel</c>) you have to
184 edit <path>/etc/modules.d/alsa</path> so that it activates the necesary modules
185 at boot time. For the soundcard in our example:
186 </p>
187
188 <pre caption="/etc/modules.d/alsa">
189 alias snd-card-0 snd-via82xx
190 <comment># The following is only needed when you want OSS compatibility</comment>
191 alias sound-slot-0 snd-card-0
192 alias /dev/mixer snd-mixer-oss
193 alias /dev/dsp snd-pcm-oss
194 alias /dev/midi snd-seq-oss
195 </pre>
196
197 <p>
198 Now run <c>modules-update</c> to save the changes you made to the
199 <path>alsa</path> file into <path>/etc/modules.conf</path>:
200 </p>
201
202 <pre caption="Running modules-update">
203 # <i>modules-update</i>
204 </pre>
205
206 </body>
207 </section>
208 <section>
209 <title>Verifying the Device Files</title>
210 <body>
211
212 <p>
213 If you use DevFS (which is the default for Gentoo installations) make sure that
214 <path>/etc/devfsd.conf</path> has the ALSA devices and permissions correctly
215 registered:
216 </p>
217
218 <pre caption="/etc/devfsd.conf">
219 # ALSA/OSS stuff
220 # Comment/change these if you want to change the permissions on
221 # the audio devices
222 LOOKUP snd MODLOAD ACTION snd
223 LOOKUP dsp MODLOAD
224 LOOKUP mixer MODLOAD
225 LOOKUP midi MODLOAD
226 REGISTER sound/.* PERMISSIONS root.audio 660
227 REGISTER snd/.* PERMISSIONS root.audio 660
228 </pre>
229
230 </body>
231 </section>
232 <section>
233 <title>Having ALSA Activated at Boot</title>
234 <body>
235
236 <p>
237 To activate ALSA support at boot, add the <c>alsasound</c> init script to the
238 boot runlevel:
239 </p>
240
241 <pre caption="Adding alsasound to the boot runlevel">
242 # <i>rc-update add alsasound boot</i>
243 # <i>/etc/init.d/alsasound start</i>
244 </pre>
245
246 </body>
247 </section>
248 <section>
249 <title>Unmute the Channels</title>
250 <body>
251
252 <p>
253 By default, all sound channels are muted. To fix this, run <c>amixer</c>:
254 </p>
255
256 <pre caption="Running amixer">
257 # <i>amixer</i>
258 </pre>
259
260 <p>
261 If <c>amixer</c> produces lots of output then you're ready to unmute the
262 channels. If you receive an error, doublecheck that your soundcard module is
263 started.
264 </p>
265
266 <p>
267 Now unmute the <e>Master</e> and <e>PCM</e> channels. If this isn't sufficient,
268 also unmute the <e>Center</e> and <e>Surround</e> channels.
269 </p>
270
271 <pre caption="Unmuting the sound channels">
272 # <i>amixer set Master 100 unmute</i>
273 # <i>amixer set PCM 100 unmute</i>
274 <comment>(Only if the above isn't sufficient:)</comment>
275 # <i>amixer set Center 100 unmute</i>
276 # <i>amixer set Surround 100 unmute</i>
277 </pre>
278
279 <p>
280 To check if your sound works, play a wave file (using <c>aplay</c>), mp3 (using
281 <c>mpg123</c> or even <c>mplayer</c>) or any other sound file for that matter.
282 </p>
283
284 <p>
285 To fine-tune the sound channel settings you can use the <c>alsamixer</c>
286 application.
287 </p>
288
289 </body>
290 </section>
291 </chapter>
292 <chapter>
293 <title>Activating MIDI Support</title>
294 <section>
295 <title>Installing the Necessary Packages</title>
296 <body>
297
298 <p>
299 Some soundcards come with onboard MIDI synthesizers. To use them, you must first
300 install the <c>awesfx</c> package:
301 </p>
302
303 <pre caption="Installing the awesfx package">
304 # <i>emerge awesfx</i>
305 </pre>
306
307 <p>
308 If you have a collection of sound fonts somewhere, place them in
309 <path>/usr/share/sfbank</path>. For instance, the SBLive has a sound font file
310 called <path>8MBGMSFX.SF2</path> or <path>CT4GMSFX.SF2</path>.
311 </p>
312
313 <p>
314 After copying over the sound font, select them using <c>sfxload</c>:
315 </p>
316
317 <pre caption="Loading the sound font">
318 # <i>sfxload /usr/share/sfbank/8MBGMSFX.SF2</i>
319 </pre>
320
321 <p>
322 You must have this command run every time you boot, so it is adviseable to add
323 it to <path>/etc/conf.d/local.start</path> as well.
324 </p>
325
326 <p>
327 If you can't find soundfonts on your driver CD you can download some online from
328 <uri>http://www.parabola.demon.co.uk/alsa/awe64.html</uri>.
329 </p>
330
331 </body>
332 </section>
333 <section>
334 <title>Timidity++ Virtual Synthesizer</title>
335 <body>
336
337 <p>
338 If your sound card does not come with a hardware synthesizer (or you don't want
339 to use it), you can use <c>timidity++</c> to provide you with a virtual
340 synthesizer. Start by emerging this package:
341 </p>
342
343 <pre caption="Installing Timidity++">
344 # <i>emerge timidity++</i>
345 </pre>
346
347 <p>
348 A sample configuration file will be installed for you in
349 <path>/usr/share/timidity/config/timidity.cfg</path>. If you don't have a
350 timidity++ configuration setup yet, you can just use this one.
351 </p>
352
353 <pre caption="Using the default Timidity++ configuration file">
354 # <i>cp /usr/share/timidity/config/timidity.cfg /usr/share/timidity</i>
355 </pre>
356
357 <p>
358 For timidity to play sounds, it needs a soundfont. If you do not have any,
359 install <c>timidity-eawpatches</c> which will give you some soundfonts.
360 </p>
361
362 <pre caption="Installing timidity-eawpatches">
363 # <i>emerge timidity-eawpatches</i>
364 </pre>
365
366 <p>
367 Don't forget to add <c>timidity</c> to the default runlevel.
368 </p>
369
370 <pre caption="Adding timidity to the default runlevel">
371 # <i>rc-update add timidity default</i>
372 # <i>/etc/init.d/timidity start</i>
373 </pre>
374
375 </body>
376 </section>
377 <section>
378 <title>Testing MIDI Support</title>
379 <body>
380
381 <p>
382 You can use <c>pmidi</c> to test your MIDI configuration:
383 </p>
384
385 <pre caption="Installing pmidi">
386 # <i>emerge pmidi</i>
387 </pre>
388
389 <p>
390 To see what MIDI output ports are available on your system, use the <c>-l</c>
391 option:
392 </p>
393
394 <pre caption="Viewing the MIDI output ports">
395 # <i>pmidi -l</i>
396 </pre>
397
398 <p>
399 If all looks fine, try playing a MIDI file to make sure everything works. With
400 the <c>-p</c> option you define what MIDI port you want to use.
401 </p>
402
403 <pre caption="Playing a MIDI file">
404 # <i>pmidi -p 65:0 "Final Fantasy 7 - Aerith' Theme.mid"</i>
405 </pre>
406
407 </body>
408 </section>
409 </chapter>
410 <chapter>
411 <title>Final Remarks</title>
412 <section>
413 <title>Tools and Firmware</title>
414 <body>
415
416 <p>
417 Some specific sound cards can benefit from certain tools provided by the
418 <c>alsa-tools</c> and <c>alsa-firmware</c> packages. If you ned
419 <c>alsa-tools</c>, be sure to define the ALSA_TOOLS variable in
420 <path>/etc/make.conf</path> with the tools you require. For instance:
421 </p>
422
423 <pre caption="Selecting ALSA Tools in /etc/make.conf">
424 ALSA_TOOLS="as10k1 ac3dec"
425 </pre>
426
427 <p>
428 Then install the <c>alsa-tools</c> (and/or <c>alsa-firmware</c>) package(s):
429 </p>
430
431 <pre caption="Installing ALSA Tools">
432 # <i>emerge alsa-tools</i>
433 </pre>
434
435 </body>
436 </section>
437 <section>
438 <title>Activating Joystick Support</title>
439 <body>
440
441 <p>
442 If your soundcard has a joystick plug, you might be interested in activating
443 joystick spport for your soundcard. If so, start by verifying if your soundcard
444 driver has a joystick parameter. You can verify this by running <c>modinfo</c>
445 against your kernel module. For instance, for the <c>snd-via82xx</c>:
446 </p>
447
448 <pre caption="Running modinfo">
449 # <i>modinfo snd-via82xx</i>
450 filename: /lib/modules/2.4.22-ck2/snd-via82xx.o
451 description: "VIA VT82xx audio"
452 author: "Jaroslav Kysela &lt;perex@suse.cz&gt;"
453 license: "GPL"
454 parm: index int array (min = 1, max = 8), description "Index value for
455 VIA 82xx bridge."
456 parm: id string array (min = 1, max = 8), description "ID string for VIA
457 82xx bridge."
458 parm: enable int array (min = 1, max = 8), description "Enable audio part
459 of VIA 82xx bridge."
460 parm: mpu_port long array (min = 1, max = 8), description "MPU-401 port.
461 (VT82C686x only)"
462 <i>parm: joystick int array (min = 1, max = 8), description "Enable
463 joystick. (VT82C686x only)"</i>
464 parm: ac97_clock int array (min = 1, max = 8), description "AC'97 codec
465 clock (default 48000Hz)."
466 parm: dxs_support int array (min = 1, max = 8), description "Support for
467 DXS channels (0 = auto, 1 = enable, 2 = disable, 3 = 48k only, 4 =
468 no VRA)
469 </pre>
470
471 <p>
472 If it has the <c>joystick</c> parameter, append <c>joystick=1</c> to your
473 <c>options</c> line in <path>/etc/modules.d/alsa</path>. For instance:
474 </p>
475
476 <pre caption="Adding the joystick parameter">
477 alias snd-card-0 snd-via82xx
478 options snd-via82xx joystick=1
479 </pre>
480
481 </body>
482 </section>
483 <section>
484 <title>Resources</title>
485 <body>
486
487 <ul>
488 <li><uri link="http://www.alsa-project.org">The ALSA Project</uri></li>
489 <li><uri link="http://www.djcj.org">ALSA Howto's and FAQs</uri></li>
490 <li><uri link="http://linux-sound.org">Linux Sound/MIDI Software</uri></li>
491 </ul>
492
493 </body>
494 </section>
495 </chapter>
496 </guide>

  ViewVC Help
Powered by ViewVC 1.1.20