/[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.42 - (show annotations) (download) (as text)
Sun Oct 31 18:57:00 2004 UTC (9 years, 10 months ago) by cam
Branch: MAIN
Changes since 1.41: +17 -20 lines
File MIME type: application/xml
#69637. s/pmidi/aplaymidi/

1 <?xml version="1.0" encoding="UTF-8"?>
2 <!-- $Header: /var/cvsroot/gentoo/xml/htdocs/doc/en/alsa-guide.xml,v 1.41 2004/08/29 14:15:34 swift 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.5</version>
44 <date>October 31, 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 the output of the <c>lspci</c> command. You can install
104 it with <c>emerge pciutils</c>.
105 </p>
106
107 <pre caption="Finding out the soundcard type">
108 # <i>lspci | grep -i audio</i>
109 Multimedia audio controller: VIA Technologies, Inc. VT82C686 AC97 Audio 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>. This is all the
118 information you need, so you can safely discard the rest of that document.
119 </p>
120
121 <p>
122 Based on this information we can now install the <c>alsa-driver</c> for our
123 soundcard. First edit <path>/etc/make.conf</path> and <e>add</e> a new option
124 called ALSA_CARDS to it. Inside this variable you declare the soundcard driver
125 you want to use:
126 </p>
127
128 <pre caption="Editing /etc/make.conf for ALSA_CARDS">
129 ALSA_CARDS="via82xx"
130 </pre>
131
132 <p>
133 Now install <c>alsa-driver</c>:
134 </p>
135
136 <pre caption="Installing ALSA Drivers">
137 # <i>emerge alsa-driver</i>
138 </pre>
139
140 <impo>
141 Whenever you (re)compile your kernel sources, chances are that the ALSA drivers
142 will be overwritten. It is therefore adviseable to rerun <c>emerge
143 alsa-driver</c> every time you (re)compile your kernel <e>after</e> having
144 rebooted into the new kernel.
145 </impo>
146
147 </body>
148 </section>
149 <section id="alsa-utils">
150 <title>Installing the ALSA Utils</title>
151 <body>
152
153 <p>
154 If you want backwards compatibility with OSS, you need to install
155 <c>alsa-oss</c>:
156 </p>
157
158 <pre caption="Installing the ALSA OSS compatibility layer">
159 # <i>emerge alsa-oss</i>
160 </pre>
161
162 <p>
163 Now install the ALSA Utils on your system (this is mandatory):
164 </p>
165
166 <pre caption="Installing ALSA Utils">
167 # <i>emerge alsa-utils</i>
168 </pre>
169
170 <p>
171 Now that the utils are installed, it is time to configure ALSA...
172 </p>
173
174 </body>
175 </section>
176 </chapter>
177 <chapter>
178 <title>Configuring ALSA</title>
179 <section>
180 <title>Automatically Loading the Kernel Modules</title>
181 <body>
182
183 <p>
184 If you use a modular kernel (such as when using <c>genkernel</c>) you have to
185 edit <path>/etc/modules.d/alsa</path> so that it activates the necesary modules
186 at boot time. For the soundcard in our example:
187 </p>
188
189 <pre caption="/etc/modules.d/alsa">
190 alias snd-card-0 snd-via82xx
191 <comment># The following is only needed when you want OSS compatibility</comment>
192 alias sound-slot-0 snd-card-0
193 alias /dev/mixer snd-mixer-oss
194 alias /dev/dsp snd-pcm-oss
195 alias /dev/midi snd-seq-oss
196 </pre>
197
198 <p>
199 Now run <c>modules-update</c> to save the changes you made to the
200 <path>alsa</path> file into <path>/etc/modules.conf</path>:
201 </p>
202
203 <pre caption="Running modules-update">
204 # <i>modules-update</i>
205 </pre>
206
207 </body>
208 </section>
209 <section>
210 <title>Verifying the Device Files</title>
211 <body>
212
213 <p>
214 If you use DevFS (which is the default for Gentoo installations) make sure that
215 <path>/etc/devfsd.conf</path> has the ALSA devices and permissions correctly
216 registered:
217 </p>
218
219 <pre caption="/etc/devfsd.conf">
220 # ALSA/OSS stuff
221 # Comment/change these if you want to change the permissions on
222 # the audio devices
223 LOOKUP snd MODLOAD ACTION snd
224 LOOKUP dsp MODLOAD
225 LOOKUP mixer MODLOAD
226 LOOKUP midi MODLOAD
227 REGISTER sound/.* PERMISSIONS root.audio 660
228 REGISTER snd/.* PERMISSIONS root.audio 660
229 </pre>
230
231 </body>
232 </section>
233 <section>
234 <title>Having ALSA Activated at Boot</title>
235 <body>
236
237 <p>
238 To activate ALSA support at boot, add the <c>alsasound</c> init script to the
239 boot runlevel:
240 </p>
241
242 <pre caption="Adding alsasound to the boot runlevel">
243 # <i>rc-update add alsasound boot</i>
244 # <i>/etc/init.d/alsasound start</i>
245 </pre>
246
247 </body>
248 </section>
249 <section>
250 <title>Unmute the Channels</title>
251 <body>
252
253 <p>
254 By default, all sound channels are muted. To fix this, run <c>amixer</c>:
255 </p>
256
257 <pre caption="Running amixer">
258 # <i>amixer</i>
259 </pre>
260
261 <p>
262 If <c>amixer</c> produces lots of output then you're ready to unmute the
263 channels. If you receive an error, doublecheck that your soundcard module is
264 started.
265 </p>
266
267 <p>
268 Now unmute the <e>Master</e> and <e>PCM</e> channels. If this isn't sufficient,
269 also unmute the <e>Center</e> and <e>Surround</e> channels.
270 </p>
271
272 <pre caption="Unmuting the sound channels">
273 # <i>amixer set Master 100 unmute</i>
274 # <i>amixer set PCM 100 unmute</i>
275 <comment>(Only if the above isn't sufficient:)</comment>
276 # <i>amixer set Center 100 unmute</i>
277 # <i>amixer set Surround 100 unmute</i>
278 </pre>
279
280 <p>
281 To check if your sound works, play a wave file (using <c>aplay</c>), mp3 (using
282 <c>mpg123</c> or even <c>mplayer</c>) or any other sound file for that matter.
283 </p>
284
285 <p>
286 To fine-tune the sound channel settings you can use the <c>alsamixer</c>
287 application.
288 </p>
289
290 </body>
291 </section>
292 </chapter>
293 <chapter>
294 <title>Activating MIDI Support</title>
295 <section>
296 <title>Installing the Necessary Packages</title>
297 <body>
298
299 <p>
300 Some soundcards come with onboard MIDI synthesizers. To use them, you must first
301 install the <c>awesfx</c> package:
302 </p>
303
304 <pre caption="Installing the awesfx package">
305 # <i>emerge awesfx</i>
306 </pre>
307
308 <p>
309 If you have a collection of sound fonts somewhere, place them in
310 <path>/usr/share/sfbank</path>. For instance, the SBLive has a sound font file
311 called <path>8MBGMSFX.SF2</path> or <path>CT4GMSFX.SF2</path>.
312 </p>
313
314 <p>
315 After copying over the sound font, select them using <c>asfxload</c>:
316 </p>
317
318 <pre caption="Loading the sound font">
319 # <i>asfxload /usr/share/sfbank/8MBGMSFX.SF2</i>
320 </pre>
321
322 <p>
323 You must have this command run every time you boot, so it is adviseable to add
324 it to <path>/etc/conf.d/local.start</path> as well.
325 </p>
326
327 <p>
328 If you can't find soundfonts on your driver CD you can download some online from
329 <uri>http://www.parabola.demon.co.uk/alsa/awe64.html</uri>.
330 </p>
331
332 </body>
333 </section>
334 <section>
335 <title>Timidity++ Virtual Synthesizer</title>
336 <body>
337
338 <p>
339 If your sound card does not come with a hardware synthesizer (or you don't want
340 to use it), you can use <c>timidity++</c> to provide you with a virtual
341 synthesizer. Start by emerging this package:
342 </p>
343
344 <pre caption="Installing Timidity++">
345 # <i>emerge timidity++</i>
346 </pre>
347
348 <p>
349 For timidity to play sounds, it needs a soundfont. If you do not have any,
350 install <c>timidity-eawpatches</c> which will give you some soundfonts.
351 </p>
352
353 <pre caption="Installing timidity-eawpatches">
354 # <i>emerge timidity-eawpatches</i>
355 </pre>
356
357 <p>
358 Don't forget to add <c>timidity</c> to the default runlevel.
359 </p>
360
361 <pre caption="Adding timidity to the default runlevel">
362 # <i>rc-update add timidity default</i>
363 # <i>/etc/init.d/timidity start</i>
364 </pre>
365
366 </body>
367 </section>
368 <section>
369 <title>Testing MIDI Support</title>
370 <body>
371
372 <p>
373 You can use <c>aplaymidi</c> from the ALSA Utils to test your MIDI
374 configuration.
375 </p>
376
377 <p>
378 To see what MIDI output ports are available on your system, use the <c>-l</c>
379 option:
380 </p>
381
382 <pre caption="Viewing the MIDI output ports">
383 # <i>aplaymidi -l</i>
384 </pre>
385
386 <p>
387 If all looks fine, try playing a MIDI file to make sure everything works. With
388 the <c>-p</c> option you define what MIDI port you want to use.
389 </p>
390
391 <pre caption="Playing a MIDI file">
392 # <i>aplaymidi -p 65:0 "Final Fantasy 7 - Aerith' Theme.mid"</i>
393 </pre>
394
395 </body>
396 </section>
397 </chapter>
398 <chapter>
399 <title>Final Remarks</title>
400 <section>
401 <title>Tools and Firmware</title>
402 <body>
403
404 <p>
405 Some specific sound cards can benefit from certain tools provided by the
406 <c>alsa-tools</c> and <c>alsa-firmware</c> packages. If you need
407 <c>alsa-tools</c>, be sure to define the ALSA_TOOLS variable in
408 <path>/etc/make.conf</path> with the tools you require. For instance:
409 </p>
410
411 <pre caption="Selecting ALSA Tools in /etc/make.conf">
412 ALSA_TOOLS="as10k1 ac3dec"
413 </pre>
414
415 <p>
416 Then install the <c>alsa-tools</c> (and/or <c>alsa-firmware</c>) package(s):
417 </p>
418
419 <pre caption="Installing ALSA Tools">
420 # <i>emerge alsa-tools</i>
421 </pre>
422
423 </body>
424 </section>
425 <section>
426 <title>Activating Joystick Support</title>
427 <body>
428
429 <p>
430 If your soundcard has a joystick plug, you might be interested in activating
431 joystick support for your soundcard. If so, start by verifying if your soundcard
432 driver has a joystick parameter. You can verify this by running <c>modinfo</c>
433 against your kernel module. For instance, for the <c>snd-via82xx</c>:
434 </p>
435
436 <pre caption="Running modinfo">
437 # <i>modinfo snd-via82xx</i>
438 filename: /lib/modules/2.4.22-ck2/snd-via82xx.o
439 description: "VIA VT82xx audio"
440 author: "Jaroslav Kysela &lt;perex@suse.cz&gt;"
441 license: "GPL"
442 parm: index int array (min = 1, max = 8), description "Index value for
443 VIA 82xx bridge."
444 parm: id string array (min = 1, max = 8), description "ID string for VIA
445 82xx bridge."
446 parm: enable int array (min = 1, max = 8), description "Enable audio part
447 of VIA 82xx bridge."
448 parm: mpu_port long array (min = 1, max = 8), description "MPU-401 port.
449 (VT82C686x only)"
450 <i>parm: joystick int array (min = 1, max = 8), description "Enable
451 joystick. (VT82C686x only)"</i>
452 parm: ac97_clock int array (min = 1, max = 8), description "AC'97 codec
453 clock (default 48000Hz)."
454 parm: dxs_support int array (min = 1, max = 8), description "Support for
455 DXS channels (0 = auto, 1 = enable, 2 = disable, 3 = 48k only, 4 =
456 no VRA)
457 </pre>
458
459 <p>
460 If it has the <c>joystick</c> parameter, append <c>joystick=1</c> to your
461 <c>options</c> line in <path>/etc/modules.d/alsa</path>. For instance:
462 </p>
463
464 <pre caption="Adding the joystick parameter">
465 alias snd-card-0 snd-via82xx
466 options snd-via82xx joystick=1
467 </pre>
468
469 </body>
470 </section>
471 <section>
472 <title>Resources</title>
473 <body>
474
475 <ul>
476 <li><uri link="http://www.alsa-project.org">The ALSA Project</uri></li>
477 <li><uri link="http://www.djcj.org">ALSA Howto's and FAQs</uri></li>
478 <li><uri link="http://linux-sound.org">Linux Sound/MIDI Software</uri></li>
479 </ul>
480
481 </body>
482 </section>
483 </chapter>
484 </guide>

  ViewVC Help
Powered by ViewVC 1.1.20