-- Copyright 2021 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

module Solkattu.Score.Solkattu2021 where
import           Prelude hiding ((.), (^), repeat)

import qualified Solkattu.Score.Solkattu2017 as Solkattu2017
import qualified Solkattu.Score.Solkattu2020 as Solkattu2020
import qualified Solkattu.Score.SolkattuMohra as SolkattuMohra
import qualified Solkattu.Tala as Tala

import           Solkattu.Dsl.Solkattu


kon_21_01_24 :: Korvai
kon_21_01_24 :: Korvai
kon_21_01_24 = Stack => Int -> Int -> Int -> Korvai -> Korvai
date Int
2021 Int
1 Int
24 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 -> Korvai
korvaiS1 Tala
Tala.misra_chapu forall a. Monoid a => a
mempty forall a b. (a -> b) -> a -> b
$ forall g sollu. Int -> Sequence g sollu -> Sequence g sollu
nadai Int
3 forall a b. (a -> b) -> a -> b
$ forall a. Monoid a => [a] -> a
mconcat forall a b. (a -> b) -> a -> b
$ forall a b. (a -> b) -> [a] -> [b]
map (forall sollu. SequenceT sollu -> SequenceT sollu
g forall b c a. (b -> c) -> (a -> b) -> a -> c
 forall a. Monoid a => a -> a
r3)
    -- reduceToR 7 1 (tanga.tanga.takita.takadinna.__)
    [ Sequence
tangaforall a. Monoid a => a -> a -> a
.Sequence
tangaforall a. Monoid a => a -> a -> a
.Sequence
takitaforall a. Monoid a => a -> a -> a
.Sequence
takadinnaforall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__
    , Sequence
tangaforall a. Monoid a => a -> a -> a
.Sequence
tangaforall a. Monoid a => a -> a -> a
.Sequence
takitaforall a. Monoid a => a -> a -> a
.Sequence
takadinna
    , Sequence
tangaforall a. Monoid a => a -> a -> a
.Sequence
tangaforall a. Monoid a => a -> a -> a
.Sequence
takitaforall a. Monoid a => a -> a -> a
.Sequence
takita
    , Sequence
tangaforall a. Monoid a => a -> a -> a
.Sequence
tangaforall a. Monoid a => a -> a -> a
.Sequence
tdgnt
    , Sequence
tangaforall a. Monoid a => a -> a -> a
.Sequence
tangaforall a. Monoid a => a -> a -> a
.Sequence
takadinna
    , Sequence
tangaforall a. Monoid a => a -> a -> a
.Sequence
tangaforall a. Monoid a => a -> a -> a
.Sequence
takita
    , Sequence
tangaforall a. Monoid a => a -> a -> a
.Sequence
tangaforall a. Monoid a => a -> a -> a
.Sequence
taka
    , Sequence
tangaforall a. Monoid a => a -> a -> a
.Sequence
tangaforall a. Monoid a => a -> a -> a
.Sequence
ta
    ]

