如何将LADSPA插件添加到管道配置中以用于音频后处理?
有许多现有的ladspa插件。
ladspa插件必须在立体声(两声道)音频上工作。
发布于 2021-11-05 12:00:42
现有的pipewire模块可以封装任意数量的ladspa插件,称为filter-chain
首先,我们需要在构建系统中添加过滤器链模块。在yocto bitbake食谱中,它是这样添加的:
RDEPENDS_libpipewire += " \
${PN}-modules-client-node \
+ ${PN}-modules-filter-chain \
.....然后使用过滤器链添加适当的pipewire.conf块,以便在启动pipewire时添加特定的ladspa插件:
{ name = libpipewire-module-filter-chain
args = {
node.name = "processing_name"
node.description = "Specifc postprocessing"
media.name = "Specifc postprocessing"
filter.graph = {
nodes = [
{
type = ladspa
name = plugin_name
plugin = libplugin_name
label = plugin_name #this needs to correspond to ladspa plugin code
control = {
"Some control" = 1234
}
}
]
}
capture.props = {
node.passive = true
media.class = Audio/Sink
audio.channels=2
audio.position=[FL,FR]
}
playback.props = {
media.class = Audio/Source
audio.channels=2
audio.position=[FL,FR]
}
}
}主要的集成点是节点块中的label部分。这必须与ladspa插件代码相对应。我认为可以使用ladspa id来代替。
然后,捕获/回放属性确定ladspa插件是否将具有用于处理的立体声通道,并且它们描述了为输出和输入创建的节点类型。
每个后处理节点都隐式地有两个节点-一个用于输入,另一个用于输出。
然后,需要将ladspa插件与所选的会话管理器连接。在wireplumber的情况下,我们可以使用lua脚本来检测插件节点并将其连接到适当的接收器(例如,alsa接收器)和客户端节点。
示例图表:

https://stackoverflow.com/questions/69852935
复制相似问题