-- Hoogle documentation, generated by Haddock -- See Hoogle, http://www.haskell.org/hoogle/ -- | Haskell Music Theory -- -- Haskell music theory library @package hmt @version 0.2 module Music.Theory.Permutations permutations :: [a] -> [[a]] module Music.Theory.Set -- | Remove duplicate elements and sort. set :: Ord a => [a] -> [a] -- | Powerset, ie. set of all all subsets. powerset :: [a] -> [[a]] -- | Two element subsets (cf [2] . powerset). dyads :: [a] -> [(a, a)] -- | Set expansion se :: Ord a => Int -> [a] -> [[a]] module Music.Theory.Pitch -- | Modulo twelve. mod12 :: Integral a => a -> a -- | Pitch class. pc :: Integral a => a -> a -- | Map to pitch-class and reduce to set. pcset :: Integral a => [a] -> [a] -- | Transpose by n. tn :: Integral a => a -> [a] -> [a] -- | Transpose so first element is n. transposeTo :: Integral a => a -> [a] -> [a] -- | All transpositions. transpositions :: Integral a => [a] -> [[a]] -- | Invert about n. invert :: Integral a => a -> [a] -> [a] -- | Invert about first element. invertSelf :: Integral a => [a] -> [a] -- | Composition of inversion about zero and transpose. tni :: Integral a => a -> [a] -> [a] -- | Rotate left by n places. rotate :: Integral n => n -> [a] -> [a] -- | Rotate right by n places. rotate_right :: Integral n => n -> [a] -> [a] -- | All rotations. rotations :: [a] -> [[a]] -- | Modulo 12 multiplication mn :: Integral a => a -> [a] -> [a] -- | M5 m5 :: Integral a => [a] -> [a] all_Tn :: Integral a => [a] -> [[a]] all_TnI :: Integral a => [a] -> [[a]] all_RTnI :: Integral a => [a] -> [[a]] all_TnMI :: Integral a => [a] -> [[a]] all_RTnMI :: Integral a => [a] -> [[a]] all_rRTnMI :: Integral a => [a] -> [[a]] -- | Serial Operator, of the form rRTMI. data SRO a SRO :: a -> Bool -> a -> Bool -> Bool -> SRO a -- | Serial operation. sro :: Integral a => SRO a -> [a] -> [a] -- | The total set of serial operations. sros :: Integral a => [a] -> [(SRO a, [a])] sro_Tn :: Integral a => [SRO a] sro_TnI :: Integral a => [SRO a] sro_RTnI :: Integral a => [SRO a] sro_TnMI :: Integral a => [SRO a] sro_RTnMI :: Integral a => [SRO a] -- | Intervals to values, zero is n. dx_d :: Num a => a -> [a] -> [a] -- | Integrate. d_dx :: Num a => [a] -> [a] -- | Morris INT operator. int :: Integral a => [a] -> [a] -- | Interval class. ic :: Integral a => a -> a -- | Elements of p not in q difference :: Eq a => [a] -> [a] -> [a] -- | Pitch classes not in set. complement :: Integral a => [a] -> [a] -- | Is p a subsequence of q. subsequence :: Eq a => [a] -> [a] -> Bool -- | The standard t-matrix of p. tmatrix :: Integral a => [a] -> [[a]] -- | Interval class vector. icv :: Integral a => [a] -> [a] -- | Is p a subset of q. is_subset :: Eq a => [a] -> [a] -> Bool -- | Is p a superset of q. is_superset :: Eq a => [a] -> [a] -> Bool instance Eq a => Eq (SRO a) instance Show a => Show (SRO a) module Music.Theory.Prime -- | Prime form rule requiring comparator. cmp_prime :: Integral a => ([a] -> [a] -> Ordering) -> [a] -> [a] -- | Forte prime form. forte_prime :: Integral a => [a] -> [a] -- | Rahn prime form (comparison is rightmost inwards). rahn_prime :: Integral a => [a] -> [a] -- | Binary encoding prime form algorithm, equalivalent to Rahn. encode_prime :: (Integral a, Bits a) => [a] -> [a] module Music.Theory.Table -- | The set-class table (Forte prime forms). sc_table :: Integral a => [(String, [a])] -- | Lookup a set-class name given a set-class. sc_name :: Integral a => [a] -> String -- | Lookup a set-class given a set-class name. sc :: Integral a => String -> [a] -- | List of set classes. scs :: Integral a => [[a]] -- | Set class database. sc_db :: [(String, String)] module Music.Theory.Pct -- | Basic interval pattern. bip :: Integral a => [a] -> [a] -- | Cardinality filter cf :: Integral n => [n] -> [[a]] -> [[a]] cgg :: [[a]] -> [[a]] -- | Combinations generator (cg == poweset) cg :: [a] -> [[a]] -- | Powerset filtered by cardinality. cg_r :: Integral n => n -> [a] -> [[a]] -- | Cyclic interval segment. ciseg :: Integral a => [a] -> [a] -- | pcset complement. cmpl :: Integral a => [a] -> [a] -- | Form cycle. cyc :: [a] -> [a] -- | Diatonic implications. dim :: Integral a => [a] -> [(a, [a])] -- | Diatonic interval set to interval set. dis :: Integral t => [Int] -> [t] -- | Degree of intersection. doi :: Integral a => Int -> [a] -> [a] -> [[a]] -- | Forte name. fn :: Integral a => [a] -> String -- | p has_ess q is true iff p can embed q in sequence. has_ess :: Integral a => [a] -> [a] -> Bool -- | Embedded segment search. ess :: Integral a => [a] -> [a] -> [[a]] -- | Can the set-class q (under prime form algorithm pf) be drawn from the -- pcset p. has_sc_pf :: Integral a => ([a] -> [a]) -> [a] -> [a] -> Bool -- | Can the set-class q be drawn from the pcset p. has_sc :: Integral a => [a] -> [a] -> Bool -- | Interval cycle filter. icf :: Num a => [[a]] -> [[a]] -- | Interval class set to interval sets. ici :: Num t => [Int] -> [[t]] -- | Interval class set to interval sets, concise variant. ici_c :: [Int] -> [[Int]] -- | Interval-class segment. icseg :: Integral a => [a] -> [a] -- | Interval segment (INT). iseg :: Integral a => [a] -> [a] -- | Imbrications. imb :: Integral n => [n] -> [a] -> [[a]] -- | p issb q gives the set-classes that can append to p to give q. issb :: Integral a => [a] -> [a] -> [String] -- | Matrix search. mxs :: Integral a => [a] -> [a] -> [[a]] -- | Normalize. nrm :: Ord a => [a] -> [a] -- | Normalize, retain duplicate elements. nrm_r :: Ord a => [a] -> [a] -- | Pitch-class invariances. pci :: Integral a => [a] -> [a] -> [[a]] -- | Relate sets. rs :: Integral a => [a] -> [a] -> [(SRO a, [a])] -- | Relate segments. rsg :: Integral a => [a] -> [a] -> [(SRO a, [a])] -- | Subsets. sb :: Integral a => [[a]] -> [[a]] -- | Super set-class. spsc :: Integral a => [[a]] -> [String] module Music.Theory.Parse -- | Parse a Morris format serial operator descriptor. rnrtnmi :: String -> SRO Int pco :: String -> [Int] module Music.Theory