/[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.38 - (show annotations) (download) (as text)
Fri Jul 30 12:42:06 2004 UTC (10 years, 2 months ago) by swift
Branch: MAIN
Changes since 1.37: +3 -13 lines
File MIME type: application/xml
#58387 - The configuration file for timidity++ is now already put in /etc and such

1 <?xml version='1.0' encoding="UTF-8"?>
2 <!-- $Header: /var/cvsroot/gentoo/xml/htdocs/doc/en/alsa-guide.xml,v 1.37 2004/06/15 07:21:07 bennyc 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.1</version>
44 <date>July 30, 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 For timidity to play sounds, it needs a soundfont. If you do not have any,
349 install <c>timidity-eawpatches</c> which will give you some soundfonts.
350 </p>
351
352 <pre caption="Installing timidity-eawpatches">
353 # <i>emerge timidity-eawpatches</i>
354 </pre>
355
356 <p>
357 Don't forget to add <c>timidity</c> to the default runlevel.
358 </p>
359
360 <pre caption="Adding timidity to the default runlevel">
361 # <i>rc-update add timidity default</i>
362 # <i>/etc/init.d/timidity start</i>
363 </pre>
364
365 </body>
366 </section>
367 <section>
368 <title>Testing MIDI Support</title>
369 <body>
370
371 <p>
372 You can use <c>pmidi</c> to test your MIDI configuration:
373 </p>
374
375 <pre caption="Installing pmidi">
376 # <i>emerge pmidi</i>
377 </pre>
378
379 <p>
380 To see what MIDI output ports are available on your system, use the <c>-l</c>
381 option:
382 </p>
383
384 <pre caption="Viewing the MIDI output ports">
385 # <i>pmidi -l</i>
386 </pre>
387
388 <p>
389 If all looks fine, try playing a MIDI file to make sure everything works. With
390 the <c>-p</c> option you define what MIDI port you want to use.
391 </p>
392
393 <pre caption="Playing a MIDI file">
394 # <i>pmidi -p 65:0 "Final Fantasy 7 - Aerith' Theme.mid"</i>
395 </pre>
396
397 </body>
398 </section>
399 </chapter>
400 <chapter>
401 <title>Final Remarks</title>
402 <section>
403 <title>Tools and Firmware</title>
404 <body>
405
406 <p>
407 Some specific sound cards can benefit from certain tools provided by the
408 <c>alsa-tools</c> and <c>alsa-firmware</c> packages. If you need
409 <c>alsa-tools</c>, be sure to define the ALSA_TOOLS variable in
410 <path>/etc/make.conf</path> with the tools you require. For instance:
411 </p>
412
413 <pre caption="Selecting ALSA Tools in /etc/make.conf">
414 ALSA_TOOLS="as10k1 ac3dec"
415 </pre>
416
417 <p>
418 Then install the <c>alsa-tools</c> (and/or <c>alsa-firmware</c>) package(s):
419 </p>
420
421 <pre caption="Installing ALSA Tools">
422 # <i>emerge alsa-tools</i>
423 </pre>
424
425 </body>
426 </section>
427 <section>
428 <title>Activating Joystick Support</title>
429 <body>
430
431 <p>
432 If your soundcard has a joystick plug, you might be interested in activating
433 joystick support for your soundcard. If so, start by verifying if your soundcard
434 driver has a joystick parameter. You can verify this by running <c>modinfo</c>
435 against your kernel module. For instance, for the <c>snd-via82xx</c>:
436 </p>
437
438 <pre caption="Running modinfo">
439 # <i>modinfo snd-via82xx</i>
440 filename: /lib/modules/2.4.22-ck2/snd-via82xx.o
441 description: "VIA VT82xx audio"
442 author: "Jaroslav Kysela &lt;perex@suse.cz&gt;"
443 license: "GPL"
444 parm: index int array (min = 1, max = 8), description "Index value for
445 VIA 82xx bridge."
446 parm: id string array (min = 1, max = 8), description "ID string for VIA
447 82xx bridge."
448 parm: enable int array (min = 1, max = 8), description "Enable audio part
449 of VIA 82xx bridge."
450 parm: mpu_port long array (min = 1, max = 8), description "MPU-401 port.
451 (VT82C686x only)"
452 <i>parm: joystick int array (min = 1, max = 8), description "Enable
453 joystick. (VT82C686x only)"</i>
454 parm: ac97_clock int array (min = 1, max = 8), description "AC'97 codec
455 clock (default 48000Hz)."
456 parm: dxs_support int array (min = 1, max = 8), description "Support for
457 DXS channels (0 = auto, 1 = enable, 2 = disable, 3 = 48k only, 4 =
458 no VRA)
459 </pre>
460
461 <p>
462 If it has the <c>joystick</c> parameter, append <c>joystick=1</c> to your
463 <c>options</c> line in <path>/etc/modules.d/alsa</path>. For instance:
464 </p>
465
466 <pre caption="Adding the joystick parameter">
467 alias snd-card-0 snd-via82xx
468 options snd-via82xx joystick=1
469 </pre>
470
471 </body>
472 </section>
473 <section>
474 <title>Resources</title>
475 <body>
476
477 <ul>
478 <li><uri link="http://www.alsa-project.org">The ALSA Project</uri></li>
479 <li><uri link="http://www.djcj.org">ALSA Howto's and FAQs</uri></li>
480 <li><uri link="http://linux-sound.org">Linux Sound/MIDI Software</uri></li>
481 </ul>
482
483 </body>
484 </section>
485 </chapter>
486 </guide>

  ViewVC Help
Powered by ViewVC 1.1.20