Looper
(version 1.5)

______________________________________________________________________


Looper is free.

You can give it away. Please keep this documentation intact.

Looper lives at http://www.subminimal.com/ear/software.html
Other software I have written can be found there as well.

You can contact me (ear@subminimal.com) if you have questions, suggestions,
or insights regarding Looper. All sorts of things about my music and
delicate ear can be discovered at http://www.subminimal.com/ear.

loops <-> spool
jhno


______________________________________________________________________

Introduction

______________________________________________________________________


Looper is a real-time loop sampler that runs on Power Macintosh
computers. It is also an algorithmic sound collage machine that can
automatically create new musical textures out of existing CD's, or
other audio input.

Looper is programmed in MAX and MSP. MAX is an object-oriented
programming environment available from Opcode Systems (www.opcode.com).
MSP is a set of objects that plug into MAX, enabling it to work with
digital audio and signal processing. It is available from Cycling74
(www.cycling74.com).

If you are not familiar with this environment, I can wholeheartedly
recommend it as an excellent platform for experimenting with sound on
computers. Keep your eye on both Cycling74 and delicate ear for
interesting new software tools.


______________________________________________________________________

Which Version?

______________________________________________________________________


Looper is available as a MAX patcher, or a standalone application. Use
the standalone application if you do not have MAX or MAXPlay, version
3.5.9. The "loopersets" folder must be in the same folder as the
Looper application in order to save and load settings.

If you own MAX, the "patcher" version lets you open up the Looper, see
how it works, and make changes. If you make some interesting changes,
why not drop me a line and let me know what you did? I am always
curious.

If you are using the patcher, the "loopersets" folder must be in the
same folder as your MAX application in order to save and load settings.
Also, the subptacher "lc" must be in MAX's search path. Finally, Looper
uses updated MSP objects, and a few third-party MAX objects. If the
patcher isn't working, or you are getting "no such object" messages,
there is a "looper objects" archive on my web site. It contains the
precise version of several objects I used. Try installing those
objects. If you still have trouble, let me know.


______________________________________________________________________

Getting Started

______________________________________________________________________


Open Looper. You should see the main Looper screen. There are three
"loop channels", each with its own controls.

In order for it to function, you must turn on Looper via the master
on/off switch - the big checkbox on the left, labeled "on/off". This
enables audio and starts the metronome.

Looper can accept sound input from any Sound Manager source. To change
the audio input source, click on the button labeled "audio config".
There is a pop-up menu to select an input source. You can select "CD"
if you have a CD-ROM drive with an audio CD. You need to use the
AppleCD player, the Control Strip, or something else to start the CD
playing.

You can see the level of the audio input by Looper's "input level"
meter. You can monitor the audio input by clicking on the "audio thru"
switch.

Once you have verified that input is present, try hitting the record
switch on one of the loop channels (the switch is labeled "rec"). Turn
it on just for a second, then off again. This will record a fragment of
audio into that loop. It will immediately start to repeat, according to
the master tempo and the channel's loop length.

Experiment with the loop's parameters, especially length, speed, rev,
and the sliders (V stands for volume, F for cutoff frequency, and Q for
resonance). You have to turn on the filter to hear it.

The Reference section below tells you what each control does.

Meanwhile if you want to hear a few example settings, click on the
"read" button that is in the bottom, left corner of the window. This
will present a dialog box to read in a Looper setting. Type in the word
"demo" and hit ok. In a few seconds, Looper will update itself to a
complex setting that creates interesting sound collages out of the
input source (try some tasteful CD's).

Looper includes five demos. They are very simple, I just threw them
together to demonstrate a couple of possibilities. There are many more.
To hear a demo, click on the "read" button as above and type the name,
e.g. "demo2". Here is a brief description of each one:

demo - the classic looper demo: confusing and pleasurable
demo2 - a much simpler setting for random sampling
demo3 - an example of fast changes
demo4 - two low goopy loops with another floating around
demo5 - makes any source mellow

Note that the sound you get from Looper completely depends on what you
put into it. Have fun experimenting...!


______________________________________________________________________

Reference

______________________________________________________________________


The rest of the documentation describes how each control in the Looper
window works. There are three sections, the Master Controls, the Loop
Channels, and the Automation. Each parameter description is preceded by
"()()()" so you can scan through them.


______________________________________________________________________

Master Controls

______________________________________________________________________


()()() metronome tempo (BPM)

This sets the master tempo for the Looper. It determines the length of
the loops (see "length" in the Loop Channels section).

()()() on/off

This switch enables audio, and turns on the metronome.

()()() loop size

Click here to change the size of the loop buffers. It presents a dialog
box in which to enter the new maximum loop length in milliseconds. Note
that this is limited by the amount of memory that has been assigned to
Looper. To increase Looper's memory, select the Looper application (or
MAX, if you are using the patcher version) in the Finder and choose
"Get Info" from the File menu. Here you can set the "Minimum Size" and
"Preferred Size" of Looper's memory.

