wwmm / easyeffects

Limiter, compressor, convolver, equalizer and auto volume and many other plugins for PipeWire applications
GNU General Public License v3.0
6.58k stars 270 forks source link

Nothing works, tons of errors on start up #2031

Closed ghost closed 1 year ago

ghost commented 1 year ago

EasyEffects Version

6.2.4

What package are you using?

Other

Distribution

Void Linux

Describe the bug

Running easyeffects or easyeffects -r from the command line causes a few thousands warnings to be dumped. Also nothing works afterwards. I can add a plugin, but it has no effect whatsoever. If I use the -r flag, I also get a segfault just for added mirth.

$ pactl info
Server String: /run/user/1000/pulse/native
Library Protocol Version: 35
Server Protocol Version: 35
Is Local: yes
Client Index: 3382
Tile Size: 65472
User Name: ****
Host Name: ****
Server Name: PulseAudio (on PipeWire 0.3.61)
Server Version: 15.0.0
Default Sample Specification: float32le 2ch 48000Hz
Default Channel Map: front-left,front-right
Default Sink: alsa_output.usb-GeneralPlus_USB_Audio_Device-00.analog-stereo
Default Source: alsa_input.usb-GeneralPlus_USB_Audio_Device-00.mono-fallback
Cookie: fcdb:7b81

My distribution doesn't readily supply lsp-plugins, but I've tried every other method of getting them that is valid (building from source, getting the package from the void-packages repo, etc). There was never any change in behavior with any method I tried.

Expected Behavior

No response

Debug Log

