ELECTRIC OPRPHEUS ACADEMY
SPILLING THE BEANS #13 GREENSPEC
In the past years, the so-called 'freezes' were all
the rage. Particularly in instrumental music with live electronics, there
was the wish to allow tones and frequencies that occur once to stand for
all eternity (or at least for a longer time span), to 'freeze' them.
In a non-real time context, a total freeze, as we know, is no problem: random phases in the spectrum.
If we replace all the phases in the time domain with random values, while retaining the amplitudes, then the rhythmic structure remains, but all frequencies are leveled – like a modulation with white noise.
The original (once again, Oskar Werner):
and the same with random phases:
If this method, applied in the time domain, levels all frequencies, then they, applied in the spectrum, level all time points. And this is also the case:
All frequencies occurring in the brief sample are preserved in their amplitudes; each temporal context, and thus the rhythmic structure as well, is dissolved – precisely a freeze.
It becomes even clearer if we only take a small excerpt from it, for instance, the 'a' in "gelassen":
black: the spectrum of the original
blue: the spectrum of ow_phirand.mp3 (like white noise)
red: the spectrum of the vowel 'a'
A clean sound, without microloops, with a natural pulse and arbitrarily long, depending on how large we select the buffer (VASP Script 1 in the Appendix). However, the effect works in both time directions; each frequency is audible until the end. That is possibly not what the composers and live electronics artists imagine. A frequency should be 'frozen' from the moment it appears, not already beforehand.
We have to choose another approach to this, which leads us to the topic: 'greenspec'
I have borrowed the term from a very beautiful site, 'The Colors of Noise,' which discusses the various types of colored noises. Green noise is described therein as the spectrum that is created if one accumulates the sounds of this world over a long period of time. An interesting thought (one does not have to expect the ambient sound of the universe ...).
The spectral accumulator greenspec, a core module in AMP, has several modi. One of them is 'freeze.' Each frequency occurring once stands still with its maximum amplitude:
Other modi would be 'heap' (occurring frequencies are thereby continuously further accumulated and only when silence first begins does the last condition stand still as a freeze); or 'avg' (average – an average amplitude will be constantly determined; when silence occurs, the last freeze slowly fades). Very interesting as well is 'logavg' (a logarithmic average):
A type of own reverberation, without a reverb function, which results out of the sound itself (AMP Scripts 1 and 2 in the Appendix).
greenspec.freeze thereby corresponds most likely to the notion of a freeze in live electronics. Each frequency occurring once stands still, if one does not take action, until the end of all time. That naturally brings up the formal question: How does one get out of there again? (Pull the power plug out??)
To that end, there are a series of functions that can – more or less quickly – remove this freeze.
They are adjustable in parameters:
decay – a continuous, exponential decrease
damp – decrease after a filter function
feaze – thinning out of the spectrum
focus – focusing on the strongest frequency
These fade functions can all be activated at the same time as well. And, since we are already once in the spectrum, several standards are also built in:
pitch – proportional pitch changes
slope – interval stretching
mirr – proportional mirroring
Here is one variant with a decay of 5 seconds and a dampening factor of 0.8 (1 would be unchanged):
A thinning-out through feaze
(AMP Scripts 3 and 4 in the Appendix)
In conclusion, one more, somewhat longer example in which another interval stretch is activated in addition to decay and feaze. The selected stretch factor causes, among other things, each octave in the spectrum to become a fourth + octave, each fifth to become a small seventh, and each fourth to become a fifth. Such spectral operations will be the topic of the next newsletters).
(AMP Script 5 in the Appendix)
------------------------------------- VASP Script 1
dimension 2^17=131072 samples, or 2.97sec
sfload gelassen.wav "load sound file in buffer
clear.y "clear right channel of stereo (complex) buffer
rmo "remove offset (a subsonic filter)
ovp "optimize (normalize), view (control graphic) & play
sfstore ow_orig.wav (m,z) "write content in sound file
bbu "buffer backup
FFT; opt; viewspec "FFT, optimize, spectrum graphic
bbu% "restore buffer (see bbu)
phirand "replace phases with random values
sfstore ow_phirand.wav (m,z)
opt "optimize (elsewhere it is called 'normalize')
viewspec+ (blue) "spectrum graphic added (blue curve)
phirand "random phases, but this time in the spectrum
FFT- "inverse FFT
clear.y; bevz 35ms "fade in/fade out at zero (bevel)
sfstore ow_specphirand.wav (m,z)
isol 0.2sec,0.28sec; bevz 35ms "isolate excerpt from to
clear.y; bevz 35ms
sfstore ow_cut_specphirand.wav (m,z)
------------------------------------- AMP Script 1
* input scanner 1 administers the sound file (mono)
* core module 1 is greenspec.freeze (mono, patch is input scanner 1, granular buffer at least 4000 samples, therefore 4096)
* output sound file (mono, patch is core module 1, optimize result in the level)
* 1 sequencer segment
* process duration 5 seconds
* fadeout at the end 0.1 seconds
------------------------------------- AMP Script 2
------------------------------------- AMP Script 3
k1.decay: 5 "decay time parameter of core module 1
k1.damp: 0.8 "damping parameter (1 would be undampened)
k1.direct: 0.5 "direct share of module input (i1)
------------------------------------- AMP Script 4
k1.feaze: 4 "feaze parameter of k1 (spectral thin-out)
k1.feeddur: 6.8 "limit the input of k1 to 6.8sec
------------------------------------- AMP Script 5
k1=greenspec.freeze (m:s,*k2,dim=4000) "mono to stereo
out=ow_greenspec_feaze.wav (2:2,*k1,opt) "stereo to stereo
k1.slopecenter: 300 "center for interval stretch
k1.sloperate: 1.415 "factor for interval stretch