-- Copyright 2016 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 #-}
-- | Korvais expressed in "Solkattu.Dsl".
module Solkattu.Score.Solkattu2013 where
import Prelude hiding ((.), (^), repeat)

import qualified Util.Lists as Lists
import qualified Solkattu.Instrument.KendangTunggal as KendangTunggal
import qualified Solkattu.Instrument.Mridangam as Mridangam
import qualified Solkattu.Korvai as Korvai

import Solkattu.Dsl.Solkattu


-- * chatusra nadai

c_13_07_23 :: Korvai
c_13_07_23 :: Korvai
c_13_07_23 = Stack => Int -> Int -> Int -> Korvai -> Korvai
date Int
2013 Int
7 Int
23 forall a b. (a -> b) -> a -> b
$ Korvai -> Korvai
ganesh forall a b. (a -> b) -> a -> b
$ Tala -> StrokeMaps -> SequenceT Sollu -> Korvai
korvaiS1 Tala
adi StrokeMaps
mridangam forall a b. (a -> b) -> a -> b
$
    forall sollu.
SequenceT sollu
-> SequenceT sollu
-> SequenceT sollu
-> SequenceT sollu
-> SequenceT sollu
trin SequenceT Sollu
tat_din__ (forall sollu. SequenceT sollu -> SequenceT sollu
tri forall sollu. SequenceT sollu
p5) (forall sollu. SequenceT sollu -> SequenceT sollu
tri forall sollu. SequenceT sollu
p6) (forall sollu. SequenceT sollu -> SequenceT sollu
tri forall sollu. SequenceT sollu
p7)
    where
    tat_din__ :: SequenceT Sollu
tat_din__ = SequenceT Sollu
tatforall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__forall a. Monoid a => a -> a -> a
.SequenceT Sollu
dinforall a. Monoid a => a -> a -> a
.forall sollu. SequenceT sollu
__3
    mridangam :: StrokeMaps
mridangam = StrokeMap Stroke -> StrokeMaps
makeMridangam [(SequenceT Sollu
tat_din__, 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))
odforall a. Monoid a => a -> a -> a
.forall sollu. SequenceT sollu
__3)]

c_13_08_14 :: Korvai
c_13_08_14 :: Korvai
c_13_08_14 = Korvai -> Korvai
ganesh forall a b. (a -> b) -> a -> b
$ Stack => Int -> Int -> Int -> Korvai -> Korvai
date Int
2013 Int
8 Int
14 forall a b. (a -> b) -> a -> b
$ Tala -> StrokeMaps -> [SequenceT Sollu] -> Korvai
korvaiS Tala
adi (StrokeMaps
mridangam forall a. Semigroup a => a -> a -> a
<> StrokeMaps
kendang)
    [     forall sollu. SequenceT sollu -> SequenceT sollu
group (Int -> Int -> SequenceT Sollu
theme Int
2 Int
1) forall a. Monoid a => a -> a -> a
. forall sollu. SequenceT sollu
p5
      forall a. Monoid a => a -> a -> a
. forall sollu.
(Stack, Pretty sollu) =>
FMatra -> SequenceT sollu -> SequenceT sollu
dropM FMatra
2 (Int -> Int -> SequenceT Sollu
theme Int
2 Int
2) forall a. Monoid a => a -> a -> a
. forall sollu. SequenceT sollu
p6 forall a. Monoid a => a -> a -> a
. forall sollu. SequenceT sollu
p6
      forall a. Monoid a => a -> a -> a
. forall sollu.
(Stack, Pretty sollu) =>
FMatra -> SequenceT sollu -> SequenceT sollu
dropM FMatra
4 (Int -> Int -> SequenceT Sollu
theme Int
2 Int
3) forall a. Monoid a => a -> a -> a
. forall sollu. SequenceT sollu -> SequenceT sollu
tri forall sollu. SequenceT sollu
p7 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
p5

    , let ta_din__ :: SequenceT Sollu
ta_din__ = SequenceT Sollu
taforall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__forall a. Monoid a => a -> a -> a
.SequenceT 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
__ in
          forall sollu. SequenceT sollu -> SequenceT sollu
group (Int -> Int -> SequenceT Sollu
theme Int
3 Int
1) forall a. Monoid a => a -> a -> a
. forall sollu. SequenceT sollu
p5 forall a. Monoid a => a -> a -> a
. SequenceT Sollu
ta_din__
      forall a. Monoid a => a -> a -> a
. forall sollu.
(Stack, Pretty sollu) =>
FMatra -> SequenceT sollu -> SequenceT sollu
dropM FMatra
3 (Int -> Int -> SequenceT Sollu
theme Int
3 Int
2) forall a. Monoid a => a -> a -> a
. forall sollu. SequenceT sollu
p6 forall a. Monoid a => a -> a -> a
. forall sollu. SequenceT sollu
p6 forall a. Monoid a => a -> a -> a
. SequenceT Sollu
ta_din__
      forall a. Monoid a => a -> a -> a
. forall sollu.
(Stack, Pretty sollu) =>
FMatra -> SequenceT sollu -> SequenceT sollu
dropM FMatra
6 (Int -> Int -> SequenceT Sollu
theme Int
3 Int
3) forall a. Monoid a => a -> a -> a
. forall sollu.
SequenceT sollu
-> SequenceT sollu
-> SequenceT sollu
-> SequenceT sollu
-> SequenceT sollu
trin SequenceT Sollu
ta_din__ (forall sollu. SequenceT sollu -> SequenceT sollu
tri forall sollu. SequenceT sollu
p7) (forall sollu. SequenceT sollu -> SequenceT sollu
tri forall sollu. SequenceT sollu
p6) (forall sollu. SequenceT sollu -> SequenceT sollu
tri forall sollu. SequenceT sollu
p5)

    ,     forall sollu. SequenceT sollu -> SequenceT sollu
group (Int -> Int -> SequenceT Sollu
theme Int
4 Int
1) forall a. Monoid a => a -> a -> a
. SequenceT Sollu
pat7 forall a. Monoid a => a -> a -> a
. SequenceT Sollu
tamforall a. Monoid a => a -> a -> a
.forall sollu. SequenceT sollu
__4
      forall a. Monoid a => a -> a -> a
. forall sollu.
(Stack, Pretty sollu) =>
FMatra -> SequenceT sollu -> SequenceT sollu
dropM FMatra
4 (Int -> Int -> SequenceT Sollu
theme Int
4 Int
2) forall a. Monoid a => a -> a -> a
. forall a. Monoid a => a -> a
r2 SequenceT Sollu
pat8 forall a. Monoid a => a -> a -> a
. SequenceT Sollu
tamforall a. Monoid a => a -> a -> a
.forall sollu. SequenceT sollu
__4
      forall a. Monoid a => a -> a -> a
. forall sollu.
(Stack, Pretty sollu) =>
FMatra -> SequenceT sollu -> SequenceT sollu
dropM FMatra
8 (Int -> Int -> SequenceT Sollu
theme Int
4 Int
3)
        forall a. Monoid a => a -> a -> a
. forall sollu.
SequenceT sollu
-> SequenceT sollu
-> SequenceT sollu
-> SequenceT sollu
-> SequenceT sollu
trin (SequenceT Sollu
dheem forall a. Monoid a => a -> a -> a
. forall sollu. SequenceT sollu
__4) (forall sollu. SequenceT sollu -> SequenceT sollu
tri SequenceT Sollu
pat9) (forall sollu. SequenceT sollu -> SequenceT sollu
tri SequenceT Sollu
pat8) (forall sollu. SequenceT sollu -> SequenceT sollu
tri SequenceT Sollu
pat7)
    ]
    where
    theme :: Int -> Int -> SequenceT Sollu
theme Int
gap1 Int
gap2 = SequenceT Sollu
ta forall a. Monoid a => a -> a -> a
. forall sollu. Int -> SequenceT sollu
__n Int
gap1 forall a. Monoid a => a -> a -> a
. SequenceT Sollu
dit forall a. Monoid a => a -> a -> a
. forall sollu. Int -> SequenceT sollu
__n Int
gap1 forall a. Monoid a => a -> a -> a
. SequenceT Sollu
takadinnaforall a. Monoid a => a -> a -> a
.SequenceT Sollu
din
        forall a. Monoid a => a -> a -> a
. forall sollu. SequenceT sollu -> SequenceT sollu
tri (SequenceT Sollu
ta forall a. Monoid a => a -> a -> a
. forall sollu. Int -> SequenceT sollu
__n Int
gap2 forall a. Monoid a => a -> a -> a
. SequenceT Sollu
din forall a. Monoid a => a -> a -> a
. forall sollu. Int -> SequenceT sollu
__n Int
gap1)
    mridangam :: StrokeMaps
mridangam = StrokeMap Stroke -> StrokeMaps
makeMridangam
        [ (SequenceT Sollu
taforall a. Monoid a => a -> a -> a
.SequenceT Sollu
dit, forall {g}. Sequence g (Note (Stroke Stroke))
kforall a. Monoid a => a -> a -> a
.forall {g}. Sequence g (Note (Stroke Stroke))
t)
        , (SequenceT Sollu
takadinnaforall a. Monoid a => a -> a -> a
.SequenceT Sollu
din, 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))
o)
        , (SequenceT Sollu
taforall a. Monoid a => a -> a -> a
.SequenceT Sollu
din, forall {g}. Sequence g (Note (Stroke Stroke))
kforall a. Monoid a => a -> a -> a
.forall {g}. Sequence g (Note (Stroke Stroke))
od)
        -- for pat7 -- pat9
        , (SequenceT Sollu
taka, forall {g}. Sequence g (Note (Stroke Stroke))
kforall a. Monoid a => a -> a -> a
.forall {g}. Sequence g (Note (Stroke Stroke))
p)
        , (SequenceT Sollu
tam, forall {g}. Sequence g (Note (Stroke Stroke))
u)
        , (SequenceT Sollu
dheem, forall {g}. Sequence g (Note (Stroke Stroke))
i)
        ]
    kendang :: StrokeMaps
kendang = StrokeMap Stroke -> StrokeMaps
makeKendang1
        [ (SequenceT Sollu
taforall a. Monoid a => a -> a -> a
.SequenceT Sollu
dit, forall {g}. Sequence g (Note (Stroke Stroke))
pforall a. Monoid a => a -> a -> a
.forall {g}. Sequence g (Note (Stroke Stroke))
t)
        , (SequenceT Sollu
takadinnaforall a. Monoid a => a -> a -> a
.SequenceT Sollu
din, forall {g}. Sequence g (Note (Stroke Stroke))
pforall a. Monoid a => a -> a -> a
.forall {g}. Sequence g (Note (Stroke Stroke))
aforall 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))
pforall a. Monoid a => a -> a -> a
.forall {g}. Sequence g (Note (Stroke Stroke))
a)
        , (SequenceT Sollu
taforall a. Monoid a => a -> a -> a
.SequenceT Sollu
din, forall {g}. Sequence g (Note (Stroke Stroke))
oforall a. Monoid a => a -> a -> a
.forall {g}. Sequence g (Note (Stroke Stroke))
a)
        -- for pat7 -- pat9
        , (SequenceT Sollu
taka, forall {g}. Sequence g (Note (Stroke Stroke))
pforall a. Monoid a => a -> a -> a
.forall {g}. Sequence g (Note (Stroke Stroke))
k)
        , (SequenceT Sollu
tam, forall {g}. Sequence g (Note (Stroke Stroke))
a)
        , (SequenceT Sollu
dheem, forall {g}. Sequence g (Note (Stroke Stroke))
a)
        ] where KendangTunggal.Strokes {Sequence g (Note (Stroke Stroke))
a :: forall a. Strokes a -> a
o :: forall a. Strokes a -> a
k :: forall a. Strokes a -> a
å :: forall a. Strokes a -> a
u :: forall a. Strokes a -> a
t :: forall a. Strokes a -> a
p :: forall a. Strokes a -> a
pk :: forall a. Strokes a -> a
å :: Sequence g (Note (Stroke Stroke))
u :: Sequence g (Note (Stroke Stroke))
pk :: Sequence g (Note (Stroke Stroke))
k :: Sequence g (Note (Stroke Stroke))
o :: Sequence g (Note (Stroke Stroke))
a :: Sequence g (Note (Stroke Stroke))
t :: Sequence g (Note (Stroke Stroke))
p :: Sequence g (Note (Stroke Stroke))
..} = forall g. Strokes (Sequence g (Note (Stroke Stroke)))
KendangTunggal.notes
    pat7 :: SequenceT Sollu
pat7 = SequenceT Sollu
takaforall a. Monoid a => a -> a -> a
.forall sollu. SequenceT sollu
p5
    pat8 :: SequenceT Sollu
pat8 = SequenceT Sollu
takaforall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__forall a. Monoid a => a -> a -> a
.forall sollu. SequenceT sollu
p5
    pat9 :: SequenceT Sollu
pat9 = SequenceT Sollu
taforall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__forall a. Monoid a => a -> a -> a
.SequenceT Sollu
kaforall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__forall a. Monoid a => a -> a -> a
.forall sollu. SequenceT sollu
p5

c_yt1 :: Korvai
c_yt1 :: Korvai
c_yt1 = Text -> Korvai -> Korvai
source Text
"youtube" forall a b. (a -> b) -> a -> b
$ Tala -> StrokeMaps -> SequenceT Sollu -> Korvai
korvaiS1 Tala
adi StrokeMaps
mridangam forall a b. (a -> b) -> a -> b
$
    -- TODO ... `replace` (tat.__.tam.__4) (taka.tam.__4)
    forall sollu.
(Stack, Pretty sollu) =>
FMatra -> FMatra -> SequenceT sollu -> SequenceT sollu
reduceTo FMatra
4 FMatra
2 SequenceT Sollu
theme forall a. Monoid a => a -> a -> a
. forall sollu. SequenceT sollu -> SequenceT sollu -> SequenceT sollu
tri_ (SequenceT Sollu
tamforall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__) (forall sollu. SequenceT sollu -> SequenceT sollu
tri forall sollu. SequenceT sollu
p6)
    where
    theme :: SequenceT Sollu
theme = SequenceT Sollu
tatforall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__forall a. Monoid a => a -> a -> a
.SequenceT Sollu
ditforall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__forall a. Monoid a => a -> a -> a
.SequenceT Sollu
takadinnaforall a. Monoid a => a -> a -> a
.SequenceT Sollu
dinforall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__forall a. Monoid a => a -> a -> a
.SequenceT Sollu
tatforall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__forall a. Monoid a => a -> a -> a
.SequenceT Sollu
tamforall a. Monoid a => a -> a -> a
.forall sollu. SequenceT sollu
__4
    mridangam :: StrokeMaps
mridangam = StrokeMap Stroke -> StrokeMaps
makeMridangam
        [ (SequenceT Sollu
theme, 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))
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
.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))
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))
odforall a. Monoid a => a -> a -> a
.forall sollu. SequenceT sollu
__4)
        , (SequenceT Sollu
tam, forall {g}. Sequence g (Note (Stroke Stroke))
u)
        , (Tag
midforall sollu. Tag -> SequenceT sollu -> SequenceT sollu
^SequenceT Sollu
tam, forall {g}. Sequence g (Note (Stroke Stroke))
i)
        ]

