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