mirror of
				https://github.com/alsa-project/alsa-lib.git
				synced 2025-10-28 05:40:23 -04:00 
			
		
		
		
	
		
			
				
	
	
		
			480 lines
		
	
	
	
		
			11 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
			
		
		
	
	
			480 lines
		
	
	
	
		
			11 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
| # 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>
 | 