kon_21_02_21 :: Korvai
kon_21_02_21 :: Korvai
kon_21_02_21 = Stack => Int -> Int -> Int -> Korvai -> Korvai
date Int
2021 Int
2 Int
21 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 -> Korvai
korvaiS1 Tala
Tala.kanda_chapu forall a. Monoid a => a
mempty forall a b. (a -> b) -> a -> b
$ forall g sollu. Int -> Sequence g sollu -> Sequence g sollu
nadai Int
3 forall a b. (a -> b) -> a -> b
$ forall a. Monoid a => [a] -> a
mconcat forall a b. (a -> b) -> a -> b
$ forall a b. (a -> b) -> [a] -> [b]
map (forall sollu. SequenceT sollu -> SequenceT sollu
g forall b c a. (b -> c) -> (a -> b) -> a -> c
 forall a. Monoid a => a -> a
r3)
    [ Sequence
tangaforall a. Monoid a => a -> a -> a
.Sequence
tangaforall a. Monoid a => a -> a -> a
.Sequence
takitaforall a. Monoid a => a -> a -> a
.Sequence
takadinnaforall a. Monoid a => a -> a -> a
.Sequence
dinforall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__forall a. Monoid a => a -> a -> a
.Sequence
ga
    , Sequence
tangaforall a. Monoid a => a -> a -> a
.Sequence
tangaforall a. Monoid a => a -> a -> a
.Sequence
takitaforall a. Monoid a => a -> a -> a
.Sequence
takadinnaforall a. Monoid a => a -> a -> a
.Sequence
dinforall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__
    , Sequence
tangaforall a. Monoid a => a -> a -> a
.Sequence
tangaforall a. Monoid a => a -> a -> a
.Sequence
takitaforall a. Monoid a => a -> a -> a
.Sequence
takadinnaforall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__
    , Sequence
tangaforall a. Monoid a => a -> a -> a
.Sequence
tangaforall a. Monoid a => a -> a -> a
.Sequence
takitaforall a. Monoid a => a -> a -> a
.Sequence
takadinna
    , Sequence
tangaforall a. Monoid a => a -> a -> a
.Sequence
tangaforall a. Monoid a => a -> a -> a
.Sequence
takitaforall a. Monoid a => a -> a -> a
.Sequence
takita
    , Sequence
tangaforall a. Monoid a => a -> a -> a
.Sequence
tangaforall a. Monoid a => a -> a -> a
.Sequence
tdgnt
    , Sequence
tangaforall a. Monoid a => a -> a -> a
.Sequence
tangaforall a. Monoid a => a -> a -> a
.Sequence
takadinna
    , Sequence
tangaforall a. Monoid a => a -> a -> a
.Sequence
tangaforall a. Monoid a => a -> a -> a
.Sequence
takita
    , Sequence
tangaforall a. Monoid a => a -> a -> a
.Sequence
tangaforall a. Monoid a => a -> a -> a
.Sequence
taka
    , Sequence
tangaforall a. Monoid a => a -> a -> a
.Sequence
tangaforall a. Monoid a => a -> a -> a
.Sequence
ta
    ]

kon_35_kanda, kon_35_misra :: Korvai
(Korvai
kon_35_kanda, Korvai
kon_35_misra) = (Tala -> Korvai
make Tala
Tala.kanda_chapu, Tala -> Korvai
make Tala
Tala.misra_chapu)
    where
    make :: Tala -> Korvai
make Tala
tala = Stack => Int -> Int -> Int -> Korvai -> Korvai
date Int
2021 Int
2 Int
21 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] -> Korvai
korvaiS Tala
tala 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
3)
        [ forall sollu. SequenceT sollu -> SequenceT sollu -> SequenceT sollu
tri_ Sequence
tanga (Sequence
tdktt_ forall a. Monoid a => a -> a -> a
.Sequence
kpforall a. Monoid a => a -> a -> a
.Sequence
tdktt_ forall a. Monoid a => a -> a -> a
.Sequence
kpnpforall a. Monoid a => a -> a -> a
.Sequence
tdktt_)
        , let p123 :: Sequence
p123 = Sequence
tdktt_forall a. Monoid a => a -> a -> a
.Sequence
kpforall a. Monoid a => a -> a -> a
.Sequence
tdktt_forall a. Monoid a => a -> a -> a
.Sequence
kpnpforall a. Monoid a => a -> a -> a
.Sequence
tdktt_
          in Sequence
p123forall a. Monoid a => a -> a -> a
.Sequence
tangaforall a. Monoid a => a -> a -> a
.Sequence
p123forall a. Monoid a => a -> a -> a
.Sequence
tanga forall a. Monoid a => a -> a -> a
. Sequence
kpnpforall a. Monoid a => a -> a -> a
.Sequence
tdktt_forall a. Monoid a => a -> a -> a
.Sequence
kpforall a. Monoid a => a -> a -> a
.Sequence
tdktt_forall a. Monoid a => a -> a -> a
.Sequence
tdktt_
        , forall sollu.
SequenceT sollu
-> SequenceT sollu
-> SequenceT sollu
-> SequenceT sollu
-> SequenceT sollu
trin Sequence
tanga (forall a. Monoid a => a -> a
r3 Sequence
tdktt_) (forall a. Monoid a => a -> a
r3 (Sequence
kpforall a. Monoid a => a -> a -> a
.Sequence
tdktt_)) (forall a. Monoid a => a -> a
r3 (Sequence
kpnpforall a. Monoid a => a -> a -> a
.Sequence
tdktt_))
        , forall sollu.
SequenceT sollu
-> SequenceT sollu
-> SequenceT sollu
-> SequenceT sollu
-> SequenceT sollu
trin Sequence
tanga (forall a. Monoid a => a -> a
r3 (Sequence
tdktt)) (forall a. Monoid a => a -> a
r3 (Sequence
kpforall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__forall a. Monoid a => a -> a -> a
.Sequence
tdktt))
            (forall a. Monoid a => a -> a
r3 (Sequence
kpforall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__forall a. Monoid a => a -> a -> a
.Sequence
tikuforall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__forall a. Monoid a => a -> a -> a
.Sequence
tdktt))
        ]
    tdktt_ :: Sequence
