-
Notifications
You must be signed in to change notification settings - Fork 0
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Fix duplicate URI breaking LV2 compilation, fix broken cmake config for packaging #1
Conversation
You can't use the same URI for two different plugins lv2ls lilv_world_add_plugin(): warning: Duplicate plugin <https://github.com/werman/noise-suppression-for-voice> lilv_world_add_plugin(): warning: ... found in file:///usr/lib64/lv2/rnnoise_mono.lv2/ lilv_world_add_plugin(): warning: ... and file:///usr/lib64/lv2/rnnoise_stereo.lv2/ (ignored)
See also: werman#158 and werman#170 |
Don't use march=native/mtune=native because we might be building on a different system to the one we execute on (eg: packaging). User can set arch/tune flags as appropriate.
I see github has automatically included another change I made but had intended to upstream separately (annoying, but it's there now....) - removing the compiler flags to build for the native CPU. This is a nice idea if we are building on the machine we will run on, but breaks the plugin for packaging, since it will tune for the packaging server's CPU, and possibly won't run on the CPU of people installing that package. Users can set the flags by |
Updating the docs to reflect the changes made to remove march=native from the cmake scripts.
Updated the readme since github automagically rolled these changes together, I'd better document it. |
Thank you for your contribution! |
Thank you very much for the new binaries. Somehow this new
|
It seems you have installed the new version to a different location Pipewire's configuration searches for the provided name, appends |
Thank you @pallaswept. The configuration path did not change from that of the original .so and context.modules = [
{ name = libpipewire-module-filter-chain
args = {
node.description = "Noise Canceling source"
media.name = "Noise Canceling source"
filter.graph = {
nodes = [
{
type = ladspa
name = rnnoise
plugin = /home/konfekt/.config/pipewire/lib/ladspa/librnnoise_ladspa.so
label = noise_suppressor_mono
control = {
"VAD Threshold (%)" = 50.0
"VAD Grace Period (ms)" = 200
"Retroactive VAD Grace (ms)" = 0
}
}
]
}
capture.props = {
node.name = "capture.rnnoise_source"
node.passive = true
audio.rate = 48000
}
playback.props = {
node.name = "rnnoise_source"
media.class = Audio/Source
audio.rate = 48000
}
}
}
] To be sure, there's also
results in the same no file found error. In any event, it works fine with the original |
This implies that the file's location changed.
This is still invalid syntax I'm sorry! you want
Pipewire will append the ".so" for you, then search the ladspa plugin path. This new code definitely builds and runs without error here when following upstream documentation for locating the file, as per the above. In spite of this being my fix for lv2, I'm using the ladspa version still, since I've found it to have a smaller buffer requirement of pipewire. I expect that it will work by using the full path, if the file exists at that location, but I can't say for sure, because I've not tried it, and the doc doesn't mention it.
It suggests that the .so file is not present in that same location. I don't see any need to modify your configuration, if it works, you should just be able to replace the .so file, and it should continue to work. Perhaps you can use |
Thank you. Somehow this $ listplugins | grep -i noise ~
/usr/lib64/ladspa/noise.so:
White Noise Source (1050/noise_white)
Noise Source (White) (1069/noise_source_white)
Pink Noise (Interpolated) (1841/pink_interpolated_audio)
Pink Noise (full frequency range) (1844/pink_full_frequency)
Pink Noise (sample and hold) (1843/pink_sh)
/usr/lib64/ladspa/tap_pinknoise.so:
TAP Pink/Fractal Noise (2155/tap_pinknoise) With the original one:
|
That listplugins tool is part of the ladspa SDK so something might be wrong with the file (ie corruption of the local copy of the file?) if it's not working there. This output was obtained with a copy of that build you linked above.
My MD5 sum for that .so file is |
I can confirm these md5 hashes:
Maybe it has to do with an Ubuntu build not being recognized on Opensuse? |
Thank you and sorry for taking your time, it is this common libc dependency issue:
versus
It does not tell which libc version the original file was linked to. I suspect it to be 2.31 |
Thanks for the SIMD upgrade, very nice! Perhaps I can give a little something back.
You can't use the same URI for two different plugins:
There may be more fancy ways to deal with this, but I tried to stay as close to your upstream as possible, keep it simple, effective, and minimal in change. This just adds an anchor to the URI, (ie, https://github.com/werman/noise-suppression-for-voice - for both plugins, which fails - becomes https://github.com/werman/noise-suppression-for-voice#1 for mono and https://github.com/werman/noise-suppression-for-voice#2 for stereo). The anchor doesn't actually exist in the URL, this has no ill effect on the plugin at all, the page still loads fine if you try to load it, but it does give the mono and stereo plugins different URIs, so they can both load, and that means the stereo LV2 plugin is actually available, which, without this change, it isn't.