Generate-Chords

g-chord

seed chord-low chord-high transp-low transp-high pattern

The function g-chord enables the composer to generate chords from a symbol melody or row. The size of the chord generated will lie between chord-low and chord-high parameters. The optional transposition of symbol elements can also be set to lie between transp-low and transp-high parameters.

The function works with symbols and intervals.

Intervals

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
(setq op.31-var-for-orch '(1 7 9 6 8 0 5 4 10 11 2 3))
(setq interval-list (get-interval :all op.31-var-for-orch))
--> (6 2 -3 2 -8 5 -1 6 1 -9 1)
 
(g-chord .25 1 2 0 0 interval-list)
--> (6 2 (-3 2) -8 5 (-1 6) (1 -9) 1)
 
(i-convert 1 -5 43 (g-chord .25 1 2 0 0 interval-list))
--> (b h j gi a f ek lc d)
 
(setq interval-lists (rotate-f interval-list))
--> ((6 2 -3 2 -8 5 -1 6 1 -9 1)
     (2 -3 2 -8 5 -1 6 1 -9 1 6)
     (-3 2 -8 5 -1 6 1 -9 1 6 2)
     (2 -8 5 -1 6 1 -9 1 6 2 -3)
     (-8 5 -1 6 1 -9 1 6 2 -3 2)
     (5 -1 6 1 -9 1 6 2 -3 2 -8)
     (-1 6 1 -9 1 6 2 -3 2 -8 5)
     (6 1 -9 1 6 2 -3 2 -8 5 -1)
     (1 -9 1 6 2 -3 2 -8 5 -1 6)
     (-9 1 6 2 -3 2 -8 5 -1 6 1)
     (1 6 2 -3 2 -8 5 -1 6 1 -9))
 
(i-convert 1 -5 43 (g-chord .25 1 4 0 0 interval-lists))
--> ((b hjgi a fekl cd)
     (fc e-e bagh -c-bf)
     (ce -eb ag h-c-bf h)
     (jb gf lm de kmj)
     (b gf lm de km jl)
     (qp v wn ou wt vn)
     (mstk lrtq skp)
     (vwno uwt vn sr)
     (sjkq sp rj on t)
     (kl r tq sk pou v)
     (w]_ \ ^v[ z`a x))

Symbols

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
(g-chord nil 2 5 0 2 '(a b c d e f g))
--> (cde fg gh)
or ...
 
(g-chord 0.24 2 3 -5 11 '(a b c d e f g))
--> (de cde mn)
 
(g-chord 0.32 2 3 0 24 '(a b c d e f g))
--> (mn jk nop)
 
(g-chord 0.25 1 3 0 0 (g-cluster .34 's -6 6 7 9))
--> (ef g h i-d-c -ba)
 
(g-chord 0.56 3 4 2 3 (g-cluster .23 's 0 0 '(4 5 7 9) '(6 7 7 8)))
--> ((hijk kl) (ijkl mno) (jklm ode) (mnod def g))
 
(g-chord 0.23 3 4 -11 11
         (g-cluster .23 's 0 0 '(4 5 7 9) '(6 7 7 8)))
 
--> ((nop efg) (lmn bcde) (ijkl b-k-j) (stu -d-c-b kl))

In the following example notice how the function enables a sequence of identical outputs from the gen-repeat to be processed as unique sequences of chords. Normally, this sort of process would only be possible with the function gen-collect.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
(g-chord .23 1 4 -5 45
         (gen-repeat 12 (list '(a b c d e f g h i j k l))))
 
--> ((z[\] fgh pq wxy)
     (rstu mnop klm o)
     (vwx -c _`ab i ` ij)
     (-f-e-d-c nop vwxy q)
     (s c -d-c i c fg pqrs)
     (efgh w g bc m g jk)
     (efg vwxy i d no i)
     (ij wx k lm bcd lm)
     ([\ wx [\ nopq tu)
     (-c-bab ijk z[\ lm)
     (-d ef yz pqrs t \ ^)
     (d qrst defg nop))

g-cluster

seed type transp-low transp-high rotate-number cluster-number

0-based
type: c s r
rotate-number: 0 to 11
cluster-number: 0 to 11
c =cluster, s =step-melody, r =random
rotate-number from 0 to 11, cluster-number from 0 to 11

Rotation plays an important role in classic serial composition strategies. The function cluster should be seen as a means of generating clusters or chromatic-step row of symbols capabale of sequential rotation prior to further transformation procedures.

1
2
3
4
5
(g-cluster 0.34 'c 0 0 0 3)
--> (abc)
 
(g-cluster 0.34 's 0 0 3 3)
--> (d e f)

Random transposition in range 0 3.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
(g-cluster 0.34 'c 0 3 3 3)
--> (efg)
 
(g-cluster 0.34 's -6 6 7 9)
--> (e f g h i -d -c -b a)
 
(g-cluster 0.34 's nil nil 7 9)
--> (h i j k l a b c d)
 
(g-cluster nil '(c s c s) -12 12 '(4 5 7 9) '(6 5 7 8))
--> ((mnopqr) (b c d e f) (tuvwxmn) (r s t i j k l m))
 
(g-cluster nil 'r -12 12 '(4 5 7 9) '(6 5 7 8))
--> ((klmnop) (-f-e-d-c-b) (f g h i j -c -b) (-d-c-b-m-l-k-j-i))

g-cluster2

seed type transp-low transp-high cluster-number

type: c = cluster, s = step (melody), r = random

1
2
3
4
5
(g-cluster2 0.34 'c 0 0 3)
--> (abc)
 
(g-cluster2 0.34 's 0 3 3)
--> (d e f)

Random transposition in range 0 3.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
(g-cluster2 0.34 'c 0 3 3)
--> (def)
 
(g-cluster2 0.34 's -6 6 9)
--> (g h i j k l m n o)
 
(g-cluster2 0.34 's nil nil 13)
--> (a b c d e f g h i j k l m)
 
(g-cluster2 nil '(c s c s) -12 12 '(6 5 7 8))
--> ((-h-g-f-e-d-c) (-c -b a b c) (ijklmno) (l m n o p q r s))
 
(g-cluster2 0.3571 'r -12 12 '(6 5 7 8))
--> ((k l m n o p) (m n o p q) (m n o p q r s) (m n o p q r s t))