मैं एमिक्सर के साथ ध्वनि कैसे टॉगल करूं?


48

नेटी सहित मैं हमेशा 'मास्टर' साउंड वॉल्यूम को टॉगल (म्यूट / अनम्यूट) करने में सक्षम था

amixer sset Master toggle

आज्ञा दें कि मैं CompizConfig-Manager में किनारे से जुड़ा हुआ हूं।

अब Oneiric को स्थापित करने के बाद कमांड केवल साउंड को म्यूट करता है लेकिन इसे अनम्यूट नहीं करता है। मैंने इसे टर्मिनल में भी आजमाया, लेकिन यह भी काम नहीं कर रहा है। यह ' मोनो: प्लेबैक 68 [78%] [-14.25dB] [ऑफ] ' से '... [पर]' को बदलता है, लेकिन ध्वनि म्यूट रहती है ताकि मुझे इसे 'साउंड-इंडिकेटर' के माध्यम से अनम्यूट करना पड़े पैनल।

मैं इसे फिर से कैसे काम कर सकता हूं? नैटी के बाद से क्या बदलाव आया? क्या किसी को पता है कि ध्वनि की मात्रा को टॉगल करने के लिए कमांड 'साउंड-इंडिकेटर' का उपयोग करता है?


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

जवाबों:


51

यह मेरे लिए १३.०४ पर काम करता है, म्यूट और अनम्यूट दोनों:

amixer -D pulse set Master 1+ toggle

यह अनम्यूट सुनिश्चित करने के लिए पल्स ऑडियो निर्दिष्ट करता है, सब कुछ अनम्यूट करता है।


लुबंटू 13.10 पर काम किया। WEEKS के लिए यह देख रहे हैं!
luisgonzalez

1
संपादित करें: यह केवल टर्मिनल में एक कमांड के रूप में चलने पर काम करता है। लेकिन जब मैं एक महत्वपूर्ण बंधन के रूप में कॉन्फ़िगर करने का प्रयास करता हूं तो मुझे प्राप्त होता है: होम निर्देशिका सुलभ नहीं: अनुमति से इनकार किया ALSA lib pul.c: 243: (pul_connect) PulseAudio: कनेक्ट करने में असमर्थ: कनेक्शन ने एमिक्सर को अस्वीकार कर दिया: मिक्सर पल्स त्रुटि को
जोड़ा गया

5
यह 1+पैरामीटर के बिना भी बेहतर काम करता है ।
जे। कटज़विंकल

3
अभी भी 17.10 (कृत्रिम) में काम करता है। मैं i3 मीडिया बाइंडिंग के लिए इसका उपयोग कर रहा हूं:bindsym XF86AudioMute exec --no-startup-id amixer -D pulse set Master 1+ toggle
Joel

2
1+ का क्या कारण है?
गायन वीरकुट्टी

16

मैं इस स्क्रिप्ट को वर्कअराउंड के रूप में उपयोग कर रहा हूं:

#!/bin/bash

CURRENT_STATE=`amixer get Master | egrep 'Playback.*?\[o' | egrep -o '\[o.+\]'`

if [[ $CURRENT_STATE == '[on]' ]]; then
    amixer set Master mute
else
    amixer set Master unmute
    amixer set Front unmute
    amixer set Headphone unmute
fi

मैंने amixer scontentsकॉल करने से पहले amixer set Master muteऔर इसे कॉल करने के बाद और GUI का उपयोग करके सब कुछ अनम्यूट करने के लिए यह पता लगाने के लिए कि क्या अनम्यूट होने की आवश्यकता है, का एक अंतर किया ।


  1. टाइप ऑन साउंड के साथ amixer scontents > ~/before(आपको सभी साउंड चैनल्स की स्थिति के साथ एक फ़ाइल मिलेगी)
  2. फिर वॉल्यूम टॉगल करें amixer set Master toggle
  3. के साथ एक दूसरी चैनल स्थिति फ़ाइल बनाएँ amixer scontents > ~/after
  4. amixer set Master toggleपहले टॉगल कमांड से पहले वॉल्यूम को फिर से टॉगल करें, जिससे वॉल्यूम वापस लेवल पर आ जाए
  5. के साथ एक तीसरी फ़ाइल बनाएँ amixer scontents > ~/afterafter