Debug Log
[run.log](https://github.com/wwmm/easyeffects/files/10203260/run.log)

Additional Information

No response

wwmm commented 1 year ago

Follow the step number 3 in this link https://github.com/wwmm/easyeffects/wiki/Reporting-Bugs so we can see some logs besides the warnings about missing plugins you already have. As far as I can see besides lsp-plugins you also do not have calf plugins. So the vast majority of EasyEffects plugins are not going to work.

If I use the -r flag, I also get a segfault just for added mirth.

That is strange indeed. Does EasyEffects crash if you try to reset using its Reset Settings function in the preferences menu?

My distribution doesn't readily supply lsp-plugins, but I've tried every other method of getting them that is valid (building from source, getting the package from the void-packages repo, etc). There was never any change in behavior with any method I tried.

Where did you install lsp-plugins? The lilv library used to find LV2 plugins isn't very smart when it comes to the libraries location. If Void is putting things in a custom path lilv may not be able to find it without setting a custom LV2 path environmental variable.

ghost commented 1 year ago
$ G_MESSAGES_DEBUG=easyeffects easyeffects &> run.log

Output: run.log

While the GUI was open, I clicked Reset Settings. No crash or log message was generated as near as I can tell.

I've run these commands to get calf and lsp-plugins:

$ sudo xbps-install calf
$ ./xbps-src pkg lsp-plugins && xi lsp-plugins

The ./xbps-src and xi bit is only valid after adding this. Both install without errors or warnings, same behavior in easyeffects.

wwmm commented 1 year ago

The ./xbps-src and xi bit is only valid after adding this.

The script seems to be installing under /usr/lib/lv2. What is done by almost all distributions. So things should be working. Unless on Void /usr/lib/lv2 is inside some kind of sandbox. Does the command lv2ls see the plugins?

ghost commented 1 year ago

Here's the command output with a bad environment variable LV2_PATH=/home to see that it can fail:

$ LV2_PATH=/home lv2ls
error: failed to open file /home/adam/manifest.ttl (No such file or directory)
lilv_world_load_file(): error: Error loading file `file:///home/adam/manifest.ttl'
lilv_world_load_bundle(): error: Error reading file:///home/adam/manifest.ttl
error: failed to open file /home/lost+found/manifest.ttl (Permission denied)
lilv_world_load_file(): error: Error loading file `file:///home/lost+found/manifest.ttl'
lilv_world_load_bundle(): error: Error reading file:///home/lost+found/manifest.ttl

Here's the command output with LV2_PATH=/usr/lib/lv2:

$ LV2_PATH=/usr/lib/lv2 lv2ls
http://calf.sourceforge.net/plugins/Analyzer
http://calf.sourceforge.net/plugins/BassEnhancer
http://calf.sourceforge.net/plugins/CompensationDelay
http://calf.sourceforge.net/plugins/Compressor
http://calf.sourceforge.net/plugins/Crusher
http://calf.sourceforge.net/plugins/Deesser
http://calf.sourceforge.net/plugins/Emphasis
http://calf.sourceforge.net/plugins/EnvelopeFilter
http://calf.sourceforge.net/plugins/Equalizer12Band
http://calf.sourceforge.net/plugins/Equalizer30Band
http://calf.sourceforge.net/plugins/Equalizer5Band
http://calf.sourceforge.net/plugins/Equalizer8Band
http://calf.sourceforge.net/plugins/Exciter
http://calf.sourceforge.net/plugins/Filter
http://calf.sourceforge.net/plugins/Filterclavier
http://calf.sourceforge.net/plugins/Flanger
http://calf.sourceforge.net/plugins/Fluidsynth
http://calf.sourceforge.net/plugins/Gate
http://calf.sourceforge.net/plugins/HaasEnhancer
http://calf.sourceforge.net/plugins/Limiter
http://calf.sourceforge.net/plugins/MonoCompressor
http://calf.sourceforge.net/plugins/MonoInput
http://calf.sourceforge.net/plugins/Monosynth
http://calf.sourceforge.net/plugins/MultiChorus
http://calf.sourceforge.net/plugins/MultiSpread
http://calf.sourceforge.net/plugins/MultibandCompressor
http://calf.sourceforge.net/plugins/MultibandEnhancer
http://calf.sourceforge.net/plugins/MultibandGate
http://calf.sourceforge.net/plugins/MultibandLimiter
http://calf.sourceforge.net/plugins/Organ
http://calf.sourceforge.net/plugins/Phaser
http://calf.sourceforge.net/plugins/Pitch
http://calf.sourceforge.net/plugins/Pulsator
http://calf.sourceforge.net/plugins/Reverb
http://calf.sourceforge.net/plugins/ReverseDelay
http://calf.sourceforge.net/plugins/RingModulator
http://calf.sourceforge.net/plugins/RotarySpeaker
http://calf.sourceforge.net/plugins/Saturator
http://calf.sourceforge.net/plugins/SidechainCompressor
http://calf.sourceforge.net/plugins/SidechainGate
http://calf.sourceforge.net/plugins/SidechainLimiter
http://calf.sourceforge.net/plugins/StereoTools
http://calf.sourceforge.net/plugins/TapeSimulator
http://calf.sourceforge.net/plugins/TransientDesigner
http://calf.sourceforge.net/plugins/VintageDelay
http://calf.sourceforge.net/plugins/Vinyl
http://calf.sourceforge.net/plugins/Vocoder
http://calf.sourceforge.net/plugins/Wavetable
http://calf.sourceforge.net/plugins/XOver2Band
http://calf.sourceforge.net/plugins/XOver3Band
http://calf.sourceforge.net/plugins/XOver4Band
http://lv2plug.in/plugins/eg-amp
http://lv2plug.in/plugins/eg-fifths
http://lv2plug.in/plugins/eg-metro
http://lv2plug.in/plugins/eg-midigate
http://lv2plug.in/plugins/eg-params
http://lv2plug.in/plugins/eg-sampler
http://lv2plug.in/plugins/eg-scope#Mono
http://lv2plug.in/plugins/eg-scope#Stereo

Running the command without touching the environment works the same as if I specify the correct one.

ghost commented 1 year ago

Also, here's the filesystem tree of /usr/lib/lv2:

$ tree /usr/lib/lv2
/usr/lib/lv2
├── atom.lv2
│   ├── atom-test-utils.c
│   ├── atom-test.c
│   ├── atom.h
│   ├── atom.meta.ttl
│   ├── atom.ttl
│   ├── forge-overflow-test.c
│   ├── forge.h
│   ├── manifest.ttl
│   └── util.h
├── buf-size.lv2
│   ├── buf-size.h
│   ├── buf-size.meta.ttl
│   ├── buf-size.ttl
│   └── manifest.ttl
├── calf.lv2
│   ├── Analyzer.ttl
│   ├── BassEnhancer.ttl
│   ├── CompensationDelay.ttl
│   ├── Compressor.ttl
│   ├── Crusher.ttl
│   ├── Deesser.ttl
│   ├── Emphasis.ttl
│   ├── EnvelopeFilter.ttl
│   ├── Equalizer12Band.ttl
│   ├── Equalizer30Band.ttl
│   ├── Equalizer5Band.ttl
│   ├── Equalizer8Band.ttl
│   ├── Exciter.ttl
│   ├── Filter.ttl
│   ├── Filterclavier.ttl
│   ├── Flanger.ttl
│   ├── Fluidsynth.ttl
│   ├── Gate.ttl
│   ├── HaasEnhancer.ttl
│   ├── Limiter.ttl
│   ├── MonoCompressor.ttl
│   ├── MonoInput.ttl
│   ├── Monosynth.ttl
│   ├── MultiChorus.ttl
│   ├── MultiSpread.ttl
│   ├── MultibandCompressor.ttl
│   ├── MultibandEnhancer.ttl
│   ├── MultibandGate.ttl
│   ├── MultibandLimiter.ttl
│   ├── Organ.ttl
│   ├── Phaser.ttl
│   ├── Pitch.ttl
│   ├── Pulsator.ttl
│   ├── Reverb.ttl
│   ├── ReverseDelay.ttl
│   ├── RingModulator.ttl
│   ├── RotarySpeaker.ttl
│   ├── Saturator.ttl
│   ├── SidechainCompressor.ttl
│   ├── SidechainGate.ttl
│   ├── SidechainLimiter.ttl
│   ├── StereoTools.ttl
│   ├── TapeSimulator.ttl
│   ├── TransientDesigner.ttl
│   ├── VintageDelay.ttl
│   ├── Vinyl.ttl
│   ├── Vocoder.ttl
│   ├── Wavetable.ttl
│   ├── XOver2Band.ttl
│   ├── XOver3Band.ttl
│   ├── XOver4Band.ttl
│   ├── calf.so -> /usr/lib64/calf/calf.so
│   ├── calflv2gui.so
│   ├── manifest.ttl
│   ├── presets-Filter.ttl
│   ├── presets-Flanger.ttl
│   ├── presets-MonoCompressor.ttl
│   ├── presets-Monosynth.ttl
│   ├── presets-Organ.ttl
│   ├── presets-Reverb.ttl
│   └── presets-Wavetable.ttl
├── core.lv2
│   ├── attributes.h
│   ├── lv2.h
│   ├── lv2_util.h
│   ├── lv2core.meta.ttl
│   ├── lv2core.ttl
│   ├── manifest.ttl
│   ├── meta.ttl
│   └── people.ttl
├── data-access.lv2
│   ├── data-access.h
│   ├── data-access.meta.ttl
│   ├── data-access.ttl
│   └── manifest.ttl
├── dynmanifest.lv2
│   ├── dynmanifest.h
│   ├── dynmanifest.meta.ttl
│   ├── dynmanifest.ttl
│   └── manifest.ttl
├── eg-amp.lv2
│   ├── amp.so
│   ├── amp.ttl
│   └── manifest.ttl
├── eg-fifths.lv2
│   ├── fifths.so
│   ├── fifths.ttl
│   └── manifest.ttl
├── eg-metro.lv2
│   ├── manifest.ttl
│   ├── metro.so
│   └── metro.ttl
├── eg-midigate.lv2
│   ├── manifest.ttl
│   ├── midigate.so
│   └── midigate.ttl
├── eg-params.lv2
│   ├── manifest.ttl
│   ├── params.so
│   └── params.ttl
├── eg-sampler.lv2
│   ├── click.wav
│   ├── manifest.ttl
│   ├── sampler.so
│   ├── sampler.ttl
│   └── sampler_ui.so
├── eg-scope.lv2
│   ├── examploscope.so
│   ├── examploscope.ttl
│   ├── examploscope_ui.so
│   └── manifest.ttl
├── event.lv2
│   ├── event-helpers.h
│   ├── event.h
│   ├── event.meta.ttl
│   ├── event.ttl
│   └── manifest.ttl
├── instance-access.lv2
│   ├── instance-access.h
│   ├── instance-access.meta.ttl
│   ├── instance-access.ttl
│   └── manifest.ttl
├── log.lv2
│   ├── log.h
│   ├── log.meta.ttl
│   ├── log.ttl
│   ├── logger.h
│   └── manifest.ttl
├── midi.lv2
│   ├── manifest.ttl
│   ├── midi.h
│   ├── midi.meta.ttl
│   └── midi.ttl
├── morph.lv2
│   ├── manifest.ttl
│   ├── morph.h
│   ├── morph.meta.ttl
│   └── morph.ttl
├── options.lv2
│   ├── manifest.ttl
│   ├── options.h
│   ├── options.meta.ttl
│   └── options.ttl
├── parameters.lv2
│   ├── manifest.ttl
│   ├── parameters.h
│   ├── parameters.meta.ttl
│   └── parameters.ttl
├── patch.lv2
│   ├── manifest.ttl
│   ├── patch.h
│   ├── patch.meta.ttl
│   └── patch.ttl
├── port-groups.lv2
│   ├── manifest.ttl
│   ├── port-groups.h
│   ├── port-groups.meta.ttl
│   └── port-groups.ttl
├── port-props.lv2
│   ├── manifest.ttl
│   ├── port-props.h
│   ├── port-props.meta.ttl
│   └── port-props.ttl
├── presets.lv2
│   ├── manifest.ttl
│   ├── presets.h
│   ├── presets.meta.ttl
│   └── presets.ttl
├── resize-port.lv2
│   ├── manifest.ttl
│   ├── resize-port.h
│   ├── resize-port.meta.ttl
│   └── resize-port.ttl
├── schemas.lv2
│   ├── dcs.ttl
│   ├── dct.ttl
│   ├── doap.ttl
│   ├── foaf.ttl
│   ├── manifest.ttl
│   ├── owl.ttl
│   ├── rdf.ttl
│   ├── rdfs.ttl
│   └── xsd.ttl
├── state.lv2
│   ├── manifest.ttl
│   ├── state.h
│   ├── state.meta.ttl
│   └── state.ttl
├── time.lv2
│   ├── manifest.ttl
│   ├── time.h
│   ├── time.meta.ttl
│   └── time.ttl
├── ui.lv2
│   ├── manifest.ttl
│   ├── ui.h
│   ├── ui.meta.ttl
│   └── ui.ttl
├── units.lv2
│   ├── manifest.ttl
│   ├── units.h
│   ├── units.meta.ttl
│   └── units.ttl
├── uri-map.lv2
│   ├── manifest.ttl
│   ├── uri-map.h
│   ├── uri-map.meta.ttl
│   └── uri-map.ttl
├── urid.lv2
│   ├── manifest.ttl
│   ├── urid.h
│   ├── urid.meta.ttl
│   └── urid.ttl
└── worker.lv2
    ├── manifest.ttl
    ├── worker.h
    ├── worker.meta.ttl
    └── worker.ttl

33 directories, 201 files
wwmm commented 1 year ago

Running the command without touching the environment works the same as if I specify the correct one.

If lv2ls sees the plugins there is no reason for EasyEffects not being able to. Both are using the lilv library. Could it be that easyeffects is the one inside a sandbox? or installed in a unusual way? But I am almost sure there are people out there using easyeffects on Void Linux. Strange...

ghost commented 1 year ago

As a test, I tried running LV2_PATH=/usr/lib/lv2 easyeffects and got the same behavior.

EasyEffects is actually in the official void repos, so I'm not sure why this would be broken if it's officially supported.

Edit: That wasn't a commentary on the quality of this project, more of a "why does my distro ship something to me that doesn't work?" comment. Is there a way to turn on logging for EasyEffects itself?

wwmm commented 1 year ago

That wasn't a commentary on the quality of this project, more of a "why does my distro ship something to me that doesn't work?" comment.

No problems :-). Until today the only case I was aware of plugins not being found was #1685. But there what is happening is that the distribution is installing the plugins outside of /usr/lib/lv2 that is the path lilv searches by default. I do not understand what exactly is different in your installation.