tdktt_ = forall sollu. SequenceT sollu -> SequenceT sollu
g Sequence
"tadi_ki_ta_thom_"
    tdktt :: Sequence
tdktt = forall sollu. SequenceT sollu -> SequenceT sollu
g Sequence
"tadi_ki_ta_thom"

kon_tadit_tarikitathom :: Korvai
kon_tadit_tarikitathom :: Korvai
kon_tadit_tarikitathom = Stack => Int -> Int -> Int -> Korvai -> Korvai
date Int
2021 Int
4 Int
25 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] -> Korvai
korvaiS (Int -> Tala
beats Int
10) forall a. Monoid a => a
mempty
    [ forall a. Monoid a => a -> a
r4 Sequence
tadit
    , forall g sollu. Int -> Sequence g sollu -> Sequence g sollu
nadai Int
5 forall a b. (a -> b) -> a -> b
$ forall a. Monoid a => a -> a
r5 Sequence
tadit
    , forall g sollu. Int -> Sequence g sollu -> Sequence g sollu
nadai Int
6 forall a b. (a -> b) -> a -> b
$ forall a. Monoid a => a -> a
r6 Sequence
tadit
    , forall g sollu. Int -> Sequence g sollu -> Sequence g sollu
nadai Int
7 forall a b. (a -> b) -> a -> b
$ forall a. Monoid a => a -> a
r7 Sequence
tadit
    ]
    where
    tadit :: Sequence
tadit = forall sollu. SequenceT sollu -> SequenceT sollu
g Sequence
"ta_dit_tarikitathom_"

april_tani :: Score
april_tani :: Score
april_tani = [Part Korvai] -> Score
tani
    [ forall k. Text -> Part k
Comment Text
"80 bpm"
    , forall k. Text -> Part k
Comment Text
"my solo - Solkattu2020.c_20_10_25"
    , forall k. k -> Part k
K forall a b. (a -> b) -> a -> b
$ Int -> Int -> Korvai -> Korvai
slice Int
0 (-Int
1) Korvai
Solkattu2020.c_20_10_25
    , forall k. Text -> Part k
Comment Text
"ganesh solo"
    , forall k. Text -> Part k
Comment Text
"misra koraippu - Solkattu2017.c_17_10_23"
    , forall k. k -> Part k
K Korvai
koraippu_development
    , forall k. k -> Part k
K forall a b. (a -> b) -> a -> b
$ Int -> Int -> Korvai -> Korvai
slice Int
2 Int
6 Korvai
Solkattu2017.c_17_10_23
    , forall k. Text -> Part k
Comment Text
"mohra korvai, together"
    , forall k. k -> Part k
K forall a b. (a -> b) -> a -> b
$ Int -> Korvai -> Korvai
index Int
1 Korvai
SolkattuMohra.c_mohra
    , forall k. k -> Part k
K Korvai
c_mohra_korvai
    ]

