alsa-utils 提供的工具中,arecord 可以用来录音,aplay 可以用来播放,amixer 可以用来控制音量、增益等。
/ # amixer controls
numid=34,iface=MIXER,name='Master Switch'
numid=35,iface=MIXER,name='Master Switch X'
numid=32,iface=MIXER,name='Master Volume'
numid=33,iface=MIXER,name='Master Volume X'
...
可以通过amixer controls 列出alsa下面的控制节点
/ # amixer cget name='Master Volume'
numid=32,iface=MIXER,name='Master Volume'
; type=INTEGER,access=rw------,values=1,min=0,max=100,step=0
: values=100
要查看Master Volume 这个节点更详细的信息,可以输入 amixer cget name='节点名称'
这个节点名称是相关驱动注册,添加到alsa驱动框架中生成的,并不一定是固定的名称。
/ # amixer cset name='Master Volume' 80
numid=32,iface=MIXER,name='Master Volume'
; type=INTEGER,access=rw------,values=1,min=0,max=100,step=0
: values=80
通过amixer cset 命令可以修改节点的值,amixer cset name='节点名称' (新的值)
通过代码实现如下
#include <stdio.h>
#inclu