| 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.69 2006/07/07 14:40:08 rane Exp $ --> |
2 | <!-- $Header: /var/cvsroot/gentoo/xml/htdocs/doc/en/alsa-guide.xml,v 1.87 2012/05/27 22:21:53 nightmorph Exp $ --> |
| 3 | |
3 | |
| 4 | <!DOCTYPE guide SYSTEM "/dtd/guide.dtd"> |
4 | <!DOCTYPE guide SYSTEM "/dtd/guide.dtd"> |
| 5 | |
5 | |
| 6 | <guide link="/doc/en/alsa-guide.xml"> |
6 | <guide> |
| 7 | <title>Gentoo Linux ALSA Guide</title> |
7 | <title>Gentoo Linux ALSA Guide</title> |
| 8 | |
8 | |
| 9 | <author title="Author"> |
9 | <author title="Author"> |
| 10 | <mail link="fox2mike@gentoo.org">Shyam Mani</mail> |
10 | <mail link="fox2mike@gentoo.org">Shyam Mani</mail> |
| 11 | </author> |
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> |
| 12 | |
18 | |
| 13 | <abstract> |
19 | <abstract> |
| 14 | This document helps a user setup ALSA on Gentoo Linux. |
20 | This document helps a user setup ALSA on Gentoo Linux. |
| 15 | </abstract> |
21 | </abstract> |
| 16 | |
22 | |
| 17 | <!-- The content of this document is licensed under the CC-BY-SA license --> |
23 | <!-- The content of this document is licensed under the CC-BY-SA license --> |
| 18 | <!-- See http://creativecommons.org/licenses/by-sa/2.5 --> |
24 | <!-- See http://creativecommons.org/licenses/by-sa/2.5 --> |
| 19 | <license/> |
25 | <license/> |
| 20 | |
26 | |
| 21 | <version>2.14</version> |
27 | <version>4</version> |
| 22 | <date>2006-07-06</date> |
28 | <date>2012-05-27</date> |
| 23 | |
29 | |
| 24 | <chapter> |
30 | <chapter> |
| 25 | <title>Introduction</title> |
31 | <title>Introduction</title> |
| 26 | <section> |
32 | <section> |
| 27 | <title>What is ALSA?</title> |
33 | <title>What is ALSA?</title> |
| 28 | <body> |
34 | <body> |
| 29 | |
35 | |
| 30 | <p> |
36 | <p> |
| 31 | ALSA, which stands for <e>Advanced Linux Sound Architecture</e>, provides |
37 | ALSA, which stands for <e>Advanced Linux Sound Architecture</e>, provides audio |
| 32 | audio and MIDI (<e>Musical Instrument Digital Interface</e>) functionality to |
38 | and MIDI (<e>Musical Instrument Digital Interface</e>) functionality to the |
| 33 | the Linux operating system. ALSA is the default sound subsystem in the 2.6 |
39 | Linux operating system. ALSA is the default sound subsystem in the 3.x and 2.6 |
| 34 | kernel thereby replacing OSS (<e>Open Sound System</e>), which was used in the |
40 | kernels, thereby replacing OSS (<e>Open Sound System</e>), which was used in |
| 35 | 2.4 kernels. |
41 | the 2.4 kernels. |
| 36 | </p> |
|
|
| 37 | |
|
|
| 38 | <p> |
42 | </p> |
|
|
43 | |
|
|
44 | <p> |
| 39 | ALSA's main features include efficient support for all types of audio |
45 | ALSA's main features include efficient support for all types of audio |
| 40 | interfaces ranging from consumer sound cards to professional sound |
46 | interfaces ranging from consumer sound cards to professional sound |
| 41 | equipment, fully modularized drivers, SMP and thread safety, backward |
47 | equipment, fully modularized drivers, SMP and thread safety, backward |
| 42 | compatibility with OSS and a user-space library <c>alsa-lib</c> to make |
48 | compatibility with OSS and a user-space library <c>alsa-lib</c> to make |
| 43 | application development a breeze. |
49 | 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 | </p> |
50 | </p> |
| 58 | |
51 | |
| 59 | </body> |
52 | </body> |
| 60 | </section> |
53 | </section> |
| 61 | </chapter> |
54 | </chapter> |
| 62 | |
55 | |
| 63 | <chapter> |
56 | <chapter> |
| 64 | <title>Installing ALSA</title> |
57 | <title>Installing ALSA</title> |
| 65 | <section> |
|
|
| 66 | <title>Options</title> |
|
|
| 67 | <body> |
|
|
| 68 | |
|
|
| 69 | <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 | <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 | </ol> |
|
|
| 87 | |
|
|
| 88 | <p> |
|
|
| 89 | 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 | <p> |
|
|
| 117 | And, if you were to use alsa-driver, |
|
|
| 118 | </p> |
|
|
| 119 | |
|
|
| 120 | <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 | </body> |
|
|
| 140 | </section> |
|
|
| 141 | <section> |
|
|
| 142 | <title>So...</title> |
|
|
| 143 | <body> |
|
|
| 144 | |
|
|
| 145 | <p> |
|
|
| 146 | 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 | 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 | </p> |
|
|
| 155 | |
|
|
| 156 | </body> |
|
|
| 157 | </section> |
|
|
| 158 | <section id="lspci"> |
58 | <section id="lspci"> |
| 159 | <title>Before you proceed</title> |
59 | <title>Before you proceed</title> |
| 160 | <body> |
60 | <body> |
| 161 | |
61 | |
| 162 | <p> |
62 | <p> |
| 163 | Whichever method of install you choose, you need to know what drivers your |
63 | First, you need to know what drivers your sound card uses. In most cases, sound |
| 164 | sound card uses. In most cases, sound cards (onboard and otherwise) are PCI |
64 | cards (onboard and otherwise) are PCI based and <c>lspci</c> will help you in |
| 165 | based and <c>lspci</c> will help you in digging out the required information. |
65 | digging out the required information. Please <c>emerge sys-apps/pciutils</c> to |
| 166 | Please <c>emerge sys-apps/pciutils</c> to get <c>lspci</c>, if you don't have it |
66 | get <c>lspci</c>, if you don't have it installed already. In case you have a USB |
| 167 | installed already. In case you have a USB sound card, <c>lsusb</c> from |
67 | sound card, <c>lsusb</c> from <c>sys-apps/usbutils</c> <e>might</e> be of help. |
| 168 | <c>sys-apps/usbutils</c> <e>might</e> be of help. For ISA cards, try using |
68 | For ISA cards, try using <c>sys-apps/isapnptools</c>. Also, the following pages |
| 169 | <c>sys-apps/isapnptools</c>. Also, the following pages <e>may</e> help users |
69 | <e>may</e> help users with ISA based sound cards: |
| 170 | with ISA based sound cards. |
|
|
| 171 | </p> |
70 | </p> |
| 172 | |
71 | |
| 173 | <ul> |
72 | <ul> |
| 174 | <li> |
73 | <li> |
| 175 | <uri link="http://www.roestock.demon.co.uk/isapnptools/">The ISAPNPTOOLS |
74 | <uri link="http://www.roestock.demon.co.uk/isapnptools/">The ISAPNPTOOLS |
| … | |
… | |
| 198 | # <i>lspci -v | grep -i audio</i> |
97 | # <i>lspci -v | grep -i audio</i> |
| 199 | 0000:00:0a.0 Multimedia audio controller: Creative Labs SB Live! EMU10k1 (rev 06) |
98 | 0000:00:0a.0 Multimedia audio controller: Creative Labs SB Live! EMU10k1 (rev 06) |
| 200 | </pre> |
99 | </pre> |
| 201 | |
100 | |
| 202 | <p> |
101 | <p> |
| 203 | We now know that the sound card on the machine is a Sound Blaster Live! and |
102 | We now know that the sound card on the machine is a Sound Blaster Live! and the |
| 204 | the card manufacturer is Creative Labs. Head over to the |
103 | card manufacturer is Creative Labs. Head over to the <uri |
| 205 | <uri link="http://www.alsa-project.org/alsa-doc/"> ALSA Soundcard Matrix</uri> |
104 | link="http://bugtrack.alsa-project.org/main/index.php/Matrix:Main">ALSA |
| 206 | page and select Creative Labs from the drop down menu. You will be taken to |
105 | Soundcard Matrix</uri> page and select Creative Labs from the list. You will |
| 207 | the Creative Labs matrix page where you can see that the SB Live! uses the |
106 | be taken to the Creative Labs matrix page where you can see that the SB Live! |
| 208 | <c>emu10k1</c> module. That is the information we need for now. If you are |
107 | uses the <c>emu10k1</c> module. That is the information we need for now. If |
| 209 | interested in detailed information, you can click on the link next to the |
108 | you are interested in detailed information, you can click on the link next to |
| 210 | "Details" and that will take you to the <c>emu10k1</c> specific page. |
109 | the "Details" and that will take you to the <c>emu10k1</c> specific page. |
|
|
110 | </p> |
|
|
111 | |
|
|
112 | <p> |
|
|
113 | If you intend to use MIDI, then you should add <c>midi</c> to your USE flags in |
|
|
114 | <path>/etc/make.conf</path> before emerging any ALSA packages. Later in the |
|
|
115 | guide, we will show you how to set up <uri link="#midi">MIDI support</uri>. |
| 211 | </p> |
116 | </p> |
| 212 | |
117 | |
| 213 | </body> |
118 | </body> |
| 214 | </section> |
119 | </section> |
| 215 | <section id="kernel"> |
120 | <section id="kernel"> |
| 216 | <title>Using ALSA provided by your Kernel</title> |
121 | <title>Configuring the kernel</title> |
| 217 | <body> |
122 | <body> |
| 218 | |
|
|
| 219 | <p> |
|
|
| 220 | If you're a person who likes to keep things simple like I do, then this is |
|
|
| 221 | the way to go. |
|
|
| 222 | </p> |
|
|
| 223 | |
123 | |
| 224 | <note> |
124 | <note> |
| 225 | Since the 2005.0 release, Gentoo Linux uses 2.6 as the default kernel. Unless |
125 | Since the 2005.0 release, Gentoo Linux uses 2.6 as the default kernel. Please |
| 226 | you are specifically using the 2.4 profile, <c>gentoo-sources</c> will be a |
126 | check that your kernel is a 2.6 series kernel. This method will <e>not</e> work |
| 227 | 2.6 kernel on <e>most</e> architectures. Please check that your kernel is a |
127 | on a 2.4 kernel. |
| 228 | 2.6 series kernel. This method will <e>not</e> work on a 2.4 kernel. |
|
|
| 229 | </note> |
128 | </note> |
| 230 | |
129 | |
| 231 | <p> |
130 | <p> |
| 232 | Let us now configure the kernel to enable ALSA. |
131 | Let us now configure the kernel to enable ALSA. |
| 233 | </p> |
132 | </p> |
| … | |
… | |
| 252 | Now we will look at some of the options we will have to enable in the 2.6 |
151 | 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. |
152 | kernel to ensure proper ALSA support for our sound card. |
| 254 | </p> |
153 | </p> |
| 255 | |
154 | |
| 256 | <p> |
155 | <p> |
| 257 | Please note that for the sake of ease, all examples show ALSA built as modules. |
156 | Please note that for ease of use, all examples show ALSA built as modules. It |
| 258 | It is advisable to follow the same as it then allows the use of <c>alsaconf</c> |
157 | is advisable to follow the same as it then allows the use of <c>alsaconf</c> |
| 259 | which is a boon when you want to configure your card. Please do <e>not</e> skip |
158 | 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 |
159 | 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 |
160 | you still like to have options built-in, ensure that you make changes to your |
| 262 | config accordingly. |
161 | config accordingly. |
| 263 | </p> |
162 | </p> |
| … | |
… | |
| 281 | <comment>(Old style /dev/mixer* and /dev/dsp* support. Recommended.)</comment> |
180 | <comment>(Old style /dev/mixer* and /dev/dsp* support. Recommended.)</comment> |
| 282 | <M> OSS Mixer API |
181 | <M> OSS Mixer API |
| 283 | <M> OSS PCM (digital audio) API |
182 | <M> OSS PCM (digital audio) API |
| 284 | |
183 | |
| 285 | <comment>(You now have a choice of devices to enable support for. Generally, |
184 | <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 |
185 | 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> |
186 | sound card, please enable them all here.)</comment> |
| 288 | |
187 | |
| 289 | <comment>(Mostly for testing and development purposes, not needed for normal |
188 | <comment>(Mostly for testing and development purposes, not needed for normal |
| 290 | users unless you know what you are doing.)</comment> |
189 | users unless you know what you are doing.)</comment> |
| 291 | Generic devices ---> |
190 | Generic devices ---> |
| 292 | |
191 | |
| 293 | <comment>(For ISA Sound cards)</comment> |
192 | <comment>(For ISA Sound cards)</comment> |
| 294 | ISA devices ---> |
193 | ISA devices ---> |
| 295 | <comment>(IF you had the Gravis, you would select this option)</comment> |
194 | <comment>(IF you had the Gravis, you would select this option)</comment> |
| 296 | <M> Gravis UltraSound Extreme |
195 | <M> Gravis UltraSound Extreme |
| 297 | |
196 | |
| 298 | <comment>(Move one level back and into PCI devices. Most sound cards today are |
197 | <comment>(Move one level back and into PCI devices. Most sound cards today are |
| 299 | PCI devices)</comment> |
198 | PCI devices)</comment> |
| 300 | PCI devices ---> |
199 | PCI devices ---> |
| 301 | <comment>(We now select the emu10k1 driver for our card)</comment> |
200 | <comment>(We now select the emu10k1 driver for our card)</comment> |
| 302 | <M> Emu10k1 (SB Live!, Audigy, E-mu APS) |
201 | <M> Emu10k1 (SB Live!, Audigy, E-mu APS) |
| 303 | <comment>(Or an Intel card would be)</comment> |
202 | <comment>(Or an Intel card would be)</comment> |
| … | |
… | |
| 311 | |
210 | |
| 312 | <p> |
211 | <p> |
| 313 | Now that your options are set, you can (re)compile the kernel and ALSA support |
212 | Now that your options are set, you can (re)compile the kernel and ALSA support |
| 314 | for your card should be functional once you reboot into the new kernel. Don't |
213 | 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. |
214 | forget to update your GRUB configuration to use the newly built kernel. |
| 316 | You can now proceed to <uri link="#alsa-utilities">ALSA Utilities</uri> and |
215 | You can now proceed to <uri link="#alsa-utilities">ALSA Utilities</uri> and |
| 317 | see if everything is working as it should. |
216 | see if everything is working as it should. |
| 318 | </p> |
217 | </p> |
| 319 | |
|
|
| 320 | </body> |
|
|
| 321 | </section> |
|
|
| 322 | <section id="alsa-driver"> |
|
|
| 323 | <title>Using the ALSA Driver package</title> |
|
|
| 324 | <body> |
|
|
| 325 | |
|
|
| 326 | <p> |
|
|
| 327 | 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 | </p> |
|
|
| 332 | |
|
|
| 333 | <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 | <comment>(For more than one, separate names with spaces)</comment> |
|
|
| 344 | ALSA_CARDS="emu10k1 via82xx" |
|
|
| 345 | </pre> |
|
|
| 346 | |
|
|
| 347 | <p> |
|
|
| 348 | 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 | </p> |
|
|
| 352 | |
|
|
| 353 | <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 | <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 | </pre> |
|
|
| 386 | |
|
|
| 387 | <p> |
|
|
| 388 | Now all you have to do is type the magic words... and no, it's not abracadabra. |
|
|
| 389 | </p> |
|
|
| 390 | |
|
|
| 391 | <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 | |
218 | |
| 400 | </body> |
219 | </body> |
| 401 | </section> |
220 | </section> |
| 402 | </chapter> |
221 | </chapter> |
| 403 | |
222 | |
| … | |
… | |
| 406 | <section id="alsa-utilities"> |
225 | <section id="alsa-utilities"> |
| 407 | <title>ALSA Utilities</title> |
226 | <title>ALSA Utilities</title> |
| 408 | <body> |
227 | <body> |
| 409 | |
228 | |
| 410 | <p> |
229 | <p> |
| 411 | <c>alsa-utils</c> forms an integral part of ALSA as it has a truckload of |
230 | <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 |
231 | programs that are highly useful, including the ALSA Initscripts. Hence we |
| 413 | strongly recommend that you install <c>alsa-utils</c> |
232 | strongly recommend that you install <c>alsa-utils</c> |
| 414 | </p> |
233 | </p> |
| 415 | |
234 | |
| 416 | <pre caption="Install alsa-utils"> |
235 | <pre caption="Install alsa-utils"> |
| 417 | # <i>emerge alsa-utils</i> |
236 | # <i>emerge alsa-utils</i> |
| 418 | </pre> |
237 | </pre> |
| 419 | |
238 | |
| 420 | <note> |
239 | <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 |
240 | If you did <e>not</e> compile ALSA as modules, please proceed to the <uri |
| 423 | <uri link="#initscript">ALSA Initscript</uri> section. The rest of you need |
241 | link="#initscript">ALSA Initscript</uri> section. The rest of you need to |
| 424 | to configure ALSA. This is made very easy by the existence of the |
242 | configure ALSA. This is made very easy by the existence of the <c>alsaconf</c> |
| 425 | <c>alsaconf</c> tool provided by <c>alsa-utils</c>. |
243 | tool provided by <c>alsa-utils</c>. |
| 426 | </note> |
244 | </note> |
| 427 | |
245 | |
| 428 | </body> |
246 | </body> |
| 429 | </section> |
247 | </section> |
| 430 | <section id="alsa-config"> |
248 | <section id="alsa-config"> |
| 431 | <title>Configuration</title> |
249 | <title>Configuration</title> |
| 432 | <body> |
250 | <body> |
| 433 | |
251 | |
|
|
252 | <p> |
|
|
253 | Recent versions of <c>udev</c> (<c>>=udev-103</c>) provide some degree of |
|
|
254 | kernel-level autoconfiguration of your sound card. If possible, try to rely on |
|
|
255 | just letting your kernel automatically setup your sound card for you. Otherwise, |
|
|
256 | use <c>alsaconf</c> to configure your card, as shown below. |
|
|
257 | </p> |
|
|
258 | |
| 434 | <note> |
259 | <note> |
| 435 | Please shut down any programs that <e>might</e> access the sound card while |
260 | Please shut down any programs that <e>might</e> access the sound card while |
| 436 | running <c>alsaconf</c>. |
261 | running <c>alsaconf</c>. |
| 437 | </note> |
262 | </note> |
| 438 | |
263 | |
| 439 | <p> |
264 | <p> |
| 440 | The easiest way to configure your sound card is to run <c>alsaconf</c>. Just |
265 | To configure your sound card just type <c>alsaconf</c> in a shell as root. |
| 441 | type <c>alsaconf</c> in a shell as root. |
|
|
| 442 | </p> |
266 | </p> |
| 443 | |
267 | |
| 444 | <pre caption="Invoking alsaconf"> |
268 | <pre caption="Invoking alsaconf"> |
| 445 | # <i>alsaconf</i> |
269 | # <i>alsaconf</i> |
| 446 | </pre> |
270 | </pre> |
| 447 | |
271 | |
| 448 | <p> |
272 | <p> |
| 449 | You will now see a neat menu guided interface that will automatically probe |
273 | 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 |
274 | 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 |
275 | 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>. |
276 | automatically make required changes to <path>/etc/modprobe.d/alsa.conf</path>. |
| 453 | It will then adjust your volume settings to optimum levels, run |
277 | 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. |
278 | <c>update-modules</c> and start the <path>/etc/init.d/alsasound</path> service. |
| 455 | Once <c>alsaconf</c> exits, you can proceed with setting up the ALSA |
279 | Once <c>alsaconf</c> exits, you can proceed with setting up the ALSA |
| 456 | initscript. |
280 | initscript. |
| 457 | </p> |
281 | </p> |
| 458 | |
282 | |
| 459 | </body> |
283 | </body> |
| … | |
… | |
| 461 | <section id="initscript"> |
285 | <section id="initscript"> |
| 462 | <title>ALSA Initscript</title> |
286 | <title>ALSA Initscript</title> |
| 463 | <body> |
287 | <body> |
| 464 | |
288 | |
| 465 | <p> |
289 | <p> |
| 466 | We're now almost all setup. Whichever method you chose to install ALSA, you'll |
290 | 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 |
291 | 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 |
292 | volume settings when your system comes up. The ALSA Initscript handles all of |
| 469 | this for you and is called <c>alsasound</c>. Add it to the boot runlevel. |
293 | this for you and is called <c>alsasound</c>. Add it to the boot runlevel. |
| 470 | </p> |
294 | </p> |
| 471 | |
295 | |
| 472 | <pre caption="Adding ALSA to the boot runlevel"> |
296 | <pre caption="Adding ALSA to the boot runlevel"> |
| 473 | # <i>rc-update add alsasound boot</i> |
297 | # <i>rc-update add alsasound boot</i> |
| 474 | * alsasound added to runlevel boot |
298 | * alsasound added to runlevel boot |
| 475 | * rc-update complete. |
299 | * rc-update complete. |
| 476 | </pre> |
300 | </pre> |
| 477 | |
301 | |
| 478 | <p> |
302 | <p> |
| 479 | Next, just check the <path>/etc/conf.d/alsasound</path> file and ensure that |
303 | 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 |
304 | SAVE_ON_STOP variable is set to yes. This saves your sound settings when you |
| 481 | shutdown your system. |
305 | shutdown your system. |
| 482 | </p> |
306 | </p> |
| 483 | |
307 | |
| 484 | </body> |
308 | </body> |
| 485 | </section> |
309 | </section> |
| … | |
… | |
| 487 | <title>Audio Group</title> |
311 | <title>Audio Group</title> |
| 488 | <body> |
312 | <body> |
| 489 | |
313 | |
| 490 | <p> |
314 | <p> |
| 491 | Before we move on to testing, there's one last <e>important</e> thing that needs |
315 | 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. |
316 | 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 |
317 | 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 |
318 | in as a user and would like to listen to music or access your soundcard. For |
| 495 | that to happen, you need to be in the "audio" group. At this point, we'll add |
319 | that to happen, you need to be in the "audio" group. At this point, we'll add |
| 496 | users to the audio group, so that they won't have any issues when they want to |
320 | 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 |
321 | access sound devices. We'll use <c>gpasswd</c> here and you need to be logged in |
| … | |
… | |
| 509 | <section> |
333 | <section> |
| 510 | <title>Volume Check!</title> |
334 | <title>Volume Check!</title> |
| 511 | <body> |
335 | <body> |
| 512 | |
336 | |
| 513 | <p> |
337 | <p> |
| 514 | We've completed all the setups and pre-requisites, so let's fire up ALSA. If |
338 | We've completed all the setups and prerequisites, so let's fire up ALSA. If |
| 515 | you ran <c>alsaconf</c>, you can skip this step, since <c>alsaconf</c> already |
339 | you ran <c>alsaconf</c>, you can skip this step, since <c>alsaconf</c> already |
| 516 | does this for you. |
340 | does this for you. |
| 517 | </p> |
341 | </p> |
| 518 | |
342 | |
| 519 | <pre caption="Start the service"> |
343 | <pre caption="Start the service"> |
| 520 | <comment>(ALSA as modules)</comment> |
|
|
| 521 | # <i>/etc/init.d/alsasound start</i> |
344 | # <i>/etc/init.d/alsasound start</i> |
| 522 | * Loading ALSA modules ... |
|
|
| 523 | * Loading: snd-card-0 ... [ ok ] |
|
|
| 524 | * Loading: snd-pcm-oss ... [ ok ] |
|
|
| 525 | * Loading: snd-seq ... [ ok ] |
|
|
| 526 | * Loading: snd-emu10k1-synth ... [ ok ] |
|
|
| 527 | * Loading: snd-seq-midi ... [ ok ] |
|
|
| 528 | * 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> |
345 | </pre> |
| 534 | |
346 | |
| 535 | <p> |
347 | <p> |
| 536 | Now that the required things have been taken care of, we need to check up on |
348 | 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 |
349 | the volume as in certain cases, it is muted. We use <c>alsamixer</c> for this |
| 538 | purpose. |
350 | purpose. |
| 539 | </p> |
351 | </p> |
| 540 | |
352 | |
| 541 | <pre caption="Starting alsamixer"> |
353 | <pre caption="Starting alsamixer"> |
| 542 | <comment>(Opens up a console program. Only required settings are shown)</comment> |
354 | <comment>(Opens up a console program. Only required settings are shown)</comment> |
| 543 | # <i>alsamixer</i> |
355 | # <i>alsamixer</i> |
| 544 | </pre> |
356 | </pre> |
| 545 | |
357 | |
| 546 | <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 | 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 | </impo> |
|
|
| 553 | |
|
|
| 554 | <p> |
358 | <p> |
| 555 | This is how the ALSA Mixer <e>might</e> look the first time you open it. Pay |
359 | 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. |
360 | 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> |
361 | 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. |
362 | in this state, you will not hear anything on your speakers. |
| 559 | </p> |
363 | </p> |
| 560 | |
364 | |
| 561 | <figure link="/images/docs/alsa-mixermuted.png" short="AlsaMixer Muted" caption="The Alsa Mixer Main Window, Muted"/> |
365 | <figure link="/images/docs/alsa-mixermuted.png" short="AlsaMixer Muted" caption="The Alsa Mixer Main Window, Muted"/> |
| 562 | |
366 | |
| … | |
… | |
| 569 | if you want to hear some output on your speakers. |
373 | if you want to hear some output on your speakers. |
| 570 | </warn> |
374 | </warn> |
| 571 | |
375 | |
| 572 | <ul> |
376 | <ul> |
| 573 | <li> |
377 | <li> |
| 574 | To move between channels, use your left and right arrow keys. (<- |
378 | To move between channels, use your left and right arrow keys. (<- |
| 575 | & ->) |
379 | & ->) |
| 576 | </li> |
380 | </li> |
| 577 | <li> |
381 | <li> |
| 578 | To toggle mute, move to the specific channel, for example Master and press |
382 | To toggle mute, move to the specific channel, for example Master and press |
| 579 | the <e>m</e> key on the keyboard. |
383 | the <e>m</e> key on the keyboard. |
| 580 | </li> |
384 | </li> |
| 581 | <li> |
385 | <li> |
| 582 | To increase and decrease the volume levels, use the up and down arrow keys |
386 | To increase and decrease the volume levels, use the up and down arrow keys |
| 583 | respectively. |
387 | respectively. |
| 584 | </li> |
388 | </li> |
| 585 | </ul> |
389 | </ul> |
| 586 | |
390 | |
| 587 | <note> |
391 | <note> |
| 588 | Be careful when setting your Bass and Treble values. 50 is usually a good |
392 | 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> |
393 | number for both. Extremely high values of Bass may cause <e>jarring</e> |
| 590 | on speakers that are not designed to handle them. |
394 | on speakers that are not designed to handle them. |
| 591 | </note> |
395 | </note> |
| 592 | |
396 | |
| 593 | <p> |
397 | <p> |
| 594 | After you're all done, your ALSA Mixer should look similar to the one below. |
398 | 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 |
399 | Note the 00 instead of the MM and also the volume levels for some optimum |
| 596 | settings. |
400 | settings. |
| 597 | </p> |
401 | </p> |
| 598 | |
402 | |
| 599 | <figure link="/images/docs/alsa-mixerunmuted.png" short="AlsaMixer Unmuted" caption="Alsa Mixer ready to roll"/> |
403 | <figure link="/images/docs/alsa-mixerunmuted.png" short="AlsaMixer Unmuted" caption="Alsa Mixer ready to roll"/> |
| 600 | |
404 | |
| … | |
… | |
| 606 | |
410 | |
| 607 | <p> |
411 | <p> |
| 608 | Finally. Some music. If everything above is perfect, you should now be able to |
412 | Finally. Some music. If everything above is perfect, you should now be able to |
| 609 | listen to some good music. A quick way to test is to use a command line tool |
413 | listen to some good music. A quick way to test is to use a command line tool |
| 610 | like <c>media-sound/madplay</c>. You could also use something more well known |
414 | like <c>media-sound/madplay</c>. You could also use something more well known |
| 611 | like <c>mpg123</c> or <c>xmms</c>. If you are an ogg fan, you could use |
415 | like <c>mpg123</c>. If you are an ogg fan, you could use <c>ogg123</c> provided |
| 612 | <c>ogg123</c> provided by <c>media-sound/vorbis-tools</c>. Use any player you |
416 | by <c>media-sound/vorbis-tools</c>. Use any player you are comfortable with. As |
| 613 | are comfortable with. As always, <c>emerge</c> what you need. |
417 | always, <c>emerge</c> what you need. |
| 614 | </p> |
418 | </p> |
| 615 | |
419 | |
| 616 | <pre caption="Getting the software"> |
420 | <pre caption="Getting the software"> |
| 617 | <comment>(Install the applications you want)</comment> |
421 | <comment>(Install the applications you want)</comment> |
| 618 | # <i>emerge madplay mpg123 xmms</i> |
422 | # <i>emerge madplay mpg123</i> |
| 619 | <comment>(To play .ogg files)</comment> |
423 | <comment>(To play .ogg files)</comment> |
| 620 | # <i>emerge vorbis-tools</i> |
424 | # <i>emerge vorbis-tools</i> |
| 621 | </pre> |
425 | </pre> |
| 622 | |
426 | |
| 623 | <p> |
427 | <p> |
| … | |
… | |
| 666 | <section> |
470 | <section> |
| 667 | <title>Issues?</title> |
471 | <title>Issues?</title> |
| 668 | <body> |
472 | <body> |
| 669 | |
473 | |
| 670 | <p> |
474 | <p> |
| 671 | If for some reason you're unable to hear sound, the first thing to do would |
475 | If for some reason you're unable to hear sound, the first thing to do would |
| 672 | be to check your <uri link="#doc_chap3_pre6">alsamixer</uri> settings. 80% of |
476 | be to check your <uri link="#doc_chap3_pre6">alsamixer</uri> settings. 80% of |
| 673 | the issues lie with muted channels or low volume. Also check your Window |
477 | the issues lie with muted channels or low volume. Also check your Window |
| 674 | Manager's sound applet and verify that volumes are set to audible levels. |
478 | Manager's sound applet and verify that volumes are set to audible levels. |
| 675 | </p> |
479 | </p> |
| 676 | |
480 | |
| 677 | <p> |
481 | <p> |
| 678 | <path>/proc</path> is your friend. And in this case, <path>/proc/asound</path> |
482 | <path>/proc</path> is your friend. And in this case, <path>/proc/asound</path> |
| 679 | is your best friend. We shall just take a short look at how much info is made |
483 | is your best friend. We shall just take a short look at how much info is made |
| 680 | available to us there. |
484 | available to us there. |
| 681 | </p> |
485 | </p> |
| 682 | |
486 | |
| 683 | <pre caption="Fun with /proc/asound"> |
487 | <pre caption="Fun with /proc/asound"> |
| 684 | <comment>(First and foremost, if /proc/asound/cards shows your card, ALSA has |
488 | <comment>(First and foremost, if /proc/asound/cards shows your card, ALSA has |
| 685 | picked up your sound card fine.)</comment> |
489 | picked up your sound card fine.)</comment> |
| 686 | # <i>cat /proc/asound/cards</i> |
490 | # <i>cat /proc/asound/cards</i> |
| 687 | 0 [Live ]: EMU10K1 - Sound Blaster Live! |
491 | 0 [Live ]: EMU10K1 - Sound Blaster Live! |
| 688 | Sound Blaster Live! (rev.6, serial:0x80271102) at 0xb800, irq 11 |
492 | Sound Blaster Live! (rev.6, serial:0x80271102) at 0xb800, irq 11 |
| 689 | |
493 | |
| 690 | <comment>(If you run ALSA off the kernel like I do and wonder how far behind |
|
|
| 691 | you are from alsa-driver, this displays current running ALSA version)</comment> |
494 | <comment>(This displays the current running ALSA version)</comment> |
| 692 | # <i>cat /proc/asound/version</i> |
495 | # <i>cat /proc/asound/version</i> |
| 693 | Advanced Linux Sound Architecture Driver Version 1.0.8 (Thu Jan 13 09:39:32 2005 UTC). |
496 | Advanced Linux Sound Architecture Driver Version 1.0.8 (Thu Jan 13 09:39:32 2005 UTC). |
| 694 | |
497 | |
| 695 | <comment>(ALSA OSS emulation details)</comment> |
498 | <comment>(ALSA OSS emulation details)</comment> |
| 696 | # <i>cat /proc/asound/oss/sndstat</i> |
499 | # <i>cat /proc/asound/oss/sndstat</i> |
| … | |
… | |
| 716 | 7: system timer |
519 | 7: system timer |
| 717 | |
520 | |
| 718 | Mixers: |
521 | Mixers: |
| 719 | 0: SigmaTel STAC9721/23 |
522 | 0: SigmaTel STAC9721/23 |
| 720 | </pre> |
523 | </pre> |
|
|
524 | |
|
|
525 | <!-- TODO: remove this a few months after alsa-driver leaves the tree --> |
| 721 | |
526 | |
| 722 | <p> |
527 | <p> |
| 723 | The other most common issue users face is the dreaded "Unknown symbol in module" |
528 | The other most common issue users face is the dreaded "Unknown symbol in module" |
| 724 | error. An example of the same is shown below. |
529 | error. An example of the same is shown below. |
| 725 | </p> |
530 | </p> |
| … | |
… | |
| 769 | snd_mixer_oss: Unknown symbol snd_mixer_oss_notify_callback |
574 | snd_mixer_oss: Unknown symbol snd_mixer_oss_notify_callback |
| 770 | snd_mixer_oss: Unknown symbol snd_oss_info_register |
575 | snd_mixer_oss: Unknown symbol snd_oss_info_register |
| 771 | </pre> |
576 | </pre> |
| 772 | |
577 | |
| 773 | <p> |
578 | <p> |
| 774 | The above issue is caused when you switch from <c>alsa-driver</c> to in-kernel |
579 | The above issue is caused when you switch from the <c>alsa-driver</c> to in-kernel |
| 775 | ALSA because when you unmerge <c>alsa-driver</c> the module files are config |
580 | ALSA because when you unmerge <c>alsa-driver</c> the module files are config |
| 776 | protected and hence get left behind. So, when you switch to in-kernel |
581 | protected and hence get left behind. So, when you switch to in-kernel |
| 777 | drivers, running <c>modprobe</c> gives you a mix of <c>alsa-driver</c> and |
582 | drivers, running <c>modprobe</c> gives you a mix of <c>alsa-driver</c> and |
| 778 | in-kernel modules thus causing the above errors. |
583 | in-kernel modules thus causing the above errors. |
| 779 | </p> |
584 | </p> |
| … | |
… | |
| 788 | # <i>rm -rf /lib/modules/$(uname -r)/alsa-driver</i> |
593 | # <i>rm -rf /lib/modules/$(uname -r)/alsa-driver</i> |
| 789 | </pre> |
594 | </pre> |
| 790 | |
595 | |
| 791 | <p> |
596 | <p> |
| 792 | Another reason for error messages similar to the ones above could be a file in |
597 | Another reason for error messages similar to the ones above could be a file in |
| 793 | <path>/etc/modules.d</path> supplying a <c>device_mode</c> parameter when it |
598 | <path>/etc/modprobe.d</path> supplying a <c>device_mode</c> parameter when it |
| 794 | isn't required. Confirm that this is indeed the issue and find out which file |
599 | isn't required. Confirm that this is indeed the issue and find out which file |
| 795 | is the culprit. |
600 | is the culprit. |
| 796 | </p> |
601 | </p> |
| 797 | |
602 | |
| 798 | <pre caption="Confirming and searching for device_mode"> |
603 | <pre caption="Confirming and searching for device_mode"> |
| 799 | <comment>(Check dmesg to confirm)</comment> |
604 | <comment>(Check dmesg to confirm)</comment> |
| 800 | # <i>dmesg | grep device_mode</i> |
605 | # <i>dmesg | grep device_mode</i> |
| 801 | snd: Unknown parameter `device_mode' |
606 | snd: Unknown parameter `device_mode' |
| 802 | <comment>(Now, to get to the source of the issue)</comment> |
607 | <comment>(Now, to get to the source of the issue)</comment> |
| 803 | # <i>grep device_mode /etc/modules.d/*</i> |
608 | # <i>grep device_mode /etc/modprobe.d/*</i> |
| 804 | </pre> |
609 | </pre> |
| 805 | |
610 | |
| 806 | <p> |
611 | <p> |
| 807 | Usually it is a file called <path>alsa</path> with the line <c>options snd |
612 | Usually it is a file called <path>alsa</path> with the line <c>options snd |
| 808 | device_mode=0666</c>. Remove this line and restart the alsasound service and |
613 | device_mode=0666</c>. Remove this line and restart the <c>alsasound</c> service |
| 809 | that should take care of this issue. |
614 | and that should take care of this issue. |
| 810 | </p> |
615 | </p> |
|
|
616 | |
|
|
617 | <!-- End of removal notice --> |
| 811 | |
618 | |
| 812 | </body> |
619 | </body> |
| 813 | </section> |
620 | </section> |
| 814 | </chapter> |
621 | </chapter> |
| 815 | |
622 | |
| 816 | <chapter> |
623 | <chapter> |
| 817 | <title>Other things ALSA</title> |
624 | <title>Other things ALSA</title> |
| 818 | <section> |
625 | <section id="midi"> |
| 819 | <title>Setting up MIDI support</title> |
626 | <title>Setting up MIDI support</title> |
| 820 | <body> |
627 | <body> |
| 821 | |
628 | |
| 822 | <p> |
629 | <p> |
|
|
630 | First, check to make sure that you enabled the <c>midi</c> USE flag in |
|
|
631 | <path>/etc/make.conf</path>. If you didn't, go ahead and add it now. You will |
|
|
632 | also need to re-emerge any ALSA packages that use the <c>midi</c> flag, such as |
|
|
633 | <c>alsa-lib</c> and <c>alsa-utils</c>. |
|
|
634 | </p> |
|
|
635 | |
|
|
636 | <p> |
| 823 | If your sound card is one of those that come with on-board MIDI synthesizers |
637 | If your sound card is one of those that come with on-board MIDI synthesizers |
| 824 | and you would like to listen to some .mid files, you have to install |
638 | and you would like to listen to some .mid files, you have to install |
| 825 | <c>awesfx</c> which is basically a set of utilities for controlling the AWE32 |
639 | <c>awesfx</c> which is basically a set of utilities for controlling the AWE32 |
| 826 | driver. We need to install it first. If you don't have a hardware synthesizer, |
640 | driver. We need to install it first. If you don't have a hardware synthesizer, |
| 827 | you can use a virtual one. Please see the section on |
641 | you can use a virtual one. Please see the section on |
| 828 | <uri link="#vsynth">Virtual Synthesizers</uri> for more information. |
642 | <uri link="#vsynth">Virtual Synthesizers</uri> for more information. |
| 829 | </p> |
643 | </p> |
| 830 | |
644 | |
| 831 | <pre caption="Installing awesfx"> |
645 | <pre caption="Installing awesfx"> |
| 832 | # <i>emerge awesfx</i> |
646 | # <i>emerge awesfx</i> |
| 833 | </pre> |
647 | </pre> |
| 834 | |
648 | |
| 835 | <note> |
649 | <note> |
| 836 | You will need to copy over SoundFont (SF2) files from your sound card's driver |
650 | You will need to copy over SoundFont (SF2) files from your sound card's driver |
| 837 | CD or a Windows installation into <path>/usr/share/sounds/sf2/</path>. For |
651 | CD or a Windows installation into <path>/usr/share/sounds/sf2/</path>. For |
| 838 | example a sound font file for the Creative SBLive! card would be 8MBGMSFX.SF2. |
652 | example a sound font file for the Creative SBLive! card would be 8MBGMSFX.SF2. |
| 839 | </note> |
653 | </note> |
| 840 | |
654 | |
| 841 | <p> |
655 | <p> |
| 842 | After copying over the Soundfont files, we can then play a midi file as shown. |
656 | After copying over the Soundfont files, we can then play a midi file as shown. |
| 843 | You can also add the <c>asfxload</c> command to |
657 | You can also add the <c>asfxload</c> command to |
| 844 | <path>/etc/conf.d/local.start</path>, so that the sound font is loaded |
658 | <path>/etc/conf.d/local.start</path>, so that the sound font is loaded |
| 845 | every time the system starts up. |
659 | every time the system starts up. |
| 846 | </p> |
660 | </p> |
| 847 | |
661 | |
| 848 | <note> |
662 | <note> |
| 849 | <path>/mnt</path> paths mentioned in the code listing(s) below will <e>not</e> |
663 | <path>/mnt</path> paths mentioned in the code listing(s) below will <e>not</e> |
| 850 | be the same in your machine. They are just an example. Please be careful to |
664 | be the same in your machine. They are just an example. Please be careful to |
| 851 | change the path to suit your machine. |
665 | change the path to suit your machine. |
| 852 | </note> |
666 | </note> |
| 853 | |
667 | |
| 854 | <pre caption="Loading Soundfonts"> |
668 | <pre caption="Loading Soundfonts"> |
| 855 | <comment>(First, copy the Soundfont)</comment> |
669 | <comment>(First, copy the Soundfont)</comment> |
| … | |
… | |
| 859 | <comment>(We load the specific Soundfont)</comment> |
673 | <comment>(We load the specific Soundfont)</comment> |
| 860 | # <i>asfxload /usr/share/sounds/sf2/8MBGMSFX.SF2</i> |
674 | # <i>asfxload /usr/share/sounds/sf2/8MBGMSFX.SF2</i> |
| 861 | </pre> |
675 | </pre> |
| 862 | |
676 | |
| 863 | <p> |
677 | <p> |
| 864 | You can now play midi files using a program like <c>aplaymidi</c>. Run |
678 | You can now play midi files using a program like <c>aplaymidi</c>. Run |
| 865 | <c>aplaymidi -l</c> to get a list of available ports and then pick one |
679 | <c>aplaymidi -l</c> to get a list of available ports and then pick one |
| 866 | to play the file on. |
680 | to play the file on. |
| 867 | </p> |
681 | </p> |
| 868 | |
682 | |
| 869 | <pre caption="Playing MIDI"> |
683 | <pre caption="Playing MIDI"> |
| 870 | <comment>(Check open ports)</comment> |
684 | <comment>(Check open ports)</comment> |
| … | |
… | |
| 893 | <pre caption="Installing timidity++"> |
707 | <pre caption="Installing timidity++"> |
| 894 | # <i>emerge timidity++</i> |
708 | # <i>emerge timidity++</i> |
| 895 | </pre> |
709 | </pre> |
| 896 | |
710 | |
| 897 | <p> |
711 | <p> |
| 898 | For timidity to play sounds, it needs a sound font. If you do not have any, |
712 | For timidity to play sounds, it needs a sound font. Fortunately, the ebuild will |
| 899 | install <c>timidity-eawpatches</c> or <c>timidity-shompatches</c> which will |
713 | install some sound font packages for you. There are a few other font packages |
| 900 | give you some sound fonts. You can have multiple sound font configurations |
714 | available in Portage, such as <c>timidity-freepats</c> and |
|
|
715 | <c>timidity-eawpatches</c>. You can have multiple sound font configurations |
| 901 | installed, and you can place your own in <path>/usr/share/timidity/</path>. |
716 | installed, and you can place your own in <path>/usr/share/timidity/</path>. To |
| 902 | To switch between different timidity configurations, you should use the |
717 | switch between different timidity configurations, you should use |
| 903 | <c>timidity-update</c> tool provided in the timidity++ package. |
718 | <c>eselect</c>. |
| 904 | </p> |
719 | </p> |
| 905 | |
720 | |
| 906 | <pre caption="Installing sound fonts"> |
721 | <pre caption="Changing configurations"> |
|
|
722 | # <i>eselect timidity list</i> |
| 907 | # <i>emerge timidity-eawpatches</i> |
723 | # <i>eselect timidity set eawpatches</i> |
| 908 | # <i>timidity-update -g -s eawpatches</i> |
|
|
| 909 | |
|
|
| 910 | <comment>(or)</comment> |
|
|
| 911 | |
|
|
| 912 | # <i>emerge timidity-shompatches</i> |
|
|
| 913 | # <i>timidity-update -g -s shompatches</i> |
|
|
| 914 | </pre> |
724 | </pre> |
| 915 | |
725 | |
| 916 | <p> |
726 | <p> |
| 917 | Don't forget to add <c>timidity</c> to the default runlevel. |
727 | Don't forget to add <c>timidity</c> to the default runlevel. |
| 918 | </p> |
728 | </p> |
| … | |
… | |
| 932 | <title>Tools and Firmware</title> |
742 | <title>Tools and Firmware</title> |
| 933 | <body> |
743 | <body> |
| 934 | |
744 | |
| 935 | <p> |
745 | <p> |
| 936 | Some specific sound cards can benefit from certain tools provided by the |
746 | Some specific sound cards can benefit from certain tools provided by the |
| 937 | <c>alsa-tools</c> and <c>alsa-firmware</c> packages. If you need |
747 | <c>alsa-tools</c> and <c>alsa-firmware</c> packages. You may install either with |
| 938 | <c>alsa-tools</c>, be sure to define the ALSA_TOOLS variable in |
748 | a simple <c>emerge</c>. |
| 939 | <path>/etc/make.conf</path> with the tools you require. For instance: |
|
|
| 940 | </p> |
|
|
| 941 | |
|
|
| 942 | <pre caption="Selecting ALSA Tools in /etc/make.conf"> |
|
|
| 943 | ALSA_TOOLS="as10k1 ac3dec" |
|
|
| 944 | </pre> |
|
|
| 945 | |
|
|
| 946 | <p> |
|
|
| 947 | If the ALSA_TOOLS variable is not set, all available tools will be built. |
|
|
| 948 | Now, install the <c>alsa-tools</c> (and/or <c>alsa-firmware</c>) package(s): |
|
|
| 949 | </p> |
749 | </p> |
| 950 | |
750 | |
| 951 | <pre caption="Installing ALSA Tools"> |
751 | <pre caption="Installing ALSA Tools"> |
| 952 | # <i>emerge alsa-tools</i> |
752 | # <i>emerge alsa-tools</i> |
| 953 | </pre> |
753 | </pre> |
| 954 | |
754 | |
| 955 | </body> |
755 | </body> |
| 956 | </section> |
756 | </section> |
| 957 | <section> |
757 | <section> |
|
|
758 | <title>Multiple sound cards</title> |
|
|
759 | <body> |
|
|
760 | |
|
|
761 | <p> |
|
|
762 | You can have more than one sound card in your system simultaneously, provided |
|
|
763 | that you have built ALSA as modules in your kernel. You just need to specify |
|
|
764 | which should be started first in <path>/etc/modprobe.d/alsa.conf</path>. Your cards |
|
|
765 | are identified by their driver names inside this file. 0 is the first card, 1 is |
|
|
766 | the second, and so on. Here's an example for a system with two sound cards. |
|
|
767 | </p> |
|
|
768 | |
|
|
769 | <pre caption="Two sound cards in /etc/modprobe.d/alsa.conf"> |
|
|
770 | options snd-emu10k1 index=0 |
|
|
771 | options snd-via82xx index=1 |
|
|
772 | </pre> |
|
|
773 | |
|
|
774 | <p> |
|
|
775 | Or, if you have two cards that use the same driver, you specify them on the same |
|
|
776 | line, using comma-separated numbers. Here's an example for a system with three |
|
|
777 | sound cards, two of which are the same Intel High Definition Audio card. |
|
|
778 | </p> |
|
|
779 | |
|
|
780 | <pre caption="Multiple sound cards in /etc/modprobe.d/alsa.conf"> |
|
|
781 | options snd-ymfpci index=0 |
|
|
782 | options snd-hda-intel index=1,2 |
|
|
783 | </pre> |
|
|
784 | |
|
|
785 | </body> |
|
|
786 | </section> |
|
|
787 | <section> |
|
|
788 | <title>Plugins</title> |
|
|
789 | <body> |
|
|
790 | |
|
|
791 | <p> |
|
|
792 | You may want to install some plugins for extra functionality. |
|
|
793 | <c>alsa-plugins</c> is a collection of useful plugins, which include: PulseAudio |
|
|
794 | output, a sample rate converter, jack (a low-latency audio server), and an |
|
|
795 | encoder that lets you output 6-channel audio through digital S/PDIF connections |
|
|
796 | (both optical and coaxial). You can choose which of its plugins you want |
|
|
797 | installed by adding their USE flags to <path>/etc/portage/package.use</path>. |
|
|
798 | </p> |
|
|
799 | |
|
|
800 | <pre caption="Installing alsa-plugins"> |
|
|
801 | # <i>emerge -avt alsa-plugins</i> |
|
|
802 | </pre> |
|
|
803 | |
|
|
804 | </body> |
|
|
805 | </section> |
|
|
806 | <section> |
| 958 | <title>A Big thank you to...</title> |
807 | <title>A big thank you to...</title> |
| 959 | <body> |
808 | <body> |
| 960 | |
809 | |
| 961 | <p> |
810 | <p> |
| 962 | Everyone who contributed to the earlier version of the Gentoo ALSA Guide: |
811 | Everyone who contributed to the earlier version of the Gentoo ALSA Guide: |
| 963 | Vincent Verleye, Grant Goodyear, Arcady Genkin, Jeremy Huddleston, |
812 | Vincent Verleye, Grant Goodyear, Arcady Genkin, Jeremy Huddleston, |
| 964 | John P. Davis, Sven Vermeulen, Benny Chuang, Tiemo Kieft and Erwin. |
813 | John P. Davis, Sven Vermeulen, Benny Chuang, Tiemo Kieft and Erwin. |
| 965 | </p> |
814 | </p> |
| 966 | |
815 | |
| 967 | </body> |
816 | </body> |
| 968 | </section> |
817 | </section> |