LMMS / lmms

Cross-platform music production software
https://lmms.io
GNU General Public License v2.0
8.12k stars 1k forks source link

Master: Calf and Caps plugins not found #2270

Closed unfa closed 9 years ago

unfa commented 9 years ago

plugins not loaded

Looks like all C* Audio Plugins Suite and CALF plugins are not availabile in LMMS git master.

However the are installed in my system so should be..

Also the cmake configuration output has shown that the plugins should be availabile.

Optional plugins
----------------
* Carla Patchbay & Rack       : OK
* SoundFont2 player           : OK
* Stk Mallets                 : OK
* VST-instrument hoster       : not found, please install (lib)wine-dev (or similar) - 64 bit systems additionally need gcc-multilib and g++-multilib
* VST-effect hoster           : not found, please install (lib)wine-dev (or similar) - 64 bit systems additionally need gcc-multilib and g++-multilib
* CALF LADSPA plugins         : OK
* CAPS LADSPA plugins         : OK
* CMT LADSPA plugins          : OK
* TAP LADSPA plugins          : OK
* SWH LADSPA plugins          : OK
* GIG player                  : OK

This is how paths are configured:

paths

Looks strange to me, but the other plugins are working fine, so what's going on?

midi-pascal commented 9 years ago

If you are on the master branch you should have a look at your Lmms settings (directories) since there has been some work done is this area recently. For me it works like perfect - Ubuntu 12.04 32 bits -

tresf commented 9 years ago

since there has been some work done is this area recently

Can you elaborate? If we broke this for upgrades, we should upgrade the settings. :+1:

michaelgregorius commented 9 years ago

They are missing for me as well for quite some time. I have just tried to rename ~/.lmmsrc and to configure everything from scratch but unfortunately it did not help. It also makes no difference whether I deploy the application (via make install) or not.

@midi-pascal Can you please check if everything still works for you if you start completely from scratch?

grejppi commented 9 years ago

EDIT: I forgot about .lmmsrc.xml during the bisect, so I'm not sure about the validity of the results. Sorry @Lukas-W.

Anyway, an earlier build had set my LADSPA path as /opt/lmms/bin/../lib//ladspa/ (by writing to the file without asking), but now a fresh master build would set it as /opt/lmms/lib/lmms/ladspa,/home/h/lmms/plugins/ladspa/.

@unfa: if there's a chance it could be left over from an old build, try resetting the config file.


Huh. This was supposed to be fixed in #2190, but apparently not.

Fixes #2159 Master branch can't find ladspa effects Were introduced in #1908 Re organizing of the user lmms directory