As a rule of thumb, Looper needs about a megabyte of memory for every
two seconds of loop time. Also, it needs about 3.3 MB just to run, plus
about a megabyte of Mystery Memory. So, if you want 10 seconds of loop
time, you will need to assign Looper at least (3.3 MB + 1 MB (1 MB x
5)) = 9.3 MB.

If you want to see how much memory Looper has free, type command-M, or
select "Max" from the Windows menu. This gives you a status window
which shows free memory in the upper right-hand corner. If you try to
make the loop size larger than memory will allow, you will get error
messages in this window. Just ignore those "divide by zero errors",
though. Dividing by zero is good.

Hint: Try not to resize the loops too often, if you are tight on
memory. Each time you enter a new loop size, it seems to slightly
decrease the memory available, even though this is not indicated in the
status window. So, the best thing to do is resize the loops only once,
right after starting the program. If you have plenty of memory, don't
worry about this.

()()() audio config

This button opens the "DSP Status" window, which lets you assign the
audio input source. You can also see the "CPU Utilization" - which
tells you how hard your computer is working. If this number gets close
to 100%, you might start to experience clicks and dropouts. If this
happens, you can try changing the "Sampling Rate" parameter. Lower
sampling rates take proportionally less CPU time to compute. As well,
you could experiment with the "I/O Vector Size" and "Signal Vector
Size" parameters, which affect performance to a lesser degree.

Checking "Scheduler in Audio Interrupt" can improve the timing of the
loops. The difference is not usually noticeable, but it can definitely
help with very small, fast loops.

()()() record to disk

Clicking here presents a standard dialog box to create a new digital
audio file on your hard disk. Just enter a name and save it somewhere
you have enough disk space. Looper will immediately start to record its
digital audio output into this file. Click on this box again to stop
recording and close the file. You will then have a stereo AIFF digital
recording of Looper on your hard disk.

()()() input level

This is a stereo meter that shows the level of the audio input.

()()() output level

This is a stereo meter that shows the level of the audio output. There
is a fader attached to it that lets you adjust the overall output
volume.

()()() read/write preset

Here you can save and load settings for the entire Looper. The "write"
button will store all parameters of each loop channel, plus the master
tempo, on/off switch, audio thru, and output volume. It will ask you
for a name to store the preset. *** Do not enter any spaces or colons
in this name. *** For example, "spool_2" is fine, but "spool 2" is not.

When you hit the "read" button, you will get a similar dialog box. Just
type in the name of a preset you have saved (or a pre-existing demo)
and wait a few seconds for the Looper to update.

Note that Looper stores all its preset files in the "loopersets"
folder. This folder must be located in the same place as the Looper
application, or the MAX application if you are using the patcher
version. Inside you can see all the files it creates. Someday this
might be more elegant.


______________________________________________________________________

Loop Channels

______________________________________________________________________


()()() rec

This button starts and stops recording into the loop channel. If you
leave it on, it will continue recording as it loops. Usually you will
hear the sound as you are recording it. It seems to be a bit
inconsistent, though, and will sometimes record sound into a different
part of the loop. This is part of the "randomness" of the Looper, its
character and charm. To complain about such behavior is to rail against
the very seed of creativity that created the entire universe.

In serendipity lies music...

()()() length

