2012-05-10 11 views
6

से ALSA का उपयोग करके रिकॉर्डिंग ध्वनि मैंने एक छोटा एप्लीकेशन विकसित किया है जो एम्बेडेड सिस्टम पर ALSA ड्राइवर का उपयोग करके ध्वनि रिकॉर्ड करता है।
अब मुझे उस डिवाइस का चयन करने में समस्या है जिसे मैं एमआईसी/लाइन आईएन से रिकॉर्ड करना चाहता हूं।
एप्लिकेशन सिस्टम स्टार्टअप पर शुरू होने के लिए सेट है लेकिन मेरा डिफ़ॉल्ट रिकॉर्डिंग डिवाइस एमआईसी पर सेट है। मेरे ऐप को काम करने के लिए मुझे एमिक्सर पर जाना है और रिकॉर्डिंग डिवाइस को एमआईसी से लाइन आईएन में सेट करना है और फिर मेरा ऐप शुरू करना है।लाइन

क्या आप लोग ऐप या एमिक्सर कमांड से इस बदलाव को करने का तरीका जानते हैं जो इस रिकॉर्डिंग डिवाइस को बदल देगा और मैं इसे स्टार्ट अप में चलाने वाली स्क्रिप्ट में डाल सकता हूं।

क्या मैंने कहा है कि यह ऐप एक एम्बेडेड सिस्टम पर चल रहा है और मुझे अपने ऐप शुरू होने से पहले सिस्टम को सुरक्षित करने का एक तरीका चाहिए।

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" रिकॉर्डिंग डिवाइस है कि सक्रिय है है।

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 
:
"1" मेरे मामले 0-एमआईसी में दूसरा intput है ... 1-LineIn

amixer info 

उनके numids पूर्व के साथ सभी नियंत्रण हो जाता है

0

तो alsactl, आप इनपुट/आउटपुट/स्तर समायोजित कर सकते उपलब्ध है आपकी पसंद के मूल्य और

निष्पादित करें 0

और, विपरीत

alsactl -f settings.alsa restore 
स्टार्टअप पर