Safe Haskell | None |
---|

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

- t_rotations :: [Z12] -> [[Z12]]
- ti_rotations :: [Z12] -> [[Z12]]
- minimumBy_or :: a -> (a -> a -> Ordering) -> [a] -> a
- t_cmp_prime :: ([Z12] -> [Z12] -> Ordering) -> [Z12] -> [Z12]
- ti_cmp_prime :: ([Z12] -> [Z12] -> Ordering) -> [Z12] -> [Z12]
- forte_cmp :: Ord t => [t] -> [t] -> Ordering
- forte_prime :: [Z12] -> [Z12]
- type SC_Name = String
- sc_table :: [(SC_Name, [Z12])]
- sc_name :: [Z12] -> SC_Name
- sc :: SC_Name -> [Z12]
- scs :: [[Z12]]
- scs_n :: Integral i => i -> [[Z12]]
- bip :: [Z12] -> [Z12]
- ic :: Z12 -> Z12
- icv :: Integral i => [Z12] -> [i]

# 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

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"

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

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

`>>>`

11223344556`bip 0t95728e3416`

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]