Thursday, January 10, 2008

Loopo update

Demo video of the updated version:

Download the patch:

The loop tool "loopo" has been updated to include the following features:
  • Reactive to MIDI data (velocity, pitch and CC)
  • Eight voices
  • Quick startup mode

Let us have a quick look at the user interface.
  • The global section is located to the top of the window.
    • The 'read' button loads in a new sample into the audio buffer. The same sample is loaded into all eight voices. The first two minutes of the sample is loaded into the buffer.
    • BPM sets the global timebase for all voices.
    • MIDI input sets the device to which the patch listens to. The actual channel number is determined by the voice. The first voice responds to channel 1, the second to channel 2 and so on. If nothing is actively selected by the user at the start of a session, then the program will react to all MIDI inputs.
  • Each voice has five controls to the left of the waveform display.
    • The toggle square determines if that voice is muted or not. By unmuting a voice, the loop will start from the beginning of the selection point.
    • Ratio sets the pitch / playback ratio of that voice for the sample. C3 is a ratio of 1.0. Thus, C2 is a ratio of 0.5 and C5 is a ratio of 2.0 and so on.
    • Divider sets the length of the loop. The end loop point is calculated in respect to the start of the selection point on the waveform display. 1.0 gives a length of a crotchet note in respect to the master tempo. 2.0 gives a quaver, 3.0 gives triplet quavers, 4.0 gives semiquavers, 0.25 gives a whole note and 0.5 gives a minum. Values other than those that give exact, classical note lengths are possible.
  • Each voice has a waveform display.
    • The start of the selection point (as chosen with the mouse) will determine the end of the loop. The end of the loop is determined by the 'Divider' field to the left of the waveform.
  • Each voice has four controls and one indicator to the right of the waveform display.
    • The graphical curve displays the characteristic of the EQ section. The curve can be manipulated by dragging at various points to influence the Q, gain and frequency.
    • The menu to the upper right of the EQ display controls the type of EQ applied to the signal. The following types are available: display, lowpass, highpass, bandpass, bandstop, peaknotch, lowshelf, highshelf, resonant and allpass.

Let us have a quick look at the MIDI mapping.
  • The channel of the MIDI data determines the voice to which it is mapped. Channel 1 is mapped to voice 1, channel 2 to voice 2 and so on.
  • A note-on event is mapped in two ways - the pitch byte and the velocity byte.
    • The pitch byte determines the start selection point. The two minute sample is divided up into 128 points. A pitch byte of 0 will be at the start of the sample. A pitch byte of 127 will be at the end of the sample.
    • The velocity byte controls the volume of the voice. The higher the velocity, the louder the voice.
  • A note-off turns that particular voice off.
  • MIDI CC#1 controls the pitch ratio.
  • MIDI CC# 91 controls the filter center / peak / cutoff frequency.
  • MIDI CC #93 controls the fine-tuning of the loop selection start point.

Step-by-step quick start guide:
  1. Load a "host" sequencer (eg. Ableton Live, ProTools etc). Load Max/MSP and open the Loopo patch.
  2. Go to the Max/MSP menu Options > DSP Status. Select your driver and output device and set the Audio engine to on.
  3. Click on the read button in Loopo, select a long sample to read into the audio buffer.
  4. Set the master BPM in Loopo to the same as the "host" sequencer.
  5. Set the MIDI input to "to Max/MSP" in Loopo.
  6. In the "host" sequencer, create a MIDI track and set the output to "to Max/MSP".
  7. Review the MIDI mapping (see above).
  8. In Loopo, set up the eight voices as desired (see above).


Mark said...

wow, this is really cool! great work. do you have the patch available anywhere for download?

Sebastian Tomczak said...

Hi mark, sorry about the delay in reply.

I have updated the blog post so that it now contains a link to the patch.


Sebastian Tomczak