Is there a way to turn on logging for EasyEffects itself?

Besides the step number 3 in our wiki that you already followed there is no other easyeffects debugging mode. Maybe if you take a look at the output of sudo journactl -fb while trying to run easyeffects something interesting will be shown. But I do not have my much hope there will actually be something.

wwmm commented 1 year ago

Could you try to build easyeffects and running it from a local folder as explained at https://github.com/wwmm/easyeffects/wiki/Installation-from-Source#build-and-run-without-installing ? This way we will know if moving to the latest version makes any difference.

wwmm commented 1 year ago

Could you try to build easyeffects and running it from a local folder as explained at https://github.com/wwmm/easyeffects/wiki/Installation-from-Source#build-and-run-without-installing ? This way we will know if moving to the latest version makes any difference.

Those command have to be done inside easyeffects source code folder

ghost commented 1 year ago

I did run ltrace -e fopen easyeffects to see what file paths were actually being requested, attached the log. A quick spot check showed that they do exist.. but on my system /usr/lib is a symlink to /usr/lib64, would that cause any issues?

run.2.log

wwmm commented 1 year ago

but on my system /usr/lib is a symlink to /usr/lib64, would that cause any issues?

Here on Arch Linux it is the other way around. /usr/lib64 that is a symbolic link to /usr/lib. So you may have the same case as #1685 after all. Try to set LV2_PATH again but this time using /usr/lib64 instead of /usr/lib.

ghost commented 1 year ago

Got it working, turned out that the xbps-src script generated 5 different packages (lsp-plugins{,-jack,-ladspa,-lv2,-vst2}), and you have to explicitly install the lsp-plugins-lv2 package.

For anyone else that might have this issue and find this thread from google, here are the steps to get EasyEffects on Void at the time of writing:

Though I have this working, I'm still not able to apply effects to my audio. But I'll troubleshoot that separately from this issue. Thanks @wwmm!