-- TODO this is awkward, what I really want is to mix in mridangam notation.
-- Try inline mridangam:
koraippu_development :: Korvai
koraippu_development :: Korvai
koraippu_development = Korvai -> Korvai
ganesh forall a b. (a -> b) -> a -> b
$ Korvai -> Korvai
koraippu forall a b. (a -> b) -> a -> b
$ Tala -> StrokeMaps -> [Sequence] -> Korvai
korvaiS Tala
adi StrokeMaps
mridangam forall a b. (a -> b) -> a -> b
$ forall a b. (a -> b) -> [a] -> [b]
map forall g sollu. Sequence g sollu -> Sequence g sollu
su
    [ Sequence
dinforall a. Monoid a => a -> a -> a
.forall sollu. SequenceT sollu
__8 forall a. Monoid a => a -> a -> a
. Sequence
p7oforall a. Monoid a => a -> a -> a
.Sequence
p7oforall a. Monoid a => a -> a -> a
.Sequence
p7 forall a. Monoid a => a -> a -> a
. Sequence
p7sforall a. Monoid a => a -> a -> a
.Sequence
p7oforall a. Monoid a => a -> a -> a
.Sequence
p7oforall a. Monoid a => a -> a -> a
.Sequence
p7forall a. Monoid a => a -> a -> a
.Sequence
takadinnaforall a. Monoid a => a -> a -> a
.Sequence
takita
    , Sequence
other
    , Sequence
dinforall a. Monoid a => a -> a -> a
.forall sollu. SequenceT sollu
__8 forall a. Monoid a => a -> a -> a
. Sequence
p7oforall a. Monoid a => a -> a -> a
.Sequence
p7oforall a. Monoid a => a -> a -> a
.Sequence
p7 forall a. Monoid a => a -> a -> a
. Sequence
takadinnaforall a. Monoid a => a -> a -> a
.Sequence
takita forall a. Monoid a => a -> a -> a
. Sequence
p7oforall a. Monoid a => a -> a -> a
.Sequence
p7o forall a. Monoid a => a -> a -> a
. Sequence
ending
    , Sequence
other
    , Sequence
dinforall a. Monoid a => a -> a -> a
.forall sollu. SequenceT sollu
__8 forall a. Monoid a => a -> a -> a
. forall a. Monoid a => a -> a
r4 Sequence
ending
    , Sequence
other
    ]
    where
    other :: Sequence
other = Sequence
dinforall a. Monoid a => a -> a -> a
.forall sollu. Int -> SequenceT sollu
__n Int
64 -- TODO some notation for "other person plays"
    p7 :: Sequence
p7 = forall sollu. SequenceT sollu -> SequenceT sollu
g forall a b. (a -> b) -> a -> b
$ Sequence
naforall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__forall a. Monoid a => a -> a -> a
.Sequence
dinforall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__forall a. Monoid a => a -> a -> a
.Sequence
naforall a. Monoid a => a -> a -> a
.Sequence
dinforall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__
    p7o :: Sequence
p7o = Tag
2forall sollu. Tag -> SequenceT sollu -> SequenceT sollu
^Sequence
p7
    p7s :: Sequence
p7s = Tag
3forall sollu. Tag -> SequenceT sollu -> SequenceT sollu
^Sequence
p7
    ending :: Sequence
ending = forall sollu. SequenceT sollu -> SequenceT sollu
g forall a b. (a -> b) -> a -> b
$ Sequence
taforall a. Monoid a => a -> a -> a
.Sequence
ditforall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__forall a. Monoid a => a -> a -> a
.Sequence
taforall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__forall a. Monoid a => a -> a -> a
.Sequence
kita forall a. Monoid a => a -> a -> a
. Sequence
takaforall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__forall a. Monoid a => a -> a -> a
.Sequence
dinforall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__forall a. Monoid a => a -> a -> a
.Sequence
tatforall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__
    mridangam :: StrokeMaps
