Getting Carla (2.0.95) working with LMMS (1.2.1) [Linux]

Write guides and how-tos about LMMS for other members.
Carla && LMMS
=============

I've been trying to get Carla & LMMS working together on Linux, and read a few threads here on the forum.

One or two said that it worked OK, more said it was a problem, and nothing seemed very recent.

First I tried downloading the prebuilt binaries from kxstudio, but it didn't work and there's no support documentation that I could find, so I gave that up.

But - with a bit of effort - I got LMMS to recognise an installed Carla system by compiling and installing Carla for myself, so I thought I'd drop a note in about it.

These are not comprehensive installation notes, as I can't cover all the variations of Linux distros let alone the huge variation in skills and experience of people using them.

This method worked for me on my computer. For anyone else struggling, they might work for you too.

This isn't difficult and doesn't require specialised expertise, but you'll need to be OK with working in a terminal session, and with downloading and installing packages.

You'll probably also need to know how to execute commands as root (administrator) using "su" or "sudo".


PREREQUISITES
==============

The first thing to say is I am using 64-bit LMMS 1.2.1 as an AppImage, which I got from lmms.io/download.

You'll need a development and compilation environment set up, and you'll have to refer to guidance elsewhere for how to do this (sorry).

For instance, in Ubuntu you'll at the very least have to run a terminal command something like

Code: Select all

sudo apt install build-essential


Or, say, if you're running Arch Linux

Code: Select all

pacman -S base-devel
.

Different distros will require different things. As I say, I can't cover them all.

A simple bit of googling for "install development files " for your distro will probably find what you need.

Before moving on, follow any instructions for testing that you've got what you need working ok.

