Bisakah saya downmix audio stereo ke mono?

41

Saya memiliki satu speaker di sebelah komputer saya yang kebanyakan saya gunakan sebagai penguat headphone. Kadang-kadang saya perlu menggunakannya sebagai pengeras suara. Apakah mungkin untuk dengan cepat mengubah output audio dari stereo ke mono, baik di seluruh sistem atau sebagai plugin untuk pemutar media?


sumber
Sebagai catatan saya dapat melakukan ini di ponsel android saya menggunakan aplikasi Voodoo Control yang membutuhkan kernel khusus yang mengubah headphone amp yang ditemukan di telepon galaksi
daithib8

Jawaban:

59
  1. Temukan nama wastafel audio Anda dengan menjalankan

    pacmd list-sinks | grep name:
  2. Kemudian jalankan perintah ini (hati-hati untuk menghapus tanda kurung siku):

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

    atau menambahkan argumen untuk pacmduntuk /etc/pulse/default.pauntuk memilikinya dijalankan pada startup.

  3. Kemudian di Sound Preferences pilih "Mono" sebagai output, tetapi ingat untuk mengurangi volume hingga setengahnya, karena dua saluran dicampur menjadi satu, atau Anda akan mengalami distorsi. Untuk menguji, jalankan:

    speaker-test -c 2 -t sine

Hal yang sama dalam satu perintah:

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. Untuk menghapus saluran mono, cukup gunakan:

    pacmd unload-module module-remap-sink
daithib8
sumber
Bekerja seperti pesona! Barang bagus! Saya harus melakukan ini karena saya hanya memiliki 1 speaker tersisa (dari 4 speaker, hanya menggunakan konektor depan) dan Phone Booth DVD memutar suara di saluran yang salah atau sesuatu.
Bruce van der Kooij
Apakah saya satu-satunya yang mendapat distorsi suara sistem bahkan pada volume rendah ketika saya mencoba ini?
Severo Raz
2
Pastikan untuk mengurangi volume "Aplikasi" (juga ditemukan dalam Preferensi Suara) serta volume "Output". Jika Anda memutar musik dari terminal, Anda dapat menyesuaikan volume itu dari sana.
daithib8
4
Hanya komentar untuk siapa saja yang sedikit bingung (seperti yang saya lakukan): ketika @ daithib8 menulis "atau menambahkan argumen ke pacmd ke /etc/pulse/default.pa", itu berarti melakukan sudo emacs /etc/pulse/default.pa(atau sudo nanoeditor apa pun yang Anda suka), gulir ke bawah sampai akhir, lalu tempelkan semuanya dari perintah kecuali pacmd bagian ke baris baru di bagian bawah file. Kemudian simpan dan mulai ulang :-)
machineghost
1
Anda adalah penyelamat bagi orang-orang dengan gangguan pendengaran satu sisi.
Omri Barel
14

Saya telah memasukkan jawaban 1 ke dalam skrip perl, jadi saya tidak perlu mengingat 2 perintah ini:

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

(Saya akan menjelaskan jawaban itu, tetapi karma saya terlalu rendah ;-))

hidup pai
sumber
Bagaimana Anda bisa menyembunyikan output dari perintah pacmd?
jarno
2
Oh, Anda bisa mengganti perintah exec dengan exec "pacmd load-module module-remap-sink sink_name=hono master=$choice channels=1 channel_map=mono >/dev/null";(Ini menyembunyikan output, dan menggunakan pemetaan sedikit lebih sederhana.)
jarno
3

Jika Anda menggunakan jack , maka Anda dapat melakukannya dengan menggunakan tambalan (yang dapat diinstal dengan apt-get install patchage). Ini memiliki antarmuka yang sangat intuitif.

manyids2
sumber
Jadi apa yang Anda lakukan setelah menginstal patchage? Tidak ada bantuan di menu "Bantuan" dan saya tidak dapat menemukan manual atau intro di situs web .
user800
@ user800: sambungkan pulse_sink kiri / kanan dan jack sink kiri / kanan ke sistem playback_1
Laurent Debricon
1

Sepertinya tidak ada cara mudah untuk melakukan ini.

Anda dapat melakukannya, dengan mem-proxy semua output PulseAudio ke wastafel Jack. Terlalu rumit untuk digunakan dengan santai ...

Janus Troelsen
sumber
0

Anda mungkin dapat menggunakan manajer pengaturan suara pulseaudio untuk mengubah stereo ke mono. Atau mungkin Anda bisa mencoba hanya menggeser semuanya ke speaker kiri atau kanan.


sumber
Paning tidak akan berhasil. Itu tidak akan mencampur kedua saluran bersama-sama, itu akan membisukan salah satu speaker dan hanya mengambil output dari salah satu saluran.
Rafał Cieślak
Panning adalah yang diminta oleh David. Panning adalah tindakan mencampur dua saluran bersama untuk menghasilkan mereka ke satu speaker, biasanya untuk memberi kesan bahwa suara datang dari arah tertentu. Karenanya nama pan (orama) ing. Varian ini, yang disebut panning straight up , mencampur saluran bersama-sama tetapi menghasilkan jumlah hasil yang sama untuk masing-masing pembicara. Karena dia hanya menggunakan satu pembicara, ini juga akan bekerja untuknya. Kontrol volume Pulseaudio hanya mengatur keseimbangan, di mana volume pada masing-masing speaker disesuaikan meskipun tidak terjadi pencampuran.
daithib8
0

Sebagai tambahan, setelah membuat mono sink dengan jawaban di atas, Anda dapat memetakan skrip ini ke hotkey:

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

Ini akan beralih antara sink dan memetakan kembali aliran saat ini ke sink baru (ma

Leonardo Arroyo
sumber