अब आपके पास तीन फाइलें हैं जो आपको बताती हैं कि आपको सामान्य ध्वनि के लिए उपयोग किए जाने वाले साउंड चैंल्स की स्थिति बताई गई है, जिनके द्वारा म्यूट किया गया है amixer set Master toggleऔर जिन्हें फिर से उसी कमांड के साथ अनम्यूट करके फिर से चालू नहीं किया गया है।

फ़ाइलों की आसानी से तुलना करने और अंतर देखने के लिए (जो चैनल मौन हो जाते हैं और बाद में अनम्यूट नहीं होंगे) आप meldसॉफ़्टवेयर सेंटर से उपयोग कर सकते हैं । इसे शुरू करें, तीन फाइलें खोलें और स्क्रॉलबार पर आप देख सकते हैं कि फाइलों के बीच अंतर कहां हैं। उपर्युक्त लिपि में उन्हें जोड़ने के लिए पाए गए चेंनल नामों का उपयोग करें।


दुर्भाग्य से स्क्रिप्ट केवल ध्वनि को म्यूट करती है लेकिन इसे अनम्यूट नहीं करती है
जोशी

शायद ऐसा इसलिए है क्योंकि आपकी चीजों को जिन्हें अनमैटेड किया जाना चाहिए, उन्हें "फ्रंट" और "हेडफोन" नहीं कहा जाता है, जैसे वे मेरे सिस्टम पर हैं।
जिम हंज़िकर

मैंने एक अंतर भी किया और पता चला कि मेरे कंप्यूटर पर काम करने के लिए स्क्रिप्ट के लिए क्या गायब था, अब यह काम करता है। बहुत बहुत धन्यवाद।
जोशी

5

मैं सही ढंग से टॉगल करने के लिए ध्वनि म्यूटिंग नहीं प्राप्त कर सका। चाहे मैं CLI का उपयोग करता हूँ और Amixer sset Master टॉगल में टाइप करता हूं या HP pavillion मीडिया टॉगल कुंजी को हिट करता हूं, मुझे वही परिणाम मिलता है: यदि ध्वनि चालू है और काम कर रही है, तो यह स्वतः ही मास्टर चैनल और PCM चैनल को बंद कर देगा। फिर जब मैं फिर से टॉगल (क्ली या की) मारता हूं तो यह हमेशा मास्टर को चालू करता है, लेकिन पीसीएम को म्यूट कर देता है। मेरी रिग के लिए (HP मंडप DV6 रनिंग Xubuntu Oneric), इसका मतलब है कि मास्टर ऑन के साथ भी ध्वनि बंद है। जब CLI से चलाया जाता है - वही परिणाम। यदि, cli के साथ, मैं PCM को टॉगल करता हूं, तो यह मास्टर चैनल को बंद कर देता है और फिर से इसे वापस चालू नहीं करेगा, हालांकि यह PCM को सही तरीके से टॉगल करता है।

जो स्क्रिप्ट काम करती थी वह थी:

#!/bin/bash
    if amixer -c 0 get Master | grep -q off
then
    amixer set Master unmute
    amixer set PCM unmute

else
    amixer set Master mute
fi

तब मैंने स्क्रिप्ट को ब्राउज़ करने के लिए Xubuntu कीबाइंडिंग (सेटिंग्स> सेटिंग्स मैनेजर> कीबोर्ड> एप्लिकेशन शॉर्टकट) का इस्तेमाल किया (मैंने इसे sndfx.sh कहा और इसे थूनर में राइट क्लिक करके और निष्पादन योग्य टिक किए गए अनुमतियों के तहत निष्पादन योग्य पर सेट किया)। फिर मैंने उस कुंजी को टैप करके HP मंडप क्विक को इसे सौंपा। अब, यह सही ढंग से टॉगल करता है - बहुत बढ़िया। मनाइए कि यह किसी और के लिए सहायक हो।

शांति


2

अगर मैं गलत नहीं हूं, तो यह एक बग है जो अन्य मिक्सर चैनलों को म्यूट और अनम्यूट करने का कारण बनता है। म्यूट करने के लिए, प्रयास करें