mridangam = StrokeMap Stroke -> StrokeMaps
makeMridangam
        [ (Sequence
p7,  Sequence Group (Note (Stroke Stroke))
onforall 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))
dforall 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))
nforall a. Monoid a => a -> a -> a
.forall {g}. Sequence g (Note (Stroke Stroke))
dforall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__)
        , (Sequence
p7o, Sequence Group (Note (Stroke Stroke))
onforall 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))
odforall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__forall 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))
odforall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__)
        , (Sequence
p7s,  forall {g}. Sequence g (Note (Stroke Stroke))
nforall 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))
odforall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__forall 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))
odforall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__)
        , (Sequence
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
din, forall {g}. Sequence g (Note (Stroke Stroke))
od)
        , (Sequence
ending, 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 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))
tforall a. Monoid a => a -> a -> a
.forall {g}. Sequence g (Note (Stroke Stroke))
k 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 a. Rest a => a
__forall 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 a. Rest a => a
__)
        ]

c_mohra_korvai :: Korvai
c_mohra_korvai :: Korvai
c_mohra_korvai = Korvai -> Korvai
ganesh forall a b. (a -> b) -> a -> b
$ Korvai -> Korvai
mohraKorvai forall a b. (a -> b) -> a -> b
$ Tala -> StrokeMaps -> Sequence -> Korvai
korvaiS1 Tala
adi StrokeMaps
mridangam forall a b. (a -> b) -> a -> b
$ forall a. Monoid a => [a] -> a
mconcat
    [ forall sollu. SequenceT sollu -> SequenceT sollu
g forall a b. (a -> b) -> a -> b
$ Sequence
taforall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__forall a. Monoid a => a -> a -> a
.Sequence
ditforall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__forall a. Monoid a => a -> a -> a
.Sequence
taforall a. Monoid a => a -> a -> a
.Sequence
dinforall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__forall a. Monoid a => a -> a -> a
.Sequence
taforall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__forall a. Monoid a => a -> a -> a
.Sequence
dinforall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__forall a. Monoid a => a -> a -> a
.forall sollu. SequenceT sollu
p5forall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__
    , forall sollu. SequenceT sollu -> SequenceT sollu
g forall a b. (a -> b) -> a -> b
$       Sequence
dinforall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__forall a. Monoid a => a -> a -> a
.Sequence
taforall a. Monoid a => a -> a -> a
.Sequence
dinforall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__forall a. Monoid a => a -> a -> a
.Sequence
taforall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__forall a. Monoid a => a -> a -> a
.Sequence
dinforall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__forall a. Monoid a => a -> a -> a
.forall sollu. SequenceT sollu
p5forall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__
    , forall g sollu. Int -> Sequence g sollu -> Sequence g sollu
nadai Int
6 forall a b. (a -> b) -> a -> b
$
        forall a. Monoid a => a -> a
r2 (forall sollu. SequenceT sollu -> SequenceT sollu
g (Sequence
taforall a. Monoid a => a -> a -> a
.Sequence
dinforall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__forall a. Monoid a => a -> a -> a
.Sequence
taforall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__forall a. Monoid a => a -> a -> a
.Sequence
dinforall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__forall a. Monoid a => a -> a -> a
.forall sollu. SequenceT sollu
p5))
        forall a. Monoid a => a -> a -> a
. forall sollu. SequenceT sollu -> SequenceT sollu
g (Sequence
taforall a. Monoid a => a -> a -> a
.Sequence
dinforall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__forall a. Monoid a => a -> a -> a
.Sequence
taforall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__forall a. Monoid a => a -> a -> a
.Sequence
dinforall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__)
        forall a. Monoid a => a -> a -> a
. forall sollu. SequenceT sollu -> SequenceT sollu -> SequenceT sollu
tri_ forall a. Rest a => a
__ (forall sollu. SequenceT sollu -> SequenceT sollu
g forall sollu. SequenceT sollu
p5)
    ]
    where
    mridangam :: StrokeMaps
