Можно ли микшировать стереофонический звук в моно?

41

У меня есть один динамик рядом с моим компьютером, который я использую в основном как усилитель для наушников. Иногда мне нужно использовать его как громкоговоритель. Можно ли быстро изменить вывод звука со стерео на моно, в масштабе всей системы или в качестве плагина для медиаплеера?


источник
В качестве дополнительного примечания я могу сделать это на своем телефоне Android с помощью приложения Voodoo Control, для которого требуется специальное ядро, которое настраивает усилитель для наушников, найденный в телефонах galaxy
daithib8

Ответы:

59
  1. Найдите название вашего аудио приемника, запустив

    pacmd list-sinks | grep name:
  2. Затем выполните эту команду (стараясь убрать угловые скобки):

    pacmd load-module module-remap-sink sink_name=mono master=<name_of_audio sink_given_by_previous_command> channels=2 channel_map=mono,mono

    или добавить аргумент pacmdв /etc/pulse/default.paчтобы запустить его при запуске.

  3. Затем в настройках звука выберите «Mono» в качестве выхода, но не забудьте уменьшить громкость вдвое, так как два канала смешиваются в один, иначе вы будете иметь искажения. Чтобы проверить, запустите:

    speaker-test -c 2 -t sine

То же самое в одной команде:

pacmd load-module module-remap-sink sink_name=mono master=$(pacmd list-sinks | grep -m 1 -oP 'name:\s<\K.*(?=>)') channels=2 channel_map=mono,mono
  1. Чтобы удалить моноканал, просто используйте:

    pacmd unload-module module-remap-sink
daithib8
источник
Работал как шарм! Хорошая вещь! Я должен был сделать это, потому что у меня остался только 1 динамик (из 4 динамиков, использующих только передний разъем), а DVD-диск телефонной будки воспроизводил какой-то звук в неправильном канале или что-то в этом роде.
Брюс ван дер Коой
Я единственный, кто получает искажения звука системы даже при низкой громкости, когда я пытаюсь это сделать?
Север Раз
2
Обязательно уменьшите громкость «Applications» (также находится в настройках звука), а также громкость «Output». Если вы воспроизводите музыку с терминала, вы можете отрегулировать эту громкость оттуда.
daithib8
4
Просто комментарий для тех, кто немного запутался (как я): когда @ daithib8 пишет "или добавьте аргумент в pacmd в /etc/pulse/default.pa", это означает выполнение sudo emacs /etc/pulse/default.pa( sudo nanoили любой другой редактор, который вы предпочитаете), прокрутите вниз до конца, а затем вставьте все из команды, кроме pacmd части, в новую строку в нижней части файла. Затем сохраните и перезапустите :-)
machineghost
1
Вы спасатель для людей с односторонней потерей слуха.
Омри Барел
14

Я привел ответ 1 в perl-скрипт, поэтому мне не нужно запоминать эти 2 команды:

#!/usr/bin/perl
use strict;

my @choices = ();
my $i = 0;
for (`pacmd list-sinks`) {
    if( /name:.*<(.+)>/) {
        $choices[$i++] = $1;
        print "$i:\t$1\n";
    }
}
my $choice = $choices[<>-1] or die "invalid choice";
exec (qw(pacmd load-module module-remap-sink sink_name=mono),
    "master=$choice",
    qw(channels=2 channel_map=mono,mono));

(Я бы прокомментировал этот ответ, но моя карма слишком мала ;-))

жизнь пирога
источник
Как вы можете скрыть вывод команды pacmd?
Ярно
2
О, вы можете заменить команду exec на exec "pacmd load-module module-remap-sink sink_name=hono master=$choice channels=1 channel_map=mono >/dev/null";(это скрывает вывод и использует немного более простое сопоставление.)
jarno
3

Если вы используете jack , то вы можете сделать это с помощью patchage (который можно установить с помощью apt-get install patchage). У него очень интуитивно понятный интерфейс.

manyids2
источник
Итак, что вы делаете после установки патчажа? В меню «Справка» нет никакой помощи, и я не могу найти руководство или введение на веб-сайте .
user800
@ user800: подключите Pulse_Sink влево / вправо и гнездо приемника влево / вправо к системе воспроизведения_1
Лоран Debricon
1

Кажется, нет простого способа сделать это.

Вы можете сделать это, передавая все выходные данные PulseAudio в приемник Jack. Слишком громоздким, чтобы использовать его случайно ...

Янус Троелсен
источник
0

Вы можете использовать менеджер настроек звука pulseaudio для переключения стерео на моно. Или, возможно, вы можете попробовать просто панорамировать все на левую или правую колонку.


источник
Панорамирование не сработает. Он не будет смешивать оба канала вместе, он отключит один из громкоговорителей и получит только вывод одного из каналов.
Rafał Cieślak
Панорамирование - это то, что просит Дэвид. Панорамирование - это процесс смешивания двух каналов вместе, чтобы вывести их на один динамик, обычно для того, чтобы создать впечатление, что звук исходит из определенного направления. Отсюда и название кастрюли (orama) ing. Вариант этого, называемый панорамированием вверх , микширует каналы вместе, но выводит одинаковое количество результатов для каждого динамика. Поскольку он использует только один динамик, это также будет работать для него. Регулятор громкости Pulseaudio регулирует только баланс, при котором громкость каждого динамика регулируется, но микширование не происходит.
daithib8
0

В качестве дополнения, после того, как вы создали моно-приемник с приведенными выше ответами, вы можете сопоставить этот скрипт с горячей клавишей:

 #!/bin/bash

 if [ "* index: 0" == "$(pacmd list-sinks | grep "*" | sed 's/^ *//')" ];
    then pacmd set-default-sink 1 && notify-send "Mono";
    SINK=1;
 else
    pacmd set-default-sink 0 && notify-send "Stereo";
    SINK=0; 
 fi;
 pacmd list-sink-inputs | grep index | grep -o '[0-9]*' | while read -r line; 
    do pacmd move-sink-input $line $SINK;
 done;

Это переключит между приемниками и переназначит текущий поток в новый приемник (ма

Леонардо Арройо
источник