module Sound.Tidal.Chords where
import Data.Maybe
import Sound.Tidal.Pattern
major :: Num a => [a]
major :: [a]
major = [0,4,7]
minor :: Num a => [a]
minor :: [a]
minor = [0,3,7]
major7 :: Num a => [a]
major7 :: [a]
major7 = [0,4,7,11]
dom7 :: Num a => [a]
dom7 :: [a]
dom7 = [0,4,7,10]
minor7 :: Num a => [a]
minor7 :: [a]
minor7 = [0,3,7,10]
aug :: Num a => [a]
aug :: [a]
aug = [0,4,8]
dim :: Num a => [a]
dim :: [a]
dim = [0,3,6]
dim7 :: Num a => [a]
dim7 :: [a]
dim7 = [0,3,6,9]
one :: Num a => [a]
one :: [a]
one = [0]
five :: Num a => [a]
five :: [a]
five = [0,7]
plus :: Num a => [a]
plus :: [a]
plus = [0,4,8]
sharp5 :: Num a => [a]
sharp5 :: [a]
sharp5 = [0,4,8]
msharp5 :: Num a => [a]
msharp5 :: [a]
msharp5 = [0,3,8]
sus2 :: Num a => [a]
sus2 :: [a]
sus2 = [0,2,7]
sus4 :: Num a => [a]
sus4 :: [a]
sus4 = [0,5,7]
six :: Num a => [a]
six :: [a]
six = [0,4,7,9]
m6 :: Num a => [a]
m6 :: [a]
m6 = [0,3,7,9]
sevenSus2 :: Num a => [a]
sevenSus2 :: [a]
sevenSus2 = [0,2,7,10]
sevenSus4 :: Num a => [a]
sevenSus4 :: [a]
sevenSus4 = [0,5,7,10]
sevenFlat5 :: Num a => [a]
sevenFlat5 :: [a]
sevenFlat5 = [0,4,6,10]
m7flat5 :: Num a => [a]
m7flat5 :: [a]
m7flat5 = [0,3,6,10]
sevenSharp5 :: Num a => [a]
sevenSharp5 :: [a]
sevenSharp5 = [0,4,8,10]
m7sharp5 :: Num a => [a]
m7sharp5 :: [a]
m7sharp5 = [0,3,8,10]
nine :: Num a => [a]
nine :: [a]
nine = [0,4,7,10,14]
m9 :: Num a => [a]
m9 :: [a]
m9 = [0,3,7,10,14]
m7sharp9 :: Num a => [a]
m7sharp9 :: [a]
m7sharp9 = [0,3,7,10,14]
maj9 :: Num a => [a]
maj9 :: [a]
maj9 = [0,4,7,11,14]
nineSus4 :: Num a => [a]
nineSus4 :: [a]
nineSus4 = [0,5,7,10,14]
sixby9 :: Num a => [a]
sixby9 :: [a]
sixby9 = [0,4,7,9,14]
m6by9 :: Num a => [a]
m6by9 :: [a]
m6by9 = [0,3,9,7,14]
sevenFlat9 :: Num a => [a]
sevenFlat9 :: [a]
sevenFlat9 = [0,4,7,10,13]
m7flat9 :: Num a => [a]
m7flat9 :: [a]
m7flat9 = [0,3,7,10,13]
sevenFlat10 :: Num a => [a]
sevenFlat10 :: [a]
sevenFlat10 = [0,4,7,10,15]
nineSharp5 :: Num a => [a]
nineSharp5 :: [a]
nineSharp5 = [0,1,13]
m9sharp5 :: Num a => [a]
m9sharp5 :: [a]
m9sharp5 = [0,1,14]
sevenSharp5flat9 :: Num a => [a]
sevenSharp5flat9 :: [a]
sevenSharp5flat9 = [0,4,8,10,13]
m7sharp5flat9 :: Num a => [a]
m7sharp5flat9 :: [a]
m7sharp5flat9 = [0,3,8,10,13]
eleven :: Num a => [a]
eleven :: [a]
eleven = [0,4,7,10,14,17]
m11 :: Num a => [a]
m11 :: [a]
m11 = [0,3,7,10,14,17]
maj11 :: Num a => [a]
maj11 :: [a]
maj11 = [0,4,7,11,14,17]
elevenSharp :: Num a => [a]
elevenSharp :: [a]
elevenSharp = [0,4,7,10,14,18]
m11sharp :: Num a => [a]
m11sharp :: [a]
m11sharp = [0,3,7,10,14,18]
thirteen :: Num a => [a]
thirteen :: [a]
thirteen = [0,4,7,10,14,17,21]
m13 :: Num a => [a]
m13 :: [a]
m13 = [0,3,7,10,14,17,21]
chordTable :: Num a => [(String, [a])]
chordTable :: [(String, [a])]
chordTable = [("major", [a]
forall a. Num a => [a]
major),
("maj", [a]
forall a. Num a => [a]
major),
("minor", [a]
forall a. Num a => [a]
minor),
("min", [a]
forall a. Num a => [a]
minor),
("aug", [a]
forall a. Num a => [a]
aug),
("dim", [a]
forall a. Num a => [a]
dim),
("major7", [a]
forall a. Num a => [a]
major7),
("maj7", [a]
forall a. Num a => [a]
major7),
("dom7", [a]
forall a. Num a => [a]
dom7),
("minor7", [a]
forall a. Num a => [a]
minor7),
("min7", [a]
forall a. Num a => [a]
minor7),
("dim7", [a]
forall a. Num a => [a]
dim7),
("one", [a]
forall a. Num a => [a]
one),
("1", [a]
forall a. Num a => [a]
one),
("five", [a]
forall a. Num a => [a]
five),
("5", [a]
forall a. Num a => [a]
five),
("plus", [a]
forall a. Num a => [a]
plus),
("sharp5", [a]
forall a. Num a => [a]
sharp5),
("msharp5", [a]
forall a. Num a => [a]
msharp5),
("sus2", [a]
forall a. Num a => [a]
sus2),
("sus4", [a]
forall a. Num a => [a]
sus4),
("six", [a]
forall a. Num a => [a]
six),
("6", [a]
forall a. Num a => [a]
six),
("m6", [a]
forall a. Num a => [a]
m6),
("sevenSus2", [a]
forall a. Num a => [a]
sevenSus2),
("7sus2", [a]
forall a. Num a => [a]
sevenSus2),
("sevenSus4", [a]
forall a. Num a => [a]
sevenSus4),
("7sus4", [a]
forall a. Num a => [a]
sevenSus4),
("sevenFlat5", [a]
forall a. Num a => [a]
sevenFlat5),
("7f5", [a]
forall a. Num a => [a]
sevenFlat5),
("m7flat5", [a]
forall a. Num a => [a]
m7flat5),
("m7f5", [a]
forall a. Num a => [a]
m7flat5),
("sevenSharp5", [a]
forall a. Num a => [a]
sevenSharp5),
("7s5", [a]
forall a. Num a => [a]
sevenSharp5),
("m7sharp5", [a]
forall a. Num a => [a]
m7sharp5),
("m7s5", [a]
forall a. Num a => [a]
m7sharp5),
("nine", [a]
forall a. Num a => [a]
nine),
("m9", [a]
forall a. Num a => [a]
m9),
("m7sharp9", [a]
forall a. Num a => [a]
m7sharp9),
("m7s9", [a]
forall a. Num a => [a]
m7sharp9),
("maj9", [a]
forall a. Num a => [a]
maj9),
("nineSus4", [a]
forall a. Num a => [a]
nineSus4),
("ninesus4", [a]
forall a. Num a => [a]
nineSus4),
("9sus4", [a]
forall a. Num a => [a]
nineSus4),
("sixby9", [a]
forall a. Num a => [a]
sixby9),
("6by9", [a]
forall a. Num a => [a]
sixby9),
("m6by9", [a]
forall a. Num a => [a]
m6by9),
("sevenFlat9", [a]
forall a. Num a => [a]
sevenFlat9),
("7f9", [a]
forall a. Num a => [a]
sevenFlat9),
("m7flat9", [a]
forall a. Num a => [a]
m7flat9),
("m7f9", [a]
forall a. Num a => [a]
m7flat9),
("sevenFlat10", [a]
forall a. Num a => [a]
sevenFlat10),
("7f10", [a]
forall a. Num a => [a]
sevenFlat10),
("nineSharp5", [a]
forall a. Num a => [a]
nineSharp5),
("9s5", [a]
forall a. Num a => [a]
nineSharp5),
("m9sharp5", [a]
forall a. Num a => [a]
m9sharp5),
("m9s5", [a]
forall a. Num a => [a]
m9sharp5),
("sevenSharp5flat9", [a]
forall a. Num a => [a]
sevenSharp5flat9),
("7s5f9", [a]
forall a. Num a => [a]
sevenSharp5flat9),
("m7sharp5flat9", [a]
forall a. Num a => [a]
m7sharp5flat9),
("eleven", [a]
forall a. Num a => [a]
eleven),
("11", [a]
forall a. Num a => [a]
eleven),
("m11", [a]
forall a. Num a => [a]
m11),
("maj11", [a]
forall a. Num a => [a]
maj11),
("elevenSharp", [a]
forall a. Num a => [a]
elevenSharp),
("11s", [a]
forall a. Num a => [a]
elevenSharp),
("m11sharp", [a]
forall a. Num a => [a]
m11sharp),
("m11s", [a]
forall a. Num a => [a]
m11sharp),
("thirteen", [a]
forall a. Num a => [a]
thirteen),
("13", [a]
forall a. Num a => [a]
thirteen),
("m13", [a]
forall a. Num a => [a]
m13)
]
chordL :: Num a => Pattern String -> Pattern [a]
chordL :: Pattern String -> Pattern [a]
chordL p :: Pattern String
p = (\name :: String
name -> [a] -> Maybe [a] -> [a]
forall a. a -> Maybe a -> a
fromMaybe [] (Maybe [a] -> [a]) -> Maybe [a] -> [a]
forall a b. (a -> b) -> a -> b
$ String -> [(String, [a])] -> Maybe [a]
forall a b. Eq a => a -> [(a, b)] -> Maybe b
lookup String
name [(String, [a])]
forall a. Num a => [(String, [a])]
chordTable) (String -> [a]) -> Pattern String -> Pattern [a]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Pattern String
p
chordList :: String
chordList :: String
chordList = [String] -> String
unwords ([String] -> String) -> [String] -> String
forall a b. (a -> b) -> a -> b
$ ((String, [Int]) -> String) -> [(String, [Int])] -> [String]
forall a b. (a -> b) -> [a] -> [b]
map (String, [Int]) -> String
forall a b. (a, b) -> a
fst ([(String, [Int])]
forall a. Num a => [(String, [a])]
chordTable :: [(String, [Int])])