6.5. Editing Local Octave

With a Texture's local field and local octave controls, ParameterObjects can be used to alter the pitches derived from a Path. In most TextureModules, the transformation offered by field and octave control can be applied either once per Multiset, or once per event. This is set by editing the TextureStatic options levelField and levelOctave.

In the following example, the local octave attribute of Texture b1 is edited such that octaves are chosen in order from a list of possibilities, creating a sequence of octave transpositions. An octave value of 0 means no transposition; an octave of -2 means a transposition two octaves down.

Example 6-6. Editing Local Octave

[PI(q1)TI(b1)] :: tie
edit TI b1
which parameter? (i,t,b,r,p,f,o,a,n,x,s): o
current local octave: constant, 0
new value: bg, oc, [-3,-2,2,-1]
TI b1: parameter local octave updated.

[PI(q1)TI(b1)] :: tiv
TI: b1, TM: LineGroove, TC: 0, TT: TwelveEqual
pitchMode: pitchClass, polyMode: set, silenceMode: off, postMapMode: on
midiProgram: piano1
   status: +, duration: 000.0--20.08
(i)nstrument        0 (generalMidi: piano1)
(t)ime range        00.0--20.0
(b)pm               constant, 120
(r)hythm            markovPulse, a{6,1,1}b{3,2,0}c{3,5,1}:{a=5|b=3|c=2},
                    (constant, 0)
(p)ath              q1
                    (D2,G#3,A3,D3,E2,B2,A2),(C4,C#4,F#3,G4,A3),(G#5,A4,D#4,E5)
                    10.00(s), 6.25(s), 3.75(s)
local (f)ield       constant, 0
local (o)ctave      basketGen, orderedCyclic, (-3,-2,2,-1)
(a)mplitude         constant, 0.9
pan(n)ing           constant, 0.9
au(x)iliary         none
texture (s)tatic
   s0               parallelMotionList, (), 0.0
   s1               pitchSelectorControl, randomPermutate            
   s2               levelFieldMonophonic, event
   s3               levelOctaveMonophonic, event
texture (d)ynamic   none

Listening to the results of the previous edit (with ELn and ELh), it should be clear that a new octave is applied to each event of Texture b1, creating an regular oscillation of register independent of Path Multiset.

Alternatively, the user may desire local octave and field controls to only be applied once per Multiset. This option can be set for TextureModule LineGroove by editing the TextureStatic parameter "levelOctaveMonophonic." In the following example, the user examines the documentation of ParameterObject levelOctaveMonophonic, and a copy of Texture b1 is created named b2. Next, this Texture's panning is edited, and then the TextureStatic option levelOctaveMonophonic is changed from "event" to "set":

Example 6-7. Editing TextureStatic

[PI(q1)TI(b1)] :: tpv leveloctave
Texture Static ParameterObject
{name,documentation}
levelOctaveMonophonic levelOctaveMonophonic, level
                      Description: Toggle between selection of local octave
                      (transposition) values per set of the Texture's Path, or
                      per event. Arguments: (1) name, (2) level {'set', 'event'}
levelOctavePolyphonic levelOctavePolyphonic, level
                      Description: Toggle between selection of local octave
                      (transposition) values per set of the Texture's Path, per
                      event, or per polyphonic voice event. Arguments: (1) name,
                      (2) level {'set', 'event', 'voice'}

[PI(q1)TI(b1)] :: ticp b1 b2
TextureInstance b2 created.

[PI(q1)TI(b2)] :: tie
edit TI b2
which parameter? (i,t,b,r,p,f,o,a,n,x,s): s
select a static texture parameter to edit, from s0 to s3: 3
current value for e3: event
new value: set
TI b2: parameter texture static updated.

[PI(q1)TI(b2)] :: tie
edit TI b2
which parameter? (i,t,b,r,p,f,o,a,n,x,s): n
current panning: constant, 0.9
new value: c, .1
TI b2: parameter panning updated.

Listening to a new EventList created with these three Textures (with ELn and ELh), it should be clear that all pitch information is synchronized by use of a common Path. In the case of Texture a1, the pitches are taken directly from the Path with register. In the case of Texture b1 (right channel), the Path pitches, without register, are transposed into various registers for each event. In the case of Texture b2 (left channel), the Path pitches, also without register, are transposed into various registers only once per Multiset.