guitarix icon indicating copy to clipboard operation
guitarix copied to clipboard

Fuzz Master plugin does not work

Open andremarcais opened this issue 3 months ago • 6 comments

Hello,

When I use the Fuzz Master plugin, I get a short loud hiss and then indefinite silence. (Expected behavior is that I get sound.)

To reproduce the bug:

./waf configure --debug --cxxflags-debug '-O0 -g' --prefix=${SOME_DIR}
./waf build && ./waf install
export LV2_PATH=${SOME_DIR}/lib/lv2
lv2apply -i ~/tmp/sample.wav -o sample-fuzz.wav \
    'http://guitarix.sourceforge.net/plugins/gx_fumaster_#_fumaster_'

Then observe that sample-fuzz.m4a starts with a short loud hiss then silence till the end. (Find attached what I got for reference.)

I'm using Arch Linux. This bug is present both in the Arch Linux package as well as the latest version built from source (commit df72b5e8 as of writing). Here are the packages I have installed:

gperf 3.3-1
intltool 0.51.0-6
avahi 1:0.9rc2-1
bluez-libs 5.84-1
boost 1.88.0-3
eigen 5.0.0-3
gtk3 1:3.24.51-1
gtkmm3 3.24.10-1
jack2 1.9.22-1
lilv 0.24.26-1
liblrdf 0.6.1-5
libsndfile 1.2.2-3
fftw 3.3.10-7
lv2 1.18.10-1
python 3.13.7-1
sassc 3.6.2-5

https://github.com/user-attachments/assets/3cc02e72-d22f-4bce-87ab-3bf12cf2bb28

https://github.com/user-attachments/assets/f30e9202-26dd-4e0d-94b6-f83d86b36fbb

andremarcais avatar Oct 08 '25 22:10 andremarcais

Sounds like the IIIR filter soaks up. This plug is very old by now ( 8 Years). It have problems with Sample Rates above 48 kHz.

brummer10 avatar Oct 09 '25 07:10 brummer10

Indeed, I can confirm it works at 48 kHz. (The samples above are 96 kHz.)

Could this plugin be updated to support higher sample rates or is this just a limitation we have to live with?

andremarcais avatar Oct 09 '25 10:10 andremarcais

It shows FE_INVALID floating point error in LMMS (compiled with FPE debug option). This means, as I understand it, that NaN is present.

Thread 39 "lmms::ProjectRe" received signal SIGFPE, Arithmetic exception.
[Switching to Thread 0x7fffa09fb6c0 (LWP 45330)]
0x00007fffe8210892 in ?? () from /usr/local/lib/lv2/gx_fumaster.lv2/gx_fumaster.so
(gdb) bt full
#0  0x00007fffe8210892 in ??? () at /usr/local/lib/lv2/gx_fumaster.lv2/gx_fumaster.so
#1  0x00007fffe820f22f in ??? () at /usr/local/lib/lv2/gx_fumaster.lv2/gx_fumaster.so
#2  0x000055555595d6b5 in lilv_instance_run (instance=0x5555594dd2d0, sample_count=256) at /usr/include/lilv-0/lilv/lilv.h:1959
#3  0x000055555595ee8e in lmms::Lv2Proc::run (this=0x555558d92350, frames=256)
    at /home/zonkmachine/builds/lmmsold/lmms/src/core/lv2/Lv2Proc.cpp:379

zonkmachine avatar Oct 09 '25 12:10 zonkmachine

@zonkmachine is that at 48 kHz ?

@andremarcais There are some more plugs with this issue. For some I've implemented a fixed rate resampler so that the plug internal run at 48 kHz, regardless what samplerate was requested. That could be done for this plug as well.

brummer10 avatar Oct 09 '25 13:10 brummer10

@zonkmachine is that at 48 kHz ?

At over 48kHz. Under this works. I'm trying to get some symbols in the backtrace for you but so far no greater luck.

zonkmachine avatar Oct 09 '25 14:10 zonkmachine

Thanks @zonkmachine But unfortunately that wouldn't help much. It's like I said, this plug is old by now and when I wrote it I didn't know it better. It use a generated IIR filter, generated with dkbuilder from the circuit. The resulting filter is of higher order and that's why it become unstable at higher order sample rates. For filters I wrote later I split the circuit’s into small pieces and generate lower order filter which I then put together to picture the complete circuit. That filters been of lower order and works stable on any sample rate. Now, to fix the Fuzz Master I would need to take the circuit, split it into pieces, run it to dkbuilder and stick the resulting filters together. That's a huge amount of work. Or, I implement a Fix Rate Resampler (which I already have) and been done.

brummer10 avatar Oct 09 '25 16:10 brummer10