The LinuxSampler Project
Here is a collection of frequently asked questions. Please read them before asking on the mailing list.
1.1 Can I use LinuxSampler in commercial hardware or software products?
1.2 Can I use LinuxSampler for commercial music production?
1.3 LinuxSampler is not open source, you are evil!
1.4 Will LinuxSampler turn closed-source?
1.5 I've heard the commercial exception of LinuxSampler was added at a certain version?
1.6 Doesn't LinuxSampler illegally link against libgig?
1.7 Doesn't LinuxSampler illegally link against other libraries?
2. General Questions
2.1 linuxsampler? qsampler? jsampler? libgig? liblscp? jlscp? ... hu?
2.2 Can I use linuxsampler without a GUI as well?
3. Compilation / Installation
3.1 What do I need to compile and install?
3.2 Compilation of LinuxSampler aborts with ...
3.3 How do I checkout from Subversion?
3.4 How do I compile from Subversion?
4.1 Are there example LSCP script files somewhere?
4.2 I get dropouts (click sounds, noise), what can I do about it?
4.3 LinuxSampler aborts at runtime with ...
Can I use LinuxSampler in commercial hardware or software products?
Can I use LinuxSampler for commercial music production?
Hell, yes! Every indirect commercial usage of LinuxSampler, which essentially means using its audio output, can of course be used in commercial applications like music productions, live shows, etc. Don't get us wrong, with the mentioned commercial exception we don't want to restrict the normal user / musician, we just want to avoid somebody to directly make money with our work, that is by selling our software in a sampler product like a sampler + sample library bundle, a hardware sampler or something equivalent, at least not without giving something back to the open source Community.
LinuxSampler is not open source, you are evil!
There are of course many definitions of the term "open source", but according to the definition on Wikipedia LinuxSampler is in fact open source, since you've got complete access to its source code. So due to this fact, a normal user / musician is free to do with LinuxSampler what he likes to do, he can even adjust and tweak every single part of the software by modifying and compiling its source code. And just the fact that we want to avoid our work to be directly exploited in commercial software or hardware products is definitely not an "evil" intention. For the normal user / musician the commercial restriction is even an advantage, since that way commercial actors are forced to support this or another open source project either directly by coding or indirectly by funding and thus increase development speed.
Will LinuxSampler turn closed-source?
No, LinuxSampler will remain open source. Again, the commercial exception is just to prevent commercial exploitation by third parties that haven't contributed anything to open source projects.
I've heard the commercial exception of LinuxSampler was added at a certain version?
No, the commercial exception in LinuxSampler's license terms were there since day one. Even further it's not only there since the very first publicly available CVS (developer) version of LinuxSampler, that commercial exception was even already in Benno Senoner's proof of concept code called "EVO", which LinuxSampler was based on. There was even a rumour that we would have manipulated CVS history to "pretend" this exception wasn't added at a later point. Needless to say that this rumour is completely false as well. Think about it! We're a group of developers spread around the world who work on this project for fun and ideology in our spare time. Most of us contributed to various other open source / free software projects. Do you seriously think we would cheat on such an issue? Beside that you certainly find various people completely unrelated to this project who still have early versions of LinuxSampler and / or EVO and thus can confirm that this commercial exception was always there.
Doesn't LinuxSampler illegally link against libgig?
No! LinuxSampler does not "illegally" link against libgig, since the copyright holder (in this case of libgig) has all rights of his work and thus is not bound to his own license terms. The sole purpose of license terms is to grant other people certain rights to use the work.
Doesn't LinuxSampler illegally link against other libraries?
No, the only library LinuxSampler links to that has license restrictions regarding linking is libgig (see above). Especially LinuxSampler does not break Qt's license terms, since it does not link against Qt at all.
linuxsampler? qsampler? jsampler? gigedit? libgig? liblscp? jlscp? ... hu?
There are currently seven subprojects in the LinuxSampler project; jlscp, jsampler, libgig, liblscp, linuxsampler, gigedit and qsampler. linuxsampler is the core of the sampler, it includes the sampler engines and audio and MIDI drivers. linuxsampler itself is decoupled from any user interface. It offers a native C++ API as well as a network server (LSCP server) to allow to be controlled by an arbitrary user frontend from an arbitrary place over a network connection or (of course) locally from the same machine as well. This decoupled / "backend" design of the sampler allows to run it even on a machine without any graphical interface, without a Desktop, the machine doesn't even have to have a graphics card! qsampler is the first GUI frontend written for linuxsampler, it is written in C++ using the Qt GUI library and thus can be compiled for various architectures and operating systems without modifications of the source code. gigedit is an instruments editor application for Gigasampler format files. You can run it as stand-alone application or in conjunction with LinuxSampler. In the latter case you can play and immediately hear all your modifications made with gigedit in realtime. libgig is a C++ library written for accessing Gigasampler files and DLS Level 1 and 2 files, that is for reading and (since version 3.0.0) also writing of those files. libgig is used by linuxsampler to load Gigasampler files, it is used by gigedit to load, modify and create new Gigasampler files and it can be used by qsampler to retrieve additional informations about Gigasampler files. liblscp is a C library written as a wrapper around the LSCP network protocol, thus to control linuxsampler. It was originally designed to be used on both sides, that is on server / backend side (linuxsampler) and on client / frontend side (e.g. qsampler). But it's now only used on client side by qsampler at the moment. jsampler is another GUI frontend for linuxsampler, it's written in Java and thus platform independent. jlscp is a library which can be compared with liblscp, with the only difference that jlscp is written in Java and liblscp in C. jsampler requires jlscp.
What do I need to compile and install?
You should compile and install at least libgig and linuxsampler. As a beginner you should definitely as well compile and install a convenient GUI frontend like either qsampler or jsampler, whatever you prefer. qsampler depends on liblscp, so you have to compile and install liblscp before starting to build qsampler. Also if you like to be able to edit instruments, you should compile and install gigedit as well. The recommended order to compile and install is:
Of course you can also install QSampler and JSampler side by side. So you can test and use both at the same time.
Compilation of LinuxSampler aborts with ...
CXXFLAGS="-O3" ./configure make
Alternatively you could also disable all hand-crafted assembly optimization code by:
./configure --disable-asm make
but the latter is definitely not recommended, as it will increase CPU usage a lot!
gcc --version g++ --version
In case you already got gcc and g++ of version 3.3 or higher installed and it still causes the compilation error mentioned above, try the following:
export CC=`which gcc` export CXX=`which g++`
On certain systems however you still get this error in conjunction with older versions of LinuxSampler (v0.3.3 and older). Fortunately newer versions of linuxsampler are not affected anymore (read this for details).
How do I checkout from Subversion?
How do I compile from Subversion?
The procedure for compiling from Subversion is the same for all subprojects, that is no matter if you are compiling linuxsampler, qsampler, libgig or liblscp from Subversion, you need to have the autotools (automake, autoconf and libtool) installed and compile it that way:
make -f Makefile.cvs ./configure make
Can I use linuxsampler without a GUI as well?
Yes, but unfortunately there is no console based frontend for linuxsampler (yet). You have to write LSCP scripts and send it to the running linuxsampler application. But don't worry, if you don't know how to write LSCP scripts, you can also start by saving a sampler session with QSampler, because the session files qsampler writes are actually real LSCP scripts. You can send a LSCP script to linuxsampler on the console with the following command:
netcat localhost 8888 < yourscript.lscp
or on certain systems (like Debian) you have to provide the -t switch:
netcat -t localhost 8888 < yourscript.lscp
Of course you can also replace localhost by the IP address of the machine where linuxsampler is running. Alternatively you can also make a telnet connection (port 8888) to linuxsampler's LSCP server and type commands manually.
Are there example LSCP script files somewhere?
Yes, have a look on the Documentation site for some common LSCP script examples. For details about LSCP read the LSCP reference. Be welcome to ask questions for details about LSCP on the mailing list.
I get dropouts (click sounds, noise), what can I do about it?
In order to achieve good results under Linux you need to have a patched kernel. There are different patches available depending on what version (2.4.x or 2.6.x) of kernel you use. The JACK FAQ site (or the old JACK FAQ site) is also a good resource for how to configure a realtime stable kernel. But note; LinuxSampler currently has not support for libcap yet, that means if you are still using a 2.4.x Linux kernel you most probably have to run LinuxSampler with root priviliges. As a rule of thumb: if you don't get warnings like "cannot mlockall() memory" on the console, you are safe to run it as ordinary user as well.
LinuxSampler aborts at runtime with ...
Note: For Windows specific runtime errors, please have a look at the Trouble Shooting section of the LinuxSampler Windows HOWTO.
Usually most of those settings are set to "unlimited" on most boxes. If this is not the case on yours, make sure that at least the limits for "max locked memory", "virtual memory" and "data seg size" are sufficiently high enough. The exact value depends on the instruments you want to load. If your security policy allows it, you could simply set those limits to "unlimited" (see also config file /etc/security/limits.conf and bug report #41).