ELECTRIC OPRPHEUS ACADEMY
SPILLING THE BEANS #14 WARP
In the serial music of the 20th
century (perhaps also much earlier, who knows?) the idea came up that
one cannot merely transpose and mirror motifs, but can also stretch and
shrink them by proportionally enlarging or reducing all pitch intervals.
Naturally that only works, strictly speaking, with integral factors, if
one wants to assure that one remains in the tonal system at the same time.
What one means, however, are pitches, not frequencies. The frequency proportions
of the tones themselves are not affected by it. With the means of spectral
transformation, this allows itself to be carried out for all frequencies
and with arbitrary factors. In analogy to the interval stretching described
at the beginning, some spectral applications call this 'stretch.' One
should nevertheless be aware that this is it no stretch in the actual
sense. A stretch in the spectrum produces a reciprocal stretch in time
– nothing more than the long-known tempo change. (The pitches and
the frequencies will indeed be changed then, but not the intervals). In
order for the intervals between the single frequencies to appear stretched
or compressed, the spectral ordinates must be distorted. In VASP, the
according ordinate distortion is called odist,
or in the general form with many different variants: warp.
Like all routines in VASP, these are also applicable in every domain.
In the time domain, odist shows itself to be a continuous tempo change,
a special type of tempo glissando. Our much-strained allegro:
sfload mozart.wav
odist 2
Since a tempo change in one domain, as we know, causes a reciprocal tempo change in the respective other domain, it is clear that ordinate distortion in the spectrum must likewise result in a type of glissando in the time domain. At first, a lower rate of distortion (factor 1 would be undistorted):
FFT
xodist 1.1
FFT-
mozart_specodist_little.mp3
FFT; xslope 440hz,2; xphirand; FFT-
One hears very beautifully the stretching of all interval relationships
by 10% (each fifth becomes almost a half tone higher, each octave a three-quarter
tone higher, etc.). As to expect, we also have to deal with a blurring
of the temporal structures. That is no mistake of the routine; it rather
lies in the nature of the matter! At a stronger distortion rate, this
effect is so dominant that the interval stretches shift to the background,
even though they exactly occur. With a factor of 2:
mozart_specodist_strong.mp3
A very similar routine is slope. Here as well, the intervals
will be stretched or compressed as with odist; only one point allows itself
to be held: a time point, or, in the spectrum, a frequency.
The same with a factor of 0.5
mozart_specslope05.mp3
The obvious symmetry of the effect results
from the necessary symmetric application of the ordinate distortion in the
spectrum. (One finds out more about it in the topics FFT and complex audio).
* * *
This distortion factor is, strictly speaking,
an exponent. Each interval in the spectrum – really each one –
appears raised to the power of this exponent.
(Naturally, one could maintain a logarithmic
perspective and say the intervals are stretched or shrinked, doubled or
halved. However, we are not dealing with tone scales here, but rather with
sounds. For further considerations, it is good to keep an eye on the exponential
character).
If one observes an integral overtone row, as we know it from many instruments,
then the newly resulting overtone row in the first case (exponent 2) will
consist of the squares of the integers; if a partial tone row only consists
of odd numbers (a string torn in the middle, for instance), then only
out of the squares of the odd numbers. That is insofar remarkable, since
it rather corresponds to the frequency diagram of a bending vibration
– of vibrating bar!
In the opposite case, (exponent 0.5) one gets a row from the roots of
the integers. That, in turn, partially corresponds to the frequency diagram
of a square membrane or plate.
One listens again for that in both of the previous examples: The character
of specslope05 is indeed dense and planar; the one from specslope2, in
contrast, sounds as if played on a rod. Of course, there are all shades
as well – a source for systematic compositional work.
* * *
How can one achieve such ordinate distortions without incurring the temporal
changes and glissandi? (But they are also beautiful, aren’t they?)
– Just like with all other spectral interventions: only granular.
There are basically two approaches to it. The first: One goes about it
like a 'harmonizer'. One does not split the sound into temporal grains,
but rather its total spectrum into frequency bands (spectral grains),
which one can move to another position (see the VASP scripts below).
Exponent 2
mozart_specslope2_GRT.mp3
Exponent 0.5
mozart_specslope05_GRT.mp3
This is the best method. Real time-capable it is naturally not. One has
to choose a different approach: Structure the sound temporally in grains
and accordingly process each grain. Such a thing can be illustrated in
VASP with a granular process:
GRPROC.xdspl {FFT; xslope 440hz,2; FFT-}
A sub-process that can be carried out grain by grain stands here in curly brackets. In this manner, granular processes can be studied in VASP. But whoever does that as artlessly as in this example will be confronted with the usual granular crumbs. One can still build in a few refinements and tricks there. Much more is contained in the AMP core module spec.slope (see AMP script below).
* * *
The distortion of the intervals can be determined, as said, by raising
it to the power of the distortion rate (exponent). The other way around,
one can also determine how a certain interval should change. In this case,
one has to form the quotients of the logarithms of both intervals. Here
is one example:
Each pure fifth should become an octave; then the exponential is equal
to the logarithm of the octave divided by the logarithm of the fifth.
(No matter which logarithm – whether natural, decadal or dual –
the quotient is always the same).
x = log(2)/log(1.5) = 1.7095
The changes of all remaining intervals are also the result.
The octaves become 2^1.7095 = 2.3705 = 1.635*2 (a neutral sixth, between
a larger and smaller sixth, plus 1 octave)
The fourth becomes 1.333^1.7095 = 1.635 (the same neutral sixth)
The large third becomes 1.25^1.7095 = 1.4644 (a too small fifth)
The small third becomes 1.2^1.7095 = 1.3657 (a too
big fourth)One clearly hears this when one levels
the time structure (freeze):
FFT; xodist 1.7095; xphirand; FFT-
mozart_odist_freeze.mp3Many exponents that cause very unconventional harmonic changes can be found. One thus enters the broad area of 'unharmonic' sounds – as they were so beautifully called earlier ...
Try it out (computationally and/or audibly)!
* * *
And now back to warp
The ordinate distortion type in the spectrum, which causes a uniform stretching of all intervals, is surely the most fundamental. The distortion, as well as an amplitude distortion, can be illustrated in a diagram:
On the basis of the corresponding curve, each position of a sample (x-axis)
can be assigned a new position (y-axis).
(The operations warp.bend
and warp.slope in
VASP are also equipped with upstream and downstream variable alias filters).
Beyond that, there are still numerous variants, including warp.curly,
which is also described in SPILLING THE BEANS #2. Basically, all types
of distortion curves can also be used for ordinate distortion.
* * * size=19 The sound will be transformed in its total spectrum;
the spectrum split into the individual grains; each spectral grain transformed
back into the time domain, distorted and transformed into the frequency
domain again; the whole result again transformed from the spectrum back
into the time domain ....? A: "switch to buffer A
To conclude, one small brain-teaser for those who have already worked
with VASP. What is happening in the following VASP script?
$size=15
grsize=13
A:
sfload mozart0.wav
FFT
$xgen.medser 400
B:
$copy
clear
GRPROC.dspl {FFT-; odist 2; FFT}
FFT-
ovp
mozart_raetsel.mp3
akueto
G.R.
(c) Günther Rabl
2012
-------------------------------------------------------------
sfload mozart.wav "load sound file
FFT "transformation into spectrum
$xgen.medser 400 "generate structure with
400 frequency bands
B: "switch to buffer B
$copy "kopiert Struktur
$xslope 440hz,2 "structure distortion slope
GRT.xautofoc "granular transformation
FFT- "inverse transformation
First the sound will be transformed in its total spectrum (FFT); then a
granular structure will be generated, 400 frequency bands, symmetric, medium
– between linear and logarithmic ($xgen.medser); this structure will
be copied ($copy) and subsequently distorted with the slope function ($xslope);
the granular transformation (GRT) shifts all frequency bands from the original
position to the newly distorted one (.xautofoc is a fitting modus in this
case); the result will again be transformed back (FFT-).
Nevertheless, one could also extract the granular structures analytically,
according to the peaks in the spectrum. Many subtleties can still be hauled
out of there.
----------------------------------------------------------
* AMP script for spec.slope
i1=mozart.wav (m)
k1=spec.slope (m,*i1,dim=4000)
out=mozart_specslope_AMP.wav (m,*k1,opt)
seg=1
dur: 20 "duration 20 seconds
k1.center: 330 "center frequency
k1.rate: 1.1 "distortion rate