The instruction:
perl drivath.pl parameters...produces a one-movement piano concerto, dodecaphonic and athematic. Athematic more or less means that there are no exact repetitions, and no recognizable melodic motifs. The rhythms, on the other hand, are very tame (that could be changed)
The concerto eventually consists of a score, and a midi file created from the score. The following perl programs generate the score:
Uses a parameter (all items optional)
rand_666 tritone_1 noise_self/default/default7/triadic/345 bridge_30 hocket_10,15,25 size_70Calls athni.pl, newathnj.pl, bridger.pl, and athno.pl via system() in perl.BECAUSE OF ANTIQUATED .bat USAGE AND DOS QUIRKS, USE UNDERSCORE, NOT EQUAL !!
If any of these fails, increases random seed and restarts
Details (what the system sees):
perl athni.pl @ARGV > ifile.txt
perl newathnj.pl > jfile.txt
perl bridger.pl > bridged.txt
perl athno.pl > kfile.txt
copy PARM.txt+atheader.txt+scora12.txt ath$ID
midi ath$ID
In this list, @ARGV is the parameter and $ID is the seed for random number generation. midi is my instruction for making a .mid file from a score, atheader.txt the top of the score, which defines instruments, etc.
The final results are the score ath$ID and the midi file ath$ID.mid
All items are optional.
For instance, if the series is:
Defines the series
writes PARM.txt which contains the input parameters and the series, e.g.:
Contains MAIN paralel adentry enlistphr stdphr
Writes and reads noizez.txt : grades for all combinations of <= 12 distinct tones
There is no HARMONY OPTIMIZATION, a chord is either consonant or dissonant
Adds cadence and
coda information for late phrases (last third)
The results are written to STANDARD OUTPUT
Modifies the phrases generated by newathnj by bridging notes over rests
Definitely spoils harmony (creates suspensions)
The results are written to STANDARD OUTPUT
Reads noizez.txt : grades for all combinations of <= 12 distinct tones
Reads and uses the phrases generated by bridger.pl
Produces the complete score,
with cadences and
coda
athni
Uses a parameter of the form:
rand_666 tritone_1
noise_self/default/default7/triadic/345 bridge_30
hocket_10,15,25 size_70
This is an approximation to basic triadic harmony. Thirds and sixths get very high grades, fifth and octaves somewhat
lower grades, major seconds are bad, minor seconds worst... Chords are graded by averaging all the intervals they contain.
Only triads and their subsets are consonant.
Like triadic, but V7 and some of its subsets are consonant.
This means that only groups of 1,2,3 and 4 notes from the series, transposed or inverted
will be considered consonant.
it should be harmonized only by the chords:
with their transpositions and inversions.
A code like this means that the intervals of 3,4 and 5 semitones and their inversions are consonant.
Unisons/octaves are always consonant (according to Schoenberg they should be dissonant) .
All the other intervals are dissonant.
{
SRAND 666
SER 8 3 1 6 7 4 10 2 9 5 11 0 0 11 5 9 2 10 4 7 6 1 3 8 4 9 11 6 5 8 2 10 3 7 1 0 0 1 7 3 10 2 8 5 6 11 9 4
NOISE SELF
BRIDGE 30
HOCKET 10,15,25
SIZE 70
}
newathnj
Athematic perpetual development, IGNORING DURATIONSbridger.pl
Reads PARM.txt and the output of newathnj.pl
The format is identical to the output of newathnj.pl, omitting the
phrases creation log.
athno.pl
Reads PARM.txt