Cabbage Logo
Back to Cabbage Site

Linux builds with LV2 and VST support

Hi all,
I am building the latest develop version a9db75d in Linux openSUSE 42.2 with a specific objective of getting my own modules built as LV2 or NativeVSTs. I want to try and make a modular synth where I can monitor each stage with x42-scope.

However, I have issues with getting LV2 or VSTs compiled (Rory has helped me a lot so far), but I ask has any linux user successfully exported a csd->vst or lv2 in linux?

Thanks,
Chris.

Hi Chris. And welcome to the forum. I mostly work on Linux and have no problems exporting plugins, although I mostly export as native vst. What is the problem you are having? You were able to build everything OK?

Hi Rory,
I still had issues building the develop branch and found a bug in your script. I opened issue #25 with details. But even with identifying that bug there is still an issue with the VST SDK paths, again details in #25.

Chris.

I just this minute saw your post to the github issues page. Can you try the following commands from the Linux folder and post the output

make -f MakefilePluginEffect clean
make -f MakefilePluginEffect -j4

The first will clean all the existing object files, while the second one will attempt to build just one of the plugin libraries. We’ll start there and move on once that’s building :wink:

that worked ok - no errors. Output attached.

new_test.txt (10.9 KB)

Ok, so it looks like it’s just the LV2 plugins that are not building? After you run the ./buildCabbage command, do you have a CabbagePluginSynth.so and a CabbagePluginEffect.so in your build directory?

I do have both .so files in the build directory.

And are they also in the CabbageBuild folder? If so, have you tried opening Cabbage from that folder and exporting a example as a plugin synth, or effect?

Yes the two .so files are in CabbageBuild folder.
I did open Cabbage and loaded TR-808 from the Examples/Synth folder and Export as a “VST Plugin Synth”.

Host Carla can use it loaded and plays as a NativeVST. Muse DAW has issues (can’t determine cause yet).

I should point out that I can export as an LV2 synth that is loaded by carla and muse daw. Carla looks ok’ish but both hosts complain and muse crashes whereas carla seems to ignore those messages.-

