PitchLoop89 (or short: PL89) is a pitch shifting effect, inspired by an early digital effects processor, enhanced with a few contemporary features, and implemented in Max4Live. - THE EFFECT IS UNDER DEVELOPMENT - Final version to be expected in April.

Basic Structure and Concept

PL89 contains two independent pitch shifting delays. Pitch shifting is achieved by using the digital equivalent of a tape loop with one head for recording and two moving heads for playback. If the playback head is moving along with the tape, pitch goes down, if it moves in the opposite direction, pitch goes up. Of course one cannot do this for a longer time: the play head would either need to go beyond the recording head, thus impossibly listen 'to the future'.
Or it would need to go further back then the total length of the loop. To avoid that, only a portion of time is played back, and then the delay jumps back to its beginning. To make this smooth, the effect uses a crossfade between two independent playback circuits per channel and is looking for zero crossings in the signal.
The position and movement of these virtual playback heads define both the sonic character of the pitch shifting and the overall delay. The implementation of this principle in PitchLoop89 adds a lot to this basic concept, and turns it a very flexible sound design and performance tool.

Global Functions

The two pitch shifting units of PL89 can be operated completely independent, with one getting signals from the left input channel, and the other one from the right input channel [ Routing: L/R ]. Or they can get a mix of both channels [ Routing: Sum ], which includes mixing the signal from the left and right feedback controls.

This allows to build complex cascades of pitched feedbacks. As a third option, the output from the left delay line can be defined as input to the right delay line [ Routing: L>R ], which allows the creation of different types of complex soundscapes.

A global Bandwidth control defines the recording and playback sample rate. This has implications for the maximum delay length, the momentary values for the playback controls and for the upper frequency limit of the processing (20kHz, 10kHz, 5 kHz). In the 20kHz setting the un-pitched delay line has a length of two seconds per channel.

The historical reason for the existence of this parameter is the limited available RAM in the hardware, which is not an issue anymore in 2019, but since switching the sample rate causes interesting octave jumps, the behaviour is also available in PL89.
The content of each channels momentary delay memory can be 'frozen' using the Latch control. What you hear in that mode is a (crossfading) loop defined by the Position and Segment parameter. In normal and in frozen operation that segment can also be played backwards with the Back toggle. To simplify working with shorter rythmical delays a Short funtion is available, dividing the Position setting by 10. Since still the complete memory is filled with incoming material, operating this switch during non-frozen operation creates interesting jumps in time.

It is possible to change the parameters of both pitch shifters at once when the Link toggle is active: changing a parameter on the top unit is sent to the same one on the bottom. Changing a parameter on the bottom one does not change the parameter on the top one, though.

Pitch Shifting

Pitch shifting is achieved by controlling the Coarse and Fine parameters. Coarse has a range of -24 to +12 semitones, in quarter note intervals. Fine allows for tuning continuously in a range of +-1 semitone. The actual ratio between playback and recording speed is shown in the display below. 0.500 means playback is at half speed, which equals one octave down.
Vibrato can be added using a dedicated LFO with a choice of a bipolar sine wave or unipolar (upwards only) square wave, with a range of up to 12 semitones.

The Feedback parameter re-routes the output signal of the pitch shifter back to the input, but before the Routing options. Depending on Routing settings, and choice of Delay times and modulations the effect of feedback can be quite different. Try it!

Delays and Position

The distance between the virtual record head and the playback unit is defined with the Position parameter, but since the playback for pitch shifting has to be done in short slices (see above), a second parameter is needed: Segment, which defines the length of each slice. Short duration of segments sound very different than longer ones, and the perceived quality of the pitch shifting depends very largely on the Segment size, depending on material. Small settings are typically more useful for pitching rhythmical material, whilst long settings might work best for textures.

If Position is very close to zero (which implies the delay between recording and playback is very small) and Segment is large, conditions can occur that lead to a 'folding' of the memory: parts of the material will be taken from the end of the memory instead from the -impossible- future. At the moment there is no protection against it, partially because it can be in a strange way interesting for glitchy results.

Position LFO

The position of each slice can be modulated with three different sources: Noise, LFO and in MIDI mode via Ramp. Noise modulates slice position randomly. Small values slightly 'smear' the signal, which might sound more natural, whilst larger settings have a more granular effect. The LFO offers plenty of waveforms including a random movement. Its effect is highly dependent on the settings of the other parameters, and all sorts of subtle or drastic oddities can be achieved.
When Latch is active, the PL89 acts like a looping and crossfading sampler where Position defines the start point and Segment the loop length. Thus, LFO and Ramp can be used for rough time stretching or wavetable-like effects. In non-latching operation it is possible to momentary 'warp' incoming material.
The display shows time in milliseconds, both for the relative position of the playback and of the length of the segment. The display does not show the effect of LFO modulation, though.

