conf: Add basic infrastructure for 2.1 surround sound
[alsa-lib.git] / src / conf / alsa.conf
1 #
2 #  ALSA library configuration file
3 #
4
5 # pre-load the configuration files
6
7 @hooks [
8         {
9                 func load
10                 files [
11                         {
12                                 @func concat
13                                 strings [
14                                         { @func datadir }
15                                         "/alsa.conf.d/"
16                                 ]
17                         }
18                         "/etc/asound.conf"
19                         "~/.asoundrc"
20                 ]
21                 errors false
22         }
23 ]
24
25 # load card-specific configuration files (on request)
26
27 cards.@hooks [
28         {
29                 func load
30                 files [
31                         {
32                                 @func concat
33                                 strings [
34                                         { @func datadir }
35                                         "/cards/aliases.conf"
36                                 ]
37                         }
38                 ]
39         }
40         {
41                 func load_for_all_cards
42                 files [
43                         {
44                                 @func concat
45                                 strings [
46                                         { @func datadir }
47                                         "/cards/"
48                                         { @func private_string }
49                                         ".conf"
50                                 ]
51                         }
52                 ]
53                 errors false
54         }
55 ]
56
57 #
58 # defaults
59 #
60
61 # show all name hints also for definitions without hint {} section
62 defaults.namehint.showall off
63 # show just basic name hints
64 defaults.namehint.basic on
65 # show extended name hints
66 defaults.namehint.extended off
67 #
68 defaults.ctl.card 0
69 defaults.pcm.card 0
70 defaults.pcm.device 0
71 defaults.pcm.subdevice -1
72 defaults.pcm.nonblock 1
73 defaults.pcm.compat 0
74 defaults.pcm.minperiodtime 5000         # in us
75 defaults.pcm.ipc_key 5678293
76 defaults.pcm.ipc_gid audio
77 defaults.pcm.ipc_perm 0660
78 defaults.pcm.dmix.max_periods 0
79 defaults.pcm.dmix.rate 48000
80 defaults.pcm.dmix.format "unchanged"
81 defaults.pcm.dmix.card defaults.pcm.card
82 defaults.pcm.dmix.device defaults.pcm.device
83 defaults.pcm.dsnoop.card defaults.pcm.card
84 defaults.pcm.dsnoop.device defaults.pcm.device
85 defaults.pcm.front.card defaults.pcm.card
86 defaults.pcm.front.device defaults.pcm.device
87 defaults.pcm.rear.card defaults.pcm.card
88 defaults.pcm.rear.device defaults.pcm.device
89 defaults.pcm.center_lfe.card defaults.pcm.card
90 defaults.pcm.center_lfe.device defaults.pcm.device
91 defaults.pcm.side.card defaults.pcm.card
92 defaults.pcm.side.device defaults.pcm.device
93 defaults.pcm.surround21.card defaults.pcm.card
94 defaults.pcm.surround21.device defaults.pcm.device
95 defaults.pcm.surround40.card defaults.pcm.card
96 defaults.pcm.surround40.device defaults.pcm.device
97 defaults.pcm.surround41.card defaults.pcm.card
98 defaults.pcm.surround41.device defaults.pcm.device
99 defaults.pcm.surround50.card defaults.pcm.card
100 defaults.pcm.surround50.device defaults.pcm.device
101 defaults.pcm.surround51.card defaults.pcm.card
102 defaults.pcm.surround51.device defaults.pcm.device
103 defaults.pcm.surround71.card defaults.pcm.card
104 defaults.pcm.surround71.device defaults.pcm.device
105 defaults.pcm.iec958.card defaults.pcm.card
106 defaults.pcm.iec958.device defaults.pcm.device
107 defaults.pcm.modem.card defaults.pcm.card
108 defaults.pcm.modem.device defaults.pcm.device
109 # truncate files via file or tee PCM
110 defaults.pcm.file_format        "raw"
111 defaults.pcm.file_truncate      true
112 defaults.rawmidi.card 0
113 defaults.rawmidi.device 0
114 defaults.rawmidi.subdevice -1
115 defaults.hwdep.card 0
116 defaults.hwdep.device 0
117 defaults.timer.class 2
118 defaults.timer.sclass 0
119 defaults.timer.card 0
120 defaults.timer.device 0
121 defaults.timer.subdevice 0
122
123 #
124 #  PCM interface
125 #
126
127 # redirect to load-on-demand extended pcm definitions
128 pcm.cards cards.pcm
129
130 pcm.default cards.pcm.default
131 pcm.sysdefault cards.pcm.default
132 pcm.front cards.pcm.front
133 pcm.rear cards.pcm.rear
134 pcm.center_lfe cards.pcm.center_lfe
135 pcm.side cards.pcm.side
136 pcm.surround21 cards.pcm.surround21
137 pcm.surround40 cards.pcm.surround40
138 pcm.surround41 cards.pcm.surround41
139 pcm.surround50 cards.pcm.surround50
140 pcm.surround51 cards.pcm.surround51
141 pcm.surround71 cards.pcm.surround71
142 pcm.iec958 cards.pcm.iec958
143 pcm.spdif iec958
144 pcm.hdmi cards.pcm.hdmi
145 pcm.dmix cards.pcm.dmix
146 pcm.dsnoop cards.pcm.dsnoop
147 pcm.modem cards.pcm.modem
148 pcm.phoneline cards.pcm.phoneline
149
150 pcm.hw {
151         @args [ CARD DEV SUBDEV ]
152         @args.CARD {
153                 type string
154                 default {
155                         @func getenv
156                         vars [
157                                 ALSA_PCM_CARD
158                                 ALSA_CARD
159                         ]
160                         default {
161                                 @func refer
162                                 name defaults.pcm.card
163                         }
164                 }
165         }
166         @args.DEV {
167                 type integer
168                 default {
169                         @func igetenv
170                         vars [
171                                 ALSA_PCM_DEVICE
172                         ]
173                         default {
174                                 @func refer
175                                 name defaults.pcm.device
176                         }
177                 }
178         }
179         @args.SUBDEV {
180                 type integer
181                 default {
182                         @func refer
183                         name defaults.pcm.subdevice
184                 }
185         }               
186         type hw
187         card $CARD
188         device $DEV
189         subdevice $SUBDEV
190         hint {
191                 show {
192                         @func refer
193                         name defaults.namehint.extended
194                 }
195                 description "Direct hardware device without any conversions"
196         }
197 }
198
199 pcm.plughw {
200         @args [ CARD DEV SUBDEV ]
201         @args.CARD {
202                 type string
203                 default {
204                         @func getenv
205                         vars [
206                                 ALSA_PCM_CARD
207                                 ALSA_CARD
208                         ]
209                         default {
210                                 @func refer
211                                 name defaults.pcm.card
212                         }
213                 }
214         }
215         @args.DEV {
216                 type integer
217                 default {
218                         @func igetenv
219                         vars [
220                                 ALSA_PCM_DEVICE
221                         ]
222                         default {
223                                 @func refer
224                                 name defaults.pcm.device
225                         }
226                 }
227         }
228         @args.SUBDEV {
229                 type integer
230                 default {
231                         @func refer
232                         name defaults.pcm.subdevice
233                 }
234         }               
235         type plug
236         slave.pcm {
237                 type hw
238                 card $CARD
239                 device $DEV
240                 subdevice $SUBDEV
241         }
242         hint {
243                 show {
244                         @func refer
245                         name defaults.namehint.extended
246                 }
247                 description "Hardware device with all software conversions"
248         }
249 }
250
251 pcm.plug {
252         @args [ SLAVE ]
253         @args.SLAVE {
254                 type string
255         }
256         type plug
257         slave.pcm $SLAVE
258 }
259
260 pcm.shm {
261         @args [ SOCKET PCM ]
262         @args.SOCKET {
263                 type string
264         }
265         @args.PCM {
266                 type string
267         }
268         type shm
269         server $SOCKET
270         pcm $PCM
271 }
272
273 pcm.tee {
274         @args [ SLAVE FILE FORMAT ]
275         @args.SLAVE {
276                 type string
277         }
278         @args.FILE {
279                 type string
280         }
281         @args.FORMAT {
282                 type string
283                 default {
284                         @func refer
285                         name defaults.pcm.file_format
286                 }
287         }
288         type file
289         slave.pcm $SLAVE
290         file $FILE
291         format $FORMAT
292         truncate {
293                 @func refer
294                 name defaults.pcm.file_truncate
295         }
296 }
297
298 pcm.file {
299         @args [ FILE FORMAT ]
300         @args.FILE {
301                 type string
302         }
303         @args.FORMAT {
304                 type string
305                 default {
306                         @func refer
307                         name defaults.pcm.file_format
308                 }
309         }
310         type file
311         slave.pcm null
312         file $FILE
313         format $FORMAT
314         truncate {
315                 @func refer
316                 name defaults.pcm.file_truncate
317         }
318 }
319
320 pcm.null {
321         type null
322         hint {
323                 show {
324                         @func refer
325                         name defaults.namehint.basic
326                 }
327                 description "Discard all samples (playback) or generate zero samples (capture)"
328         }
329 }
330
331 #
332 #  Control interface
333 #
334         
335 ctl.sysdefault {
336         type hw
337         card {
338                 @func getenv
339                 vars [
340                         ALSA_CTL_CARD
341                         ALSA_CARD
342                 ]
343                 default {
344                         @func refer
345                         name defaults.ctl.card
346                 }
347         }
348 }
349 ctl.default ctl.sysdefault
350
351 ctl.hw {
352         @args [ CARD ]
353         @args.CARD {
354                 type string
355                 default {
356                         @func getenv
357                         vars [
358                                 ALSA_CTL_CARD
359                                 ALSA_CARD
360                         ]
361                         default {
362                                 @func refer
363                                 name defaults.ctl.card
364                         }
365                 }
366         }
367         type hw
368         card $CARD
369 }
370
371 ctl.shm {
372         @args [ SOCKET CTL ]
373         @args.SOCKET {
374                 type string
375         }
376         @args.CTL {
377                 type string
378         }
379         type shm
380         server $SOCKET
381         ctl $CTL
382 }
383
384 #
385 #  RawMidi interface
386 #
387
388 rawmidi.default {
389         type hw
390         card {
391                 @func getenv
392                 vars [
393                         ALSA_RAWMIDI_CARD
394                         ALSA_CARD
395                 ]
396                 default {
397                         @func refer
398                         name defaults.rawmidi.card
399                 }
400         }
401         device {
402                 @func igetenv
403                 vars [
404                         ALSA_RAWMIDI_DEVICE
405                 ]
406                 default {
407                         @func refer
408                         name defaults.rawmidi.device
409                 }
410         }
411 }
412
413 rawmidi.hw {
414         @args [ CARD DEV SUBDEV ]
415         @args.CARD {
416                 type string
417                 default {
418                         @func getenv
419                         vars [
420                                 ALSA_RAWMIDI_CARD
421                                 ALSA_CARD
422                         ]
423                         default {
424                                 @func refer
425                                 name defaults.rawmidi.card
426                         }
427                 }
428         }
429         @args.DEV {
430                 type integer
431                 default {
432                         @func igetenv
433                         vars [
434                                 ALSA_RAWMIDI_DEVICE
435                         ]
436                         default {
437                                 @func refer
438                                 name defaults.rawmidi.device
439                         }
440                 }
441         }
442         @args.SUBDEV {
443                 type integer
444                 default -1
445         }
446         type hw
447         card $CARD
448         device $DEV
449         subdevice $SUBDEV
450         hint {
451                 description "Direct rawmidi driver device"
452                 device $DEV
453         }
454 }
455
456 rawmidi.virtual {
457         @args [ MERGE ]
458         @args.MERGE {
459                 type string
460                 default 1
461         }
462         type virtual
463         merge $MERGE
464 }
465
466 #
467 #  Sequencer interface
468 #
469
470 seq.default {
471         type hw
472 }
473
474 seq.hw {
475         type hw
476 }
477
478 #
479 #  HwDep interface
480 #
481
482 hwdep.default {
483         type hw
484         card {
485                 @func getenv
486                 vars [
487                         ALSA_HWDEP_CARD
488                         ALSA_CARD
489                 ]
490                 default {
491                         @func refer
492                         name defaults.hwdep.card
493                 }
494         }
495         device {
496                 @func igetenv
497                 vars [
498                         ALSA_HWDEP_DEVICE
499                 ]
500                 default {
501                         @func refer
502                         name defaults.hwdep.device
503                 }
504         }
505 }
506
507 hwdep.hw {
508         @args [ CARD DEV ]
509         @args.CARD {
510                 type string
511                 default {
512                         @func getenv
513                         vars [
514                                 ALSA_HWDEP_CARD
515                                 ALSA_CARD
516                         ]
517                         default {
518                                 @func refer
519                                 name defaults.hwdep.card
520                         }
521                 }
522         }
523         @args.DEV {
524                 type integer
525                 default {
526                         @func igetenv
527                         vars [
528                                 ALSA_HWDEP_DEVICE
529                         ]
530                         default {
531                                 @func refer
532                                 name defaults.hwdep.device
533                         }
534                 }
535         }
536         type hw
537         card $CARD
538         device $DEV
539 }
540
541 #
542 #  Timer interface
543 #
544
545 timer_query.default {
546         type hw
547 }
548
549 timer_query.hw {
550         type hw
551 }
552
553 timer.default {
554         type hw
555         class {
556                 @func refer
557                 name defaults.timer.class
558         }
559         sclass {
560                 @func refer
561                 name defaults.timer.sclass
562         }
563         card {
564                 @func refer
565                 name defaults.timer.card
566         }
567         device {
568                 @func refer
569                 name defaults.timer.device
570         }
571         subdevice {
572                 @func refer
573                 name defaults.timer.subdevice
574         }
575         hint.description "Default direct hardware timer device"
576 }
577
578 timer.hw {
579         @args [ CLASS SCLASS CARD DEV SUBDEV ]
580         @args.CLASS {
581                 type integer
582                 default {
583                         @func refer
584                         name defaults.timer.class
585                 }
586         }
587         @args.SCLASS {
588                 type integer
589                 default {
590                         @func refer
591                         name defaults.timer.sclass
592                 }
593         }
594         @args.CARD {
595                 type string
596                 default {
597                         @func refer
598                         name defaults.timer.card
599                 }
600         }
601         @args.DEV {
602                 type integer
603                 default {
604                         @func refer
605                         name defaults.timer.device
606                 }
607         }
608         @args.SUBDEV {
609                 type integer
610                 default {
611                         @func refer
612                         name defaults.timer.subdevice
613                 }
614         }
615         type hw
616         class $CLASS
617         sclass $SCLASS
618         card $CARD
619         device $DEV
620         subdevice $SUBDEV
621 }