mridangam = StrokeMap Stroke -> StrokeMaps
makeMridangam
        [ (Sequence
ta, forall {g}. Sequence g (Note (Stroke Stroke))
k)
        , (Sequence
dit, forall {g}. Sequence g (Note (Stroke Stroke))
t)
        , (Sequence
din, forall {g}. Sequence g (Note (Stroke Stroke))
od)
        ]

e_21_04_25 :: Korvai
e_21_04_25 :: Korvai
e_21_04_25 = Stack => Int -> Int -> Int -> Korvai -> Korvai
date Int
2021 Int
4 Int
25 forall a b. (a -> b) -> a -> b
$ Korvai -> Korvai
ganesh forall a b. (a -> b) -> a -> b
$ Tala -> StrokeMaps -> [Sequence] -> Korvai
korvaiS Tala
adi StrokeMaps
mridangam
    [ Sequence
purvangam -- 7*24 = 5*8 + 7*8 + 9*8
        forall a. Monoid a => a -> a -> a
. forall sollu. SequenceT sollu -> SequenceT sollu
spread32111 Sequence
tdgnt forall a. Monoid a => a -> a -> a
. forall sollu. SequenceT sollu -> SequenceT sollu
spread32111 (Sequence
takaforall a. Monoid a => a -> a -> a
.Sequence
tdgnt)
        forall a. Monoid a => a -> a -> a
. forall sollu. SequenceT sollu -> SequenceT sollu
spread32111 (Sequence
takaforall a. Monoid a => a -> a -> a
.Sequence
tikuforall a. Monoid a => a -> a -> a
.Sequence
tdgnt)
    , Sequence
purvangam -- 7*24 = 28 17 7*1 + 28 14 7*2 + 28 14 7*3
        forall a. Monoid a => a -> a -> a
. forall g sollu. Sequence g sollu -> Sequence g sollu
sd Sequence
tdgnt3 forall a. Monoid a => a -> a -> a
. Sequence
tdgnt3 forall a. Monoid a => a -> a -> a
. Sequence
t7
        forall a. Monoid a => a -> a -> a
. forall g sollu. Sequence g sollu -> Sequence g sollu
sd Sequence
tdgnt3 forall a. Monoid a => a -> a -> a
. Sequence
tdgnt3 forall a. Monoid a => a -> a -> a
. forall a. Monoid a => a -> a
r2 Sequence
t7
        forall a. Monoid a => a -> a -> a
. forall g sollu. Sequence g sollu -> Sequence g sollu
sd Sequence
tdgnt3 forall a. Monoid a => a -> a -> a
. Sequence
tdgnt3 forall a. Monoid a => a -> a -> a
. forall a. Monoid a => a -> a
r3 Sequence
t7
    , Sequence
purvangam -- 7*24 = {6..2}111 * 7 + 7 in between = 21 + 2 + 1 = 24
        forall a. Monoid a => a -> a -> a
. forall sollu.
SequenceT sollu -> [SequenceT sollu] -> SequenceT sollu
join Sequence
ta
        [ Sequence
taforall a. Monoid a => a -> a -> a
.forall sollu. Int -> SequenceT sollu
__n Int
12forall a. Monoid a => a -> a -> a
.Sequence
dinforall a. Monoid a => a -> a -> a
.forall sollu. Int -> SequenceT sollu
__n Int
12 forall a. Monoid a => a -> a -> a
. forall a. Monoid a => a -> a
r3 (forall sollu. SequenceT sollu -> SequenceT sollu
g forall a b. (a -> b) -> a -> b
$ Sequence
taforall a. Monoid a => a -> a -> a
.Sequence
namforall a. Monoid a => a -> a -> a
.forall g sollu. Sequence g sollu -> Sequence g sollu
su Sequence
"kitatarikita"forall a. Monoid a => a -> a -> a
.Sequence
thom) -- 6
        , Sequence
taforall a. Monoid a => a -> a -> a
.forall sollu. Int -> SequenceT sollu
__n Int
10forall a. Monoid a => a -> a -> a
.Sequence
dinforall a. Monoid a => a -> a -> a
.forall sollu. Int -> SequenceT sollu
__n Int
10 forall a. Monoid a => a -> a -> a
. forall a. Monoid a => a -> a
r3 (forall sollu. SequenceT sollu -> SequenceT sollu
g forall a b. (a -> b) -> a -> b
$ Sequence
namforall a. Monoid a => a -> a -> a
.forall g sollu. Sequence g sollu -> Sequence g sollu
su Sequence
"kitatarikita"forall a. Monoid a => a -> a -> a
.Sequence
thom) -- 5
        , Sequence
taforall a. Monoid a => a -> a -> a
.forall sollu. SequenceT sollu
__8   forall a. Monoid a => a -> a -> a
.Sequence
dinforall a. Monoid a => a -> a -> a
.forall sollu. SequenceT sollu
__8    forall a. Monoid a => a -> a -> a
. forall a. Monoid a => a -> a
r3 (forall sollu. SequenceT sollu -> SequenceT sollu
g forall a b. (a -> b) -> a -> b
$ forall g sollu. Sequence g sollu -> Sequence g sollu
su Sequence
"kitatarikita"forall a. Monoid a => a -> a -> a
.Sequence
thom) -- 4
        , Sequence
taforall a. Monoid a => a -> a -> a
.forall sollu. SequenceT sollu
__6   forall a. Monoid a => a -> a -> a
.Sequence
dinforall a. Monoid a => a -> a -> a
.forall sollu. SequenceT sollu
__6    forall a. Monoid a => a -> a -> a
. forall a. Monoid a => a -> a
r3 (forall sollu. SequenceT sollu -> SequenceT sollu
g forall a b. (a -> b) -> a -> b
$ forall g sollu. Sequence g sollu -> Sequence g sollu
su Sequence
"tarikita"forall a. Monoid a => a -> a -> a
.Sequence
thom) -- 3
        , Sequence
taforall a. Monoid a => a -> a -> a
.forall sollu. SequenceT sollu
__4   forall a. Monoid a => a -> a -> a
.Sequence
dinforall a. Monoid a => a -> a -> a
.forall sollu. SequenceT sollu
__4    forall a. Monoid a => a -> a -> a
. forall a. Monoid a => a -> a
r3 (forall sollu. SequenceT sollu -> SequenceT sollu
g forall a b. (a -> b) -> a -> b
$ forall g sollu. Sequence g sollu -> Sequence g sollu
su Sequence
kitaforall a. Monoid a => a -> a -> a
.Sequence
thom) -- 2
        ] 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 -> SequenceT sollu
tri_ forall a. Rest a => a
__ forall sollu. SequenceT sollu
p7
    ]
    where
    purvangam :: Sequence
