Music.Theory.Z12.Forte_1973

Description

Allen Forte. The Structure of Atonal Music. Yale University Press, New Haven, 1973.

Synopsis

Prime form

t_rotations :: [Z12] -> [[Z12]]Source

T-related rotations of p.

``` t_rotations [0,1,3] == [[0,1,3],[0,2,11],[0,9,10]]
```

ti_rotations :: [Z12] -> [[Z12]]Source

T/I-related rotations of p.

``` ti_rotations [0,1,3] == [[0,1,3],[0,2,11],[0,9,10]
,[0,9,11],[0,2,3],[0,1,10]]
```

minimumBy_or :: a -> (a -> a -> Ordering) -> [a] -> aSource

Variant with default value for empty input list case.

t_cmp_prime :: ([Z12] -> [Z12] -> Ordering) -> [Z12] -> [Z12]Source

Prime form rule requiring comparator, considering `t_rotations`.

ti_cmp_prime :: ([Z12] -> [Z12] -> Ordering) -> [Z12] -> [Z12]Source

Prime form rule requiring comparator, considering `ti_rotations`.

forte_cmp :: Ord t => [t] -> [t] -> OrderingSource

Forte comparison function (rightmost first then leftmost outwards).

``` forte_cmp [0,1,3,6,8,9] [0,2,3,6,7,9] == LT
```

forte_prime :: [Z12] -> [Z12]Source

Forte prime form, ie. `cmp_prime` of `forte_cmp`.

``` forte_prime [0,1,3,6,8,9] == [0,1,3,6,8,9]
```

Set Class Table

type SC_Name = StringSource

Synonym for `String`.

sc_table :: [(SC_Name, [Z12])]Source

The set-class table (Forte prime forms).

sc_name :: [Z12] -> SC_NameSource

Lookup a set-class name. The input set is subject to `forte_prime` before lookup.

``` sc_name [0,2,3,6,7] == "5-Z18"
sc_name [0,1,4,6,7,8] == "6-Z17"
```

sc :: SC_Name -> [Z12]Source

Lookup a set-class given a set-class name.

``` sc "6-Z17" == [0,1,2,4,7,8]
```

scs :: [[Z12]]Source

List of set classes.

scs_n :: Integral i => i -> [[Z12]]Source

Cardinality n subset of `scs`.

``` map (length . scs_n) [2..10] == [6,12,29,38,50,38,29,12,6]
```

BIP Metric

bip :: [Z12] -> [Z12]Source

Basic interval pattern, see Allen Forte "The Basic Interval Patterns" JMT 17/2 (1973):234-272

````>>> ````bip 0t95728e3416
```11223344556
```
``` bip [0,10,9,5,7,2,8,11,3,4,1,6] == [1,1,2,2,3,3,4,4,5,5,6]
bip (pco "0t95728e3416") == [1,1,2,2,3,3,4,4,5,5,6]
```

ICV Metric

ic :: Z12 -> Z12Source

Interval class of Z12 interval i.

``` map ic [5,6,7] == [5,6,5]
```

icv :: Integral i => [Z12] -> [i]Source

Forte notation for interval class vector.

``` icv [0,1,2,4,7,8] == [3,2,2,3,3,2]
```