/[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.39 - (hide annotations) (download) (as text)
Fri Aug 13 18:01:14 2004 UTC (10 years, 2 months ago) by cam
Branch: MAIN
Changes since 1.38: +5 -5 lines
File MIME type: application/xml
#60209 s/sfxload/asfxload/ for ALSA

1 zhen 1.3 <?xml version='1.0' encoding="UTF-8"?>
2 cam 1.39 <!-- $Header: /var/cvsroot/gentoo/xml/htdocs/doc/en/alsa-guide.xml,v 1.38 2004/07/30 12:42:06 swift 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 cam 1.39 <version>1.5.2</version>
44     <date>August 13, 2004</date>
45 drobbins 1.1
46     <chapter>
47 swift 1.35 <title>The Advanced Linux Sound Architecture</title>
48 drobbins 1.1 <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.35 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 drobbins 1.1 </p>
57    
58     <p>
59 swift 1.35 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 drobbins 1.1 </p>
64 swift 1.20
65 drobbins 1.1 </body>
66     </section>
67     </chapter>
68     <chapter>
69 swift 1.35 <title>Installing ALSA</title>
70 drobbins 1.1 <section>
71 swift 1.35 <title>USE Flags</title>
72 swift 1.17 <body>
73    
74     <p>
75 swift 1.35 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 swift 1.17 </p>
80    
81     </body>
82     </section>
83     <section>
84 swift 1.35 <title>Kernel Modules</title>
85 drobbins 1.1 <body>
86 swift 1.20
87 drobbins 1.1 <p>
88 swift 1.35 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 drobbins 1.1 </p>
92 swift 1.20
93 drobbins 1.1 <p>
94 swift 1.35 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 drobbins 1.1 </p>
99 swift 1.20
100     <p>
101 swift 1.35 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 drobbins 1.1 </p>
105 swift 1.20
106 swift 1.35 <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 drobbins 1.1 </pre>
111 swift 1.20
112 drobbins 1.1 <p>
113 swift 1.35 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 drobbins 1.1 </p>
119 swift 1.20
120 swift 1.35 <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 swift 1.20
127 swift 1.35 <pre caption="Editing /etc/make.conf for ALSA_CARDS">
128     ALSA_CARDS="via82xx"
129 erwin 1.26 </pre>
130    
131     <p>
132 swift 1.35 Now install <c>alsa-driver</c>:
133 erwin 1.26 </p>
134    
135 swift 1.35 <pre caption="Installing ALSA Drivers">
136     # <i>emerge alsa-driver</i>
137     </pre>
138 swift 1.20
139 drobbins 1.1 <impo>
140 swift 1.35 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 drobbins 1.1 </impo>
145 swift 1.20
146 drobbins 1.1 </body>
147     </section>
148 swift 1.35 <section id="alsa-utils">
149     <title>Installing the ALSA Utils</title>
150 drobbins 1.1 <body>
151    
152     <p>
153 swift 1.35 If you want backwards compatibility with OSS, you need to install
154     <c>alsa-oss</c>:
155 drobbins 1.1 </p>
156 swift 1.20
157 swift 1.35 <pre caption="Installing the ALSA OSS compatibility layer">
158     # <i>emerge alsa-oss</i>
159 blubber 1.16 </pre>
160    
161 drobbins 1.1 <p>
162 swift 1.35 Now install the ALSA Utils on your system (this is mandatory):
163 drobbins 1.1 </p>
164 swift 1.20
165 swift 1.35 <pre caption="Installing ALSA Utils">
166     # <i>emerge alsa-utils</i>
167 drobbins 1.1 </pre>
168 swift 1.20
169 drobbins 1.1 <p>
170 swift 1.35 Now that the utils are installed, it is time to configure ALSA...
171 drobbins 1.1 </p>
172 swift 1.20
173 drobbins 1.1 </body>
174     </section>
175 swift 1.35 </chapter>
176     <chapter>
177     <title>Configuring ALSA</title>
178 drobbins 1.1 <section>
179 swift 1.35 <title>Automatically Loading the Kernel Modules</title>
180 drobbins 1.1 <body>
181 swift 1.20
182 drobbins 1.1 <p>
183 swift 1.35 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 drobbins 1.1 </p>
187 swift 1.12
188 swift 1.35 <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 erwin 1.26 alias sound-slot-0 snd-card-0
192 drobbins 1.1 alias /dev/mixer snd-mixer-oss
193     alias /dev/dsp snd-pcm-oss
194     alias /dev/midi snd-seq-oss
195     </pre>
196 swift 1.20
197 drobbins 1.1 <p>
198 swift 1.35 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 swift 1.20 </p>
201    
202     <pre caption="Running modules-update">
203 bennyc 1.14 # <i>modules-update</i>
204 drobbins 1.1 </pre>
205 swift 1.20
206 swift 1.35 </body>
207     </section>
208     <section>
209     <title>Verifying the Device Files</title>
210     <body>
211 swift 1.20
212 drobbins 1.1 <p>
213 swift 1.35 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 drobbins 1.1 </p>
217 swift 1.20
218 seo 1.8 <pre caption="/etc/devfsd.conf">
219 drobbins 1.1 # 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 swift 1.20
230 drobbins 1.1 </body>
231     </section>
232     <section>
233 swift 1.35 <title>Having ALSA Activated at Boot</title>
234 drobbins 1.1 <body>
235 swift 1.20
236 drobbins 1.1 <p>
237 swift 1.35 To activate ALSA support at boot, add the <c>alsasound</c> init script to the
238     boot runlevel:
239 swift 1.20 </p>
240    
241 swift 1.35 <pre caption="Adding alsasound to the boot runlevel">
242 blubber 1.16 # <i>rc-update add alsasound boot</i>
243 swift 1.35 # <i>/etc/init.d/alsasound start</i>
244 drobbins 1.1 </pre>
245 swift 1.20
246 drobbins 1.1 </body>
247     </section>
248     <section>
249 swift 1.35 <title>Unmute the Channels</title>
250 drobbins 1.1 <body>
251 swift 1.20
252 drobbins 1.1 <p>
253 swift 1.35 By default, all sound channels are muted. To fix this, run <c>amixer</c>:
254 drobbins 1.1 </p>
255 swift 1.20
256 swift 1.35 <pre caption="Running amixer">
257     # <i>amixer</i>
258 drobbins 1.1 </pre>
259 swift 1.20
260 drobbins 1.1 <p>
261 swift 1.35 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 drobbins 1.1 </p>
265 swift 1.20
266 drobbins 1.1 <p>
267 swift 1.35 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 drobbins 1.1 </p>
270 swift 1.20
271 swift 1.35 <pre caption="Unmuting the sound channels">
272 swift 1.13 # <i>amixer set Master 100 unmute</i>
273     # <i>amixer set PCM 100 unmute</i>
274 swift 1.35 <comment>(Only if the above isn't sufficient:)</comment>
275 swift 1.13 # <i>amixer set Center 100 unmute</i>
276     # <i>amixer set Surround 100 unmute</i>
277 drobbins 1.1 </pre>
278 swift 1.20
279     <p>
280 swift 1.35 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 drobbins 1.1 </p>
283 swift 1.20
284     <p>
285 swift 1.35 To fine-tune the sound channel settings you can use the <c>alsamixer</c>
286     application.
287 erwin 1.26 </p>
288    
289     </body>
290     </section>
291     </chapter>
292     <chapter>
293 swift 1.35 <title>Activating MIDI Support</title>
294 erwin 1.26 <section>
295 swift 1.35 <title>Installing the Necessary Packages</title>
296 erwin 1.26 <body>
297    
298     <p>
299 swift 1.35 Some soundcards come with onboard MIDI synthesizers. To use them, you must first
300     install the <c>awesfx</c> package:
301 erwin 1.26 </p>
302    
303 swift 1.35 <pre caption="Installing the awesfx package">
304 erwin 1.26 # <i>emerge awesfx</i>
305     </pre>
306    
307     <p>
308 swift 1.35 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 erwin 1.26 </p>
312    
313     <p>
314 cam 1.39 After copying over the sound font, select them using <c>asfxload</c>:
315 erwin 1.26 </p>
316    
317 swift 1.35 <pre caption="Loading the sound font">
318 cam 1.39 # <i>asfxload /usr/share/sfbank/8MBGMSFX.SF2</i>
319 erwin 1.26 </pre>
320    
321 swift 1.35 <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 erwin 1.26
326 swift 1.32 <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 erwin 1.26 </body>
332     </section>
333     <section>
334     <title>Timidity++ Virtual Synthesizer</title>
335     <body>
336    
337     <p>
338 swift 1.35 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 erwin 1.26 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 swift 1.35 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 cam 1.33 </p>
351    
352 swift 1.35 <pre caption="Installing timidity-eawpatches">
353 cam 1.33 # <i>emerge timidity-eawpatches</i>
354     </pre>
355    
356     <p>
357 swift 1.35 Don't forget to add <c>timidity</c> to the default runlevel.
358 erwin 1.26 </p>
359    
360 swift 1.35 <pre caption="Adding timidity to the default runlevel">
361 erwin 1.26 # <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 swift 1.35 You can use <c>pmidi</c> to test your MIDI configuration:
373 swift 1.20 </p>
374    
375 erwin 1.26 <pre caption="Installing pmidi">
376     # <i>emerge pmidi</i>
377     </pre>
378    
379 drobbins 1.1 <p>
380 swift 1.35 To see what MIDI output ports are available on your system, use the <c>-l</c>
381     option:
382 erwin 1.26 </p>
383    
384 swift 1.35 <pre caption="Viewing the MIDI output ports">
385 erwin 1.26 # <i>pmidi -l</i>
386     </pre>
387    
388     <p>
389 swift 1.35 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 drobbins 1.1 </p>
392 swift 1.20
393 swift 1.35 <pre caption="Playing a MIDI file">
394     # <i>pmidi -p 65:0 "Final Fantasy 7 - Aerith' Theme.mid"</i>
395 erwin 1.26 </pre>
396    
397 drobbins 1.1 </body>
398     </section>
399     </chapter>
400     <chapter>
401 swift 1.35 <title>Final Remarks</title>
402 drobbins 1.1 <section>
403 swift 1.35 <title>Tools and Firmware</title>
404 drobbins 1.1 <body>
405 swift 1.20
406     <p>
407 swift 1.35 Some specific sound cards can benefit from certain tools provided by the
408 cam 1.36 <c>alsa-tools</c> and <c>alsa-firmware</c> packages. If you need
409 swift 1.35 <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 swift 1.20 </p>
412    
413 swift 1.35 <pre caption="Selecting ALSA Tools in /etc/make.conf">
414     ALSA_TOOLS="as10k1 ac3dec"
415 drobbins 1.1 </pre>
416 swift 1.20
417 erwin 1.26 <p>
418 swift 1.35 Then install the <c>alsa-tools</c> (and/or <c>alsa-firmware</c>) package(s):
419 erwin 1.26 </p>
420    
421 swift 1.35 <pre caption="Installing ALSA Tools">
422     # <i>emerge alsa-tools</i>
423 erwin 1.26 </pre>
424    
425     </body>
426     </section>
427     <section>
428 swift 1.21 <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 bennyc 1.37 joystick support for your soundcard. If so, start by verifying if your soundcard
434 swift 1.21 driver has a joystick parameter. You can verify this by running <c>modinfo</c>
435 swift 1.35 against your kernel module. For instance, for the <c>snd-via82xx</c>:
436 swift 1.21 </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 swift 1.35 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 swift 1.21 </pre>
460    
461     <p>
462 swift 1.35 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 swift 1.21 </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 swift 1.17
471     </body>
472     </section>
473 drobbins 1.1 <section>
474 swift 1.35 <title>Resources</title>
475 drobbins 1.1 <body>
476 swift 1.20
477 drobbins 1.1 <ul>
478 swift 1.35 <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 drobbins 1.1 </ul>
482 swift 1.20
483 drobbins 1.1 </body>
484     </section>
485     </chapter>
486     </guide>

  ViewVC Help
Powered by ViewVC 1.1.20