Getting Loopy: Performance Loopers For Linux Musicians
A loop in music is a section of the music that repeats itself continuously until receiving a signal to either stop or move on to the next section. A loop can be assigned to a single instrument or to a group of instruments. Compositionally, loops are used for a variety of purposes. For example, they may function as formal bass patterns over which a composition is built, or they may suppy a long but consistently repeating series of chords used to define the harmony for independently composed bass and melody lines. For many computer-based music-makers the loop's most popular implementation is the drum loop, a rhythmic pattern of one or more measures of percussion sounds that can be repeated unchanged for simple lines or mixed & matched with other loops for more life-like variation.
Modern music-makers use loops in another context. Performance loopers are machines that record an audio signal and capture it to a buffer for use as a repeating loop over which a performer improvises a new musical line or even another loop. A performance looper records multiple loops, thus giving the user an opportunity to compose additively in realtime. All performance loopers share some basic characteristics such as recording, file loading, and various transport mechanisms. Typical transport controls include start, stop, and pause, to which some loopers add reverse and varispeed playback controls. Other common control features include mute and solo status, trigger and one-shot sample players, and the always-popular undo/redo functions. Less common features include items such as built-in synthesizers, audio effects processing, time/pitch stretching, and various other means of manipulating the loop during playback.
Another important feature of the modern looper is the ability to put the system under external control via MIDI or some other control protocol such as OSC. For live performance this feature is critical - hands-off operation is needed so the performer can attend to instrumental or vocal parts, some of which may be recorded and processed by the looper. Performance looping can become very complex very quickly, and performers need ways to easily configure and arrange their loops. Performing with loops permits a great variety of on-stage scenarios, from full-bore improvisation against freely selected loops to a rigidly defined sequence of loops to accompany a previously composed part.
There may be no formally standardized ways of performing with loops, but some typical operations can be described. A performer may decide to have the looper play a variety of loops selected during the performance by using a MIDI footswitch. During some of those loops he may record additional parts for looping or he may decide to simply utilize the loops as a more or less detailed accompaniment. The loops can be in any tempo, so it is possible to create a complex varied texture with loops of different instrumentation and timing. As mentioned, the loops may be called in a random or ordered sequence, and they may be played individually or as stacks of material. External control of the looper is a necessity in any of these scenarios. Incidentally, the recorded material can be any sound at all, and performance loopers have found uses beyond the strictly musical.
Each of the loopers profiled here includes the basic set of features noted above and each adds some unique appeal of its own. They are all licensed under the GPL and are completely free and open-source software.
J.P. Mercury's FreeWheeling is designed for the greatest ease of use in live performance. The program supports some keyboard controls, but only a few mouse actions are supported. For best results, Freewheeling wants an external control surface of some sort. The author of the program uses a Behringer BCF-2000, a MIDI-enabled mixer with assignable buttons and sliders, but any Linux-aware MIDI control surface should work with Freewheeling.
You can peruse the list of features that make Freewheeling unique among performance loopers. Some of its attractions include an integrated version of the FluidSynth soundfont synthesizer, support for multiple inputs for group jams, and the ability to capture and trigger multiple assymetric loops. In addition to its internal features, Freewheeling is a JACK-based application, ready for connection to a digital signal processor (DSP) unit, a hard-disk recorder, or some other JACK client.
When Freewheeling opens you'll see the user interface displayed in Figure 1. Before doing anything else press the / key to summon Freewheeling's internal help panel. You won't need to learn everything at once, but you will want to know that the Tab key cycles through Freewheeling's default UIs and the Esc key quits the program. The default interfaces may include layouts for the Behringer BCF-2000 control surface, a generic MIDI keyboard, a dance mat system, or the PC keyboard. You can edit these and other default specifications for Freewheeling in the $HOME/.fweelin/basics.xml file. Don't be put off by the XML - the author has provided copious notes on its use by normal users, and it is the key to customizing Freewheeling for your purposes.
The interfaces are simple control interfaces. For example, the PC keyboard interface seen in Figure 1 assigns a loop recorder/player to each key of the QWERTY layout. If I press the Q key a circle appears on the corresponding key in the GUI. As soon as I start playing - or singing or reading or making any kind of sound - the circle displays the recorded waveform. Press the Q key again and the recording stops. Now the key holds the loop for recall whenever I press it. Repeat the process for the other keys, and in little time you'll have a bank of loops for mixing and matching however you like. Easy. Oh, and you might also want to know that the U key erases the last recorded loop.
Documentation includes the forementioned Help page within the program, a number of videos presenting its controls and operation, a mail list (with archive), and a Wiki. The videos are out of sync with the current version, but the basic performance techniques remain the same across versions. I also found a few helpful demonstration videos on YouTube. Once you gain some understanding of the program's controls it's very easy to use. It's also easy to while away the hours as you jam with Freewheeling.
In every respect Freewheeling has been designed for live performance, and it is above all an improviser's instrument. Alas, I don't own a Behringer BCF-2000 (yet), my MIDI keyboard is packed away somewhere, and it's highly unlikely I'll ever own a dance mat. I still managed to have a great time using the PC keyboard to control Freewheeling's loop record and playback functions. I also recorded some loops with the internal synthesizer, controlled by an external MIDI sequencer. The arrangement worked okay, but I think I would have had more fun with a keyboard or other interactive controller. Also, I couldn't find how to load and play an existing soundfile, though if I understand the documentation correctly it should be possible to use existing soundfiles for backing loops. Perhaps a kindly reader can tell us how it's done ?
I wrote a profile of Freewheeling nearly five years ago. The program's News page chronicles its evolution from then through version 0.6.1, the last public release and the version tested for this article. The author has stated that he is unlikely to maintain Freewheeling any longer, but the codebase is open-source and GPL'd for the benefit of future development. Nevertheless, Freewheeling is certainly usable in its current condition, and it definitely rates as a unique and powerful program for music creation.
Jesse Chappell's SooperLooper (Figure 2) presents a more conventional interface to the performance looper, but that design conceals a client/server model that decouples the user interface from the looper's engine. The sooperlooper command invokes the SooperLooper server (Figure 3), while the slgui command calls the GUI client seen in Figure X. The GUI will automatically invoke the server if it isn't already operating.
By default SooperLooper opens with a single looper active, but you can add or delete loopers from the Session menu. Figure 2 shows off SooperLooper with four loopers activated, each of which includes various recording and playback functions along with a few built-in audio modification tools. Soundfiles can be loaded for use as backing loops, and a variety of performance controls are available for controlling playback. SooperLooper's GUI can be operated with the mouse, but all UI actions can be bound to keyboard accelerators. Alas, neither the mouse nor the computer keyboard offer the most satisfactory control interface for the program. Like Freewheeling, SooperLooper's real strength starts to show when its interface is under the command of an external control surface.
For a simple test I ran a sequencer on a second machine and composed some simple tracks with a few MIDI note and controller events. Then I opened the SooperLooper Session/Preferences dialog, clicked the MIDI Bindings tab (Figure 4), and assigned various SooperLooper functions to the MIDI events in my sequencer tracks. I used the MIDI connections panel in QJackCtl to route the sequencer's output to SooperLooper - did I mention that SooperLooper is a JACK-savvy application ? - and the sequencer tracks dutifully controlled SooperLooper as per my custom bindings. This method achieves effects not easily obtained with the mouse and/or computer keyboard, such as multiple loops responding simultaneously to a single command.
SooperLooper sessions can be saved for later recall. You can opt to include the soundfiles with the session, or you can choose to save only the control configuration.
Abundant user-level documentation is available on the SooperLooper Web site, but if you need more information you can swing over to the SooperLooper forum and seek guidance from the group. A search for the program name on YouTube returned some good examples of SooperLooper at play. Most of those videos were recorded with the OSX version of SooperLooper but they are helpful instructional resources for Linux users too.
I asked members of the Linux Audio Users list what hardware they recommended for controlling SooperLooper. The group's hands-down winner was the Behringer FCB-1010, a foot-controlled set of switches and pedals for sending MIDI messages and controller streams. The Behringer unit may be the popular favorite, but a quick look at the SooperLooper user forum made it clear that the program accommodates other hardware as well. I've ordered an FCB but as I await its arrival I'll continue to experiment with sequencer and PC keyboard control of SooperLooper's many features.
According to developer Dieter Kovačič Kluppe is a loop player and recorder, specially designed for live use. That's putting it modestly. Kluppe is easily as sweet as Freewheeling or SooperLooper, and like those programs it has a unique UI designed for the operations of a live performance looper.
When started without specifying an existing project Kluppe opens with no loopers active. For my first simple exercise I opened a discstream, i.e. I added a drum loop soundfile for looping playback, then I opened an empty buffer for recording. I added two loopers and assigned a discstream or buffer to each one (Figure 5). I started the drum loop, fired up the other looper with an empty buffer, and recorded a bass line until I was pleased with the results. Unfortunately my recording was not in sync during playback, but thanks to Kluppe's waveform display I was able to restrict playback to a particular section of my improvised line, a very handy feature. Kluppe has some interesting record & playback modes, including a custom mode that applies a user-designed curve (Figure 6) to either the speed or position of the playback pointer. I haven't figured out a musical use for it yet, but I've had a lot of fun playing around with it. Kluppe also includes a granularity control. I confess I haven't made much sense of it yet, and JACK definitely did not like it when I played around with the control in realtime, though my JACK settings may have an influence. I'll keep experimenting until I figure out how to use it.
Your work can be saved in all its detail as a Kluppe project file. You can also export the contents of any buffer as soundfiles for further use in Kluppe or for treatment in an editor such as Audacity or Sweep.
By the way, the developer has thoughtfully included a version of Kluppe that requires no GUI, codenamed Klopfer. It is not built by default, but a simple make klopfer followed by make klopfer_install compiles and installs it. The developer employs it in a custom-made mini-ITX computer he uses on stage, though certainly it could be useful for sight-impaired musicians as well.
Documentation for Kluppe consists of a comprehensive and well-written introduction presented on a single Web page. Once I understood its basic operation I found the program to be very easy to use, and like all the loopers described in this article the more you use Kluppe the more uses you'll find for it.
I built and tested version 0.6.14, Kluppe's most recent public release. Development is slow - no changes have been made in the codebase since April of 2009 - but there's no indication that it's died. I certainly hope the developer or someone else plans to continue its evolution, it's too good an application to let languish.
Before leaving looper country I want to recommend a few utilities to help you get more out of your pre-existing loops.
A beat-slicer takes a soundfile apart according to beat definitions specified by the user. The resulting slices of sound can be recombined to create more or less identifiable variations of the original material, or they can be saved for other purposes. To my knowledge Predrag Viceic's Freecycle was the first beat slicer for Linux, and Smasher was the next. Both are highly recommended tools for loop preparation. Alas, Freecycle appears to have become abandonware, but Smasher's development was continuous during 2009.
If you need to accurately synchronize multiple files you may need a time-stretching utility. Rubber Band is my first-choice tool for that job, but when I want some weirdness I'll use Paulstretch, a program for extreme time-stretching. Remember, a loop can be any sound, regardless of its weirdness factor.
The performance loopers profiled in this article are not the only loopers available for Linux. I wanted to review Stephen Sinclair's LoopDub (Figure 7) but I haven't got its audio output working yet. There might also be a few more loopers for Linux lurking out there. Please advise if you know of any others I should mention here.
I'll be back next time with profiles of some neat arpeggiators I've recently discovered. Until then I hope you'll try out the programs reviewed in this article. Their fun factor is incredibly high, but they're capable of serious application as well. So go ahead, download them all and get loopy with them.
Similis sum folio de quo ludunt venti.
- My Childhood in a Cigar Box
- Tech Tip: Really Simple HTTP Server with Python
- Papa's Got a Brand New NAS
- Applied Expert Systems, Inc.'s CleverView for TCP/IP on Linux
- Returning Values from Bash Functions
- Rogue Wave Software's TotalView for HPC and CodeDynamics
- Panther MPC, Inc.'s Panther Alpha
- Simplenote, Simply Awesome!
- NethServer: Linux without All That Linux Stuff