LinuxSampler

About
news about features screenshots demos download support developers faq documentation bugs instruments links credits

The Project

The LinuxSampler project was founded with the goal to produce a free, streaming capable open source pure software audio sampler with professional grade features, comparable to both hardware and commercial Windows/Mac software samplers and to introduce new features not yet available by any other sampler in the world.

The Engine

LinuxSampler was designed very modular, especially (and in contrast to other samplers) it was decoupled from any user interface. LinuxSampler itself usually runs as own process in the background of the computer and usually does not show up anything on the screen, or at most it can be launched to show status informations and debug messages in a console window:



That means LinuxSampler itself is the "engine" of the sampler, it is the software component which performs all the heavy and time critical computational tasks of handling MIDI events, calculating the audio data and sending the final audio data to your sound card(s). We call LinuxSampler the sampler backend.

The Face(s)

Obviously you need some way to control the sampler. That's where a 2nd application comes into game, which we call a sampler frontend application. A frontend is (usually) a graphical application, visible on the screen, providing the user a set of e.g. menus, buttons, sliders, dials, etc. to allow the user to control the sampler in a convenient way. It merely sends the user requests to the sampler engine (LinuxSampler) and in turn shows the engine's status informations on the screen. A frontend does not perform any signal processing tasks, so you can see it as a "face" of the sampler.

For luxury we already provide you two different frontends / "faces" for LinuxSampler:

  • QSampler is a light-weight frontend written in C++, using straightforward native graphical controls of the underlying operating system. That way the appearance of QSampler on the screen is very fast and it only consumes very little resources. Due to its utilization of the operating system's common GUI controls, it looks slightly different on every operating system (also dependent of the user's selected theme on his OS):

     

    Note however, QSampler does not fully support all features of the sampler engine (LinuxSampler) yet. Most notably the engine's instruments database feature is not yet covered by QSampler. But if you don't need that particular feature, you're certainly fine with QSampler as well.

  • JSampler is a full-fledged frontend for LinuxSampler, written in Java and currently comes in two flavors: JSampler "Classic" offers straightforward GUI controls whereas JSampler "Fantasia" provides a modern skin based user interface:


    JSampler supports all features currently available in the sampler engine (LinuxSampler). Also note that even though JSampler is written in Java and slightly more hungry regarding resources (compared to QSampler), this usually does not have any impact on the audio rendering performance of the sampler, since the engine runs completely independently and with much higher CPU priority than the frontend(s).

It's completely up to you which frontend to use. You could even use both parallel at the same time for the same sampler engine instance, really! ;-) You're concerned that your sampler frontend might waste precious resources of your computer? No problem, just setup the sampler session for your needs and then quit the frontend application. The sampler engine doesn't care! It continues to do its job. You need to change something? Start the frontend again (or another frontend) and you see what you expect to see: the current setup and state of the running sampler engine.

The Format

It is planned to support all common sampler formats in LinuxSampler, but at the moment we chose to concentrate on the Gigasampler format, because when we started this project, the Gigasampler format was (in our opinion) the most popular and "best" sampler format in regards of quality and power, especially for the synthesis of natural instruments like pianos, brass and bowed instruments. But we already made good advance in implementing this format, so we are optimistic to start with adding other formats soon. Beside that we also planned to design our own, sophisticated sampler format to introduce a more powerful and more flexible sampler format compared to any sampler format currently available in the world. Be encouraged to share your ideas about such a new format with us!

The Editor

gigedit allows you to edit and create instruments for the Gigasampler format, which can be used with LinuxSampler as well as with Tascam's Gigastudio. Following our line of modularity we also made the instrument editors independent applications. Because let's face it: every sampler format is different, so in our opinion it is better to honor the specific features of one format with its own instrument editor application instead of trying to fiddle everything into one single bloated application. So gigedit is our first editor, dedicated to the .gig format:


You can use gigedit as stand-alone application or in conjunction with LinuxSampler. For the latter case gigedit installs a plugin into the sampler engine, so the engine (and with it the frontends) knows that gigedit actually exists and can handle the .gig format. So even though we decoupled the sampler's components into independent applications, they all work seamlessly together. Just press the "Edit" button on a channel strip of a frontend and gigedit will automatically popup on the screen and you're immediately ready to edit your selected instrument, making all your modifications audible in realtime. Even when editing huge instruments of 1GB or more, tweak the instrument with gigedit and immediately hear it while playing on the keyboard at the same time. And the good thing: even with new sampler formats we're going to add soon (and with it new editors), you don't have to remember which instrument you loaded uses which format. Simply click on "Edit" in a frontend and the sampler engine will choose the right instrument editor application for the respective instrument for you.

The Technical Interface

As the components of the sampler are independent applications, there must be a way to let the applications communicate with each other. For this LinuxSampler provides a native C++ API as well as a network interface using an ASCII based protocol which we call "LSCP" for controlling the sampler engine and managing sampler sessions. Our frontends support that network interface, which also allows to control the sampler engine with the GUI frontend(s) remotely from another computer, probably even running a completely different Operating System. And compared to other remote control solutions, the frontend won't feel sluggish, as the frontend is running on your local machine.

You can also configure your computer to automatically start the sampler engine and loading your prefered sampler session without any frontend, simply by using a LSCP session file. How do you get such a "LSCP session file"? Both frontends write LSCP session files for you when you request them to save your current sampler session. And as those LSCP session files are ordinary human readable text files, you can adjust them with any text editor if you want.

The Compatibility

LinuxSampler is available for the most popular operating systems and already supports a variety of audio and MIDI driver systems on each OS. It does not require any special dedicated device drivers from the sound card manufacturers, so you can also use it with cheap consumer cards. Due to its clean design the sampler can be ported to other operating systems and extended for further driver systems with a minimum of effort. So we're prepared for the future!

The Community

You need a helping hand? You certainly get the answers on your personal questions on our web forum.

All applications are under active development. However we all work on this project for fun in our spare time. There are still so many things to do and our hands are limited. So don't hesitate on participating to the project! You don't necessarily need to be a skilled programmer to help the project. Testing the applications, reporting bugs, writing documentation, providing artwork, themes for frontends, etc. helps us and all users a lot! Simply subscribe to our developers mailing list and we'll of course take you by the hand in case you want to participate with active source code development. Don't be afraid! You have your own ideas and concepts for making the sampler better? Great, share them with us!