2012-05-10 6 views
6

Ho sviluppato una piccola applicazione che registra l'audio utilizzando il driver ALSA su un sistema embedded.
Ora ho un problema nel selezionare il dispositivo che voglio registrare da MIC/Line IN.
L'applicazione è impostata per l'avvio all'avvio del sistema, ma il mio dispositivo di registrazione predefinito è impostato su MIC. Per far funzionare la mia app devo andare su amixer e impostare il dispositivo di registrazione da MIC a Line IN e quindi avviare la mia app.Registrazione audio utilizzando ALSA da Line IN

Ragazzi, conoscete un modo per eseguire questa modifica dal comando app o amixer che cambierà questo dispositivo di registrazione e posso inserirlo in uno script e avviarlo all'avvio.

Ho detto che questa app è in esecuzione su un sistema integrato e ho bisogno di un modo per conf il sistema prima che la mia app inizi.

Edit1:
qui è la mia uscita 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' 

Grazie mille, Gabriel

risposta

2

Finalmente l'ho fatto. Sto usando amixer con il comando "cset" per farlo.

amixer -c 0 cset numid=7 1 

"-c 0" è la prima scheda audio
"numid = 7" è il dispositivo di registrazione che è attiva.
"1" è il secondo gli input ... nel mio caso 0-MIC 1-LINEIN

amixer info 

Ottiene tutti i controlli con il loro numids es:

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

Se alsactl è disponibile, è possibile regolare ingresso/uscita/livello valori a tuo piacimento ed esegui

alsactl -f settings.alsa store 

e, in senso inverso

alsactl -f settings.alsa restore 

all'avvio.