1# Configuration file syntax 2 3# Include a new configuration file 4<filename> 5 6# Simple assign 7name [=] value [,|;] 8 9# Compound assign (first style) 10name [=] { 11 name1 [=] value [,|;] 12 ... 13} 14 15# Compound assign (second style) 16name.name1 [=] value [,|;] 17 18# Array assign (first style) 19name [ 20 value0 [,|;] 21 value1 [,|;] 22 ... 23] 24 25# Array assign (second style) 26name.0 [=] value0 [,|;] 27name.1 [=] value1 [,|;] 28 29# ****************************************************************************** 30 31# Server definition 32server.NAME { 33 host STR # host where the server is located (if map to local address 34 # server is local, and then it may be started automatically) 35 [socket STR] # PF_LOCAL socket name to listen/connect 36 [port INT] # PF_INET port number to listen/connect 37} 38 39# PCM type definition 40pcm_type.NAME { 41 [lib STR] # Library file (default libasound.so) 42 [open STR] # Open function (default _snd_pcm_NAME_open) 43 [redirect { # Redirect this PCM to an another 44 [filename STR] # Configuration file specification 45 name STR # PCM name specification 46 }] 47} 48 49# PCM scope type definition 50pcm_scope_type.NAME { 51 [lib STR] # Library file (default libasound.so) 52 [open STR] # Open function (default _snd_pcm_scope_NAME_open) 53} 54 55# PCM scope definition 56pcm_scope.NAME { 57 type STR # Scope type 58 ... 59} 60 61# Slave PCM definition 62pcm_slave.NAME { 63 pcm STR # PCM name 64 # or 65 pcm { } # PCM definition 66 format STR # Format 67 channels INT # Channels 68 rate INT # Rate 69 period_time INT # Period time 70 buffer_time INT # Buffer time 71 etc. 72} 73 74# Hook arguments definition 75hook_args.NAME { 76 ... # Arbitrary arguments 77} 78 79# PCM hook type 80pcm_hook_type.NAME { 81 [lib STR] # Library file (default libasound.so) 82 [install STR] # Install function (default _snd_pcm_hook_NAME_install) 83} 84 85# PCM hook definition 86pcm_hook.NAME { 87 type STR # PCM Hook type (see pcm_hook_type) 88 [args STR] # Arguments for install function (see hook_args) 89 # or 90 [args { }] # Arguments for install function 91} 92 93# PCM definition 94pcm.NAME { 95 type STR # Type 96 [comment ANY] # Saved comments 97 98 99# PCM types: 100 type hw # Kernel PCM 101 card INT/STR # Card name or number 102 [device] INT # Device number (default 0) 103 [subdevice] INT # Subdevice number, -1 first available (default -1) 104 mmap_emulation BOOL # enable mmap emulation for ro/wo devices 105 106 107 type hooks # PCM with hooks 108 slave STR # Slave name (see pcm_slave) 109 # or 110 slave { # Slave definition 111 pcm STR # Slave PCM name 112 # or 113 pcm { } # Slave PCM definition 114 } 115 hooks { 116 ID STR # Hook name (see pcm_hook) 117 # or 118 ID { } # Hook definition (see pcm_hook) 119 } 120 121 type plug # Format adjusted PCM 122 slave STR # Slave name (see pcm_slave) 123 # or 124 slave { # Slave definition 125 pcm STR # Slave PCM name 126 # or 127 pcm { } # Slave PCM definition 128 [format STR] # Slave format (default nearest) or "unchanged" 129 [channels INT] # Slave channels (default nearest) or "unchanged" 130 [rate INT] # Slave rate (default nearest) or "unchanged" 131 } 132 route_policy STR # route policy for automatic ttable generation 133 # STR can be 'default', 'average', 'copy', 'duplicate' 134 # average: result is average of input channels 135 # copy: only first channels are copied to destination 136 # duplicate: duplicate first set of channels 137 # default: copy policy, except for mono capture - sum 138 ttable { # Transfer table (bidimensional compound of 139 # cchannels * schannels numbers) 140 CCHANNEL { 141 SCHANNEL REAL # route value (0.0 ... 1.0) 142 } 143 } 144 145 146 type copy # Copy conversion PCM 147 slave STR # Slave name (see pcm_slave) 148 # or 149 slave { # Slave definition 150 pcm STR # Slave PCM name 151 # or 152 pcm { } # Slave PCM definition 153 } 154 155 156 type linear # Linear format conversion PCM 157 type adpcm # IMA-ADPCM format conversion PCM 158 type alaw # A-Law format conversion PCM 159 type mulaw # Mu-Law format conversion PCM 160 slave STR # Slave name (see pcm_slave) 161 # or 162 slave { # Slave definition 163 pcm STR # Slave PCM name 164 # or 165 pcm { } # Slave PCM definition 166 format STR # Slave format 167 } 168 169 170 type rate # Rate conversion PCM 171 slave STR # Slave name (see pcm_slave) 172 # or 173 slave { # Slave definition 174 pcm STR # Slave PCM name 175 # or 176 pcm { } # Slave PCM definition 177 [format STR] # Slave format (default client format) 178 rate INT # Slave rate 179 } 180 181 182 type route # Attenuated static route PCM 183 slave STR # Slave name (see pcm_slave) 184 # or 185 slave { # Slave definition 186 pcm STR # Slave PCM name 187 # or 188 pcm { } # Slave PCM definition 189 [format STR] # Slave format (default client format) 190 [channels INT] # Slave channels (default client channels) 191 } 192 ttable { # Transfer table (bidimensional compound of 193 # cchannels * schannels numbers) 194 CCHANNEL { 195 SCHANNEL REAL # route value (0.0 ... 1.0) 196 } 197 } 198 199 200 type multi # Linked PCMs (exclusive access to selected channels) 201 slaves { # Slaves definitions 202 ID STR # Slave name for slave N (see pcm_slave) 203 # or 204 ID { # Slave definition for slave N 205 pcm STR # Slave PCM name 206 # or 207 pcm { } # Slave PCM definition 208 channels INT # Slave channels 209 } 210 } 211 bindings { # Bindings table 212 N { # Binding for client channel N 213 slave STR # Slave key 214 channel INT # Slave channel 215 } 216 } 217 [master INT] # Define the master slave 218 219 220 type file # File plugin 221 slave STR # Slave name (see pcm_slave) 222 # or 223 slave { # Slave definition 224 pcm STR # Slave PCM name 225 # or 226 pcm { } # Slave PCM definition 227 } 228 file STR # File name 229 # or 230 file INT # File descriptor 231 [format STR] # File format (NYI) 232 [perm INT] # File permission (default 0600) 233 234 type meter # Meter PCM 235 slave STR # Slave name (see pcm_slave) 236 # or 237 slave { # Slave definition or name 238 pcm STR # Slave PCM name 239 # or 240 pcm { } # Slave PCM definition 241 } 242 [frequency INT] # Updates per second 243 scopes { # Scopes 244 ID STR # Scope name (see pcm_scope) 245 # or 246 ID { } # Scope definition (see pcm_scope) 247 } 248 249 250 type droute # Attenuated dynamic route PCM (NYI) 251 slave STR # Slave name (see pcm_slave) 252 # or 253 slave { # Slave definition 254 pcm STR # Slave PCM name 255 # or 256 pcm { } # Slave PCM definition 257 [format STR] # Slave format (default client format) 258 [channels INT] # Slave channels (default client channels) 259 } 260 ctl STR # Ctl name 261 bindings { # Bindings table 262 ID { # Binding entry 263 cchannels { # Client channels 264 C INT # Client channel 265 } 266 schannel { # Slave channels 267 S INT # Slave channel 268 } 269 control STR # Control name of C * S (or C values: only if C == S) 270 } 271 } 272 273 274 type null # Null endpoint plugin 275 [time INT] # Time related or not (NYI) 276 277 278 type shm # Shared memory client PCM 279 server STR # Server name 280 pcm STR # PCM name on server 281 282 283 type share # Share PCM 284 slave STR # Slave name (see pcm_slave) 285 bindings { # Bindings table 286 N INT # Slave channel for client channel N 287 } 288 289 290 type mix # Mix PCM 291 slave STR # Slave name (see pcm_slave) 292 bindings { # Bindings table 293 N INT # Slave channel for client channel N 294 } 295 296 297 type ladspa # LADSPA plugin PCM 298 slave STR # Slave name (see pcm_slave) 299 path STR # Path or paths (delimited with ':') 300 plugins | playback_plugins | capture_plugins { 301 N { # Configuration for LADSPA plugin N 302 id # # LADSPA plugin ID (for example 1043) 303 label STR # LADSPA plugin label (for example 'delay_5s') 304 filename STR # Full filename of .so library with LADPA plugin code 305 policy STR # Policy can be 'none' or 'duplicate' 306 input | output { 307 bindings { 308 C INT or STR # C - channel, INT - audio port index, STR - audio port name 309 } 310 controls { 311 I INT or REAL # I - control port index, INT or REAL - control value 312 } 313 } 314 } 315 } 316 317 type dmix # Direct mixing plugin 318 slave STR # Slave name (see pcm_slave) 319 ipc_key INT # Unique ipc key 320 ipc_perm INT # ipc permissions (default 0600) 321 ipc_gid INT # ipc gid (default -1 = disable) 322 ipc_key_add_uid BOOL # Add current uid to ipc_key 323 bindings { # Bindings table 324 N INT # Slave channel for client channel N 325 } 326 327 type dsnoop # Direct snoop (split one capture stream to more) 328 slave STR # Slave name (see pcm_slave) 329 ipc_key INT # Unique ipc key 330 ipc_perm INT # ipc permissions (default 0600) 331 ipc_gid INT # ipc gid (default -1 = disable) 332 ipc_key_add_uid BOOL # Add current uid to ipc_key 333 bindings { # Bindings table 334 N INT # Slave channel for client channel N 335 } 336 337 type dshare # Share channels from one stream 338 slave STR # Slave name (see pcm_slave) 339 ipc_key INT # Unique ipc key 340 ipc_perm INT # ipc permissions (default 0600) 341 ipc_gid INT # ipc gid (default -1 = disable) 342 ipc_key_add_uid BOOL # Add current uid to ipc_key 343 bindings { # Bindings table 344 N INT # Slave channel for client channel N 345 } 346} 347 348# CTL type definition 349ctl_type.NAME { 350 [lib STR] # Library file (default libasound.so) 351 [open STR] # Open function (default _snd_ctl_NAME_open) 352} 353 354# CTL definition 355ctl.NAME { 356 type STR # Type 357 [comment ANY] # Saved comments 358 359# CTL types 360 type hw 361 card STR/INT # Card name or number 362 363 364 type shm # Shared memory client CTL 365 server STR # Server name 366 ctl STR # CTL name on server 367 368 369} 370 371 372# RAWMIDI type definition 373rawmidi_type.NAME { 374 [lib STR] # Library file (default libasound.so) 375 [open STR] # Open function (default _snd_rawmidi_NAME_open) 376} 377 378# RAWMIDI definition 379rawmidi.NAME { 380 type STR # Type 381 [comment ANY] # Saved comments 382 383# RAWMIDI types: 384 type hw # Kernel RAWMIDI 385 card INT/STR # Card name or number 386 [device] INT # Device number (default 0) 387 [subdevice] INT # Subdevice number, -1 first available (default -1) 388 389 390} 391 392# SEQ type definition 393seq_type.NAME { 394 [lib STR] # Library file (default libasound.so) 395 [open STR] # Open function (default _snd_seq_NAME_open) 396} 397 398# SEQ definition 399seq.NAME { 400 type STR # Type 401 [comment ANY] # Saved comments 402 403# SEQ types: 404 type hw # Kernel SEQ 405 406 407} 408 409# Aliases 410DEF.NAME1 NAME2 # DEF.NAME1 is an alias for DEF.NAME2 411 412Some examples: 413 414pcm.trident { 415 type hw 416 card 0 417 device 0 418} 419 420pcm.ice1712 { 421 type hw 422 card 1 423 device 0 424} 425 426pcm.ice1712_spdif { 427 type plug 428 ttable.0.8 1 429 ttable.1.9 1 430 slave.pcm ice1712 431} 432 433pcm_slave.rs { 434 pcm trident 435 rate 44100 436} 437 438pcm.r { 439 type rate 440 slave rs 441} 442 443pcm.m { 444 type meter 445 slave.pcm plug:trident 446 frequency 50 447 scopes [ 448 { 449 type level 450 } 451 ] 452} 453 454pcm_scope_type.level { 455 lib /home/abramo/scopes/scope-level.so 456} 457 458# an example command is 'aplay -D plug:ladspa <filename>' 459# otherwise, the ladspa plugin expects FLOAT type which 460# is very rare 461pcm.ladspa { 462 type ladspa 463 slave.pcm "plughw:0,0"; 464 path "/home/perex/src/ladspa_sdk/plugins"; 465 plugins [ 466 { 467 label delay_5s 468 input { 469 controls [ 0.8 0.2 ] 470 } 471 } 472 ] 473} 474 475# an example command for dmix plugin to force 44100Hz mixing rate: 476# aplay -D"plug:'dmix:RATE=44100'" <filename> 477# an example command for dmix plugin to force 44100Hz and hw:1,0 output device 478# aplay -Dplug:\'dmix:SLAVE=\"hw:1,0\",RATE=44100\' <filename> 479# an example command for dmix plugin to force 32-bit signed little endian format 480# aplay -D"plug:'dmix:FORMAT=S32_LE'" <filename> 481