JUCE v4.2.3
virtual_keyboard real time MIDI plugin for Csound
WARNING: STK opcodes not available: define environment variable RAWWAVE_PATH
(points to rawwaves directory) to use STK opcodes.
0dBFS level = 32768.0
–Csound version 6.09 (double samples) Feb 22 2017
[commit: b3553af5355638beb63bffbf103940e9d41dcdfe]
libsndfile-1.0.25-exp
compiled Ok
Csound tidy up: Segmentation fault
*** Leaked objects detected: 1 instance(s) of class ActiveProcess
JUCE Assertion failure in juce_LeakedObjectDetector.h:95
*** Leaked objects detected: 1 instance(s) of class ChildProcess
JUCE Assertion failure in juce_LeakedObjectDetector.h:95
*** Leaked objects detected: 1 instance(s) of class Desktop
JUCE Assertion failure in juce_LeakedObjectDetector.h:95
*** Leaked objects detected: 1 instance(s) of class ComponentAnimator
JUCE Assertion failure in juce_LeakedObjectDetector.h:95
*** Leaked objects detected: 1 instance(s) of class OwnedArray
JUCE Assertion failure in juce_LeakedObjectDetector.h:95
*** Leaked objects detected: 1 instance(s) of class MouseInputSource
JUCE Assertion failure in juce_LeakedObjectDetector.h:95
*** Leaked objects detected: 1 instance(s) of class MouseInputSourceInternal
JUCE Assertion failure in juce_LeakedObjectDetector.h:95
*** Leaked objects detected: 1 instance(s) of class OwnedArray
JUCE Assertion failure in juce_LeakedObjectDetector.h:95
*** Leaked objects detected: 1 instance(s) of class TooltipWindow
JUCE Assertion failure in juce_LeakedObjectDetector.h:95
*** Leaked objects detected: 1 instance(s) of class OwnedArray
JUCE Assertion failure in juce_LeakedObjectDetector.h:95
*** Leaked objects detected: 1 instance(s) of class OwnedArray
JUCE Assertion failure in juce_LeakedObjectDetector.h:95
*** Leaked objects detected: 2 instance(s) of class SoftwarePixelData
JUCE Assertion failure in juce_LeakedObjectDetector.h:95
*** Leaked objects detected: 2 instance(s) of class ImagePixelData
JUCE Assertion failure in juce_LeakedObjectDetector.h:95
*** Leaked objects detected: 1 instance(s) of class WildcardFileFilter
JUCE Assertion failure in juce_LeakedObjectDetector.h:95
*** Leaked objects detected: 1 instance(s) of class OwnedArray
JUCE Assertion failure in juce_LeakedObjectDetector.h:95
*** Leaked objects detected: 2 instance(s) of class OwnedArray
JUCE Assertion failure in juce_LeakedObjectDetector.h:95
*** Leaked objects detected: 2 instance(s) of class ComponentBoundsConstrainer
JUCE Assertion failure in juce_LeakedObjectDetector.h:95
*** Leaked objects detected: 2 instance(s) of class Component
JUCE Assertion failure in juce_LeakedObjectDetector.h:95
*** Leaked objects detected: 2 instance(s) of class MouseCursor
JUCE Assertion failure in juce_LeakedObjectDetector.h:95
*** Leaked objects detected: 1 instance(s) of class JuceLv2Wrapper
JUCE Assertion failure in juce_LeakedObjectDetector.h:95
*** Leaked objects detected: 1 instance(s) of class SharedResourcePointer
JUCE Assertion failure in juce_LeakedObjectDetector.h:95
*** Leaked objects detected: 1 instance(s) of class AudioBuffer
JUCE Assertion failure in juce_LeakedObjectDetector.h:95
*** Leaked objects detected: 1 instance(s) of class TimerThread
JUCE Assertion failure in juce_LeakedObjectDetector.h:95
*** Leaked objects detected: 1 instance(s) of class CabbagePluginAudioProcessor
JUCE Assertion failure in juce_LeakedObjectDetector.h:95
*** Leaked objects detected: 1 instance(s) of class OwnedArray
JUCE Assertion failure in juce_LeakedObjectDetector.h:95
*** Leaked objects detected: 1 instance(s) of class MidiKeyboardState
JUCE Assertion failure in juce_LeakedObjectDetector.h:95
*** Leaked objects detected: 5 instance(s) of class MidiBuffer
JUCE Assertion failure in juce_LeakedObjectDetector.h:95
*** Leaked objects detected: 1 instance(s) of class TimeSliceThread
JUCE Assertion failure in juce_LeakedObjectDetector.h:95
*** Leaked objects detected: 1 instance(s) of class OwnedArray
JUCE Assertion failure in juce_LeakedObjectDetector.h:95
*** Leaked objects detected: 6 instance(s) of class AsyncUpdater
JUCE Assertion failure in juce_LeakedObjectDetector.h:95
*** Leaked objects detected: 1 instance(s) of class AudioProcessor
JUCE Assertion failure in juce_LeakedObjectDetector.h:95
*** Leaked objects detected: 2 instance(s) of class BigInteger
JUCE Assertion failure in juce_LeakedObjectDetector.h:95
*** Leaked objects detected: 1 instance(s) of class OwnedArray
JUCE Assertion failure in juce_LeakedObjectDetector.h:95
*** Leaked objects detected: 1 instance(s) of class MessageManager
JUCE Assertion failure in juce_LeakedObjectDetector.h:95
*** Leaked objects detected: 3 instance(s) of class Thread
JUCE Assertion failure in juce_LeakedObjectDetector.h:95
*** Leaked objects detected: 7 instance(s) of class WaitableEvent
JUCE Assertion failure in juce_LeakedObjectDetector.h:95
*** Leaked objects detected: 4 instance(s) of class Image
JUCE Assertion failure in juce_LeakedObjectDetector.h:95
*** Leaked objects detected: 11 instance(s) of class StringArray
JUCE Assertion failure in juce_LeakedObjectDetector.h:95
Client e078e1f4-e6c9-471a-a380-ef41a44cc3eb removed from project project-3
Project project-3 removed
Segmentation fault (core dumped)
chris@linux-4j2s:~/Downloads/git/cabbage-devel/Builds/Linux>

Hi,
I have built the CabbagePluginSynthLV2 and CabbagePluginEffectLV2 manually as described above and have exported TR808(synth) and vocoder(effect) examples to LV2 successfully and copied to my LV2_PATH. However both LV2 hosts (carla and Muse) die with segmentation faults when BOTH LV2s are loaded. If ONE Cabbage generated LV2 is loaded things seems fine apart from the multitude of JUCE messages and the hosts do not crash when other LV2 plugins (non Cabbage based) are loaded.

