2012-05-10 13 views
6

私は、組み込みシステム上でALSAドライバを使用してサウンドを録音する小さなアプリケーションを開発しました。
MIC/Line INから録音するデバイスを選択する際に問題が発生しました。
アプリケーションはシステムの起動時に起動するように設定されていますが、デフォルトの録音デバイスはMICに設定されています。私のアプリが動作するには、私はamixerに行って、録音デバイスをMICからLine INに設定してから、私のアプリを起動しなければなりません。ライン入力からALSAを使用してサウンドを録音する

あなたは、この記録デバイスを変更するappまたはamixerコマンドからこの変更を行う方法を知っていますか?起動時にスクリプトを実行することができます。

このアプリは組み込みシステムで動作していると言いましたが、アプリが起動する前にシステムをconfする方法が必要ですか?

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" 最初のサウンドカードである
"= 7 numid" がアクティブになり、記録装置です。
"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 

関連する問題