| # 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> |