AidaDSP / aidadsp-lv2

Aida DSP's audio plugins in lv2 format
GNU General Public License v3.0
35 stars 9 forks source link

XSIMD backend produces bad sounding plugin on Dwarf platform, EIGEN is not #6

Open MaxPayne86 opened 1 year ago

MaxPayne86 commented 1 year ago

This can be replicated with https://github.com/moddevices/mod-plugin-builder/blob/f73345bc16e64b048aa06df7bac3218ba9094782/plugins/package/aidadsp-lv2/aidadsp-lv2.mk#L7

-AIDADSP_LV2_VERSION = 0bac2f3feb811115d696b11ec2293f5f03a535ac
+AIDADSP_LV2_VERSION = 6e54495ce95bcbaf2432ef4a3931299492b14671
...
-AIDADSP_LV2_CONF_OPTS = -DRTNEURAL_EIGEN=ON
+AIDADSP_LV2_CONF_OPTS = -DRTNEURAL_XSIMD=ON

this is not happening on other build systems like yocto and this could help in identifying the issue.

The issue should be related on how MPB builds xsimd backend in RTNeural submodule and not on plugin source code.

@falkTX

falkTX commented 1 year ago

Your own yocto file has a very interesting line:

-funsafe-loop-optimizations causes the plugin to sound really bad, excluding

Maybe it is this simple...

falkTX commented 1 year ago

Yep, that seems to be the case. Fixed in https://github.com/moddevices/mod-plugin-builder/commit/a41eac68c0a62fa2a1280369489a864ff2c9884b Took the chance to enable LTO as well, for a little extra performance benefit.

falkTX commented 1 year ago

Might have spoken too soon. behaviour improves but issue still there.

MaxPayne86 commented 1 year ago

@falkTX being a distortion effect, discussing about sound distorted may became an issue: the problem creates a corrupted sound similar to random noise and crackling mixed with the distorted sound can you confirm? Thanks a lot

falkTX commented 1 year ago

There is a high-pitch crackling noise still present. Still investigating...

falkTX commented 1 year ago

Something relevant to xsimd vs eigen.. we actually have better performance when using eigen backend. So perhaps the whole deal is a bit pointless

MaxPayne86 commented 1 year ago

I agree to stay with eigen for now, the only replicable solution to me could be

need to check