Anh.B audio zum\boulez
full cycle, the most useless
Anh.F audio zum\fr3d true fractal in 3 dimensions: pitch, time, volume, plus klangfarb
Anh.I audio zum\izum
moment musical
Anh.M audio zum\marxe Markov / Xenakis
Anh.M2 audio zum\maxeni Markov / Xenakis, thematic
Anh.M3 audio zum\muse
arpeggiated chords over "enigma" theme
Anh.P audio zum\pocpo
Strict dodecaphony (tension, false relations at octave, triads dissonant, etc.)
Anh.R audio zum\random Random chords, with random repetitions
Anh.S audio zum\schi Schillinger method ? God knows
Anh.S2 audio zum\schix yet another Schillinger method
Anh.T audio zum\telef sounding my online phone list
Anh.T2 audio zum\tet chamber piece: sonata: piano+one, trio: piano+2, etc...
Anh.X audio zum\xe Xenakis. boxes filled with events
Anh.X2 audio zum\xe Xenakis "arborescences", more or less



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

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

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


perl  rand_SRAND

produces the MIDI score    scoSRAND.mid,    music for piano solo.

perl  rand_SRAND

similar music, but the voices get desynchronized, so there is some variation in the perceived rhythm along the piece.


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.

The instruction:

perl   rand_345     dur_100     with      orc
will produce a score named  enig345  and the corresponding midi file  enig345.mid.

All the parameters are optional. Their interpretation is as follows:

The number seed is used to initialize the random numbers generator.

the larger the value, the longer the piece. Duration is increased by repeating the "enigma" tune.

if specified, the enigma tune will be sounded with the other voices. If omitted, the enigma tune will not be heard.

if specified, the voices will be assigned to various instruments; if omitted, they are all played on the piano.
The piano score may be unplayable by one pianist – then assume a player piano, or piano four hands, or two pianos.
The driver program executes two other programs:

    This reads a score, invariably called inin.txt , and prepares the input for , the file ouou.txt. It takes no parameters.


    inin.txt    (L'Homme Armé)
    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
    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.


    This program

    • receives its parameters from the driver
    • reads the file ouou.txt prepared by
    • analyzes the input, to determine the key of the piece – any of the keys that contain all the notes of the "enigma" melody. If no standard key fits, the program will use all the 12 (semi)tones.
    • writes the score.

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.

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:

perl   rand_345     size_77     short_5     V5_5     HS_12    > randy

midi randy

will create the score  randy  and the playable midi file randy.mid ; use any name instead of randy.

All the parameters are optional. Their interpretation is as follows:

The number seed is used to initialize the random numbers generator.

The program makes n chords, each with a random duration.

The shortest note/rest lasts s jiffies; all durations are multiples of s . A jiffy is 1/60 of a second.

Maximum number of notes in r.h. Since there are only 9 voices on the Audioblaster, v = 5 implies the l.h. may play only 4-notes chords (or simpler). If v < 5, both hands play chords of up to v notes.
Notice that the keyword V5 is capitalized.

The maximum spread of a chord. May vary from 12 semitones (default, one octave) to 15 semitones.
Notice that the keyword HS is capitalized.
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.

Sometimes the pieces get unbearably long because of repetitions of repetitions.

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.

The instruction:

perl     rand_765   ton_maj   tsig_7/8   hary_2/8,3/8,3/8   chro_m,M,t4,m   romo_1,4,-1,3,2
will produce a score named  schi765 – in some major scale and time signature 7/8 – and a playable midi file  schi765.mid.

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.

see more details



A true fractal in 3 dimensions: pitch, time, volume, plus klangfarb.


perl  rand_SRAND  mat_MAT  notes_NOTES

produces the MIDI score    klSRAND-MAT.mid,    for full orchestra.

a number to initialize the pseudorandom generator
a number in the range 2 to 4, the count of affine contractions to use. These are 4×4 matrices, operating on the 3D space pitch, time, volume.
how many notes in the subject, in the range 7 to 20. These notes generate points (i.e. single notes) or polygons (several notes, following a closed polygonal trajectory in pitch, time, volume)
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.

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.

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.

The instruction:

perl   rand_345     size_100     voices_4     ser_45623709a1b8    
will produce an orchestral score named  echt345  and the corresponding midi file  echt345.mid.

All the parameters are optional. Their interpretation is as follows:

The number seed is used to initialize the random numbers generator. It is also used in the names of the output score and midi file.

will produce 100 distinct chords

the chords contain up to 4 distinct tones

if specified, the series is read from the parameter, using the obvious notation C=0, C#=1, ... A=9, B♭=a, B=b.
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.
The driver program executes two other programs:

    This program

    • interprets the parameters
    • establishes a tension schedule, with three dissonant peaks, but starting and ending consonant
    • makes a list of all the chords with voices distinct tones or less, and grades them by dissonance
    • fills in size chords, respecting as much as possible the tension requirement
    • writes the result on an intermediate file, called passed.txt . Here is an example:
      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
      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

      The first 4 rows are the aspects of the series.
      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.

    • writes the parameters on a file, called PARM.txt . Here is an example:
      		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

    This program

    • reads the files PARM.txt and passed.txt
    • creates duration for the chords and introduces some general pauses.
    • after the chords and durations are defined defined, analyzes for:
      1. defect : difference between the actual and required tension. Defect is a property of a single chord.
      2. repetitiveness : the same mask (chord) appearing (across general pauses) more than 3 times. Repetitiveness is a property of several consecutive chords, 4 or more.

      fixes defect:

      1. tension too low:
        • forte, crescendo
        • jumps in melody
        • move dissonant notes nearer, ideally in the same octave for maximum dissonance
        • make arpeggios to emphasize
      2. tension too high
        • piano, decrescendo
        • smooth melody
        • move dissonant notes farther apart, in distinct octaves
        • add rests so the notes don't sound quite together
        • replace group of dissonant notes by trill ; e.g.
          B,C,G is a dissonant chord, but B trilled with C, while G sounds in another voice is consonant.

      fixes repetitiveness:

      1. halve durations
      2. klangfarbmelodie

      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.

Moment musical

Trio for piano and two of : clarinet, flute, oboe, trumpet, violin, cello or bassoon .

The instruction:

perl   rand_345     tritone_1     noise_min    
will produce a score named  mom345  and the corresponding midi file  mom345.mid.

see further details

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.

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:

perl   rand_345     size_30     nv_3     speed_5     mu_6
will produce a score named   xe345n6a3k5  and the corresponding midi file  xe345n6a3k5.mid .

The program :

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.

Not quite complete, should end with some coda or cadence.

The instruction:

perl   rand_345     regular_1     start_1
will produce a score named,  regu345 and a playable midi file  regu345.mid ( resp.  ireg345  and  ireg345.mid  if  regular_  is omitted )

The program :

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.

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:

perl   rand_1234     orch_yes     vol_fancy     start_ab,bc,bd
will produce a score named,  oabbcbd1234 and a playable midi file  oabbcbd1234.mid.  

The program

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:

1 to 7
 :  the seven notes A to G, in a random order
 :  da capo
 :  add a sharp to key
 :  add a flat to key

The instruction:

perl   rand_345     mea_7
will produce a score named  tel345  and the corresponding midi file  tel345.mid.

All the parameters are optional. Their interpretation is as follows:

The number seed  is used to initialize the random numbers generator.

The time signature is numerator/8 . Each input row lasts an integer number of measures.

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.