/[gentoo]/xml/htdocs/doc/en/alsa-guide.xml
Gentoo

Diff of /xml/htdocs/doc/en/alsa-guide.xml

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

Revision 1.26 Revision 1.37
1<?xml version='1.0' encoding="UTF-8"?> 1<?xml version='1.0' encoding="UTF-8"?>
2<!-- $Header: /var/cvsroot/gentoo/xml/htdocs/doc/en/alsa-guide.xml,v 1.26 2004/02/23 14:17:05 erwin Exp $ --> 2<!-- $Header: /var/cvsroot/gentoo/xml/htdocs/doc/en/alsa-guide.xml,v 1.37 2004/06/15 07:21:07 bennyc Exp $ -->
3<!DOCTYPE guide SYSTEM "/dtd/guide.dtd"> 3<!DOCTYPE guide SYSTEM "/dtd/guide.dtd">
4 4
5<guide link = "/doc/en/alsa-guide.xml"> 5<guide link = "/doc/en/alsa-guide.xml">
6<title>Gentoo Linux ALSA Guide</title> 6<title>Gentoo Linux ALSA Guide</title>
7<author title="Author"> 7<author title="Author">
38Guide, this guide is supposed to give you more information on this subject. 38Guide, this guide is supposed to give you more information on this subject.
39</abstract> 39</abstract>
40 40
41<license/> 41<license/>
42 42
43<version>1.4.0</version> 43<version>1.5.0</version>
44<date>February 22, 2003</date> 44<date>May 18, 2004</date>
45 45
46<chapter> 46<chapter>
47<title>Introduction</title> 47<title>The Advanced Linux Sound Architecture</title>
48<section> 48<section>
49<title>What is ALSA?</title> 49<title>What is ALSA?</title>
50<body> 50<body>
51 51
52<p> 52<p>
53The Advanced Linux Sound Architecture (ALSA) is a project to improve the Linux 53ALSA is the <e>Advanced Linux Sound Architecture</e>, a project dedicated to the
54sound subsystem by rewriting large chunks of it. It has replaced the Open 54development of a high-quality Linux sound subsystem. It has replaced OSS
55Sound System (OSS) as the default sound subsystem in the 2.6 kernel, but it 55(<e>Open Sound System</e>) as default sound subsystem in the 2.6 kernel series.
56can be used with either 2.4 or 2.6 kernels.
57</p>
58
59<p>
60ALSA provides audio and MIDI functionality for Linux.
61</p>
62
63<p>
64Quoted from <uri>http://www.alsa-project.org</uri>, ALSA has the following
65features:
66</p>
67
68<ul>
69 <li>
70 Efficient support for all types of audio interfaces, from consumer
71 soundcards to professional multichannel audio interfaces
72 </li>
73 <li>Fully modularized sound drivers</li>
74 <li>SMP and thread-safe design</li>
75 <li>
76 User space library (alsa-lib) to simplify application programming and
77 provide higher level functionality
78 </li>
79 <li>
80 Support for the older OSS API, providing binary compatibility for most OSS
81 programs
82 </li>
83</ul>
84
85<p>
86There's lots more to ALSA however, like support for Full Duplex playback and
87recording, multiple soundcard support, hardware mixing of streams, extensive
88mixer capabilities (to support advanced features of new soundcards), ...
89</p>
90
91</body>
92</section>
93<section>
94<title>Why use ALSA?</title>
95<body>
96
97<p>
98Your sound card may be supported by modules available in the 2.4 kernel (these
99are also provided in the 2.6 kernel under the 'Open Sound System (DEPRECATED)'
100option). Additionally, you might be able to use the commercial OSS/4Front sound
101driver system. If you wish to use either of these systems, then you should read
102through the <uri link="http://www.tldp.org/HOWTO/Sound-HOWTO/index.html">Linux
103Sound HOWTO</uri>.
104</p> 56</p>
105 57
106<p>
107The OSS/4Front drivers have some limitations, however. Being commercial is
108one. ALSA is an attempt to go beyond these limitations with an open source
109development model. ALSA is a fully GPL and LGPL'ed sound driver system that
110provides a professional quality system for recording, playback, and MIDI
111sequencing.
112</p>
113
114</body>
115</section>
116<section>
117<title>What cards does ALSA support?</title>
118<body>
119
120<p>
121ALSA tries to support as many (new) cards as possible by providing open-source
122drivers. However, some vendors may provide binary-only packages.
123</p> 58<p>
124 59ALSA provides efficient support for all types of audio interfaces, is fully
125<p> 60modularized, is SMP and thread-safe and provides a high-quality user space
126To know if your card is supported, you can find a Soundcard Matrix of supported 61library called <e>alsa-lib</e> to simplify application programming. It also
127and not-supported cards here: <uri>http://www.alsa-project.org/alsa-doc/</uri>. 62provides a backwards compatibility layer with OSS.
128</p> 63</p>
129 64
130</body> 65</body>
131</section> 66</section>
132</chapter> 67</chapter>
133
134<chapter> 68<chapter>
135<title>Installation</title> 69<title>Installing ALSA</title>
136<section>
137<title>Gentoo USE flags</title>
138<body>
139
140<p>
141To compile programs with ALSA-support, be sure to add <e>alsa</e> to
142your USE-variable. However, several tools don't support alsa yet, and
143require OSS. ALSA provides OSS-emulation if you define <e>oss</e> in your
144USE-variable before you start.
145</p>
146
147</body>
148</section> 70<section>
71<title>USE Flags</title>
72<body>
73
74<p>
75Gentoo 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
77ALSA support. If you have <c>oss</c> in your USE variable as well, ALSA will
78compile with OSS backward compatibility.
79</p>
80
81</body>
149<section> 82</section>
83<section>
150<title>Kernel modules</title> 84<title>Kernel Modules</title>
151<body> 85<body>
152 86
153<p>
154When using the 2.4 kernels, you'll need to compile the alsa drivers separately
155from the rest of the kernel. If you are using a 2.6 kernel, you have the
156option of using the ALSA drivers included in the kernel or those provided
157by the <c>alsa-driver</c> package.
158</p> 87<p>
159 88First of all, before continuing, make sure your kernel has <e>Sound Card
89Support</e> enabled. If you used <c>genkernel</c> to build your kernel, then
90this is automatically true. Otherwise reconfigure your kernel.
160<p> 91</p>
161First we'll make sure that our kernel configuration is ready for use with ALSA. 92
162All you need in your kernel configuration is having Sound Card Support set to
163be built as a module (M). This will build <path>soundcore.o</path>.
164</p> 93<p>
165 94If you use a 2.6 kernel you can skip the rest of this section and continue with
166<note> 95<uri link="#alsa-utils">Installing the ALSA Utils</uri> as 2.6 already has the
167Possibly, this will also work if you build 'Sound Card Support' in the kernel 96necessary ALSA drivers in it. Of course, don't forget to enable support for the
168(Y) instead of building it as a module (M). However, the official ALSA 97sound card you have when configuring your kernel.
169documentation suggests building it as a module, since ALSA will try loading it.
170</note>
171
172<p> 98</p>
173If you already have a working kernel configuration, make sure you remove all 99
174sound drivers (except for Sound Card Support). If you wish to do this without
175having to reboot, you could do like this:
176</p> 100<p>
177 101Users of 2.4 kernel sources will have to install the necessary ALSA drivers for
178<pre caption="Kernel configuration"> 102their soundcard. First find out what soundcard you have. An easy trick is to
179# <i>cd /usr/src/linux</i> 103search for "audio" in <path>/proc/pci</path>:
180# <i>cp .config ~/</i>
181# <i>make mrproper</i>
182# <i>cp ~/.config .</i>
183# <i>make menuconfig</i>
184</pre>
185
186<p> 104</p>
187Now select <e>Sound Card Support</e> as Module (M) and deselect all other sound 105
188drivers. If you are using 2.6 with the ALSA modules provided by the kernel, select 106<pre caption="Finding out the soundcard type">
189the drivers for your sound card as well (look in the <uri 107# <i>grep -i audio /proc/pci</i>
190link="#doc_chap2_sect3">ALSA modules</uri> section below if you need help 108Multimedia audio controller: VIA Technologies, Inc. VT82C686 AC97 Audio
191choosing the right drivers). Exit and say Y to save your kernel configuration. 109Controller (rev 64).
192After that, build the modules: 110</pre>
111
193</p> 112<p>
194 113Now go to the <uri link="http://www.alsa-project.org/alsa-doc">ALSA Soundcard
195<pre caption="2.4 Kernel compilation"> 114Matrix</uri> and search for your soundcard. In the above example you should go
196# <i>make dep clean</i> 115to the "VIA" manufacturer. You will receive a table with the known chipsets of
197# <i>make modules modules_install</i> 116that vendor. The chipset in the above example is "via82c686"; the "Details" link
198</pre> 117then informs me that the driver is called <path>via82xx</path>.
199
200<pre caption="2.6 Kernel compilation">
201# <i>make</i>
202# <i>make modules_install</i>
203</pre>
204
205<p> 118</p>
206If you compiled 2.6 with the ALSA modules provided by the kernel, please skip to 119
207<uri link="#doc_chap2_sect4">Configuration of ALSA</uri> below.
208</p> 120<p>
209 121Based on this information we can now install the <c>alsa-driver</c> for our
122soundcard. First edit <path>/etc/make.conf</path> and <e>add</e> a new option
123called ALSA_CARDS to it. Inside this variable you declare the soundcard driver
124you want to use:
210<p> 125</p>
211Before installing your new modules, this last line will delete all your previous 126
212modules, even the ones from a previous ALSA installation. 127<pre caption="Editing /etc/make.conf for ALSA_CARDS">
128ALSA_CARDS="via82xx"
129</pre>
130
213</p> 131<p>
132Now install <c>alsa-driver</c>:
133</p>
134
135<pre caption="Installing ALSA Drivers">
136# <i>emerge alsa-driver</i>
137</pre>
214 138
215<impo> 139<impo>
216This means, whenever you recompile your kernel later on, you MUST recompile 140Whenever you (re)compile your kernel sources, chances are that the ALSA drivers
217<c>alsa-driver</c>. 141will be overwritten. It is therefore adviseable to rerun <c>emerge
142alsa-driver</c> every time you (re)compile your kernel <e>after</e> having
143rebooted into the new kernel.
218</impo> 144</impo>
219 145
220</body> 146</body>
221</section> 147</section>
222<section> 148<section id="alsa-utils">
223<title>ALSA modules</title> 149<title>Installing the ALSA Utils</title>
224<body>
225
226<p>
227Now it's time to install the ALSA drivers for your soundcard(s). If your
228soundcard is PCI, you can find out the name and type of your soundcard by
229looking at the output of <path>/proc/pci</path>.
230</p>
231
232<pre caption="Search for soundcard information">
233# <i>grep audio /proc/pci</i>
234</pre>
235
236<warn>
237If you had a previous sound setup and there are still non-ALSA sound modules
238loaded, unload them <e>now</e>. Check with <c>lsmod</c> and use <c>rmmod</c>
239to unload all sound-related modules on your system. If <c>rmmod</c> complains
240about not being able to unload the modules because they are in use, try using
241<c>/etc/init.c/alsasound stop</c> to remove them.
242</warn>
243
244<p>
245We could simply do an <c>emerge alsa-driver</c> now, this would compile and
246install <e>all</e> ALSA sound drivers.
247</p>
248
249<p>
250However, to save some time, lookup the <e>Module Name</e> of your soundcard(s)
251on the <uri link="http://www.alsa-project.org/alsa-doc">ALSA Soundcard
252Matrix</uri> by following the <e>Details</e> link in the <e>Driver and Docs</e>
253column in the row of the chipset of your soundcard. Mine is <c>snd-emu10k1</c>,
254since I have an SBlive! soundcard, with the <e>EMU10K1</e> chipset. We'll set
255ALSA_CARDS environment to the value of the module name before emerging (but
256without the snd prefix), so emerge will only compile the drivers we need.
257</p>
258
259<pre caption="With 2.4 Kernel">
260# <i>env ALSA_CARDS='emu10k1' emerge alsa-driver</i>
261</pre>
262
263<pre caption="With 2.6 Kernel">
264# <i>env ALSA_CARDS='emu10k1' emerge \>=media-sound/alsa-driver-1.0.2c</i>
265</pre>
266
267<note>
2682.6 kernels require alsa-driver to be atl east version 1.0.2c.
269</note>
270
271<note>
272You can also add this value in <path>/etc/make.conf</path>, so when you have
273to emerge the alsa-driver later on you can just run <c>emerge alsa-driver</c>.
274For example, like this: <c>echo 'ALSA_CARDS="emu10k1"' >> /etc/make.conf</c>
275</note>
276
277<note>
278When you want to install ALSA drivers for more than one soundcard, you could
279set ALSA_CARDS to a space-separated list of drivers; like this: <c>env
280ALSA_CARDS='emu10k1 intel8x0 ens1370' emerge alsa-driver</c>
281</note>
282
283<note>
284If you want to have OSS compatibility, make sure to emerge <i>alsa-oss</i>, it
285is the ALSA/OSS compatibility wrapper.
286</note>
287
288<note>
289If you plan on recompiling your kernels numerous times, it might
290be adviseable to emerge <c>alsa-driver</c> with <c>--buildpkg</c>. This
291will create a binary package for it. Later, after recompiling your kernel,
292you can just do <c>emerge --usepkg alsa-driver</c> which will install the
293binary package instead of recompiling it completely. If 'depmod -a' ever
294complains about sound drivers having unreferenced symbols when you do this,
295you will need to recompile the alsa-driver package from source.
296</note>
297
298<p>
299After this, the ALSA modules should be installed on your system.
300</p>
301
302</body> 150<body>
303</section>
304<section>
305<title>Configuration of ALSA</title>
306<body>
307 151
308<p>
309Let's start configuring now to get ALSA working properly. We'll need to edit
310some files, to let our system know about the freshly installed ALSA modules.
311</p> 152<p>
312 153If you want backwards compatibility with OSS, you need to install
154<c>alsa-oss</c>:
313<p> 155</p>
314First, install <c>alsa-utils</c> on your system: 156
157<pre caption="Installing the ALSA OSS compatibility layer">
158# <i>emerge alsa-oss</i>
159</pre>
160
315</p> 161<p>
162Now install the ALSA Utils on your system (this is mandatory):
163</p>
316 164
317<pre caption = "Emerging alsa-utils"> 165<pre caption="Installing ALSA Utils">
318# <i>emerge alsa-utils</i> 166# <i>emerge alsa-utils</i>
319</pre> 167</pre>
320 168
321<p> 169<p>
322Hereafter, we need to edit <path>/etc/modules.d/alsa</path>. 170Now that the utils are installed, it is time to configure ALSA...
171</p>
172
173</body>
174</section>
175</chapter>
176<chapter>
177<title>Configuring ALSA</title>
178<section>
179<title>Automatically Loading the Kernel Modules</title>
180<body>
181
323</p> 182<p>
183If you use a modular kernel (such as when using <c>genkernel</c>) you have to
184edit <path>/etc/modules.d/alsa</path> so that it activates the necesary modules
185at boot time. For the soundcard in our example:
186</p>
324 187
325<warn>
326There is no need to edit <path>/etc/modules.conf</path>. Instead, always edit
327files in <path>/etc/modules.d</path> and run <c>modules-update</c> to generate
328<path>/etc/modules.conf</path> from the updated data.
329</warn>
330
331<pre caption="In /etc/modules.d/alsa"> 188<pre caption="/etc/modules.d/alsa">
332## and then run `modules-update' command.
333## Read alsa-driver's INSTALL file in /usr/share/doc for more info.
334##
335## ALSA portion
336alias snd-card-0 snd-emu10k1
337## alias snd-card-1 snd-intel8x0 189alias snd-card-0 snd-via82xx
338## alias snd-card-2 snd-ens1370 190<comment># The following is only needed when you want OSS compatibility</comment>
339## OSS/Free portion
340alias sound-slot-0 snd-card-0 191alias sound-slot-0 snd-card-0
341## alias sound-slot-1 snd-card-1
342## alias sound-slot-2 snd-card-2
343##
344</pre>
345
346<note>
347If you have more than one soundcard, add more <c>snd-card</c> and <c>snd-slot</c>
348aliases and adjust the <c>cards_limit</c> value at the end of the file. You can
349find examples for configurations with two or more soundcards in <uri
350link="http://www.alsa-project.org/alsa-doc/alsa-howto/c1660.htm">Chapter 6</uri>
351of the <uri
352link="http://www.alsa-project.org/alsa-doc/alsa-howto/alsa-howto.html">ALSA
353Howto</uri>.
354</note>
355
356<p>
357Last thing to do in this file, almost at the end, check if these lines are there
358and uncommented:
359</p>
360
361<pre caption="Near the end of /etc/modules.d/alsa">
362alias /dev/mixer snd-mixer-oss 192alias /dev/mixer snd-mixer-oss
363alias /dev/dsp snd-pcm-oss 193alias /dev/dsp snd-pcm-oss
364alias /dev/midi snd-seq-oss 194alias /dev/midi snd-seq-oss
365</pre> 195</pre>
366 196
367<p> 197<p>
368After double-checking the file <path>/etc/modules.d/alsa</path> to make sure 198Now run <c>modules-update</c> to save the changes you made to the
369everyting is ok, run <c>modules-update</c>. 199<path>alsa</path> file into <path>/etc/modules.conf</path>:
370</p> 200</p>
371 201
372<pre caption="Running modules-update"> 202<pre caption="Running modules-update">
373# <i>modules-update</i> 203# <i>modules-update</i>
374</pre> 204</pre>
375 205
376<note> 206</body>
377Running <c>modules-update</c> here will insert the data from 207</section>
378<path>/etc/modules.d/alsa</path> into <path>/etc/modules.conf</path> 208<section>
379</note> 209<title>Verifying the Device Files</title>
210<body>
380 211
381<p> 212<p>
382You should also verify that <path>/etc/devfsd.conf</path> has the alsa devices 213If you use DevFS (which is the default for Gentoo installations) make sure that
383and permissions correctly registered. 214<path>/etc/devfsd.conf</path> has the ALSA devices and permissions correctly
215registered:
384</p> 216</p>
385 217
386<pre caption="/etc/devfsd.conf"> 218<pre caption="/etc/devfsd.conf">
387# ALSA/OSS stuff 219# ALSA/OSS stuff
388# Comment/change these if you want to change the permissions on 220# Comment/change these if you want to change the permissions on
393LOOKUP midi MODLOAD 225LOOKUP midi MODLOAD
394REGISTER sound/.* PERMISSIONS root.audio 660 226REGISTER sound/.* PERMISSIONS root.audio 660
395REGISTER snd/.* PERMISSIONS root.audio 660 227REGISTER snd/.* PERMISSIONS root.audio 660
396</pre> 228</pre>
397 229
398<note>
399Notice that devfsd.conf sets <path>/dev/sound</path> permissions to be
400root.audio. Thus, for non-root users to use audio they will have to be part of
401the audio group.
402</note>
403
404</body> 230</body>
405</section>
406</chapter>
407
408<chapter>
409<title>Starting ALSA</title>
410<section> 231</section>
411<title>Adding alsasound to a runlevel</title> 232<section>
233<title>Having ALSA Activated at Boot</title>
412<body> 234<body>
413 235
414<p>
415An init script is provided for you which will install all neccessary sound drivers
416for your card (including the OSS support drivers if you set USE=oss). The first
417thing to do now is to make ALSA startup at boot time:
418</p> 236<p>
237To activate ALSA support at boot, add the <c>alsasound</c> init script to the
238boot runlevel:
239</p>
419 240
420<pre caption="Add ALSA to the boot runlevel"> 241<pre caption="Adding alsasound to the boot runlevel">
421# <i>rc-update add alsasound boot</i> 242# <i>rc-update add alsasound boot</i>
422</pre>
423
424<warn>
425Note that the alsasound script should be added to the "boot" runlevel, not the
426"default" runlevel.
427</warn>
428
429</body>
430</section>
431<section>
432<title>Running and unmuting</title>
433<body>
434
435<p>
436Since we're Linux users, we don't want to reboot. So we'll start the alsasound
437script manually.
438</p>
439
440<pre caption="Starting ALSA">
441# <i>/etc/init.d/alsasound start</i> 243# <i>/etc/init.d/alsasound start</i>
442</pre> 244</pre>
443 245
444<p> 246</body>
445ALSA is running now. If everything is ok, you should be able to see the ALSA 247</section>
446modules loaded when running <c>lsmod</c>. However, sound won't work yet, 248<section>
447because the channels are still muted. We need <c>amixer</c> to fix this. 249<title>Unmute the Channels</title>
250<body>
251
448</p> 252<p>
253By default, all sound channels are muted. To fix this, run <c>amixer</c>:
254</p>
449 255
450<pre caption = "Running amixer"> 256<pre caption="Running amixer">
451# <i>amixer</i> 257# <i>amixer</i>
452</pre> 258</pre>
453 259
454<!-- alsasound init script will do this for them now...
455<warn>
456You shouldn't get this, but <e>if</e> you get an error about "amixer: Mixer
457attach default error: No such file or directory", you should manually modprobe
458<c>snd-mixer-oss</c> and <c>snd-pcm-oss</c> once. After that run amixer again.
459</warn>
460
461<pre caption="Only if you get an error when running amixer">
462# <i>modprobe snd-mixer-oss</i>
463# <i>modprobe snd-pcm-oss</i>
464# <i>amixer</i>
465</pre>
466-->
467
468<p>
469If you got this far, now unmute Master and PCM channels. Some hardware
470even requires you to unmute the center channel or even the surround
471channel.
472</p> 260<p>
261If <c>amixer</c> produces lots of output then you're ready to unmute the
262channels. If you receive an error, doublecheck that your soundcard module is
263started.
264</p>
473 265
266<p>
267Now unmute the <e>Master</e> and <e>PCM</e> channels. If this isn't sufficient,
268also unmute the <e>Center</e> and <e>Surround</e> channels.
269</p>
270
474<pre caption = "Unmuting channels"> 271<pre caption="Unmuting the sound channels">
475# <i>amixer set Master 100 unmute</i> 272# <i>amixer set Master 100 unmute</i>
476# <i>amixer set PCM 100 unmute</i> 273# <i>amixer set PCM 100 unmute</i>
477<comment>Only if the above doesn't succeed on its own:</comment> 274<comment>(Only if the above isn't sufficient:)</comment>
478# <i>amixer set Center 100 unmute</i> 275# <i>amixer set Center 100 unmute</i>
479# <i>amixer set Surround 100 unmute</i> 276# <i>amixer set Surround 100 unmute</i>
480<comment>Test the sound:</comment>
481# <i>aplay $KDEDIR/share/sounds/pop.wav</i> <codenote>(pop.wav is part of KDE)</codenote>
482</pre> 277</pre>
483 278
484<p>
485We check to see if sound is working by using the aplay (alsa play) command. If
486you hear a pop, then sound is indeed working. Then, adjust the volume settings
487to your liking; the ncurses-based <c>alsamixer</c> is a great way to get them
488"just so".
489</p> 279<p>
490 280To 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.
491<p> 282</p>
492When you reboot your system, the <c>alsasound</c> init script will 283
493properly save and restore your volume settings. 284<p>
285To fine-tune the sound channel settings you can use the <c>alsamixer</c>
286application.
494</p> 287</p>
495 288
496</body> 289</body>
497</section> 290</section>
498</chapter> 291</chapter>
499
500<chapter> 292<chapter>
501<title>MIDI Support</title> 293<title>Activating MIDI Support</title>
502<section> 294<section>
503<title>Hardware Synthesizer</title> 295<title>Installing the Necessary Packages</title>
504<body> 296<body>
505 297
506<p>
507Some sound cards (SBLive, Audigy, and others) come with onboard MIDI synthesizers.
508To use them, you must first install the <c>awesfx</c> package.
509</p> 298<p>
299Some soundcards come with onboard MIDI synthesizers. To use them, you must first
300install the <c>awesfx</c> package:
301</p>
510 302
511<pre caption="Install awesfx"> 303<pre caption="Installing the awesfx package">
512# <i>emerge awesfx</i> 304# <i>emerge awesfx</i>
513</pre> 305</pre>
514 306
515<p> 307<p>
516Now, you should place your sound fonts in <path>/usr/share/sfbank/</path>. You 308If you have a collection of sound fonts somewhere, place them in
517can probably get the sound fonts off of the windows driver CD for your sound card. 309<path>/usr/share/sfbank</path>. For instance, the SBLive has a sound font file
518With the SBLive, one of the included sound font files is called 8MBGMSFX.SF2. 310called <path>8MBGMSFX.SF2</path> or <path>CT4GMSFX.SF2</path>.
519</p>
520
521<p> 311</p>
522After copying over the sound font you want to use, you need to select it for use 312
523with <c>/usr/bin/sfxload</c>.
524</p> 313<p>
314After copying over the sound font, select them using <c>sfxload</c>:
315</p>
525 316
526<pre caption="Selecting the sound font"> 317<pre caption="Loading the sound font">
527# <i>/usr/bin/sfxload /usr/share/sfbank/8MBGMSFX.SF2</i> 318# <i>sfxload /usr/share/sfbank/8MBGMSFX.SF2</i>
319</pre>
320
321<p>
322You must have this command run every time you boot, so it is adviseable to add
323it to <path>/etc/conf.d/local.start</path> as well.
528</pre> 324</p>
529 325
530<note> 326<p>
531You may wish to place this command in /etc/conf.d/local.start or in the startup 327If you can't find soundfonts on your driver CD you can download some online from
532script for your sound card (/etc/alsa.d/emu10k1) to make sure it gets loaded 328<uri>http://www.parabola.demon.co.uk/alsa/awe64.html</uri>.
533at startup. 329</p>
534</note>
535 330
536</body> 331</body>
537</section> 332</section>
538<section> 333<section>
539<title>Timidity++ Virtual Synthesizer</title> 334<title>Timidity++ Virtual Synthesizer</title>
540<body> 335<body>
541 336
542<p> 337<p>
543If your sound card does not come with a hardware synthesizer (or you don't 338If your sound card does not come with a hardware synthesizer (or you don't want
544want to use it), you can use <c>timidity++</c> to provide you with a virtual 339to use it), you can use <c>timidity++</c> to provide you with a virtual
545synthesizer. Start by emerging this package: 340synthesizer. Start by emerging this package:
546</p> 341</p>
547 342
548<pre caption="Installing Timidity++"> 343<pre caption="Installing Timidity++">
549# <i>emerge timidity++</i> 344# <i>emerge timidity++</i>
550</pre> 345</pre>
551 346
552<p> 347<p>
553A sample configuration file will be installed for you in 348A sample configuration file will be installed for you in
554<path>/usr/share/timitidy/config/timidity.cfg</path>. If you don't have a 349<path>/usr/share/timidity/config/timidity.cfg</path>. If you don't have a
555timidity++ configuration setup yet, you can just use this one. 350timidity++ configuration setup yet, you can just use this one.
556</p> 351</p>
557 352
558<pre caption="Use the default Timidity++ configuration file"> 353<pre caption="Using the default Timidity++ configuration file">
559# <i>cp /usr/share/timitidy/config/timidity.cfg /usr/share/timidity</i> 354# <i>cp /usr/share/timidity/config/timidity.cfg /usr/share/timidity</i>
560</pre> 355</pre>
561 356
562<p>
563Now, you need to enable the init script to run when your system boots
564and enable it now.
565</p> 357<p>
358For timidity to play sounds, it needs a soundfont. If you do not have any,
359install <c>timidity-eawpatches</c> which will give you some soundfonts.
360</p>
566 361
362<pre caption="Installing timidity-eawpatches">
363# <i>emerge timidity-eawpatches</i>
364</pre>
365
366<p>
367Don't forget to add <c>timidity</c> to the default runlevel.
368</p>
369
567<pre caption="Add timidity to default runlevel and start it now"> 370<pre caption="Adding timidity to the default runlevel">
568# <i>rc-update add timidity default</i> 371# <i>rc-update add timidity default</i>
569# <i>/etc/init.d/timidity start</i> 372# <i>/etc/init.d/timidity start</i>
570</pre> 373</pre>
571 374
572<p>
573Note that there is a configuration file for the init script that you can
574modify in <path>/etc/conf.d/timidity</path>, and sane defaults have been
575chosen for you.
576</p>
577
578</body> 375</body>
579</section> 376</section>
580<section> 377<section>
581<title>Testing MIDI Support</title> 378<title>Testing MIDI Support</title>
582<body> 379<body>
583 380
584<p> 381<p>
585You can use <c>pmidi</c> to test out your MIDI configuration. To do so, 382You can use <c>pmidi</c> to test your MIDI configuration:
586you need to first emerge its package.
587</p> 383</p>
588 384
589<pre caption="Installing pmidi"> 385<pre caption="Installing pmidi">
590# <i>emerge pmidi</i> 386# <i>emerge pmidi</i>
591</pre> 387</pre>
592 388
593<p> 389<p>
594The '-l' command line option to pmidi will list all detected MIDI output ports, 390To see what MIDI output ports are available on your system, use the <c>-l</c>
595and '-p' can be used to select the one for playback. Check to see what 391option:
596MIDI output ports are available on your system:
597</p> 392</p>
598 393
599<pre caption="Listed ports when using hardware sythisizer"> 394<pre caption="Viewing the MIDI output ports">
600# <i>pmidi -l</i> 395# <i>pmidi -l</i>
601 Port Client name Port name
602 64:0 Rawmidi 0 - EMU10K1 MPU-401 (U EMU10K1 MPU-401 (UART)
603 65:0 Emu10k1 WaveTable Emu10k1 Port 0
604 65:1 Emu10k1 WaveTable Emu10k1 Port 1
605 65:2 Emu10k1 WaveTable Emu10k1 Port 2
606 65:3 Emu10k1 WaveTable Emu10k1 Port 3
607</pre> 396</pre>
608 397
609<pre caption="Listed ports when using Timidity++">
610# <i>pmidi -l</i>
611 Port Client name Port name
612 64:0 Rawmidi 0 - ES1371 ES1371
613128:0 TiMidity TiMidity port 0
614128:1 TiMidity TiMidity port 1
615128:2 TiMidity TiMidity port 2
616128:3 TiMidity TiMidity port 3
617</pre>
618
619<p>
620Now, try playing a MIDI file to make sure everything works:
621</p> 398<p>
399If all looks fine, try playing a MIDI file to make sure everything works. With
400the <c>-p</c> option you define what MIDI port you want to use.
401</p>
622 402
623<pre caption="Play a song"> 403<pre caption="Playing a MIDI file">
624# <i>pmidi -p 65:0 Final\ Fantasy\ 7\ -\ Aerith\'s\ Theme.mid</i> 404# <i>pmidi -p 65:0 "Final Fantasy 7 - Aerith' Theme.mid"</i>
625or
626# <i>pmidi -p 128:0 Final\ Fantasy\ 7\ -\ Aerith\'s\ Theme.mid</i>
627</pre> 405</pre>
628 406
629</body> 407</body>
630</section> 408</section>
631</chapter> 409</chapter>
632
633<chapter> 410<chapter>
634<title>Final Notes</title> 411<title>Final Remarks</title>
635<section>
636<title>After kernel-upgrades...</title>
637<body>
638
639<p>
640When you ever rebuild your kernel, or upgrade to another kernel, you'll have to
641rebuild the ALSA modules.
642</p>
643
644<p>
645Although you might have installed <c>alsa-driver</c>, <c>alsa-lib</c> and
646<c>alsa-utils</c>, only the first will have to be installed again, since it will
647put the alsa modules in <path>/lib/modules/*/kernel/sound/pci/</path>.
648</p>
649
650<pre caption="Needed after each kernel compile">
651# <i>emerge alsa-driver</i>
652</pre>
653
654</body>
655</section> 412<section>
656<section>
657<title>alsa-tools and alsa-firmware</title> 413<title>Tools and Firmware</title>
658<body>
659
660<p>
661The alsa-tools and alsa-firmware packages contain tools useful to only users of
662specific sound cards. Most users will not need these. If you do need alsa-tools,
663you can set the environment variable 'ALSA_TOOLS' to install just the needed tools
664for your card:
665</p>
666
667<pre caption="Installing alsa-tools">
668# <i>env ALSA_TOOLS='as10k1 ac3dec' emerge alsa-tools</i>
669</pre>
670
671</body> 414<body>
672</section>
673<section>
674<title>Mixing versions</title>
675<body>
676 415
677<p>
678Often times, different versions of <c>alsa-driver</c>, <c>alsa-lib</c>,
679<c>alsa-utils</c>, <c>alsa-tools</c>, and <c>alsa-oss</c> will work with each
680other, but it is recommended that you try to keep the versions in sync.
681</p> 416<p>
682 417Some specific sound cards can benefit from certain tools provided by the
683</body> 418<c>alsa-tools</c> and <c>alsa-firmware</c> packages. If you need
684</section> 419<c>alsa-tools</c>, be sure to define the ALSA_TOOLS variable in
685<section> 420<path>/etc/make.conf</path> with the tools you require. For instance:
686<title>/etc/modules.autoload</title>
687<body>
688
689<p> 421</p>
690You won't have to edit this file for use with ALSA. After doing <c>rc-update add 422
691alsasound boot</c>, the correct modules will be loaded at startup. 423<pre caption="Selecting ALSA Tools in /etc/make.conf">
424ALSA_TOOLS="as10k1 ac3dec"
425</pre>
426
692</p> 427<p>
693 428Then install the <c>alsa-tools</c> (and/or <c>alsa-firmware</c>) package(s):
694<!--
695<p> 429</p>
696It's not necessary to add <c>snd-pcm-oss</c> or <c>snd-mixer-oss</c> in this 430
697file. Check the <uri link="http://www.djcj.org/LAU/guide/alsbook/faq1.html">this 431<pre caption="Installing ALSA Tools">
698FAQ</uri> for more info. 432# <i>emerge alsa-tools</i>
699</p> 433</pre>
700-->
701
702</body>
703</section>
704<section>
705<title>Known bugs</title>
706<body>
707
708<note>
709This guide lags behind on the alsa-development. Chances are these bugs
710are already fixed when you read this.
711</note>
712
713<ul>
714 <li>
715 If you have <b>lots of noise</b> when using <b>oss</b> emulation, add
716 <e>options snd-pcm-oss dsp_map=1</e> to <path>/etc/modules.d/alsa</path>
717 </li>
718</ul>
719 434
720</body> 435</body>
721</section> 436</section>
722<section> 437<section>
723<title>Activating Joystick Support</title> 438<title>Activating Joystick Support</title>
725 440
726<p> 441<p>
727If your soundcard has a joystick plug, you might be interested in activating 442If your soundcard has a joystick plug, you might be interested in activating
728joystick support for your soundcard. If so, start by verifying if your soundcard 443joystick support for your soundcard. If so, start by verifying if your soundcard
729driver has a joystick parameter. You can verify this by running <c>modinfo</c> 444driver has a joystick parameter. You can verify this by running <c>modinfo</c>
730against your <path>snd-&lt;your chipset&gt;</path>. For instance, for the 445against your kernel module. For instance, for the <c>snd-via82xx</c>:
731<c>snd-via82xx</c>:
732</p> 446</p>
733 447
734<pre caption="Running modinfo"> 448<pre caption="Running modinfo">
735# <i>modinfo snd-via82xx</i> 449# <i>modinfo snd-via82xx</i>
736filename: /lib/modules/2.4.22-ck2/snd-via82xx.o 450filename: /lib/modules/2.4.22-ck2/snd-via82xx.o
737description: "VIA VT82xx audio" 451description: "VIA VT82xx audio"
738author: "Jaroslav Kysela &lt;perex@suse.cz&gt;" 452author: "Jaroslav Kysela &lt;perex@suse.cz&gt;"
739license: "GPL" 453license: "GPL"
740parm: index int array (min = 1, max = 8), description "Index value for VIA 82xx bridge." 454parm: index int array (min = 1, max = 8), description "Index value for
455 VIA 82xx bridge."
741parm: id string array (min = 1, max = 8), description "ID string for VIA 82xx bridge." 456parm: id string array (min = 1, max = 8), description "ID string for VIA
457 82xx bridge."
742parm: enable int array (min = 1, max = 8), description "Enable audio part of VIA 82xx bridge." 458parm: enable int array (min = 1, max = 8), description "Enable audio part
459 of VIA 82xx bridge."
743parm: mpu_port long array (min = 1, max = 8), description "MPU-401 port. (VT82C686x only)" 460parm: mpu_port long array (min = 1, max = 8), description "MPU-401 port.
461 (VT82C686x only)"
744<i>parm: joystick int array (min = 1, max = 8), description "Enable joystick. (VT82C686x only)"</i> 462<i>parm: joystick int array (min = 1, max = 8), description "Enable
463 joystick. (VT82C686x only)"</i>
745parm: ac97_clock int array (min = 1, max = 8), description "AC'97 codec clock (default 48000Hz)." 464parm: ac97_clock int array (min = 1, max = 8), description "AC'97 codec
465 clock (default 48000Hz)."
746parm: dxs_support int array (min = 1, max = 8), description "Support for DXS channels 466parm: dxs_support int array (min = 1, max = 8), description "Support for
747 (0 = auto, 1 = enable, 2 = disable, 3 = 48k only, 4 = no VRA)" 467 DXS channels (0 = auto, 1 = enable, 2 = disable, 3 = 48k only, 4 =
468 no VRA)
748</pre> 469</pre>
749 470
750<p> 471<p>
751If it has the <c>joystick</c> parameter, then append <c>joystick=1</c> to your 472If it has the <c>joystick</c> parameter, append <c>joystick=1</c> to your
752<c>options</c> line in <path>/etc/modules.d/alsa</path>. For instance, for the 473<c>options</c> line in <path>/etc/modules.d/alsa</path>. For instance:
753<c>snd-via82xx</c>:
754</p> 474</p>
755 475
756<pre caption="Adding the joystick parameter"> 476<pre caption="Adding the joystick parameter">
757alias snd-card-0 snd-via82xx 477alias snd-card-0 snd-via82xx
758options snd-via82xx joystick=1 478options snd-via82xx joystick=1
759</pre> 479</pre>
760 480
761</body> 481</body>
762</section> 482</section>
763<section> 483<section>
764<title>More links...</title> 484<title>Resources</title>
765<body> 485<body>
766
767<p>
768You could check these for additional info:
769</p>
770 486
771<ul> 487<ul>
772 <li>
773 <uri link="http://www.gentoo.org/doc/en/desktop.xml">The Gentoo Linux
774 Desktop Configuration Guide</uri>
775 </li>
776 <li>
777 <uri link="http://www.alsa-project.org">ALSA Project Homepage</uri> 488 <li><uri link="http://www.alsa-project.org">The ALSA Project</uri></li>
778 </li>
779 <li>
780 <uri link="http://www.alsa-project.org/documentation.php3">ALSA Users
781 Documentation</uri>
782 </li>
783 <li>
784 <uri link="http://www.djcj.org">ALSA Howto's and FAQ's</uri> 489 <li><uri link="http://www.djcj.org">ALSA Howto's and FAQs</uri></li>
785 </li>
786 <li>
787 <uri link="http://tldp.org/HOWTO/Sound-HOWTO/index.html">Linux Sound
788 HOWTO</uri>
789 </li>
790 <li>
791 <uri link="http://linux-sound.org/">Sound and MIDI Software For Linux</uri> 490 <li><uri link="http://linux-sound.org">Linux Sound/MIDI Software</uri></li>
792 </li>
793</ul> 491</ul>
794 492
795</body> 493</body>
796</section> 494</section>
797</chapter> 495</chapter>

Legend:
Removed from v.1.26  
changed lines
  Added in v.1.37

  ViewVC Help
Powered by ViewVC 1.1.20