I tried to update the JUCELibraryCode to the latest version from github as a test but I got tied in circles trying to implement it and went back to your distributed version.

Not sure where to head from here.

Regards…

I didn’t implement the LV2 interfaces, so I’m not sure what’s going on there but I can take a look when I get a chance. I’ve only ever really used the native VST plugins, which work fine for me in my everyday use of them. Carla can host VST,s as too can MUSE, Ardour, QTractor, Bitwig and Tracktion. Is there a particular host you need to use that only works with LV2’s?

I just have a preference for LV2. But yes, you are correct that most hosts can handle linux native VSTs. I will rebuild things tomorrow and retest.

I just tried on the latest version of Ardour and I’m getting no crashes with the synths, but there are some issues with plugin effects. I’ll take a look. Should be able to fix that. Btw, I get no problems loading many instances of the plugin synths on top of each other or on different tracks? Can you try with just the synths and let me know if there are any problems there?

OK. I exported 3 synths (TR808,bassline,whitenoise) and 3 effects(bandfilter,delaygrain,sterochorus) as VSTs to my VST_PATH so that the .csd and .so files are in there.

  1. Carla (version Carla-2.0beta5-linux64) had issues adding the plugins (see carla_cabbage_vst.txt (40.2 KB)). But they could load and play until when I deleted one vst effect carla locked up and I had to send a sigkill.

7ff5a0c1a000-7ff5a0e19000 —p 00001000 08:02 2509837 /usr/local/lib/csound/plugins-6.0/libsystem_call.so
7ff5a0e19000-7ff5a0e1a000 r–p 00000000 08:02 2509837 /usr/local/lib/csound/plugins-6.0/libsystem_call.so
7ff5a0e1a000-7ff5a0e1b000 rw-p 00001000 08:02 2509837 /usr/local/lib/csound/plugins-6.0/libsystem_call.so
7ff5a0e1b000-7ff5a0e27000 r-xp 00000000 08:02 2509840 /usr/local/lib/csound/plugins-6.0/libftsamplebank.so^C^C^C^C^C^C

  1. Muse (version 3.0.0pre2) loaded the vsts ok but with the same issues as carla (see muse_cabbage_vst.txt (20.4 KB). Muse saw the 3 effects vsts as synths but still loaded and played. But Muse too was littered with JUCE messages.

JUCE Assertion failure in juce_LeakedObjectDetector.h:95
*** Leaked objects detected: 931 instance(s) of class AsyncUpdater
JUCE Assertion failure in juce_LeakedObjectDetector.h:95
*** Leaked objects detected: 2 instance(s) of class BigInteger
JUCE Assertion failure in juce_LeakedObjectDetector.h:95
*** Leaked objects detected: 27 instance(s) of class Image
JUCE Assertion failure in juce_LeakedObjectDetector.h:95
*** Leaked objects detected: 30 instance(s) of class StringArray
JUCE Assertion failure in juce_LeakedObjectDetector.h:95

I noticed you have your own forked version of csound on your github page. Should I be using that instead of the official version?

No, my fork is nothing but a test pad for my own experiments. I’ll hopefully get a chance to look into this today. But I’m already thinking that perhaps you wouldn’t mind testing the new version of Cabbage. Seems like our time might be better spent there. I’ll try to get everything nice and easy to build for you!

New version?? Sure, happy to.

EDIT: Ah - spies cabaiste

Well spotted. Now if you can figure out what it means, you get bonus points! The new Cabbage IDE should build out of the box, no need for the VST SDK, but the plugin probably won’t just now. I’ll need to spend some time on them. My teaching load is a nightmare for the next few days, so it will probably be Thursday or Friday before I get back to you.

Now, would it be Gaelic for Cabbage (to be sure, to be sure :joy: )?

No problem - just give me the word when to get the new version. I have plenty to read/watch on your webpage and with Csound in general.

You got it :wink:

You can try building from the cabaiste repo now, make sure to check out the audio_graph branch. I will merge back into master in the next few days, but that’s the most up to date source Considering the current Cabbage builds for you now you should not need to do anything but run the buildCabbage script in the LinuxMakefile folder. For now only VST plugins are supported. But it would be nice if you could test a few of those first and see if they work Ok. Then I can look at adding support for LV2.