ミキサーでサウンドを切り替えるにはどうすればよいですか?


48

Nattyを含めて、「マスター」の音量を常に切り替えることができました(ミュート/ミュート解除)。

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

パルスオーディオを指定してミュートを解除し、すべてのミュートを解除します。


lubuntu 13.10。で作業しました。WEEKSでこれを探しています!
ルイスゴンザレス

1
編集:ターミナルでコマンドとして実行する場合にのみ機能しました。しかし、私は私が得る結合キーとして構成しようとすると:ホームディレクトリにアクセスできません:許可がALSA libにpulse.cを拒否:243:(pulse_connect)のPulseAudio:接続することができません:接続はamixerを拒否した:ミキサーは、パルスエラーを添付:接続が拒否されました
luisgonzalezを

5
1+パラメータがなくても動作します。
J. Katzwinkel

3
17.10(依然として)でも動作します。私は、i3のメディア・バインディングのためにこれを使用しています:bindsym XF86AudioMute exec --no-startup-id amixer -D pulse set Master 1+ toggle
ジョエル

2
1+の理由は何ですか?
ガヤン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

amixer scontents呼び出す前と呼び出したamixer set Master mute後、GUIを使用してすべてのミュートを解除し、ミュートを解除する必要があるものを見つけた後、diffを実行しました。


  1. サウンドオンタイプamixer scontents > ~/before(すべてのサウンドチャンネルのステータスを含むファイルを取得します)
  2. 次に、ボリュームを切り替えます amixer set Master toggle
  3. 2番目のシャネルステータスファイルを作成します。 amixer scontents > ~/after
  4. amixer set Master toggle最初の切り替えコマンドの前のレベルにボリュームを戻すことになっているサウンドを再度切り替えます
  5. 3番目のファイルを作成します amixer scontents > ~/afterafter

これで、通常のサウンドに使用されるサウンドチャンネルのステータスを示す3つのファイルがあります。これらのファイルはミュートされamixer set Master toggle、同じコマンドで再びミュートを解除しても再びオンにはなりません。

ファイルを簡単に比較し、違い(ミュートされ、その後ミュート解除されないチャネル)を確認するにmeldは、ソフトウェアセンターから使用できます。それを開始し、3つのファイルを開き、スクロールバーでファイル間の違いがある場所を確認できます。見つかったシャネル名を使用して、上記のスクリプトに追加します。


残念ながら、このスクリプトは音声をミュートするだけで、ミュートを解除しません
-joschi

これはおそらく、ミュートを解除する必要があるものが、私のシステム上にあるような「フロント」や「ヘッドフォン」と呼ばれないためです。
ジムハンジカー

また、diffを実行して、スクリプトがコンピューターで動作するために欠けていたものを見つけました。どうもありがとう。
joschi

5

音をミュートして正しく切り替えることができませんでした。CLIを使用してAmixer sset Masterトグルを入力するか、HPパビリオンメディアトグルキーを押すかどうかにかかわらず、同じ結果が得られます。その後、トグル(cliまたはキー)をもう一度押すと、常にマスターがオンになりますが、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の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 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

コンピューター上のミキサーでチャンネルを確認し、それに応じてSLAVE定義を変更する必要がある場合があります。また、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.