Blame doc/asoundrc.txt

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