LinuxSampler

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

Documentation

This is still quite under construction. Be welcome to help us with writing some documentation!

gigedit

This is our graphical instrument editor based on the Gtk toolkit. It can be used stand-alone or in conjunction with LinuxSampler. Read the Gigedit Quickstart for a short tutorial. Please notice that this quickstart document is automatically generated from CVS and thus might reflect features and behaviors only available in the very latest, bleeding edge development version of gigedit from CVS.

LSCP Reference

The following document defines the network protocol with which LinuxSampler can be controlled. As this is a simple ASCII based protocol it's possible to write a frontend for LinuxSampler in any programming language and GUI library. There's still a big demand especially for a Gtk and ncurses based frontend, so be encouraged and let us know if you wrote a frontend for LinuxSampler! This is the protocol specification of the old official release of LinuxSampler (0.3.3):

LinuxSampler Control Protocol v1.0 (ASCII, HTML, XML)

This is the protocol specification of the latest official release of LinuxSampler (0.4.0):

LinuxSampler Control Protocol v1.1 (ASCII, HTML, XML)

The following is the very latest draft of the protocol (which usually reflects the latest development state from CVS or may even not be implemented yet):

LinuxSampler Control Protocol Draft (ASCII, HTML, XML)

The protocol will be extended from time to time. You may look at the features site to see which control commands are already implemented and which are not.

Example LSCP scripts

If you don't want / can't use a GUI frontend you will probably write some LSCP scripts for using with linuxsampler to setup your needed sampler session. It follows some common LSCP examples to give you a good starting point for writing your own ones. Adjust it to your needs and send it to the running linuxsampler application with:

1
cat yourscript.lscp | netcat localhost 8888

Optionally you can also use a graphical frontend like QSampler one time to setup a working sampler session for your needs and save it. Because you have to know that the files saved by our frontends are actually pure LSCP scripts, thus you can i.e. use those files simply with the mentioned netcat command from above to setup the sampler session without a frontend.

Here is a simple LSCP example which uses ALSA as MIDI input and as audio output driver as well, it creates only one sampler channel using the Gigasampler engine and loads a Piano instrument on that sampler channel:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#enable echo mode
SET ECHO 1

# load the ALSA audio driver
# (parameter CARD is optional, I use it here to select my 2nd sound card
#  you can use 'GET AUDIO_OUTPUT_DRIVER_PARAMETER INFO ALSA CARD' to get
#  all available sound cards)
CREATE AUDIO_OUTPUT_DEVICE ALSA CARD='1,0'

# load the ALSA MIDI driver
CREATE MIDI_INPUT_DEVICE ALSA

# connect my MIDI keyboard which has ALSA seq ID '72:0'
# (see 'aconnect -i' for the IDs of your MIDI devices
#  or use 'GET MIDI_INPUT_PORT_PARAMETER INFO 0 0 ALSA_SEQ_BINDINGS')
SET MIDI_INPUT_PORT_PARAMETER 0 0 ALSA_SEQ_BINDINGS='72:0'

# setup a sampler channel
ADD CHANNEL
LOAD ENGINE gig 0
SET CHANNEL AUDIO_OUTPUT_DEVICE 0 0
SET CHANNEL MIDI_INPUT_DEVICE 0 0
LOAD INSTRUMENT '/home/me/Gigs/PMI Steinway D.gig' 0 0

# finally show our channel setup (optional of course)
GET CHANNEL INFO 0

# quit connection
QUIT

The next example uses JACK as audio output driver instead and automatically connects the two output channels of LS's JACK client to the first two ALSA PCM channels, so you can hear something without having to manually connect it e.g. with qjackctl:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
#enable echo mode
SET ECHO 1

# load the JACK audio driver
CREATE AUDIO_OUTPUT_DEVICE JACK

# connect to ALSA playback JACK client so we can hear something
# (you can use 'GET AUDIO_OUTPUT_CHANNEL_PARAMETER INFO 0 0 JACK_BINDINGS'
#  to get all available JACK clients / ports)
SET AUDIO_OUTPUT_CHANNEL_PARAMETER 0 0 JACK_BINDINGS='alsa_pcm:playback_1'
SET AUDIO_OUTPUT_CHANNEL_PARAMETER 0 1 JACK_BINDINGS='alsa_pcm:playback_2'

# load the ALSA MIDI driver
CREATE MIDI_INPUT_DEVICE ALSA