purvangam = forall g sollu. Sequence g sollu -> Sequence g sollu
sd forall a b. (a -> b) -> a -> b
$ forall sollu. SequenceT sollu -> SequenceT sollu -> SequenceT sollu
tri_ (Sequence
dinforall a. Monoid a => a -> a -> a
.forall sollu. SequenceT sollu
__3) (forall sollu. SequenceT sollu -> SequenceT sollu
g (Sequence
taforall a. Monoid a => a -> a -> a
.forall sollu. SequenceT sollu
__3forall a. Monoid a => a -> a -> a
.Sequence
taforall a. Monoid a => a -> a -> a
.Sequence
takadinna))
        forall a. Monoid a => a -> a -> a
. forall sollu.
(Stack, Pretty sollu) =>
SequenceT sollu -> SequenceT sollu -> SequenceT sollu
sandi (Sequence
taforall a. Monoid a => a -> a -> a
.Sequence
takadinna) (forall sollu. SequenceT sollu -> SequenceT sollu -> SequenceT sollu
tri_ (Sequence
dinforall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__) (forall sollu. SequenceT sollu -> SequenceT sollu
g (Sequence
taforall a. Monoid a => a -> a -> a
.Sequence
takadinna)))
    spread32111 :: SequenceT sollu -> SequenceT sollu
