jadi, setelah berkeringat darah dan air mata, membaca berton-ton dokumentasi dan mencoba hal-hal selama berhari-hari akhirnya saya punya solusi. tidak bagus, tetapi saya punya satu.
pertama-tama tambahkan ke konfigurasi pulseaudio Anda (dalam kasus saya sudo nano /etc/pulse/default.pa
) konfigurasi berikut:
# create virtual sink named Mic and loopback USB Microphone to virtual sink
load-module module-null-sink sink_name=Mic
load-module module-loopback source=alsa_input.usb-Thomann_SC450USB-00.iec958-stereo sink=Mic source_dont_move=true sink_dont_move=true
set-default-source Mic.monitor
ini menciptakan "null-sink" yang tidak hilang ketika beberapa perangkat terlepas karena itu bukan milik perangkat apa pun, yang juga memiliki sumber monitor yang sesuai yang dapat digunakan TS3 sebagai sumber permanen. kemudian loopback dibuat dari mikrofon ke wastafel nol. sekarang restart pulseaudio:
pulseaudio -k
sekarang Anda perlu memastikan bahwa TS3 menggunakan monitor Mic sebagai sumber secara permanen dengan membuka pavucontrol
dan memastikan bahwa di bawah tab "Rekaman" "TeamSpeak3" terikat dengan "Monitor Output Null" di dropdown.
biasanya ini sudah cukup, tetapi pulseaudio tidak memasang kembali loopback setelah mikrofon terhubung kembali. untuk itu terjadi kita perlu udev.
pertama buat skrip yang bisa dipanggil oleh udev:
sudo nano /usr/local/bin/udev_sound
dan tambahkan skrip berikut:
#!/bin/bash
# check if microphone is mounted already
while ! $(pactl list sources|grep -q 'alsa_input.usb-Thomann_SC450USB-00.iec958-stereo')
do
let "n += 1"
sleep 1
if [ "$n" -eq 10 ]
then break
fi
echo "running"
done
# loopback microphone to null sink
export PULSE_RUNTIME_PATH="/run/user/$(id -u)/pulse/"
pactl load-module module-loopback source=alsa_input.usb-Thomann_SC450USB-00.iec958-stereo sink=Mic source_dont_move=true sink_dont_move=true
sekarang buat skrip dapat dieksekusi:
sudo chmod +x /usr/local/bin/udev_sound
ini akan memeriksa periode waktu 10 detik jika mikrofon terpasang, dan jika ya, buat pulseaudio loopback lagi yang dihapus ketika mikrofon dilepaskan.
sekarang mari kita membuat aturan udev memulai skrip ketika ketika perangkat terpasang kembali:
sudo nano /lib/udev/rules.d/91-someNameYouWillRecogniseAsYours.rules
dengan konten berikut:
ACTION=="add", SUBSYSTEM=="sound", ATTR{id}=="SC450USB", RUN+="/bin/su YOURuSERnAME -c 'screen -d -m /usr/local/bin/udev_sound'"
sekarang mulai ulang udev:
sudo /etc/init.d/udev restart
ini memeriksa apakah perangkat dengan id tertentu ditambahkan (terlampir) dan menjalankan skrip yang baru saja kita buat dengan nama pengguna Anda (jangan lupa untuk mengubahnya). ini penting karena pada kebanyakan sistem pulseaudio dijalankan di userland. screen -d -m
Penting agar skrip dijalankan non-pemblokiran, jika tidak, mikrofon tidak akan dilampirkan sampai skrip benar-benar berjalan.
perintah khusus perangkat Anda kemungkinan besar akan terlihat berbeda, apa "ATTR" dan pengidentifikasi lainnya untuk digunakan tergantung pada perangkat Anda, bagaimana cara mengetahui bahwa dijelaskan jutaan kali online.
ini seharusnya. sekarang setiap kali mikrofon dipasang kembali, skrip menciptakan loopback, dan TS3 semestinya setiap saat mendengarkan monitor null sinks dengan berpikir itu adalah mikrofon asli.
dalam semua langkah ini ganti "alsa_input.usb-Thomann_SC450USB-00.iec958-stereo" dengan apa pun yang namanya perangkat Anda!
secara keseluruhan saya bisa mengatakan saya benci udev. ia memiliki sejuta hal khusus yang ditangani berbeda dari sistem linux normal dan hampir tidak mungkin untuk di-debug. saya tidak pernah ingin melihatnya lagi.
.asoundrc
? Apa pun?