# Opusmodus 1.2.23354

## Recommended Posts

### Opusmodus 1.2.23354

New: All-Combinatorial Hexachords

GEN-AC-HEXACHRD

AC-HEXACHORD-COMPLEMENT-FORM-SET

HEXACHORD-COMPLEMENT

________________________________

The function GEN-AC-HEXACHRD generate a hexachord (H1) set and its complement (H2) set form a given name (all-combinatorial hexachords) by randomising the order and applying an inversion into the the H1 set first. The result is a sequence with two hexachords, H1 and H2 or an aggregate (twelve-tone row). The AC in the function name stand for 'All-Combinatorial Hexachords'.

All-Combinatorial Hexachords names and there pitch class prime form sets:

A = (0 1 2 3 4 5)

B = (0 2 3 4 5 7)

C = (0 2 4 5 7 9)

D = (0 1 2 6 7 8)

E = (0 1 4 5 8 9)

F = (0 2 4 6 8 10)

All-Combinatorial Hexachords in Forte notation:

```(pcs-prime-form
'((0 1 2 3 4 5)
(0 2 3 4 5 7)
(0 2 4 5 7 9)
(0 1 2 6 7 8)
(0 1 4 5 8 9)
(0 2 4 6 8 10)
) :forte)
=> (6-1 6-8 6-32 6-7 6-20 6-35)```

Example:

In the first example we use A set (0 1 2 3 4 5):

```(gen-ac-hexachord 'a)
=> ((6 4 3 1 5 2) (7 9 10 0 8 11))```

Here the result is a twelve-tone row (aggregate):

```(gen-ac-hexachord 'b :aggregate t)
=> (11 7 2 9 10 0 4 8 1 6 5 3)```

In the example below the hexachords are generated from set C and with start 0:

```(gen-ac-hexachord 'c :start 0)
=> ((0 2 5 4 9 7) (3 1 10 11 6 8))

(gen-ac-hexachord 'd :aggregate t :start 7)
=> (7 11 5 1 0 6 8 4 10 2 3 9)

(gen-ac-hexachord 'e)
=> ((0 9 8 1 5 4) (3 6 7 2 10 11))

(gen-ac-hexachord 'f :seed 456)
=> ((9 1 7 5 11 3) (4 0 6 8 2 10))```

________________________________

The function AC-HEXACHORD-COMPLEMENT-FORM-SET returns all form sets with all combinations of the complement hexachord (H2) set.

Example:

```(setf ac-hex '((0 4 5 11 6 10) (7 3 1 2 9 8)))

(ac-hexachord-complement-form-set ac-hex)
=> ((9 1 2 8 3 7) (3 7 8 2 9 1)
(8 7 2 3 1 9) (2 1 8 9 7 3)
(7 3 2 8 1 9) (1 9 8 2 7 3)
(8 9 2 1 3 7) (2 3 8 7 9 1))```

Here we reverse the hexachords order:

```(ac-hexachord-complement-form-set (reverse ac-hex))
=> ((10 6 4 5 0 11) (4 0 10 11 6 5)
(0 4 11 5 6 10) (6 10 5 11 0 4)
(0 4 6 5 10 11) (6 10 0 11 4 5)
(10 6 11 5 4 0) (4 0 5 11 10 6))```

In the next example we generate the all-combinatorial hexachords with GEN-AC-HEXACHORD function:

```(setf hexachords (gen-ac-hexachord 'd :seed 965)
=> ((11 5 3 10 9 4) (6 0 2 7 8 1))

(ac-hexachord-complement-form-set hexachords)
=> ((8 2 0 7 6 1) (2 8 6 1 0 7)
(1 6 7 0 2 8) (7 0 1 6 8 2)
(6 0 2 7 8 1) (0 6 8 1 2 7)
(1 8 7 2 0 6) (7 2 1 8 6 0))```

To get the form set names we set the keyword :form-names to T:

```(ac-hexachord-complement-form-set
(gen-ac-hexachord 'c :seed 965) :form-names t)
=> (p6 ri3 i9 r0)

(rnd-octaves '(c2 c6)
(rnd-order
(get-form-set (gen-ac-hexachord 'c :seed 965)
'(p6 ri3 i9 r0) :segment '(3 3) :type :pitch)))
=> ((gs3 c5 f5) (eb4 bb2 cs5) (d4 b4 g2) (e3 fs2 a2)
(cs3 eb5 bb4) (f4 c4 gs2) (e5 fs3 a4) (g2 d3 b3)
(f2 cs5 gs4) (eb5 bb3 c3) (d4 b4 fs3) (e5 a3 g5)
(bb2 c4 eb5) (f3 cs4 gs4) (a3 e4 g2) (b2 d4 fs4))```

________________________________

This function collect complement pitch classes of a given hexachord. The combination of the hexachord and of the result will constitute the makeup of an aggregate (twelve-tone row).

Example:

```(hexachord-complement '(0 1 2 6 7 8))
=> (5 4 3 11 10 9)

(hexachord-complement '(0 1 2 6 7 8) :pitch)
=> (f4 e4 eb4 b4 bb4 a4)```

________________________________

Small changes to the documentation structure.Function name changes:

```12tone-analysis -> twelve-tone-analysis
12tonep         -> twelve-tonep
12tone-forms    -> twelve-tone-matrix
get-12tone      -> twelve-tone-filter
rnd-12tone-form -> rnd-form-set
get-12tone-form -> get-form-set```

```(pcs-invert (pcs '9-7) 0)
=> (0 11 10 9 8 7 5 4 2)

(pcs-invert '((6 7 9 11 0 2 3) (1 3 6 9 0 11 4 7)) 0)
=> ((6 5 3 1 0 10 9) (11 9 6 3 0 1 8 5))

(pcs-invert '((6 7 9 11 0 2 3) (1 3 6 9 0 11 4 7)) 5)
=> ((11 10 8 6 5 3 2) (4 2 11 8 5 6 1 10))

(pcs-invert '((6 7 9 11 0 2 3) (1 3 6 9 0 11 4 7)) '(5 8))
=> ((11 10 8 6 5 3 2) (7 5 2 11 8 9 4 1))```

LENGTH-TEMPO-MAP function name changed to LENGTH-TO-TEMPO

Fix to TIME-POINT-SYSTEM

That's all for now,
best wishes,
JP

• Submitter
• Submitted
05/10/2018
• Category

##### Share on other sites

Thanks Janusz, it's very interesting...

## Create an account

Register a new account

×

• Lessons