spread32111 SequenceT sollu
seq = forall sollu. SequenceT sollu -> SequenceT sollu
g (forall sollu. Int -> SequenceT sollu -> SequenceT sollu
spread Int
3 SequenceT sollu
seq) forall a. Monoid a => a -> a -> a
. forall sollu. SequenceT sollu -> SequenceT sollu
g (forall sollu. Int -> SequenceT sollu -> SequenceT sollu
spread Int
2 SequenceT sollu
seq) forall a. Monoid a => a -> a -> a
. forall a. Monoid a => a -> a
r3 (forall sollu. SequenceT sollu -> SequenceT sollu
g SequenceT sollu
seq)
    tdgnt3 :: Sequence
tdgnt3 = forall sollu. SequenceT sollu -> SequenceT sollu
g forall a b. (a -> b) -> a -> b
$ Sequence
taforall a. Monoid a => a -> a -> a
.forall sollu. SequenceT sollu
__3forall a. Monoid a => a -> a -> a
.Sequence
dinforall a. Monoid a => a -> a -> a
.forall sollu. SequenceT sollu
__3forall a. Monoid a => a -> a -> a
.Sequence
ginforall a. Monoid a => a -> a -> a
.forall sollu. SequenceT sollu
__3forall a. Monoid a => a -> a -> a
.Sequence
naforall a. Monoid a => a -> a -> a
.forall sollu. SequenceT sollu
__3forall a. Monoid a => a -> a -> a
.Sequence
thomforall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__
    t7 :: Sequence
t7 = forall sollu. SequenceT sollu -> SequenceT sollu
g forall a b. (a -> b) -> a -> b
$ Sequence
tatforall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__forall a. Monoid a => a -> a -> a
.Sequence
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
tarikitaforall a. Monoid a => a -> a -> a
.Sequence
thom
    mridangam :: StrokeMaps
mridangam = StrokeMap Stroke -> StrokeMaps
makeMridangam
        [ (Sequence
din, forall {g}. Sequence g (Note (Stroke Stroke))
od)
        , (Sequence
ta, forall {g}. Sequence g (Note (Stroke Stroke))
k)
        , (Sequence
taka, forall {g}. Sequence g (Note (Stroke Stroke))
kforall a. Monoid a => a -> a -> a
.forall {g}. Sequence g (Note (Stroke Stroke))
p)
        , (Sequence
tiku, forall {g}. Sequence g (Note (Stroke Stroke))
nforall a. Monoid a => a -> a -> a
.forall {g}. Sequence g (Note (Stroke Stroke))
p)
        , (Sequence
t7, Sequence Group (Note (Stroke Stroke))
"k_t_ktkto")
        , (Sequence
taforall a. Monoid a => a -> a -> a
.Sequence
nam, forall {g}. Sequence g (Note (Stroke Stroke))
pforall a. Monoid a => a -> a -> a
.forall {g}. Sequence g (Note (Stroke Stroke))
n)
        , (Sequence
nam, forall {g}. Sequence g (Note (Stroke Stroke))
n)
        , (Sequence
"kitatarikita"forall a. Monoid a => a -> a -> a
.Sequence
thom, Sequence Group (Note (Stroke Stroke))
"ktpkpto")
        , (Sequence
"tarikita"forall a. Monoid a => a -> a -> a
.Sequence
thom, Sequence Group (Note (Stroke Stroke))
"ktkto")
        , (Sequence
kitaforall a. Monoid a => a -> a -> a
.Sequence
thom, Sequence Group (Note (Stroke Stroke))
"kto")
        ]