topics:
about kluppe
kluppe is a looper software, built with live performances in mind. it runs under linux and uses jack for audio i/o. it is released under the GNU license. you can download, use and redistribute it for free. i wrote it for my own needs, but i'm always happy to hear about other people's experiences or needs concerning kluppe. if you want to contact me please write to kluppe@klingt.org.
click here for a screenshot of kluppe in action.
^ back to top
downloading, compiling & starting kluppe
kluppe's current version (0.6.15) can be downloaded here.
in order to use kluppe, you will have to compile it. since it uses some libraries, you should install them first, including the developers versions.
the libraries are: jack, gtk, libxml liblo libusb libsndfile and libasound2.
on my "debian unstable" system i get all i need for compiling with the following command (as root):
apt-get install gcc make libgtk2.0-dev libsndfile1-dev libxml2-dev libjack0.100.0-dev libusb-dev liblo0-dev libasound2-dev
this will install the needed libraries and header files plus compiler and make (just in case you don't have them already).
if you are not using a debian based linux system, please have a look at the documentation of your distribution for help installing the libraries.
next you have to unpack and compile kluppe:
cd /usr/local/src [change to a working directory]
tar -xvzpf /path/to/kluppe-VERSION.tar.gz [unzip kluppe (insert correct path and filename)]
cd kluppe-VERSION [jump into the unpacked directory]
make [this is the compile command]
su [become root if you are joe-user]
make install [install kluppe's files in /usr/local/bin and /usr/local/share/pixmaps]
congratutalion. you did it :)
click here for a screenshot of a typical compilation.
if you use debian linux you can simply "apt-get install kluppe (currently in the unstable branch)". for other .deb based systems (ubuntu...) you can get the kluppe debian package directly from paul brossier' page.
for rpm-based distributions (fedora, suse, mandrake...) binary packages can be found here.
be aware, this binary packages may contain an older version of kluppe.
before you start kluppe, you will have to start the jack daemon.
please visit the jack homepage for instructions, if you don't know how to use jack.
once jack is up and running, you can simply start kluppe with kluppe or kluppe /path/to/projectfile.klp.
^ back to top
basic concepts and functionality
after startup, kluppe will automatically connect the main output to the soundcards output ports via jack. also it will connect the input ports of a looper to soundcards inputs when you create it.
you can always use a jack-connection software like qjackctl to adjust the connections as you need them.
vie kluppe's filedialog, you can alwas save and load the actual state of kluppe projects.
these files are stored in ~/.kluppe/ by default and usually have .klp extensions.
kluppe consists of several loopers, each of them hosting a buffer.
to start using kluppe, you first have to open a new looper (menu: file->new looper or "new looper" button at the lower left corner.)
every looper sends it's output to kluppe's main out (L+R). alternatively a looper has seperate jack-outputs for sound and the actual playback position. thus you can route every single looper according to your needs.
next you have to create or load a buffer. again, this can be done via file menu. or the buttons in the bottom row.
the difference between the three methods is: "new buffer from file" loads a soundfile from disk into RAM. so far kluppe can only handle uncompressed sound formats (no .ogg, .mp3 or similar). "new discstream" opens a soundfile and only copies the actually needed data into memory. this feature is great for long soundfiles (e.g. many minutes), but has the drawback of a greater risk of dropouts while playing and no recording into the file. "new empty buffer" creates a buffer without content in your desired length. ou can fill it via jack-streams.
beware of big buffers. since kluppe is optimized for live-performances, all buffers are kept as raw data in memory.
a buffer can be mono or stereo, and every buffer can be assigned to several loopers. thus you can play with one soundfile in two or more different loopers, loading it into memory only once.
for every looper you created, you can assign a buffer via it's buffer menu (1).
now you can start playing (2) the buffers content and recording (3).
if you got that far, you should really stop reading this documentation and start exploring kluppe in real life now ;-).
^ back to top
looper waveform gui
above is an example of a typical waveform view. you can record into a buffer and play back independently at the same time. the playback selection is (bright-)blue, while the recording selection is red. if the two selections overlap (or if they are identical) the color is pink.
the locators for playback and recording are green and red. the recording locator will always run at regular speed, while the playback locator can change it's speed and direction. most of the looping-controls can be done via mouse operations:
the normal operation is to link the recording selection to the playback selection. in this mode the left mouse button will change both areas. if you want to change rec. and playback independently you have to uncheck "link rec to play loop" in the loopers options menu.
left mouse button (playback):
if the options "snap to grid" and "show grid" are enabled in a loopers "options" menu, the mouse operations will snap into an adjustable rhytmic grid. here is another example, showing a stereo buffer with grid and overlaping selections:
^ back to top
looper controls
as a quick help, you can always hold the mouse cursor over a looper's control element and a tooltip will appear:
here is a description of a loopers gui-elements:
^ back to top
looper menus
a loopers menu has 3 entries:
the buffer menu:
the options menu:
the playmode menu:
this menu will let you define the mode in which the looper plays the buffer's sounds.
the custom playmode dialog:
here you can draw your own playmode.
if the looper is in "custom position" playmode, this dialog represents the position of the playlocator (y-axis) according to the position the playlocator *would* have in loop mode (x-axis).
if the looper is in "custom speed" mode, this dialog represents the speed of the playlocator (y-axis) according to the regular position of the playlocator in loop mode. just try it and you will find out.
^ back to top
if you want to contact me please write to kluppe@klingt.org.
- about kluppe
- downloading, compiling & starting kluppe
- basic concepts and functionality
- looper waveform gui
- looper controls
- looper menus
about kluppe
kluppe is a looper software, built with live performances in mind. it runs under linux and uses jack for audio i/o. it is released under the GNU license. you can download, use and redistribute it for free. i wrote it for my own needs, but i'm always happy to hear about other people's experiences or needs concerning kluppe. if you want to contact me please write to kluppe@klingt.org.
click here for a screenshot of kluppe in action.
^ back to top
downloading, compiling & starting kluppe
kluppe's current version (0.6.15) can be downloaded here.
in order to use kluppe, you will have to compile it. since it uses some libraries, you should install them first, including the developers versions.
the libraries are: jack, gtk, libxml liblo libusb libsndfile and libasound2.
on my "debian unstable" system i get all i need for compiling with the following command (as root):
apt-get install gcc make libgtk2.0-dev libsndfile1-dev libxml2-dev libjack0.100.0-dev libusb-dev liblo0-dev libasound2-dev
this will install the needed libraries and header files plus compiler and make (just in case you don't have them already).
if you are not using a debian based linux system, please have a look at the documentation of your distribution for help installing the libraries.
next you have to unpack and compile kluppe:
cd /usr/local/src [change to a working directory]
tar -xvzpf /path/to/kluppe-VERSION.tar.gz [unzip kluppe (insert correct path and filename)]
cd kluppe-VERSION [jump into the unpacked directory]
make [this is the compile command]
su [become root if you are joe-user]
make install [install kluppe's files in /usr/local/bin and /usr/local/share/pixmaps]
congratutalion. you did it :)
click here for a screenshot of a typical compilation.
if you use debian linux you can simply "apt-get install kluppe (currently in the unstable branch)". for other .deb based systems (ubuntu...) you can get the kluppe debian package directly from paul brossier' page.
for rpm-based distributions (fedora, suse, mandrake...) binary packages can be found here.
be aware, this binary packages may contain an older version of kluppe.
before you start kluppe, you will have to start the jack daemon.
please visit the jack homepage for instructions, if you don't know how to use jack.
once jack is up and running, you can simply start kluppe with kluppe or kluppe /path/to/projectfile.klp.
^ back to top
basic concepts and functionality
after startup, kluppe will automatically connect the main output to the soundcards output ports via jack. also it will connect the input ports of a looper to soundcards inputs when you create it.
you can always use a jack-connection software like qjackctl to adjust the connections as you need them.
vie kluppe's filedialog, you can alwas save and load the actual state of kluppe projects.
these files are stored in ~/.kluppe/ by default and usually have .klp extensions.
kluppe consists of several loopers, each of them hosting a buffer.
to start using kluppe, you first have to open a new looper (menu: file->new looper or "new looper" button at the lower left corner.)
every looper sends it's output to kluppe's main out (L+R). alternatively a looper has seperate jack-outputs for sound and the actual playback position. thus you can route every single looper according to your needs.
next you have to create or load a buffer. again, this can be done via file menu. or the buttons in the bottom row.
the difference between the three methods is: "new buffer from file" loads a soundfile from disk into RAM. so far kluppe can only handle uncompressed sound formats (no .ogg, .mp3 or similar). "new discstream" opens a soundfile and only copies the actually needed data into memory. this feature is great for long soundfiles (e.g. many minutes), but has the drawback of a greater risk of dropouts while playing and no recording into the file. "new empty buffer" creates a buffer without content in your desired length. ou can fill it via jack-streams.
beware of big buffers. since kluppe is optimized for live-performances, all buffers are kept as raw data in memory.
a buffer can be mono or stereo, and every buffer can be assigned to several loopers. thus you can play with one soundfile in two or more different loopers, loading it into memory only once.
for every looper you created, you can assign a buffer via it's buffer menu (1).
now you can start playing (2) the buffers content and recording (3).
if you got that far, you should really stop reading this documentation and start exploring kluppe in real life now ;-).
^ back to top
looper waveform gui
above is an example of a typical waveform view. you can record into a buffer and play back independently at the same time. the playback selection is (bright-)blue, while the recording selection is red. if the two selections overlap (or if they are identical) the color is pink.
the locators for playback and recording are green and red. the recording locator will always run at regular speed, while the playback locator can change it's speed and direction. most of the looping-controls can be done via mouse operations:
the normal operation is to link the recording selection to the playback selection. in this mode the left mouse button will change both areas. if you want to change rec. and playback independently you have to uncheck "link rec to play loop" in the loopers options menu.
left mouse button (playback):
- click into the playback selection and drag the mouse to move it.
- moving left <-> right shifts the selection, moving the mouse up <-> down resizes it.
- grab the border of a selection to resize it.
- hold "shift" before pressing the left mouse button to freeze the size of the selection and just move it.
- hold "ctrl" before pressing the left mouse button to set the locator and move the mouse to "scratch".
hold shift on release and the speed will stay as it was. don't hold shift to jump back to the old speed.
- select an area of the buffer by click'n'drag to zoom in.
- hold shift and click'n'drag to zoom out.
- click into the recording selection and drag the mouse to move it.
- moving the mouse left <-> right shifts the selection, moving the mouse up <-> down resizes it.
- grab the border of a selection to resize it.
- hold "shift" before pressing the left mouse button to freeze the size of the selection and just move it.
- hold "ctrl" before pressing the left mouse button to set the locator. recording has no "scratch"-mode.
if the options "snap to grid" and "show grid" are enabled in a loopers "options" menu, the mouse operations will snap into an adjustable rhytmic grid. here is another example, showing a stereo buffer with grid and overlaping selections:
^ back to top
looper controls
as a quick help, you can always hold the mouse cursor over a looper's control element and a tooltip will appear:
here is a description of a loopers gui-elements:
- volume slider and vu-meter (1). adjust the playback volume here and watch the results.
- recording mixer and vu-meter (2). this mixer slider lets you control the ratio between a buffers content and the newly recorded material. a value of 1 means: just the new stuff. 0 means mix old and new sounds equally. -1 means just the old stuff. greater than 1 and below -1 menas overdrive. the vu-meter shows the level of the incoming signal.
- there are three numberboxes for the size and position of the playback selection inside the buffer (3).
they reflect the exact start,end and length of the selection. - 4 shows the equivalent start,end and length values of the recording selection.
- 5a and 5b represent the number and density of grains. see chapter grain settings dialog for details.
- 6a shows/sets the stereo position of a loopers playback.
- 6b allows you to do "auto-panning". this function bypasses 6a and wipes the pan conitnuously.
- it is likely that you can totally ignore 7. this button toggles the usage of a usb control called shuttle xpress. i use this as a mouse replacement in live situations.
- 8 lets you minimize a loopers height and lets you optimize you precious desktop space.
- there is no 9
^ back to top
looper menus
a loopers menu has 3 entries:
the buffer menu:
- normalize active/play/rec normalizes the buffer/ the playselection / or the recoring selection.
the "loudest" part will have maximum amplitude afterwards. if the looper represents a discstream you can only normalize the entire file (no parts of it). in that case normalization will be non-destructive (will not change the file). - clear active/play/rec will fill the selection or buffer with zeros.
- save active/play/rec will open a file dialog and let you select a soundfile name for writing the buffers/selections content to disk.
- at the bottom of the buffer menu you will find all buffer names. this is the place to select a new buffer for your looper.
the options menu:
- link rec to play loop will link the two selections in the buffer. every change to the playselections length or position will also be assigned to the recording selection. this option is enabled by default.
- keep absolute looplength if this option is enabled and you change a loopers playback speed, then the size of the playback selection will change accordingly to keep the total length of played sound the same. this option doesn't work properly.
- limit i/o signal helps you preventing digital clipping by limiting the signal. this limiter is very simple and changes the sound at high amplitudes.
- zoom to play / rec / overview will zoom the loopview.
- snap to grid will cause grid bars in the loopview to be "magnetic" and help you to keep the looplength as you want it.
- show grid toggles the gridview.
- grid settings opens the grid dialog and lets you adjust the width and metric of the grid:
- grain settings opens the grain dialog:
if the number of grains is higher than 0, the granular playmode is activated. in this mode you will have several "playheads" playing at the same time. their speed and looplength is independent from the main playlocator and if the graindensity is lower than 100% they will not always play. min / max speed and size defines a range. withing this range the values will be assigned randomly. - close this looper closes this looper.
the playmode menu:
this menu will let you define the mode in which the looper plays the buffer's sounds.
- loop is the default playmode. the playlocator will start at the beginning and jump back to the start when reaching the selection's end.
- back'n'forth will change the direction when the playlocator reaches the selections border.
- once will play until the end of the selection, jump to the beginning and then stop.
- sinewave will change the speed while looping (slow at the borders, fast in the middle).
- external pointer is a special playmode. every looper has a position input at the jack-backend. if you send a signal from any external program via jack, you can "remote control" a looper. a useful implementation could be to syncronize loopers from outside kluppe with a program like pd
- custom speed and custom position lets you define you own playmodes.
- edit custom playmode will open the dialog for your cutom playmodes
- looped and single recording behave for recording like "loop" and "once" do for playback.
the custom playmode dialog:
here you can draw your own playmode.
if the looper is in "custom position" playmode, this dialog represents the position of the playlocator (y-axis) according to the position the playlocator *would* have in loop mode (x-axis).
if the looper is in "custom speed" mode, this dialog represents the speed of the playlocator (y-axis) according to the regular position of the playlocator in loop mode. just try it and you will find out.
^ back to top
if you want to contact me please write to kluppe@klingt.org.