Theodore Lotis - Li Po - 6:55 2011
for flute, live electronics and tape
comments, analysis and ideas
In what house, the jade flute that sends these dark notes drifting,
scattering on the spring wind that fills Lo-yang?
Tonight if we should hear the willow-breaking song,
who could help but long for the gardens of home?
Li Po, 701-762
Li Po (701-762) was one of the most important romantic poets
during the Tang dynasty. “Li Po” is a comment on his poetry and, at
the same time, on the traditional Chinese music for dizi flute and
the great Chinese interpreters which continuously extend the
timbral attributes of this instrument. The flute contributes to the
textural development, the gestural action and the spatial
articulation of Li Po, either as transformed pre-recorded material, or
by means of real-time algorithmic treatment in SuperCollider’s (SC)
environment.
1
Let’s imagine that this is part 1 of Li Po (0:00 – 1:10)
As flute is a noisy instrument, which is actually one of its best
characteristics, its sound emerges from filtered Pink Noise. This is
done, as shown in the SC patch bellow, through a ‘routine’ called
Resonz (~array[0]). Resonators are what I like to call ‘soul
investigators’, they are inherent to any space, small or large, they
are the sonic soul of all places and spaces.
SynthDef(\reson,
{ | out, freq, gate = 1 |
var signal, env;
env = EnvGen.ar(Env.asr(0.5, 3, 15), gate, doneAction: 2);
signal = Resonz.ar({ PinkNoise.ar(0.9) } ! 2, freq, 0.001, SinOsc.kr(0.01, 0));
Out.ar(out, signal * env)
}).load(s);
The Resonz Ugen allows a very thin frequency band of the Pink
Noise to pass through. This band is specified both in frequencies
and durations by variables given later in the SC patch:
2
array = [
// 0
{ var freqs, durs;
freqs = [ 987.77, 1479.98, 2793.83 ]; //B5, F#6/Gb6, F7;
durs = [ 22, 14, 20 ]; //10, 15, 15????
r = Routine({
3.do({| index |
("the current index is: " ++ index).postln;
Synth(\reson, [ \freq, freqs[index] ]);
durs[index].wait;
});
s.sendMsg(\n_set, 1, \gate, 0);
So, the notes B5, F#6 and F7 are just 3 spectral slices of the Pink
Noise. The flute starts with some noisy notes, adding thus to the
spectrum of the filtered Pink Noise. Because of its noisy character,
the flute also enhances the distant sonic space.
The co-operation between the flute, the live electronics and the
tape for the creation of the spectral content is apparent in 0:10 and
0:33 with the multiphonic, and in 0:48. The flutist here, creates
difference tones with his voice glissando, which starts one octave
bellow the G6. The internal spectral melodic profiles (glissandi),
which are created due to the difference tones, are shown in fig 1.
Fig. 1: difference tones-spectral glissandi-spectral melodic profiles
In this first minute, the symbol afap is introduced, asking the flutist
to play the notes as fast as possible. I believe that this kind of
3
notation in important, since it permits the flutist to use his
virtuosity. Also, symbols such as apap (as piano as possible) and
affap (as forte as possible), bypass the long-standing question:
what is a real pianississississimo? What is a real fortississississimo?
The player is instructed to play as fast, as softly or as loudly he can.
Simple as that!
…and, let us suppose this is part 2 of Li Po (1:10-2:27)
At 1:10 (in live performance these timing is not very accurate. For
this analysis I’m using the timings given in score) the flutist triggers
a long tape part which continues till the end of the piece. The
triggering is made by an Amplitude Ugen in SC as shown on the
patch bellow:
4
SynthDef(\ampTrigger,
{| out = 0, in = 6, bufnum, gate = 1 |
var input, amp, trig, thresh, signal, env, env2;
input = SoundIn.ar(in);
amp = Amplitude.ar(input);
thresh = -18.dbamp;
trig = Trig.kr(amp > thresh, BufDur.kr(bufnum));
signal = PlayBuf.ar(2, bufnum, trigger: trig);
env = EnvGen.ar(
Env(
[ 0, 1, 1, 0 ],
[ 0.01, BufDur.kr(bufnum) - 0.02, 0.01 ]
),
trig
);
env2 = EnvGen.ar(
Env([ 0, 1, 0 ], [ 0.02, 0.02 ], releaseNode: 1),
gate,
doneAction: 2
);
Out.ar(out, signal * env * env2)
}).load(s);
The first half of the second part (1:10-1:44) is a celebration of
flutter-tonguings, tremoli and overblows. The flutter-tonguing is a
very common technique in traditional chinese music for dizi flute. In
Li Po, flutter-tonguings, tremoli and overblows are played loudly in
contrast with the distant pianissimo of the first minute of the piece.
…now, let us say that this is part 3 of Li Po (2:28-4:38)
5
In this section the flute is processed and transformed by ~array[1] in the
following patch:
SynthDef(\pitchshifter2,
{| out = 0, in = 6, gate = 1 |
var signal, env, grainSize;
grainSize = 0.01;
signal = PitchShift.ar(
SoundIn.ar(in),
grainSize,
2.0,
0.0001,
grainSize
)!2;
env = EnvGen.ar(
Env([ 0, 1, 0 ], [ 0.02, 4.0 ], releaseNode: 1),
gate,
doneAction: 2
);
Out.ar(out, signal * env)
}).load(s);
The pitch shifter transposes the sound of the flute 2 octaves higher
and, at the same time, granulates it into very short (grainsize:
0.01) particles.
The whole section is based on the opposed duality of
transparency/opacity. The spectral occupancy changes from opacity
to transparency and vice versa. Also, difference in dynamics
enforces this duality. The flutist follows the dynamics on tape.
…here is part 4 of Li Po (4:38-5:34)
A low, loud and opaque sound with long resonance starts this
section, whilst the evaluation of ~array[2] releases the pitch shifter.
6
A pre-recorded human voice on tape is emerged from the low
sound. The voice is previously transformed by the patch shown
bellow:
(
{
var options;
options = [ \additive, \subtractive ];
if (options.choose == \additive,
{
"additive".postln;
a = { SinOsc.ar(1000 + (1200 * PlayBuf.ar(1,b,
BufRateScale.kr(b), loop:1)),0,0.03)!2 }.scope(1);
},
{
"subtractive".postln;
a = { SinOsc.ar(50 + (12000 * PlayBuf.ar(1,b,
BufRateScale.kr(b), loop:1)),0,0.03)!2 }.scope(1);
}
)
}.scope
)
…and finally, part 5 of Li Po (5:35-end)
The initial sound of the previous section appears also here in the
beginning. At the same time, ~array[3] is evaluated triggering the
second pitch shifter in the piece:
SynthDef(\pitchshifter,
{ | out, in = 0, gate = 1 |
var signal, env, grainSize = 0.1;
signal = PitchShift.ar(
SoundIn.ar(in),
grainSize,
7
XLine.kr(8.0, 0.2, 60),
XLine.kr(0.001, 0.01, 60),
XLine.kr(0.1, grainSize, 60)
)!2;
env = EnvGen.ar(
Env([ 0, 1, 0 ], [ 0.02, 6.0 ], releaseNode: 1),
gate, doneAction: 2
);
Out.ar(out, signal * env)
}).load(s);
The important here is the XLine.kr(8.0, 0.2, 60), which dynamically
transposes the stable multiphonic of the flute (5:35), creating
smooth and emerging spectral glissandi. The transposition is
continuous and starts 8 octaves above the original pitch of the flute.
Within a total duration of 60 seconds, the pitch shifter transposes
the flute almost one and a half octave lower.
At the end of the piece, the last two arrays are evaluated one after
the other: ~array [4] releases the running pitch shifter and
~array[5] stops the processing in SC.
In Li Po there are some key elements, which actually impregnates
all my music:
1. spatial articulation (distant/close spaces, sonic figures which
emerge within vast and remote spaces, internal spaces
which converse and contrast with external ones)
2. spectral occupancy (definition of spectra by means of
spectral roots and spectral canopy [Denis Smalley], use of
high and low spectral bands)
3. gestural articulation/textural content (gestures carry along
and shape the textures. Textures are shaped and formed by
means of gestural articulation)
4. Hints of tonal and melodic approaches coexist with noisy
environments
8
…last but not least The Concert Set Up
In Li Po, the tape part in not
just the accompaniment of the
flute, and therefore, the flute
is not a “lead” instrument. The
flute’s spectral characteristics,
should contribute to a holistic
timbral, textural, gestural and
spatial behavior. This is why
the flutist is positioned in
between the speakers. For the
same reason, the volume
levels of the speakers and the
flute should be carefully
balanced.