SooperLooper 0.9
26 Jan 2002, Jesse Chappell <jesse@essej.net>

DESCRIPTION OF INPUT PARAMETERS


1: Record Threshold  [0, 1]
    This defines the audio sample threshold to begin recording after
    RECORD is triggered.  This value is also used as the trigger to
    stop recording after RECORD is pressed a second time.  It can help
    get cleaner seams under certain conditions.


2: Dry Level  [0, 1]
   Controls input thru amplitude.

3: Wet Level  [0, 1]
   Controls loop/delay playback amplitude.


4: Feedback [0, 1]
    Controls how much of the loop signal gets passed back to the loop
    during Overdubbing, Multiplying, or Delay mode.  Note that the
    audible effect of feedback changes made during one of these
    functions won't be heard until the next loop cycle.  Can be used
    to fade out a loop while overdubbing a new one.
   
5: Rate (during scratch mode)
    When the scratch rate active is toggled on (by pressing Reverse
    while in SCRATCH mode), this is the rate of loop playback in SCRATCH
    mode when not changing the Scratch Pos (scratching).  Can be +/-
    anything.

6: Scratch Position [0,1]
   When in SCRATCH mode, changes in this parameter
   over time define the rate of playback (position unit is ratio of
   current loop length).

7: Multi Control 

  The main control of the plugin is done through this parameter,
  the use of which is a little unorthodox.  It takes an integer
  (interpreted) value between 0 and 127, but only pays attention to
  changes in its value.  The value of the ones digit corresponds to
  the function you wish to trigger from the following table:

   UNDO       0   // UNDO ALL in mute mode
   REDO       1   // DELAY TAP, if REDO_TAP_MODE is true
   REPLACE    2   // QUANTIZE TOGGLE in mute mode
   REVERSE    3   // ROUND TOGGLE in mute mode
   SCRATCH    4   // UNMUTE from Top in mute mode
   RECORD     5
   OVERDUB    6
   MULTIPLY   7
   INSERT     8   // ONE SHOT playback from mute mode
   MUTE       9   // 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.  The weird
  thing about the Multi Control is to get two "presses" of one
  function in a row, you must set the value for one frame of data, set
  it to -1 (or anything else out of range) for at least a frame, then
  set it back to the original value when you want to trigger it again.
  All of this derives from the fact that I am using a MIDI
  footcontroller's program changes as the triggering mechanism
  (described in detail below).

8:  Tap Tempo Delay Trigger
  At any time, changes in the parameter are registered as tap tempo
  triggers (with a settle-time threshold for dirty switches).  DELAY
  mode is entered and the time between the most recent two presses is
  the new delay time.  Pressing other functions or UNDO leaves DELAY
  mode.

9: Multi Control Tens digit
  See 7:MultiControl above.

10: Quantize Mode  (boolean)
  Sets the value of Quantize Mode (non-zero is on).  This mode affects
  how certain looping functions start their operation.  See the EDP
  manual for details.  I diverged a little bit from the EDP usage with
  the Multiply command in a way that made more sense to me: if
  QuantizeMode is on, new input doesn't start being added to the loop
  until the next cycle boundary.  The rest of the semantics should be
  the same as the EDP.

11: Round Mode  (boolean)
  Sets the value of Round Mode (non-zero is on).  This mode affects
  how certain operations finish.  See the EDP manual again.

12: Redo Tap Mode  (boolean)
  If this is non-zero, the REDO command is treated as a tap tempo
trigger instead (see 8 above).


OUTPUT PARAMETERS

13: State  (treat as integer)
  This indicates which internal state the plugin is currently in.  It
  will be one of the following values:
    0 = Off
    1 = Waiting for threshold to START RECORD
    2 = RECORD
    3 = Waiting for threshold to STOP RECORD
    4 = PLAY
    5 = OVERDUB
    6 = MULTIPLY
    7 = INSERT
    8 = REPLACE
    9 = TAP DELAY
    10 = MUTE
    11 = SCRATCH
    12 = ONE SHOT

14: Loop Length (secs)
   The length in seconds of the current loop.

15: Loop Position (secs)
   The position in seconds of the current loop.

16: Cycle Length (secs)
   The cycle length of the current loop.  This is the length of the
   loop after the initial record.  If it is later Multiplied, the loop 
   length will always be a multiple of the cycle length.  Quantized
   and Rounded operations always use cycle length boundaries.

17: Loop Memory Free (secs)
   This is amount of available audio time left in the loop memory.
   Because we support unlimited Undo/Redo, each time you start a new
   operation you take up more space in the loop memory (so you can
   undo back to the previous state).  Periodically you'll need to Undo
   or Undo All to get free loop memory back.

18: Loop Memory Total (secs)
   Total amount of loop memory set at compile time on the module.
   Alter the SAMPLE_MEMORY variable in the Makefile and recompile to
   increase or decrease the value to suit your requirements.  The
   default is 200 seconds worth (2 seconds more than the EDP max ;) ,
   which at 44.1kHz sample rate of 32 bit floats is about 35 MB.  You
   do NOT want this to swap, so plan accordingly.


AUDIO I/O:
 This is not a stereo plugin, but if you instantiate 2 of them and
keep your record threshold at 0.0 you should be good.

19:  Audio Input

20:  Audio Output