c_13_10_29 :: Korvai
c_13_10_29 :: Korvai
c_13_10_29 = Stack => Int -> Int -> Int -> Korvai -> Korvai
date Int
2013 Int
10 Int
29 forall a b. (a -> b) -> a -> b
$ Korvai -> Korvai
ganesh forall a b. (a -> b) -> a -> b
$ Tala -> StrokeMaps -> [SequenceT Sollu] -> Korvai
korvaiS Tala
adi StrokeMaps
mridangam
    [ SequenceT Sollu
sequence
    , forall g sollu. Int -> Sequence g sollu -> Sequence g sollu
nadai Int
6 SequenceT Sollu
sequence
    ]
    where
    sequence :: SequenceT Sollu
sequence = forall sollu.
Pretty sollu =>
FMatra -> SequenceT sollu -> SequenceT sollu -> SequenceT sollu
reduce3 FMatra
2 forall a. Monoid a => a
ø (SequenceT Sollu
tatforall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__forall a. Monoid a => a -> a -> a
.SequenceT Sollu
ditforall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__forall a. Monoid a => a -> a -> a
.SequenceT Sollu
takadinnaforall a. Monoid a => a -> a -> a
.SequenceT Sollu
dheemforall a. Monoid a => a -> a -> a
.forall sollu. SequenceT sollu
__4)
        forall a. Monoid a => a -> a -> a
. forall sollu. SequenceT sollu -> SequenceT sollu -> SequenceT sollu
tri_ (SequenceT Sollu
tamforall a. Monoid a => a -> a -> a
.forall sollu. SequenceT sollu
__6) (forall sollu. SequenceT sollu
p6forall a. Monoid a => a -> a -> a
.forall sollu. SequenceT sollu
p6forall a. Monoid a => a -> a -> a
.forall sollu. SequenceT sollu
p6)
    mridangam :: StrokeMaps
mridangam = StrokeMap Stroke -> StrokeMaps
makeMridangam
        [ (SequenceT Sollu
tatforall a. Monoid a => a -> a -> a
.SequenceT Sollu
dit, forall {g}. Sequence g (Note (Stroke Stroke))
kforall a. Monoid a => a -> a -> a
.forall {g}. Sequence g (Note (Stroke Stroke))
t)
        , (SequenceT Sollu
dheem, forall {g}. Sequence g (Note (Stroke Stroke))
od)
        , (SequenceT Sollu
tam, forall {g}. Sequence g (Note (Stroke Stroke))
u)
        ]

c_13_11_05 :: Korvai
c_13_11_05 :: Korvai
c_13_11_05 = Stack => Int -> Int -> Int -> Korvai -> Korvai
date Int
2013 Int
11 Int
5 forall a b. (a -> b) -> a -> b
$ Korvai -> Korvai
ganesh forall a b. (a -> b) -> a -> b
$ Tala -> StrokeMaps -> SequenceT Sollu -> Korvai
korvaiS1 Tala
adi StrokeMaps
mridangam forall a b. (a -> b) -> a -> b
$
    forall sollu. SequenceT sollu -> SequenceT sollu -> SequenceT sollu
tri_ (SequenceT Sollu
tamforall a. Monoid a => a -> a -> a
.forall sollu. SequenceT sollu
__4) forall sollu. SequenceT sollu
theme
    forall a. Monoid a => a -> a -> a
. forall sollu. SequenceT sollu
theme forall a. Monoid a => a -> a -> a
. SequenceT Sollu
tamforall a. Monoid a => a -> a -> a
.forall sollu. SequenceT sollu
__4 forall a. Monoid a => a -> a -> a
. forall sollu. SequenceT sollu
theme forall a. Monoid a => a -> a -> a
. SequenceT Sollu
tamforall a. Monoid a => a -> a -> a
.forall sollu. SequenceT sollu
__3 forall a. Monoid a => a -> a -> a
. forall g sollu. Sequence g sollu -> Sequence g sollu
su forall sollu. SequenceT sollu
p6forall a. Monoid a => a -> a -> a
.SequenceT Sollu
tamforall a. Monoid a => a -> a -> a
.forall sollu. SequenceT sollu
__3 forall a. Monoid a => a -> a -> a
. forall g sollu. Sequence g sollu -> Sequence g sollu
su forall sollu. SequenceT sollu
p6
    where
    theme :: Sequence Group (Note sollu)
theme = forall g sollu. Sequence g sollu -> Sequence g sollu
su forall a b. (a -> b) -> a -> b
$ forall sollu. SequenceT sollu
p5forall a. Monoid a => a -> a -> a
.forall sollu. SequenceT sollu
p5forall a. Monoid a => a -> a -> a
.forall sollu. SequenceT sollu
p6
    mridangam :: StrokeMaps
mridangam = StrokeMap Stroke -> StrokeMaps
makeMridangam [(SequenceT Sollu
tam, forall {g}. Sequence g (Note (Stroke Stroke))
u)]

c_13_11_12 :: Korvai
c_13_11_12 :: Korvai
c_13_11_12 = Stack => Int -> Int -> Int -> Korvai -> Korvai
date Int
2013 Int
11 Int
12 forall a b. (a -> b) -> a -> b
$ Korvai -> Korvai
ganesh forall a b. (a -> b) -> a -> b
$ Tala -> StrokeMaps -> [SequenceT Sollu] -> Korvai
korvaiS Tala
adi StrokeMaps
mridangam
    [ SequenceT Sollu
sequence, forall g sollu. Int -> Sequence g sollu -> Sequence g sollu
nadai Int
6 SequenceT Sollu
sequence
    ]
    where
    sequence :: SequenceT Sollu
sequence =
        SequenceT Sollu
theme forall a. Monoid a => a -> a -> a
. forall sollu.
(Stack, Pretty sollu) =>
FMatra -> SequenceT sollu -> SequenceT sollu
dropM FMatra
2 SequenceT Sollu
theme forall a. Monoid a => a -> a -> a
. SequenceT Sollu
takaforall a. Monoid a => a -> a -> a
.SequenceT Sollu
dheemforall a. Monoid a => a -> a -> a
.forall sollu. SequenceT sollu
__4 forall a. Monoid a => a -> a -> a
. forall sollu.
(Stack, Pretty sollu) =>
FMatra -> SequenceT sollu -> SequenceT sollu
dropM FMatra
4 SequenceT Sollu
theme
            forall a. Monoid a => a -> a -> a
. forall a. Monoid a => a -> a
r2 (SequenceT Sollu
takaforall a. Monoid a => a -> a -> a
.SequenceT Sollu
dheemforall a. Monoid a => a -> a -> a
.forall sollu. SequenceT sollu
__4)
            forall a. Monoid a => a -> a -> a
. forall sollu. Int -> SequenceT sollu -> SequenceT sollu
spread Int
3 SequenceT Sollu
tdgnt forall a. Monoid a => a -> a -> a
. forall sollu. Int -> SequenceT sollu -> SequenceT sollu
spread Int
2 SequenceT Sollu
tdgnt forall a. Monoid a => a -> a -> a
. forall sollu. SequenceT sollu -> SequenceT sollu -> SequenceT sollu
tri_ forall a. Rest a => a
__ SequenceT Sollu
tdgnt
    theme :: SequenceT Sollu
theme = SequenceT Sollu
tatforall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__forall a. Monoid a => a -> a -> a
.SequenceT Sollu
ditforall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__forall a. Monoid a => a -> a -> a
.SequenceT Sollu
takadinnaforall a. Monoid a => a -> a -> a
.SequenceT Sollu
takaforall a. Monoid a => a -> a -> a
.SequenceT Sollu
dheemforall a. Monoid a => a -> a -> a
.forall sollu. SequenceT sollu
__4
    mridangam :: StrokeMaps
mridangam = StrokeMap Stroke -> StrokeMaps
makeMridangam
        [ (SequenceT Sollu
tatforall a. Monoid a => a -> a -> a
.SequenceT Sollu
dit, forall {g}. Sequence g (Note (Stroke Stroke))
kforall a. Monoid a => a -> a -> a
.forall {g}. Sequence g (Note (Stroke Stroke))
t)
        , (SequenceT Sollu
taka, forall {g}. Sequence g (Note (Stroke Stroke))
pforall a. Monoid a => a -> a -> a
.forall {g}. Sequence g (Note (Stroke Stroke))
k)
        , (SequenceT Sollu
dheem, forall {g}. Sequence g (Note (Stroke Stroke))
od)
        ]

c_13_12_11 :: Korvai
c_13_12_11 :: Korvai
c_13_12_11 = Stack => Int -> Int -> Int -> Korvai -> Korvai
date Int
2013 Int
12 Int
11 forall a b. (a -> b) -> a -> b
$ Korvai -> Korvai
ganesh forall a b. (a -> b) -> a -> b
$ Tala -> StrokeMaps -> [SequenceT Sollu] -> Korvai
korvaiS Tala
adi StrokeMaps
mridangam
    -- development for theme14
    [ forall sollu. Stack => Duration -> SequenceT sollu
sarvaD_ Duration
8 forall a. Monoid a => a -> a -> a
. forall sollu.
(Stack, Pretty sollu) =>
Tala -> SequenceT sollu -> SequenceT sollu
sarvaSam Tala
adi SequenceT Sollu
theme14
        forall a. Monoid a => a -> a -> a
. forall sollu.
(Stack, Pretty sollu) =>
Tala -> SequenceT sollu -> SequenceT sollu
sarvaSam Tala
adi SequenceT Sollu
theme14, forall sollu.
(Stack, Pretty sollu) =>
Tala -> SequenceT sollu -> SequenceT sollu
sarvaSam Tala
adi SequenceT Sollu
theme14
        forall a. Monoid a => a -> a -> a
. forall sollu.
(Stack, Pretty sollu) =>
Duration -> SequenceT sollu -> SequenceT sollu
__a Duration
4 SequenceT Sollu
theme14 forall a. Monoid a => a -> a -> a
. forall sollu.
(Stack, Pretty sollu) =>
Duration -> SequenceT sollu -> SequenceT sollu
__a Duration
4 SequenceT Sollu
theme14
        forall a. Monoid a => a -> a -> a
. forall sollu.
(Stack, Pretty sollu) =>
Duration -> SequenceT sollu -> SequenceT sollu
__a Duration
4 SequenceT Sollu
theme14 forall a. Monoid a => a -> a -> a
. forall a. Monoid a => a -> a
r2 (forall a. Rest a => a
__forall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__forall a. Monoid a => a -> a -> a
.SequenceT Sollu
tatforall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__forall a. Monoid a => a -> a -> a
.SequenceT Sollu
kaforall a. Monoid a => a -> a -> a
.SequenceT Sollu
dinforall a. Monoid a => a -> a -> a
.SequenceT Sollu
naforall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__)
    -- development for three together
    , forall a. Monoid a => [a] -> a
mconcat [forall sollu. Stack => Duration -> SequenceT sollu
sarvaD_ Duration
8 forall a. Monoid a => a -> a -> a
. forall sollu.
(Stack, Pretty sollu) =>
Tala -> SequenceT sollu -> SequenceT sollu
sarvaSam Tala
adi SequenceT Sollu
t | SequenceT Sollu
t <- [SequenceT Sollu]
themes]
        forall a. Monoid a => a -> a -> a
. forall a. Monoid a => [a] -> a
mconcat [forall sollu.
(Stack, Pretty sollu) =>
Tala -> SequenceT sollu -> SequenceT sollu
sarvaSam Tala
adi SequenceT Sollu
t | SequenceT Sollu
t <- [SequenceT Sollu]
themes]
        forall a. Monoid a => a -> a -> a
. forall a. Monoid a => a -> a
r2 (forall sollu.
(Stack, Pretty sollu) =>
Duration -> SequenceT sollu -> SequenceT sollu
__a Duration
4 SequenceT Sollu
theme14 forall a. Monoid a => a -> a -> a
. forall sollu.
(Stack, Pretty sollu) =>
Duration -> SequenceT sollu -> SequenceT sollu
__a Duration
4 SequenceT Sollu
theme16)
    , SequenceT Sollu -> SequenceT Sollu -> SequenceT Sollu
structure SequenceT Sollu
theme14 (SequenceT Sollu
dinforall a. Monoid a => a -> a -> a
.forall sollu. SequenceT sollu
__6)
    , SequenceT Sollu -> SequenceT Sollu -> SequenceT Sollu
structure SequenceT Sollu
theme16 (SequenceT Sollu
dinforall a. Monoid a => a -> a -> a
.forall sollu. SequenceT sollu
__4)
    , SequenceT Sollu -> SequenceT Sollu -> SequenceT Sollu
structure SequenceT Sollu
theme18 (SequenceT Sollu
dinforall a. Monoid a => a -> a -> a
.forall sollu. SequenceT sollu
__2)
    , SequenceT Sollu -> SequenceT Sollu -> SequenceT Sollu
structure SequenceT Sollu
theme20 forall a. Monoid a => a
ø
    ]
    where
    structure :: SequenceT Sollu -> SequenceT Sollu -> SequenceT Sollu
structure SequenceT Sollu
theme SequenceT Sollu
karvai =
                SequenceT Sollu
theme forall a. Monoid a => a -> a -> a
. SequenceT Sollu
karvai forall a. Monoid a => a -> a -> a
. forall sollu. SequenceT sollu
p5
         forall a. Monoid a => a -> a -> a
. SequenceT Sollu
kpforall a. Monoid a => a -> a -> a
.  SequenceT Sollu
theme forall a. Monoid a => a -> a -> a
. SequenceT Sollu
karvai forall a. Monoid a => a -> a -> a
. forall sollu. SequenceT sollu
p5forall a. Monoid a => a -> a -> a
.forall sollu. SequenceT sollu
p5
         forall a. Monoid a => a -> a -> a
. SequenceT Sollu
kpnpforall a. Monoid a => a -> a -> a
.SequenceT Sollu
theme forall a. Monoid a => a -> a -> a
. SequenceT Sollu
karvai forall a. Monoid a => a -> a -> a
. forall sollu. SequenceT sollu
p5forall a. Monoid a => a -> a -> a
.forall sollu. SequenceT sollu
p5forall a. Monoid a => a -> a -> a
.forall sollu. SequenceT sollu
p5
    themes :: [SequenceT Sollu]
themes = [SequenceT Sollu
theme14, SequenceT Sollu
theme16, SequenceT Sollu
theme18]
    theme14 :: SequenceT Sollu
theme14 = forall sollu. SequenceT sollu -> SequenceT sollu
group forall a b. (a -> b) -> a -> b
$ SequenceT Sollu
taforall a. Monoid a => a -> a -> a
.SequenceT Sollu
diforall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__forall a. Monoid a => a -> a -> a
.SequenceT Sollu
kitaforall a. Monoid a => a -> a -> a
.SequenceT Sollu
kitaforall a. Monoid a => a -> a -> a
.SequenceT Sollu
taforall a. Monoid a => a -> a -> a
.SequenceT Sollu
tatforall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__forall a. Monoid a => a -> a -> a
.SequenceT Sollu
kaforall a. Monoid a => a -> a -> a
.SequenceT Sollu
dinforall a. Monoid a => a -> a -> a
.SequenceT Sollu
tatforall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__
    theme16 :: SequenceT Sollu
