/[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.64 - (hide annotations) (download) (as text)
Sun Jan 1 11:51:43 2006 UTC (8 years, 6 months ago) by neysx
Branch: MAIN
Changes since 1.63: +5 -5 lines
File MIME type: application/xml
Removed some tabs (blame rane) **No Content Change**

1 fox2mike 1.51 <?xml version='1.0' encoding="UTF-8"?>
2 neysx 1.64 <!-- $Header: /var/cvsroot/gentoo/xml/htdocs/doc/en/alsa-guide.xml,v 1.63 2005/10/30 16:02:55 fox2mike Exp $ -->
3 fox2mike 1.51
4 drobbins 1.1 <!DOCTYPE guide SYSTEM "/dtd/guide.dtd">
5    
6 cam 1.42 <guide link="/doc/en/alsa-guide.xml">
7 drobbins 1.1 <title>Gentoo Linux ALSA Guide</title>
8 fox2mike 1.51
9 swift 1.20 <author title="Author">
10 fox2mike 1.52 <mail link="fox2mike@gentoo.org">Shyam Mani</mail>
11 erwin 1.26 </author>
12 drobbins 1.1
13     <abstract>
14 fox2mike 1.51 This document helps a user setup ALSA on Gentoo Linux.
15 swift 1.20 </abstract>
16 drobbins 1.1
17 fox2mike 1.51 <!-- The content of this document is licensed under the CC-BY-SA license -->
18 fox2mike 1.54 <!-- See http://creativecommons.org/licenses/by-sa/2.5 -->
19 swift 1.25 <license/>
20    
21 swift 1.62 <version>2.10</version>
22     <date>2005-09-10</date>
23 drobbins 1.1
24     <chapter>
25 fox2mike 1.51 <title>Introduction</title>
26 drobbins 1.1 <section>
27 swift 1.20 <title>What is ALSA?</title>
28 drobbins 1.1 <body>
29 swift 1.20
30 drobbins 1.1 <p>
31 fox2mike 1.51 ALSA, which stands for <e>Advanced Linux Sound Architecture</e>, provides
32     audio and MIDI (<e>Musical Instrument Digital Interface</e>) functionality to
33     the Linux operating system. ALSA is the default sound subsystem in the 2.6
34     kernel thereby replacing OSS (<e>Open Sound System</e>), which was used in the
35     2.4 kernels.
36 drobbins 1.1 </p>
37    
38     <p>
39 fox2mike 1.51 ALSA's main features include efficient support for all types of audio
40     interfaces ranging from consumer sound cards to professional sound
41     equipment, fully modularized drivers, SMP and thread safety, backward
42     compatibility with OSS and a user-space library <c>alsa-lib</c> to make
43     application development a breeze.
44     </p>
45    
46     </body>
47     </section>
48     <section>
49     <title>ALSA on Gentoo</title>
50     <body>
51    
52     <p>
53     One of Gentoo's main strengths lies in giving the user maximum control over
54     how a system is installed/configured. ALSA on Gentoo follows the same
55     principle. There are two ways you can get ALSA support up and running on your
56     system. We shall look at them in detail in the next chapter.
57 drobbins 1.1 </p>
58 swift 1.20
59 drobbins 1.1 </body>
60     </section>
61     </chapter>
62 fox2mike 1.51
63 drobbins 1.1 <chapter>
64 swift 1.35 <title>Installing ALSA</title>
65 drobbins 1.1 <section>
66 fox2mike 1.51 <title>Options</title>
67 swift 1.17 <body>
68    
69 fox2mike 1.51 <warn>
70     The methods shown below are mutually exclusive. You cannot have ALSA compiled
71     in your kernel and use <c>media-sound/alsa-driver</c>. It <e>will</e> fail.
72     </warn>
73    
74     <p>
75     The two options are :
76     </p>
77    
78     <ol>
79 fox2mike 1.53 <li>
80     Use ALSA provided by your kernel. This is the preferred/recommended
81     method.
82     </li>
83     <li>
84     Use Gentoo's <c>media-sound/alsa-driver</c> package.
85     </li>
86 fox2mike 1.51 </ol>
87    
88 neysx 1.64 <p>
89 fox2mike 1.51 We shall take a peek into both before finally deciding on one.
90     </p>
91    
92     <p>
93     If you were to use ALSA provided by the kernel, the following are the pros and
94     cons :
95     </p>
96    
97     <table>
98     <tr>
99     <th>Kernel ALSA</th>
100     <th>Pros and Cons</th>
101     </tr>
102     <tr>
103     <th>+</th>
104     <ti>Pretty stable as drivers are integrated into kernel.</ti>
105     </tr>
106     <tr>
107     <th>+</th>
108     <ti>One shot solution, no repeating emerges.</ti>
109     </tr>
110     <tr>
111     <th>-</th>
112     <ti>Might be a slightly older version than <c>alsa-driver</c>.</ti>
113     </tr>
114     </table>
115    
116 swift 1.17 <p>
117 fox2mike 1.51 And, if you were to use alsa-driver,
118 swift 1.17 </p>
119    
120 fox2mike 1.51 <table>
121     <tr>
122     <th>alsa-driver</th>
123     <th>Pros and Cons</th>
124     </tr>
125     <tr>
126     <th>+</th>
127     <ti>Latest drivers from the ALSA Project.</ti>
128     </tr>
129     <tr>
130     <th>-</th>
131     <ti>Every kernel recompile requires a re-emerge of <c>alsa-driver</c>.</ti>
132     </tr>
133     <tr>
134     <th>-</th>
135     <ti>Needs certain kernel config options disabled to work correctly.</ti>
136     </tr>
137     </table>
138    
139 swift 1.17 </body>
140     </section>
141     <section>
142 fox2mike 1.51 <title>So...</title>
143 drobbins 1.1 <body>
144 swift 1.20
145 drobbins 1.1 <p>
146 fox2mike 1.51 The main difference between using <c>alsa-driver</c> and ALSA that comes with
147     the kernel is that <c>alsa-driver</c> is generally more up to date than the
148     version in the kernel. Since this does not make any huge difference as
149 fox2mike 1.57 such, you are encouraged to use the ALSA provided by the kernel for ease of use.
150     Before reporting any sound related issues to <uri
151     link="https://bugs.gentoo.org">Gentoo Bugzilla</uri>, please try to reproduce
152     them using <c>alsa-driver</c> and file the bug report no matter what the
153     result.
154 drobbins 1.1 </p>
155 swift 1.20
156 fox2mike 1.51 </body>
157     </section>
158     <section id="lspci">
159     <title>Before you proceed</title>
160     <body>
161 swift 1.20
162     <p>
163 fox2mike 1.51 Whichever method of install you choose, you need to know what drivers your
164 fox2mike 1.54 sound card uses. In most cases, sound cards (onboard and otherwise) are PCI
165     based and <c>lspci</c> will help you in digging out the required information.
166     Please <c>emerge sys-apps/pciutils</c> to get <c>lspci</c>, if you don't have it
167     installed already. In case you have a USB sound card, <c>lsusb</c> from
168     <c>sys-apps/usbutils</c> <e>might</e> be of help. For ISA cards, try using
169     <c>sys-apps/isapnptools</c>. Also, the following pages <e>may</e> help users
170     with ISA based sound cards.
171     </p>
172    
173     <ul>
174     <li>
175     <uri link="http://www.roestock.demon.co.uk/isapnptools/">The ISAPNPTOOLS
176     Page</uri>
177     </li>
178     <li>
179     <uri link="http://www2.linuxjournal.com/article/3269">LinuxJournal PnP
180     Article</uri>
181     </li>
182     <li>
183     <uri link="http://www.tldp.org/HOWTO/Sound-HOWTO/x320.html">TLDP Sound
184     HowTo</uri>
185     </li>
186     </ul>
187    
188     <note>
189     For ease of use/explanation, we assume the user has a PCI based sound card for
190     the remainder of this guide.
191     </note>
192    
193     <p>
194     We now proceed to find out details about the sound card.
195 drobbins 1.1 </p>
196 swift 1.20
197 fox2mike 1.51 <pre caption="Soundcard Details">
198     # <i>lspci -v | grep -i audio</i>
199     0000:00:0a.0 Multimedia audio controller: Creative Labs SB Live! EMU10k1 (rev 06)
200 drobbins 1.1 </pre>
201 swift 1.20
202 drobbins 1.1 <p>
203 fox2mike 1.51 We now know that the sound card on the machine is a Sound Blaster Live! and
204     the card manufacturer is Creative Labs. Head over to the
205     <uri link="http://www.alsa-project.org/alsa-doc/"> ALSA Soundcard Matrix</uri>
206     page and select Creative Labs from the drop down menu. You will be taken to
207     the Creative Labs matrix page where you can see that the SB Live! uses the
208     <c>emu10k1</c> module. That is the information we need for now. If you are
209     interested in detailed information, you can click on the link next to the
210     "Details" and that will take you to the <c>emu10k1</c> specific page.
211 drobbins 1.1 </p>
212 swift 1.20
213 fox2mike 1.51 </body>
214     </section>
215     <section id="kernel">
216     <title>Using ALSA provided by your Kernel</title>
217     <body>
218    
219 swift 1.35 <p>
220 fox2mike 1.51 If you're a person who likes to keep things simple like I do, then this is
221     the way to go.
222 swift 1.35 </p>
223 swift 1.20
224 fox2mike 1.51 <note>
225     Since the 2005.0 release, Gentoo Linux uses 2.6 as the default kernel. Unless
226     you are specifically using the 2.4 profile, <c>gentoo-sources</c> will be a
227     2.6 kernel on <e>most</e> architectures. Please check that your kernel is a
228     2.6 series kernel. This method will <e>not</e> work on a 2.4 kernel.
229     </note>
230    
231     <p>
232     Let us now configure the kernel to enable ALSA.
233     </p>
234    
235 fox2mike 1.54 <impo>
236 fox2mike 1.63 <c>genkernel</c> users should now run <c>genkernel --menuconfig all</c> and
237     then follow the instructions in <uri link="#doc_chap2_pre3">Kernel Options for
238     ALSA</uri>.
239 fox2mike 1.54 </impo>
240    
241 fox2mike 1.51 <pre caption="Heading over to the source">
242     # <i>cd /usr/src/linux</i>
243     # <i>make menuconfig</i>
244 erwin 1.26 </pre>
245    
246 fox2mike 1.51 <note>
247     The above example assumes that <path>/usr/src/linux</path> symlink points to
248     the kernel sources you want to use. Please ensure the same before proceeding.
249     </note>
250 neysx 1.46
251 erwin 1.26 <p>
252 fox2mike 1.51 Now we will look at some of the options we will have to enable in the 2.6
253     kernel to ensure proper ALSA support for our sound card.
254 erwin 1.26 </p>
255    
256 fox2mike 1.54 <p>
257     Please note that for the sake of ease, all examples show ALSA built as modules.
258     It is advisable to follow the same as it then allows the use of <c>alsaconf</c>
259 fox2mike 1.63 which is a boon when you want to configure your card. Please do <e>not</e> skip
260     the <uri link="#alsa-config">Configuration</uri> section of this document. If
261     you still like to have options built-in, ensure that you make changes to your
262     config accordingly.
263 fox2mike 1.54 </p>
264 fox2mike 1.51
265     <pre caption="Kernel Options for ALSA">
266     Device Drivers ---&gt;
267     Sound ---&gt;
268    
269     <comment>(This needs to be enabled)</comment>
270     &lt;M&gt; Sound card support
271    
272     <comment>(Make sure OSS is disabled)</comment>
273     Open Sound System ---&gt;
274     &lt; &gt; Open Sound System (DEPRECATED)
275    
276     <comment>(Move one step back and enter ALSA)</comment>
277     Advanced Linux Sound Architecture ---&gt;
278     &lt;M&gt; Advanced Linux Sound Architecture
279     <comment>(Select this if you want MIDI sequencing and routing)</comment>
280     &lt;M&gt; Sequencer support
281     <comment>(Old style /dev/mixer* and /dev/dsp* support. Recommended.)</comment>
282     &lt;M&gt; OSS Mixer API
283     &lt;M&gt; OSS PCM (digital audio) API
284    
285     <comment>(You now have a choice of devices to enable support for. Generally,
286     you will have one type of device and not more. If you have more than one
287     sound card, please enable them all here.)</comment>
288    
289     <comment>(Mostly for testing and development purposes, not needed for normal
290     users unless you know what you are doing.)</comment>
291     Generic devices ---&gt;
292    
293     <comment>(For ISA Sound cards)</comment>
294     ISA devices ---&gt;
295     <comment>(IF you had the Gravis, you would select this option)</comment>
296     &lt;M&gt; Gravis UltraSound Extreme
297    
298     <comment>(Move one level back and into PCI devices. Most sound cards today are
299     PCI devices)</comment>
300     PCI devices ---&gt;
301     <comment>(We now select the emu10k1 driver for our card)</comment>
302     &lt;M&gt; Emu10k1 (SB Live!, Audigy, E-mu APS)
303     <comment>(Or an Intel card would be)</comment>
304     &lt;M&gt; Intel/SiS/nVidia/AMD/ALi AC97 Controller
305     <comment>(Or if you have a VIA Card)</comment>
306     &lt;M&gt; VIA 82C686A/B, 8233/8235 AC97 Controller
307    
308     <comment>(Move one level back and select in case you have an USB sound card)</comment>
309     USB Devices ---&gt;
310 swift 1.35 </pre>
311 swift 1.20
312 fox2mike 1.51 <p>
313     Now that your options are set, you can (re)compile the kernel and ALSA support
314 swift 1.62 for your card should be functional once you reboot into the new kernel. Don't
315     forget to update your GRUB configuration to use the newly built kernel.
316 fox2mike 1.51 You can now proceed to <uri link="#alsa-utilities">ALSA Utilities</uri> and
317     see if everything is working as it should.
318     </p>
319 swift 1.20
320 drobbins 1.1 </body>
321     </section>
322 fox2mike 1.51 <section id="alsa-driver">
323     <title>Using the ALSA Driver package</title>
324 drobbins 1.1 <body>
325    
326     <p>
327 fox2mike 1.51 So you've decided to go the <c>alsa-driver</c> way. Let's get started then.
328     There are a few minor things to be done to ensure only the drivers for your
329     sound card are compiled. Although this is not really necessary, it cuts down
330     on the unnecessary drivers that will be compiled otherwise.
331 drobbins 1.1 </p>
332 swift 1.20
333 fox2mike 1.51 <p>
334     If you don't have an idea of what drivers your sound card might need, please
335     take a look at the <uri link="#lspci">lspci</uri> section of this guide. Once
336     you have your driver name (<c>emu10k1</c> in our example), edit
337     <path>/etc/make.conf</path> and add a variable, <c>ALSA_CARDS</c>.
338     </p>
339    
340     <pre caption="Adding ALSA_CARDS to make.conf">
341     <comment>(For one sound card)</comment>
342     ALSA_CARDS="emu10k1"
343 vanquirius 1.59 <comment>(For more than one, separate names with spaces)</comment>
344 fox2mike 1.51 ALSA_CARDS="emu10k1 via82xx"
345 blubber 1.16 </pre>
346    
347 drobbins 1.1 <p>
348 fox2mike 1.51 If you have compiled your kernel and want to use <c>alsa-driver</c>, please
349     ensure the following before proceeding, else <c>alsa-driver</c> is likely to
350     fail. The next code listing gives you one way of performing the checks.
351 drobbins 1.1 </p>
352 swift 1.20
353 fox2mike 1.54 <note>
354     <c>genkernel</c> users can proceed with <uri link="#doc_chap2_pre6">Installing
355     alsa-driver</uri> as their configuration is in sync with the one shown below by
356     default.
357     </note>
358    
359 fox2mike 1.51 <ol>
360     <li>
361     <c>CONFIG_SOUND</c> is set. (Basic Sound support enabled)
362     </li>
363     <li>
364     <c>CONFIG_SOUND_PRIME</c> is not set. (In-built OSS support disabled)
365     </li>
366     <li>
367     <c>CONFIG_SND</c> is not set. (In-built ALSA support disabled)
368     </li>
369     <li>
370     <path>/usr/src/linux</path> points to the kernel you want ALSA working on.
371     </li>
372     </ol>
373    
374     <pre caption=".config checks">
375     <comment>(Assuming the linux symlink points to the correct kernel)</comment>
376     # <i>cd /usr/src/linux</i>
377     # <i>grep SOUND .config</i>
378     <comment>(1. is true)</comment>
379     CONFIG_SOUND=y
380     <comment>(2. is true)</comment>
381     CONFIG_SOUND_PRIME is not set
382     # <i>grep SND .config</i>
383     <comment>(and 3. is true)</comment>
384     CONFIG_SND is not set
385 drobbins 1.1 </pre>
386 swift 1.20
387 drobbins 1.1 <p>
388 fox2mike 1.54 Now all you have to do is type the magic words... and no, it's not abracadabra.
389 drobbins 1.1 </p>
390 swift 1.20
391 fox2mike 1.51 <pre caption="Installing alsa-driver">
392     # <i>emerge alsa-driver</i>
393     </pre>
394    
395     <impo>
396     Please note that you will have to run <c>emerge alsa-driver</c> after every
397     kernel (re)compile, as the earlier drivers are deleted.
398     </impo>
399    
400 drobbins 1.1 </body>
401     </section>
402 swift 1.35 </chapter>
403 fox2mike 1.51
404 swift 1.35 <chapter>
405 fox2mike 1.51 <title>Configuring/Testing ALSA</title>
406     <section id="alsa-utilities">
407     <title>ALSA Utilities</title>
408 drobbins 1.1 <body>
409 swift 1.20
410 drobbins 1.1 <p>
411 fox2mike 1.51 <c>alsa-utils</c> forms an integral part of ALSA as it has a truckload of
412     programs that are highly useful, including the ALSA Initscripts. Hence we
413     strongly recommend that you install <c>alsa-utils</c>
414 drobbins 1.1 </p>
415 swift 1.12
416 fox2mike 1.51 <pre caption="Install alsa-utils">
417     # <i>emerge alsa-utils</i>
418 drobbins 1.1 </pre>
419 swift 1.20
420 fox2mike 1.51 <note>
421     If you activated ALSA in your <uri link="#kernel">kernel</uri> <e>and</e> did
422     not compile ALSA as modules, please proceed to the
423     <uri link="#initscript">ALSA Initscript</uri> section. The rest of you need
424     to configure ALSA. This is made very easy by the existence of the
425     <c>alsaconf</c> tool provided by <c>alsa-utils</c>.
426     </note>
427    
428     </body>
429     </section>
430     <section id="alsa-config">
431     <title>Configuration</title>
432     <body>
433    
434     <note>
435     Please shut down any programs that <e>might</e> access the sound card while
436     running <c>alsaconf</c>.
437     </note>
438    
439 drobbins 1.1 <p>
440 fox2mike 1.51 The easiest way to configure your sound card is to run <c>alsaconf</c>. Just
441     type <c>alsaconf</c> in a shell as root.
442 swift 1.20 </p>
443    
444 fox2mike 1.51 <pre caption="Invoking alsaconf">
445     # <i>alsaconf</i>
446 drobbins 1.1 </pre>
447 swift 1.20
448 fox2mike 1.51 <p>
449     You will now see a neat menu guided interface that will automatically probe
450     your devices and try to find out your sound card. You will be asked to pick
451     your sound card from a list. Once that's done, it will ask you permission to
452     automatically make required changes to <path>/etc/modules.d/alsa</path>.
453 fox2mike 1.54 It will then adjust your volume settings to optimum levels, run
454     <c>modules-update</c> and start the <path>/etc/init.d/alsasound</path> service.
455 fox2mike 1.63 Once <c>alsaconf</c> exits, you can proceed with setting up the ALSA
456     initscript.
457 fox2mike 1.51 </p>
458    
459 swift 1.35 </body>
460     </section>
461 fox2mike 1.51 <section id="initscript">
462     <title>ALSA Initscript</title>
463 swift 1.35 <body>
464 swift 1.20
465 drobbins 1.1 <p>
466 fox2mike 1.51 We're now almost all setup. Whichever method you chose to install ALSA, you'll
467     need to have something load your modules or initialize ALSA and restore your
468     volume settings when your system comes up. The ALSA Initscript handles all of
469 neysx 1.56 this for you and is called <c>alsasound</c>. Add it to the boot runlevel.
470 drobbins 1.1 </p>
471 swift 1.20
472 neysx 1.56 <pre caption="Adding ALSA to the boot runlevel">
473 fox2mike 1.54 # <i>rc-update add alsasound boot</i>
474     * alsasound added to runlevel boot
475 fox2mike 1.51 * rc-update complete.
476 drobbins 1.1 </pre>
477 swift 1.20
478 fox2mike 1.51 <p>
479     Next, just check the <path>/etc/conf.d/alsasound</path> file and ensure that
480     SAVE_ON_STOP variable is set to yes. This saves your sound settings when you
481     shutdown your system.
482     </p>
483    
484 drobbins 1.1 </body>
485     </section>
486     <section>
487 fox2mike 1.54 <title>Audio Group</title>
488     <body>
489    
490     <p>
491     Before we move on to testing, there's one last <e>important</e> thing that needs
492     to be setup. Rule of thumb in a *nix OS : Do not run as root unless needed.
493     This applies here as well ;) How? Well, most of the times you should be logged
494     in as a user and would like to listen to music or access your soundcard. For
495 vanquirius 1.59 that to happen, you need to be in the "audio" group. At this point, we'll add
496 fox2mike 1.54 users to the audio group, so that they won't have any issues when they want to
497     access sound devices. We'll use <c>gpasswd</c> here and you need to be logged in
498     as root for this to work.
499     </p>
500    
501     <pre caption="Adding users to the audio group">
502     <comment>(Substitute &lt;username&gt; with your user)</comment>
503     # <i>gpasswd -a &lt;username&gt; audio </i>
504     Adding user &lt;username&gt; to group audio
505     </pre>
506    
507     </body>
508     </section>
509     <section>
510 fox2mike 1.51 <title>Volume Check!</title>
511 drobbins 1.1 <body>
512 swift 1.20
513 drobbins 1.1 <p>
514 fox2mike 1.51 We've completed all the setups and pre-requisites, so let's fire up ALSA. If
515     you ran <c>alsaconf</c>, you can skip this step, since <c>alsaconf</c> already
516     does this for you.
517 swift 1.20 </p>
518    
519 fox2mike 1.51 <pre caption="Start the service">
520 fox2mike 1.54 <comment>(ALSA as modules)</comment>
521 swift 1.35 # <i>/etc/init.d/alsasound start</i>
522 fox2mike 1.51 * Loading ALSA modules ...
523     * Loading: snd-card-0 ... [ ok ]
524     * Loading: snd-pcm-oss ... [ ok ]
525 neysx 1.64 * Loading: snd-seq ... [ ok ]
526     * Loading: snd-emu10k1-synth ... [ ok ]
527     * Loading: snd-seq-midi ... [ ok ]
528 fox2mike 1.51 * Restoring Mixer Levels ... [ ok ]
529     <comment>(ALSA compiled in)</comment>
530     # <i>/etc/init.d/alsasound start</i>
531     * Loading ALSA modules ...
532     * Restoring Mixer Levels ... [ ok ]
533     </pre>
534    
535     <p>
536 fox2mike 1.54 Now that the required things have been taken care of, we need to check up on
537     the volume as in certain cases, it is muted. We use <c>alsamixer</c> for this
538     purpose.
539 fox2mike 1.51 </p>
540    
541     <pre caption="Starting alsamixer">
542     <comment>(Opens up a console program. Only required settings are shown)</comment>
543     # <i>alsamixer</i>
544 drobbins 1.1 </pre>
545 swift 1.20
546 fox2mike 1.54 <impo>
547     If you have issues starting up <c>alsamixer</c> and get errors such as
548     alsamixer: function snd_ctl_open failed for default: No such file or directory,
549 alin 1.58 this is usually an issue with udev setting up the devices. Run <c>killall
550     udevd; udevstart</c> to reload <path>/dev</path> entries and fire up
551     <c>alsamixer</c>. It should solve the issue.
552 fox2mike 1.54 </impo>
553    
554 fox2mike 1.51 <p>
555     This is how the ALSA Mixer <e>might</e> look the first time you open it. Pay
556     attention to the Master and PCM channels which both have an MM below them.
557     That means they are muted. If you try to play anything with <c>alsamixer</c>
558     in this state, you will not hear anything on your speakers.
559     </p>
560    
561     <figure link="/images/docs/alsa-mixermuted.png" short="AlsaMixer Muted" caption="The Alsa Mixer Main Window, Muted"/>
562    
563     <p>
564     Now, we shall unmute the channels, and set volume levels as needed.
565     </p>
566    
567     <warn>
568 fox2mike 1.54 Both Master <e>and</e> PCM need to be unmuted and set to audible volume levels
569     if you want to hear some output on your speakers.
570 fox2mike 1.51 </warn>
571    
572     <ul>
573     <li>
574     To move between channels, use your left and right arrow keys. (&lt;-
575     &amp; -&gt;)
576     </li>
577     <li>
578     To toggle mute, move to the specific channel, for example Master and press
579     the <e>m</e> key on the keyboard.
580     </li>
581     <li>
582     To increase and decrease the volume levels, use the up and down arrow keys
583     respectively.
584     </li>
585     </ul>
586    
587     <note>
588     Be careful when setting your Bass and Treble values. 50 is usually a good
589     number for both. Extremely high values of Bass may cause <e>jarring</e>
590     on speakers that are not designed to handle them.
591     </note>
592    
593     <p>
594     After you're all done, your ALSA Mixer should look similar to the one below.
595     Note the 00 instead of the MM and also the volume levels for some optimum
596     settings.
597     </p>
598    
599     <figure link="/images/docs/alsa-mixerunmuted.png" short="AlsaMixer Unmuted" caption="Alsa Mixer ready to roll"/>
600    
601 drobbins 1.1 </body>
602     </section>
603     <section>
604 fox2mike 1.51 <title>Sound Check!</title>
605 drobbins 1.1 <body>
606 swift 1.20
607 drobbins 1.1 <p>
608 fox2mike 1.54 The irritating way to check your soundcard is to see if you can hear static on
609     the speakers. This isn't exactly fun, but hey, it tells you the card is
610     configured and working.
611     </p>
612    
613 vanquirius 1.59 <pre caption="Bring on the static">
614 fox2mike 1.54 # <i>cat /dev/urandom > /dev/dsp</i>
615     </pre>
616    
617     <note>
618     <path>/dev/dsp</path> is a symlink to <path>/dev/sound/dsp</path> and should be
619     automatically created. Try re-directing the output to
620     <path>/dev/sound/dsp</path> in case you don't get a "No such file or directory"
621     error.
622     </note>
623    
624     <p>
625     You should hear static. Press <c>Ctrl + C</c> to stop. If you don't hear
626     anything, now is a good time to go back and check/trace out the issue and
627     rectify it.
628     </p>
629    
630     <p>
631     Finally. Some music. If everything above is perfect, you should now be able to
632     listen to some good music. A quick way to test is to use a command line tool
633     like <c>media-sound/madplay</c>. You could also use something more well known
634 fox2mike 1.51 like <c>mpg123</c> or <c>xmms</c>. If you are an ogg fan, you could use
635     <c>ogg123</c> provided by <c>media-sound/vorbis-tools</c>. Use any player you
636     are comfortable with. As always, <c>emerge</c> what you need.
637     </p>
638    
639     <pre caption="Getting the software">
640     <comment>(Install the applications you want)</comment>
641     # <i>emerge madplay mpg123 xmms</i>
642     <comment>(To play .ogg files)</comment>
643     # <i>emerge vorbis-tools</i>
644     </pre>
645    
646     <p>
647     And then play your favorite sound track...
648 drobbins 1.1 </p>
649 swift 1.20
650 fox2mike 1.51 <pre caption="Playing Music">
651     # <i>madplay -v /mnt/shyam/Music/Paul\ Oakenfold\ -\ Dread\ Rock.mp3</i>
652     MPEG Audio Decoder 0.15.2 (beta) - Copyright (C) 2000-2004 Robert Leslie et al.
653     Title: Dread Rock
654     Artist: Paul Oakenfold
655     Album: Matrix Reloaded
656     Year: 2003
657     Genre: Soundtrack
658     Soundtrack
659     00:04:19 Layer III, 160 kbps, 44100 Hz, joint stereo (MS), no CRC
660    
661     # <i>ogg123 Paul\ Oakenfold\ -\ Dread\ Rock.ogg</i>
662     Audio Device: Advanced Linux Sound Architecture (ALSA) output
663    
664     Playing: Paul Oakenfold - Dread Rock.ogg
665     Ogg Vorbis stream: 2 channel, 44100 Hz
666     Genre: Soundtrack
667     Transcoded: mp3;160
668     Title: Dread Rock
669     Artist: Paul Oakenfold
670     Date: 2003
671     Album: Matrix Reloaded
672     Time: 00:11.31 [04:28.75] of 04:40.06 (200.6 kbps) Output Buffer 96.9%
673 drobbins 1.1 </pre>
674 swift 1.20
675 fox2mike 1.51 </body>
676     </section>
677     <section>
678 vanquirius 1.59 <title>ALSA and USE</title>
679 fox2mike 1.54 <body>
680    
681     <p>
682     You can now add the <c>alsa</c> use flag to <path>/etc/make.conf</path> to
683     ensure that your applications that support ALSA get built with it. Some
684     architectures like x86 and amd64 have the flag enabled by default.
685     </p>
686    
687     </body>
688     </section>
689     <section>
690 fox2mike 1.51 <title>Issues?</title>
691     <body>
692    
693 drobbins 1.1 <p>
694 fox2mike 1.51 If for some reason you're unable to hear sound, the first thing to do would
695 fox2mike 1.54 be to check your <uri link="#doc_chap3_pre6">alsamixer</uri> settings. 80% of
696 fox2mike 1.51 the issues lie with muted channels or low volume. Also check your Window
697     Manager's sound applet and verify that volumes are set to audible levels.
698 drobbins 1.1 </p>
699 swift 1.20
700 drobbins 1.1 <p>
701 fox2mike 1.51 <path>/proc</path> is your friend. And in this case, <path>/proc/asound</path>
702     is your best friend. We shall just take a short look at how much info is made
703     available to us there.
704 drobbins 1.1 </p>
705 swift 1.20
706 fox2mike 1.51 <pre caption="Fun with /proc/asound">
707     <comment>(First and foremost, if /proc/asound/cards shows your card, ALSA has
708     picked up your sound card fine.)</comment>
709     # <i>cat /proc/asound/cards</i>
710     0 [Live ]: EMU10K1 - Sound Blaster Live!
711     Sound Blaster Live! (rev.6, serial:0x80271102) at 0xb800, irq 11
712    
713     <comment>(If you run ALSA off the kernel like I do and wonder how far behind
714     you are from alsa-driver, this displays current running ALSA version)</comment>
715     # <i>cat /proc/asound/version</i>
716     Advanced Linux Sound Architecture Driver Version 1.0.8 (Thu Jan 13 09:39:32 2005 UTC).
717 cam 1.47
718 fox2mike 1.51 <comment>(ALSA OSS emulation details)</comment>
719     # <i>cat /proc/asound/oss/sndstat</i>
720     Sound Driver:3.8.1a-980706 (ALSA v1.0.8 emulation code)
721     Kernel: Linux airwolf.zion 2.6.11ac1 #2 Wed May 4 00:35:08 IST 2005 i686
722     Config options: 0
723    
724     Installed drivers:
725     Type 10: ALSA emulation
726    
727     Card config:
728     Sound Blaster Live! (rev.6, serial:0x80271102) at 0xb800, irq 11
729    
730     Audio devices:
731     0: EMU10K1 (DUPLEX)
732 neysx 1.46
733 fox2mike 1.51 Synth devices: NOT ENABLED IN CONFIG
734 neysx 1.46
735 fox2mike 1.51 Midi devices:
736     0: EMU10K1 MPU-401 (UART)
737 swift 1.20
738 fox2mike 1.51 Timers:
739     7: system timer
740 neysx 1.46
741 fox2mike 1.51 Mixers:
742     0: SigmaTel STAC9721/23
743     </pre>
744 swift 1.20
745 fox2mike 1.61 <p>
746     The other most common issue users face is the dreaded "Unknown symbol in module"
747     error. An example of the same is shown below.
748     </p>
749    
750     <pre caption="Unknown Symbol in module error">
751     # <i>/etc/init.d/alsasound start</i>
752     * Loading ALSA modules ...
753     * Loading: snd-card-0 ... [ ok ]
754     * Loading: snd-pcm-oss ...
755     WARNING: Error inserting snd_mixer_oss
756     (/lib/modules/2.6.12-gentoo-r6/kernel/sound/core/oss/snd-mixer-oss.ko): Unknown
757     symbol in module, or unknown parameter (see dmesg) FATAL: Error inserting
758     snd_pcm_oss
759     (/lib/modules/2.6.12-gentoo-r6/kernel/sound/core/oss/snd-pcm-oss.ko): Unknown
760     symbol in module, or unknown parameter (see dmesg)
761     [ !! ]
762     * Loading: snd-mixer-oss ...
763     FATAL: Error inserting snd_mixer_oss
764     (/lib/modules/2.6.12-gentoo-r6/kernel/sound/core/oss/snd-mixer-oss.ko): Unknown
765     symbol in module, or unknown parameter (see dmesg)
766     [ !! ]
767     * Loading: snd-seq ... [ ok ]
768     * Loading: snd-emu10k1-synth ... [ ok ]
769     * Loading: snd-seq-midi ... [ ok ]
770     * Restoring Mixer Levels ... [ ok ]
771     </pre>
772    
773     <p>
774     And when you take a look at <c>dmesg</c> as suggested, you're quite likely to
775     see:
776     </p>
777    
778     <pre caption="dmesg output">
779     <comment>(Only relevant portions are shown below)</comment>
780     # <i>dmesg | less</i>
781     ACPI: PCI Interrupt 0000:02:06.0[A] -> Link [APC3] -> GSI 18 (level, low) -> IRQ 209
782     snd_mixer_oss: Unknown symbol snd_unregister_oss_device
783     snd_mixer_oss: Unknown symbol snd_register_oss_device
784     snd_mixer_oss: Unknown symbol snd_mixer_oss_notify_callback
785     snd_mixer_oss: Unknown symbol snd_oss_info_register
786     snd_pcm_oss: Unknown symbol snd_unregister_oss_device
787     snd_pcm_oss: Unknown symbol snd_register_oss_device
788     snd_pcm_oss: Unknown symbol snd_mixer_oss_ioctl_card
789     snd_pcm_oss: Unknown symbol snd_oss_info_register
790     snd_mixer_oss: Unknown symbol snd_unregister_oss_device
791     snd_mixer_oss: Unknown symbol snd_register_oss_device
792     snd_mixer_oss: Unknown symbol snd_mixer_oss_notify_callback
793     snd_mixer_oss: Unknown symbol snd_oss_info_register
794     </pre>
795    
796     <p>
797     The above issue is caused when you switch from <c>alsa-driver</c> to in-kernel
798     ALSA because when you unmerge <c>alsa-driver</c> the module files are config
799     protected and hence get left behind. So, when you switch to in-kernel
800     drivers, running <c>modprobe</c> gives you a mix of <c>alsa-driver</c> and
801     in-kernel modules thus causing the above errors.
802     </p>
803    
804     <p>
805     The solution is quite easy. We just need to manually remove the problem causing
806     directory after you unmerge <c>alsa-driver</c>. Be sure to remove the correct
807     kernel version and not the current one!
808     </p>
809    
810     <pre caption="Removing the alsa-driver modules">
811     <comment>(Replace KERNELVER with your kernel version)</comment>
812     # <i>rm -rf /lib/modules/KERNELVER/alsa-driver</i>
813     </pre>
814    
815 erwin 1.26 </body>
816     </section>
817     </chapter>
818 fox2mike 1.51
819 erwin 1.26 <chapter>
820 fox2mike 1.51 <title>Other things ALSA</title>
821 erwin 1.26 <section>
822 fox2mike 1.51 <title>Setting up MIDI support</title>
823 erwin 1.26 <body>
824    
825     <p>
826 fox2mike 1.51 If your sound card is one of those that come with on-board MIDI synthesizers
827     and you would like to listen to some .mid files, you have to install
828     <c>awesfx</c> which is basically a set of utilities for controlling the AWE32
829     driver. We need to install it first. If you don't have a hardware synthesizer,
830     you can use a virtual one. Please see the section on
831     <uri link="#vsynth">Virtual Synthesizers</uri> for more information.
832 erwin 1.26 </p>
833    
834 fox2mike 1.51 <pre caption="Installing awesfx">
835 erwin 1.26 # <i>emerge awesfx</i>
836     </pre>
837    
838 fox2mike 1.51 <note>
839     You will need to copy over SoundFont (SF2) files from your sound card's driver
840     CD or a Windows installation into <path>/usr/share/sounds/sf2/</path>. For
841     example a sound font file for the Creative SBLive! card would be 8MBGMSFX.SF2.
842     </note>
843    
844 erwin 1.26 <p>
845 fox2mike 1.51 After copying over the Soundfont files, we can then play a midi file as shown.
846     You can also add the <c>asfxload</c> command to
847     <path>/etc/conf.d/local.start</path>, so that the sound font is loaded
848     every time the system starts up.
849 erwin 1.26 </p>
850    
851 fox2mike 1.51 <note>
852     <path>/mnt</path> paths mentioned in the code listing(s) below will <e>not</e>
853     be the same in your machine. They are just an example. Please be careful to
854     change the path to suit your machine.
855     </note>
856 erwin 1.26
857 fox2mike 1.51 <pre caption="Loading Soundfonts">
858     <comment>(First, copy the Soundfont)</comment>
859 fox2mike 1.61 # <i>cp /mnt/win2k/Program\ Files/CreativeSBLive2k/SFBank/8MBGMSFX.SF2 /usr/share/sounds/sf2/</i>
860     <comment>(Or get it from your SoundBlaster CD)</comment>
861     # <i>cp /mnt/cdrom/AUDIO/ENGLISH/SFBANK/8MBGMSFX.SF2 /usr/share/sounds/sf2/</i>
862 fox2mike 1.51 <comment>(We load the specific Soundfont)</comment>
863     # <i>asfxload /usr/share/sounds/sf2/8MBGMSFX.SF2</i>
864 erwin 1.26 </pre>
865    
866 swift 1.35 <p>
867 fox2mike 1.51 You can now play midi files using a program like <c>aplaymidi</c>. Run
868     <c>aplaymidi -l</c> to get a list of available ports and then pick one
869     to play the file on.
870 swift 1.35 </p>
871 erwin 1.26
872 fox2mike 1.51 <pre caption="Playing MIDI">
873     <comment>(Check open ports)</comment>
874     # <i>aplaymidi -l</i>
875     Port Client name Port name
876     64:0 EMU10K1 MPU-401 (UART) EMU10K1 MPU-401 (UART)
877     65:0 Emu10k1 WaveTable Emu10k1 Port 0
878     65:1 Emu10k1 WaveTable Emu10k1 Port 1
879     65:2 Emu10k1 WaveTable Emu10k1 Port 2
880     65:3 Emu10k1 WaveTable Emu10k1 Port 3
881     <comment>(Pick a port, and play a mid file)</comment>
882     # <i> aplaymidi --port=65:0 /mnt/shyam/music/midi/mi2.mid</i>
883     </pre>
884 swift 1.32
885 erwin 1.26 </body>
886     </section>
887 fox2mike 1.51 <section id="vsynth">
888     <title>Virtual Synthesizers</title>
889 erwin 1.26 <body>
890    
891     <p>
892 fox2mike 1.51 If your sound card lacks a hardware synthesizer, you could use a virtual one
893     like <c>timidity++</c>. Installation is a breeze.
894 erwin 1.26 </p>
895    
896 fox2mike 1.51 <pre caption="Installing timidity++">
897 erwin 1.26 # <i>emerge timidity++</i>
898     </pre>
899    
900     <p>
901 fox2mike 1.51 For timidity to play sounds, it needs a sound font. If you do not have any,
902 neysx 1.46 install <c>timidity-eawpatches</c> or <c>timidity-shompatches</c> which will
903 fox2mike 1.51 give you some sound fonts. You can have multiple sound font configurations
904 neysx 1.46 installed, and you can place your own in <path>/usr/share/timidity/</path>.
905     To switch between different timidity configurations, you should use the
906 fox2mike 1.53 <c>timidity-update</c> tool provided in the timidity++ package.
907 cam 1.33 </p>
908    
909 fox2mike 1.51 <pre caption="Installing sound fonts">
910 cam 1.33 # <i>emerge timidity-eawpatches</i>
911 cam 1.47 # <i>timidity-update -g -s eawpatches</i>
912 neysx 1.46
913 cam 1.47 <comment>(or)</comment>
914 neysx 1.46
915     # <i>emerge timidity-shompatches</i>
916 cam 1.47 # <i>timidity-update -g -s shompatches</i>
917 cam 1.33 </pre>
918    
919     <p>
920 swift 1.35 Don't forget to add <c>timidity</c> to the default runlevel.
921 erwin 1.26 </p>
922    
923 swift 1.35 <pre caption="Adding timidity to the default runlevel">
924 erwin 1.26 # <i>rc-update add timidity default</i>
925     # <i>/etc/init.d/timidity start</i>
926     </pre>
927    
928 drobbins 1.1 <p>
929 fox2mike 1.51 You can now try out <uri link="#doc_chap4_pre3">Playing MIDI</uri> files.
930 erwin 1.26 </p>
931    
932 drobbins 1.1 </body>
933     </section>
934     <section>
935 swift 1.35 <title>Tools and Firmware</title>
936 drobbins 1.1 <body>
937 swift 1.20
938     <p>
939 swift 1.35 Some specific sound cards can benefit from certain tools provided by the
940 cam 1.36 <c>alsa-tools</c> and <c>alsa-firmware</c> packages. If you need
941 swift 1.35 <c>alsa-tools</c>, be sure to define the ALSA_TOOLS variable in
942     <path>/etc/make.conf</path> with the tools you require. For instance:
943 swift 1.20 </p>
944    
945 swift 1.35 <pre caption="Selecting ALSA Tools in /etc/make.conf">
946     ALSA_TOOLS="as10k1 ac3dec"
947 drobbins 1.1 </pre>
948 swift 1.20
949 erwin 1.26 <p>
950 fox2mike 1.51 If the ALSA_TOOLS variable is not set, all available tools will be built.
951     Now, install the <c>alsa-tools</c> (and/or <c>alsa-firmware</c>) package(s):
952 erwin 1.26 </p>
953    
954 swift 1.35 <pre caption="Installing ALSA Tools">
955     # <i>emerge alsa-tools</i>
956 erwin 1.26 </pre>
957    
958     </body>
959     </section>
960     <section>
961 fox2mike 1.51 <title>A Big thank you to...</title>
962 swift 1.21 <body>
963    
964     <p>
965 fox2mike 1.51 Everyone who contributed to the earlier version of the Gentoo ALSA Guide:
966     Vincent Verleye, Grant Goodyear, Arcady Genkin, Jeremy Huddleston,
967     John P. Davis, Sven Vermeulen, Benny Chuang, Tiemo Kieft and Erwin.
968 swift 1.21 </p>
969    
970 swift 1.17 </body>
971     </section>
972 drobbins 1.1 <section>
973 fox2mike 1.51 <title>References</title>
974 drobbins 1.1 <body>
975 swift 1.20
976 drobbins 1.1 <ul>
977 fox2mike 1.51 <li><uri link="http://www.alsa-project.org/">The ALSA Project</uri></li>
978 swift 1.35 <li><uri link="http://linux-sound.org">Linux Sound/MIDI Software</uri></li>
979 drobbins 1.1 </ul>
980 swift 1.20
981 drobbins 1.1 </body>
982     </section>
983     </chapter>
984     </guide>

  ViewVC Help
Powered by ViewVC 1.1.20