| Anh.B | audio | zum\boulez | fulcy.pl fulcz.pl | full cycle, the most useless |
| Anh.F | audio | zum\fr3d | polyfr3d.pl | true fractal in 3 dimensions: pitch, time, volume, plus klangfarb |
| Anh.I | audio | zum\izum | driver.pl iizum.pl | moment musical |
| Anh.M | audio | zum\marxe | marxe.pl | Markov / Xenakis |
| Anh.M2 | audio | zum\maxeni | maxeni.pl | Markov / Xenakis, thematic |
| Anh.M3 | audio | zum\muse | driver.pl tondur.pl | arpeggiated chords over "enigma" theme |
| Anh.P | audio | zum\pocpo | dri.pl pocpo.pl | Strict dodecaphony (tension, false relations at octave, triads dissonant, etc.) |
| Anh.R | audio | zum\random | eirando.pl | Random chords, with random repetitions |
| Anh.S | audio | zum\schi | schi.pl | Schillinger method ? God knows |
| Anh.S2 | audio | zum\schix | schix.pl | yet another Schillinger method |
| Anh.T | audio | zum\telef | telef.pl | sounding my online phone list |
| Anh.T2 | audio | zum\tet | teu.pl | chamber piece: sonata: piano+one, trio: piano+2, etc... |
| Anh.X | audio | zum\xe | xepiano.pl | Xenakis. boxes filled with events |
| Anh.X2 | audio | zum\xe | arbo.pl | Xenakis "arborescences", more or less |
and the lists are repeatedly scanned and combined. Since the lengths of the lists are coprime, all the resulting
5×6×7×11 (or 5×12×7×11) items are unique,
not that anyone would notice. One of the volumes is ZERO, producing
rests. Up to two of the 5 or 7 tones are also rests. The durations are picked at random in the range 1 to 12.
The five registers cover the piano range, about E2 to C8 (MIDI notation: middle C is C5)
A typical result
produces the MIDI score scoSRAND.mid, music for piano solo.
similar music, but the voices get desynchronized, so there is some variation in the perceived rhythm along the piece.
The instruction:
All the parameters are optional. Their interpretation is as follows:
This reads a score, invariably called inin.txt , and prepares the input for
enig.pl , the file ouou.txt.
It takes no parameters.
Examples:
The l.h. plays the cancrizans form of the r.h. , replacing all five-tone chords with rests; the two hands play in their own ranges,
and the voicing of the chords usually is different.
The instructions:
midi randy
All the parameters are optional. Their interpretation is as follows:
Sometimes the pieces get unbearably long because of repetitions of repetitions.
Why Schillinger? The piece is based on "events" : change of chord voicing,
chord root motion,
change of chord type.
These occur in cycles, and
the interplay of these cycles (Schillinger says interference ) is the style of the piece, somewhat audible.
produces the MIDI score klSRAND-MAT.mid, for full orchestra.
Alas! the fractal is now mapped on a discrete space: 88 semitones × 64 MIDI volume setting × time discretization. Of course, a discretized
fractal is perfect nonsense. Each point is assigned at random to some instrument, on the 9 voices of my MIDI.
If there are more then 9 distinct notes at the same time, some just get ignored, but the highest and lowest are always played.
Anyway, one may listen to it, and there is some characteristic sound.
The instruction:
All the parameters are optional. Their interpretation is as follows:
This program
The first 4 rows are the aspects of the series. scoretc.pl
This program
All these defects and fixes imply very clumsy programming, for little musical difference (as perceived by me).
And I have great doubts that Brindle would give a passing grade to my compositions.
writes the score. The program assigns instruments to various phrases, depending on the range of the phrases.
If the current instrument is not sustaining, it replaces long notes by trills.
The instruction:
The Soundblaster cannot play true glissandos, so I cannot get anything like the original
Pithoprakta, which was written for strings and trombones.
Piano glissandos must suffice.
The instruction:
The name is a combination of Xenakis and the parameters : xe seed n mu a voices k sigma ;
Not quite complete, should end with some coda or cadence.
The instruction:
It is possible to create the arborescence as an orchestral piece, too. The program recognizes various instruments with their ranges,
and may emit each pitch on a different instrument which has the pitch in its range. Unfortunately, the result is unbearable
– as opposed to the uniform plinking of the piano.
The instruction:
The instruction:
All the parameters are optional. Their interpretation is as follows:
Each note is assigned a start and an end, depending on the notes sequence, so somewhat recognizable motives may appear, especially when the melody is repeated da capo.
If a tone starts before the preceding ends,
it will be assigned to a different voice, so the piece is inherently polyphonic (up to 9 voices, the limit of my Soundblaster). Each of the voices has a certain
range, and instruments are assigned at random to voices, provided they can play the required pitches.
Full cycle (total serialism)
All the combinations tone+register+volume+duration+voice, where each of these is picked from a short list (the typical
piece still lasts 6-10 minutes, as boring as can be. Besides, the score is very near to the limits of my midi program). Namely, one of the following combinations
is used
2 3 7 11 5
2 3 11 7 5
2 7 11 3 5
2 11 7 3 5
3 4 7 11 5
3 4 11 7 5
3 7 11 4 5
3 11 7 4 5
{
SRAND 558
3 voices
tones: eb b rest Ab f# a c g f c# Bb
registers, lo: 54 81 27 68 41
registers, hi: 68 95 41 81 54 i.e 54-68, 81-95, etc = F#6-G#5, A6-B7, etc
volumes: 48 0 34 55 27 41 63
durations: 8 6 11 2
}
Programs:
perl fulcy.pl rand_SRAND
perl fulcz.pl rand_SRAND
Enigma
Given a melody, it builds several voices based on a harmonization of the melody. When music plays, the melody may be omitted – a true enigma.
will produce a score named enig345 and the corresponding midi file enig345.mid.
perl driver.pl
rand_345
dur_100
with orc
The driver program executes two other programs:
The piano score may be unplayable by one pianist – then assume a player piano, or piano four hands, or two pianos.
The file inin.txt may contain key instructions (in this case key specifies 1 flat) and names instructions ( in this case, d r m ...
= Do Re Mi ... = C D E ... ;
rest is p).
Tones and duration may be specified as in my usual music editor, except that + and – are not available for octave,
and fractions cannot be written as numerator only.
key 1b
names drm
s5 /2 s/4 d/2 d/4 i l/2 s 3/4 r5 /4 r s5 p r6 r r d/2 i/4 l/2
s 3/4 r6 /4 r r s5 3/4 s6 /2 s/4 f/2 f/4 s/2 s/4 r 3/4 s6 /2 s/4 f/2 f/4
s/2 s/4 r/2 s/4 l/2 s/4 f m/2 r 3/4 p s5 /2 s/4 d/2 d/4
i l/2 s 3/4 r5 /4 r s5 p r6 r r d/2 i/4 l/2 s 3/4
67 1/2
67 1/4
72 1/2
72 1/4
70 1/4
69 1/2
67 3/4
62 1/4
62 1/4
67 1/4
-1 1/4
74 1/4
.
.
74 1/4
74 1/4
72 1/2
70 1/4
69 1/2
67 3/4
Random music
Produces a piano piece, by playing random chords in both hands. By default, the r.h. chords may contain up to 5 notes, those in l.h.
may contain up to 4 notes. These defaults may be overriden to produce less virtuosic requirements. It is also possible to specify the
spread of the chords, but the player must be able to play one-hand octaves.
will create the score randy and the playable midi file randy.mid ; use any name instead of randy.
perl eirando.pl
rand_345
size_77
short_5
V5_5
HS_12 > randy
The program inserts random repetition marks in the stream of chords, and also specifies random crescendo and decrescendo. There are also simple ornamentations: spread chords
and chords played as single notes melody.
Notice that the keyword V5 is capitalized.
Notice that the keyword HS is capitalized.
Schillinger method – piano only
A simpler version of the following section.
No flute, or implementation of parallel fifths/octaves rules.
Schillinger method
Short piece for piano and flute. One may request it to be tonal, or in some ad-hoc scale. In any case, starts and ends with the same chord,
the tonic triad – if available in the chosen scale – or something similar.
Fractal
A true fractal in 3 dimensions: pitch, time, volume,
plus klangfarb.
Program:
perl polyfr3d.pl rand_SRAND mat_MAT notes_NOTES
The program then generates a fractal from the subject and the contractions, using the standard procedure
(IFS + constant set)
The constant set is the original subject.
Strict dodecaphony
"Strict" means that I tried to satisfy all the requests of
"Serial Composition" by Reginald Smith Brindle. Why not? The shortest book about
the subject, and I was familiar with it since my time at Tel Aviv University.
That, of course, contains many more constraints than what I use in my other dodecaphony. Thirds and octaves are dissonant, one must even avoid false relations
and prohibit emerging tonality. Well, maybe I did; I cannot hear the difference.
will produce an orchestral score named echt345 and the corresponding midi file echt345.mid.
perl dri.pl
rand_345
size_100
voices_4
ser_45623709a1b8
The driver program executes two other programs:
In this example, the series is:
E F F# D E♭ G C A B♭ C# B G#
If the parameter is omitted, the series is generated at random.
You can cheat the program by specifying some set of 12 tones, e.g. ser_a8642024579b ,
which does not use all the 12 tones, but will be treated as a series, with 4 linear aspects and free transposition.
8 11 0 9 10 3 2 4 1 5 6 7
4 1 0 3 2 9 10 8 11 7 6 5
7 6 5 1 4 2 3 10 9 0 11 8
5 6 7 11 8 10 9 2 3 0 1 4
result:
correlations: lon and tens 0.84, hin and tens 0.84, mid and tens 0.85
GOOD correlation !
N LON TENS HIN MASK notes
0 1 1 3 1088 -99 10 6
1 1 3 3 1092 2 10 6
2 1 3 3 1032 -99 10 3
3 1 1 3 1028 -2 10 2
4 1 1 4 1028 -99 10 2
5 1 3 4 1056 -99 10 5
6 1 5 4 128 -2 7 -99
7 1 1 4 34 1 -99 5
8 1 1 4 18 1 -99 4
.
.
59 14 19 18 2072 11 4 3
60 16 21 18 1072 10 4 5
61 17 19 19 1036 10 3 2
62 17 19 19 1036 10 3 2
63 18 21 19 97 5 0 6
64 18 1 19 136 -6 3 7
65 17 18 19 152 4 3 7
66 16 18 18 152 4 3 7
.
.
Here the tension TENS in the chord should fall between the limits LON and HIN. It doesn't always happen (e.g. in lines 6 or 64) but there
is a good correlation between LON and TENS, HIN and TENS etc.
There are 3 voices, and the negative numbers are rest. The notes are just note names (0,1,2 ... = C, C#, D ...),
without a definite register or duration.
SRAND 1
SIZE 500
NVOICES 3
TENSION: A,B,C 9 10 12
TENSION: ALFA,BETA,GAMA 0.4 0.3 0.2
TENSION: PEAK1,PEAK2,PEAK3 0.29 0.4 0.73
SER 8 11 10 9 2 7 5 1 6 0 3 4 4 1 2 3 10 5 7 11 6 0 9 8 4 3 0 6 1 5 7 2 9 10 11 8 8 9 0 6 11 7 5 10 3 2 1 4
fixes defect:
B,C,G is a dissonant chord, but B trilled with C, while G sounds in another voice is consonant.
fixes repetitiveness:
Moment musical
Trio for piano and two of :
clarinet, flute, oboe, trumpet, violin, cello or bassoon .
will produce a score named mom345 and the corresponding midi file mom345.mid.perl driver.pl
rand_345
tritone_1
noise_min
Xenakis : boxes filled with events
Piano piece, probably unplayable; but let's say player piano. Several voices sound independently "boxes with events".
Each box is a 4/4 neasure; each event is a glissando, at random speed, starting at a random pitch. The number of events
is a Poisson variable with mean mu, and the speed, in semitones per second, is a normal variable with zero mean
and variance sigma.
will produce a score named xe345n6a3k5
and the corresponding midi file xe345n6a3k5.mid .
perl xepiano.pl
rand_345
size_30
nv_3
speed_5
mu_6
The program xepiano.pl :
parses the parameter list
All the parameters are optional. Their interpretation is as follows:
rand_seed
size_size
nv_voices
speed_speed
mu_mu
builds the output filenames
writes the score
This is done voice by voice, measure by measure. Each measure is just a sampling of the Poisson distribution, followed by a few samplings of the normal distribution,
all independent. The only weak dependency in the score: the melodic line usually does not make large leaps between measures, but even this rule is broken with a certain
probability.
Markov / Xenakis
Similar to the Thematic Markov / Xenakis described next,
but it does not use themes. Whenever a melodic section is created, notes are chosen at random, independently of
the current state, or any other parameter. Only one random number stream is used throughout;
compare with theme selection below.
Thematic Markov / Xenakis
Orchestral piece. It skips, according to a Markov process, between short sections in quite distinct style: the orchestration may be strings, woodwind, brass, percussion or some combinations of the above, the music may be tonal, dodecaphonic, pitchless (for percussion only), in a
Messiaen mode of limited transposition, etc.
Each such section has a theme, based on
color + talea scheme, to make it further recognizable.
will produce a score named, regu345 and a playable midi file regu345.mid
( resp. ireg345 and ireg345.mid if regular_ is omitted )
perl maxeni.pl
rand_345
regular_1
start_1
The program maxeni.pl :
parses the parameter list
All the parameters are optional. Their interpretation is as follows:
rand_345
regular_1
start_1
builds the output filenames, using seed_ and regular_
defines a number of states and a Markov matrix to switch among those states
5 states: 2313 3405 4172 4976 6840
Markov transitions
0 4 3 1
1 4 3 1
2 4 1
3 1 2
4 2 1 3 (e.g.)
The table shows that the program may go from state 2 to states 2 or 3 with odds 4:1 and cannot go to states 0,1, or 4;
also, from any state one may go to state 3.
The state names : 2313, 3405, etc., are used to initialize local random streams, so the results in a certain state will
be similar when the state is reached again.produces the score by jumping among the states
The program, repeatedly:
This is done by creating a theme, if none exists, or modifying some enlisted theme. The typical modification is to fit the notes into the current scale.
Other modifications are transpositions, extentions, inserting rests or erasing notes.
The theme, which is a combination color + talea , is then used to build a melodic section.
All of this is done according to the particular random number stream belonging to the current state.
writes on the score an "ison" section
This is a melodic 2 voices section, used to accompany pure percussion.
makes a midi file from the score
Xenakis : Arborescences
Short piece for piano. It is the sounding of a tree – in graph theory sense, lying in the three dimensional
time × pitch × volume space. Its nodes are joined by straight segments,
and the nodes and other points on the segments are all enlisted as sounds.
will produce a score named, oabbcbd1234 and a playable midi file oabbcbd1234.mid.
perl arbo.pl
rand_1234
orch_yes
vol_fancy
start_ab,bc,bd
The program arbo.pl:
parses the parameter list
All the parameters, with the exception of start_ , are optional. Their interpretation is as follows:
rand_1234
orch_yes
vol_fancy
start_ab,bc,bd
This parameter must be present.
It describes the initial tree, as shown :
builds the output filenames, using seed_ and orch_
builds the arborescence
Using the graph constructed up to now (initially as specified by start_ ) the program picks at random two nodes s and t,
then it adds to node s a copy of the subtree rooted at t. The new nodes get special indexed names, which allow the program to track them through this
procedure.
Here is an example of a tree growing from start_ab,ac ; this example reaches the index F; the program continues to X.

builds the 3-dimensional graph
The initial nodes get some random 3D coordinates . The added nodes get corresponding coordinates, so they match a translation + rotation + dilation
of the original subtree to its new place. Rather messy to explain and difficult to show; but then, who will check, and who can hear the graphics ?
Xenakis did more or less the same thing, tracing some shapes and then copying them scaled, in the plane time × pitch.
finally, the program writes the score
It follows the tree in time; all the sounds emitted at the same time
will appear as a chord. Since in my music editor chords have a unique volume for all the voices, the programs has to pick a volume
from the geometric data, according to the vol_ parameter.
The piece ends with a rallentando phrase in thin texture, usually a single voice.
Chamber piece
Chamber piece, for a small group of instruments, usually including piano. May result in a duo, trio, quartet, etc. or a sonata for solo instrument plus piano.
Telephone list
Builds an orchestral piece, based on my online phone list. Extracts the digits only, and interprets them:
:
the seven notes A to G, in a random order
:
da capo
:
add a sharp to key
:
add a flat to key
will produce a score named tel345 and the corresponding midi file tel345.mid.
perl telef.pl
rand_345
mea_7