theme16 = forall sollu. SequenceT sollu -> SequenceT sollu
group forall a b. (a -> b) -> a -> b
$ SequenceT Sollu
taforall a. Monoid a => a -> a -> a
.SequenceT Sollu
diforall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__forall a. Monoid a => a -> a -> a
.SequenceT Sollu
kitaforall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__forall a. Monoid a => a -> a -> a
.SequenceT Sollu
kitaforall a. Monoid a => a -> a -> a
.SequenceT Sollu
taforall a. Monoid a => a -> a -> a
.SequenceT Sollu
tatforall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__forall a. Monoid a => a -> a -> a
.SequenceT Sollu
kaforall a. Monoid a => a -> a -> a
.SequenceT Sollu
dinforall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__forall a. Monoid a => a -> a -> a
.SequenceT Sollu
tatforall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__
    theme18 :: SequenceT Sollu
theme18 = forall sollu. SequenceT sollu -> SequenceT sollu
group forall a b. (a -> b) -> a -> b
$ SequenceT Sollu
taforall a. Monoid a => a -> a -> a
.SequenceT Sollu
diforall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__forall a. Monoid a => a -> a -> a
.SequenceT Sollu
kiforall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__forall a. Monoid a => a -> a -> a
.SequenceT Sollu
taforall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__forall a. Monoid a => a -> a -> a
.SequenceT Sollu
kitaforall a. Monoid a => a -> a -> a
.SequenceT Sollu
taforall a. Monoid a => a -> a -> a
.SequenceT Sollu
tatforall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__forall a. Monoid a => a -> a -> a
.SequenceT Sollu
kaforall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__forall a. Monoid a => a -> a -> a
.SequenceT Sollu
dinforall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__forall a. Monoid a => a -> a -> a
.SequenceT Sollu
tatforall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__
    -- theme20 is on 2014 1 1
    theme20 :: SequenceT Sollu
theme20 = SequenceT Sollu
taforall a. Monoid a => a -> a -> a
.SequenceT Sollu
diforall a. Monoid a => a -> a -> a
.forall sollu. SequenceT sollu
__3forall a. Monoid a => a -> a -> a
.SequenceT Sollu
kiforall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__forall a. Monoid a => a -> a -> a
.SequenceT Sollu
taforall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__forall a. Monoid a => a -> a -> a
.SequenceT Sollu
kitaforall a. Monoid a => a -> a -> a
.SequenceT Sollu
taforall a. Monoid a => a -> a -> a
.SequenceT Sollu
tatforall a. Monoid a => a -> a -> a
.forall sollu. SequenceT sollu
__3forall a. Monoid a => a -> a -> a
.SequenceT Sollu
kaforall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__forall a. Monoid a => a -> a -> a
.SequenceT Sollu
dinforall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__forall a. Monoid a => a -> a -> a
.SequenceT Sollu
tatforall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__
    mridangam :: StrokeMaps
mridangam = StrokeMap Stroke -> StrokeMaps
makeMridangam
        [ (forall sollu. SequenceT sollu -> SequenceT sollu
stripRests SequenceT Sollu
theme14, 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))
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))
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))
oforall a. Monoid a => a -> a -> a
.forall {g}. Sequence g (Note (Stroke Stroke))
odforall a. Monoid a => a -> a -> a
.forall {g}. Sequence g (Note (Stroke Stroke))
k)
        , (SequenceT Sollu
tatforall a. Monoid a => a -> a -> a
.SequenceT Sollu
kaforall a. Monoid a => a -> a -> a
.SequenceT Sollu
dinforall a. Monoid a => a -> a -> a
.SequenceT Sollu
na, 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))
odforall a. Monoid a => a -> a -> a
.forall {g}. Sequence g (Note (Stroke Stroke))
k)
        , (SequenceT Sollu
din, forall {g}. Sequence g (Note (Stroke Stroke))
od)
        ]

-- * kanda nadai

make_k1 :: [Sequence] -> Korvai
make_k1 :: [SequenceT Sollu] -> Korvai
make_k1 = Korvai -> Korvai
ganesh forall b c a. (b -> c) -> (a -> b) -> a -> c
 Tala -> StrokeMaps -> [SequenceT Sollu] -> Korvai
korvaiS Tala
adi StrokeMaps
k1_mridangam forall b c a. (b -> c) -> (a -> b) -> a -> c
 forall a b. (a -> b) -> [a] -> [b]
map (forall g sollu. Int -> Sequence g sollu -> Sequence g sollu
nadai Int
5)

k1_1 :: Korvai
k1_1 :: Korvai
k1_1 = [SequenceT Sollu] -> Korvai
make_k1 [SequenceT Sollu -> SequenceT Sollu -> SequenceT Sollu
sequence SequenceT Sollu
p SequenceT Sollu
g | SequenceT Sollu
g <- [SequenceT Sollu]
gaps, SequenceT Sollu
p <- [forall sollu. SequenceT sollu
p5, forall sollu. SequenceT sollu
p6, forall sollu. SequenceT sollu
p7]]
    where
    gaps :: [SequenceT Sollu]
gaps = [SequenceT Sollu
thomforall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__forall a. Monoid a => a -> a -> a
.SequenceT Sollu
taforall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__, SequenceT Sollu
thomforall a. Monoid a => a -> a -> a
.forall sollu. SequenceT sollu
__3, SequenceT Sollu
thomforall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__, SequenceT Sollu
thom, forall a. Monoid a => a
ø]
    sequence :: SequenceT Sollu -> SequenceT Sollu -> SequenceT Sollu
sequence SequenceT Sollu
pt SequenceT Sollu
gap =
          forall sollu. SequenceT sollu
sam forall a. Monoid a => a -> a -> a
. SequenceT Sollu
k1_a  forall a. Monoid a => a -> a -> a
. forall a. Rest a => a
__ forall a. Monoid a => a -> a -> a
. SequenceT Sollu
ta forall a. Monoid a => a -> a -> a
. SequenceT Sollu
din forall a. Monoid a => a -> a -> a
. forall sollu. Int -> SequenceT sollu
__n (Int
10 forall a. Num a => a -> a -> a
- Int
pdur) forall a. Monoid a => a -> a -> a
. SequenceT Sollu
pt
              forall a. Monoid a => a -> a -> a
. SequenceT Sollu
k1_a' forall a. Monoid a => a -> a -> a
. forall a. Rest a => a
__ forall a. Monoid a => a -> a -> a
. SequenceT Sollu
ta forall a. Monoid a => a -> a -> a
. SequenceT Sollu
din forall a. Monoid a => a -> a -> a
. forall sollu. Int -> SequenceT sollu
__n (Int
10 forall a. Num a => a -> a -> a
- Int
pdur) forall a. Monoid a => a -> a -> a
. SequenceT Sollu
pt
        forall a. Monoid a => a -> a -> a
. forall sollu. SequenceT sollu
sam forall a. Monoid a => a -> a -> a
. SequenceT Sollu
ta forall a. Monoid a => a -> a -> a
. forall a. Rest a => a
__ forall a. Monoid a => a -> a -> a
. SequenceT Sollu
di forall a. Monoid a => a -> a -> a
. forall a. Rest a => a
__ forall a. Monoid a => a -> a -> a
. SequenceT Sollu
ki forall a. Monoid a => a -> a -> a
. SequenceT Sollu
ta forall a. Monoid a => a -> a -> a
. forall a. Rest a => a
__ forall a. Monoid a => a -> a -> a
. SequenceT Sollu
gap
        forall a. Monoid a => a -> a -> a
.       SequenceT Sollu
ta forall a. Monoid a => a -> a -> a
. SequenceT Sollu
ka forall a. Monoid a => a -> a -> a
. SequenceT Sollu
di forall a. Monoid a => a -> a -> a
. forall a. Rest a => a
__ forall a. Monoid a => a -> a -> a
. SequenceT Sollu
ki forall a. Monoid a => a -> a -> a
. SequenceT Sollu
ta forall a. Monoid a => a -> a -> a
. forall a. Rest a => a
__ forall a. Monoid a => a -> a -> a
. SequenceT Sollu
gap
        forall a. Monoid a => a -> a -> a
. case Int
pdur of
            Int
5 -> forall sollu. SequenceT sollu -> SequenceT sollu
p567 forall sollu. SequenceT sollu
end_gap
            Int
6 -> forall sollu. SequenceT sollu -> SequenceT sollu
p666 forall sollu. SequenceT sollu
end_gap
            Int
_ -> forall sollu. SequenceT sollu -> SequenceT sollu
p765 forall sollu. SequenceT sollu
end_gap
        where
        end_gap :: SequenceT sollu
end_gap = forall sollu. Int -> SequenceT sollu
__n (Int
5 forall a. Num a => a -> a -> a
- forall sollu. Stack => SequenceT sollu -> Int
matrasOfI SequenceT Sollu
gap)
        pdur :: Int
pdur = forall sollu. Stack => SequenceT sollu -> Int
matrasOfI SequenceT Sollu
pt

k1_2 :: Korvai
k1_2 :: Korvai
k1_2 = [SequenceT Sollu] -> Korvai
make_k1 forall a b. (a -> b) -> a -> b
$ (forall a. a -> [a] -> [a]
:[]) forall a b. (a -> b) -> a -> b
$
      forall sollu. SequenceT sollu
sam forall a. Monoid a => a -> a -> a
. SequenceT Sollu
k1_a  forall a. Monoid a => a -> a -> a
. forall a. Rest a => a
__ forall a. Monoid a => a -> a -> a
. SequenceT Sollu
ta_din_ forall a. Monoid a => a -> a -> a
. SequenceT Sollu
p7
          forall a. Monoid a => a -> a -> a
. SequenceT Sollu
k1_a' forall a. Monoid a => a -> a -> a
. forall a. Rest a => a
__ forall a. Monoid a => a -> a -> a
. SequenceT Sollu
ta_din_ forall a. Monoid a => a -> a -> a
. SequenceT Sollu
p7
    forall a. Monoid a => a -> a -> a
. forall sollu. SequenceT sollu
sam forall a. Monoid a => a -> a -> a
. SequenceT Sollu
k1_a forall a. Monoid a => a -> a -> a
. forall a. Rest a => a
__ forall a. Monoid a => a -> a -> a
. SequenceT Sollu
k1_a' forall a. Monoid a => a -> a -> a
. forall a. Rest a => a
__
          forall a. Monoid a => a -> a -> a
. SequenceT Sollu
ta_din_ forall a. Monoid a => a -> a -> a
. forall sollu. SequenceT sollu -> SequenceT sollu
tri SequenceT Sollu
p7
          forall a. Monoid a => a -> a -> a
. SequenceT Sollu
ta_din_ forall a. Monoid a => a -> a -> a
. forall sollu. SequenceT sollu -> SequenceT sollu
tri (SequenceT Sollu
tadin_ forall a. Monoid a => a -> a -> a
. SequenceT Sollu
p7)
          forall a. Monoid a => a -> a -> a
. SequenceT Sollu
ta_din_ forall a. Monoid a => a -> a -> a
. forall sollu. SequenceT sollu -> SequenceT sollu
tri (SequenceT Sollu
tadin_ forall a. Monoid a => a -> a -> a
. SequenceT Sollu
tadin_ forall a. Monoid a => a -> a -> a
. SequenceT Sollu
p7)
    where
    p7 :: SequenceT Sollu
p7 = SequenceT Sollu
kpforall a. Monoid a => a -> a -> a
.forall sollu. SequenceT sollu
p5
    ta_din_ :: SequenceT Sollu
ta_din_ = SequenceT Sollu
taforall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__forall a. Monoid a => a -> a -> a
.SequenceT Sollu
dinforall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__
    tadin_ :: SequenceT Sollu
tadin_ = SequenceT Sollu
taforall a. Monoid a => a -> a -> a
.SequenceT Sollu
dinforall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__

k1_3 :: Korvai
k1_3 :: Korvai
k1_3 = [SequenceT Sollu] -> Korvai
make_k1 forall a b. (a -> b) -> a -> b
$ (forall a. a -> [a] -> [a]
:[]) forall a b. (a -> b) -> a -> b
$
      SequenceT Sollu
k1_a  forall a. Monoid a => a -> a -> a
. forall a. Rest a => a
__ forall a. Monoid a => a -> a -> a
. SequenceT Sollu
tata_dindin_ forall a. Monoid a => a -> a -> a
. forall sollu. SequenceT sollu
p6 forall a. Monoid a => a -> a -> a
. forall a. Rest a => a
__
    forall a. Monoid a => a -> a -> a
. SequenceT Sollu
k1_a' forall a. Monoid a => a -> a -> a
. forall a. Rest a => a
__ forall a. Monoid a => a -> a -> a
. SequenceT Sollu
tata_dindin_ forall a. Monoid a => a -> a -> a
. SequenceT Sollu
kpforall a. Monoid a => a -> a -> a
.forall sollu. SequenceT sollu
p6 forall a. Monoid a => a -> a -> a
. forall a. Rest a => a
__
    forall a. Monoid a => a -> a -> a
. SequenceT Sollu
k1_a forall a. Monoid a => a -> a -> a
. forall a. Rest a => a
__ forall a. Monoid a => a -> a -> a
. SequenceT Sollu
k1_a' forall a. Monoid a => a -> a -> a
. forall a. Rest a => a
__ forall a. Monoid a => a -> a -> a
. SequenceT Sollu
tata_dindin_
    forall a. Monoid a => a -> a -> a
. forall sollu. SequenceT sollu -> SequenceT sollu -> SequenceT sollu
tri_ forall a. Rest a => a
__ (SequenceT Sollu
kpnpforall a. Monoid a => a -> a -> a
.forall sollu. SequenceT sollu
p6)
    forall a. Monoid a => a -> a -> a
. forall sollu. SequenceT sollu -> SequenceT sollu -> SequenceT sollu
tri_ forall a. Rest a => a
__ (SequenceT Sollu
kpforall a. Monoid a => a -> a -> a
.forall sollu. SequenceT sollu
p6)
    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
p6
    where
    tata_dindin_ :: SequenceT Sollu
tata_dindin_ = SequenceT Sollu
taforall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__forall a. Monoid a => a -> a -> a
.SequenceT Sollu
taforall a. Monoid a => a -> a -> a
.forall sollu. SequenceT sollu
__3forall a. Monoid a => a -> a -> a
.SequenceT Sollu
dinforall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__forall a. Monoid a => a -> a -> a
.SequenceT Sollu
dinforall a. Monoid a => a -> a -> a
.forall sollu. SequenceT sollu
__3

k1_a, k1_a' :: Sequence
k1_a :: SequenceT Sollu
k1_a  = SequenceT Sollu
taforall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__forall a. Monoid a => a -> a -> a
.SequenceT Sollu
diforall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__forall a. Monoid a => a -> a -> a
.SequenceT Sollu
kiforall a. Monoid a => a -> a -> a
.SequenceT Sollu
taforall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__forall a. Monoid a => a -> a -> a
.SequenceT Sollu
thom
k1_a' :: SequenceT Sollu
k1_a' = SequenceT Sollu
taforall a. Monoid a => a -> a -> a
.SequenceT Sollu
kaforall a. Monoid a => a -> a -> a
.SequenceT Sollu
diforall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__forall a. Monoid a => a -> a -> a
.SequenceT Sollu
kiforall a. Monoid a => a -> a -> a
.SequenceT Sollu
taforall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__forall a. Monoid a => a -> a -> a
.SequenceT Sollu
thom

