Применение фильтра LADSPA только к одному каналу многоканального выхода с помощью Alsa и PulseAudio
Я хочу применить фильтр, особенно glame-bandpass-iir SWH, только к одному из нескольких выходных каналов.
Я все еще в тупике после просмотра примеров, перечисленных ниже. Я уверен, что module-ladspa-sink
а также module-remap-sink
являются решением моих потребностей. Я не могу, однако, понять документы по module-remap-sink
, Для простоты давайте предположим, что цель состоит в том, чтобы front L/R soundcard jack
выводить нефильтрованный звук в то время как rear L/R soundcard jack
выводит отфильтрованное аудио.
sink_name: The name for the new virtual sink.
master: The name of the sink of which channels you're remapping.
channels: Channel count of the new sink.
channel_map: List of the channels that this sink will accept.
master_channel_map: The channels in the master sink, where the channels listed in channel_map will be relayed to. channel_map and master_channel_map must have equal number of channels listed, because the channels will be mapped based on their position in the list, i.e. the first channel in channel_map will be relayed to the first channel in master_channel_map and so on.
remix: Allow remixing of the mono or stereo streams to multiple channels (default is yes; set to "no" if you don't want the stereo stream to be up-mixed to all channels except subwoofer and channels named aux0-aux15).
http://www.freedesktop.org/wiki/Software/PulseAudio/Documentation/User/Modules
Ниже приведен фильтр, который я хочу использовать:
### LADSPA Sink
.ifexists module-ladspa-sink.so
.nofail
load-module module-ladspa-sink sink_name=ladspa_out master=alsa_out plugin=bandpass_iir_1892 label=bandpass_iir control=660.0,440.0,2
.fail
.endif
Может ли кто-нибудь любезно объяснить, как я могу сделать source
-> ladspa_out
-> center jack on soundcard
, В частности, как мне заполнить это?
load-module module-remap-sink filt_sink <?> 2 <?left,?right> <?m_left,?m_right> <?yes>
В случае необходимости я использую встроенный звук i945: alsa.long_card_name = "Intel ICH7 with ALC850 at irq 17"
Я попробовал почти каждую конфигурацию обоих /etc/pulse/default.pa
а также ~/pulse/default.pa
что я могу представить без успеха. Я пытался использовать различные перестановки module-udev-detect
|module-alsa-sink
настроить alsa с 4 или 6 каналами с именами передний левый, передний правый, левый, правый,aux0-4, задний левый, задний правый и module-remap-sink
а также module-combine-sink
как и предполагалось module-ladspa-sink
, Хотя фильтр будет работать на одном, двух или четырех каналах, было невозможно одновременно получать нефильтрованный выход через любые другие каналы.
Я спросил на #pulseaudio на irc и мне сказали, что то, что я хочу, невозможно с одним пульсом. Я был бы очень признателен, если бы кто-то мог указать мне на конкретное решение для работы с пульсом или на решение с другими инструментами.
Благодарю.
1 ответ
Назначение фильтра LADSPA одному аудиоканалу
Мы можем сделать это с тонкой настройкой модуля приемника pulseaudio LADSPA. Этот модуль загружает приемник, к которому будет применен любой плагин LADSP. Обычно применяется применение фильтра ко всем каналам, но мы также можем определить отдельный канал для назначения фильтра путем переназначения и последующего объединения каналов.
Используются следующие команды Pulse Audio:
Получить действительный
sink_name
а такжеchannel_map
:pacmd list-sinks
Загрузите фильтр LADSPA:
load-module module-ladspa-sink sink_name=ladspa_out master=alsa_out plugin=<filer> label=<label> control=<control>
Создайте новый переназначенный приемник:
load-module remap-sink sink_name=<name> master=<sink> channels=<n> master_channel_map=<list> channel_map=<list>
Создайте новую комбинированную раковину:
pacmd load-module module-combine-sink sink_name=<name> sink_properties=device.description=<displayed_name> slaves=<list_of_n_sinks> channels=<n>
Чтобы получить желаемый эффект, нам нужно загрузить фильтр LADSPA для создания ladspa_out-sink с отфильтрованным звуком из данного приемника. Затем нам нужно создать отдельные именованные приемники для каждого аудиоканала. Каналы, к которым мы хотим применить фильтр, должны использовать ladspa_out-sink в качестве мастера, каналы, которые мы должны быть чистыми, должны использовать нефильтрованный приемник как мастера. Наконец, мы снова объединяем отдельные каналы, чтобы дать нам новый комбинированный приемник.
Пример для двух каналов
pacmd load-module module-ladspa-sink sink_name=ladspa_out master=alsa_output.pci-0000_00_14.2.analog-stereo plugin=bandpass_iir_1892 label=bandpass_iir control=660.0,440.0,2
Новая раковина ladspa_out
создается с использованием фильтра bandpass_iir с заданными элементами управления, применяемыми к аудиосигналу от нашего основного приемника (замените его на мастер-приемник из шага 1. выше)
pacmd load-module module-remap-sink sink_name=remapR master=ladspa_out channels=1 master_channel_map=front-right channel_map=front-right
Отфильтрованная раковина с именем remapR
создается для переднего правого аудиоканала из отфильтрованного ladspa_out
тонуть.
pacmd load-module module-remap-sink sink_name=remapL master=alsa_output.pci-0000_00_14.2.analog-stereo channels=1 master_channel_map=front-left channel_map=front-left
Нефильтрованная раковина remapL
для переднего левого аудиоканала создается из нашего нефильтрованного основного приемника, как определено выше.
pacmd load-module module-combine-sink sink_name=combine sink_properties=device.description=myCombine slaves=remapL,remapR channels=2
Новая раковина combine
(или любое другое имя по вашему выбору) будет создан с 2
каналы с использованием нефильтрованной раковины remapL
для левого канала и отфильтрованной раковины remapR
для правильного канала.
Теперь мы можем выбрать этот вновь созданный приемник (отображаемый как "myCombine") в настройках звука, чтобы левый канал не фильтровался, а правый канал фильтровался с помощью фильтра LADSP сверху.
В случае, если у нас более двух каналов, нам придется выполнить эти шаги для всех каналов, заменив каждый канал фильтрованными или нефильтрованными сигналами, чтобы снова объединить их на последнем шаге.