# connect my MIDI keyboard which has ALSA seq ID '72:0'
# (see 'aconnect -i' for the IDs of your MIDI devices
#  or use 'GET MIDI_INPUT_PORT_PARAMETER INFO 0 0 ALSA_SEQ_BINDINGS')
SET MIDI_INPUT_PORT_PARAMETER 0 0 ALSA_SEQ_BINDINGS='72:0'

# setup one sampler channel
ADD CHANNEL
LOAD ENGINE gig 0
SET CHANNEL AUDIO_OUTPUT_DEVICE 0 0
SET CHANNEL MIDI_INPUT_DEVICE 0 0
LOAD INSTRUMENT '/home/me/Gigs/PMI Steinway D.gig' 0 0

# finally show our channel setup (optional of course)
GET CHANNEL INFO 0

# quit connection
QUIT

The next example is a bit more complex. It shows how to setup a more realistic sampler session, handle routing of MIDI input channels, handle routing of audio channels, it uses JACK again as audio output driver, but creates the JACK client with four output channels instead, it creates two sampler channels, loads two different instrument on those two sampler channels and alters the audio channel routing so that the two output channels of sampler channel 1 are routed to the first two JACK output channels and the two output channels of sampler channel 2 are routed the second pair of the JACK client's output channels. That way you could e.g. record the output of those two sampler channels independently or apply independent LADSPA effects on it.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
# enable echo mode
SET ECHO 1

# load audio and MIDI driver
CREATE AUDIO_OUTPUT_DEVICE JACK
CREATE MIDI_INPUT_DEVICE ALSA

# increase the amount of output channels of the LS"s Jack client e.g. to 4
SET AUDIO_OUTPUT_DEVICE_PARAMETER 0 CHANNELS=4

# connect to MIDI keyboard
SET MIDI_INPUT_PORT_PARAMETER 0 0 ALSA_SEQ_BINDINGS="64:0"

# set up 1st sampler channel (using default output channels, that is 0 and 1)
ADD CHANNEL
LOAD ENGINE gig 0
SET CHANNEL AUDIO_OUTPUT_DEVICE 0 0
SET CHANNEL MIDI_INPUT_DEVICE 0 0
LOAD INSTRUMENT "/somedir/The Bosendorfer Imperial Grand Version 2.2.gig" 0 0
SET CHANNEL VOLUME 0 0.40
# by default every sampler channel / engine listens to ALL MIDI channels
# but for multi channel setup it makes sense to distinguish the inputs, so
# let sampler channel 0 listen to MIDI channel 0 (instead of ALL)
SET CHANNEL MIDI_INPUT_CHANNEL 0 0

# set up 2nd sampler channel (using output channels 2 and 3)
ADD CHANNEL
LOAD ENGINE gig 1
SET CHANNEL AUDIO_OUTPUT_DEVICE 1 0
SET CHANNEL MIDI_INPUT_DEVICE 1 0
LOAD INSTRUMENT "/home/me/Gigs/NemeSys_1GB_Grand.gig" 0 1
SET CHANNEL VOLUME 1 0.40
# let sampler channel 1 listen to MIDI channel 1 (instead of ALL)
SET CHANNEL MIDI_INPUT_CHANNEL 1 1
# this will alter the audio channel routing
# connect the engines output channel 0 to JACK clients output 2
SET CHANNEL AUDIO_OUTPUT_CHANNEL 1 0 2
# connect the engines output channel 1 to JACK clients output 3
SET CHANNEL AUDIO_OUTPUT_CHANNEL 1 1 3

# automatic connection between the four 4 ports of LS's Jack client and the
# ALSA PCM JACK client (assuming your sound card has at least 4 outputs ;-)
SET AUDIO_OUTPUT_CHANNEL_PARAMETER 0 0 JACK_BINDINGS='alsa_pcm:playback_1'
SET AUDIO_OUTPUT_CHANNEL_PARAMETER 0 1 JACK_BINDINGS='alsa_pcm:playback_2'
SET AUDIO_OUTPUT_CHANNEL_PARAMETER 0 2 JACK_BINDINGS='alsa_pcm:playback_3'
SET AUDIO_OUTPUT_CHANNEL_PARAMETER 0 3 JACK_BINDINGS='alsa_pcm:playback_4'

# not necessary, just to see our setup
GET CHANNEL INFO 0
GET CHANNEL INFO 1

For a detailed description about LSCP read the LSCP reference. Be welcome to ask details on the mailing list.