如何将 LADSPA 插件应用于 PulseAudio 流?

ænd*_*rük 17 pulseaudio

我想将 LADSPA 插件应用于通过默认 PulseAudio 接收器流式传输的所有内容。我应该如何设置?

Tak*_*kat 19

添加一个 LADSPA 插件到 pulseaudio 是通过module-ladspa-sink 完成的

我们将此模块安装为输出接收器,我们可以在其中定义处理模块并将处理后的信号发送到这个新创建的接收器。

加载 LADSPA 模块:

这个模块可以在运行时加载:

pacmd load-module module-ladspa-sink sink_name=<yourname> master=<sinkname> plugin=<plugin> label=<label> control=<option1>,<option2>,[...]
Run Code Online (Sandbox Code Playgroud)

可以使用以下命令读取主接收器的名称:

 pacmd list-sinks
Run Code Online (Sandbox Code Playgroud)

为已处理的接收器命名,因为它将出现在sink_name. 所有进一步的选项取决于我们使用的插件(见下面的例子)。

为了应用 LADSPA 处理器,我们从“声音设置...”中选择输出接收器,现在可以收听处理后的流。控制选项不能在运行时更改。

卸载 LADSPA 模块:

我们将不得不卸载模块并为不同的选项再次加载它。要找到卸载的模块索引,我们可能会发出:

 pacmd list-modules
Run Code Online (Sandbox Code Playgroud)

要卸载模块,我们要么重新启动声音服务器,pulseaudio -k要么用它的索引号卸载模块#

pacmd unload-module <#>
Run Code Online (Sandbox Code Playgroud)

另请参阅来自 pulseaudio参考维基

启动时加载 LADSPA 模块:

找到合适的选项后,我们可能希望默认运行它。这可以通过将它包含到/etc/pulse/default.pa守护程序在启动时加载的配置文件来完成:

.ifexists module-ladspa-sink.so
.nofail
load-module module-ladspa-sink <options>
.fail
.endif
Run Code Online (Sandbox Code Playgroud)

例子:

这是一个特殊情况的示例,可让您了解如何执行此操作。在这个例子中,我们想使用 TAP-plugin tap_pitch ( tap-plugins 安装抽头插件)。对于此插件,加载到 Pulse Audio 所需的其他选项如下:

plugin=tap_pitch # as from /usr/lib/ladspa/ without .so
label=tap_pitch  # defines which label of a plugin to use
Run Code Online (Sandbox Code Playgroud)

为了找到合适的控制选项,我们浏览了插件文档(这里是TAP plugin pitch shifter)。在那里我们找到了一个很好的表格,其中包含我们必须在control=命令中应用的四个相关控件:

control=<semitone>,<rate>,<dry>,<wet>
Run Code Online (Sandbox Code Playgroud)

在这种情况下,将选项留空将使用默认值。

因此,以下命令将从我的主接收器alsa_output.pci-0000_00_14.2.analog-stereo(替换为您的接收器)到输出接收器向下应用一个八度的音高偏移,ladspa_out半音-12偏移为-50%,速率偏移为%,并使用干(未处理)混音器电平的-90分贝,以及一个湿(处理)的水平0分贝。

pacmd load-module module-ladspa-sink sink_name=ladspa_out master=alsa_output.pci-0000_00_14.2.analog-stereo plugin=tap_pitch label=tap_pitch control=-12,-50,-90,0
Run Code Online (Sandbox Code Playgroud)

对于某些插件,文档可能不完整,或者适当的设置需要相当多的试验才能正确。