ฉันมีลำโพงหนึ่งตัวติดกับคอมพิวเตอร์ซึ่งฉันใช้เป็นเครื่องขยายเสียงหูฟังเป็นส่วนใหญ่ ในบางครั้งฉันจำเป็นต้องใช้มันเป็นลำโพง เป็นไปได้หรือไม่ที่จะเปลี่ยนสัญญาณเสียงจากสเตอริโอเป็นโมโนทั้งระบบอย่างรวดเร็วหรือเป็นปลั๊กอินสำหรับเครื่องเล่นสื่อ?
ฉันมีลำโพงหนึ่งตัวติดกับคอมพิวเตอร์ซึ่งฉันใช้เป็นเครื่องขยายเสียงหูฟังเป็นส่วนใหญ่ ในบางครั้งฉันจำเป็นต้องใช้มันเป็นลำโพง เป็นไปได้หรือไม่ที่จะเปลี่ยนสัญญาณเสียงจากสเตอริโอเป็นโมโนทั้งระบบอย่างรวดเร็วหรือเป็นปลั๊กอินสำหรับเครื่องเล่นสื่อ?
คำตอบ:
ค้นหาชื่อของอ่างเสียงของคุณโดยการเรียกใช้
pacmd list-sinks | grep name:
จากนั้นเรียกใช้คำสั่งนี้ (โปรดระมัดระวังในการลบวงเล็บเหลี่ยมออก):
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
ให้มันทำงานเมื่อเริ่มต้น
จากนั้นในการตั้งค่าเสียงเลือก "โมโน" เป็นเอาต์พุต แต่อย่าลืมลดระดับเสียงลงครึ่งหนึ่งเนื่องจากทั้งสองแชนเนลกำลังผสมกันเป็นหนึ่งมิฉะนั้นคุณจะมีการบิดเบือน ในการทดสอบให้เรียกใช้:
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
หากต้องการลบช่องโมโนเพียงใช้:
pacmd unload-module module-remap-sink
sudo emacs /etc/pulse/default.pa
( sudo nano
หรือสิ่งที่คุณต้องการแก้ไข), เลื่อนลงไปที่จุดสิ้นสุดจากนั้นวางทุกอย่างจากคำสั่งยกเว้นpacmd
ส่วนหนึ่งไปยังบรรทัดใหม่ที่ด้านล่างของไฟล์ จากนั้นบันทึกและเริ่มต้นใหม่ :-)
ฉันได้ตอบ 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));
(ฉันจะทำหมายเหตุประกอบคำตอบนั้น แต่กรรมของฉันคือต่ำ ;-))
exec "pacmd load-module module-remap-sink sink_name=hono master=$choice channels=1 channel_map=mono >/dev/null";
(นี่จะซ่อนเอาท์พุทและใช้การทำแผนที่ที่เรียบง่ายขึ้นเล็กน้อย)
หากคุณกำลังใช้แจ็คคุณสามารถทำได้โดยใช้ patchage (ซึ่งสามารถติดตั้งได้apt-get install patchage
) มันมีอินเตอร์เฟซที่ใช้งานง่ายมาก
ดูเหมือนว่าไม่มีวิธีง่ายๆในการทำเช่นนี้
คุณสามารถทำได้โดย proxying เอาต์พุต PulseAudio ทั้งหมดไปยังแจ็คซิงก์ ยุ่งยากเกินไปที่จะใช้อย่างไม่เป็นทางการ ...
คุณอาจสามารถใช้เครื่องมือจัดการการตั้งค่าเสียง pulseaudio เพื่อเปลี่ยนสเตอริโอเป็นโมโน หรือบางทีคุณอาจลองแพนกล้องทุกอย่างไปทางลำโพงซ้ายหรือขวา
ในฐานะที่เป็นภาคผนวกหลังจากที่คุณสร้างโมโนโมโนของคุณด้วยคำตอบข้างต้นคุณอาจแมปสคริปต์นี้กับฮอตคีย์:
#!/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