ELECTRIC OPRPHEUS ACADEMY
SPILLING THE BEANS #3 SQUEEZE

Each operation in a limited buffer, regardless of how large this is, allows itself, as we know, to also be implemented granularly: A sound will be disassembled into small, overlapping portions, these will be processed and then reassembled. A confusing variety of techniques, tricks and secrets (not to say 'myths') is centered on this simple method.
A lot of this can be tried out step-by-step in VASP. Firstly, the disassembly and resynthesis are regulated by so-called 'structures'. These can be generated or also analytically derived from the sound content itself - and different structures can also be applied for analysis and resynthesis. This alone already opens a plethora of experimental possibilities.
Beyond this, the grains can also be defined in each domain – in the time domain or in the frequency domain. Then the grains themselves can likewise be processed in each domain again. (For effects, as an example, which are crudely denoted as 'pitch shift' or 'time stretch', numerous methodic variants can be found).

In addition, there are operations that admittedly treat many adjacent samples as a unit, but nonetheless do not work granularly, because the window segment is pushed further on sample by sample. (A luxury if the segments are large).
One of these is the automodulation squeeze. As in the other classic automodulations, it creates combination frequencies of all the frequencies contained in the original, however, with a strong stress on the doubled frequencies. Applied to language, a squeezed, falsetto-like octavation arises (hence the term). The level drop outs are not as glaring as in other automodulations, and can still be compensated by an additional standardization.

demo04_squeeze.mp3
This audio example shall be understood as the processing of an excerpt from published recordings. With the possibility to listen it and study it here for demonstration purposes, there are no further exploitation rights associated with it.

Once again, Oskar Werner, who we will encounter more often in various transformations. The corresponding VASP script looks like this:

sfload gelassen.wav
hilb
squeeze.norm
opt
play

Like many fundamental operations, this also functions best as a complex (sorry, I can’t change it). Therefore, also the Hilbert allpass filter hilb, through which a mono-sound complex will be expanded. A subsequent level optimization opt is advisable, as the resulting level is somewhat unpredictable.

If the application of squeeze in the time domain results in an octavation upwards - a 'pitch shift' - then the application in the frequency domain (in the total spectrum) results in a type of 'time stretch'. And this is also the case:

demo04_squeeze_FFT.mp3
This audio example shall be understood as the processing of an excerpt from published recordings. With the possibility to listen it and study it here for demonstration purposes, there are no further exploitation rights associated with it.

The corresponding VASP script looks like this:

sfload gelassen.wav
squeeze.norm
FFT-
opt
play

Where, however, is the complex processing here?? – Very simple, while half of the buffer is empty. That is also evident from another view: If the resulting sound becomes twice as long, it is clear that there must be space in the buffer for it. [As I said, I would like to begin the workshop with an introduction to complex audio].

The method is also available as an intermodulation: vsqueeze.
(In VASP, all operations that merge the two buffer contents in parallel with each other begin with a 'v' for 'vector').
The effects with it, however, are less spectacular. Most of the time, one component dominates and the others rather seem to be irritations.

A related method, which one can get more nuances out of, is filtering the sound with segments from another one: vfir. fir stands for 'finite impulse response', a standard among filters. Any arbitrary segment of a sound can be selected as a filter function for another sound with it. If the segment is very large, then the recommended method is a convolution, because filtering, resonance and reverberation are principally from the same root methodically, but differ solely in the character of the components.
With vfir.run, however, the selected segment can be continuously moved further.
In the following example white noise is filtered by a relatively large segment (2047 samples) of the poem, whereby the segment (beginning at 0) is moved along at a speed of 0.01 (1/100 of the original speed).

demo05_vfir.mp3
This audio example shall be understood as the processing of an excerpt from published recordings. With the possibility to listen it and study it here for demonstration purposes, there are no further exploitation rights associated with it.

One already nicely hears the transition of the vowels from E to A and the hiss of the S in "gelassen..."
The script looks like this:

A:
sfload gelassen.wav
B:
colnoise.white
vfir.run2047 0,0.1 (win=bell)
opt
play

Moreover, a bell-shaped window for the filter function will be defined in the specs (in round brackets).
Such a 'running filter' can be solved in no other, quicker manner (convolution, etc.). The whole process lasts about one minute on an averagely fast computer. But we have time, don’t we? ...

akueto
G.R.


(c) Günther Rabl 2010