关键字: alsa, pulseaudio, gnome, gnome-volume, 右下角,喇叭,音量
alsactl, alsa-utils, pulseaudio-utils
一、音频调节工具
alsaunmute (alsa-utils) 是一个脚本,用于初始化ALSA声音设备。它调用了alsactl,并且以init为参数。它没有任何参数,直接就是:
$ alsaunmute它的内容如下:
#!/bin/sh exec /sbin/alsactl \ -E ALSA_CONFIG_PATH=/etc/alsa/alsactl.conf \ --initfile=/lib/alsa/init/00main \ init
如果你的声卡的功能不能在图形界面中进行控制,那么你就应该使用这个 alsactl 工具。
alsa最主要的三个用法如下:
1)alsactl store 命令将当前声卡的驱动程序状态保存到一个配置文件(默认是/etc/asound.state, 可以用 -f 来指定)中去;
2)alsactl restore 则从这个配置文件恢复原来的声卡驱动状态。
3)alsactl init 将声卡的状态初始化为默认状态。
二、配置文件语法
三、ALSA配置文件(/etc/asound.conf)的格式
# 从#开始的地方是注释 # 把其他配置文件包含进来 <filename> # 简单赋值语句 name [=] value [,|;] # 结构体赋值 (第一种风格) name [=] { name1 [=] value [,|;] ... } # 结构体赋值 (第二种风格) name.name1 [=] value [,|;] # 数组赋值 (第一种风格) name [ value0 [,|;] value1 [,|;] ... ] # 数组赋值 (第二种风格) name.0 [=] value0 [,|;] name.1 [=] value1 [,|;] # ****************************************************************************** # 对服务器的定义 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类型定义 pcm_type.NAME { [lib STR] # 共享库文件 (默认 libasound.so) [open STR] # 打开函数 (默认 _snd_pcm_NAME_open) [redirect { # 将这个PCM重定向到另一个PCM [filename STR] # 配置文件说明 name STR # PCM名称说明 }] } # PCM范围类型定义 pcm_scope_type.NAME { [lib STR] # 共享库文件 (默认 libasound.so) [open STR] # 打开函数 (default _snd_pcm_scope_NAME_open) } # PCM 范围定义 pcm_scope.NAME { type STR # Scope type ... } # 从属 PCM 定义 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 定义 pcm.NAME { type STR # Type [comment ANY] # Saved comments # PCM 类型: 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 类型定义 seq_type.NAME { [lib STR] # Library file (default libasound.so) [open STR] # Open function (default _snd_seq_NAME_open) } # SEQ 定义 seq.NAME { type STR # Type [comment ANY] # Saved comments # SEQ types: type hw # Kernel SEQ } # 别名 DEF.NAME1 NAME2 # DEF.NAME1 是 DEF.NAME2 的别名 举例如下: 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>