This page refers to the older LADSPA plugin version of SooperLooper, it has been superceded by the in development standalone JACK client version here
SooperLooper is a looping sampler very much like the Gibson/Oberheim Echoplex Digital Pro (EDP). In fact, it is a downright emulation of an EDP, with some additional features and a silly name. I figured that the EDP feature-set is powerful, proven, and popular -- so why not implement it as a LADSPA plugin we can all use? It is a true realtime software looper if used with a low-latency Linux kernel and the proper audio buffer configuration. Please let me know if you have any problems...
Download the source: sooperlooper-0.93.tar.gz
Changes for 0.93:
now includes PD patches!
Changes for 0.92:
sltester.py now supports ecasound 2.2
Changes for 0.91:
Now uses officially allocated plugin ID
Minor error checking fixes
Author Contact: Jesse Chappell -- jesse at essej dot net
I have never used an actual EDP, but all the features are described in the user's manual, which was an invaluable resource. Take a look at http://www.loopers-delight.com/tools/echoplex/echoplex.html to get the manual and other tips. It all applies.
Features of SooperLooper shared with the EDP:
Additional features of SooperLooper:
There are a few differences in functionality on the alternate endings of certain functions, but for the most part I tried to match the EDP manual for the LoopIII version. The primary difference is the mechanism of control, as it is a LADSPA plugin and not hardware :) See the parameters page for a detailed description of the LADSPA input and output parameters for this plugin.
Once you have a patched plugin~, fire up PD making sure that it and 'sooperlooper~.pd' and 'sooperloopermanual_midi.pd' files are located in your PD path (or specified via the -path argument).
Open 'sooperloopermanual_midi.pd', you will need to get audio in and out. You can open up a new window to 'throw' and 'catch' the data from the audio hardware to 'sooploopin' and 'sooploopout' as seen in this screenshot. Or do it your own way....
You can control it via the buttons, or via a MIDI program change messages ideally sent by your MIDI footcontroller. The values are:
0 UNDO // UNDO ALL in mute mode
1 REDO // DELAY TAP, if REDO_TAP_MODE is true
2 REPLACE // QUANTIZE TOGGLE in mute mode
3 REVERSE // ROUND TOGGLE in mute mode
4 SCRATCH // UNMUTE from Top in mute mode
8 INSERT // ONE SHOT playback from mute mode
9 MUTE // UNMUTE continue in mute mode
The value of the tens digit (well, 0-12) is used to match the value of the "Multi Tens" parameter set for a given instance of the plugin. This way you can use the same hardware controller to control several independent instances of the plugin.
Here is a screenshot of the console demo sltester.py.
sltester.py is a Python script using curses and pyecasound to handle the audio. You must have Python 2.x, the LADSPA header file and Ecasound (with pyecasound module (including eci.py) properly installed). Ecasound is fantastically useful and well designed for a wide variety of audio applications, you should already have it if you don't. Get them respectively at:
Compile SooperLooper by possibly editing the Makefile, and running 'make' and copying SooperLooper.so into your LADSPA_PATH (or 'make install').
Run the python script like this:
./sltester.py 2> error.output
And in another window tail the file to see the debugging output:
tail -f -s 0 error.output
If you don't do this the stderr will screw up the curses display. And its useful to see the debugging output, if you compiled it in. Sometimes tail might peg the CPU at 100%, if yours does, just use tail -f -s 1 error.output .
Make sure your mixer is set to record the input you want to use, and everything except PCM and master is muted. If you don't have a good full-duplex soundcard and/or low-latency kernel you may want to increase the -b:128 in the ECASTART variable near the top of sltester.py to -b:256. However, with a low-latency patched kernel and running as root (to get SCHED_FIFO) you should have no problems (you could even take it down to -b:64).
Have at it... note that the usage portion of the window changes a bit depending on what state the plugin is in. The updating time status is turned off by default, but if you have nice low-latency stuff enabled you can turn it on without any overruns.... (press 's').
If you end a RECORD with another function it will finish the loop immediately (threshold ignored) and start doing the new function. A special feature: ending with REVERSE stops recording and plays the loop backwards once then goes into MUTE mode.
If you end a MULTIPLY with a RECORD press it ends the loop immediately and resets the cycle length to the whole loop, if you want that.
You can toggle some of the parameters while in MUTE mode, see the usage panel. QuantizeMode and RoundMode are described in the EDP manual... the semantics in SooperLooper are almost the same, there is a subtle difference in MULTIPLY mode when QuantizeMode is on, more description to come.
You can't test this feature in the console demo, but it works great with a hardware controller patched in through midi and Ecasound. I personally use a Theremin (the PAIA Theremax) with CV output through my MIDI pedal, very cool.
Jesse Chappell --
jesse at essej dot net
Get the latest SooperLooper at http://essej.net/sooperlooper/