Filtering and Output

The output of each delay line is processed with two Filters, a Low Cut (or high pass) filter, and a High Cut (low pass) filter. They can be quite essential for shaping the sound and they are located inside the feedback path, thus being applied recursively when feedback happens. The filter frequencies follow MIDI note input if MIDI is assigned to Pitch (see below).

Each pitch shifter has its own Output level and Pan control.

In Routing mode L>R the lower delay line does not receive a signal from the input of the device anymore, but only the output of the upper delay line, before its Output. Setting the Output of the upper delay line to off is efficiently turning the unit into two pitch shifters in series.

A global Dry/Wet control allows to mix input with processed output.

MIDI control

Using a special MIDI routing device, the PL89 can be turned into a hybrid between effect and instrument. Even when the PL89 is used as a standalone pitch shifting looping device, automating its parameters in Live or assigning hardware controllers is very rewarding: a lot of wild effects can be achieved.

PL89 bridges the gap between effect and instrument when a special MIDI device - the PL89m - is inserted into a MIDI track. It routes MIDI data from its own track into any PL89 present in the same set.

MIDI notes, control messages, and MIDI sustain can be used to control several functions:To turn on/off the Latch mode for one or both delays, to transpose Pitch with the abilty to add a Glide time, and to apply a volume envelope using the VCA paramters Attack and Decay. A Ramp can be applied to Position which e.g. allows to turn the PL89 into a time-stretching sampler, when Latch is active. Ramp defines the additional delay added to Position at the beginning of a note, and Rate sets the relative time till it goes back to zero. A rate of 1.000 implies 'normal not time-stretching' behavior when not transposed. Adjusting Ramp in conjunction with Position can be quite tricky, but that's how it is.

In Duo mode, incoming MIDI notes are mapped alternating to the top and bottom delay, turning the PL89 into some sort of dual voice instrument.

In order to use the MIDI features, the PL89m MIDI device needs to be inserted in the MIDI track from which one wants to grab the MIDI data.

In each Live set there must be only be one instance of the LP89m.

Every PitchLoop89 device will receive the data from the LP89m, but if no MIDI options (VCA, Pitch, Latch, Ramp) are enabled, MIDI will have no effect on that PL89 instance. The MIDI section can be folded away if not in use. If MIDI is folded away, MIDI input from PL89m is also disabled for this device.

Memory I/O

The primary intended use of PitchLoop89 is as effects processor. However, latching and momentary freezing memory is an essential part of what it can do. And sometimes, what has been frozen in time at a specific moment is worth keeping.
Thus, unlike the origial hardware, the device allows to Write its currrent memory as a two second stereo file. However, that file is never part of a preset or stored document, and it must be re-loaded manually when needed, using the Read button.
Alternatively any other stereo file can be used, but it will always be truncated to 88200 samples / two seconds. Important: loading a file only makes sense when Latch is activated, or it will be immediately replaced with new input signals!

Historical Background

PitchLoop89 is partially inspired by the DHM 89 B2 pitch shifting delay line, made in 1978 by the french company Publison. It does an amazing job with very limited hardware, it does not even have a CPU, all functions are carried out with a mix of analog VCAs, logic gates, counters. Tons of TTL chips, 071s and 4066s inside. It came with an additional unit, the KB 2000, which did allow to play the pitch on a keyboard, and added features like semi time-stretch playback.
Quite unbelievable for that time and massively in use by the composers at INA/GRM and many others. The charm of it in 2019 is its immediate simplicity (no computer means no menus!) Some of the most beautiful features are a byproduct of the technology, like the octave jumps when switching sample rate / memory time.
I wanted to port the essence of it into a plugin, and whilst doing so I came up with a lot of new ideas. The resulting MaxForLive device offers several options not available within the original hardware. And of course you can use multiple instances without the need to sell your house to afford it, and you do not have to worry about it breaking and almost no one can repair it anymore.

Known Issues

Fixed all bugs today. I am sure I'll discover more of them later...
Parameter mappings for Push are not done. Parameter names, info texts, modulation modes etc. no set yet. Internal clean up and documentation needed. Sound examples to be done.

No public beta. Release version and conditions to be announced in April.