Hi David,
I have some issues with the gmsynth.lv2 and avldrums.lv2 packages that I'd
like to report. I noticed these while testing out Kushview's latest Element
version from their gitlab, but the official 0.46.6 version in extra has the
same issue. The issue being that Element completely locks up when trying to
instantiate these plugins.
I like both the x42 plugins (which we use a lot in my courses at JGU) and
Element (which I plan to use in lieu of Carla in the future, since in my
experience it has better cross-platform compatibility which is important
for my students running Mac or Windows on their laptops). So I hope that
the issue with those two plugins can be sorted out in some way.
The plugins do work fine in Ardour and Carla, which seem to be a little
more accommodating. So I initially reported the issue upstream (see
https://gitlab.com/kushview/element-external/-/issues/53) but quite
frankly I don't think that Element is to blame here. A while back those
plugins were changed to link against the system fluidsynth library instead
of the bundled stripped-down version included in the upstream source, and
that seems to cause the issue. The system fluidsynth library drags in a
bunch of additional library dependencies that obviously cause problems with
Element. Here they are (ldd /usr/lib/lv2/gmsynth.lv2/gmsynth.so):
linux-vdso.so.1 (0x00007ffcbe3fd000)
libfluidsynth.so.3 => /usr/lib/libfluidsynth.so.3
(0x00007f7806f48000)
libc.so.6 => /usr/lib/libc.so.6 (0x00007f7806d66000)
libgomp.so.1 => /usr/lib/libgomp.so.1 (0x00007f7806d15000)
libglib-2.0.so.0 => /usr/lib/libglib-2.0.so.0 (0x00007f7806bc9000)
libsndfile.so.1 => /usr/lib/libsndfile.so.1 (0x00007f7806b42000)
libpulse-simple.so.0 => /usr/lib/libpulse-simple.so.0
(0x00007f7806b3b000)
libpulse.so.0 => /usr/lib/libpulse.so.0 (0x00007f7806ae4000)
libasound.so.2 => /usr/lib/libasound.so.2 (0x00007f78069f2000)
libportaudio.so.2 => /usr/lib/libportaudio.so.2 (0x00007f78069c3000)
libjack.so.0 => /usr/lib/libjack.so.0 (0x00007f7806984000)
libpipewire-0.3.so.0 => /usr/lib/libpipewire-0.3.so.0
(0x00007f78068a0000)
libdbus-1.so.3 => /usr/lib/libdbus-1.so.3 (0x00007f780684f000)
libgmodule-2.0.so.0 => /usr/lib/libgmodule-2.0.so.0
(0x00007f7806846000)
libinstpatch-1.0.so.2 => /usr/lib/libinstpatch-1.0.so.2
(0x00007f780678a000)
libgobject-2.0.so.0 => /usr/lib/libgobject-2.0.so.0
(0x00007f7806728000)
libSDL2-2.0.so.0 => /usr/lib/libSDL2-2.0.so.0 (0x00007f780654d000)
libreadline.so.8 => /usr/lib/libreadline.so.8 (0x00007f78064f6000)
libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0x00007f7806200000)
libm.so.6 => /usr/lib/libm.so.6 (0x00007f7806113000)
libgcc_s.so.1 => /usr/lib/libgcc_s.so.1 (0x00007f78064cf000)
/usr/lib64/ld-linux-x86-64.so.2 (0x00007f780705e000)
libpcre2-8.so.0 => /usr/lib/libpcre2-8.so.0 (0x00007f7806078000)
libogg.so.0 => /usr/lib/libogg.so.0 (0x00007f78064c4000)
libvorbisenc.so.2 => /usr/lib/libvorbisenc.so.2 (0x00007f7805fcd000)
libFLAC.so.12 => /usr/lib/libFLAC.so.12 (0x00007f780647c000)
libopus.so.0 => /usr/lib/libopus.so.0 (0x00007f7805f6f000)
libmpg123.so.0 => /usr/lib/libmpg123.so.0 (0x00007f7805f12000)
libmp3lame.so.0 => /usr/lib/libmp3lame.so.0 (0x00007f7805e9a000)
libvorbis.so.0 => /usr/lib/libvorbis.so.0 (0x00007f7805e6c000)
libpulsecommon-16.1.so => /usr/lib/pulseaudio/libpulsecommon-16.1.so
(0x00007f7805de5000)
libsystemd.so.0 => /usr/lib/libsystemd.so.0 (0x00007f7805cef000)
libffi.so.8 => /usr/lib/libffi.so.8 (0x00007f7805ce4000)
libncursesw.so.6 => /usr/lib/libncursesw.so.6 (0x00007f7805c6d000)
libxcb.so.1 => /usr/lib/libxcb.so.1 (0x00007f7805c42000)
libasyncns.so.0 => /usr/lib/libasyncns.so.0 (0x00007f7805c38000)
libcap.so.2 => /usr/lib/libcap.so.2 (0x00007f7805c2c000)
libgcrypt.so.20 => /usr/lib/libgcrypt.so.20 (0x00007f7805ae3000)
liblz4.so.1 => /usr/lib/liblz4.so.1 (0x00007f7805ac1000)
liblzma.so.5 => /usr/lib/liblzma.so.5 (0x00007f7805a8e000)
libzstd.so.1 => /usr/lib/libzstd.so.1 (0x00007f78059bb000)
libXau.so.6 => /usr/lib/libXau.so.6 (0x00007f78059b4000)
libXdmcp.so.6 => /usr/lib/libXdmcp.so.6 (0x00007f78059ac000)
libgpg-error.so.0 => /usr/lib/libgpg-error.so.0 (0x00007f7805986000)
For comparison, here are the ld libs in the version built straight from the
upstream source:
linux-vdso.so.1 (0x00007ffe58374000)
libm.so.6 => /usr/lib/libm.so.6 (0x00007f094c46c000)
libglib-2.0.so.0 => /usr/lib/libglib-2.0.so.0 (0x00007f094c320000)
libc.so.6 => /usr/lib/libc.so.6 (0x00007f094c13e000)
/usr/lib64/ld-linux-x86-64.so.2 (0x00007f094c639000)
libpcre2-8.so.0 => /usr/lib/libpcre2-8.so.0 (0x00007f094c0a3000)
I understand that in general it may be preferable to link to a system lib
if available, but in this case this obviously does more harm than good. You
really want your plugins to be as lean and mean as possible, and in this
case they aren't. Also, Robin has just brought to my attention that the
bundled source of fluidsynth is not only stripped down, but optimized for
the included soundfonts (GeneralUser_LV2.sf2 in the case of gmsynth) so
that they sound much better than with the stock fluidsynth, which is
another reason to prefer the bundled fluidsynth.
The easiest solution IMHO is to just remove the patch that links against
the system fluidsynth library in these two packages; the plugins then work
fine with Element as is.
Talking about Element, I think that the official 0.46.6 package also needs
some love. :) It doesn't build from source currently, as some of the
requisite git repositories have gone missing (apparently when KV moved
their source to gitlab), and the binary package doesn't appear to run all
that well on a current pipewire-based system either. What I noticed on all
of my Arch/Manjaro systems is that, even with the simplest of patches, I
get an unacceptable latency between MIDI input and audio output, in the
hundreds of milliseconds. I get none of that with any of the packages that
I built myself (whether 0.46.6 or the latest 1.0.0 build 175), nor with the
AppImage from Kushview's website, so the problem actually seems to be in
the package from extra (which, if I'm not mistaken, was last rebuilt quite
some time ago).
Maybe this package just needs to have the PKGBUILD updated and rebuilt. Or
you could go straight to the current Element version on gitlab (1.0.0 build
175 at the time of this writing), which is much better. Maybe you can have
a look at my updated PKGBUILD for the git version at
https://aur.archlinux.org/packages/element-git to see how the current
version can be built from the gitlab source. No doubt this needs some more
work to get it into extra, but I know that you know how to deal with that.
;-)
TIA,
Albert
--
Dr. Albert Gr"af
Computer Music Research Group, JGU Mainz, Germany
Email: aggraef(a)gmail.com, web: https://agraef.github.io/