Sunteți pe pagina 1din 10

Livid Looper

Users Manual
OVERVIEW
LividLoop is an audio-loop playback software, with an emphasis on simplicity and hands-on control. Quantiza-
tion of many controls ensures that your actions stay on beat. All loops stay in sync by pitch shifting, keeping
everything in time. Simple drag-and-drop of audio les and folders from the OS X Finder or Windows XP Explorer
can populate the Bins of the several loops in LividLoop, or an audio input can be recorded as a source. The vari-
ous effects (including a VST effect) and controls can then be applied interactively to the loop, altering the sound.
The sound is automatically segmented into any number of easily selected, equal parts. Waveform interaction
provides another means of selection, and the granulator can provide radical rearrangement of pieces of the sound.
Two types of sequencers provide BPM-based automation of your actions. The Se g &Bin Se q ue nc e r records any
changes to the segment numbers or sound selection. The Da ta Se q ue nc e r records everything else - volume, pan,
effects, etc.
Globally, the presets in the main window will recall and store sound selections and effect states of all the loops,
letting you create songs.
Emphasizing hands-on performance, full MIDI and OpenSoundControl (OSC) control is available. Using LividLoop
with an external controller transforms the software from a collection of controls into a musical instrument. Included
is an interface to match LividLoop controls with the Livid Ohm hardware. Easy to use MIDI learn is part of each
Loop interface for integrating other hardware.
OSC-compliance for all commands means that application can be run over a network, with one machine acting
as a server (where the audio is actually is processed) and other computers acting as clients (which only run
the interface, and send commands to the server).
Finally, LividLoop is provided as an open source application, under the GNU license. You are free to download the
source code and modify it as you wish. If you release your modications, under the GNU license, you will have
to release them as free software, too. We would appreciate that you share any modications with us, too! You
will need a copy of Cycling 74s Max5 software, as this is the environment in which LividLoop was developed.
GETTING STARTED

