ฉันสามารถผสมเสียงสเตอริโอเป็นโมโนได้หรือไม่


40

ฉันมีลำโพงหนึ่งตัวติดกับคอมพิวเตอร์ซึ่งฉันใช้เป็นเครื่องขยายเสียงหูฟังเป็นส่วนใหญ่ ในบางครั้งฉันจำเป็นต้องใช้มันเป็นลำโพง เป็นไปได้หรือไม่ที่จะเปลี่ยนสัญญาณเสียงจากสเตอริโอเป็นโมโนทั้งระบบอย่างรวดเร็วหรือเป็นปลั๊กอินสำหรับเครื่องเล่นสื่อ?

sound 

ในฐานะที่เป็นบันทึกด้านข้างฉันสามารถทำได้บนโทรศัพท์ Android ของฉันโดยใช้แอป Voodoo Control ซึ่งต้องการเคอร์เนลที่กำหนดเองซึ่งปรับแต่งแอมป์หูฟังที่พบในโทรศัพท์กาแล็กซี่
daithib8

คำตอบ:


57
  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. จากนั้นในการตั้งค่าเสียงเลือก "โมโน" เป็นเอาต์พุต แต่อย่าลืมลดระดับเสียงลงครึ่งหนึ่งเนื่องจากทั้งสองแชนเนลกำลังผสมกันเป็นหนึ่งมิฉะนั้นคุณจะมีการบิดเบือน ในการทดสอบให้เรียกใช้:

    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

ทำงานเหมือนจับใจ! สิ่งที่ดี! ฉันต้องทำเช่นนี้เพราะฉันเหลือเพียงลำโพง 1 ตัว (จากลำโพง 4 ตัวโดยใช้เพียงช่องเสียบด้านหน้า) และ DVD Phone Phone กำลังเล่นเสียงบางอย่างในช่องผิดหรืออะไรบางอย่าง
Bruce van der Kooij

ฉันเป็นคนเดียวที่ได้รับความผิดเพี้ยนของระบบแม้ในระดับเสียงต่ำเมื่อฉันลองทำสิ่งนี้
Severo Raz

2
ตรวจสอบให้แน่ใจเพื่อลดระดับเสียง "แอปพลิเคชัน" (พบได้ในการตั้งค่าเสียง) รวมถึงระดับเสียง "เอาท์พุท" หากคุณเล่นเพลงจากเครื่องเทอร์มินัลคุณสามารถปรับระดับเสียงนั้นได้จากตรงนั้น
daithib8

4
เพียงแค่ความคิดเห็นสำหรับทุกคนที่สับสนเล็กน้อย (เช่นฉัน): เมื่อ @ daithib8 เขียน "หรือเพิ่มอาร์กิวเมนต์เป็น pacmd เป็น /etc/pulse/default.pa" นั่นหมายถึงการทำsudo emacs /etc/pulse/default.pa( sudo nanoหรือสิ่งที่คุณต้องการแก้ไข), เลื่อนลงไปที่จุดสิ้นสุดจากนั้นวางทุกอย่างจากคำสั่งยกเว้นpacmd ส่วนหนึ่งไปยังบรรทัดใหม่ที่ด้านล่างของไฟล์ จากนั้นบันทึกและเริ่มต้นใหม่ :-)
machineghost

1
คุณเป็นผู้ช่วยชีวิตสำหรับผู้ที่สูญเสียการได้ยินด้านเดียว
Omri Barel

14

ฉันได้ตอบ 1 เป็น perl-script ดังนั้นฉันไม่จำเป็นต้องจำคำสั่งเหล่านี้ 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 ได้อย่างไร?
jarno

2
โอ้คุณสามารถแทนที่คำสั่ง exec ด้วยexec "pacmd load-module module-remap-sink sink_name=hono master=$choice channels=1 channel_map=mono >/dev/null";(นี่จะซ่อนเอาท์พุทและใช้การทำแผนที่ที่เรียบง่ายขึ้นเล็กน้อย)
jarno

3

หากคุณกำลังใช้แจ็คคุณสามารถทำได้โดยใช้ patchage (ซึ่งสามารถติดตั้งได้apt-get install patchage) มันมีอินเตอร์เฟซที่ใช้งานง่ายมาก


ดังนั้นคุณจะทำอย่างไรหลังจากติดตั้ง patchage? มีความช่วยเหลือในเมนู "ความช่วยเหลือ" ไม่เป็นและฉันไม่สามารถหาคู่มือหรือบทนำในเว็บไซต์
user800

@ user800: เชื่อมต่อ pulse_sink ซ้าย / ขวาและแจ็คซิงค์ซ้าย / ขวากับระบบการเล่น
_1

1

ดูเหมือนว่าไม่มีวิธีง่ายๆในการทำเช่นนี้

คุณสามารถทำได้โดย proxying เอาต์พุต PulseAudio ทั้งหมดไปยังแจ็คซิงก์ ยุ่งยากเกินไปที่จะใช้อย่างไม่เป็นทางการ ...


0

คุณอาจสามารถใช้เครื่องมือจัดการการตั้งค่าเสียง pulseaudio เพื่อเปลี่ยนสเตอริโอเป็นโมโน หรือบางทีคุณอาจลองแพนกล้องทุกอย่างไปทางลำโพงซ้ายหรือขวา


การปิดระบบจะไม่ทำงาน มันจะไม่ผสมทั้งสองช่องเข้าด้วยกันมันจะปิดเสียงลำโพงตัวใดตัวหนึ่งและรับเอาต์พุตจากช่องใดช่องหนึ่ง
RafałCieślak

ปรากฎว่าเป็นสิ่งที่เดวิดขอ การแพนคือการผสมสองช่องสัญญาณเข้าด้วยกันเพื่อส่งสัญญาณออกไปยังลำโพงตัวเดียวโดยทั่วไปเพื่อสร้างความประทับใจว่าเสียงมาจากทิศทางใดทิศทางหนึ่ง ดังนั้นชื่อแพน (orama) ไอเอ็นจี ตัวแปรนี้เรียกว่าการแพนตรงขึ้นผสมสัญญาณเข้าด้วยกัน แต่ให้ผลลัพธ์ที่เท่ากันกับลำโพงแต่ละตัว เนื่องจากเขาใช้เพียงลำโพงเดียวสิ่งนี้ก็ใช้ได้กับเขาเช่นกัน การควบคุมระดับเสียง 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;

วิธีนี้จะสลับระหว่าง sinks และทำการสตรีมปัจจุบันไปที่ sink ใหม่ (ma

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.