k1_mridangam :: Korvai.StrokeMaps
k1_mridangam :: StrokeMaps
k1_mridangam = StrokeMap Stroke -> StrokeMaps
makeMridangam
    [ (SequenceT Sollu
ta, forall {g}. Sequence g (Note (Stroke Stroke))
k)
    , (SequenceT Sollu
taforall a. Monoid a => a -> a -> a
.SequenceT Sollu
diforall a. Monoid a => a -> a -> a
.SequenceT Sollu
kiforall a. Monoid a => a -> a -> a
.SequenceT Sollu
ta, 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))
n)
    , (SequenceT Sollu
taforall a. Monoid a => a -> a -> a
.SequenceT Sollu
kaforall a. Monoid a => a -> a -> a
.SequenceT Sollu
diforall a. Monoid a => a -> a -> a
.SequenceT Sollu
kiforall a. Monoid a => a -> a -> a
.SequenceT Sollu
ta, 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))
kforall a. Monoid a => a -> a -> a
.forall {g}. Sequence g (Note (Stroke Stroke))
n)
    , (SequenceT Sollu
din, forall {g}. Sequence g (Note (Stroke Stroke))
od)
    ]

k2 :: Bool -> Korvai
k2 :: Bool -> Korvai
k2 Bool
chatusram_transition = Tala -> StrokeMaps -> SequenceT Sollu -> Korvai
korvaiS1 Tala
adi StrokeMaps
k1_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
$
      SequenceT Sollu
dinforall a. Monoid a => a -> a -> a
.forall sollu. SequenceT sollu
__3 forall a. Monoid a => a -> a -> a
. forall sollu. SequenceT sollu
p5forall a. Monoid a => a -> a -> a
.SequenceT Sollu
tamforall a. Monoid a => a -> a -> a
.forall sollu. SequenceT sollu
__4forall a. Monoid a => a -> a -> a
.forall sollu. SequenceT sollu
p6forall a. Monoid a => a -> a -> a
.SequenceT Sollu
taforall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__
    forall a. Monoid a => a -> a -> a
. SequenceT Sollu
dinforall a. Monoid a => a -> a -> a
.forall sollu. SequenceT sollu
__3 forall a. Monoid a => a -> a -> a
. forall sollu. SequenceT sollu
p5forall a. Monoid a => a -> a -> a
.SequenceT Sollu
tamforall a. Monoid a => a -> a -> a
.forall sollu. SequenceT sollu
__4forall a. Monoid a => a -> a -> a
.forall sollu. SequenceT sollu
p6forall a. Monoid a => a -> a -> a
.SequenceT Sollu
taforall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__forall a. Monoid a => a -> a -> a
.SequenceT Sollu
taforall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__
    forall a. Monoid a => a -> a -> a
. SequenceT Sollu
dinforall a. Monoid a => a -> a -> a
.forall sollu. SequenceT sollu
__3 forall a. Monoid a => a -> a -> a
. forall sollu. SequenceT sollu
p5
    forall a. Monoid a => a -> a -> a
. if Bool
chatusram_transition
        then forall g sollu. Int -> Sequence g sollu -> Sequence g sollu
nadai Int
4 (forall sollu. SequenceT sollu -> SequenceT sollu
tri (SequenceT Sollu
taforall a. Monoid a => a -> a -> a
.SequenceT Sollu
taforall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__forall a. Monoid a => a -> a -> a
.forall sollu. SequenceT sollu
p5))
        else SequenceT Sollu
tamforall a. Monoid a => a -> a -> a
.forall sollu. SequenceT sollu
__4 forall a. Monoid a => a -> a -> a
. forall sollu. SequenceT sollu -> SequenceT sollu -> SequenceT sollu
tri_ forall sollu. SequenceT sollu
__5 forall sollu. SequenceT sollu
p6
    -- p6 can also be k-t---ktkto-
    -- development is din_3.p5.ta.__.din

k3s :: Korvai
k3s :: Korvai
k3s = Tala -> StrokeMaps -> [SequenceT 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)
    [   SequenceT Sollu
dit forall a. Monoid a => a -> a -> a
. forall a. Rest a => a
__  forall a. Monoid a => a -> a -> a
. SequenceT Sollu
tangkita forall a. Monoid a => a -> a -> a
. SequenceT Sollu
dit   forall a. Monoid a => a -> a -> a
. SequenceT Sollu
tat forall a. Monoid a => a -> a -> a
. SequenceT Sollu
dinforall sollu. SequenceT sollu -> Int -> SequenceT sollu
§Int
2 forall a. Monoid a => a -> a -> a
. forall a. Rest a => a
__
      forall a. Monoid a => a -> a -> a
. SequenceT Sollu
dit forall a. Monoid a => a -> a -> a
. SequenceT Sollu
tat forall a. Monoid a => a -> a -> a
. SequenceT Sollu
tangkita forall a. Monoid a => a -> a -> a
. SequenceT Sollu
ditforall sollu. SequenceT sollu -> Int -> SequenceT sollu
§Int
4 forall a. Monoid a => a -> a -> a
. SequenceT Sollu
tat forall a. Monoid a => a -> a -> a
. SequenceT Sollu
din forall a. Monoid a => a -> a -> a
. forall a. Rest a => a
__
      forall a. Monoid a => a -> a -> a
. SequenceT Sollu
ta forall a. Monoid a => a -> a -> a
. forall a. Rest a => a
__ forall a. Monoid a => a -> a -> a
. SequenceT Sollu
dit forall a. Monoid a => a -> a -> a
. SequenceT Sollu
tat forall a. Monoid a => a -> a -> a
. SequenceT Sollu
din forall a. Monoid a => a -> a -> a
. forall a. Rest a => a
__
      forall a. Monoid a => a -> a -> a
. SequenceT Sollu
taforall sollu. SequenceT sollu -> Int -> SequenceT sollu
§Int
6forall a. Monoid a => a -> a -> a
.SequenceT Sollu
kaforall a. Monoid a => a -> a -> a
.SequenceT Sollu
ditforall a. Monoid a => a -> a -> a
.SequenceT Sollu
tatforall a. Monoid a => a -> a -> a
.SequenceT Sollu
dinforall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__
      forall a. Monoid a => a -> a -> a
. SequenceT Sollu
taforall a. Monoid a => a -> a -> a
.SequenceT Sollu
kiforall a. Monoid a => a -> a -> a
.SequenceT Sollu
taforall a. Monoid a => a -> a -> a
.SequenceT Sollu
taforall a. Monoid a => a -> a -> a
.SequenceT Sollu
kiforall sollu. SequenceT sollu -> Int -> SequenceT sollu
§Int
0forall a. Monoid a => a -> a -> a
.SequenceT Sollu
ta
      forall a. Monoid a => a -> a -> a
. forall sollu. SequenceT sollu
p6forall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__forall a. Monoid a => a -> a -> a
.forall sollu. SequenceT sollu
p6forall a. Monoid a => a -> a -> a
.forall sollu. SequenceT sollu
p6forall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__forall a. Monoid a => a -> a -> a
.forall sollu. SequenceT sollu
p6forall a. Monoid a => a -> a -> a
.forall sollu. SequenceT sollu
p6forall a. Monoid a => a -> a -> a
.forall sollu. SequenceT sollu
p6 -- utarangam

    ,   SequenceT Sollu
dit forall a. Monoid a => a -> a -> a
. forall a. Rest a => a
__  forall a. Monoid a => a -> a -> a
. SequenceT Sollu
tangkita forall a. Monoid a => a -> a -> a
. SequenceT Sollu
din forall a. Monoid a => a -> a -> a
. forall sollu. SequenceT sollu
__4
      forall a. Monoid a => a -> a -> a
. SequenceT Sollu
dit forall a. Monoid a => a -> a -> a
. SequenceT Sollu
tat forall a. Monoid a => a -> a -> a
. SequenceT Sollu
tangkita forall a. Monoid a => a -> a -> a
. SequenceT Sollu
din forall a. Monoid a => a -> a -> a
. forall sollu. SequenceT sollu
__4
      forall a. Monoid a => a -> a -> a
. SequenceT Sollu
dit forall a. Monoid a => a -> a -> a
. forall a. Rest a => a
__  forall a. Monoid a => a -> a -> a
. SequenceT Sollu
tangkita forall a. Monoid a => a -> a -> a
. SequenceT Sollu
din forall a. Monoid a => a -> a -> a
. forall a. Rest a => a
__
      forall a. Monoid a => a -> a -> a
. SequenceT Sollu
dit forall a. Monoid a => a -> a -> a
. SequenceT Sollu
tat forall a. Monoid a => a -> a -> a
. SequenceT Sollu
tangkita forall a. Monoid a => a -> a -> a
. SequenceT Sollu
din forall a. Monoid a => a -> a -> a
. forall a. Rest a => a
__
      forall a. Monoid a => a -> a -> a
. SequenceT Sollu
dit forall a. Monoid a => a -> a -> a
. forall a. Rest a => a
__  forall a. Monoid a => a -> a -> a
. SequenceT Sollu
tangkita
      forall a. Monoid a => a -> a -> a
. SequenceT Sollu
dit forall a. Monoid a => a -> a -> a
. SequenceT Sollu
tat forall a. Monoid a => a -> a -> a
. SequenceT Sollu
tangkita
      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
p6
    ]
    where
    tangkita :: SequenceT Sollu
tangkita = forall g sollu. Sequence g sollu -> Sequence g sollu
su (SequenceT Sollu
tang forall a. Monoid a => a -> a -> a
. forall a. Rest a => a
__ forall a. Monoid a => a -> a -> a
. SequenceT Sollu
kitataka forall a. Monoid a => a -> a -> a
. SequenceT Sollu
tarikitataka)
    kitataka :: SequenceT Sollu
kitataka = SequenceT Sollu
kiforall a. Monoid a => a -> a -> a
.SequenceT Sollu
taforall a. Monoid a => a -> a -> a
.SequenceT Sollu
thaforall a. Monoid a => a -> a -> a
.SequenceT Sollu
ka
    tarikitataka :: SequenceT Sollu
tarikitataka = SequenceT Sollu
taforall a. Monoid a => a -> a -> a
.SequenceT Sollu
riforall a. Monoid a => a -> a -> a
.SequenceT Sollu
kitataka
    mridangam :: StrokeMaps
mridangam = StrokeMap Stroke -> StrokeMaps
makeMridangam
        [ (SequenceT Sollu
dit, forall {g}. Sequence g (Note (Stroke Stroke))
pStack =>
Sequence Group (Note (Stroke Stroke))
-> Sequence Group (Note (Stroke Stroke))
-> Sequence Group (Note (Stroke Stroke))
&forall {g}. Sequence g (Note (Stroke Stroke))
k)
        , (SequenceT Sollu
taforall a. Monoid a => a -> a -> a
.SequenceT Sollu
kiforall a. Monoid a => a -> a -> a
.SequenceT Sollu
ta, 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))
od)
        , (SequenceT Sollu
taka, forall {g}. Sequence g (Note (Stroke Stroke))
pforall a. Monoid a => a -> a -> a
.forall {g}. Sequence g (Note (Stroke Stroke))
k)
        , (SequenceT Sollu
ditforall a. Monoid a => a -> a -> a
.SequenceT Sollu
tat, forall {g}. Sequence g (Note (Stroke Stroke))
pforall a. Monoid a => a -> a -> a
.forall {g}. Sequence g (Note (Stroke Stroke))
k)
        , (SequenceT Sollu
kitataka, 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))
nforall a. Monoid a => a -> a -> a
.forall {g}. Sequence g (Note (Stroke Stroke))
p)
        , (SequenceT Sollu
tarikitataka, forall {g}. Sequence g (Note (Stroke Stroke))
uforall 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))
pforall a. Monoid a => a -> a -> a
.forall {g}. Sequence g (Note (Stroke Stroke))
k)
        , (SequenceT Sollu
din, forall {g}. Sequence g (Note (Stroke Stroke))
od)
        , (SequenceT Sollu
ta, forall {g}. Sequence g (Note (Stroke Stroke))
k)
        ]

-- * tisra nadai

t_sarva1 :: Korvai
t_sarva1 :: Korvai
t_sarva1 = Korvai -> Korvai
sarvalaghu forall a b. (a -> b) -> a -> b
$ Korvai -> Korvai
ganesh forall a b. (a -> b) -> a -> b
$ Tala -> StrokeMaps -> SequenceT 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
6 SequenceT Sollu
sarva
    where
    sarva :: SequenceT Sollu
sarva = forall g sollu. Sequence g sollu -> Sequence g sollu
sd forall a b. (a -> b) -> a -> b
$
        SequenceT Sollu
dhomforall a. Monoid a => a -> a -> a
.SequenceT Sollu
kaforall a. Monoid a => a -> a -> a
.SequenceT Sollu
naforall a. Monoid a => a -> a -> a
.SequenceT Sollu
naforall a. Monoid a => a -> a -> a
.SequenceT Sollu
diforall a. Monoid a => a -> a -> a
.SequenceT Sollu
mi forall a. Monoid a => a -> a -> a
. SequenceT Sollu
naforall a. Monoid a => a -> a -> a
.SequenceT Sollu
miforall a. Monoid a => a -> a -> a
.SequenceT Sollu
naforall a. Monoid a => a -> a -> a
.SequenceT Sollu
naforall a. Monoid a => a -> a -> a
.SequenceT Sollu
diforall a. Monoid a => a -> a -> a
.SequenceT Sollu
mi
        forall a. Monoid a => a -> a -> a
. SequenceT Sollu
naforall a. Monoid a => a -> a -> a
.SequenceT Sollu
miforall a. Monoid a => a -> a -> a
.SequenceT Sollu
naforall a. Monoid a => a -> a -> a
.SequenceT Sollu
naforall a. Monoid a => a -> a -> a
.SequenceT Sollu
diforall a. Monoid a => a -> a -> a
.SequenceT Sollu
mi forall a. Monoid a => a -> a -> a
. SequenceT Sollu
naforall a. Monoid a => a -> a -> a
.SequenceT Sollu
miforall a. Monoid a => a -> a -> a
.SequenceT Sollu
naforall a. Monoid a => a -> a -> a
.SequenceT Sollu
naforall a. Monoid a => a -> a -> a
.SequenceT Sollu
diforall a. Monoid a => a -> a -> a
.SequenceT Sollu
mi
    rh :: Sequence g (Note (Stroke Stroke))
-> Sequence g (Note (Stroke Stroke))
rh Sequence g (Note (Stroke Stroke))
x = Sequence g (Note (Stroke Stroke))
xforall 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))
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))
k      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))
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))
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))
k
    mridangam :: StrokeMaps
mridangam = StrokeMap Stroke -> StrokeMaps
makeMridangam
        [ (SequenceT Sollu
sarva,
            (forall {g}.
Sequence g (Note (Stroke Stroke))
-> Sequence g (Note (Stroke Stroke))
rh forall a. Rest a => a
__ 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 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))
oforall 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))
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))
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))
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))
-> Sequence g (Note (Stroke Stroke))
rh forall {g}. Sequence g (Note (Stroke Stroke))
n 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 a. Rest a => a
__forall 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 a. Rest a => a
__forall 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 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))
oforall 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
__)))
        ]

