/[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.90 - (show annotations) (download) (as text)
Tue Jul 23 17:03:52 2013 UTC (14 months, 4 weeks ago) by swift
Branch: MAIN
CVS Tags: HEAD
Changes since 1.89: +5 -4 lines
File MIME type: application/xml
ALSA now only on wiki, see https://wiki.gentoo.org/wiki/ALSA

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

  ViewVC Help
Powered by ViewVC 1.1.20