Peter McKenzie Armstrong
Precompositional Algorithms
These texts present synopsies from pre-2001 computer code. Subsequent
programs are described instead within the Notes page of individual scores.
____________________________________________________________________________
IntLens
A Quasi-Prismatic Pitch-Class Series Registrator
(4 versions, 1986-2001)
This program octave-complements &/or compounds the intervals of an input pitch-class series
in all combinations of selection by interval class.
Ver. 1 (Pascal, 1986)
The selection cycle iterates for each of six ranges of expansion, defined as (starting level for
all ICs) to (target level for selected ICs): class to complement, class to compound, class to both,
complement to compound, complement to both, and compound to both. Within each range and combination, series registrations are noted separately per mirror form (P,I,R,RI) and coordinate order (X/Y or Y/X). Registrations total 48 times (2 to the power of half the octave modulus).
Ver. 2 (Forth, 1988)
Registrations are here examined as simultaneities, i.e., chromatic saturation chords. Generation now specifies all expansions within a range of nine octaves. The output for each is a half-page chart with graph and associated statistics, as for example:
A separate sort details relationships
among these otherwise arbitrarily sequenced registrations. Up to sixteen criteria keys may be
applied, independently ascending or descending and in user-specified priority:
1) ExpLevel 5) Frame 9) MinInt 13) MinFreq
2) RowNum 6) Gaps>OD 10) MaxInt 14) MaxFreq
3) Factor 7) NumClust 11) IntSpread 15) FrqSpread
4) Range 8) MaxClust 12) IntsUsed 16) FrqsUsed
Version 2 and its student manual were included with Krikos (below) among curricular materials at
National Chiao Tung University, Taiwan in 1989.
Ver. 3 (APL, 1989)
Expands filing of intermediate data for retrieval by independent compositional software.
Ver. 4 (J, 2001)
In APL's superset and successor, includes Csound-score building with facilities from Krikos.
____________________________________________________________________________
Krikos
Permutation of a Metered Pitch Series via Incremental Dot-graph Rotation
(APL, 1989-91)
Suppose that the serial "forms" were derived, not from horizontal/vertical mirroring, but from
rotation in the plane. As a rotating graph of point coordinates (X=order/Y=pitch-class), the
sequence evolves whenever closely neighboring values swap relative positions. For other than
severely symmetrical starting series, the result yields many more than the four PIRRI forms,
integrating symultaneity (at X/Y swap points) in the process. "Krikos.ws" is an APL workspace
embodying this process. Given initial point coordinates, it generates all possible alignments,
converts their specifications to musical parameter arrays, and formats scores for Csound. It
provided the data for Krikoi on the opening of Schoenberg's Opus 33a (1992).
____________________________________________________________________________
Markov
Generation of Pitch/Duration Cycles via Modular Additive Sequences
(C, 1986)
Given a Markov-order number of seeds (maximally 6), the program proceeds to generate each next
number by summing as many just-previous terms. Each generation, constrained by an input modulus,
ends when the modular cycle is complete. There are two moduli: initially 12, yielding pitch-class
values; then 6 against the result, giving values for corresponding octave-registrations.
Each resulting pitch is tallied, with its tally total's reciprocol then assigned as that pitch's
constant duration. Accordingly within any cycle, the collective duration for all instances
of any given pitch is exactly 1. This program generated the data underlying Cycles for
Synclavier (1984). It is quoted with sample output in Winsor & Delisa, Computer Music in C, Windcrest (1990).
____________________________________________________________________________
SetTrans_P
Generalized Multiplicative Transform via Prime-Only Octave Dimensions
(1985)
If a tone series' octave dimension is prime, all multiplicative-transform factors (not just 5)
yield the full chromatic. Freed from its dodecaphonic substatus as a special case, this transform now
becomes a generative principle. Given prime-tone series input, SetTrans_P specifies the data for
all transform levels, outputting to Csound for pitch specification. The program's essential functions were later incorporated into IntLens version 2, described above.
____________________________________________________________________________
AIR
All-Interval Row Generator
(Forth, 1984)
Generates a permutation of the integers modulo-N (pitch classes) such that all possible unique
successive differences (interval classes) are represented in absolute value twice each. If the
modulus is even, signs modifying the instances of a given IC are opposite; if it is odd, they
are the same, with a final value redundancy. The number of array positions separating member
instances of each IC are unique for odd moduli and nearly so (one exception) for even. Three arrays are output per example found: the pitch-class series, its intervals as signed classes, and the position separations per interval-class pair.
____________________________________________________________________________