54 votes

Puis-je mixer un son stéréo en mono ?

J'ai une enceinte à côté de mon ordinateur que j'utilise principalement comme amplificateur de casque. À l'occasion, j'ai besoin de l'utiliser comme haut-parleur. Est-il possible de faire passer rapidement la sortie audio de stéréo à mono, soit à l'échelle du système, soit sous forme de plugin pour un lecteur multimédia ?

83voto

Scott Reynen Points 2964
  1. Trouvez le nom de votre puits audio en exécutant

    pacmd list-sinks | grep name:
  2. Exécutez ensuite cette commande (en prenant soin de supprimer les parenthèses angulaires du résultat de la commande précédente) :

    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 ajouter

    load-module module-remap-sink sink_name=mono master=NAME_OF_AUDIO_SINK_GIVEN_BY_PREVIOUS_COMMAND channels=2 channel_map=mono,mono

à /etc/pulse/default.pa pour qu'il soit exécuté au démarrage.

  1. Ensuite, dans Préférences sonores choisissez "Mono" comme sortie, mais n'oubliez pas de réduire les volumes de moitié, puisque deux canaux sont mélangés en un seul, sinon vous aurez de la distorsion. Pour tester, lancez :

    speaker-test -c 2 -t sine

La même chose en une seule commande :

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. Pour supprimer le canal mono, il suffit d'utiliser :

    pacmd unload-module module-remap-sink

17voto

Zev Spitz Points 2402

J'ai intégré la réponse 1 dans un perl-script, donc je n'ai pas besoin de me souvenir de ces 2 commandes :

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

(J'aurais bien annoté cette réponse, mais mon karma est trop faible ;-) )

4voto

manyids2 Points 41

Si vous utilisez jack vous pouvez le faire en utilisant patchage (qui peut être installé avec l'option apt-get install patchage ). Il dispose d'une interface très intuitive.

1voto

Janus Troelsen Points 2558

Il semble qu'il n'y ait pas de moyen facile de le faire.

Vous pouvez cependant le faire, en envoyant par procuration toutes les sorties PulseAudio vers un Jack sink. Trop encombrant pour être utilisé de manière occasionnelle...

1voto

Leonardo Arroyo Points 111

En complément, après avoir créé votre sink mono avec les réponses ci-dessus, vous pouvez mapper ce script à une touche de raccourci :

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

Cela va basculer entre les puits et remapper le flux actuel vers le nouveau puits (ma

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X