To have a fully configured Carla installed, you might also first need some other packages installed in your system (if it hasn't already got them). These are called "dependencies". & we'll mention this again briefly later.

However, I'm pretty sure that most of what you need to get it running in LMMS will already be available on your system, even if it doesn't have all the "bells & whistles".


Get Carla
=======

Go to https://github.com/falkTX/Carla and click on "Clone or download", and then select "Download ZIP"; your browser should then offer you a dialogue to download and save the file.

Image

This is the Carla source-code, which we're going to compile and install on our system.

Once the file is downloaded, you'll need to unzip it into a directory (folder) and then open a terminal session and change into the directory into which you just unzipped the source-code.

(If you do a directory listing there (ls) you'll see a file called INSTALL.md, which basically tells you everything I'm going to tell you)

Firstly, try the following command;

Code: Select all

 make features
You should see output on your screen similar to the following:

Code: Select all

        ---> Main features
        Front-End:     YES
        LV2 plugin:    YES
        VST plugin:    YES
        Link support:  YES
        OSC support:   YES
        Binary detect: YES

        ---> Engine drivers
        JACK:        YES
        ALSA:        YES
        PulseAudio:  YES
        CoreAudio:   NO  [MacOS only]
        ASIO:        NO  [Windows only]
        DirectSound: NO  [Windows only]
        WASAPI:      NO  [Windows only]---> Main features
        Front-End:     YES
        LV2 plugin:    YES
        VST plugin:    YES
        Link support:  YES
        OSC support:   YES
        Binary detect: YES

        ---> Engine drivers
        JACK:        YES
        ALSA:        YES
        PulseAudio:  YES
        CoreAudio:   NO  [MacOS only]
        ASIO:        NO  [Windows only]
        DirectSound: NO  [Windows only]
        WASAPI:      NO  [Windows only]

        ---> Plugin formats:
        Internal: YES
        LADSPA:   YES
        DSSI:     YES
        LV2:      YES
        VST:      YES (with UI)

        ---> LV2 UI toolkit support:
        External: YES (direct)
        Gtk2:     YES (bridge)
        Gtk3:     YES (bridge)
        Qt4:      NO  [Qt4 missing]
        Qt5:      YES (bridge)
        X11:      YES (direct+bridge)
        Cocoa:    NO  [MacOS only]
        Windows:  NO  [Windows only]

        ---> File formats:
        Basic: YES
        Extra: YES
        SF2/3: YES
        SFZ:   YES

        ---> Internal plugins:
        Basic Plugins:    YES
        Carla-Patchbay:   YES
        Carla-Rack:       YES
        External Plugins: NO


        ---> Plugin formats:
        Internal: YES
        LADSPA:   YES
        DSSI:     YES
        LV2:      YES
        VST:      YES (with UI)

        ---> LV2 UI toolkit support:
        External: YES (direct)
        Gtk2:     YES (bridge)
        Gtk3:     YES (bridge)
        Qt4:      NO  [Qt4 missing]
        Qt5:      YES (bridge)
        X11:      YES (direct+bridge)
        Cocoa:    NO  [MacOS only]
        Windows:  NO  [Windows only]

        ---> File formats:
        Basic: YES
        Extra: YES
        SF2/3: YES
        SFZ:   YES

        ---> Internal plugins:
        Basic Plugins:    YES
        Carla-Patchbay:   YES
        Carla-Rack:       YES
        External Plugins: NO
        
It is not necessary for everything to say "YES", and I'll have to leave it up to you to investigate what else you might need to install before going any further.

So, for instance, on my system OSC Support: NO showed up along with the message liblo missing

This meant the system could not find the liblo library development files, which I then had to install.

(I mentioned "dependencies" earlier, and this illustrates that the liblo development files are a dependency of Carla if you need OSC support.)


Compile & Install Carla
==================

Lets assume that you've got all the dependencies you need installed.

When you're ready, you just need to run two further commands in the terminal session, in the directory (folder) where you've unzipped the Carla files.

First you run

Code: Select all

make
(if you know how many cores your processor has, you can speed up the compilation a bit by telling make to use them all; So on my old Dell, I have a Core2 Duo processor with two cores, and I used the command make -j2; if I was on my Lenovo with a 4-core I7, I'd have used make -j4)

You'll then see some output on the screen similar to this:

Code: Select all

make[1]: Entering directory '/initrd/mnt/dev_save/data/src/Carla/source/backend/engine'
make[1]: Entering directory '/initrd/mnt/dev_save/data/src/Carla/source/backend/plugin'
Compiling CarlaPlugin.cpp
Compiling CarlaEngine.cpp
Compiling CarlaEngineClient.cpp
Compiling CarlaPluginInternal.cpp
Compiling CarlaEngineData.cpp
Compiling CarlaEngineDummy.cpp
Compiling CarlaPluginNative.cpp
Compiling CarlaEngineGraph.cpp
Compiling CarlaPluginBridge.cpp
Compiling CarlaEngineInternal.cpp
Compiling CarlaEnginePorts.cpp
Compiling CarlaPluginLADSPADSSI.cpp
Compiling CarlaEngineThread.cpp
Compiling CarlaEngineOsc.cpp
Compiling CarlaEngineOscHandlers.cpp
Compiling CarlaEngineOscSend.cpp
Compiling CarlaPluginLV2.cpp
Compiling CarlaEngineJack.cpp
Compiling CarlaEngineNative.cpp
Compiling CarlaEngineRtAudio.cpp
Compiling CarlaPluginVST2.cpp
Compiling CarlaEngineNative.cpp (plugin)
Compiling CarlaPluginVST3.cpp
Compiling CarlaPluginAU.cpp
Compiling CarlaPluginJuce.cpp
Compiling CarlaPluginFluidSynth.cpp
Compiling CarlaPluginSFZero.cpp
Creating carla_engine.a
Creating carla_engine_plugin.a
make[1]: Leaving directory '/initrd/mnt/dev_save/data/src/Carla/source/backend/engine'
make[1]: Entering directory '/initrd/mnt/dev_save/data/src/Carla/source/jackbridge'
Compiling JackBridge1.cpp
Compiling CarlaPluginJack.cpp
Compiling JackBridge2.cpp
Creating jackbridge.a
make[1]: Leaving directory '/initrd/mnt/dev_save/data/src/Carla/source/jackbridge'
make[1]: Entering directory '/initrd/mnt/dev_save/data/src/Carla/source/native-plugins'
Compiling _all.c
(there'll be more than this)

If you see warnings like this, don't worry:

Code: Select all

ad_ffmpeg.c:115:5: warning: ‘codec’ is deprecated [-Wdeprecated-declarations]
     if (priv->formatContext->streams[i]->codec->codec_type == AVMEDIA_TYPE_AUDIO) {
     ^~
In file included from ffcompat.h:33:0,
                 from ad_ffmpeg.c:29:
/usr/include/libavformat/avformat.h:893:21: note: declared here
     AVCodecContext *codec;
                     ^~~~~
ad_ffmpeg.c:126:3: warning: ‘codec’ is deprecated [-Wdeprecated-declarations]
   priv->codecContext = priv->formatContext->streams[priv->audioStream]->codec;
   ^~~~
In file included from ffcompat.h:33:0,
                 from ad_ffmpeg.c:29:
/usr/include/libavformat/avformat.h:893:21: note: declared here
     AVCodecContext *codec;
If however, you see actual errors that stop the compile before its completed, you'll need to work out what's wrong & correct the problems before trying again.

(If you need to start over, first run the command

Code: Select all

make distclean
which will tidy up the source directory before you try again)

If the compile completes without error, it doesn't tell you except to say

Code: Select all

 Done


:)

Next step is to install what you've just compiled:

Code: Select all

make install
(for lots of distros you'll probably have to be root for this, so the command will be something like sudo make install)

You'll see some output similar to this:

Code: Select all

install -d /usr/local/bin
install -d /usr/local/lib/carla/jack
install -d /usr/local/lib/pkgconfig
install -d /usr/local/include/carla/includes
# Create directories (gui)
install -d /usr/local/lib/carla/styles
install -d /usr/local/share/applications
install -d /usr/local/share/icons/hicolor/16x16/apps
install -d /usr/local/share/icons/hicolor/48x48/apps
install -d /usr/local/share/icons/hicolor/128x128/apps
install -d /usr/local/share/icons/hicolor/256x256/apps
install -d /usr/local/share/icons/hicolor/scalable/apps
install -d /usr/local/share/mime/packages
install -d /usr/local/share/carla/resources
install -d /usr/local/share/carla/modgui
install -d /usr/local/share/carla/patchcanvas
install -d /usr/local/share/carla/widgets
# -------------------------------------------------------------------------------------------------------------
# Install script files (non-gui)
install -m 755 \
    data/carla-single \
    /usr/local/bin
# Adjust PREFIX value in script files (non-gui)
sed -i -e 's?X-PREFIX-X?/usr/local?' \
    /usr/local/bin/carla-single
# Install backend libs
install -m 644 \
    bin/libcarla_*.* \
    /usr/local/lib/carla
# Install other binaries
install -m 755 \
    bin/*bridge-* \
    bin/carla-discovery-* \
    /usr/local/lib/carla
# Install custom libjack
install -m 755 \
    bin/jack/libjack.so.0 \
    /usr/local/lib/carla/jack
# Install pkg-config files
install -m 644 \
    data/*.pc \
    /usr/local/lib/pkgconfig
# Adjust PREFIX, LIBDIR and INCLUDEDIR in pkg-config files
sed -i -e 's?X-PREFIX-X?/usr/local?' \
    /usr/local/lib/pkgconfig/carla-native-plugin.pc \
    /usr/local/lib/pkgconfig/carla-standalone.pc \
    /usr/local/lib/pkgconfig/carla-utils.pc
sed -i -e 's?X-LIBDIR-X?/usr/local/lib?' \
    /usr/local/lib/pkgconfig/carla-native-plugin.pc \
(Again, there will be a lot more than this)

Finally, just for completeness, run the command

Code: Select all

ldconfig
This usually doesn't show any output in the terminal.
(We do this to make sure that all the libraries and links to libraries are set up optimally.)


Finally
=====

Well, if all has gone without errors or problems, you should have a working Carla system installed.

If you now start up LMMS, you should see Carla Patchbay and Carla Rack in the LMMS Instrument Plugins.

Image

What if I have problems?
===================

I'm likely to be an infrequent visitor to these forums, so I can't promise to be here to help you troubleshoot your Linux questions.
But I've looked around, and there are some switched-on Linuxy people around here, and there are other proper Linux forums and resources you can refer to.

Hope this has been some help ...
Hey, I got this to work by adding the KXStudio repository and then doing "sudo apt-get install carla-git"
Not everybody is using the same distro as you, so that's why I didn't just write " do sudo apt-get install carla-git".

If someone is using one of the less common distros, for instance, they might need some guidance.

Someone who can follow the instructions on eg kxstudio & have it work first time OK doesn't need the help that's offered here.
Good to hear you got it working.

Last time I tried I had download a version of Carla that work kinda like the appimage file version of LMMS.
No compiling or installation needed. ( pre complied binaries )

That one did not show up in LMMS though. When I talked to the LMMS devs, they told me they had to take a look at that.

Maybe I will try again and compile Carla myself, or see if the lmms devs fixed it.

Would love to have Carla.

Its funny I ones compiled DOOM 3 to run on Linux, and that was very easy, unlike LMMS and Carla.

https://www.youtube.com/watch?v=YQ7GSIDG3PE

On OpenSUSE, you need to get the dev files, so you open yaat, and install both the dependencies, and the .dev files.

Its also possible to just install all dependencies, then also in yast choose install all dev files.

Carla from the official opensuse repositories was not compiled with wine support, but it did show up in LMMS.
I'm a Linux newb but managed to get it working on Bodhi Linux a few days ago.

Then, after reinstalling Bodhi I could not get it to work a second time.

After several hours of intense 'trying everything', I lucked on to getting it to work again, integrated with and showing up in LMMS.

What worked this time was to install LMMS (.AppImage) and Wine 3.0, also the 64-bit VST3 Surge (for Linux), and then get the latest Carla source code (zip) from https://kx.studio/Applications:Carla

Before installing, I followed the instructions in the INSTALL.md file, especially:

" Under Debian based systems, you can use this command to install everything: "
(They dev asks that we don't post the code because it's always being updated... but it's in the INSTALL.md file)

Because I'm a novice I'm not sure exactly what made it work but I am very happy. Surge is a great synth and I did not see it working in the Windows version of LMMS. Surge works great (with GUI) in the Linux/Carla version of LMMS.