This specifies the length of the loop, in 16th notes according to the
master tempo. So, if the length is set to 16 the loop will be one bar
long. At 120 BPM this is two seconds.

Hint: set each loop channel to different loop lengths to get a
layered, non-repeating texture.

()()() offset

This changes the position of the loop with regards to the master tempo.
It is an offset from "the beginning of the bar" - specified, again, in
16th notes. You can use this parameter to offset loops from each other,
and get them into (or out of) sync.

()()() delay (ms)

This is a delay, in milliseconds, that again offsets the loop. You can
use this to fine-tune the synchronization between loop channels.

()()() rev

Checking this box will make the loop play backward.

()()() speed

This specifies the speed of the loop playback, as a percentage of
original speed. So, a value of 100 plays the sound back at the pitch it
was recorded, while 50 gives you half speed and 200 gives you
double speed.

()()() start point

This is an offset, in milliseconds, into the loops memory buffer. It
changes the start position of the tape, as it were. It is most useful
if you have recorded a long loop, say at a loop length of 16, and then
you scale the loop length back or slow down the tempo. You can then use
this parameter to slide through the loop and access different sections
of it.

()()() V (volume)

This sets the volume of the loop channel.

()()() F (filter)

This sets the cutoff frequency of the channel's low-pass filter. Note
that it will have no effect unless the filter is turned on.

()()() Q (resonance)

This sets the resonance of the channel's low-pass filter. Note that it
will have no effect unless the filter is turned on.

()()() pan

This is the horizontal slider directly under the V, F, and Q sliders.
It pans the loop channel to the left or right.

()()() level meter

This is the horizontal meter underneath the pan slider. It indicates
the audio output level of the loop channel.

()()() filter on/off

This turns on and off the channel's filter. Note that with the filter
on, the audio will be somewhat affected even if the filter's cutoff
frequency is all the way up. So, if you want to preserve the original
fidelity of the audio and you don't need filtering, leave the filter
off.

()()() save audio

Click this button to save the contents of the loop channel onto your
hard disk as an AIFF file.

()()() read audio

Click this button to read in a mono AIFF file. You can use a file that
you previously saved with the "save audio" function, or any other
one-channel AIFF file. *** If you try to read in a stereo or
multi-channel AIFF file Looper will probably crash. ***

()()() clear audio

This erases the loop.

()()() read/write preset

This lets you save and load settings for a single loop channel. This is
useful if you want to copy the settings from one channel to the others,
or just to save a setting you like. Clicking the "write" button gives
you a standard dialog box, to write your preset as a file. Clicking the
"read" button lets you load in any file that you have previously saved.
After you read in a file, you have to click the little button under the
word "preset" in order for the channel to update all its settings. It
is through work that an idle character is bettered, and sloth overcome.


______________________________________________________________________

Looper Automation

______________________________________________________________________


The grid of boxes at the bottom of each loop channel can be used to
randomly automate the settings of the Looper. Each row in this grid can
automate a single parameter of the loop channel. Thus, up to 10
parameters can be affected simultaneously. There are six settings in
each row, labeled at the bottom of the grid. Here is how they work:

()()() on

This checkbox enables the automation specified in its row. You can use
this to turn the automation of a particular parameter on and off.

()()() param

This is a popup menu where you can select a loop channel parameter to
automate.

()()() prob

This probability determines how often the parameter will be randomly
modified. It is expressed in 16th notes. In other words, if the value
is 8, the parameter will be updated randomly on an average of once
every eight 16th notes according to the master tempo. If the value is
1, it will update every single 16th note. If the value is 187, it will
update very infrequently.

()()() min, max

When a parameter is updated by the automation, it will be set to a
random value between the min and max settings. Note that the "record"
and "reverse" parameters only have two values, on or off. A value of 0
will turn these parameters off, and any other value will turn it on.

()()() smooth

Here you can specify the amount of time, in milliseconds, that it takes
for the parameter to reach its new value. If this is set to 1000, then
whenever the automation updates this parameter it will smoothly fade to
its new value over the course of a second. With a value of 0, the
parameter will immediately jump to its new value.



()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()

here there be dragons