Loading sounds
Open the LividLoop software application. Click on the Loop 1 button to open the interface for Loop 1. If you want
to use your own sounds, drag a folder of audio les onto the Loop window to ll the menu (A) with les. Click a
Bin (B) (it will turn yellow), then select an audio le from the menu (A). Press the play button (C) next to the
Bin. Youll see the waveform load and the le will begin to play once the Clock in the main window has reached
the beginning.
Do the same for a few other Loop interfaces, and load different les in the Bins in each loop. Youll notice that as
you load and play your loops, they all stay in sync, regardless of their length. (Its worth noting that the loops
are pitch-shifted, and therefore, lose their original pitch/key). As you play different les from each Loops Bins,
the sync is maintained, since sound playback begins according to the quantization set in the top Main window.
Recording Sounds
Besides sound les, you can use realtime recordings from an audio input (D). Press the rec button,
which will turn yellow, indicating it is armed. Once the Clock reaches the beginning. the rec button will turn
green, and the Looper will record your input for a full cycle of the Clock, then begin to play it. If you need
to monitor your audio input, go to the Modules menu and select Meter In. If you want to record more
(or less) than a measure of time, use the time multiplier buttons to the left of the recording levels knob.
Playback Controls
Now that you have some sounds playing you can try the different options for playback (E). If you turn
looping off, once the playback reaches the end of the selection, the sound will stop. To hear it play again
once through, press once. Turn looping back on, then press once - notice this turns the looper off. At
anytime during playback, you can press to start and jump to the start of the selection. Finally, if you
have only a segment of the waveform selected, press all to select and play the entire sound. It is im-
portant to note that there may be a delay between when you press a button and when the action oc-
curs - this is dependent on the quantization setting in the main window. Since all actions are quan-
tized, it may take some time between your press and the actually event trigger from the quantization!
Selection Controls
Click and drag in the Waveform Display (F) to interactively select portions of the waveform. The Segement buttons
(G) will select equal portions of the wave. If you have eight segments, segments 1-4 will select quarters of the
waveform (e.g., for a 1 second sound, the selections are 0-0.25, 0.25-0.5, 0.5-0.75, and 0.75-1.0 seconds).
The segments 5-8 will select quarters of the waveform, offset by 1/8th of the total duration (e.g., 0.125-0.375,
0.375-0.635, and so on). This provides some really good rhythmic options when working with percussion loops.
You can change the number of segments with the # segments num-
ber box. Use the random button to trigger a random segement.
Volume and Pitch Controls
The basic volume and pitch controls (I) are knobs, but there are some other buttons that make these con-
trols much more fun. The mute button lets you quickly turn the volume off to silence a track. The track
still plays and stays in time, but you just dont hear it. The main and preview buttons let you assign the
Loops audio output to either the main output channels, the preview channels (for booth or headphone lis-
tening), or both. The crossfade buttons Off, A, and B assign the Loop to the crossfade, so the volume
will react to any changes in the Main crossfade control. Finally, the vertical column of numbers next to
the pitch knob give you quick access to some common pitch changes, both forward and reverse.
Amplitude Envelope
The amplitude envelope (H) provides some basic preset envelopes, as well as the op-
tion to create your own on the y. Use the menu to select different presets, or se-
lect user to use your mouse to click-drag your own envelope shape.
Using Effects
Now that you have some sounds playing, you can alter them with the effects. There are four built-in audio signal
effects (K): De g ra d e , Ring M o d , Filte r , and De la y . There is also a host for one V STeffect (L) that can be applied
to your sound. Each effect has a wet knob to mix the effected audio with the original audio - obviously, it will need
to be greater than 0. for you to hear the effect. The effects are in serial order for the sake of simplicity: their order
cannot be changed. [ Pe rha p s a n a m b it io us use r w ill se e to m a k ing a ro ute r so e ffe c t s c a n b e in a ny o rd e r? We ha v e
so m e sta r t ing p a t c he s fo r t he c urio us!]
A V ST e ffe c t (L) can be loaded by selecting a plug-in from the vst plug-ins menu. The programs menu will popu-
late so you can load presets for a given plug-in. Press view to open the plug-in interface and change parameters
with the mouse.
The G ra inseffect (J) is not an audio signal effect but a modulation of playback location. At its most
basic, it can change the playback speed of the loop, without changing pitch, but at its most com-
plex, using the random parameter, can scramble a sound into a completely new sonic experience.
The grain size can be synced to the tempo using the sync menu, keeping the scrambling rhyth-
mically relevant. Try it with vocals, rapping or a melodic line- it just may blow your mind!
Using the Sequencers.
The simple Se q ue nc e rs (N) make any Loop vastly more engaging. These can record button-presses and knob-
turns and play them as tempo-synchronized loops, along with the audio. These actions can come from your
mouse, a MIDI controller, or an OSC controller. The Se g &Bin Se q ue nc e r will record changes in segments or in
the Loop Bin number. The Data Sequencer will record changes in parameters such as effects and volume - pretty
much anything that is not a Segment or a Bin.
Try recording some segments. First, press a Sequence number for the Seg&Bin Sequencer, then press the record
button for the Seg&Bin Sequencer, and it will turn yellow. Once the Clock reaches the beginning of its cycle, the
recording will start and the button will turn green. Press some of the segment buttons to change the selection of
the loop (or just press random multiple times). Once the Clock reaches the end of its cycle, the recording will stop
and the playback of what you just recorded will start. Do this for some more of the Sequence numbers. You can
change the number at anytime during playback to change the sequence. Press play again to stop the playback.
If you record on the same sequence number, you will overdub and add to the existing data, letting you build on
existing sequences! Use the clear button to clear the contents of the current sequence.
The process is the same for the Data Sequencer, but you will want to change effects - you may want
to start just trying the wet parameters, then build from there. One simple effect is volume control. Us-
ing a percussive loop, you can create sequences of quick volume changes to create new beats.
DETAILS
MAIN
The top main window has controls for making changes to all loops.

The vol knob is the master volume for controlling the output of your nal mix. The xfade slider will crossfade
between any Loops assigned to A or B.

The Loop buttons 1-8 simply open and bring to front the Loops 1-8.

The quantize buttons determine the quantization grid for any actions. For example, if quantization is set to 1,
and you press a segment number in a loop, the segment will not change until the start of a measure. If its set to
1/16, then the segment will not change until the next 16th note. Next to the quantization is the main BPM and
measure time indicator that lets you set the master tempo for all Loops. The sync button will put all loops back in
sync if they fall out of time (which can happen if you mess with the pitch knob on a Loop, or if you change the le
in a Loops bin while that bin is playing).

