The Project
The LinuxSampler project was founded in 2002 with the
goal to produce a free, streaming capable open source pure
software audio sampler with high stability, efficiency and very
low latency, providing 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.
Sampler Formats
Virtual instruments (i.e. pianos, drums, orchestra ensembles) based
on sampler software are created and distributed as files, which
essentially contain recorded audio samples plus so called
articulation informations. The latter are a very important
factor to make audio samples assemble a realistic sound of i.e.
natural instruments. The are defining when and how exactly
the individual audio samples shall be played back and modified by
the sampler. So a sampler format is made up of two things:
-
File format: which defines how audio samples and
articulation informations are stored in files exactly.
- Synthesis model: which defines what the sampler sampler
can do with audio samples, and how the sampler should interpret
the articulation informations stored in files.
It is planned to support all common sampler formats in
LinuxSampler. At the moment the sampler supports the following
three:
-
GigaStudio/GigaSampler Format:
First format ever supported by LinuxSampler and hence probably
the most mature option in LinuxSampler right now. When we
started to develop LinuxSampler back in 2002, we chose to
concentrate on this commercial sampler format first, because at
that point it was (in our opinion) the most popular and "best"
sampler format in regards of quality and features, especially
for the synthesis of natural instruments like pianos, brass and
bowed instruments. Some of the best sounding orchestra
libraries were made in this format at that time.
In contrast to all those commercial samplers
out there who claim to support the GigaStudio/GigaSampler format,
we invested many years and a lot of effort to reassemble the original
sound of this format as exactly as possible, as it was with the
original GigaStudio PC software. Other samplers usually provide
only raw sample playback for this format and - if at all - only
limited support for its articulations and synthesis model.
LinuxSampler however is providing i.e. envelopes and filters
with very precise characteristics and accuracy of the original
ones used in the original GigaStudio software. We even
reassembled the "warty" parts of the format, that is strange
aspects of the format. All this just to fulfill one goal:
playing back your huge collection of high class .gig instruments with
LinuxSampler exactly as they sounded like with GigaStudio!
And as of to date there is probably no other sampler out there
which does that job better.
-
SoundFont Format:
Being a very popular sampler format, supported by numerous
hardware devices and sampler software products for many years,
we also added support for the SoundFont format. However, since
this format is fairly old and limited we did not spend as much
effort on it than on the other formats. So there is currently
not full support for all aspects of this format yet. Be invited
to help us on finishing support for this format!
-
SFZ Format: Not to be interchanged with the
SoundFont format! Even though their names suggest them to
be similar, and also being initiated by the same company, the SFZ
format does not have much in common with the SoundFont format!
The SFZ format is a quite new one, an open format that is also
used as basis in many commercial sampler products. It has the
potential to become a broad standard format among sampler
products. It is extensible for custom features, provides
articulation information in human-readable text form and samples
are usually stored as separate files along to the articulation
files. The latter also allows a variety of audio formats to be
used and gives sound designers and their customers various
advantages to work with.
Due to its high potential we recently spent a lot of time in
supporting this format in LinuxSampler. A lot of this format is
already supported (v1 and v2) in
LinuxSampler, also extensions of commercial samplers, and we
continue to evolve support for this format.
Along to these formats, we have been thinking about creating our
own, new sampler format from scratch, for providing new sampler
features currently not available in any sampler yet. However when
we started adding support for SFZ, we realized such features should
rather be implemented as extension to the SFZ format.
Instrument Editors
For creating new virtual instruments and for adjusting your
existing ones, you may want to use an instrument editor.
LinuxSampler was designed decoupled from instrument editors, but
provides extensive support for cooperation with instrument editor
applications. Especially for the aspect of being able to edit an
instrument while playing it in the sampler, and for making all
changes audible immediately and without reloading the sounds into
sampler.
Currently we implemented the following instrument editor
application:
gigedit allows you to edit and create instruments
for the GigaStudio/Gigasampler format, which can be used with LinuxSampler
as well as with Tascam's original Gigastudio software. Following our line of
modularity we also made this instrument editor an independent
application. 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.
Technical Interfaces
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.
Compatibility & Cross Platform
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!
Sequencer & DAW Plugin Support
The sampler can be run stand alone as well as host plugin in popular
sequencer or digital audio workstations like Cubase, Logic, Ardour,
QTractor, Reaper and many more. At the moment the sampler supports
the host plugin formats VSTi (v2), AudiUnit (AU), DSSI and LV2.
You can also load effect plugins into the sampler, for them being
used on parts or as master effects. Currently only the LADSPA plugin
format is supported for sampler internal effects.
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!