| # Configuration file syntax | |
| # Include a new configuration file | |
| <filename> | |
| # Simple assign | |
| name [=] value [,|;] | |
| # Compound assign (first style) | |
| name [=] { | |
| name1 [=] value [,|;] | |
| ... | |
| } | |
| # Compound assign (second style) | |
| name.name1 [=] value [,|;] | |
| # Array assign (first style) | |
| name [ | |
| value0 [,|;] | |
| value1 [,|;] | |
| ... | |
| ] | |
| # Array assign (second style) | |
| name.0 [=] value0 [,|;] | |
| name.1 [=] value1 [,|;] | |
| # ****************************************************************************** | |
| # Server definition | |
| server.NAME { | |
| host STR # host where the server is located (if map to local address | |
| # server is local, and then it may be started automatically) | |
| [socket STR] # PF_LOCAL socket name to listen/connect | |
| [port INT] # PF_INET port number to listen/connect | |
| } | |
| # PCM type definition | |
| pcm_type.NAME { | |
| [lib STR] # Library file (default libasound.so) | |
| [open STR] # Open function (default _snd_pcm_NAME_open) | |
| [redirect { # Redirect this PCM to an another | |
| [filename STR] # Configuration file specification | |
| name STR # PCM name specification | |
| }] | |
| } | |
| # PCM scope type definition | |
| pcm_scope_type.NAME { | |
| [lib STR] # Library file (default libasound.so) | |
| [open STR] # Open function (default _snd_pcm_scope_NAME_open) | |
| } | |
| # PCM scope definition | |
| pcm_scope.NAME { | |
| type STR # Scope type | |
| ... | |
| } | |
| # Slave PCM definition | |
| pcm_slave.NAME { | |
| pcm STR # PCM name | |
| # or | |
| pcm { } # PCM definition | |
| format STR # Format | |
| channels INT # Channels | |
| rate INT # Rate | |
| period_time INT # Period time | |
| buffer_time INT # Buffer time | |
| etc. | |
| } | |
| # Hook arguments definition | |
| hook_args.NAME { | |
| ... # Arbitrary arguments | |
| } | |
| # PCM hook type | |
| pcm_hook_type.NAME { | |
| [lib STR] # Library file (default libasound.so) | |
| [install STR] # Install function (default _snd_pcm_hook_NAME_install) | |
| } | |
| # PCM hook definition | |
| pcm_hook.NAME { | |
| type STR # PCM Hook type (see pcm_hook_type) | |
| [args STR] # Arguments for install function (see hook_args) | |
| # or | |
| [args { }] # Arguments for install function | |
| } | |
| # PCM definition | |
| pcm.NAME { | |
| type STR # Type | |
| [comment ANY] # Saved comments | |
| # PCM types: | |
| type hw # Kernel PCM | |
| card INT/STR # Card name or number | |
| [device] INT # Device number (default 0) | |
| [subdevice] INT # Subdevice number, -1 first available (default -1) | |
| mmap_emulation BOOL # enable mmap emulation for ro/wo devices | |
| type hooks # PCM with hooks | |
| slave STR # Slave name (see pcm_slave) | |
| # or | |
| slave { # Slave definition | |
| pcm STR # Slave PCM name | |
| # or | |
| pcm { } # Slave PCM definition | |
| } | |
| hooks { | |
| ID STR # Hook name (see pcm_hook) | |
| # or | |
| ID { } # Hook definition (see pcm_hook) | |
| } | |
| type plug # Format adjusted PCM | |
| slave STR # Slave name (see pcm_slave) | |
| # or | |
| slave { # Slave definition | |
| pcm STR # Slave PCM name | |
| # or | |
| pcm { } # Slave PCM definition | |
| [format STR] # Slave format (default nearest) or "unchanged" | |
| [channels INT] # Slave channels (default nearest) or "unchanged" | |
| [rate INT] # Slave rate (default nearest) or "unchanged" | |
| } | |
| route_policy STR # route policy for automatic ttable generation | |
| # STR can be 'default', 'average', 'copy', 'duplicate' | |
| # average: result is average of input channels | |
| # copy: only first channels are copied to destination | |
| # duplicate: duplicate first set of channels | |
| # default: copy policy, except for mono capture - sum | |
| ttable { # Transfer table (bidimensional compound of | |
| # cchannels * schannels numbers) | |
| CCHANNEL { | |
| SCHANNEL REAL # route value (0.0 ... 1.0) | |
| } | |
| } | |
| type copy # Copy conversion PCM | |
| slave STR # Slave name (see pcm_slave) | |
| # or | |
| slave { # Slave definition | |
| pcm STR # Slave PCM name | |
| # or | |
| pcm { } # Slave PCM definition | |
| } | |
| type linear # Linear format conversion PCM | |
| type adpcm # IMA-ADPCM format conversion PCM | |
| type alaw # A-Law format conversion PCM | |
| type mulaw # Mu-Law format conversion PCM | |
| slave STR # Slave name (see pcm_slave) | |
| # or | |
| slave { # Slave definition | |
| pcm STR # Slave PCM name | |
| # or | |
| pcm { } # Slave PCM definition | |
| format STR # Slave format | |
| } | |
| type rate # Rate conversion PCM | |
| slave STR # Slave name (see pcm_slave) | |
| # or | |
| slave { # Slave definition | |
| pcm STR # Slave PCM name | |
| # or | |
| pcm { } # Slave PCM definition | |
| [format STR] # Slave format (default client format) | |
| rate INT # Slave rate | |
| } | |
| type route # Attenuated static route PCM | |
| slave STR # Slave name (see pcm_slave) | |
| # or | |
| slave { # Slave definition | |
| pcm STR # Slave PCM name | |
| # or | |
| pcm { } # Slave PCM definition | |
| [format STR] # Slave format (default client format) | |
| [channels INT] # Slave channels (default client channels) | |
| } | |
| ttable { # Transfer table (bidimensional compound of | |
| # cchannels * schannels numbers) | |
| CCHANNEL { | |
| SCHANNEL REAL # route value (0.0 ... 1.0) | |
| } | |
| } | |
| type multi # Linked PCMs (exclusive access to selected channels) | |
| slaves { # Slaves definitions | |
| ID STR # Slave name for slave N (see pcm_slave) | |
| # or | |
| ID { # Slave definition for slave N | |
| pcm STR # Slave PCM name | |
| # or | |
| pcm { } # Slave PCM definition | |
| channels INT # Slave channels | |
| } | |
| } | |
| bindings { # Bindings table | |
| N { # Binding for client channel N | |
| slave STR # Slave key | |
| channel INT # Slave channel | |
| } | |
| } | |
| [master INT] # Define the master slave | |
| type file # File plugin | |
| slave STR # Slave name (see pcm_slave) | |
| # or | |
| slave { # Slave definition | |
| pcm STR # Slave PCM name | |
| # or | |
| pcm { } # Slave PCM definition | |
| } | |
| file STR # File name | |
| # or | |
| file INT # File descriptor | |
| [format STR] # File format (NYI) | |
| [perm INT] # File permission (default 0600) | |
| type meter # Meter PCM | |
| slave STR # Slave name (see pcm_slave) | |
| # or | |
| slave { # Slave definition or name | |
| pcm STR # Slave PCM name | |
| # or | |
| pcm { } # Slave PCM definition | |
| } | |
| [frequency INT] # Updates per second | |
| scopes { # Scopes | |
| ID STR # Scope name (see pcm_scope) | |
| # or | |
| ID { } # Scope definition (see pcm_scope) | |
| } | |
| type droute # Attenuated dynamic route PCM (NYI) | |
| slave STR # Slave name (see pcm_slave) | |
| # or | |
| slave { # Slave definition | |
| pcm STR # Slave PCM name | |
| # or | |
| pcm { } # Slave PCM definition | |
| [format STR] # Slave format (default client format) | |
| [channels INT] # Slave channels (default client channels) | |
| } | |
| ctl STR # Ctl name | |
| bindings { # Bindings table | |
| ID { # Binding entry | |
| cchannels { # Client channels | |
| C INT # Client channel | |
| } | |
| schannel { # Slave channels | |
| S INT # Slave channel | |
| } | |
| control STR # Control name of C * S (or C values: only if C == S) | |
| } | |
| } | |
| type null # Null endpoint plugin | |
| [time INT] # Time related or not (NYI) | |
| type shm # Shared memory client PCM | |
| server STR # Server name | |
| pcm STR # PCM name on server | |
| type share # Share PCM | |
| slave STR # Slave name (see pcm_slave) | |
| bindings { # Bindings table | |
| N INT # Slave channel for client channel N | |
| } | |
| type mix # Mix PCM | |
| slave STR # Slave name (see pcm_slave) | |
| bindings { # Bindings table | |
| N INT # Slave channel for client channel N | |
| } | |
| type ladspa # LADSPA plugin PCM | |
| slave STR # Slave name (see pcm_slave) | |
| path STR # Path or paths (delimited with ':') | |
| plugins | playback_plugins | capture_plugins { | |
| N { # Configuration for LADSPA plugin N | |
| id # # LADSPA plugin ID (for example 1043) | |
| label STR # LADSPA plugin label (for example 'delay_5s') | |
| filename STR # Full filename of .so library with LADPA plugin code | |
| policy STR # Policy can be 'none' or 'duplicate' | |
| input | output { | |
| bindings { | |
| C INT or STR # C - channel, INT - audio port index, STR - audio port name | |
| } | |
| controls { | |
| I INT or REAL # I - control port index, INT or REAL - control value | |
| } | |
| } | |
| } | |
| } | |
| type dmix # Direct mixing plugin | |
| slave STR # Slave name (see pcm_slave) | |
| ipc_key INT # Unique ipc key | |
| ipc_perm INT # ipc permissions (default 0600) | |
| ipc_gid INT # ipc gid (default -1 = disable) | |
| ipc_key_add_uid BOOL # Add current uid to ipc_key | |
| bindings { # Bindings table | |
| N INT # Slave channel for client channel N | |
| } | |
| type dsnoop # Direct snoop (split one capture stream to more) | |
| slave STR # Slave name (see pcm_slave) | |
| ipc_key INT # Unique ipc key | |
| ipc_perm INT # ipc permissions (default 0600) | |
| ipc_gid INT # ipc gid (default -1 = disable) | |
| ipc_key_add_uid BOOL # Add current uid to ipc_key | |
| bindings { # Bindings table | |
| N INT # Slave channel for client channel N | |
| } | |
| type dshare # Share channels from one stream | |
| slave STR # Slave name (see pcm_slave) | |
| ipc_key INT # Unique ipc key | |
| ipc_perm INT # ipc permissions (default 0600) | |
| ipc_gid INT # ipc gid (default -1 = disable) | |
| ipc_key_add_uid BOOL # Add current uid to ipc_key | |
| bindings { # Bindings table | |
| N INT # Slave channel for client channel N | |
| } | |
| } | |
| # CTL type definition | |
| ctl_type.NAME { | |
| [lib STR] # Library file (default libasound.so) | |
| [open STR] # Open function (default _snd_ctl_NAME_open) | |
| } | |
| # CTL definition | |
| ctl.NAME { | |
| type STR # Type | |
| [comment ANY] # Saved comments | |
| # CTL types | |
| type hw | |
| card STR/INT # Card name or number | |
| type shm # Shared memory client CTL | |
| server STR # Server name | |
| ctl STR # CTL name on server | |
| } | |
| # RAWMIDI type definition | |
| rawmidi_type.NAME { | |
| [lib STR] # Library file (default libasound.so) | |
| [open STR] # Open function (default _snd_rawmidi_NAME_open) | |
| } | |
| # RAWMIDI definition | |
| rawmidi.NAME { | |
| type STR # Type | |
| [comment ANY] # Saved comments | |
| # RAWMIDI types: | |
| type hw # Kernel RAWMIDI | |
| card INT/STR # Card name or number | |
| [device] INT # Device number (default 0) | |
| [subdevice] INT # Subdevice number, -1 first available (default -1) | |
| } | |
| # SEQ type definition | |
| seq_type.NAME { | |
| [lib STR] # Library file (default libasound.so) | |
| [open STR] # Open function (default _snd_seq_NAME_open) | |
| } | |
| # SEQ definition | |
| seq.NAME { | |
| type STR # Type | |
| [comment ANY] # Saved comments | |
| # SEQ types: | |
| type hw # Kernel SEQ | |
| } | |
| # Aliases | |
| DEF.NAME1 NAME2 # DEF.NAME1 is an alias for DEF.NAME2 | |
| Some examples: | |
| pcm.trident { | |
| type hw | |
| card 0 | |
| device 0 | |
| } | |
| pcm.ice1712 { | |
| type hw | |
| card 1 | |
| device 0 | |
| } | |
| pcm.ice1712_spdif { | |
| type plug | |
| ttable.0.8 1 | |
| ttable.1.9 1 | |
| slave.pcm ice1712 | |
| } | |
| pcm_slave.rs { | |
| pcm trident | |
| rate 44100 | |
| } | |
| pcm.r { | |
| type rate | |
| slave rs | |
| } | |
| pcm.m { | |
| type meter | |
| slave.pcm plug:trident | |
| frequency 50 | |
| scopes [ | |
| { | |
| type level | |
| } | |
| ] | |
| } | |
| pcm_scope_type.level { | |
| lib /home/abramo/scopes/scope-level.so | |
| } | |
| # an example command is 'aplay -D plug:ladspa <filename>' | |
| # otherwise, the ladspa plugin expects FLOAT type which | |
| # is very rare | |
| pcm.ladspa { | |
| type ladspa | |
| slave.pcm "plughw:0,0"; | |
| path "/home/perex/src/ladspa_sdk/plugins"; | |
| plugins [ | |
| { | |
| label delay_5s | |
| input { | |
| controls [ 0.8 0.2 ] | |
| } | |
| } | |
| ] | |
| } | |
| # an example command for dmix plugin to force 44100Hz mixing rate: | |
| # aplay -D"plug:'dmix:RATE=44100'" <filename> | |
| # an example command for dmix plugin to force 44100Hz and hw:1,0 output device | |
| # aplay -Dplug:\'dmix:SLAVE=\"hw:1,0\",RATE=44100\' <filename> | |
| # an example command for dmix plugin to force 32-bit signed little endian format | |
| # aplay -D"plug:'dmix:FORMAT=S32_LE'" <filename> |