hmt-0.15: Haskell Music Theory

Safe HaskellNone
LanguageHaskell98

Music.Theory.Duration.RQ.Division

Description

RQ sub-divisions.

Synopsis

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.

rq_div_verify :: RQ_Div -> Bool Source

Verify that grouping j sums to the divisor i.

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]