2012-05-10 11 views
6

He desarrollado una pequeña aplicación que graba sonido utilizando el controlador ALSA en un sistema integrado.
Ahora tengo un problema al seleccionar el dispositivo que quiero grabar de MIC/Line IN.
La aplicación está configurada para comenzar al iniciarse el sistema, pero mi dispositivo de grabación predeterminado está configurado como MIC. Para que mi aplicación funcione, tengo que ir a amixer y configurar el dispositivo de grabación desde MIC a Line IN y luego iniciar mi aplicación.Grabación de sonido usando ALSA desde Line IN

¿Ustedes saben cómo hacer este cambio desde la aplicación o el comando amixer que cambiará este dispositivo de grabación y puedo ponerlo en un script y ejecutarlo al inicio?

He dicho que esta aplicación se ejecuta en un sistema integrado y necesito una forma de configurar el sistema antes de que se inicie mi aplicación.

EDIT1:
aquí es mi salida 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' 

Muchas gracias, Gabriel

Respuesta

2

Finalmente lo hice. Estoy usando amixer con el comando "cset" para hacerlo.

amixer -c 0 cset numid=7 1 

"-c 0" es la primera tarjeta de sonido
"numid = 7" es el dispositivo de grabación que está activo.
"1" es el segundo insumo de factor ... en mi caso 0-MIC-1 LINEIN

amixer info 

Obtiene todos los controles con su ex 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

Si alsactl está disponible, se puede ajustar de entrada/salida/nivel valores a su gusto y ejecutar

alsactl -f settings.alsa store 

y, a la inversa

alsactl -f settings.alsa restore 

en el arranque.

Cuestiones relacionadas