एमिक्सर सेट मास्टर 0;

प्रयास को अनम्यूट करने के लिए

एमिक्सर सेट मास्टर 1% +; एमिक्सर सेट मास्टर 7dB +;


ये कमांड काम करते हैं, लेकिन वे मुझे एक एकल कमांड के साथ वॉल्यूम को टॉगल नहीं करने देते हैं जिसे मैं एक किनारे के बंधन के साथ जोड़ सकता हूं।
जोशी

1
यदि किसी से संबंधित बग रिपोर्ट में रुचि है, तो यहां देखें ।
जोशी

2

इस स्क्रिप्ट के टुकड़े को आज़माएं ... यह काम करता है

https://wiki.archlinux.org/index.php/PulseAudio#volume_control


मैं इस बात की पुष्टि करता हूं कि यह मेरे सेटअप पर काम करता है, क्या आप इसे लागू करने के चरणों को लिख सकते हैं, वर्तमान रूप में यह अन्य उपयोगकर्ताओं के लिए अधिक उपयोग नहीं है।
माटेओ

1

यदि आप lix के साथ काम करने वाले अपने रीमोटेकंट्रोल के लिए .lircrc में amixer को बदलना चाहते हैं, तो आप निम्न पंक्तियों को आज़मा सकते हैं। सुनिश्चित करें कि xmacro इंस्टॉल किया गया है। वॉल्यूम-कंट्रोल अब फिर से काम करता है।

begin
        prog = irexec
        button = KEY_VOLUMEUP
        repeat = 1
        delay = 2
        config = echo KeyStrPress XF86AudioRaiseVolume KeyStrRelease XF86AudioRaiseVolume | xmacroplay $DISPLAY
end
begin
        prog = irexec
        button = KEY_VOLUMEDOWN
        repeat = 1
        delay = 2
        config = echo KeyStrPress XF86AudioLowerVolume KeyStrRelease XF86AudioLowerVolume | xmacroplay $DISPLAY
end
begin
        prog = irexec
        button = KEY_MUTE
        config = echo KeyStrPress XF86AudioMute KeyStrRelease XF86AudioMute | xmacroplay $DISPLAY
end

0

ट्रिक यह है कि स्पीकर या हेडफ़ोन की स्थिति को मास्टर चैनल की स्थिति का पालन करें, इस पर निर्भर करता है कि आपने हेडफ़ोन प्लग किया है या नहीं। यह स्क्रिप्ट मेरे लिए मेरे प्राचीन Dell अक्षांश लैपटॉप पर है:

#!/bin/bash

amixer -q sset Master toggle

MASTER_STATE=`amixer get Master | awk -F"dB] " 'NR == 5 {print $2;}'`
HEADPHONES_PLUGGED=`amixer contents | grep -A 2 Headphone\ Jack | awk -F"=" 'NR == 3 {print $2;}'`

if [[ $HEADPHONES_PLUGGED == 'on' ]]; then
    SLAVE="Headphone"
else
    SLAVE="Speaker+LO"
fi

if [[ $MASTER_STATE == '[on]' ]]; then
    amixer -q sset $SLAVE unmute
else
    amixer -q sset $SLAVE mute
fi

आपको अपने कंप्यूटर पर एमिक्सर के साथ अपने चैनलों की जांच करने की आवश्यकता हो सकती है और तदनुसार एसएलईए परिभाषाओं को बदल सकते हैं। HEADPHONES_PLUGGED परिभाषा में "हेडफ़ोन \ जैक" grep स्ट्रिंग भी कुछ और हो सकती है।


-1

ब्रूट बल अनम्यूट:

for i in $(amixer |grep -o \'.*\'); do amixer set $i unmute; done

2
मुझे नहीं लगता कि 80 और अधिक उपकरणों को अनम्यूट करना एक अच्छा विचार है। इसमें माइक्रोफोन शामिल हैं, जिससे अवांछित प्रतिक्रिया लूप हो सकते हैं। एक ऐसा for i in $(amixer |grep -o \'.*\'); do echo amixer set $i unmute; doneदेखने के लिए क्या किया जाना से पहले,।
उपयोगकर्ता अज्ञात
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.