2012-05-10 22 views
6

我开发了一个小型应用程序,可以在嵌入式系统上使用ALSA驱动程序来录制声音。
现在我在选择想从MIC/Line IN录制的设备时遇到问题。
应用程序设置为在系统启动时启动,但我的默认录制设备设置为MIC。对于我的应用程序的工作,我必须去amixer并将录音设备从MIC设置为Line IN,然后启动我的应用程序。使用来自行的ALSA录制声音IN

你们是否知道一种方法来改变这个记录设备的应用程序或amixer命令的变化,我可以把它放在一个脚本中,在启动时运行它。

我说过这个应用程序在嵌入式系统上运行,我需要一种方式来在应用程序启动之前配置系统。

EDIT1:
这里是我的amixer输出:

[email protected] ~$ amixer 
Simple mixer control 'Headphone',0 
    Capabilities: volume 
    Playback channels: Front Left - Front Right 
    Capture channels: Front Left - Front Right 
    Limits: 0 - 127 
    Front Left: 103 [81%] 
    Front Right: 103 [81%] 
Simple mixer control 'Playback',0 
    Capabilities: volume 
    Playback channels: Front Left - Front Right 
    Capture channels: Front Left - Front Right 
    Limits: 0 - 192 
    Front Left: 192 [100%] 
    Front Right: 192 [100%] 
Simple mixer control 'Capture',0 
    Capabilities: cvolume 
    Capture channels: Front Left - Front Right 
    Limits: Capture 0 - 15 
    Front Left: Capture 15 [100%] 
    Front Right: Capture 15 [100%] 
Simple mixer control 'Capture Vol Reduction',0 
    Capabilities: enum 
    Items: 'No Change' 'Reduced by 6dB' 
    Item0: 'No Change' 
Simple mixer control 'ADC Mux',0 
    Capabilities: enum 
    Items: 'MIC_IN' 'LINE_IN' 
    Item0: 'MIC_IN' 
Simple mixer control 'DAC Mux',0 
    Capabilities: enum 
    Items: 'DAC' 'LINE_IN' 
    Item0: 'DAC' 
Simple mixer control 'MIC GAIN',0 
    Capabilities: enum 
    Items: '0dB' '20dB' '30dB' '40dB' 
    Item0: '0dB' 

非常感谢, 加布里埃尔

回答

2

我终于做到了。我使用“cset”命令使用amixer来完成它。

amixer -c 0 cset numid=7 1 

“-c 0” 是第一声卡
“numid = 7” 是该记录装置被激活。
“1” 是第二intput ......在我的情况下0-MIC 1 LINEIN

amixer info 

获取所有控件与他们numids例如:

amixer info 
Card default 'mxsevk'/'mxs-evk (SGTL5000)' 
    Mixer name : '' 
    Components : '' 
    Controls  : 7 
    Simple ctrls : 7 
[email protected] ~$ amixer contents 
numid=5,iface=MIXER,name='Headphone Volume' 
    ; type=INTEGER,access=rw---,values=2,min=0,max=127,step=0 
    : values=103,103 
numid=7,iface=MIXER,name='ADC Mux' 
    ; type=ENUMERATED,access=rw---,values=1,items=2 
    ; Item #0 'MIC_IN' 
    ; Item #1 'LINE_IN' 
    : values=1 
numid=3,iface=MIXER,name='Capture Vol Reduction' 
    ; type=ENUMERATED,access=rw---,values=1,items=2 
    ; Item #0 'No Change' 
    ; Item #1 'Reduced by 6dB' 
    : values=0 
numid=2,iface=MIXER,name='Capture Volume' 
    ; type=INTEGER,access=rw---,values=2,min=0,max=15,step=0 
    : values=15,15 
numid=4,iface=MIXER,name='Playback Volume' 
    ; type=INTEGER,access=rw---,values=2,min=0,max=192,step=0 
    : values=192,192 
numid=6,iface=MIXER,name='DAC Mux' 
    ; type=ENUMERATED,access=rw---,values=1,items=2 
    ; Item #0 'DAC' 
    ; Item #1 'LINE_IN' 
    : values=0 
numid=1,iface=MIXER,name='MIC GAIN' 
    ; type=ENUMERATED,access=rw---,values=1,items=4 
    ; Item #0 '0dB' 
    ; Item #1 '20dB' 
    ; Item #2 '30dB' 
    ; Item #3 '40dB' 
    : values=0 
0

如果alsactl是可用的,你可以调整输入/输出/平值根据您的喜好和执行

alsactl -f settings.alsa store 

和,反向

alsactl -f settings.alsa restore 
在启动时