• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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
36cards.@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
99defaults.namehint.showall off
100# show just basic name hints
101defaults.namehint.basic on
102# show extended name hints
103defaults.namehint.extended off
104#
105defaults.ctl.card 0
106defaults.pcm.card 0
107defaults.pcm.device 0
108defaults.pcm.subdevice -1
109defaults.pcm.nonblock 1
110defaults.pcm.compat 0
111defaults.pcm.minperiodtime 5000		# in us
112defaults.pcm.ipc_key 5678293
113defaults.pcm.ipc_gid audio
114defaults.pcm.ipc_perm 0660
115defaults.pcm.tstamp_type default
116defaults.pcm.dmix.max_periods 0
117defaults.pcm.dmix.channels 2
118defaults.pcm.dmix.rate 48000
119defaults.pcm.dmix.format unchanged
120defaults.pcm.dmix.card defaults.pcm.card
121defaults.pcm.dmix.device defaults.pcm.device
122defaults.pcm.dsnoop.card defaults.pcm.card
123defaults.pcm.dsnoop.device defaults.pcm.device
124defaults.pcm.front.card defaults.pcm.card
125defaults.pcm.front.device defaults.pcm.device
126defaults.pcm.rear.card defaults.pcm.card
127defaults.pcm.rear.device defaults.pcm.device
128defaults.pcm.center_lfe.card defaults.pcm.card
129defaults.pcm.center_lfe.device defaults.pcm.device
130defaults.pcm.side.card defaults.pcm.card
131defaults.pcm.side.device defaults.pcm.device
132defaults.pcm.surround21.card defaults.pcm.card
133defaults.pcm.surround21.device defaults.pcm.device
134defaults.pcm.surround40.card defaults.pcm.card
135defaults.pcm.surround40.device defaults.pcm.device
136defaults.pcm.surround41.card defaults.pcm.card
137defaults.pcm.surround41.device defaults.pcm.device
138defaults.pcm.surround50.card defaults.pcm.card
139defaults.pcm.surround50.device defaults.pcm.device
140defaults.pcm.surround51.card defaults.pcm.card
141defaults.pcm.surround51.device defaults.pcm.device
142defaults.pcm.surround71.card defaults.pcm.card
143defaults.pcm.surround71.device defaults.pcm.device
144defaults.pcm.iec958.card defaults.pcm.card
145defaults.pcm.iec958.device defaults.pcm.device
146defaults.pcm.modem.card defaults.pcm.card
147defaults.pcm.modem.device defaults.pcm.device
148defaults.pcm.file_format raw
149defaults.pcm.file_truncate true		# truncate files via file or tee PCM
150defaults.rawmidi.card 0
151defaults.rawmidi.device 0
152defaults.rawmidi.subdevice -1
153defaults.hwdep.card 0
154defaults.hwdep.device 0
155defaults.timer.class 2
156defaults.timer.sclass 0
157defaults.timer.card 0
158defaults.timer.device 0
159defaults.timer.subdevice 0
160
161#
162#  PCM interface
163#
164
165pcm.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
214pcm.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
266pcm.plug {
267	@args [ SLAVE ]
268	@args.SLAVE {
269		type string
270	}
271	type plug
272	slave.pcm $SLAVE
273}
274
275pcm.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
288pcm.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
313pcm.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
335pcm.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
347pcm.cards cards.pcm
348
349pcm.default cards.pcm.default
350pcm.sysdefault cards.pcm.default
351pcm.front cards.pcm.front
352pcm.rear cards.pcm.rear
353pcm.center_lfe cards.pcm.center_lfe
354pcm.side cards.pcm.side
355pcm.surround21 cards.pcm.surround21
356pcm.surround40 cards.pcm.surround40
357pcm.surround41 cards.pcm.surround41
358pcm.surround50 cards.pcm.surround50
359pcm.surround51 cards.pcm.surround51
360pcm.surround71 cards.pcm.surround71
361pcm.iec958 cards.pcm.iec958
362pcm.spdif iec958
363pcm.hdmi cards.pcm.hdmi
364pcm.dmix cards.pcm.dmix
365pcm.dsnoop cards.pcm.dsnoop
366pcm.modem cards.pcm.modem
367pcm.phoneline cards.pcm.phoneline
368
369#
370#  Control interface
371#
372
373ctl.default cards.ctl.default
374ctl.sysdefault cards.ctl.default
375
376ctl.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
397ctl.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
414rawmidi.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
440rawmidi.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
483rawmidi.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
497seq.default {
498	type hw
499	hint.description "Default sequencer device"
500}
501
502seq.hw {
503	type hw
504}
505
506#
507#  HwDep interface
508#
509
510hwdep.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
536hwdep.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
578timer_query.default {
579	type hw
580}
581
582timer_query.hw {
583	type hw
584}
585
586timer.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
611timer.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}
659