t1s :: Korvai
t1s :: Korvai
t1s = Korvai -> Korvai
ganesh forall a b. (a -> b) -> a -> b
$ Tala -> StrokeMaps -> [SequenceT 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
6)
    -- TODO if I replace takadinna.din with a reduceR, then I get nested groups
    [ SequenceT Sollu -> SequenceT Sollu
reduce (SequenceT Sollu
tatforall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__forall a. Monoid a => a -> a -> a
.SequenceT Sollu
ditforall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__forall a. Monoid a => a -> a -> a
.SequenceT Sollu
takadinnaforall a. Monoid a => a -> a -> a
.SequenceT 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
. SequenceT Sollu -> SequenceT Sollu
utarangam forall sollu. SequenceT sollu
p5
    , SequenceT Sollu -> SequenceT Sollu
reduce (SequenceT Sollu
tatforall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__forall a. Monoid a => a -> a -> a
.SequenceT Sollu
ditforall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__forall a. Monoid a => a -> a -> a
.SequenceT Sollu
takadinnaforall a. Monoid a => a -> a -> a
.SequenceT Sollu
dinforall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__)      forall a. Monoid a => a -> a -> a
. SequenceT Sollu -> SequenceT Sollu
utarangam forall sollu. SequenceT sollu
p6
    -- TODO takadinna.din!p
    , SequenceT Sollu -> SequenceT Sollu
reduce (SequenceT Sollu
tatforall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__forall a. Monoid a => a -> a -> a
.SequenceT Sollu
ditforall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__forall a. Monoid a => a -> a -> a
.SequenceT Sollu
takadinnaforall a. Monoid a => a -> a -> a
.SequenceT Sollu
din)         forall a. Monoid a => a -> a -> a
. SequenceT Sollu -> SequenceT Sollu
utarangam forall sollu. SequenceT sollu
p7
    , SequenceT Sollu -> SequenceT Sollu
reduce (SequenceT Sollu
tatforall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__forall a. Monoid a => a -> a -> a
.SequenceT Sollu
ditforall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__forall a. Monoid a => a -> a -> a
.SequenceT Sollu
takadinna)             forall a. Monoid a => a -> a -> a
. SequenceT Sollu -> SequenceT Sollu
utarangam forall sollu. SequenceT sollu
p8
    , SequenceT Sollu -> SequenceT Sollu
reduce (SequenceT Sollu
tatforall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__forall a. Monoid a => a -> a -> a
.SequenceT Sollu
ditforall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__forall a. Monoid a => a -> a -> a
.SequenceT Sollu
takaforall a. Monoid a => a -> a -> a
.SequenceT Sollu
din)              forall a. Monoid a => a -> a -> a
. SequenceT Sollu -> SequenceT Sollu
utarangam forall sollu. SequenceT sollu
p9
    ]
    where
    utarangam :: SequenceT Sollu -> SequenceT Sollu
utarangam = forall sollu. SequenceT sollu -> SequenceT sollu -> SequenceT sollu
tri_ (SequenceT Sollu
tangforall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__forall a. Monoid a => a -> a -> a
.SequenceT Sollu
ga)
    reduce :: SequenceT Sollu -> SequenceT Sollu
reduce = forall sollu.
Pretty sollu =>
FMatra -> SequenceT sollu -> SequenceT sollu -> SequenceT sollu
reduce3 FMatra
2 forall a. Monoid a => a
ø
    mridangam :: StrokeMaps
mridangam = StrokeMap Stroke -> StrokeMaps
makeMridangam
        [ (SequenceT Sollu
tatforall a. Monoid a => a -> a -> a
.SequenceT Sollu
dit, forall {g}. Sequence g (Note (Stroke Stroke))
kforall a. Monoid a => a -> a -> a
.forall {g}. Sequence g (Note (Stroke Stroke))
t)
        , (SequenceT Sollu
takaforall a. Monoid a => a -> a -> a
.SequenceT Sollu
din, 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))
o)
        , (SequenceT Sollu
din, forall {g}. Sequence g (Note (Stroke Stroke))
od)
        , (SequenceT Sollu
tangforall a. Monoid a => a -> a -> a
.SequenceT Sollu
ga, forall {g}. Sequence g (Note (Stroke Stroke))
uforall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__)
        ]

t2s :: Korvai
t2s :: Korvai
t2s = Korvai -> Korvai
ganesh forall a b. (a -> b) -> a -> b
$ Tala -> StrokeMaps -> [SequenceT 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
6)
    [ SequenceT Sollu -> SequenceT Sollu
reduce (SequenceT Sollu
tatforall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__forall a. Monoid a => a -> a -> a
.SequenceT Sollu
ditforall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__forall a. Monoid a => a -> a -> a
.SequenceT Sollu
takadinnaforall a. Monoid a => a -> a -> a
.SequenceT Sollu
dheemforall a. Monoid a => a -> a -> a
.forall sollu. SequenceT sollu
__5) forall a. Monoid a => a -> a -> a
. forall sollu. SequenceT sollu -> SequenceT sollu
tri forall sollu. SequenceT sollu
p5
    , SequenceT Sollu -> SequenceT Sollu
reduce (SequenceT Sollu
tatforall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__forall a. Monoid a => a -> a -> a
.SequenceT Sollu
ditforall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__forall a. Monoid a => a -> a -> a
.SequenceT Sollu
takadinnaforall a. Monoid a => a -> a -> a
.SequenceT Sollu
dheemforall a. Monoid a => a -> a -> a
.forall sollu. SequenceT sollu
__4) forall a. Monoid a => a -> a -> a
. forall sollu. SequenceT sollu -> SequenceT sollu
tri forall sollu. SequenceT sollu
p6
    , SequenceT Sollu -> SequenceT Sollu
reduce (SequenceT Sollu
tatforall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__forall a. Monoid a => a -> a -> a
.SequenceT Sollu
ditforall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__forall a. Monoid a => a -> a -> a
.SequenceT Sollu
takadinnaforall a. Monoid a => a -> a -> a
.SequenceT Sollu
dheemforall a. Monoid a => a -> a -> a
.forall sollu. SequenceT sollu
__3) forall a. Monoid a => a -> a -> a
. forall sollu. SequenceT sollu -> SequenceT sollu
tri forall sollu. SequenceT sollu
p7
    , SequenceT Sollu -> SequenceT Sollu
reduce (SequenceT Sollu
tatforall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__forall a. Monoid a => a -> a -> a
.SequenceT Sollu
ditforall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__forall a. Monoid a => a -> a -> a
.SequenceT Sollu
takadinnaforall a. Monoid a => a -> a -> a
.SequenceT Sollu
dheemforall 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 (SequenceT Sollu
taforall a. Monoid a => a -> a -> a
.SequenceT Sollu
dinforall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__forall a. Monoid a => a -> a -> a
.forall sollu. SequenceT sollu
p5)
    -- TODO takadinna.din!p
    , SequenceT Sollu -> SequenceT Sollu
reduce (SequenceT Sollu
tatforall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__forall a. Monoid a => a -> a -> a
.SequenceT Sollu
ditforall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__forall a. Monoid a => a -> a -> a
.SequenceT Sollu
takadinnaforall a. Monoid a => a -> a -> a
.SequenceT Sollu
din)       forall a. Monoid a => a -> a -> a
. forall sollu. SequenceT sollu -> SequenceT sollu
tri (SequenceT Sollu
taforall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__forall a. Monoid a => a -> a -> a
.SequenceT Sollu
dinforall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__forall a. Monoid a => a -> a -> a
.forall sollu. SequenceT sollu
p5)
    , SequenceT Sollu -> SequenceT Sollu
reduce (SequenceT Sollu
tatforall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__forall a. Monoid a => a -> a -> a
.SequenceT Sollu
ditforall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__forall a. Monoid a => a -> a -> a
.SequenceT Sollu
takadinna)           forall a. Monoid a => a -> a -> a
. forall sollu. SequenceT sollu -> SequenceT sollu
tri (SequenceT Sollu
takaforall a. Monoid a => a -> a -> a
.SequenceT Sollu
taforall a. Monoid a => a -> a -> a
.SequenceT Sollu
dinforall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__forall a. Monoid a => a -> a -> a
.forall sollu. SequenceT sollu
p5)
    , SequenceT Sollu -> SequenceT Sollu
reduce (SequenceT Sollu
tatforall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__forall a. Monoid a => a -> a -> a
.SequenceT Sollu
ditforall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__forall a. Monoid a => a -> a -> a
.SequenceT Sollu
takaforall a. Monoid a => a -> a -> a
.SequenceT Sollu
din)            forall a. Monoid a => a -> a -> a
. forall sollu. SequenceT sollu -> SequenceT sollu
tri (SequenceT Sollu
takaforall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__forall a. Monoid a => a -> a -> a
.SequenceT Sollu
taforall a. Monoid a => a -> a -> a
.SequenceT Sollu
dinforall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__forall a. Monoid a => a -> a -> a
.forall sollu. SequenceT sollu
p5)

    , SequenceT Sollu -> SequenceT Sollu
reduce (SequenceT Sollu
tatforall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__forall a. Monoid a => a -> a -> a
.SequenceT Sollu
ditforall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__forall a. Monoid a => a -> a -> a
.SequenceT Sollu
takaforall a. Monoid a => a -> a -> a
.SequenceT Sollu
din) forall a. Monoid a => a -> a -> a
. forall sollu. SequenceT sollu -> SequenceT sollu
tri (SequenceT Sollu
taforall a. Monoid a => a -> a -> a
.SequenceT Sollu
dingaforall a. Monoid a => a -> a -> a
.forall sollu. SequenceT sollu
p7)
    , let tadin_ :: Int -> SequenceT Sollu
tadin_ Int
n = forall a. Monoid a => Int -> a -> a
repeat Int
n (SequenceT Sollu
taforall a. Monoid a => a -> a -> a
.SequenceT Sollu
dinforall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__) in
      SequenceT Sollu -> SequenceT Sollu
reduce (SequenceT Sollu
tatforall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__forall a. Monoid a => a -> a -> a
.SequenceT Sollu
ditforall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__forall a. Monoid a => a -> a -> a
.SequenceT Sollu
takaforall a. Monoid a => a -> a -> a
.SequenceT Sollu
din)
        forall a. Monoid a => a -> a -> a
. Int -> SequenceT Sollu
tadin_ Int
1 forall a. Monoid a => a -> a -> a
. forall sollu. SequenceT sollu
p5 forall a. Monoid a => a -> a -> a
. Int -> SequenceT Sollu
tadin_ Int
2 forall a. Monoid a => a -> a -> a
. forall sollu. SequenceT sollu
p5 forall a. Monoid a => a -> a -> a
. Int -> SequenceT Sollu
tadin_ Int
3 forall a. Monoid a => a -> a -> a
. forall sollu. SequenceT sollu
p5

    , SequenceT Sollu -> SequenceT Sollu
reduce (SequenceT Sollu
tatforall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__forall a. Monoid a => a -> a -> a
.SequenceT Sollu
ditforall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__forall a. Monoid a => a -> a -> a
.SequenceT Sollu
takaforall a. Monoid a => a -> a -> a
.SequenceT Sollu
din) forall a. Monoid a => a -> a -> a
. forall sollu. SequenceT sollu -> SequenceT sollu
tri (SequenceT Sollu
taforall a. Monoid a => a -> a -> a
.SequenceT Sollu
dinforall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__forall a. Monoid a => a -> a -> a
.forall sollu. SequenceT sollu
p8)
    ]
    where
    reduce :: SequenceT Sollu -> SequenceT Sollu
reduce = forall sollu.
Pretty sollu =>
FMatra -> SequenceT sollu -> SequenceT sollu -> SequenceT sollu
reduce3 FMatra
2 forall a. Monoid a => a
ø
    mridangam :: StrokeMaps
mridangam = StrokeMap Stroke -> StrokeMaps
makeMridangam
        [ (SequenceT Sollu
tatforall a. Monoid a => a -> a -> a
.SequenceT Sollu
dit, forall {g}. Sequence g (Note (Stroke Stroke))
kforall a. Monoid a => a -> a -> a
.forall {g}. Sequence g (Note (Stroke Stroke))
t)
        , (SequenceT Sollu
takaforall a. Monoid a => a -> a -> a
.SequenceT Sollu
din, 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))
o)
        , (SequenceT Sollu
taka, forall {g}. Sequence g (Note (Stroke Stroke))
kforall a. Monoid a => a -> a -> a
.forall {g}. Sequence g (Note (Stroke Stroke))
p)
        , (SequenceT Sollu
dheem, forall {g}. Sequence g (Note (Stroke Stroke))
od)
        , (SequenceT Sollu
din, forall {g}. Sequence g (Note (Stroke Stroke))
od)
        , (SequenceT Sollu
taforall a. Monoid a => a -> a -> a
.SequenceT Sollu
dinforall a. Monoid a => a -> a -> a
.SequenceT Sollu
ga, 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
__)
        , (SequenceT Sollu
taforall a. Monoid a => a -> a -> a
.SequenceT Sollu
din, forall {g}. Sequence g (Note (Stroke Stroke))
kforall a. Monoid a => a -> a -> a
.forall {g}. Sequence g (Note (Stroke Stroke))
od)
        ]

t3s :: Korvai
t3s :: Korvai
t3s = Korvai -> Korvai
ganesh forall a b. (a -> b) -> a -> b
$ Tala -> StrokeMaps -> [SequenceT 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
6)
    [ SequenceT Sollu -> SequenceT Sollu
reduce (SequenceT Sollu
tatforall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__forall a. Monoid a => a -> a -> a
.SequenceT Sollu
ditforall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__forall a. Monoid a => a -> a -> a
.SequenceT Sollu
takadinnaforall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__forall a. Monoid a => a -> a -> a
.SequenceT Sollu
kaforall a. Monoid a => a -> a -> a
.SequenceT Sollu
dinforall a. Monoid a => a -> a -> a
.SequenceT Sollu
naforall a. Monoid a => a -> a -> a
.SequenceT Sollu
dinga) forall a. Monoid a => a -> a -> a
. SequenceT Sollu -> SequenceT Sollu
utarangam forall sollu. SequenceT sollu
p5
    , SequenceT Sollu -> SequenceT Sollu
reduce (SequenceT Sollu
tatforall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__forall a. Monoid a => a -> a -> a
.SequenceT Sollu
ditforall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__forall a. Monoid a => a -> a -> a
.SequenceT Sollu
takadinnaforall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__forall a. Monoid a => a -> a -> a
.SequenceT Sollu
dinga) forall a. Monoid a => a -> a -> a
. SequenceT Sollu -> SequenceT Sollu
utarangam forall sollu. SequenceT sollu
p6
    , SequenceT Sollu -> SequenceT Sollu
reduce (SequenceT Sollu
tatforall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__forall a. Monoid a => a -> a -> a
.SequenceT Sollu
ditforall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__forall a. Monoid a => a -> a -> a
.SequenceT Sollu
takadinnaforall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__) forall a. Monoid a => a -> a -> a
. SequenceT Sollu -> SequenceT Sollu
utarangam forall sollu. SequenceT sollu
p7

    , (Int, Int, Int)
-> (Int, Int, Int) -> (Int, Int, Int) -> SequenceT Sollu
variation (Int
5, Int
5, Int
5) (Int
6, Int
6, Int
6) (Int
7, Int
7, Int
7)
    , (Int, Int, Int)
-> (Int, Int, Int) -> (Int, Int, Int) -> SequenceT Sollu
variation (Int
7, Int
7, Int
7) (Int
6, Int
6, Int
6) (Int
5, Int
5, Int
5)
    , (Int, Int, Int)
-> (Int, Int, Int) -> (Int, Int, Int) -> SequenceT Sollu
variation (Int
5, Int
6, Int
7) (Int
5, Int
6, Int
7) (Int
5, Int
6, Int
7)
    , (Int, Int, Int)
-> (Int, Int, Int) -> (Int, Int, Int) -> SequenceT Sollu
variation (Int
7, Int
6, Int
5) (Int
7, Int
6, Int
5) (Int
7, Int
6, Int
5)
    , (Int, Int, Int)
-> (Int, Int, Int) -> (Int, Int, Int) -> SequenceT Sollu
variation (Int
5, Int
6, Int
7) (Int
6, Int
6, Int
6) (Int
7, Int
6, Int
5)
    ]
    -- tat.__.dit.__.takadinna.__.ka.din.na.dinga
    --       .dit.__.takadinna.__.ka.din.na.dinga
    --              .takadinna.__.ka.din.na.dinga
    -- tat.__.dit.__.takadinna.__.dinga
    --       .dit.__.takadinna.__.dinga
    --              .takadinna.__.dinga
    where
    utarangam :: SequenceT Sollu -> SequenceT Sollu
