믹서로 사운드를 어떻게 전환합니까?


48

Natty를 포함하여 항상 'Master'사운드 볼륨을 토글 (음소거 / 음소거 해제) 할 수있었습니다.

amixer sset Master toggle

CompizConfig-Manager의 엣지 바인딩에 연결 한 명령입니다.

이제 Oneiric을 설치 한 후이 명령은 소리를 끄지 만 소리를 끄지 않습니다. 심지어 터미널에서 시도했지만 작동하지 않습니다. ' Mono : Playback 68 [78 %] [-14.25dB] [off] '를 '... [on]'으로 변경하지만 소리는 음소거 상태로 유지되므로 패널.

이 작업을 다시 수행하려면 어떻게해야합니까? Natty 이후로 무엇이 바뀌 었습니까? 누구든지 '사운드 표시기'가 사운드 볼륨을 토글하는 데 사용하는 명령을 알고 있습니까?


그리고 더 이상하게 만들려면 새로 설치하는 대신 Natty에서 Oneiric으로 업그레이드 한 다른 랩톱에서도 여전히 작동합니다.
joschi

답변:


51

이것은 13.04에서 음소거 및 음소거 해제에서 작동합니다.

amixer -D pulse set Master 1+ toggle

음소거를 해제하고 모든 것을 음소거 해제하기 위해 펄스 오디오를 지정합니다.


루 분투 작업 13.10. WEEKS에서 이것을 찾고있었습니다!
luisgonzalez

1
편집 : 터미널에서 명령으로 실행할 때만 작동했습니다. 그러나 키 바인딩으로 구성하려고하면 다음과 같은 결과가 나타납니다. 홈 디렉토리에 액세스 할 수 없음 : 권한이 거부되었습니다. ALSA lib pulse.c : 243 : (pulse_connect) PulseAudio : 연결할 수 없음 : 연결 거부 믹서 : 믹서 연결 펄스 오류 : 연결 거부
luisgonzalez

5
1+매개 변수 없이도 더 잘 작동합니다 .
J. Katzwinkel

3
여전히 17.10에서 작동합니다 (예술적) 나는 이것을 i3 미디어 바인딩에 사용하고있다 :bindsym XF86AudioMute exec --no-startup-id amixer -D pulse set Master 1+ toggle
Joel

2
1+의 이유는 무엇입니까?
Gayan Weerakutti

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

나는의 DIFF했다 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

이제 일반 사운드에 사용되는 사운드 샤넬의 상태를 알려주는 3 개의 파일이 amixer set Master toggle있으며, 동일한 명령으로 다시 음소거 해제하여 다시 음소거 하지 않은 상태입니다.

파일을 쉽게 비교하고 차이 (음소거되어 나중에 음소거 해제되지 않는 채널)를 보려면 meldSoftware Center에서 사용할 수 있습니다 . 그것을 시작하고 세 파일을 열고 스크롤 막대에서 파일 사이의 차이점이있는 곳을 볼 수 있습니다. 찾은 샤넬 이름을 사용하여 위에서 설명한 스크립트에 추가하십시오.


불행하게도 스크립트는 소리를 소거하지만 음소거를 해제하지 않습니다
joschi

음소거 해제해야 할 것들이 내 시스템에있는 것처럼 "앞면"과 "헤드폰"이라고 부르지 않았기 때문일 수 있습니다.
Jim Hunziker

또한 diff를 수행하여 스크립트가 내 컴퓨터에서 작동하지 않는 것이 무엇인지 알았습니다. 이제 작동합니다. 고마워
joschi

5

소리가 제대로 들리지 않아 소리가 나지 않습니다. CLI를 사용하여 Amixer sset Master 토글에 입력하거나 HP pavillion 미디어 토글 키를 눌렀을 때 동일한 결과를 얻습니다. 사운드가 켜져 있고 작동하면 마스터 채널 및 PCM 채널이 자동으로 꺼집니다. 그런 다음 다시 토글 (cli 또는 key)을 누르면 마스터가 항상 켜지지 만 PCM은 음소거됩니다. 내 장비 (Xubuntu Oneric을 실행하는 HP Pavilion DV6)의 경우 마스터를 켠 상태에서도 사운드가 꺼집니다. 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라고 불렀으며 thunar에서 마우스 오른쪽 버튼을 클릭하여 실행 파일로 설정하고 권한 아래에서 실행 파일을 만들었습니다). 그런 다음 해당 키를 눌러 HP Pavilion 빠른 키를 할당했습니다. 이제 올바르게 전환됩니다-굉장합니다. 이것이 다른 누군가를 돕기를 바랍니다.

평화


2

내가 실수하지 않으면 다른 믹서 채널이 음소거되고 음소거 해제되는 버그입니다. 음소거하려면

믹서 세트 마스터 0;

음소거 해제

혼합기 세트 마스터 1 % +; 믹서 세트 마스터 7dB +;


이 명령은 작동하지만 가장자리 바인딩과 결합 할 수있는 단일 명령으로 볼륨을 전환 할 수는 없습니다.
joschi

1
관련 버그 보고서에 관심이있는 사람은 여기를 참조 하십시오 .
joschi


1

lirc로 작업하는 리모컨의 .lircrc에서 믹서를 교체하려면 다음 라인을 시도하십시오. 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 Latitude 노트북에서 나를 위해 수행합니다.

#!/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 정의의 "Headphone \ Jack"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무엇을해야하는지보기 위해 이전에하십시오.
사용자가 알 수 없음
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.