git bisect between master and de9f879dde5ad0f31818132a3fb2b2b8d6333662 (parent of #1908), marking each commit bad if it can't find C* Plate2x2, points me at #1719 (cc @Lukas-W):

35e1c4ed899dde640e298129fde8c957fef05671 is the first bad commit
commit 35e1c4ed899dde640e298129fde8c957fef05671
Author: Lukas W <lukaswhl@gmail.com>
Date:   Thu Feb 5 17:22:23 2015 +0100

    Refactor: Move plugin file support handling to PluginFactory

:040000 040000 60895e5dd97570a569c9405a7227a1877a2a89ce ef255610e9ebe86440d451097f6a1bf0caca49a7 M  include
:040000 040000 e7892d59505a40ddb6d5f3e04273c8d800ce9dac 7c06269d4ed5dfe1f7fd1798013e61e998029d61 M  src
midi-pascal commented 9 years ago

@michaelgregorius I removed the .lmmsrc and re starded from scratch. I configured my working directory and left all other default values. Result: all the LADSPA plugins are in the list, no error. Ubuntu 12.04 32 bits and Lmms master (debug build) up to date.

midi-pascal commented 9 years ago

@unfa By looking more closely to your screenshot, your path to the LADSPA plugins is probably wrong. /usr/lib/../lib//ladspa/ is not valid. There should be a comma (",") between /usr/lib/ and ../lib//ladspa/ (compared to my own setup). Although the double slash in ../lib//ladspa/ does not hurt, it is always preferable to have just one.

michaelgregorius commented 9 years ago

After deletion of ~/lmmsrc.xml my LADSPA paths are set to (separated by comma):

Using these paths does not work as my build directory is located at /home/michael/lmms-dev-mg/lmms-build/. My git clone is located at /home/michael/lmms-dev-mg/lmms/. I use the following CMake command to configure the build:

-DCMAKE_BUILD_TYPE="Debug" -DCMAKE_INSTALL_PREFIX:PATH=../lmms-install

Could it be that the relative install path is creating some problems?

If I manually add ./plugins/ladspa to the LADSPA paths the LADSPA browser (found in the main menu under "Tools") finds all the plugins. However, when I try to add an effect these plugins are still not seen. I get the same effect when changin line 422 in ConfigManager.cpp as follows:

m_ladDir = qApp->applicationDirPath() + "/plugins/ladspa";

However, I assume that this will only work with a development build and not with a fully installed release build. I think for LADSPA we need to differentiate between the following paths:

  1. Global LADSPA path, e.g. /lib/ladspa/.
  2. User LADSPA path, e.g. /home/michael/lmms/plugins/ladspa/.
  3. LMMS LADSPA path, e.g. ${LMMS_INSTALL_DIR}/lib/lmms/ladspa/.
  4. Development LADSPA, e.g. ./plugins/ladspa.

So for me the code currently seems to be broken in two ways:

  1. The default LADSPA paths are not created in a robust manner.
  2. The LADSPA browser and the plugins dialog do not seem to share the same base hence the different effects described above.
midi-pascal commented 9 years ago

@michaelgregorius Strange enough because when I deleted my .lmmsrc and restarted Lmms the LADSPA path was initialized with the full path of my install directory, not a relative one like yours. And my cmake flag -DCMAKE_INSTALL_PREFIX=../target-debug is relative too.

michaelgregorius commented 9 years ago

@midi-pascal I have now deleted ~/.lmmsrc.xml and started the deployed application, i.e. I performed a make install and started the installed application. Now one of the paths points to a correct location (/home/michael/lmms-dev-mg/lmms-build/plugins/ladspa) but the plugins are still only seen in the LADSPA browser but not in the effect selection dialog.

Some words of explanation: since a few weeks it's possible to start the application without deploying it first which results in much faster startup times. It seems like this case might have to be taken into account as well when dealing with the LADSPA paths.

midi-pascal commented 9 years ago

@michaelgregorius Got it! For sure there is a bug here since for me the LADSPA effects are shown when clicking "Add effect" in the FX-Mixer but are missing from the LADSPA Plugins browser... I did not understood at first you were speaking of the plugins browser since I never used it.

michaelgregorius commented 9 years ago

If I add qDebug() << QDir::searchPaths("plugins"); to PluginFactory::discoverPlugins() it only outputs:

/home/michael/lmms-dev-mg/lmms-build/plugins

This expression finds all the native LMMS plugins as they reside in that directory. Because the LADSPA plugins are in the ladspa subdirectory I assume that normally it should also contain something like /home/michael/lmms-dev-mg/lmms-build/plugins/ladspa?

tresf commented 9 years ago

since a few weeks it's possible to start the application without deploying it first which results in much faster startup times. It seems like this case might have to be taken into account as well when dealing with the LADSPA paths.

FYI, https://github.com/LMMS/lmms/commit/5592d07c80c0bf81acbaca9552fe5ce31e797b1e

tresf commented 9 years ago

This isn't a bug, this is a feature. We've added automatic path detection via 5592d07 and that's a convenience developers must be aware of when switching between release and debug builds.

Documented by adding a side-note to our compile instructions. Closing as invalid.

Note: This will automatically create a file ~/.lmmsrc.xml which will map artwork and plugin paths relative to your build directory. At any time, if artwork or plugins stop loading properly, you will need to edit, move or delete ~/.lmmsrc.xml to correct these paths.

tresf commented 9 years ago

@michaelgregorius I believe the LADSPA loading logic you are looking for is in LadspaManager.cpp

curlymorphic commented 9 years ago

The ladspa plugin directory only has its factory defaults set on install if there is no setting in the ~/lmmsrc.xml file. If this file is removed prior to a new install/upgrade the ladspa dir is set correctly.

If you dont wish to remove this file, for understandable reason, there are some simple steps

  1. open setting dialog
  2. clear the ladspa path
  3. close settings
  4. close lmms
  5. reopen lmms

This will force the setting back to the new default.

p.s this should work for all paths in the settings if needed

karmux commented 9 years ago

Cleared LADSPA path and deleted ~/lmmsrc.xml. Still getting error about these plugins. I'm using PR #2428 since LADSPA is currently broken in master.

7be47230e33e381991001f6f28b7468e877d581a - here all is good. acf6393e7036531bb36182162a9418ec9401d28c - here CALF and CAPS are already missing.