utarangam SequenceT Sollu
p = forall sollu.
SequenceT sollu
-> SequenceT sollu
-> SequenceT sollu
-> SequenceT sollu
-> SequenceT sollu
trin (SequenceT Sollu
tangforall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__forall a. Monoid a => a -> a -> a
.SequenceT Sollu
ga) (forall sollu. SequenceT sollu -> SequenceT sollu
tri SequenceT Sollu
p) (forall sollu. SequenceT sollu -> SequenceT sollu -> SequenceT sollu
tri_ forall a. Rest a => a
__ SequenceT Sollu
p) (forall sollu. SequenceT sollu -> SequenceT sollu -> SequenceT sollu
tri_ forall sollu. SequenceT sollu
__3 SequenceT Sollu
p)
    variation :: (Int, Int, Int)
-> (Int, Int, Int) -> (Int, Int, Int) -> SequenceT Sollu
variation (Int
a1, Int
a2, Int
a3) (Int
b1, Int
b2, Int
b3) (Int
c1, Int
c2, Int
c3) =
        SequenceT Sollu -> SequenceT Sollu
reduce (SequenceT Sollu
tatforall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__forall a. Monoid a => a -> a -> a
.SequenceT Sollu
ditforall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__forall a. Monoid a => a -> a -> a
.SequenceT Sollu
takadinnaforall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__forall a. Monoid a => a -> a -> a
.SequenceT Sollu
dinga)
        forall a. Monoid a => a -> a -> a
. forall sollu.
SequenceT sollu
-> SequenceT sollu
-> SequenceT sollu
-> SequenceT sollu
-> SequenceT sollu
trin (SequenceT Sollu
tangforall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__forall a. Monoid a => a -> a -> a
.SequenceT Sollu
ga)
            (forall sollu.
SequenceT sollu
-> SequenceT sollu
-> SequenceT sollu
-> SequenceT sollu
-> SequenceT sollu
trin forall a. Monoid a => a
ø (forall sollu. Int -> SequenceT sollu
pat Int
a1) (forall sollu. Int -> SequenceT sollu
pat Int
a2) (forall sollu. Int -> SequenceT sollu
pat Int
a3))
            (forall sollu.
SequenceT sollu
-> SequenceT sollu
-> SequenceT sollu
-> SequenceT sollu
-> SequenceT sollu
trin forall a. Rest a => a
__ (forall sollu. Int -> SequenceT sollu
pat Int
b1) (forall sollu. Int -> SequenceT sollu
pat Int
b2) (forall sollu. Int -> SequenceT sollu
pat Int
b3))
            (forall sollu.
SequenceT sollu
-> SequenceT sollu
-> SequenceT sollu
-> SequenceT sollu
-> SequenceT sollu
trin forall sollu. SequenceT sollu
__3 (forall sollu. Int -> SequenceT sollu
pat Int
c1) (forall sollu. Int -> SequenceT sollu
pat Int
c2) (forall sollu. Int -> SequenceT sollu
pat Int
c3))
    reduce :: SequenceT Sollu -> SequenceT Sollu
reduce = forall sollu.
Pretty sollu =>
FMatra -> SequenceT sollu -> SequenceT sollu -> SequenceT sollu
reduce3 FMatra
2 forall a. Monoid a => a
ø
    mridangam :: StrokeMaps
mridangam = StrokeMap Stroke -> StrokeMaps
makeMridangam
        [ (SequenceT Sollu
tatforall a. Monoid a => a -> a -> a
.SequenceT Sollu
dit, forall {g}. Sequence g (Note (Stroke Stroke))
kforall a. Monoid a => a -> a -> a
.forall {g}. Sequence g (Note (Stroke Stroke))
t)
        , (SequenceT Sollu
kaforall a. Monoid a => a -> a -> a
.SequenceT Sollu
dinforall a. Monoid a => a -> a -> a
.SequenceT Sollu
na, 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))
k)
        , (SequenceT 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 a. Rest a => a
__)
        , (SequenceT Sollu
tangforall a. Monoid a => a -> a -> a
.SequenceT Sollu
ga, forall {g}. Sequence g (Note (Stroke Stroke))
uforall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__)
        ]

t4s2 :: Korvai
t4s2 :: Korvai
t4s2 = Korvai -> Korvai
ganesh forall a b. (a -> b) -> a -> b
$ Tala -> StrokeMaps -> [SequenceT 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
6)
    [ SequenceT Sollu
purvangam1 forall a. Monoid a => a -> a -> a
. forall sollu. SequenceT sollu -> SequenceT sollu
tri (SequenceT Sollu
taforall a. Monoid a => a -> a -> a
.SequenceT Sollu
dinforall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__forall a. Monoid a => a -> a -> a
.forall sollu. SequenceT sollu
p5)
    , SequenceT Sollu
purvangam1 forall a. Monoid a => a -> a -> a
. SequenceT Sollu
takaforall a. Monoid a => a -> a -> a
.forall sollu. SequenceT sollu
p5 forall a. Monoid a => a -> a -> a
. SequenceT Sollu
taforall a. Monoid a => a -> a -> a
.SequenceT Sollu
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
. SequenceT Sollu
takaforall a. Monoid a => a -> a -> a
.SequenceT Sollu
dinforall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__forall a. Monoid a => a -> a -> a
.forall sollu. SequenceT sollu
p5

    , Int -> SequenceT Sollu
purvangam2 Int
6 forall a. Monoid a => a -> a -> a
. forall sollu. SequenceT sollu -> SequenceT sollu
tri (SequenceT Sollu
takaforall a. Monoid a => a -> a -> a
.SequenceT Sollu
taforall a. Monoid a => a -> a -> a
.SequenceT Sollu
dinforall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__forall a. Monoid a => a -> a -> a
.forall sollu. SequenceT sollu
p5)
    , Int -> SequenceT Sollu
purvangam2 Int
4 forall a. Monoid a => a -> a -> a
. forall sollu. SequenceT sollu -> SequenceT sollu
tri (SequenceT Sollu
tatforall a. Monoid a => a -> a -> a
.forall sollu. SequenceT sollu
__4forall a. Monoid a => a -> a -> a
.SequenceT Sollu
taforall a. Monoid a => a -> a -> a
.SequenceT Sollu
dinforall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__forall a. Monoid a => a -> a -> a
.forall sollu. SequenceT sollu
p5)
    , Int -> SequenceT Sollu
purvangam2 Int
2 forall a. Monoid a => a -> a -> a
. forall sollu. SequenceT sollu -> SequenceT sollu
tri (SequenceT Sollu
taforall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__forall a. Monoid a => a -> a -> a
.SequenceT Sollu
gaforall a. Monoid a => a -> a -> a
.SequenceT Sollu
dinforall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__forall a. Monoid a => a -> a -> a
.SequenceT Sollu
gaforall a. Monoid a => a -> a -> a
.forall sollu. SequenceT sollu
p8)
    ]
    where
    purvangam1 :: SequenceT Sollu
purvangam1 =
        SequenceT Sollu
ta_katakitaforall a. Monoid a => a -> a -> a
.SequenceT Sollu
takadinna forall a. Monoid a => a -> a -> a
. SequenceT Sollu
takita forall a. Monoid a => a -> a -> a
. SequenceT Sollu
tamforall a. Monoid a => a -> a -> a
.forall sollu. SequenceT sollu
__6
        forall a. Monoid a => a -> a -> a
. SequenceT Sollu
ta_katakitaforall a. Monoid a => a -> a -> a
.SequenceT Sollu
takadinna forall a. Monoid a => a -> a -> a
. forall a. Monoid a => a -> a
r2 (SequenceT Sollu
takita) forall a. Monoid a => a -> a -> a
. SequenceT Sollu
tamforall a. Monoid a => a -> a -> a
.forall sollu. SequenceT sollu
__6
        forall a. Monoid a => a -> a -> a
. SequenceT Sollu
ta_katakitaforall a. Monoid a => a -> a -> a
.SequenceT Sollu
takadinna forall a. Monoid a => a -> a -> a
. forall a. Monoid a => a -> a
r3 (SequenceT Sollu
takita) forall a. Monoid a => a -> a -> a
. SequenceT Sollu
tamforall a. Monoid a => a -> a -> a
.forall sollu. SequenceT sollu
__6
    purvangam2 :: Int -> SequenceT Sollu
purvangam2 Int
gap = forall sollu. SequenceT sollu -> SequenceT sollu
tri (SequenceT Sollu
ta_katakitaforall a. Monoid a => a -> a -> a
.SequenceT Sollu
takadinna forall a. Monoid a => a -> a -> a
. SequenceT Sollu
takitaforall a. Monoid a => a -> a -> a
.forall sollu. SequenceT sollu
__2 forall a. Monoid a => a -> a -> a
. SequenceT Sollu
tamforall a. Monoid a => a -> a -> a
.forall sollu. Int -> SequenceT sollu
__n Int
gap)
    mridangam :: StrokeMaps
mridangam = StrokeMap Stroke -> StrokeMaps
makeMridangam forall a b. (a -> b) -> a -> b
$
        [ (SequenceT Sollu
takita, Sequence Group (Note (Stroke Stroke))
onforall 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)
        , (SequenceT Sollu
tam, forall {g}. Sequence g (Note (Stroke Stroke))
od)
        , (SequenceT Sollu
taforall a. Monoid a => a -> a -> a
.SequenceT Sollu
din, forall {g}. Sequence g (Note (Stroke Stroke))
kforall a. Monoid a => a -> a -> a
.forall {g}. Sequence g (Note (Stroke Stroke))
od)
        , (SequenceT Sollu
taka, forall {g}. Sequence g (Note (Stroke Stroke))
kforall a. Monoid a => a -> a -> a
.forall {g}. Sequence g (Note (Stroke Stroke))
p)
        , (SequenceT Sollu
takaforall a. Monoid a => a -> a -> a
.SequenceT Sollu
din, 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))
od)
        , (SequenceT Sollu
tat, forall {g}. Sequence g (Note (Stroke Stroke))
k)
        , (SequenceT Sollu
taforall a. Monoid a => a -> a -> a
.SequenceT Sollu
gaforall a. Monoid a => a -> a -> a
.SequenceT Sollu
dinforall a. Monoid a => a -> a -> a
.SequenceT Sollu
ga, 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))
p)
        ] forall a. [a] -> [a] -> [a]
++ StrokeMap Stroke
m_ta_katakita

t4s3 :: Korvai
t4s3 :: Korvai
t4s3 = Korvai -> Korvai
ganesh forall a b. (a -> b) -> a -> b
$ Tala -> StrokeMaps -> [SequenceT 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
6)
    [ SequenceT Sollu
ta_katakitaforall a. Monoid a => a -> a -> a
.SequenceT Sollu
takadinna forall a. Monoid a => a -> a -> a
. forall sollu. SequenceT sollu -> SequenceT sollu
tri (SequenceT Sollu
tatforall a. Monoid a => a -> a -> a
.forall sollu. SequenceT sollu
__3forall a. Monoid a => a -> a -> a
.SequenceT Sollu
dinforall a. Monoid a => a -> a -> a
.forall sollu. SequenceT sollu
__3) forall a. Monoid a => a -> a -> a
. forall sollu. SequenceT sollu
__7
        forall a. Monoid a => a -> a -> a
. SequenceT Sollu
ta_katakitaforall a. Monoid a => a -> a -> a
.SequenceT Sollu
takadinna forall a. Monoid a => a -> a -> a
. forall sollu. SequenceT sollu -> SequenceT sollu
tri (SequenceT Sollu
tatforall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__forall a. Monoid a => a -> a -> a
.SequenceT Sollu
dinforall a. Monoid a => a -> a -> a
.forall sollu. SequenceT sollu
__3) forall a. Monoid a => a -> a -> a
. forall sollu. SequenceT sollu
__7
        forall a. Monoid a => a -> a -> a
. SequenceT Sollu
ta_katakitaforall a. Monoid a => a -> a -> a
.SequenceT Sollu
takadinna forall a. Monoid a => a -> a -> a
. forall sollu. SequenceT sollu -> SequenceT sollu
tri (SequenceT Sollu
tatforall a. Monoid a => a -> a -> a
.SequenceT Sollu
dinforall a. Monoid a => a -> a -> a
.forall sollu. SequenceT sollu
__3) forall a. Monoid a => a -> a -> a
. forall sollu. SequenceT sollu
__7
    forall a. Monoid a => a -> a -> a
. forall sollu.
SequenceT sollu
-> SequenceT sollu
-> SequenceT sollu
-> SequenceT sollu
-> SequenceT sollu
trin (SequenceT Sollu
langforall a. Monoid a => a -> a -> a
.forall sollu. SequenceT sollu
__6)
        (forall sollu. SequenceT sollu -> SequenceT sollu
tri (SequenceT Sollu
tatforall a. Monoid a => a -> a -> a
.forall sollu. SequenceT sollu
__3forall a. Monoid a => a -> a -> a
.SequenceT Sollu
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 sollu. SequenceT sollu -> SequenceT sollu
tri (SequenceT Sollu
tatforall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__forall a. Monoid a => a -> a -> a
.SequenceT Sollu
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 sollu. SequenceT sollu -> SequenceT sollu
tri (SequenceT Sollu
tatforall a. Monoid a => a -> a -> a
.SequenceT Sollu
dinforall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__forall a. Monoid a => a -> a -> a
.forall sollu. SequenceT sollu
p5))
    ]
    where
    mridangam :: StrokeMaps
mridangam = StrokeMap Stroke -> StrokeMaps
makeMridangam forall a b. (a -> b) -> a -> b
$
        [ (SequenceT Sollu
tatforall a. Monoid a => a -> a -> a
.SequenceT Sollu
din, forall {g}. Sequence g (Note (Stroke Stroke))
kforall a. Monoid a => a -> a -> a
.forall {g}. Sequence g (Note (Stroke Stroke))
od)
        ] forall a. [a] -> [a] -> [a]
++ StrokeMap Stroke
m_ta_katakita

ta_katakita :: Sequence
ta_katakita :: SequenceT Sollu
ta_katakita = SequenceT Sollu
taforall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__forall a. Monoid a => a -> a -> a
.SequenceT Sollu
kaforall a. Monoid a => a -> a -> a
.SequenceT Sollu
taforall a. Monoid a => a -> a -> a
.SequenceT Sollu
kitataka

m_ta_katakita :: StrokeMap Mridangam.Stroke
m_ta_katakita :: StrokeMap Stroke
m_ta_katakita =
    [ (SequenceT Sollu
ta_katakita, 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))
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))
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)
    ]