Finally, the Preset menu lets you store up to 32 different global arrangements (including the les in the bins) and
effect settings for all the loops.
LOADING FILES
The menu is populated with drag and drop. Beneath the menu are the Bins. These are placeholders for your les
for instant switching. Select a Bin by clicking on it, then load a le. The Playback buttons to the left determine
what Bin is played back and viewable in the waveform display.
When you record into a Bin, the recording is saved as an AIFF le in the Recordings folder (in the same folder
as the LividLoop app). A non-repeatable name, based on date and time, is assigned when recorded.
PLAYBACK CONTROLS
Basic playback control button are at the top of the Loop interface:
on/off - Turns the Loop on/off. Of course!
loop - Turns looping off. If looping is off, you will need to use the once button to hear any sound.
once - Plays the current selection from start to end one time. If Loop is on, it will be turned off. The playback will
not begin until the Quantization value is reached, as set in the Main window.
to start - Jumps the playback location to the start of the selection.
select all - Resets selection to the begin and end of the sound. Jeez, do I really have to explain that?
The waveform window lets you make arbitrary selections with your mouse (or
MIDI controller). Any selection is kept in sync with the tempo.
MIDI
LividLoop is fully MIDI compatible. Each Loop has its own, independent MIDI conguration, accessed by press-
ing the MIDI button. This displays all the parameters that can be controlled by MIDI. Assigning a MIDI control to
a parameter is easy - just click on the parameter, then send the MIDI message - note, cc, or program change. If
you want to unassign a control from a parameter, click on the parameter, then click on the clear selected button
at the top of the window. It is possible to assign a MIDI control to multiple parameters, which can result in some
interesting effects.
Because there are no restrictions about what MIDI message a parameter can listen to, depending on the param-
eter, MIDI messages are interpreted in different ways. The best way to understand this is probably by example.
If you assign a note to a parameter that is controlled by a knob, then the velocity of the note will determine how
much that knob is turned. If you assign a cc to a parameter that is controlled by a button, the button is pressed
when you turn the MIDI knob (or move the slider) past the halfway point.
Segments can be controlled in a couple of different ways. The rst way, using the Segments pa-
rameter in the MIDI setup window, you can assign a knob or slider. Move the knob to the 0 po-
sition to select segment 1, move it past the value of 19 to output segment 2, and so on.
You can also assign up to 16 individual segments to separate notes. Use the Segment 1, Seg-
ment 2, Segment 3, etc. parameters to assign a MIDI note to a particular segment.
ENVELOPES
The Envelope control below the waveform creates an amplitude curve for the current selection of the loop.
There are a number of preset forms, a random form, and user editable form. Just select a form from the
menu, and the display will provide an envelope shape. To create a random envelope, just select random
from the menu. Select again for a different randomly generated envelope. In user mode, you can move the
points in the display to create an envelope, and even click to create new points. If you switch to a differ-
ent envelope, such as tri then back to user, you will be back at the envelope you created. You may modify
the envelope in the other modes, but if you switch to a different mode, your changes will be gone.
SAVING
All parameters, paths to les in the bins, sequences, MIDI settings and presets are saved
to the Defaults folder when you quit. All this data loads when you start the applica-
tion. You can also save all the data to a .llp le that stores all settings in one le.
MODULES
The Modules menu has several choices.
Livid Ohm - The Ohm interface makes it extremely easy to assign Looper functions to the Ohms buttons and
controllers. With this virtual version of the Ohm, you can click on the buttons and controls, then use the menus to
assign functions. Labels are provided to make it easy to see what is assigned, and you can save up to 32 differ-
ent assignment presets for different congurations.
Output Meters - Provides level meters for each loop ouptut so you can visually monitor your volumes.
Input Meters - Provides level meters for inputs so you can visually monitor input volumes for recording to a Loop.
Recording - An interface for recording a stereo le of your mix. By default, it will automatically name your record-
ing and save it to the Recordings folder. Each time you press record, a new le is created. You can also select a
different folder, and create your own names for les.
OSC Congure - Change IP and ports for the client/server. Probably not needed for most applications.
MIDI Sync - Use MIDI Time Code to set your BPM.
Audio Congure - Congure your audio devices inputs and outputs, and choose a folder for VST plugins.
EFFECT DETAILS
Degrade - reduces sample rate and bit depth for a crunchy, retro-sounding computer distortion.
Ring Mod - amplitude modulation at audio rates, adds high frequency sidebands.
Filter - there are a variety of lter types, selectable from the menu, depending on what part of the sound you wish
to enhance or discard. Interact with the graph with your mouse to change parameters.
Delay - simple delay, with length and delay time modulators synced to the tempo.
VST - load any VST plug-in. The rst 16 parameters are controllable with MIDI.
ABOUT SYNC
LividLoop will change the playback speed of a sound to stay in time with the master BPM. Unlike more
advanced programs like Ableton Live or FL Studio, LividLoop makes no adjustment to keep the origi-
nal pitch of your sound. Doing so in a cpu-efcient and sonically pleasing way is fairly complicated, and
not appropriate for this free-of-charge, open-source software! However, LividLoop does limit the amount
of pitch shift to a range of +/- one octave, such that very long or very short les are not rendered unus-
able. It is hoped that you take advantage of this less sophisticated software, and discover a new sound!
COLLABORATING
A whole group can jam over a network (ethernet, WiFi, 3G, EDGE, etc.) on a single instance of LividLoop (a
server) running on one computer, each with their own interface (clients). Using the OSC setup module, you
can set what port the server will listen to for incoming messages from the clients. Similarly, you will need to set
the clients to send on that same port, and you may need to enter the IP address of the server. If you are doing this
over a LAN, you will likely not have any port-forwarding issues, but you may need to open the ports if your server
is running a rewall. If you want to control the server on a WAN, then you may need to forward ports from the
router to the server machine. You can learn more about port forwarding at
http://www.portforward.com
and
http://en.wikipedia.org/wiki/Port_forwarding
SOUND SAMPLES CREDITS/ATTRIBUTION:
Sounds from the One Laptop Per Child sample library, offered at
http://wiki.laptop.org/go/Sound_samples
under the Creative Commons Attribution 3.0 license (http://creativecommons.org/licenses/by/3.0/).
Use of these sounds in this distribution is in no way an endorsement by the OLPC project.
ABOUT THE MAX PATCH.
LividLoop is written using Max 5 and Max 4, and is organized around pattr and OSC. The main program is split
into client/server (interface/core) patches for best exibility and easy networking. The implication is that many dif-
ferent interface styles can address the same parameters of the server - the part that actually produces and pro-
cesses sound. The interface can operate on the same machine as the server, or on a different device.
An important detail to know when testing and developing is that the Loop_server.maxpat must be opened before
the Loop_client.maxpat since the client sends messages on open to the server. This is why Loop_client is scripted
into existence in MAIN.maxpat, to ensure it is loaded after the Loop-server.
Finally, an excellent starting point is the BasicClient and BasicInterface patches. These will help
you understand more clearly how the client/interface pair communicates with the server.
SPECIAL FOLDERS
Your life will be much easier while working with the LividLooper source if you copy the following folders from a
LividLooper installation into your Max 5 folder:
Backgrounds
Defaults
Recordings
Sounds
Additionally, you may want to keep a zipped copy of the factory defaults in the Max 5 folder, because, dur-
ing programming, you may end up with undesirable values in the les in Defaults. If that happens, just
put the Defaults folder in the Trash (Recycle Bin), unzip Defaults.zip to the Max 5 folder, and start over.
Max 5 PATCHES
AudioCongure.maxpat - For conguring audio driver and signals. Also used for setting VST folder location.
BasicClient.maxpat - A simpler version of Loop_Client.maxpat, useful for learning how to make your own inter-
faces. Using the BasicInterface patch, it creates a simple drum machine step sequencer. Sweet!
BasicInterface.maxpat - A simpler version of Loop-interface.maxpat, useful for learning how to make your own
interfaces.
Client-only.maxpat - Used for building the Client-only application. Is is merely the Loop-client.maxpat in a bpatch-
er, and a few other things to make it a standalone.
InputMeters.maxpat - Module. A set of level meters for input channels for recording audio into Loops.
Loop-core.maxpat - A set of eight abstractions of this patch is used by Loop_server.maxpat to communicate to au-
dio effects and loop playback patches. A pattrstorage in Loop_server.maxpat provides a hub to talk to all the pattr
objects in this patch to direct messages to the effects and audio.
Loop-interface.maxpat - A set of eight abstractions of this patch is used by Loop-client.maxpat to provide a user
interface to send messages to the Loop_server.maxpat. All the interface elements are tied to a pattrstorage, and
have the same scripting names as the pattr objects in Loop-core.maxpat to facilitate easy communication via pat-
trstorage.
Loop_client.maxpat - Contains eight abstractions of Loop-interface, plus global controls, preset storage, and a
pattrstorage/OSC communications hub. All user interface actions (midi, mouse, keyboard, etc) are sent from pat-
trstorage and converted into OSC to communicate to the Loop_server patch.
Loop_server.maxpat - Contains eight abstractions of the Loop-core for actual DSP. Receives messages from the
Loop_client patch to play and process audio.
MAIN.maxpat - A container for the Loop_server and Loop_client. Also has a top menu and directs the instantiation
of modules.
MIDI_Learn.maxpat - Used in Loop_client to provide an interface to learn MIDI controls to parameters for MIDI
control of the UI.
MIDI_Sync.maxpat - Module. Listens to MIDI time code and converts it into a BPM for the program.
OSCcongure.maxpat - Module. Interface so user can set ports and IP addresses of client and server. Somewhat
of a formality.
OutputMeters.maxpat - Module. A set of level meters for monitoring output from Loops.
Recording.maxpat - Module. For recording an WAV of your mix.
Server-only.maxpat - Used for building the Server-only application. Is is merely the Loop-server.maxpat in a
bpatcher, and a few other things to make it a standalone.
WebWelcome.maxpat - Container for the welcome screen/website.
clock.maxpat - The central clock used to synchronize all loops. Used in Loop_server.
loopmenu.maxpat - Formats top menubar for standalone. Used in MAIN.
clientmenu.maxpat - Formats top menu for Client-only standalone.
servermenu.maxpat - Formats top menu for Server-only standalone.
quantize.maxpat - Makes sure any input actions are quantized to the BPM.
tempoz.maxpat - Used to sync delay and grain times to the BPM.
MAX 4 PATCHES
These patches can be opened in Max 5, but if save your work, youll need to convert them to Max 5s format. I
have left them in Max 4s format, as I need these patches for some Max 4-based projects that I have.
fx_degrade.pat
fx_degrade_core.pat
fx_delay.pat
fx_delay_core.pat
fx_lter.pat
fx_lter_core.pat
fx_ange.pat
fx_ange_core.pat
fx_ringmod.pat
fx_ringmod_core.pat
These are all for the audio effects. The actual effect process for a channel of audio is contained in the _core patch,
and the companion patch for an effect simply provides a container for the _core. The container provides scripting
to switch between mono and stereo effects, wet/dry mixing, and CPU muting. The container is largely the same
among the effects. These patches are used in the Loop_core patch to process audio output from loopsound~
grains.pat - Provides a modulation signal for the play~ object that plays the loops and volume envelope for granu-
lation effects. It is used in loopsound~ and can be muted from CPU.
loopsound~.pat - Provides a message framework and all DSP for playing back loops at variable speeds, synced
to BPM, and loop selection. Designed to live in a poly~ object and can be muted from CPU.
thr.pat - Does nothing, just passes input to output. This patch is used for patch cord management and organiza-
tion.
thru~.pat - Compensates for CPU muting of effects. Passes input to output if an effect is completely dry, other-
wise it passes audio to the effect.
2coll.pat - A utility that formats items to go into a coll object.
JAVASCRIPTS
btn.js - A js-version of Max 5s textbutton, with some other features. Its used in the Ohm.pat
lenamelter.js substitutes the path to the Sounds folder for any lename that starts with :. Also lters out
<empty> lenames.
incdec.js - Increment and decrement a number. Mostly used for preset interfaces.
jsdial.js - The knob used in the interface. Unlike Maxs standard knobs and sliders, its important to note that a
oat or int sent to the jsdial will not be passed to the output. Only oats and ints sent via pattrstorage to the knob
will be passed. This may seem odd, but it makes the interface much easier to program!
midimap.js - Used by MIDI_Learn.maxpat to assign MIDI controllers to Looper functions.
pattrintface.js - Used in MAIN.maxpat and Ohm.pat to manage the user interface for pattrstorage.
segmentloop.js - When a le is selected in a bin, segmentloop.js will create equal length selections of the le.
striple.js - Strips the lename from a complete le path, return-
ing just the directory. The inverse of Maxs strippath objects.
OHM PATCHES
Ohm.pat - An interface for Livids Ohm controller. With the same layout as the Ohm hardware, its easy to assign
different parameters to the knobs and sliders.
animator.js - Animates sliders and knobs on the Ohm when MIDI comes in.
btnassigns_alt.js - Sends incoming MIDI from Ohm controller to the buttons for display and reassignment.
grid.js - Manages the drawing and mouse clicks of all the buttons in the Ohm interface.
prependdevice.js - Adds a device name to the OSC output. Its presence is a formality, and it is not really used.
selectohm.js - In combination with Maxs midiinfo object, this determines if an ohm is con-
nected to the MIDI input, if so, selects it as the active MIDI input device.
OHM IMAGES
ohmslider_back.png
ohmslider_cap.png
ohmtap.png
ohmtriggers.png
ohmxfader_back.png
ohmxfader_cap.png
ohmxfbtn.png

S-ar putea să vă placă și