hmt-0.15: Haskell Music Theory

Safe Haskell | None
Language | Haskell98

Music.Theory.Duration.RQ.Division

Description

`RQ` sub-divisions.

Synopsis

- type RQ_Div = (Rational, Integer, [Integer], Tied_Right)
- type RQ1_Div = (Integer, [Integer], Tied_Right)
- rq1_div_to_rq_div :: RQ1_Div -> RQ_Div
- rq_div_verify :: RQ_Div -> Bool
- rq_div_mm_verify :: Int -> [RQ_Div] -> [(Integer, [RQ])]
- rq_div_to_rq_set_t :: RQ_Div -> ([RQ], Tied_Right)
- rq_set_t_to_rqt :: ([RQ], Tied_Right) -> [RQ_T]
- rq_div_seq_rq :: [RQ_Div] -> [RQ]
- partitions_sum :: Integral i => i -> [[i]]
- partitions_sum_p :: Integral i => i -> [[i]]
- rq1_div_univ :: Integer -> [RQ1_Div]

# Documentation

type RQ_Div = (Rational, Integer, [Integer], Tied_Right) Source #

Divisions of n `RQ` into i equal parts grouped as j. A quarter and eighth note triplet is written `(1,1,[2,1],False)`.

type RQ1_Div = (Integer, [Integer], Tied_Right) Source #

Variant of `RQ_Div` where n is `1`.

rq1_div_to_rq_div :: RQ1_Div -> RQ_Div Source #

Lift `RQ1_Div` to `RQ_Div`.

rq_div_verify :: RQ_Div -> Bool Source #

Verify that grouping j sums to the divisor i.

rq_div_mm_verify :: Int -> [RQ_Div] -> [(Integer, [RQ])] Source #

rq_div_to_rq_set_t :: RQ_Div -> ([RQ], Tied_Right) Source #

Translate from `RQ_Div` to a sequence of `RQ` values.

    rq_div_to_rq_set_t (1,5,[1,3,1],True) == ([1/5,3/5,1/5],True)
    rq_div_to_rq_set_t (1/2,6,[3,1,2],False) == ([1/4,1/12,1/6],False)

rq_set_t_to_rqt :: ([RQ], Tied_Right) -> [RQ_T] Source #

Translate from result of `rq_div_to_rq_set_t` to seqeunce of `RQ_T`.

    rq_set_t_to_rqt ([1/5,3/5,1/5],True) == [(1/5,_f),(3/5,_f),(1/5,_t)]

rq_div_seq_rq :: [RQ_Div] -> [RQ] Source #

Transform sequence of `RQ_Div` into sequence of `RQ`, discarding any final tie.

    let q = [(1,5,[1,3,1],True),(1/2,6,[3,1,2],True)]
    in rq_div_seq_rq q == [1/5,3/5,9/20,1/12,1/6]

partitions_sum :: Integral i => i -> [[i]] Source #

Partitions of an `Integral` that sum to n. This includes the two 'trivial paritions, into a set n `1`, and a set of `1` n.

    partitions_sum 4 == [[1,1,1,1],[2,1,1],[2,2],[3,1],[4]]

    map (length . partitions_sum) [9..15] == [30,42,56,77,101,135,176]

partitions_sum_p :: Integral i => i -> [[i]] Source #

The `multiset_permutations` of `partitions_sum`.

    map (length . partitions_sum_p) [9..12] == [256,512,1024,2048]

rq1_div_univ :: Integer -> [RQ1_Div] Source #

The set of all `RQ1_Div` that sum to n, a variant on `partitions_sum_p`.

    map (length . rq1_div_univ) [3..5] == [8,16,32]
    map (length . rq1_div_univ) [9..12] == [512,1024,2048,4096]