t5s :: Korvai
t5s :: Korvai
t5s = Korvai -> Korvai
ganesh forall a b. (a -> b) -> a -> b
$ Tala -> StrokeMaps -> [SequenceT 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
6 forall b c a. (b -> c) -> (a -> b) -> a -> c
 (SequenceT Sollu
purvangam.))
    [ forall sollu. SequenceT sollu -> SequenceT sollu -> SequenceT sollu
tri123 (SequenceT Sollu
tatforall a. Monoid a => a -> a -> a
.forall sollu. SequenceT sollu
__6forall a. Monoid a => a -> a -> a
.SequenceT Sollu
dinforall a. Monoid a => a -> a -> a
.forall sollu. SequenceT sollu
__6) forall sollu. SequenceT sollu
p6
    , forall sollu. SequenceT sollu -> SequenceT sollu -> SequenceT sollu
tri123 (SequenceT Sollu
tatforall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__forall a. Monoid a => a -> a -> a
.SequenceT Sollu
kaforall a. Monoid a => a -> a -> a
.SequenceT Sollu
dinforall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__forall a. Monoid a => a -> a -> a
.SequenceT Sollu
taforall a. Monoid a => a -> a -> a
.SequenceT Sollu
dinforall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__forall a. Monoid a => a -> a -> a
.SequenceT Sollu
ka) forall sollu. SequenceT sollu
p7
    , forall sollu. SequenceT sollu -> SequenceT sollu -> SequenceT sollu
tri123 (SequenceT Sollu
tatforall a. Monoid a => a -> a -> a
.forall sollu. SequenceT sollu
__3forall a. Monoid a => a -> a -> a
.SequenceT Sollu
dinforall a. Monoid a => a -> a -> a
.forall sollu. SequenceT sollu
__3) (SequenceT Sollu
taforall a. Monoid a => a -> a -> a
.SequenceT Sollu
dinforall a. Monoid a => a -> a -> a
.forall sollu. SequenceT sollu
__2forall a. Monoid a => a -> a -> a
.forall sollu. SequenceT sollu
p5)
    , forall sollu. SequenceT sollu -> SequenceT sollu -> SequenceT sollu
tri123 (SequenceT Sollu
tangforall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__forall a. Monoid a => a -> a -> a
.SequenceT Sollu
ga) (SequenceT Sollu
tatforall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__forall a. Monoid a => a -> a -> a
.SequenceT Sollu
dinforall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__forall a. Monoid a => a -> a -> a
.forall sollu. SequenceT sollu
p5)
    , let tadin :: SequenceT Sollu
tadin = SequenceT Sollu
taforall a. Monoid a => a -> a -> a
.SequenceT Sollu
dinforall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__forall a. Monoid a => a -> a -> a
.SequenceT Sollu
taforall a. Monoid a => a -> a -> a
.SequenceT Sollu
thomforall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__
        in forall sollu.
SequenceT sollu
-> SequenceT sollu
-> SequenceT sollu
-> SequenceT sollu
-> SequenceT sollu
trin (SequenceT Sollu
tangforall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__forall a. Monoid a => a -> a -> a
.SequenceT Sollu
ga) (SequenceT Sollu
tadinforall a. Monoid a => a -> a -> a
.forall sollu. SequenceT sollu
p6) (SequenceT Sollu
tadinforall a. Monoid a => a -> a -> a
.forall sollu. SequenceT sollu
p6forall a. Monoid a => a -> a -> a
.forall sollu. SequenceT sollu
p6) (SequenceT Sollu
tadinforall a. Monoid a => a -> a -> a
.forall sollu. SequenceT sollu
p6forall a. Monoid a => a -> a -> a
.forall sollu. SequenceT sollu
p6forall a. Monoid a => a -> a -> a
.forall sollu. SequenceT sollu
p6)
    , forall sollu.
SequenceT sollu
-> SequenceT sollu
-> SequenceT sollu
-> SequenceT sollu
-> SequenceT sollu
trin (SequenceT Sollu
tangforall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__)
        (SequenceT Sollu
takaforall a. Monoid a => a -> a -> a
.SequenceT Sollu
taforall a. Monoid a => a -> a -> a
.SequenceT Sollu
dinforall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__ forall a. Monoid a => a -> a -> a
. forall sollu. SequenceT sollu
p5)
        (SequenceT Sollu
takaforall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__forall a. Monoid a => a -> a -> a
.SequenceT Sollu
taforall a. Monoid a => a -> a -> a
.SequenceT Sollu
dinforall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__ forall a. Monoid a => a -> a -> a
. forall sollu. SequenceT sollu
p6forall a. Monoid a => a -> a -> a
.forall sollu. SequenceT sollu
p6)
        (SequenceT Sollu
taforall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__forall a. Monoid a => a -> a -> a
.SequenceT Sollu
kaforall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__forall a. Monoid a => a -> a -> a
.SequenceT Sollu
taforall a. Monoid a => a -> a -> a
.SequenceT Sollu
dinforall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__ forall a. Monoid a => a -> a -> a
. forall sollu. SequenceT sollu
p7forall a. Monoid a => a -> a -> a
.forall sollu. SequenceT sollu
p7forall a. Monoid a => a -> a -> a
.forall sollu. SequenceT sollu
p7)
    , forall sollu.
SequenceT sollu
-> SequenceT sollu
-> SequenceT sollu
-> SequenceT sollu
-> SequenceT sollu
trin (SequenceT Sollu
tangforall a. Monoid a => a -> a -> a
.forall sollu. SequenceT sollu
__4)
        (SequenceT Sollu
taforall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__forall a. Monoid a => a -> a -> a
.SequenceT Sollu
kaforall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__forall a. Monoid a => a -> a -> a
.SequenceT Sollu
taforall a. Monoid a => a -> a -> a
.SequenceT Sollu
dinforall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__ forall a. Monoid a => a -> a -> a
. forall sollu. SequenceT sollu
p7)
        (SequenceT Sollu
takaforall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__forall a. Monoid a => a -> a -> a
.SequenceT Sollu
taforall a. Monoid a => a -> a -> a
.SequenceT Sollu
dinforall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__ forall a. Monoid a => a -> a -> a
. forall sollu. SequenceT sollu
p6forall a. Monoid a => a -> a -> a
.forall sollu. SequenceT sollu
p6)
        (SequenceT Sollu
takaforall a. Monoid a => a -> a -> a
.SequenceT Sollu
taforall a. Monoid a => a -> a -> a
.SequenceT Sollu
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 sollu. SequenceT sollu
p5forall a. Monoid a => a -> a -> a
.forall sollu. SequenceT sollu
p5)
    ]
    where
    purvangam :: SequenceT Sollu
purvangam = forall a. Monoid a => [a] -> a
mconcat forall a b. (a -> b) -> a -> b
$ forall sollu.
(Stack, Pretty sollu) =>
Int -> FMatra -> SequenceT sollu -> [SequenceT sollu]
expand Int
3 FMatra
3 (SequenceT Sollu
tatforall a. Monoid a => a -> a -> a
.forall sollu. SequenceT sollu
__3forall a. Monoid a => a -> a -> a
.SequenceT Sollu
ditforall a. Monoid a => a -> a -> a
.forall sollu. SequenceT sollu
__3forall a. Monoid a => a -> a -> a
.SequenceT Sollu
tatforall a. Monoid a => a -> a -> a
.forall sollu. SequenceT sollu
__3forall a. Monoid a => a -> a -> a
.SequenceT Sollu
taforall a. Monoid a => a -> a -> a
.SequenceT Sollu
kiforall a. Monoid a => a -> a -> a
.SequenceT Sollu
taforall a. Monoid a => a -> a -> a
.SequenceT Sollu
thomforall a. Monoid a => a -> a -> a
.forall sollu. SequenceT sollu
__3)
    mridangam :: StrokeMaps
mridangam = StrokeMap Stroke -> StrokeMaps
makeMridangam
        [ (SequenceT Sollu
tat, forall {g}. Sequence g (Note (Stroke Stroke))
k)
        , (SequenceT Sollu
tatforall a. Monoid a => a -> a -> a
.SequenceT Sollu
dit, forall {g}. Sequence g (Note (Stroke Stroke))
kforall a. Monoid a => a -> a -> a
.forall {g}. Sequence g (Note (Stroke Stroke))
t)
        , (SequenceT Sollu
taforall a. Monoid a => a -> a -> a
.SequenceT Sollu
kiforall a. Monoid a => a -> a -> a
.SequenceT Sollu
taforall a. Monoid a => a -> a -> a
.SequenceT Sollu
thom, 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))
od)
        , (SequenceT Sollu
tatforall a. Monoid a => a -> a -> a
.SequenceT Sollu
kaforall a. Monoid a => a -> a -> a
.SequenceT Sollu
dinforall a. Monoid a => a -> a -> a
.SequenceT Sollu
taforall a. Monoid a => a -> a -> a
.SequenceT Sollu
dinforall a. Monoid a => a -> a -> a
.SequenceT Sollu
ka, 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))
odforall 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))
dforall a. Monoid a => a -> a -> a
.forall {g}. Sequence g (Note (Stroke Stroke))
p)
        , (SequenceT Sollu
taforall a. Monoid a => a -> a -> a
.SequenceT Sollu
din, forall {g}. Sequence g (Note (Stroke Stroke))
kforall a. Monoid a => a -> a -> a
.forall {g}. Sequence g (Note (Stroke Stroke))
od)
        , (SequenceT Sollu
tangforall a. Monoid a => a -> a -> a
.SequenceT Sollu
ga, forall {g}. Sequence g (Note (Stroke Stroke))
uforall a. Monoid a => a -> a -> a
.forall {g}. Sequence g (Note (Stroke Stroke))
p)
        , (SequenceT Sollu
taforall a. Monoid a => a -> a -> a
.SequenceT Sollu
dinforall a. Monoid a => a -> a -> a
.SequenceT Sollu
taforall a. Monoid a => a -> a -> a
.SequenceT Sollu
thom, 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))
od)

        , (SequenceT Sollu
takaforall a. Monoid a => a -> a -> a
.SequenceT Sollu
ta, 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)
        , (SequenceT Sollu
din, forall {g}. Sequence g (Note (Stroke Stroke))
od)
        ]

-- * koraippu

-- lead to misra:
-- tisram: tri (ta ka takitataka nakadit thom) spread 3 tdgnt ...
-- wait 2, repeat until tan7: od.__.p.k.n.o.o.k
--
-- wait 2, tri_ (thom.__0) (takadinna)
--      . r2 (ta.__3.ta.takadinna)

misra_lead :: Korvai -- but add one akshara, so it lands on 1.
misra_lead :: Korvai
misra_lead = Tala -> StrokeMaps -> SequenceT Sollu -> Korvai
korvaiS1 Tala
adi StrokeMaps
mridangam forall a b. (a -> b) -> a -> b
$ forall g sollu. Sequence g sollu -> Sequence g sollu
su forall a b. (a -> b) -> a -> b
$
    forall sollu. Int -> SequenceT sollu
__M Int
8 forall a. Monoid a => a -> a -> a
. forall sollu. SequenceT sollu -> SequenceT sollu -> SequenceT sollu
tri_ (SequenceT Sollu
tamforall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__) SequenceT Sollu
takadinna
    forall a. Monoid a => a -> a -> a
. forall a. Monoid a => a -> a
r2 (SequenceT Sollu
taforall a. Monoid a => a -> a -> a
.forall sollu. SequenceT sollu
__3forall a. Monoid a => a -> a -> a
.SequenceT Sollu
taforall a. Monoid a => a -> a -> a
.SequenceT Sollu
takadinna)
    forall a. Monoid a => a -> a -> a
. forall sollu.
SequenceT sollu
-> SequenceT sollu
-> SequenceT sollu
-> SequenceT sollu
-> SequenceT sollu
trin (SequenceT Sollu
tamforall a. Monoid a => a -> a -> a
.forall sollu. SequenceT sollu
__3) (SequenceT Sollu
taforall a. Monoid a => a -> a -> a
.SequenceT Sollu
dinforall a. Monoid a => a -> a -> a
.SequenceT Sollu
na) (forall a. Monoid a => a -> a
r2 (SequenceT Sollu
taforall a. Monoid a => a -> a -> a
.SequenceT Sollu
dinforall a. Monoid a => a -> a -> a
.SequenceT Sollu
na)) (forall a. Monoid a => a -> a
r3 (SequenceT Sollu
taforall a. Monoid a => a -> a -> a
.SequenceT Sollu
dinforall a. Monoid a => a -> a -> a
.SequenceT Sollu
na))
    where
    mridangam :: StrokeMaps
mridangam = StrokeMap Stroke -> StrokeMaps
makeMridangam
       [ (SequenceT Sollu
taforall a. Monoid a => a -> a -> a
.SequenceT Sollu
taforall a. Monoid a => a -> a -> a
.SequenceT Sollu
takadinna, forall {g}. Sequence g (Note (Stroke Stroke))
odforall 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))
k)
       , (SequenceT Sollu
taforall a. Monoid a => a -> a -> a
.SequenceT Sollu
dinforall a. Monoid a => a -> a -> a
.SequenceT Sollu
na, 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)
       , (SequenceT Sollu
tam, forall {g}. Sequence g (Note (Stroke Stroke))
od)
       ]

