Posso fazer downmix de áudio estéreo para mono?

41

Eu tenho um alto-falante próximo ao meu computador que eu uso principalmente como amplificador de fone de ouvido. Ocasionalmente, preciso usá-lo como um alto-falante. É possível alterar rapidamente a saída de áudio de estéreo para mono, em todo o sistema ou como um plug-in para um media player?


fonte
Como uma nota lateral eu posso fazer isso no meu telefone Android usando o aplicativo de controle Voodoo que requer um kernel personalizado que tweaks o amplificador de auscultadores encontrado nos telefones de galáxias
daithib8

Respostas:

59
  1. Encontre o nome do seu coletor de áudio executando

    pacmd list-sinks | grep name:
  2. Em seguida, execute este comando (tomando cuidado para remover os colchetes angulares):

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

    ou adicionar o argumento para pacmda /etc/pulse/default.papara que seja executado na inicialização.

  3. Em Preferências de som, escolha "Mono" como saída, mas lembre-se de reduzir os volumes pela metade, pois dois canais estão se misturando em um, ou você terá distorção. Para testar, execute:

    speaker-test -c 2 -t sine

A mesma coisa em um único comando:

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. Para remover o canal mono, basta usar:

    pacmd unload-module module-remap-sink
daithib8
fonte
Trabalhou como um encanto! Coisa boa! Eu tive que fazer isso porque só havia 1 alto-falante (dos 4 alto-falantes, usando apenas o conector frontal) e o DVD da cabine telefônica estava reproduzindo algum som no canal errado ou algo assim.
Bruce van der Kooij 15/03
Eu sou o único que obtém distorção do som do sistema, mesmo em volumes baixos, quando tento isso?
Severo Raz
2
Certifique-se de reduzir o volume "Aplicativos" (também encontrado nas Preferências de som) e o volume "Saída". Se você tocar música no terminal, poderá ajustar esse volume a partir daí.
Daithib8
4
Apenas um comentário para quem fica um pouco confuso (como eu fiz): quando o @ daithib8 escreve "ou adiciona o argumento ao pacmd em /etc/pulse/default.pa", isso significa fazer sudo emacs /etc/pulse/default.pa( sudo nanoou qualquer editor que você preferir), rolando para baixo até o final e colando tudo, desde o comando, exceto a pacmd parte para uma nova linha na parte inferior do arquivo. Em seguida, salve e reinicie :-)
machineghost
1
Você é um salva-vidas para pessoas com perda auditiva unilateral.
Omri Barel
14

Coloquei a resposta 1 em um script perl, então não preciso me lembrar desses 2 comandos:

#!/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));

(Eu anotaria essa resposta, mas meu carma é muito baixo ;-))

vida de torta
fonte
Como você pode ocultar a saída do comando pacmd?
jarno 6/09/15
2
Oh, você poderia substituir o comando exec por exec "pacmd load-module module-remap-sink sink_name=hono master=$choice channels=1 channel_map=mono >/dev/null";(Esta saída peles, e usos de mapeamento um pouco mais simples.)
jarno
3

Se você estiver usando jack , poderá fazê-lo usando patchage (que pode ser instalado com apt-get install patchage). Tem uma interface muito intuitiva.

manyids2
fonte
Então, o que você faz depois de instalar o patchage? Não há ajuda no menu "Ajuda" e não consigo encontrar um manual ou introdução no site .
user800
@ user800: conecte pulse_sink à esquerda / direita e jack afunde à esquerda / direita na reprodução do
sistema_1
1

Parece que não há uma maneira fácil de fazer isso.

Você pode fazer isso, executando proxy de todas as saídas do PulseAudio em um coletor de Jack. Muito pesado para ser usado casualmente ...

Janus Troelsen
fonte
0

Você pode usar o gerenciador de configurações de som do pulseaudio para mudar estéreo para mono. Ou talvez você possa apenas tentar mover tudo para o alto-falante esquerdo ou direito.


fonte
Paning não vai funcionar. Ele não mistura os dois canais, silencia um dos alto-falantes e obtém apenas a saída de um dos canais.
Rafał Cieślak
Panning é o que David está pedindo. O movimento panorâmico é o ato de misturar dois canais juntos, a fim de transmiti-los para um alto-falante, geralmente para dar a impressão de que o som está vindo de uma direção específica. Daí o nome pan (orama) ing. Uma variante disso, chamada panning straight up , mistura os canais, mas gera uma quantidade igual do resultado para cada alto-falante. Como ele está usando apenas um alto-falante, isso também funcionaria para ele. O controle de volume do Pulseaudio somente ajusta a balança, onde o volume em cada alto-falante é ajustado, embora nenhuma mistura ocorra.
Daithib8
0

Como um adendo, depois de criar seu coletor mono com as respostas acima, você pode mapear esse script para uma tecla de atalho:

 #!/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;

Isso alternará entre sumidouros e remapeará o fluxo atual para o novo coletor (ma

Leonardo Arroyo
fonte