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