-- Copyright 2019 Evan Laforge
-- This program is distributed under the terms of the GNU General Public
-- License 3.0, see COPYING or http://www.gnu.org/licenses/gpl-3.0.txt

{-# LANGUAGE RecordWildCards #-}
-- | Solkattu scores from 2019.
module Solkattu.Score.Solkattu2019 where
import           Prelude hiding ((.), (^), repeat)

import           Solkattu.Dsl.Solkattu


-- TODO I think I did this one before
c_19_04_15 :: Korvai
c_19_04_15 :: Korvai
c_19_04_15 = Stack => Int -> Int -> Int -> Korvai -> Korvai
date Int
2019 Int
4 Int
15 forall a b. (a -> b) -> a -> b
$ Korvai -> Korvai
ganesh forall a b. (a -> b) -> a -> b
$ Tala -> StrokeMaps -> [Sequence Group (Note Sollu)] -> Korvai
korvaiS Tala
adi StrokeMaps
mridangam
    [ forall sollu.
SequenceT sollu -> [SequenceT sollu] -> SequenceT sollu
join (Sequence Group (Note Sollu)
dhomforall a. Monoid a => a -> a -> a
.forall sollu. SequenceT sollu
__3)
        [ Sequence Group (Note Sollu)
startforall a. Monoid a => a -> a -> a
.Sequence Group (Note Sollu)
end
        , forall sollu.
(Stack, Pretty sollu) =>
FMatra -> SequenceT sollu -> SequenceT sollu
dropM FMatra
2 (Sequence Group (Note Sollu)
startforall a. Monoid a => a -> a -> a
.Sequence Group (Note Sollu)
end)
        , forall sollu.
(Stack, Pretty sollu) =>
FMatra -> SequenceT sollu -> SequenceT sollu
dropM FMatra
4 (Sequence Group (Note Sollu)
startforall a. Monoid a => a -> a -> a
.Sequence Group (Note Sollu)
end)
        , Sequence Group (Note Sollu)
end, Sequence Group (Note Sollu)
end
        , forall sollu.
(Stack, Pretty sollu) =>
FMatra -> SequenceT sollu -> SequenceT sollu
dropM FMatra
4 Sequence Group (Note Sollu)
end, forall sollu.
(Stack, Pretty sollu) =>
FMatra -> SequenceT sollu -> SequenceT sollu
dropM FMatra
4 Sequence Group (Note Sollu)
end
        ]
    , let end2 :: Sequence Group (Note Sollu)
end2 = Sequence Group (Note Sollu)
endforall a. Monoid a => a -> a -> a
.Sequence Group (Note Sollu)
dinforall a. Monoid a => a -> a -> a
.Sequence Group (Note Sollu)
tat in forall sollu.
SequenceT sollu -> [SequenceT sollu] -> SequenceT sollu
join (Tag
2forall sollu. Tag -> SequenceT sollu -> SequenceT sollu
^Sequence Group (Note Sollu)
dhomforall a. Monoid a => a -> a -> a
.forall sollu. SequenceT sollu
__4)
        [ Sequence Group (Note Sollu)
startforall a. Monoid a => a -> a -> a
.Sequence Group (Note Sollu)
end2
        , forall sollu.
(Stack, Pretty sollu) =>
FMatra -> SequenceT sollu -> SequenceT sollu
dropM FMatra
2 (Sequence Group (Note Sollu)
startforall a. Monoid a => a -> a -> a
.Sequence Group (Note Sollu)
end2)
        , forall sollu.
(Stack, Pretty sollu) =>
FMatra -> SequenceT sollu -> SequenceT sollu
dropM FMatra
4 (Sequence Group (Note Sollu)
startforall a. Monoid a => a -> a -> a
.Sequence Group (Note Sollu)
end2)
        , Sequence Group (Note Sollu)
end2, Sequence Group (Note Sollu)
end2
        , forall sollu.
(Stack, Pretty sollu) =>
FMatra -> SequenceT sollu -> SequenceT sollu
dropM FMatra
4 Sequence Group (Note Sollu)
end2, forall sollu.
(Stack, Pretty sollu) =>
FMatra -> SequenceT sollu -> SequenceT sollu
dropM FMatra
4 Sequence Group (Note Sollu)
end2
        , Sequence Group (Note Sollu)
dinforall a. Monoid a => a -> a -> a
.Sequence Group (Note Sollu)
tat, Sequence Group (Note Sollu)
dinforall a. Monoid a => a -> a -> a
.Sequence Group (Note Sollu)
tat
        ]
    ]
    where
    start :: Sequence Group (Note Sollu)
start = Sequence Group (Note Sollu)
startS forall a. Monoid a => a -> a -> a
. forall g sollu. Sequence g sollu -> Sequence g sollu
su Sequence Group (Note Sollu)
nakatiku
    startS :: Sequence Group (Note Sollu)
startS = Sequence Group (Note Sollu)
tatforall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__forall a. Monoid a => a -> a -> a
.Sequence Group (Note Sollu)
ditforall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__forall a. Monoid a => a -> a -> a
. forall g sollu. Sequence g sollu -> Sequence g sollu
su (Sequence Group (Note Sollu)
kitaforall a. Monoid a => a -> a -> a
.Sequence Group (Note Sollu)
kiforall a. Monoid a => a -> a -> a
.Sequence Group (Note Sollu)
naforall a. Monoid a => a -> a -> a
.Sequence Group (Note Sollu)
taforall a. Monoid a => a -> a -> a
.Sequence Group (Note Sollu)
kiforall a. Monoid a => a -> a -> a
.Sequence Group (Note Sollu)
taka)
    end :: Sequence Group (Note Sollu)
end = forall g sollu. Sequence g sollu -> Sequence g sollu
su forall a b. (a -> b) -> a -> b
$ Sequence Group (Note Sollu)
dhomforall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__forall a. Monoid a => a -> a -> a
.Sequence Group (Note Sollu)
takitaforall a. Monoid a => a -> a -> a
.Sequence Group (Note Sollu)
dinforall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__forall a. Monoid a => a -> a -> a
.Sequence Group (Note Sollu)
gaforall a. Monoid a => a -> a -> a
.Sequence Group (Note Sollu)
duguforall a. Monoid a => a -> a -> a
.Sequence Group (Note Sollu)
takitaforall a. Monoid a => a -> a -> a
.Sequence Group (Note Sollu)
dinforall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__forall a. Monoid a => a -> a -> a
.Sequence Group (Note Sollu)
ga
    mridangam :: StrokeMaps
mridangam = StrokeMap Stroke -> StrokeMaps
makeMridangam
        [ (Sequence Group (Note Sollu)
startS, forall {g}. Sequence g (Note (Stroke Stroke))
kforall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__forall a. Monoid a => a -> a -> a
.forall {g}. Sequence g (Note (Stroke Stroke))
tforall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__forall a. Monoid a => a -> a -> a
.forall {g}. Sequence g (Note (Stroke Stroke))
kforall a. Monoid a => a -> a -> a
.forall {g}. Sequence g (Note (Stroke Stroke))
tforall a. Monoid a => a -> a -> a
.forall {g}. Sequence g (Note (Stroke Stroke))
kforall a. Monoid a => a -> a -> a
.forall {g}. Sequence g (Note (Stroke Stroke))
nforall a. Monoid a => a -> a -> a
.forall {g}. Sequence g (Note (Stroke Stroke))
pforall a. Monoid a => a -> a -> a
.forall {g}. Sequence g (Note (Stroke Stroke))
kforall a. Monoid a => a -> a -> a
.forall {g}. Sequence g (Note (Stroke Stroke))
tforall a. Monoid a => a -> a -> a
.forall {g}. Sequence g (Note (Stroke Stroke))
k)
        , (Sequence Group (Note Sollu)
end, forall {g}. Sequence g (Note (Stroke Stroke))
oforall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__forall a. Monoid a => a -> a -> a
.forall {g}. Sequence g (Note (Stroke Stroke))
kforall a. Monoid a => a -> a -> a
.forall {g}. Sequence g (Note (Stroke Stroke))
pforall a. Monoid a => a -> a -> a
.forall {g}. Sequence g (Note (Stroke Stroke))
kforall a. Monoid a => a -> a -> a
.forall {g}. Sequence g (Note (Stroke Stroke))
odforall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__forall a. Monoid a => a -> a -> a
.forall {g}. Sequence g (Note (Stroke Stroke))
kforall a. Monoid a => a -> a -> a
.forall {g}. Sequence g (Note (Stroke Stroke))
oforall a. Monoid a => a -> a -> a
.forall {g}. Sequence g (Note (Stroke Stroke))
oforall a. Monoid a => a -> a -> a
.forall {g}. Sequence g (Note (Stroke Stroke))
kforall a. Monoid a => a -> a -> a
.forall {g}. Sequence g (Note (Stroke Stroke))
pforall a. Monoid a => a -> a -> a
.forall {g}. Sequence g (Note (Stroke Stroke))
kforall a. Monoid a => a -> a -> a
.forall {g}. Sequence g (Note (Stroke Stroke))
odforall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__forall a. Monoid a => a -> a -> a
.forall {g}. Sequence g (Note (Stroke Stroke))
k)
        , (Sequence Group (Note Sollu)
dhom, forall {g}. Sequence g (Note (Stroke Stroke))
o)
        , (Tag
2forall sollu. Tag -> SequenceT sollu -> SequenceT sollu
^Sequence Group (Note Sollu)
dhom, forall {g}. Sequence g (Note (Stroke Stroke))
od)
        , (Sequence Group (Note Sollu)
dinforall a. Monoid a => a -> a -> a
.Sequence Group (Note Sollu)
tat, forall {g}. Sequence g (Note (Stroke Stroke))
oforall a. Monoid a => a -> a -> a
.forall {g}. Sequence g (Note (Stroke Stroke))
k)
        ]

c_19_06_17 :: Korvai
c_19_06_17 :: Korvai
c_19_06_17 = Stack => Int -> Int -> Int -> Korvai -> Korvai
date Int
2019 Int
6 Int
17 forall a b. (a -> b) -> a -> b
$ Korvai -> Korvai
ganesh forall a b. (a -> b) -> a -> b
$ Tala -> StrokeMaps -> [Sequence Group (Note Sollu)] -> Korvai
korvaiS Tala
adi StrokeMaps
mridangam
    [ Sequence Group (Note Sollu)
seq
    , forall g sollu. Int -> Sequence g sollu -> Sequence g sollu
nadai Int
6 Sequence Group (Note Sollu)
seq
    ]
    where
    seq :: Sequence Group (Note Sollu)
seq = Int -> Sequence Group (Note Sollu)
theme Int
1 forall a. Monoid a => a -> a -> a
. Int -> Sequence Group (Note Sollu)
theme Int
2 forall a. Monoid a => a -> a -> a
. Int -> Sequence Group (Note Sollu)
theme Int
3 forall a. Monoid a => a -> a -> a
. forall sollu. SequenceT sollu -> SequenceT sollu
tri forall sollu. SequenceT sollu
p5 forall a. Monoid a => a -> a -> a
. forall sollu. SequenceT sollu -> SequenceT sollu
tri forall sollu. SequenceT sollu
p6 forall a. Monoid a => a -> a -> a
. forall sollu. SequenceT sollu -> SequenceT sollu
tri forall sollu. SequenceT sollu
p7
    theme :: Int -> Sequence Group (Note Sollu)
theme Int
n = Sequence Group (Note Sollu)
takadinnaforall a. Monoid a => a -> a -> a
.Sequence Group (Note Sollu)
takitaforall a. Monoid a => a -> a -> a
.forall a. Monoid a => Int -> a -> a
repeat Int
n Sequence Group (Note Sollu)
takaforall a. Monoid a => a -> a -> a
.Sequence Group (Note Sollu)
dheemforall a. Monoid a => a -> a -> a
.forall sollu. SequenceT sollu
__3
    mridangam :: StrokeMaps
mridangam = StrokeMap Stroke -> StrokeMaps
makeMridangam
        [ (Sequence Group (Note Sollu)
takita, forall {g}. Sequence g (Note (Stroke Stroke))
nforall a. Monoid a => a -> a -> a
.forall {g}. Sequence g (Note (Stroke Stroke))
pforall a. Monoid a => a -> a -> a
.forall {g}. Sequence g (Note (Stroke Stroke))
k)
        , (Sequence Group (Note Sollu)
taka, forall {g}. Sequence g (Note (Stroke Stroke))
pforall a. Monoid a => a -> a -> a
.forall {g}. Sequence g (Note (Stroke Stroke))
k)
        , (Sequence Group (Note Sollu)
dheem, forall {g}. Sequence g (Note (Stroke Stroke))
od)
        ]

-- n d d n -- 1
-- _ kd nnd d n -- ktokou kokokou k
-- okd d n knn d d n -- 2
-- _ kd nnd d n _ nd d n _ kD D N -- 3 (v ook kpkkook...)
--
-- n d d n nnd d n n
--
c_19_07_15 :: Korvai
c_19_07_15 :: Korvai
c_19_07_15 = Stack => Int -> Int -> Int -> Korvai -> Korvai
date Int
2019 Int
7 Int
15 forall a b. (a -> b) -> a -> b
$ Korvai -> Korvai
ganesh forall a b. (a -> b) -> a -> b
$ Tala -> StrokeMaps -> [Section] -> Korvai
korvai Tala
adi StrokeMaps
mridangam forall a b. (a -> b) -> a -> b
$
    let var :: Sequence Group (Note Sollu) -> Section
var Sequence Group (Note Sollu)
th = forall a. a -> Section a
s forall a b. (a -> b) -> a -> b
$ Duration -> Sequence Group (Note Sollu)
sarva Duration
8 forall a. Monoid a => a -> a -> a
. Duration -> Sequence Group (Note Sollu)
sarva Duration
4 forall a. Monoid a => a -> a -> a
. Sequence Group (Note Sollu)
dinforall a. Monoid a => a -> a -> a
.forall sollu. SequenceT sollu
__4 forall a. Monoid a => a -> a -> a
. Sequence Group (Note Sollu)
th in
    [ Sequence Group (Note Sollu) -> Section
var Sequence Group (Note Sollu)
th0a
    , Sequence Group (Note Sollu) -> Section
var Sequence Group (Note Sollu)
th0b
    , Sequence Group (Note Sollu) -> Section
var Sequence Group (Note Sollu)
th0c
    , forall sollu. Section sollu -> Section sollu
x2 forall a b. (a -> b) -> a -> b
$ forall a. a -> Section a
s forall a b. (a -> b) -> a -> b
$ Duration -> Sequence Group (Note Sollu)
sarva Duration
4 forall a. Monoid a => a -> a -> a
. Sequence Group (Note Sollu)
dinforall a. Monoid a => a -> a -> a
.forall sollu. SequenceT sollu
__4 forall a. Monoid a => a -> a -> a
. Sequence Group (Note Sollu)
th0a
    , forall a. a -> Section a
s forall a b. (a -> b) -> a -> b
$ forall sollu.
Stack =>
SequenceT sollu -> Duration -> SequenceT sollu
sarvaD Sequence Group (Note Sollu)
sarvaPlainS Duration
8
    , forall a. a -> Section a
ending forall a b. (a -> b) -> a -> b
$ forall g sollu. Sequence g sollu -> Sequence g sollu
su forall a b. (a -> b) -> a -> b
$
        Sequence Group (Note Sollu)
th1 forall a. Monoid a => a -> a -> a
. Sequence Group (Note Sollu)
taforall a. Monoid a => a -> a -> a
.Sequence Group (Note Sollu)
dinga
        forall a. Monoid a => a -> a -> a
. forall sollu.
(Stack, Pretty sollu) =>
FMatra -> SequenceT sollu -> SequenceT sollu
dropM FMatra
2 (forall sollu.
(Stack, Pretty sollu) =>
FMatra -> SequenceT sollu -> SequenceT sollu
rdropM FMatra
2 Sequence Group (Note Sollu)
th1) forall a. Monoid a => a -> a -> a
. Sequence Group (Note Sollu)
taforall a. Monoid a => a -> a -> a
.Sequence Group (Note Sollu)
dinga
        forall a. Monoid a => a -> a -> a
. forall sollu.
(Stack, Pretty sollu) =>
FMatra -> SequenceT sollu -> SequenceT sollu
dropM FMatra
4 (forall sollu.
(Stack, Pretty sollu) =>
FMatra -> SequenceT sollu -> SequenceT sollu
rdropM FMatra
4 Sequence Group (Note Sollu)
th1)
        forall a. Monoid a => a -> a -> a
. forall sollu. SequenceT sollu -> SequenceT sollu
tri (forall sollu. SequenceT sollu -> SequenceT sollu
group (forall sollu. SequenceT sollu -> SequenceT sollu -> SequenceT sollu
tri_ Sequence Group (Note Sollu)
dinga (Sequence Group (Note Sollu)
taforall a. Monoid a => a -> a -> a
.Sequence Group (Note Sollu)
dingaforall a. Monoid a => a -> a -> a
.Sequence Group (Note Sollu)
tatforall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__)))
    ]
    where
    th0a :: Sequence Group (Note Sollu)
th0a = forall g sollu. Sequence g sollu -> Sequence g sollu
su forall a b. (a -> b) -> a -> b
$ Sequence Group (Note Sollu)
tangaforall a. Monoid a => a -> a -> a
.Sequence Group (Note Sollu)
tatforall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__forall a. Monoid a => a -> a -> a
.Sequence Group (Note Sollu)
ditforall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__forall a. Monoid a => a -> a -> a
.Sequence Group (Note Sollu)
th0
    th0b :: Sequence Group (Note Sollu)
th0b = forall g sollu. Sequence g sollu -> Sequence g sollu
su forall a b. (a -> b) -> a -> b
$ Sequence Group (Note Sollu)
tangaforall a. Monoid a => a -> a -> a
.Sequence Group (Note Sollu)
takaforall a. Monoid a => a -> a -> a
.Sequence Group (Note Sollu)
tangforall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__forall a. Monoid a => a -> a -> a
.Sequence Group (Note Sollu)
th0
    th0c :: Sequence Group (Note Sollu)
th0c = forall g sollu. Sequence g sollu -> Sequence g sollu
su forall a b. (a -> b) -> a -> b
$ Sequence Group (Note Sollu)
tangforall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__forall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__forall a. Monoid a => a -> a -> a
.Sequence Group (Note Sollu)
kttkforall a. Monoid a => a -> a -> a
.Sequence Group (Note Sollu)
tatforall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__forall a. Monoid a => a -> a -> a
.Sequence Group (Note Sollu)
th0
    th0 :: Sequence Group (Note Sollu)
th0 = Sequence Group (Note Sollu)
takaforall a. Monoid a => a -> a -> a
.Sequence Group (Note Sollu)
taforall a. Monoid a => a -> a -> a
.Sequence Group (Note Sollu)
takadinnaforall a. Monoid a => a -> a -> a
.Sequence Group (Note Sollu)
takaforall a. Monoid a => a -> a -> a
.Sequence Group (Note Sollu)
dingaforall a. Monoid a => a -> a -> a
.Sequence Group (Note Sollu)
tatforall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__forall a. Monoid a => a -> a -> a
.Sequence Group (Note Sollu)
tatforall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__forall a. Monoid a => a -> a -> a
.Sequence Group (Note Sollu)
tat

    th1 :: Sequence Group (Note Sollu)
th1 = Sequence Group (Note Sollu)
tatforall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__forall a. Monoid a => a -> a -> a
.Sequence Group (Note Sollu)
ditforall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__forall a. Monoid a => a -> a -> a
.Sequence Group (Note Sollu)
kitaforall a. Monoid a => a -> a -> a
.Sequence Group (Note Sollu)
kiforall a. Monoid a => a -> a -> a
.Sequence Group (Note Sollu)
naforall a. Monoid a => a -> a -> a
.Sequence Group (Note Sollu)
guforall a. Monoid a => a -> a -> a
.Sequence Group (Note Sollu)
guforall a. Monoid a => a -> a -> a
.Sequence Group (Note Sollu)
takitaforall a. Monoid a => a -> a -> a
.Sequence Group (Note Sollu)
dingaforall a. Monoid a => a -> a -> a
.Sequence Group (Note Sollu)
tatforall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__forall a. Monoid a => a -> a -> a
.Sequence Group (Note Sollu)
ditforall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__
    -- Reduce from both ends:
    -- tat.__.dit.__.kita.ki.na.gu.gu.takita.dinga.tat.__.dit.__.ta.dinga
    --        dit.__.kita.ki.na.gu.gu.takita.dinga.tat.__       .ta.dinga
    --               kita.ki.na.gu.gu.taktakita.dinga
    -- ta.dinga.tat.__.dinga
    -- ta.dinga.tat.__.dinga
    -- ta.dinga.tat.__

    sarva :: Duration -> Sequence Group (Note Sollu)
sarva = forall sollu.
Stack =>
SequenceT sollu -> Duration -> SequenceT sollu
sarvaD Sequence Group (Note Sollu)
sarvaS
    sarvaS :: Sequence Group (Note Sollu)
sarvaS = forall a. Monoid a => a -> a
r2 forall a b. (a -> b) -> a -> b
$ Sequence Group (Note Sollu)
naforall a. Monoid a => a -> a -> a
.Sequence Group (Note Sollu)
dimiforall a. Monoid a => a -> a -> a
.Sequence Group (Note Sollu)
namiforall a. Monoid a => a -> a -> a
.Sequence Group (Note Sollu)
naforall a. Monoid a => a -> a -> a
.Sequence Group (Note Sollu)
dimiforall a. Monoid a => a -> a -> a
.Sequence Group (Note Sollu)
namiforall a. Monoid a => a -> a -> a
.Sequence Group (Note Sollu)
naforall a. Monoid a => a -> a -> a
.Sequence Group (Note Sollu)
dimiforall a. Monoid a => a -> a -> a
.Sequence Group (Note Sollu)
namforall a. Monoid a => a -> a -> a
.Sequence Group (Note Sollu)
kttk
    sarvaPlainS :: Sequence Group (Note Sollu)
sarvaPlainS = forall a. Monoid a => a -> a
r2 forall a b. (a -> b) -> a -> b
$ Sequence Group (Note Sollu)
naforall a. Monoid a => a -> a -> a
.Sequence Group (Note Sollu)
dimiforall a. Monoid a => a -> a -> a
.Sequence Group (Note Sollu)
namiforall a. Monoid a => a -> a -> a
.Sequence Group (Note Sollu)
naforall a. Monoid a => a -> a -> a
.Sequence Group (Note Sollu)
dimiforall a. Monoid a => a -> a -> a
.Sequence Group (Note Sollu)
namiforall a. Monoid a => a -> a -> a
.Sequence Group (Note Sollu)
naforall a. Monoid a => a -> a -> a
.Sequence Group (Note Sollu)
dimiforall a. Monoid a => a -> a -> a
.Sequence Group (Note Sollu)
naforall a. Monoid a => a -> a -> a
.Sequence Group (Note Sollu)
dimi
    dimi :: Sequence Group (Note Sollu)
dimi = Sequence Group (Note Sollu)
diforall a. Monoid a => a -> a -> a
.Sequence Group (Note Sollu)
mi; nami :: Sequence Group (Note Sollu)
nami = Sequence Group (Note Sollu)
naforall a. Monoid a => a -> a -> a
.Sequence Group (Note Sollu)
mi
    -- TODO din.__8 as usual when coming back into sarva
    -- TODO sarva going into ending does na.dimi instead of nam.kttk.
    mridangam :: StrokeMaps
mridangam = StrokeMap Stroke -> StrokeMaps
makeMridangam
        [ (Sequence Group (Note Sollu)
sarvaS, let rh :: Sequence g (Note (Stroke Stroke))
rh = forall {g}. Sequence g (Note (Stroke Stroke))
nforall a. Monoid a => a -> a -> a
.forall {g}. Sequence g (Note (Stroke Stroke))
dforall a. Monoid a => a -> a -> a
.forall {g}. Sequence g (Note (Stroke Stroke))
lforall a. Monoid a => a -> a -> a
.forall {g}. Sequence g (Note (Stroke Stroke))
nforall a. Monoid a => a -> a -> a
.forall {g}. Sequence g (Note (Stroke Stroke))
lforall a. Monoid a => a -> a -> a
.forall {g}. Sequence g (Note (Stroke Stroke))
nforall a. Monoid a => a -> a -> a
.forall {g}. Sequence g (Note (Stroke Stroke))
dforall a. Monoid a => a -> a -> a
.forall {g}. Sequence g (Note (Stroke Stroke))
lforall a. Monoid a => a -> a -> a
.forall {g}. Sequence g (Note (Stroke Stroke))
nforall a. Monoid a => a -> a -> a
.forall {g}. Sequence g (Note (Stroke Stroke))
lforall a. Monoid a => a -> a -> a
.forall {g}. Sequence g (Note (Stroke Stroke))
nforall a. Monoid a => a -> a -> a
.forall {g}. Sequence g (Note (Stroke Stroke))
dforall a. Monoid a => a -> a -> a
.forall {g}. Sequence g (Note (Stroke Stroke))
lforall a. Monoid a => a -> a -> a
.forall {g}. Sequence g (Note (Stroke Stroke))
nforall a. Monoid a => a -> a -> a
.forall {g}. Sequence g (Note (Stroke Stroke))
kforall a. Monoid a => a -> a -> a
.forall {g}. Sequence g (Note (Stroke Stroke))
tforall a. Monoid a => a -> a -> a
.forall {g}. Sequence g (Note (Stroke Stroke))
oforall a. Monoid a => a -> a -> a
.forall {g}. Sequence g (Note (Stroke Stroke))
k
            in forall {g}. Sequence g (Note (Stroke Stroke))
rh Stack =>
Sequence Group (Note (Stroke Stroke))
-> Sequence Group (Note (Stroke Stroke))
-> Sequence Group (Note (Stroke Stroke))
& Sequence Group (Note (Stroke Stroke))
"oo_o_oo_o_oo_o" forall a. Monoid a => a -> a -> a
. forall {g}. Sequence g (Note (Stroke Stroke))
rh Stack =>
Sequence Group (Note (Stroke Stroke))
-> Sequence Group (Note (Stroke Stroke))
-> Sequence Group (Note (Stroke Stroke))
& (forall {g}. Sequence g (Note (Stroke Stroke))
oforall a. Monoid a => a -> a -> a
.forall {g}. Sequence g (Note (Stroke Stroke))
o))
        , (Sequence Group (Note Sollu)
sarvaPlainS, let rh :: Sequence g (Note (Stroke Stroke))
rh = forall {g}. Sequence g (Note (Stroke Stroke))
nforall a. Monoid a => a -> a -> a
.forall {g}. Sequence g (Note (Stroke Stroke))
dforall a. Monoid a => a -> a -> a
.forall {g}. Sequence g (Note (Stroke Stroke))
lforall a. Monoid a => a -> a -> a
.forall {g}. Sequence g (Note (Stroke Stroke))
nforall a. Monoid a => a -> a -> a
.forall {g}. Sequence g (Note (Stroke Stroke))
lforall a. Monoid a => a -> a -> a
.forall {g}. Sequence g (Note (Stroke Stroke))
nforall a. Monoid a => a -> a -> a
.forall {g}. Sequence g (Note (Stroke Stroke))
dforall a. Monoid a => a -> a -> a
.forall {g}. Sequence g (Note (Stroke Stroke))
lforall a. Monoid a => a -> a -> a
.forall {g}. Sequence g (Note (Stroke Stroke))
nforall a. Monoid a => a -> a -> a
.forall {g}. Sequence g (Note (Stroke Stroke))
lforall a. Monoid a => a -> a -> a
.forall {g}. Sequence g (Note (Stroke Stroke))
nforall a. Monoid a => a -> a -> a
.forall {g}. Sequence g (Note (Stroke Stroke))
dforall a. Monoid a => a -> a -> a
.forall {g}. Sequence g (Note (Stroke Stroke))
lforall a. Monoid a => a -> a -> a
.forall {g}. Sequence g (Note (Stroke Stroke))
nforall a. Monoid a => a -> a -> a
.forall {g}. Sequence g (Note (Stroke Stroke))
dforall a. Monoid a => a -> a -> a
.forall {g}. Sequence g (Note (Stroke Stroke))
l
            in forall {g}. Sequence g (Note (Stroke Stroke))
rh Stack =>
Sequence Group (Note (Stroke Stroke))
-> Sequence Group (Note (Stroke Stroke))
-> Sequence Group (Note (Stroke Stroke))
& Sequence Group (Note (Stroke Stroke))
"oo_o_oo_o_oo_oo_" forall a. Monoid a => a -> a -> a
. forall {g}. Sequence g (Note (Stroke Stroke))
rh Stack =>
Sequence Group (Note (Stroke Stroke))
-> Sequence Group (Note (Stroke Stroke))
-> Sequence Group (Note (Stroke Stroke))
& (forall {g}. Sequence g (Note (Stroke Stroke))
oforall a. Monoid a => a -> a -> a
.forall {g}. Sequence g (Note (Stroke Stroke))
o))

        , (Sequence Group (Note Sollu)
tangaforall a. Monoid a => a -> a -> a
.Sequence Group (Note Sollu)
tatforall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__forall a. Monoid a => a -> a -> a
.Sequence Group (Note Sollu)
dit, forall {g}. Sequence g (Note (Stroke Stroke))
vforall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__forall a. Monoid a => a -> a -> a
.forall {g}. Sequence g (Note (Stroke Stroke))
pforall a. Monoid a => a -> a -> a
.forall {g}. Sequence g (Note (Stroke Stroke))
kforall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__forall a. Monoid a => a -> a -> a
.forall {g}. Sequence g (Note (Stroke Stroke))
t)
        , (Sequence Group (Note Sollu)
tangaforall a. Monoid a => a -> a -> a
.Sequence Group (Note Sollu)
takaforall a. Monoid a => a -> a -> a
.Sequence Group (Note Sollu)
tang, forall {g}. Sequence g (Note (Stroke Stroke))
vforall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__forall a. Monoid a => a -> a -> a
.forall {g}. Sequence g (Note (Stroke Stroke))
pforall a. Monoid a => a -> a -> a
.forall {g}. Sequence g (Note (Stroke Stroke))
kforall a. Monoid a => a -> a -> a
.forall {g}. Sequence g (Note (Stroke Stroke))
pforall a. Monoid a => a -> a -> a
.forall {g}. Sequence g (Note (Stroke Stroke))
v)
        , (Sequence Group (Note Sollu)
tangforall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__forall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__forall a. Monoid a => a -> a -> a
.Sequence Group (Note Sollu)
kttkforall a. Monoid a => a -> a -> a
.Sequence Group (Note Sollu)
tat, forall {g}. Sequence g (Note (Stroke Stroke))
vforall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__forall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__forall a. Monoid a => a -> a -> a
. forall {g}. Sequence g (Note (Stroke Stroke))
oforall a. Monoid a => a -> a -> a
.forall {g}. Sequence g (Note (Stroke Stroke))
kforall a. Monoid a => a -> a -> a
.forall {g}. Sequence g (Note (Stroke Stroke))
tforall a. Monoid a => a -> a -> a
.forall {g}. Sequence g (Note (Stroke Stroke))
pforall a. Monoid a => a -> a -> a
.forall {g}. Sequence g (Note (Stroke Stroke))
k)
        , (Sequence Group (Note Sollu)
th1,   forall {g}. Sequence g (Note (Stroke Stroke))
kforall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__forall a. Monoid a => a -> a -> a
.forall {g}. Sequence g (Note (Stroke Stroke))
tforall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__forall a. Monoid a => a -> a -> a
.forall {g}. Sequence g (Note (Stroke Stroke))
kforall a. Monoid a => a -> a -> a
.forall {g}. Sequence g (Note (Stroke Stroke))
tforall a. Monoid a => a -> a -> a
.forall {g}. Sequence g (Note (Stroke Stroke))
kforall a. Monoid a => a -> a -> a
.forall {g}. Sequence g (Note (Stroke Stroke))
nforall a. Monoid a => a -> a -> a
.forall {g}. Sequence g (Note (Stroke Stroke))
oforall a. Monoid a => a -> a -> a
.forall {g}. Sequence g (Note (Stroke Stroke))
oforall a. Monoid a => a -> a -> a
.forall {g}. Sequence g (Note (Stroke Stroke))
kforall a. Monoid a => a -> a -> a
.forall {g}. Sequence g (Note (Stroke Stroke))
pforall a. Monoid a => a -> a -> a
.forall {g}. Sequence g (Note (Stroke Stroke))
kforall a. Monoid a => a -> a -> a
.forall {g}. Sequence g (Note (Stroke Stroke))
odforall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__forall a. Monoid a => a -> a -> a
.forall {g}. Sequence g (Note (Stroke Stroke))
pforall a. Monoid a => a -> a -> a
.forall {g}. Sequence g (Note (Stroke Stroke))
kforall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__forall a. Monoid a => a -> a -> a
.forall {g}. Sequence g (Note (Stroke Stroke))
tforall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__)
        , (Sequence Group (Note Sollu)
th0, forall {g}. Sequence g (Note (Stroke Stroke))
kforall a. Monoid a => a -> a -> a
.forall {g}. Sequence g (Note (Stroke Stroke))
pforall a. Monoid a => a -> a -> a
.forall {g}. Sequence g (Note (Stroke Stroke))
kforall a. Monoid a => a -> a -> a
.forall {g}. Sequence g (Note (Stroke Stroke))
kforall a. Monoid a => a -> a -> a
.forall {g}. Sequence g (Note (Stroke Stroke))
oforall a. Monoid a => a -> a -> a
.forall {g}. Sequence g (Note (Stroke Stroke))
oforall a. Monoid a => a -> a -> a
.forall {g}. Sequence g (Note (Stroke Stroke))
kforall a. Monoid a => a -> a -> a
.forall {g}. Sequence g (Note (Stroke Stroke))
pforall a. Monoid a => a -> a -> a
.forall {g}. Sequence g (Note (Stroke Stroke))
kforall a. Monoid a => a -> a -> a
.forall {g}. Sequence g (Note (Stroke Stroke))
odforall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__forall a. Monoid a => a -> a -> a
.forall {g}. Sequence g (Note (Stroke Stroke))
pforall a. Monoid a => a -> a -> a
.forall {g}. Sequence g (Note (Stroke Stroke))
kforall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__forall a. Monoid a => a -> a -> a
.forall {g}. Sequence g (Note (Stroke Stroke))
kforall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__forall a. Monoid a => a -> a -> a
.forall {g}. Sequence g (Note (Stroke Stroke))
k)

        , (Sequence Group (Note Sollu)
dinga, forall {g}. Sequence g (Note (Stroke Stroke))
odforall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__forall a. Monoid a => a -> a -> a
.forall {g}. Sequence g (Note (Stroke Stroke))
p)
        , (Sequence Group (Note Sollu)
din, forall {g}. Sequence g (Note (Stroke Stroke))
od)
        , (Sequence Group (Note Sollu)
ta, forall {g}. Sequence g (Note (Stroke Stroke))
k)
        , (Sequence Group (Note Sollu)
tat, forall {g}. Sequence g (Note (Stroke Stroke))
k)
        ]

e_19_09_23_kandam :: Korvai
e_19_09_23_kandam :: Korvai
e_19_09_23_kandam = Stack => Int -> Int -> Int -> Korvai -> Korvai
date Int
2019 Int
9 Int
23 forall a b. (a -> b) -> a -> b
$ Korvai -> Korvai
ganesh forall a b. (a -> b) -> a -> b
$
    Text -> Korvai -> Korvai
comment Text
"practice for kandam part of trikalam" forall a b. (a -> b) -> a -> b
$
    Text -> Text -> Korvai -> Korvai
similarTo Text
"Solkattu2017" Text
"c_17_07_13" forall a b. (a -> b) -> a -> b
$ Tala -> StrokeMaps -> [Sequence Group (Note Sollu)] -> Korvai
korvaiS Tala
adi forall a. Monoid a => a
mempty
    [ forall g sollu. Int -> Sequence g sollu -> Sequence g sollu
nadai Int
5 forall a b. (a -> b) -> a -> b
$ forall g sollu. Sequence g sollu -> Sequence g sollu
sd forall a b. (a -> b) -> a -> b
$ forall a. Monoid a => a -> a
r3 Sequence Group (Note Sollu)
purvangam forall a. Monoid a => a -> a -> a
. Sequence Group (Note Sollu)
utarangam
    ]
    where
    purvangam :: Sequence Group (Note Sollu)
purvangam = forall sollu. SequenceT sollu -> SequenceT sollu
group Sequence Group (Note Sollu)
takadinnaforall a. Monoid a => a -> a -> a
.forall sollu. SequenceT sollu -> SequenceT sollu
group Sequence Group (Note Sollu)
takadinnaforall a. Monoid a => a -> a -> a
.forall sollu. SequenceT sollu -> SequenceT sollu
group Sequence Group (Note Sollu)
takitaforall a. Monoid a => a -> a -> a
.forall sollu. SequenceT sollu -> SequenceT sollu
group Sequence Group (Note Sollu)
tdgnt
    utarangam :: Sequence Group (Note Sollu)
utarangam = forall sollu. SequenceT sollu -> SequenceT sollu -> SequenceT sollu
tri_ (Sequence Group (Note Sollu)
taforall a. Monoid a => a -> a -> a
.forall sollu. SequenceT sollu
__4) forall a b. (a -> b) -> a -> b
$ forall sollu. SequenceT sollu -> SequenceT sollu
group forall a b. (a -> b) -> a -> b
$ Sequence Group (Note Sollu)
takitaforall a. Monoid a => a -> a -> a
.Sequence Group (Note Sollu)
tdgnt

e_19_10_14_kandam :: Korvai
e_19_10_14_kandam :: Korvai
e_19_10_14_kandam = Stack => Int -> Int -> Int -> Korvai -> Korvai
date Int
2019 Int
10 Int
14 forall a b. (a -> b) -> a -> b
$ Korvai -> Korvai
ganesh forall a b. (a -> b) -> a -> b
$ Tala -> StrokeMaps -> [Sequence Group (Note Sollu)] -> Korvai
korvaiS Tala
adi forall a. Monoid a => a
mempty forall a b. (a -> b) -> a -> b
$
    forall a b. (a -> b) -> [a] -> [b]
map (forall g sollu. Int -> Sequence g sollu -> Sequence g sollu
nadai Int
5)
    -- 6 purvangam 10 utarangam
    [ Sequence Group (Note Sollu)
t1forall a. Monoid a => a -> a -> a
.Sequence Group (Note Sollu)
kpforall a. Monoid a => a -> a -> a
.Sequence Group (Note Sollu)
t1forall a. Monoid a => a -> a -> a
.Sequence Group (Note Sollu)
kpnpforall a. Monoid a => a -> a -> a
.Sequence Group (Note Sollu)
t1
        forall a. Monoid a => a -> a -> a
. forall sollu. Int -> SequenceT sollu -> SequenceT sollu
spread Int
4 Sequence Group (Note Sollu)
tdgnt forall a. Monoid a => a -> a -> a
. forall sollu. Int -> SequenceT sollu -> SequenceT sollu
spread Int
3 Sequence Group (Note Sollu)
tdgnt forall a. Monoid a => a -> a -> a
. forall sollu. Int -> SequenceT sollu -> SequenceT sollu
spread Int
2 Sequence Group (Note Sollu)
tdgnt forall a. Monoid a => a -> a -> a
. Sequence Group (Note Sollu)
tdgnt
    -- 9 purvangam 7 utarangam
    , forall sollu. SequenceT sollu -> SequenceT sollu
tri (forall sollu. Int -> SequenceT sollu -> SequenceT sollu
spread Int
3 (Sequence Group (Note Sollu)
taforall a. Monoid a => a -> a -> a
.Sequence Group (Note Sollu)
dinforall a. Monoid a => a -> a -> a
.Sequence Group (Note Sollu)
dinforall a. Monoid a => a -> a -> a
.Sequence Group (Note Sollu)
na) forall a. Monoid a => a -> a -> a
. Sequence Group (Note Sollu)
takita)
        forall a. Monoid a => a -> a -> a
. forall sollu. Int -> SequenceT sollu -> SequenceT sollu
spread Int
4 Sequence Group (Note Sollu)
tdgnt forall a. Monoid a => a -> a -> a
. forall sollu. Int -> SequenceT sollu -> SequenceT sollu
spread Int
2 Sequence Group (Note Sollu)
tdgnt forall a. Monoid a => a -> a -> a
. Sequence Group (Note Sollu)
tdgnt
    , forall a. (Semigroup a, Monoid a) => [a] -> a -> a
prefixes [Sequence Group (Note Sollu)]
reduction (Sequence Group (Note Sollu)
dingaforall a. Monoid a => a -> a -> a
.Sequence Group (Note Sollu)
dinga)
        forall a. Monoid a => a -> a -> a
. forall a. (Semigroup a, Monoid a) => [a] -> a -> a
prefixes [Sequence Group (Note Sollu)]
reduction (Sequence Group (Note Sollu)
dimforall a. Monoid a => a -> a -> a
.forall sollu. SequenceT sollu
__5)
        forall a. Monoid a => a -> a -> a
. forall a. (Semigroup a, Monoid a) => [a] -> a -> a
prefixes [Sequence Group (Note Sollu)]
reduction (Sequence Group (Note Sollu)
dimforall a. Monoid a => a -> a -> a
.forall sollu. SequenceT sollu
__4)
        forall a. Monoid a => a -> a -> a
. forall a. (Semigroup a, Monoid a) => [a] -> a -> a
prefixes [Sequence Group (Note Sollu)]
reduction Sequence Group (Note Sollu)
dinga
        forall a. Monoid a => a -> a -> a
. forall a. (Semigroup a, Monoid a) => [a] -> a -> a
prefixes [Sequence Group (Note Sollu)]
reduction (Sequence Group (Note Sollu)
dinforall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__)
        forall a. Monoid a => a -> a -> a
. forall a. Rest a => a
__forall a. Monoid a => a -> a -> a
.forall sollu. SequenceT sollu -> SequenceT sollu
tri Sequence Group (Note Sollu)
takita

    ]
    where
    t1 :: Sequence Group (Note Sollu)
t1 = forall sollu. SequenceT sollu -> SequenceT sollu
group forall a b. (a -> b) -> a -> b
$ Sequence Group (Note Sollu)
taforall a. Monoid a => a -> a -> a
.Sequence Group (Note Sollu)
takadinnaforall a. Monoid a => a -> a -> a
.Sequence Group (Note Sollu)
dinga
    reduction :: [Sequence Group (Note Sollu)]
reduction = forall a b. (a -> b) -> [a] -> [b]
map forall sollu. SequenceT sollu -> SequenceT sollu
group [Sequence Group (Note Sollu)
takadinna, Sequence Group (Note Sollu)
takita, Sequence Group (Note Sollu)
taka, Sequence Group (Note Sollu)
ta, forall a. Monoid a => a
ø]
    -- 8 7 6 5 4 = 6*5 = 30
    -- because you start at 6, then +2 on each side is 2*6

c_19_10_28_kandam :: Korvai
c_19_10_28_kandam :: Korvai
c_19_10_28_kandam = Stack => Int -> Int -> Int -> Korvai -> Korvai
date Int
2019 Int
10 Int
28 forall a b. (a -> b) -> a -> b
$ Text -> Korvai -> Korvai
source Text
"Patri Satish Kumar" forall a b. (a -> b) -> a -> b
$
    Stack => Text -> String -> Korvai -> Korvai
recording Text
"https://youtu.be/XpIMZwz-YbI" String
"6:13" forall a b. (a -> b) -> a -> b
$
    Tala -> StrokeMaps -> [Sequence Group (Note Sollu)] -> Korvai
korvaiS Tala
adi StrokeMaps
mridangam forall a b. (a -> b) -> a -> b
$
    forall a b. (a -> b) -> [a] -> [b]
map (forall g sollu. Int -> Sequence g sollu -> Sequence g sollu
nadai Int
5)
    [ forall a. (Semigroup a, Monoid a) => a -> [a] -> a
suffixes (Sequence Group (Note Sollu)
takadinnaforall a. Monoid a => a -> a -> a
.Sequence Group (Note Sollu)
dinforall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__forall a. Monoid a => a -> a -> a
.Sequence Group (Note Sollu)
takitaforall a. Monoid a => a -> a -> a
.Sequence Group (Note Sollu)
dinforall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__forall a. Monoid a => a -> a -> a
.Sequence Group (Note Sollu)
takaforall a. Monoid a => a -> a -> a
.Sequence Group (Note Sollu)
dinforall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__)
        [Sequence Group (Note Sollu)
taforall a. Monoid a => a -> a -> a
.Sequence Group (Note Sollu)
dinforall a. Monoid a => a -> a -> a
.forall sollu. SequenceT sollu
__4, forall a. Monoid a => a -> a
r2 (Sequence Group (Note Sollu)
taforall a. Monoid a => a -> a -> a
.Sequence Group (Note Sollu)
dinforall a. Monoid a => a -> a -> a
.forall sollu. SequenceT sollu
__4), forall a. Monoid a => a -> a
r3 (Sequence Group (Note Sollu)
taforall a. Monoid a => a -> a -> a
.Sequence Group (Note Sollu)
dinforall a. Monoid a => a -> a -> a
.forall sollu. SequenceT sollu
__4)]
        forall a. Monoid a => a -> a -> a
. forall g sollu. Sequence g sollu -> Sequence g sollu
sd forall sollu. SequenceT sollu
p5 forall a. Monoid a => a -> a -> a
. forall sollu. SequenceT sollu
p5
        forall a. Monoid a => a -> a -> a
. Sequence Group (Note Sollu)
kpforall a. Monoid a => a -> a -> a
.forall g sollu. Sequence g sollu -> Sequence g sollu
sd forall sollu. SequenceT sollu
p5 forall a. Monoid a => a -> a -> a
. Sequence Group (Note Sollu)
kpforall a. Monoid a => a -> a -> a
.forall sollu. SequenceT sollu
p5 forall a. Monoid a => a -> a -> a
. forall a. Rest a => a
__ forall a. Monoid a => a -> a -> a
. Sequence Group (Note Sollu)
kpforall a. Monoid a => a -> a -> a
.forall sollu. SequenceT sollu
p5
        forall a. Monoid a => a -> a -> a
. Sequence Group (Note Sollu)
kpnpforall a. Monoid a => a -> a -> a
.forall g sollu. Sequence g sollu -> Sequence g sollu
sd forall sollu. SequenceT sollu
p5 forall a. Monoid a => a -> a -> a
. forall sollu. SequenceT sollu -> SequenceT sollu -> SequenceT sollu
tri_ forall a. Rest a => a
__ (Sequence Group (Note Sollu)
kpnpforall a. Monoid a => a -> a -> a
.forall sollu. SequenceT sollu
p5)
    ]
    where
    mridangam :: StrokeMaps
mridangam = StrokeMap Stroke -> StrokeMaps
makeMridangam
        [ (Sequence Group (Note Sollu)
din, forall {g}. Sequence g (Note (Stroke Stroke))
od)
        , (Sequence Group (Note Sollu)
takadinna, forall {g}. Sequence g (Note (Stroke Stroke))
kforall a. Monoid a => a -> a -> a
.forall {g}. Sequence g (Note (Stroke Stroke))
oforall a. Monoid a => a -> a -> a
.Sequence Group (Note (Stroke Stroke))
onforall a. Monoid a => a -> a -> a
.forall {g}. Sequence g (Note (Stroke Stroke))
k)
        , (Sequence Group (Note Sollu)
takita, Sequence Group (Note (Stroke Stroke))
onforall a. Monoid a => a -> a -> a
.Sequence Group (Note (Stroke Stroke))
onforall a. Monoid a => a -> a -> a
.forall {g}. Sequence g (Note (Stroke Stroke))
k)
        , (Sequence Group (Note Sollu)
taka, Sequence Group (Note (Stroke Stroke))
onforall a. Monoid a => a -> a -> a
.forall {g}. Sequence g (Note (Stroke Stroke))
k)
        , (Sequence Group (Note Sollu)
ta, forall {g}. Sequence g (Note (Stroke Stroke))
k)
        ]

e_19_11_11_kandam :: Korvai
e_19_11_11_kandam :: Korvai
e_19_11_11_kandam =
    Stack => Int -> Int -> Int -> Korvai -> Korvai
date Int
2019 Int
11 Int
11 forall a b. (a -> b) -> a -> b
$ Korvai -> Korvai
ganesh forall a b. (a -> b) -> a -> b
$ Korvai -> Korvai
exercise forall a b. (a -> b) -> a -> b
$ Tala -> StrokeMaps -> Sequence Group (Note Sollu) -> Korvai
korvaiS1 Tala
adi StrokeMaps
mridangam forall a b. (a -> b) -> a -> b
$
    forall g sollu. Int -> Sequence g sollu -> Sequence g sollu
nadai Int
5 forall a b. (a -> b) -> a -> b
$ forall a. (Semigroup a, Monoid a) => [a] -> a -> a
prefixes
        [ Sequence Group (Note Sollu)
taforall a. Monoid a => a -> a -> a
.Sequence Group (Note Sollu)
takadinna, forall a. Rest a => a
__forall a. Monoid a => a -> a -> a
.Sequence Group (Note Sollu)
takadinna, forall a. Rest a => a
__forall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__forall a. Monoid a => a -> a -> a
.Sequence Group (Note Sollu)
takita
        , forall sollu. Int -> SequenceT sollu
__M Int
3forall a. Monoid a => a -> a -> a
.Sequence Group (Note Sollu)
taka, forall sollu. Int -> SequenceT sollu
__M Int
4forall a. Monoid a => a -> a -> a
.Sequence Group (Note Sollu)
ta, forall sollu. Int -> SequenceT sollu
__M Int
5
        ] Sequence Group (Note Sollu)
p5
        forall a. Monoid a => a -> a -> a
. forall sollu. SequenceT sollu -> SequenceT sollu -> SequenceT sollu
tri_ forall a. Rest a => a
__ Sequence Group (Note Sollu)
p5 forall a. Monoid a => a -> a -> a
. forall sollu. SequenceT sollu -> SequenceT sollu -> SequenceT sollu
tri_ forall a. Rest a => a
__ (Sequence Group (Note Sollu)
taforall a. Monoid a => a -> a -> a
.Sequence Group (Note Sollu)
p5) forall a. Monoid a => a -> a -> a
. forall sollu. SequenceT sollu -> SequenceT sollu -> SequenceT sollu
tri_ forall a. Rest a => a
__ (Sequence Group (Note Sollu)
takaforall a. Monoid a => a -> a -> a
.Sequence Group (Note Sollu)
p5)
    where
    p5 :: Sequence Group (Note Sollu)
p5 = forall sollu. SequenceT sollu -> SequenceT sollu
group forall a b. (a -> b) -> a -> b
$ Sequence Group (Note Sollu)
nang forall a. Monoid a => a -> a -> a
. forall g sollu. Sequence g sollu -> Sequence g sollu
su (Sequence Group (Note Sollu)
kitaforall a. Monoid a => a -> a -> a
.Sequence Group (Note Sollu)
tariforall a. Monoid a => a -> a -> a
.Sequence Group (Note Sollu)
kita)forall a. Monoid a => a -> a -> a
.Sequence Group (Note Sollu)
thom
    mridangam :: StrokeMaps
mridangam = StrokeMap Stroke -> StrokeMaps
makeMridangam
        [ (Sequence Group (Note Sollu)
ta, forall {g}. Sequence g (Note (Stroke Stroke))
k)
        , (Sequence Group (Note Sollu)
taka, forall {g}. Sequence g (Note (Stroke Stroke))
kforall a. Monoid a => a -> a -> a
.forall {g}. Sequence g (Note (Stroke Stroke))
p)
        , (Sequence Group (Note Sollu)
takita, forall {g}. Sequence g (Note (Stroke Stroke))
kforall a. Monoid a => a -> a -> a
.forall {g}. Sequence g (Note (Stroke Stroke))
pforall a. Monoid a => a -> a -> a
.forall {g}. Sequence g (Note (Stroke Stroke))
k)
        , (Sequence Group (Note Sollu)
p5, forall {g}. Sequence g (Note (Stroke Stroke))
nforall a. Monoid a => a -> a -> a
.forall {g}. Sequence g (Note (Stroke Stroke))
kforall a. Monoid a => a -> a -> a
.forall {g}. Sequence g (Note (Stroke Stroke))
tforall a. Monoid a => a -> a -> a
.forall {g}. Sequence g (Note (Stroke Stroke))
pforall a. Monoid a => a -> a -> a
.forall {g}. Sequence g (Note (Stroke Stroke))
kforall a. Monoid a => a -> a -> a
.forall {g}. Sequence g (Note (Stroke Stroke))
pforall a. Monoid a => a -> a -> a
.forall {g}. Sequence g (Note (Stroke Stroke))
tforall a. Monoid a => a -> a -> a
.forall {g}. Sequence g (Note (Stroke Stroke))
o)
        ]

-- Kandam exercises:
-- join __ (replicate 6 p5)
-- r5 (taka.__.din.na.__)
-- r5 (ta.__.ka.din.__.na.__)
-- r5 [tadin.__.tat.__.din.__, takadinna.takita, ...]