harmela2.eps : another Advanced Harmonic Melodic Diagram -- this example shows a 5-limit 12-tone scale in a triangular lattice, repeated 3 octaves for a full scale in the middle octave, with basic labels for the key of C.
% WINDOW LIMITS, your coordinate system
% left x, bottom y, right x, top y: (set big enough to fit whole diagram)
-0.7 -1 0.7 1.6
% this example shows 5-limit scale (12-tone duodene)
% with (equilateral) triangular lattice
% with octave repetition for full scale in middle 2:1
/octequiv true def % true means ignore factors of 2, reduce ratios to octave
/primes [ 3 5 ] def % specify all relevant primes (incl. 2 if NOT octequiv)
% specify horizontal coordinates for each prime harmony above
/xcoords [ 0.034 -0.490 ] def
% define which ratios get links
/links [ 3 2 5 4 6 5 ] def
% specify line style (width, dashing, gray) for each type of link:
% (or if /styles is empty array, default style will be used)
/styles [ ] def
/scl [
4 3 1 1 3 2 9 8
5 3 5 4 15 8 45 32
16 15 8 5 6 5 9 5
] def
/nocts 3 def % number of octave repeats
/botoct -1 def % lowest octave repetition
% specify label (string in parens) for each tone in scale:
% (or if /labels is empty array, ratios will be used)
/labels [
(F) (C) (G) (D) (A) (E) (B) (F#) (Db) (Ab) (Eb) (Bb)
] def
% faderest only works if /styles is empty, or no styles set gray
/faderest 0.7 def % do 1 in black, others in this gray (0 if all black)
% Can adjust label positions relative to dots (if set /offsetlabels to true)
% by using offsets of form {x y} relative to dot (not necessarily integers),
% where {1 1} means to upper right, {1 -1} = lower right, {-1 1} = upper left, etc.
% Then MUST specify an offset for each tone in scale, in /offsets below:
% (or if /offsets is empty array, default offsets will be used)
/offsets [
{-1.5 2.5} {-1.5 2.5} {-1.5 2.5} {-1.5 2.5}
{-1.5 1} {-1.5 1} {-1.5 1} {-1.5 1}
{1.5 -1} {1.5 -1} {1.5 -1} {1.5 -1}
] def %label offsets
last updated 1999 Aug 7
David Canright -- DCanright@NPS.edu