koraippu_misra_no_karvai :: Korvai
koraippu_misra_no_karvai :: Korvai
koraippu_misra_no_karvai = Korvai -> Korvai
koraippu forall a b. (a -> b) -> a -> b
$ Korvai -> Korvai
ganesh forall a b. (a -> b) -> a -> b
$ Tala -> StrokeMaps -> [SequenceT 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. Sequence g sollu -> Sequence g sollu
su
    [ forall b a. Monoid b => (a -> b) -> [a] -> b
mconcatMap Int -> SequenceT Sollu
long [Int
1..Int
7] -- 2 avartanam
    , forall b a. Monoid b => (a -> b) -> [a] -> b
mconcatMap (forall b a. Monoid b => (a -> b) -> [a] -> b
mconcatMap Int -> SequenceT Sollu
short) [[Int
1, Int
2], [Int
3, Int
4], [Int
5, Int
6], [Int
7, Int
7]] -- 1 avart
    , forall a. Monoid a => [a] -> a
group2 [Int -> SequenceT Sollu
half Int
n forall a. Monoid a => a -> a -> a
. Int -> SequenceT Sollu
half (forall a. Ord a => a -> a -> a
min Int
7 (Int
nforall a. Num a => a -> a -> a
+Int
1)) | Int
n <- [Int
1,Int
3..Int
7]] -- 1/2 avartanam
    , forall a. Monoid a => a -> a
r8 (forall a. Rest a => a
__forall a. Monoid a => a -> a -> a
.forall sollu. SequenceT sollu
p7)
    , forall a. Rest a => a
__ forall a. Monoid a => a -> a -> a
. forall a. Monoid a => a -> a
r5 forall sollu. SequenceT sollu
p7 forall a. Monoid a => a -> a -> a
. forall g sollu. Int -> Sequence g sollu -> Sequence g sollu
nadai Int
3 (forall sollu. SequenceT sollu -> SequenceT sollu
tri forall sollu. SequenceT sollu
p7)
    -- to mohra korvai sequence
    ]
    where
    group2 :: [b] -> b
group2 [b]
seq = forall b a. Monoid b => (a -> b) -> [a] -> b
mconcatMap forall a. Monoid a => [a] -> a
mconcat (forall a. Int -> [a] -> [[a]]
Lists.chunked Int
2 [b]
seq)
    -- 8 + 8*7 (3+2 + 3)
    long :: Int -> SequenceT Sollu
long Int
n = SequenceT Sollu
dinforall a. Monoid a => a -> a -> a
.forall sollu. SequenceT sollu
__8 forall a. Monoid a => a -> a -> a
. forall sollu. SequenceT sollu -> SequenceT sollu -> SequenceT sollu
tri_ (forall sollu. Int -> SequenceT sollu
gap Int
n forall a. Monoid a => a -> a -> a
. Int -> SequenceT Sollu
fill Int
n) SequenceT Sollu
tan7
        forall a. Monoid a => a -> a -> a
. forall sollu. Int -> SequenceT sollu
gap Int
n forall a. Monoid a => a -> a -> a
. forall sollu. SequenceT sollu -> SequenceT sollu -> SequenceT sollu
tri_ (Int -> SequenceT Sollu
karvai Int
n) (Int -> SequenceT Sollu
fill Int
n)
    -- 4 + 4*7 (1 + 3)
    short :: Int -> SequenceT Sollu
short Int
n = SequenceT Sollu
dinforall a. Monoid a => a -> a -> a
.forall sollu. SequenceT sollu
__4 forall a. Monoid a => a -> a -> a
. SequenceT Sollu
tan7 forall a. Monoid a => a -> a -> a
. forall sollu. Int -> SequenceT sollu
gap Int
n forall a. Monoid a => a -> a -> a
. forall sollu. SequenceT sollu -> SequenceT sollu -> SequenceT sollu
tri_ (Int -> SequenceT Sollu
karvai Int
n) (Int -> SequenceT Sollu
fill Int
n)
    half :: Int -> SequenceT Sollu
half Int
n = SequenceT Sollu
dinforall a. Monoid a => a -> a -> a
.forall sollu. SequenceT sollu
__2 forall a. Monoid a => a -> a -> a
. SequenceT Sollu
tan7 forall a. Monoid a => a -> a -> a
. forall sollu. Int -> SequenceT sollu
gap Int
n forall a. Monoid a => a -> a -> a
. Int -> SequenceT Sollu
fill Int
n

    gap :: Int -> SequenceT sollu
gap Int
n = forall sollu. Int -> SequenceT sollu
__n (Int
7forall a. Num a => a -> a -> a
-Int
nforall a. Num a => a -> a -> a
+Int
1)
    fill :: Int -> SequenceT Sollu
fill Int
n = (forall a. [a] -> Int -> a
!! (Int
nforall a. Num a => a -> a -> a
-Int
1))
        [ SequenceT Sollu
ta
        , SequenceT Sollu
taka
        , SequenceT Sollu
taforall a. Monoid a => a -> a -> a
.SequenceT Sollu
dinforall a. Monoid a => a -> a -> a
.SequenceT Sollu
na
        , SequenceT Sollu
takadinna
        , forall sollu. SequenceT sollu
p5
        , forall sollu. SequenceT sollu
p6
        , forall sollu. SequenceT sollu
p7
        ]
    karvai :: Int -> SequenceT Sollu
karvai Int
n_
        | Int
n forall a. Ord a => a -> a -> Bool
> Int
1 = SequenceT Sollu
din forall a. Monoid a => a -> a -> a
. forall sollu. Int -> SequenceT sollu
__n Int
n
        | Bool
otherwise = forall sollu. Int -> SequenceT sollu
__n (Int
nforall a. Num a => a -> a -> a
+Int
1)
        where n :: Int
n = Int
7 forall a. Num a => a -> a -> a
- Int
n_

    tan7 :: SequenceT Sollu
tan7 = SequenceT Sollu
tangforall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__forall a. Monoid a => a -> a -> a
.SequenceT Sollu
gaforall a. Monoid a => a -> a -> a
.SequenceT Sollu
dinforall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__forall a. Monoid a => a -> a -> a
.SequenceT Sollu
gaforall a. Monoid a => a -> a -> a
.SequenceT Sollu
din
    mridangam :: StrokeMaps
mridangam = StrokeMap Stroke -> StrokeMaps
makeMridangam
        [ (SequenceT Sollu
tangforall a. Monoid a => a -> a -> a
.SequenceT Sollu
ga, Sequence Group (Note (Stroke Stroke))
onforall a. Monoid a => a -> a -> a
.forall {g}. Sequence g (Note (Stroke Stroke))
k)
        , (SequenceT Sollu
dinforall a. Monoid a => a -> a -> a
.SequenceT Sollu
ga, forall {g}. Sequence g (Note (Stroke Stroke))
odforall a. Monoid a => a -> a -> a
.forall {g}. Sequence g (Note (Stroke Stroke))
k)
        , (SequenceT Sollu
din, forall {g}. Sequence g (Note (Stroke Stroke))
od)
        , (SequenceT Sollu
ta, forall {g}. Sequence g (Note (Stroke Stroke))
k)
        , (SequenceT Sollu
taka, forall {g}. Sequence g (Note (Stroke Stroke))
pforall a. Monoid a => a -> a -> a
.forall {g}. Sequence g (Note (Stroke Stroke))
k)
        , (SequenceT Sollu
taforall a. Monoid a => a -> a -> a
.SequenceT Sollu
dinforall a. Monoid a => a -> a -> a
.SequenceT Sollu
na, 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)
        ]

koraippu_misra :: Korvai
koraippu_misra :: Korvai
koraippu_misra = Korvai -> Korvai
koraippu forall a b. (a -> b) -> a -> b
$ Korvai -> Korvai
ganesh forall a b. (a -> b) -> a -> b
$ Tala -> StrokeMaps -> [SequenceT 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. Sequence g sollu -> Sequence g sollu
su
    [ forall b a. Monoid b => (a -> b) -> [a] -> b
mconcatMap Int -> SequenceT Sollu
long [Int
1..Int
7] -- 2 avartanam
    , forall b a. Monoid b => (a -> b) -> [a] -> b
mconcatMap (forall b a. Monoid b => (a -> b) -> [a] -> b
mconcatMap Int -> SequenceT Sollu
short) [[Int
1, Int
2], [Int
3, Int
4], [Int
5, Int
6], [Int
7, Int
7]] -- 1 avart
    , forall a. Monoid a => [a] -> a
group2 [Int -> SequenceT Sollu
half Int
n forall a. Monoid a => a -> a -> a
. Int -> SequenceT Sollu
half (forall a. Ord a => a -> a -> a
min Int
7 (Int
nforall a. Num a => a -> a -> a
+Int
1)) | Int
n <- [Int
1,Int
3..Int
7]] -- 1/2 avartanam
    , forall a. Monoid a => a -> a
r8 (forall a. Rest a => a
__forall a. Monoid a => a -> a -> a
.forall sollu. SequenceT sollu
p7)
    , forall a. Rest a => a
__ forall a. Monoid a => a -> a -> a
. forall a. Monoid a => a -> a
r5 forall sollu. SequenceT sollu
p7 forall a. Monoid a => a -> a -> a
. forall g sollu. Int -> Sequence g sollu -> Sequence g sollu
nadai Int
3 (forall sollu. SequenceT sollu -> SequenceT sollu
tri forall sollu. SequenceT sollu
p7)
    -- to mohra korvai sequence
    ]
    where
    -- 8 + 8*7 (3+2 + 3)
    long :: Int -> SequenceT Sollu
long Int
n = forall sollu. Int -> SequenceT sollu
__M Int
8 forall a. Monoid a => a -> a -> a
. forall sollu. SequenceT sollu -> SequenceT sollu -> SequenceT sollu
tri_ (Int -> SequenceT Sollu
fill Int
n) SequenceT Sollu
tan7 forall a. Monoid a => a -> a -> a
. forall sollu. SequenceT sollu -> SequenceT sollu
tri (Int -> SequenceT Sollu
fill Int
n)
    -- 4 + 4*7 (1 + 3)
    short :: Int -> SequenceT Sollu
short Int
n = forall sollu. Int -> SequenceT sollu
__M Int
4 forall a. Monoid a => a -> a -> a
. SequenceT Sollu
tan7 forall a. Monoid a => a -> a -> a
. forall sollu. SequenceT sollu -> SequenceT sollu
tri (Int -> SequenceT Sollu
fill Int
n)
    half :: Int -> SequenceT Sollu
half Int
n = forall sollu. Int -> SequenceT sollu
__M Int
2 forall a. Monoid a => a -> a -> a
. SequenceT Sollu
tan7 forall a. Monoid a => a -> a -> a
. Int -> SequenceT Sollu
fill Int
n
    group2 :: [b] -> b
group2 [b]
seq = forall b a. Monoid b => (a -> b) -> [a] -> b
mconcatMap forall a. Monoid a => [a] -> a
mconcat (forall a. Int -> [a] -> [[a]]
Lists.chunked Int
2 [b]
seq)
    fill :: Int -> SequenceT Sollu
fill Int
n = [SequenceT Sollu]
fills forall a. [a] -> Int -> a
!! (Int
nforall a. Num a => a -> a -> a
-Int
1) forall a. Monoid a => a -> a -> a
. forall sollu.
(Stack, Pretty sollu) =>
SequenceT sollu -> SequenceT sollu
karvai SequenceT Sollu
din
    fills :: [SequenceT Sollu]
fills = forall a b c. (a -> b -> c) -> [a] -> [b] -> [c]
zipWith (\Int
n SequenceT Sollu
p -> forall sollu. Int -> SequenceT sollu
__n (Int
nforall a. Num a => a -> a -> a
+Int
1) forall a. Monoid a => a -> a -> a
. SequenceT Sollu
p) [Int
6, Int
5..]
        [ SequenceT Sollu
ta
        , SequenceT Sollu
taka
        , SequenceT Sollu
taforall a. Monoid a => a -> a -> a
.SequenceT Sollu
dinforall a. Monoid a => a -> a -> a
.SequenceT Sollu
na
        , SequenceT Sollu
takadinna
        , forall sollu. SequenceT sollu
p5
        , forall sollu. SequenceT sollu
p6
        , forall sollu. SequenceT sollu
p7
        ]
    tan7 :: SequenceT Sollu
tan7 = SequenceT Sollu
tangforall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__forall a. Monoid a => a -> a -> a
.SequenceT Sollu
gaforall a. Monoid a => a -> a -> a
.SequenceT Sollu
dinforall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__forall a. Monoid a => a -> a -> a
.SequenceT Sollu
gaforall a. Monoid a => a -> a -> a
.SequenceT Sollu
din
    mridangam :: StrokeMaps
mridangam = StrokeMap Stroke -> StrokeMaps
makeMridangam
        [ (SequenceT Sollu
tangforall a. Monoid a => a -> a -> a
.SequenceT Sollu
ga, Sequence Group (Note (Stroke Stroke))
onforall a. Monoid a => a -> a -> a
.forall {g}. Sequence g (Note (Stroke Stroke))
k)
        , (SequenceT Sollu
dinforall a. Monoid a => a -> a -> a
.SequenceT Sollu
ga, forall {g}. Sequence g (Note (Stroke Stroke))
odforall a. Monoid a => a -> a -> a
.forall {g}. Sequence g (Note (Stroke Stroke))
k)
        , (SequenceT Sollu
din, forall {g}. Sequence g (Note (Stroke Stroke))
od)
        , (SequenceT Sollu
ta, forall {g}. Sequence g (Note (Stroke Stroke))
k)
        , (SequenceT Sollu
taka, forall {g}. Sequence g (Note (Stroke Stroke))
pforall a. Monoid a => a -> a -> a
.forall {g}. Sequence g (Note (Stroke Stroke))
k)
        , (SequenceT Sollu
taforall a. Monoid a => a -> a -> a
.SequenceT Sollu
dinforall a. Monoid a => a -> a -> a
.SequenceT Sollu
na, 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)
        ]

-- * tirmanam

tir_18 :: Korvai
tir_18 :: Korvai
tir_18 = Korvai -> Korvai
tirmanam forall a b. (a -> b) -> a -> b
$ Tala -> StrokeMaps -> SequenceT Sollu -> Korvai
korvaiS1 Tala
adi StrokeMaps
mridangam forall a b. (a -> b) -> a -> b
$
    forall sollu.
(Stack, Pretty sollu) =>
Tala -> SequenceT sollu -> SequenceT sollu
__sam Tala
adi forall a b. (a -> b) -> a -> b
$ forall g sollu. Sequence g sollu -> Sequence g sollu
su forall a b. (a -> b) -> a -> b
$ forall sollu.
Pretty sollu =>
FMatra -> SequenceT sollu -> SequenceT sollu -> SequenceT sollu
reduce3 FMatra
2 forall a. Monoid a => a
ø (SequenceT Sollu
dhomforall a. Monoid a => a -> a -> a
.SequenceT Sollu
kaforall a. Monoid a => a -> a -> a
.SequenceT Sollu
dhomforall a. Monoid a => a -> a -> a
.SequenceT Sollu
kaforall a. Monoid a => a -> a -> a
.SequenceT Sollu
taforall a. Monoid a => a -> a -> a
.SequenceT Sollu
langforall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__forall a. Monoid a => a -> a -> a
.SequenceT Sollu
ga)
    where
    mridangam :: StrokeMaps
mridangam = StrokeMap Stroke -> StrokeMaps
makeMridangam
        [ (SequenceT Sollu
dhomforall a. Monoid a => a -> a -> a
.SequenceT Sollu
ka, forall {g}. Sequence g (Note (Stroke Stroke))
oforall a. Monoid a => a -> a -> a
.forall {g}. Sequence g (Note (Stroke Stroke))
k)
        , (SequenceT Sollu
taforall a. Monoid a => a -> a -> a
.SequenceT Sollu
langforall a. Monoid a => a -> a -> a
.SequenceT Sollu
ga, forall {g}. Sequence g (Note (Stroke Stroke))
pforall a. Monoid a => a -> a -> a
.forall {g}. Sequence g (Note (Stroke Stroke))
uforall a. Monoid a => a -> a -> a
.forall {g}. Sequence g (Note (Stroke Stroke))
k)
        ]