-- Copyright 2017 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.Solkattu2014 where
import Prelude hiding ((.), (^), repeat)
import qualified Data.List as List

import qualified Solkattu.Instrument.Mridangam as Mridangam

import Solkattu.Dsl.Solkattu


-- 2014-01-08 nadai practice

c_14_01_01 :: Korvai
c_14_01_01 :: Korvai
c_14_01_01 = Stack => Int -> Int -> Int -> Korvai -> Korvai
date Int
2014 Int
1 Int
1 forall a b. (a -> b) -> a -> b
$ Korvai -> Korvai
ganesh forall a b. (a -> b) -> a -> b
$ Tala -> StrokeMaps -> [Sequence] -> Korvai
korvaiS Tala
adi StrokeMaps
mridangam
    -- TODO back to sarva with D.__3/2
    [ forall sollu.
(Stack, Pretty sollu) =>
Tala -> SequenceT sollu -> SequenceT sollu
sarvaSam Tala
adi Sequence
theme forall a. Monoid a => a -> a -> a
. forall sollu.
(Stack, Pretty sollu) =>
Tala -> SequenceT sollu -> SequenceT sollu
sarvaSam Tala
adi (Sequence
kpforall a. Monoid a => a -> a -> a
.Sequence
theme) forall a. Monoid a => a -> a -> a
. forall sollu.
(Stack, Pretty sollu) =>
Tala -> SequenceT sollu -> SequenceT sollu
sarvaSam Tala
adi (Sequence
kpnpforall a. Monoid a => a -> a -> a
.Sequence
theme)
    , Sequence -> Sequence -> Sequence
structure (Sequence
dinforall a. Monoid a => a -> a -> a
.forall sollu. SequenceT sollu
__3) (Sequence
taforall a. Monoid a => a -> a -> a
.Sequence
dinforall a. Monoid a => a -> a -> a
.forall sollu. SequenceT sollu
__3 forall a. Monoid a => a -> a -> a
. forall sollu. SequenceT sollu
p5)
    , Sequence -> Sequence -> Sequence
structure (Sequence
dinforall a. Monoid a => a -> a -> a
.forall sollu. SequenceT sollu
__2) (Sequence
taforall a. Monoid a => a -> a -> a
.Sequence
dinforall a. Monoid a => a -> a -> a
.forall sollu. SequenceT sollu
__2 forall a. Monoid a => a -> a -> a
. forall sollu. SequenceT sollu
p5forall a. Monoid a => a -> a -> a
.Sequence
tamforall a. Monoid a => a -> a -> a
.forall sollu. SequenceT sollu
__2)
    , Sequence -> Sequence -> Sequence
structure Sequence
dhom (Sequence
kpforall a. Monoid a => a -> a -> a
.forall sollu. SequenceT sollu
p5forall a. Monoid a => a -> a -> a
.Sequence
tamforall a. Monoid a => a -> a -> a
.forall sollu. SequenceT sollu
__4)
    -- same, but in tisram
    , forall g sollu. Int -> Sequence g sollu -> Sequence g sollu
nadai Int
6 forall a b. (a -> b) -> a -> b
$ Sequence -> Sequence -> Sequence
structure (Sequence
dinforall a. Monoid a => a -> a -> a
.forall sollu. SequenceT sollu
__3) (Sequence
taforall a. Monoid a => a -> a -> a
.Sequence
dinforall a. Monoid a => a -> a -> a
.forall sollu. SequenceT sollu
__3 forall a. Monoid a => a -> a -> a
. forall sollu. SequenceT sollu
p5)
    -- etc.
    ]
    where
    structure :: Sequence -> Sequence -> Sequence
structure Sequence
gap Sequence
fill =
             Sequence
theme forall a. Monoid a => a -> a -> a
. Sequence
gap forall a. Monoid a => a -> a -> a
. Sequence
fill
         forall a. Monoid a => a -> a -> a
.Sequence
kpforall a. Monoid a => a -> a -> a
.Sequence
theme forall a. Monoid a => a -> a -> a
. Sequence
gap forall a. Monoid a => a -> a -> a
. Sequence
fill
       forall a. Monoid a => a -> a -> a
.Sequence
kpnpforall a. Monoid a => a -> a -> a
.Sequence
theme forall a. Monoid a => a -> a -> a
. Sequence
gap forall a. Monoid a => a -> a -> a
. forall sollu. SequenceT sollu -> SequenceT sollu
tri Sequence
fill
    theme :: Sequence
theme = Sequence
taforall a. Monoid a => a -> a -> a
.Sequence
ditforall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__forall a. Monoid a => a -> a -> a
.Sequence
taforall a. Monoid a => a -> a -> a
.Sequence
dinforall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__forall a. Monoid a => a -> a -> a
.Sequence
taforall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__forall a. Monoid a => a -> a -> a
.Sequence
dinforall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__forall a. Monoid a => a -> a -> a
.Sequence
taforall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__
    mridangam :: StrokeMaps
mridangam = StrokeMap Stroke -> StrokeMaps
makeMridangam
        [ (Sequence
taforall a. Monoid a => a -> a -> a
.Sequence
din, forall {g}. Sequence g (Note (Stroke Stroke))
kforall a. Monoid a => a -> a -> a
.forall {g}. Sequence g (Note (Stroke Stroke))
od)
        , (Sequence
taforall a. Monoid a => a -> a -> a
.Sequence
dit, forall {g}. Sequence g (Note (Stroke Stroke))
kforall a. Monoid a => a -> a -> a
.forall {g}. Sequence g (Note (Stroke Stroke))
t)
        , (Sequence
ta, forall {g}. Sequence g (Note (Stroke Stroke))
k)
        , (Sequence
dhom, forall {g}. Sequence g (Note (Stroke Stroke))
o)
        , (Sequence
tam, forall {g}. Sequence g (Note (Stroke Stroke))
u)
        ]

c_14_01_14 :: Korvai
c_14_01_14 :: Korvai
c_14_01_14 = Stack => Int -> Int -> Int -> Korvai -> Korvai
date Int
2014 Int
1 Int
14 forall a b. (a -> b) -> a -> b
$ Korvai -> Korvai
ganesh forall a b. (a -> b) -> a -> b
$ Tala -> StrokeMaps -> [Sequence] -> Korvai
korvaiS Tala
adi StrokeMaps
mridangam
    -- development
    [ forall sollu.
(Stack, Pretty sollu) =>
Tala -> SequenceT sollu -> SequenceT sollu
sarvaSam Tala
adi Sequence
theme -- end with tam!u
        forall a. Monoid a => a -> a -> a
. forall sollu.
(Stack, Pretty sollu) =>
Tala -> SequenceT sollu -> SequenceT sollu
sarvaSam Tala
adi (forall sollu.
(Stack, Pretty sollu) =>
FMatra -> SequenceT sollu -> SequenceT sollu
dropM FMatra
1 Sequence
theme)
        forall a. Monoid a => a -> a -> a
. forall sollu.
(Stack, Pretty sollu) =>
Duration -> SequenceT sollu -> SequenceT sollu
sarvaA_ Duration
4 Sequence
theme forall a. Monoid a => a -> a -> a
. forall sollu.
(Stack, Pretty sollu) =>
Duration -> SequenceT sollu -> SequenceT sollu
sarvaA_ Duration
4 (forall sollu.
(Stack, Pretty sollu) =>
FMatra -> SequenceT sollu -> SequenceT sollu
dropM FMatra
1 Sequence
theme)
        forall a. Monoid a => a -> a -> a
. forall sollu.
(Stack, Pretty sollu) =>
Duration -> SequenceT sollu -> SequenceT sollu
__a Duration
2 Sequence
theme forall a. Monoid a => a -> a -> a
. forall sollu.
(Stack, Pretty sollu) =>
Duration -> SequenceT sollu -> SequenceT sollu
__a Duration
2 (forall sollu.
(Stack, Pretty sollu) =>
FMatra -> SequenceT sollu -> SequenceT sollu
dropM FMatra
1 Sequence
theme)
        forall a. Monoid a => a -> a -> a
. forall sollu.
(Stack, Pretty sollu) =>
Duration -> SequenceT sollu -> SequenceT sollu
__a Duration
2 Sequence
theme 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 sollu.
(Stack, Pretty sollu) =>
FMatra -> SequenceT sollu -> SequenceT sollu
dropM FMatra
3 Sequence
theme)
    , forall sollu. SequenceT sollu -> SequenceT sollu -> SequenceT sollu
tri_ (Sequence
tamforall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__) Sequence
reduce
    , forall sollu.
SequenceT sollu
-> SequenceT sollu
-> SequenceT sollu
-> SequenceT sollu
-> SequenceT sollu
trin (Sequence
tamforall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__) Sequence
reduce Sequence
reduce Sequence
expand
    , forall sollu. SequenceT sollu -> SequenceT sollu -> SequenceT sollu
tri_ (Sequence
tamforall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__) Sequence
expand

    -- date 2014 1 23
    , Sequence -> Sequence
reduce1 forall a. Monoid a => a
ø forall a. Monoid a => a -> a -> a
. Int -> Sequence
utarangam Int
4
    , Sequence -> Sequence
reduce1 forall sollu. SequenceT sollu
__2 forall a. Monoid a => a -> a -> a
. Int -> Sequence
utarangam Int
3
    , Sequence -> Sequence
reduce1 forall sollu. SequenceT sollu
__3 forall a. Monoid a => a -> a -> a
. Int -> Sequence
utarangam Int
2

    , Sequence -> Sequence
expand1 forall a. Monoid a => a
ø forall a. Monoid a => a -> a -> a
. Int -> Sequence
utarangam Int
4
    , Sequence -> Sequence
expand1 forall sollu. SequenceT sollu
__2 forall a. Monoid a => a -> a -> a
. Int -> Sequence
utarangam Int
3
    , Sequence -> Sequence
expand1 forall sollu. SequenceT sollu
__3 forall a. Monoid a => a -> a -> a
. Int -> Sequence
utarangam Int
2
    ]
    where
    theme :: Sequence
theme = forall sollu. SequenceT sollu -> SequenceT sollu
g forall a b. (a -> b) -> a -> b
$ Sequence
thaforall a. Monoid a => a -> a -> a
.Sequence
kiforall a. Monoid a => a -> a -> a
.Sequence
taforall a. Monoid a => a -> a -> a
.Sequence
ta forall a. Monoid a => a -> a -> a
. forall g sollu. Sequence g sollu -> Sequence g sollu
su Sequence
kita forall a. Monoid a => a -> a -> a
. Sequence
thom
    reduce :: Sequence
reduce = forall sollu.
(Stack, Pretty sollu) =>
FMatra -> FMatra -> SequenceT sollu -> SequenceT sollu
reduceTo FMatra
2 FMatra
1 Sequence
theme
    expand :: Sequence
expand = forall a. Monoid a => [a] -> a
mconcat forall a b. (a -> b) -> a -> b
$ forall a. [a] -> [a]
List.reverse forall a b. (a -> b) -> a -> b
$ forall sollu.
(Stack, Pretty sollu) =>
FMatra -> FMatra -> SequenceT sollu -> [SequenceT sollu]
reduceToL FMatra
2 FMatra
1 Sequence
theme

    utarangam :: Int -> Sequence
utarangam Int
gap = forall a. Monoid a => a -> a
r3 (Sequence
tatforall a. Monoid a => a -> a -> a
.forall sollu. Int -> SequenceT sollu
__n Int
gap forall a. Monoid a => a -> a -> a
.Sequence
diforall a. Monoid a => a -> a -> a
.forall sollu. Int -> SequenceT sollu
__n Int
gap forall a. Monoid a => a -> a -> a
. forall sollu.
(Stack, Pretty sollu) =>
FMatra -> SequenceT sollu -> SequenceT sollu
dropM FMatra
1 Sequence
theme forall a. Monoid a => a -> a -> a
. Sequence
tamforall a. Monoid a => a -> a -> a
.forall sollu. SequenceT sollu
__2)
    reduce1 :: Sequence -> Sequence
reduce1 Sequence
karv = forall a. (Semigroup a, Monoid a) => [a] -> a -> a
prefixes (forall sollu.
(Stack, Pretty sollu) =>
FMatra -> FMatra -> SequenceT sollu -> [SequenceT sollu]
reduceToL FMatra
1 FMatra
1 Sequence
theme) Sequence
karv
    expand1 :: Sequence -> Sequence
expand1 Sequence
karv = forall a. (Semigroup a, Monoid a) => [a] -> a -> a
prefixes (forall a. [a] -> [a]
List.reverse (forall sollu.
(Stack, Pretty sollu) =>
FMatra -> FMatra -> SequenceT sollu -> [SequenceT sollu]
reduceToL FMatra
1 FMatra
1 Sequence
theme)) Sequence
karv

    mridangam :: StrokeMaps
mridangam = StrokeMap Stroke -> StrokeMaps
makeMridangam
        [ (Sequence
theme, 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))
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))
o)
        , (Sequence
tatforall a. Monoid a => a -> a -> a
.Sequence
di, forall {g}. Sequence g (Note (Stroke Stroke))
kforall a. Monoid a => a -> a -> a
.forall {g}. Sequence g (Note (Stroke Stroke))
t)
        , (Sequence
tam, forall {g}. Sequence g (Note (Stroke Stroke))
u)
        , (Tag
midforall sollu. Tag -> SequenceT sollu -> SequenceT sollu
^Sequence
tam, forall {g}. Sequence g (Note (Stroke Stroke))
i)
        ]

c_14_02_05 :: Korvai
c_14_02_05 :: Korvai
c_14_02_05 = Stack => Int -> Int -> Int -> Korvai -> Korvai
date Int
2014 Int
2 Int
5 forall a b. (a -> b) -> a -> b
$ Korvai -> Korvai
ganesh forall a b. (a -> b) -> a -> b
$ Tala -> StrokeMaps -> [Sequence] -> Korvai
korvaiS Tala
adi StrokeMaps
mridangam forall a b. (a -> b) -> a -> b
$
    [ Sequence
utarangam forall a. Monoid a => a -> a -> a
. [Sequence] -> Sequence
purvangam (forall a. Int -> a -> [a]
replicate Int
3 (Sequence
tadi_ forall a. Monoid a => a -> a -> a
. Sequence
ta_kitathomforall a. Monoid a => a -> a -> a
.Sequence
ta_kitathom))
    , Sequence
utarangam forall a. Monoid a => a -> a -> a
. [Sequence] -> Sequence
purvangam [Sequence
tadi_ forall a. Monoid a => a -> a -> a
. forall a. Monoid a => Int -> a -> a
repeat Int
n Sequence
ta_kitathom | Int
n <- [Int
1, Int
2, Int
3]]
    , Sequence
utarangam forall a. Monoid a => a -> a -> a
. [Sequence] -> Sequence
purvangam (forall a. Int -> a -> [a]
replicate Int
3 (Sequence
tadi_ forall a. Monoid a => a -> a -> a
. Sequence
taforall a. Monoid a => a -> a -> a
.Sequence
p5))
    , Sequence
utarangam forall a. Monoid a => a -> a -> a
. [Sequence] -> Sequence
purvangam (forall a. Int -> a -> [a]
replicate Int
3 (forall sollu. SequenceT sollu
p6 forall a. Monoid a => a -> a -> a
. forall g sollu. Sequence g sollu -> Sequence g sollu
su forall sollu. SequenceT sollu
p6))

    -- 2022-10-10
    , Sequence
theme forall a. Monoid a => a -> a -> a
. forall a. Monoid a => a -> a
r3 (Int -> Sequence
tat_din Int
3)
        forall a. Monoid a => a -> a -> a
. forall sollu.
(Stack, Pretty sollu) =>
FMatra -> SequenceT sollu -> SequenceT sollu
dropM FMatra
1 Sequence
theme forall a. Monoid a => a -> a -> a
. forall a. Monoid a => a -> a
r3 (Int -> Sequence
tat_din Int
2)
        forall a. Monoid a => a -> a -> a
. forall sollu.
(Stack, Pretty sollu) =>
FMatra -> SequenceT sollu -> SequenceT sollu
dropM FMatra
2 Sequence
theme forall a. Monoid a => a -> a -> a
. forall a. Monoid a => a -> a
r3 (Int -> Sequence
tat_din Int
1)
        forall a. Monoid a => a -> a -> a
. Sequence
purvangam2
    , forall a. (Semigroup a, Monoid a) => [a] -> a -> a
prefixes [Sequence
theme, forall sollu.
(Stack, Pretty sollu) =>
FMatra -> SequenceT sollu -> SequenceT sollu
dropM FMatra
1 Sequence
theme, forall sollu.
(Stack, Pretty sollu) =>
FMatra -> SequenceT sollu -> SequenceT sollu
dropM FMatra
2 Sequence
theme]
        (Int -> Sequence
tat_din Int
3forall a. Monoid a => a -> a -> a
.Int -> Sequence
tat_din Int
2forall a. Monoid a => a -> a -> a
.Int -> Sequence
tat_din Int
1)
        forall a. Monoid a => a -> a -> a
. Sequence
purvangam2
    -- 2022-10-16
    , Sequence
theme2forall a. Monoid a => a -> a -> a
.Int -> Sequence
tat_din Int
3 forall a. Monoid a => a -> a -> a
. forall sollu.
(Stack, Pretty sollu) =>
FMatra -> SequenceT sollu -> SequenceT sollu
dropM FMatra
1 Sequence
theme2forall a. Monoid a => a -> a -> a
.Int -> Sequence
tat_din Int
2 forall a. Monoid a => a -> a -> a
. forall sollu.
(Stack, Pretty sollu) =>
FMatra -> SequenceT sollu -> SequenceT sollu
dropM FMatra
2 Sequence
theme2forall a. Monoid a => a -> a -> a
.Int -> Sequence
tat_din Int
1
        forall a. Monoid a => a -> a -> a
. Sequence -> Sequence -> Sequence
tri_tk (Sequence
tamforall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__) (Sequence
p62forall a. Monoid a => a -> a -> a
.forall g sollu. Sequence g sollu -> Sequence g sollu
su Sequence
p62)
    ]
    where
    tat_din :: Int -> Sequence
tat_din Int
n = Sequence
tatforall a. Monoid a => a -> a -> a
.forall sollu. Int -> SequenceT sollu
__n Int
nforall a. Monoid a => a -> a -> a
.Sequence
dinforall a. Monoid a => a -> a -> a
.forall sollu. SequenceT sollu
__3
    tadi_ :: Sequence
tadi_ = Sequence
taforall a. Monoid a => a -> a -> a
.Sequence
diforall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__
    p5 :: Sequence
p5 = forall sollu. SequenceT sollu -> SequenceT sollu
pattern forall a b. (a -> b) -> a -> b
$ forall g sollu. Sequence g sollu -> Sequence g sollu
su forall a b. (a -> b) -> a -> b
$ Sequence
nangforall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__forall a. Monoid a => a -> a -> a
.Sequence
kitaforall a. Monoid a => a -> a -> a
.Sequence
taforall a. Monoid a => a -> a -> a
.Sequence
riforall a. Monoid a => a -> a -> a
.Sequence
kitaforall a. Monoid a => a -> a -> a
.Sequence
thomforall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__
    utarangam :: Sequence
utarangam =   Sequence
theme forall a. Monoid a => a -> a -> a
. Int -> Sequence
tat_din Int
3
        forall a. Monoid a => a -> a -> a
. forall sollu.
(Stack, Pretty sollu) =>
FMatra -> SequenceT sollu -> SequenceT sollu
dropM FMatra
1 Sequence
theme forall a. Monoid a => a -> a -> a
. Int -> Sequence
tat_din Int
2
        forall a. Monoid a => a -> a -> a
. forall sollu.
(Stack, Pretty sollu) =>
FMatra -> SequenceT sollu -> SequenceT sollu
dropM FMatra
2 Sequence
theme forall a. Monoid a => a -> a -> a
. Int -> Sequence
tat_din Int
1
    purvangam :: [Sequence] -> Sequence
purvangam [Sequence]
seqs = forall sollu.
SequenceT sollu -> [SequenceT sollu] -> SequenceT sollu
join (Sequence
tamforall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__) forall a b. (a -> b) -> a -> b
$ forall a b c. (a -> b -> c) -> [a] -> [b] -> [c]
zipWith forall a. Monoid a => a -> a -> a
(.) [forall a. Monoid a => a
ø, forall g sollu. Sequence g sollu -> Sequence g sollu
su Sequence
kp, forall g sollu. Sequence g sollu -> Sequence g sollu
su Sequence
kpnp] [Sequence]
seqs
    purvangam2 :: Sequence
purvangam2 = Sequence -> Sequence -> Sequence
tri_tk (Sequence
tamforall a. Monoid a => a -> a -> a
.forall sollu. SequenceT sollu
__3) (forall sollu. SequenceT sollu
p6forall a. Monoid a => a -> a -> a
.forall g sollu. Sequence g sollu -> Sequence g sollu
su forall sollu. SequenceT sollu
p6)
    tri_tk :: Sequence -> Sequence -> Sequence
tri_tk Sequence
sep Sequence
p = Sequence
pforall a. Monoid a => a -> a -> a
.Sequence
sepforall a. Monoid a => a -> a -> a
.forall g sollu. Sequence g sollu -> Sequence g sollu
su Sequence
kpforall a. Monoid a => a -> a -> a
.Sequence
pforall a. Monoid a => a -> a -> a
.Sequence
sepforall a. Monoid a => a -> a -> a
.forall g sollu. Sequence g sollu -> Sequence g sollu
su Sequence
kpnpforall a. Monoid a => a -> a -> a
.Sequence
p
    theme :: Sequence
theme = forall sollu. SequenceT sollu -> SequenceT sollu
g forall a b. (a -> b) -> a -> b
$ Sequence
thaforall a. Monoid a => a -> a -> a
.Sequence
kiforall a. Monoid a => a -> a -> a
.Sequence
taforall a. Monoid a => a -> a -> a
.Sequence
ta forall a. Monoid a => a -> a -> a
. forall g sollu. Sequence g sollu -> Sequence g sollu
su Sequence
kita forall a. Monoid a => a -> a -> a
. Sequence
thom
    theme2 :: Sequence
theme2 = forall sollu. SequenceT sollu -> SequenceT sollu
g forall a b. (a -> b) -> a -> b
$ forall g sollu. Sequence g sollu -> Sequence g sollu
su forall a b. (a -> b) -> a -> b
$ Sequence
takaforall a. Monoid a => a -> a -> a
.Sequence
kitaforall a. Monoid a => a -> a -> a
.Sequence
takaforall a. Monoid a => a -> a -> a
.Sequence
tariforall a. Monoid a => a -> a -> a
.Sequence
kitaforall a. Monoid a => a -> a -> a
.Sequence
taka
    p62 :: Sequence
p62 = forall sollu. SequenceT sollu -> SequenceT sollu
pattern forall a b. (a -> b) -> a -> b
$ Sequence
tatforall a. Monoid a => a -> a -> a
.Sequence
ditforall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__forall a. Monoid a => a -> a -> a
.forall g sollu. Sequence g sollu -> Sequence g sollu
su (Sequence
kitaforall a. Monoid a => a -> a -> a
.Sequence
kita)forall a. Monoid a => a -> a -> a
.Sequence
thom
    ta_kitathom :: Sequence
ta_kitathom = forall sollu.
(Stack, Pretty sollu) =>
FMatra -> SequenceT sollu -> SequenceT sollu
dropM FMatra
3 Sequence
theme
    mridangam :: StrokeMaps
mridangam = StrokeMap Stroke -> StrokeMaps
makeMridangam
        [ (Sequence
theme, 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))
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))
o)
        , (Sequence
theme2, Sequence Group (Note (Stroke Stroke))
"upktpkpktkno")
        , (Sequence
p62, Sequence Group (Note (Stroke Stroke))
"kt_ktkto")
        , (Sequence
tatforall a. Monoid a => a -> a -> a
.Sequence
din, forall {g}. Sequence g (Note (Stroke Stroke))
kforall a. Monoid a => a -> a -> a
.forall {g}. Sequence g (Note (Stroke Stroke))
od)
        , (Sequence
taforall a. Monoid a => a -> a -> a
.Sequence
di, forall {g}. Sequence g (Note (Stroke Stroke))
kforall a. Monoid a => a -> a -> a
.forall {g}. Sequence g (Note (Stroke Stroke))
t)
        , (Sequence
ta, forall {g}. Sequence g (Note (Stroke Stroke))
k)
        , (Sequence
p5, forall {g}. Sequence g (Note (Stroke Stroke))
nforall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__forall a. Monoid a => a -> a -> a
.forall {g}. Sequence g (Note (Stroke Stroke))
kforall a. Monoid a => a -> a -> a
.forall {g}. Sequence g (Note (Stroke Stroke))
tforall a. Monoid a => a -> a -> a
.forall {g}. Sequence g (Note (Stroke Stroke))
pforall a. Monoid a => a -> a -> a
.forall {g}. Sequence g (Note (Stroke Stroke))
kforall a. Monoid a => a -> a -> a
.forall {g}. Sequence g (Note (Stroke Stroke))
pforall a. Monoid a => a -> a -> a
.forall {g}. Sequence g (Note (Stroke Stroke))
tforall a. Monoid a => a -> a -> a
.forall {g}. Sequence g (Note (Stroke Stroke))
oforall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__)
        , (Sequence
tam, forall {g}. Sequence g (Note (Stroke Stroke))
od)
        ]

c_14_02_20 :: Korvai
c_14_02_20 :: Korvai
c_14_02_20 = Stack => Int -> Int -> Int -> Korvai -> Korvai
date Int
2014 Int
2 Int
20 forall a b. (a -> b) -> a -> b
$ Korvai -> Korvai
ganesh forall a b. (a -> b) -> a -> b
$ Korvai -> Korvai
exercise forall a b. (a -> b) -> a -> b
$ Tala -> StrokeMaps -> [Sequence] -> Korvai
korvaiS Tala
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 a. Monoid a => a -> a
r7 Sequence
sarva forall a. Monoid a => a -> a -> a
. Sequence
din_dhodhoka
        forall a. Monoid a => a -> a -> a
. forall a. Monoid a => a -> a
r2 (forall a. Monoid a => a -> a
r3 Sequence
sarva forall a. Monoid a => a -> a -> a
. Sequence
din_dhodhoka)
        forall a. Monoid a => a -> a -> a
. forall a. Monoid a => a -> a
r4 (Sequence
sarva forall a. Monoid a => a -> a -> a
. Sequence
din_dhodhoka)
        forall a. Monoid a => a -> a -> a
. forall a. Monoid a => a -> a
r7 Sequence
din_dhodhoka forall a. Monoid a => a -> a -> a
. forall a. Monoid a => a -> a
r2 Sequence
dhodhoka
    ,     forall a. Monoid a => a -> a
r6 Sequence
sarva forall a. Monoid a => a -> a -> a
. Sequence
ta_katakitaforall a. Monoid a => a -> a -> a
.Sequence
takadinna
        forall a. Monoid a => a -> a -> a
. forall a. Monoid a => a -> a
r2 (forall a. Monoid a => a -> a
r2 Sequence
sarva forall a. Monoid a => a -> a -> a
. Sequence
ta_katakitaforall a. Monoid a => a -> a -> a
.Sequence
takadinna)
        forall a. Monoid a => a -> a -> a
. forall a. Monoid a => a -> a
r4 (Sequence
ta_katakitaforall a. Monoid a => a -> a -> a
.Sequence
takadinna)
    ,     forall sollu. SequenceT sollu -> SequenceT sollu -> SequenceT sollu
tri_ (Sequence
dinforall a. Monoid a => a -> a -> a
.forall sollu. SequenceT sollu
__6) (Sequence
ta_katakitaforall a. Monoid a => a -> a -> a
.Sequence
takadinna)
        forall a. Monoid a => a -> a -> a
. Sequence
ta_katakitaforall a. Monoid a => a -> a -> a
.Sequence
takadinnaforall a. Monoid a => a -> a -> a
.Sequence
dinforall a. Monoid a => a -> a -> a
.forall sollu. SequenceT sollu
__6 forall a. Monoid a => a -> a -> a
. Sequence
ta_katakitaforall a. Monoid a => a -> a -> a
.Sequence
takadinnaforall a. Monoid a => a -> a -> a
.Sequence
dinforall a. Monoid a => a -> a -> a
.forall sollu. SequenceT sollu
__3
            forall a. Monoid a => a -> a -> a
. Sequence
takaforall a. Monoid a => a -> a -> a
.Sequence
takadinnaforall a. Monoid a => a -> a -> a
.Sequence
dinforall a. Monoid a => a -> a -> a
.forall sollu. SequenceT sollu
__3
            forall a. Monoid a => a -> a -> a
. Sequence
takaforall a. Monoid a => a -> a -> a
.Sequence
takadinna
    -- TODO sarvaA doesn't work because of nadai 6
    ]
    where
    sarva :: Sequence
sarva = Sequence
tangaforall a. Monoid a => a -> a -> a
.Sequence
takita
    din_dhodhoka :: Sequence
din_dhodhoka = Sequence
dinforall a. Monoid a => a -> a -> a
.forall sollu. SequenceT sollu
__3forall a. Monoid a => a -> a -> a
.Sequence
dhodhoka
    dhodhoka :: Sequence
dhodhoka = Sequence
dhomforall a. Monoid a => a -> a -> a
.Sequence
dhomforall a. Monoid a => a -> a -> a
.Sequence
ka
    mridangam :: StrokeMaps
mridangam = StrokeMap Stroke -> StrokeMaps
makeMridangam forall a b. (a -> b) -> a -> b
$
        [ (Sequence
sarva, forall {g}. Sequence g (Note (Stroke Stroke))
dforall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__forall a. Monoid a => a -> a -> a
.forall stroke.
SequenceT (Stroke stroke) -> SequenceT (Stroke stroke)
lt forall {g}. Sequence g (Note (Stroke Stroke))
pforall a. Monoid a => a -> a -> a
.forall {g}. Sequence g (Note (Stroke Stroke))
kforall a. Monoid a => a -> a -> a
.forall {g}. Sequence g (Note (Stroke Stroke))
tforall a. Monoid a => a -> a -> a
.forall {g}. Sequence g (Note (Stroke Stroke))
k)
        , (Sequence
din_dhodhoka, forall {g}. Sequence g (Note (Stroke Stroke))
dforall a. Monoid a => a -> a -> a
.forall sollu. SequenceT sollu
__3forall 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)
        , (Sequence
dhodhoka, 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)
        , (Sequence
din, forall {g}. Sequence g (Note (Stroke Stroke))
od)
        , (Sequence
taka, forall {g}. Sequence g (Note (Stroke Stroke))
pforall a. Monoid a => a -> a -> a
.forall {g}. Sequence g (Note (Stroke Stroke))
k)
        ] forall a. [a] -> [a] -> [a]
++ StrokeMap Stroke
m_ta_katakita

c_14_02_27 :: Korvai
c_14_02_27 :: Korvai
c_14_02_27 = Stack => Int -> Int -> Int -> Korvai -> Korvai
date Int
2014 Int
2 Int
27 forall a b. (a -> b) -> a -> b
$ Korvai -> Korvai
ganesh forall a b. (a -> b) -> a -> b
$ Tala -> StrokeMaps -> [Sequence] -> Korvai
korvaiS Tala
adi StrokeMaps
mridangam 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
 (Sequence
purvangam.))
    [ forall sollu. Int -> SequenceT sollu -> SequenceT sollu
spread Int
3 Sequence
tdgnt forall a. Monoid a => a -> a -> a
. forall sollu. Int -> SequenceT sollu -> SequenceT sollu
spread Int
2 Sequence
tdgnt forall a. Monoid a => a -> a -> a
. forall sollu. SequenceT sollu -> SequenceT sollu -> SequenceT sollu
tri_ forall a. Rest a => a
__ Sequence
tdgnt
    , forall sollu. Int -> SequenceT sollu -> SequenceT sollu
spread Int
3 Sequence
tdgnt forall a. Monoid a => a -> a -> a
. forall sollu. SequenceT sollu -> SequenceT sollu
tri (Sequence
taforall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__forall a. Monoid a => a -> a -> a
.Sequence
dinforall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__forall a. Monoid a => a -> a -> a
.Sequence
ginforall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__forall a. Monoid a => a -> a -> a
.Sequence
naforall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__forall a. Monoid a => a -> a -> a
.Sequence
thom)
    , forall sollu. SequenceT sollu -> SequenceT sollu -> SequenceT sollu
tri_ (Sequence
dheemforall a. Monoid a => a -> a -> a
.forall sollu. SequenceT sollu
__3) (Sequence
taforall a. Monoid a => a -> a -> a
.Sequence
dinforall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__forall a. Monoid a => a -> a -> a
.Sequence
taforall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__forall a. Monoid a => a -> a -> a
.Sequence
dinforall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__forall a. Monoid a => a -> a -> a
.forall sollu. SequenceT sollu
p5)
    , forall sollu. SequenceT sollu -> SequenceT sollu -> SequenceT sollu
tri_ (Sequence
dheemforall a. Monoid a => a -> a -> a
.forall sollu. SequenceT sollu
__3) (forall sollu. SequenceT sollu
p5forall a. Monoid a => a -> a -> a
.Sequence
taforall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__forall a. Monoid a => a -> a -> a
.Sequence
dinforall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__forall a. Monoid a => a -> a -> a
.Sequence
taforall a. Monoid a => a -> a -> a
.Sequence
dinforall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__)
    , forall sollu. SequenceT sollu -> SequenceT sollu -> SequenceT sollu
p123 forall sollu. SequenceT sollu
p6 (Sequence
dheemforall a. Monoid a => a -> a -> a
.forall sollu. SequenceT sollu
__3)

    , forall sollu. SequenceT sollu -> SequenceT sollu -> SequenceT sollu
p123 forall sollu. SequenceT sollu
p5 (Sequence
tatforall a. Monoid a => a -> a -> a
.forall sollu. SequenceT sollu
__3forall a. Monoid a => a -> a -> a
.Sequence
dinforall a. Monoid a => a -> a -> a
.forall sollu. SequenceT sollu
__3)
    , forall sollu. SequenceT sollu
p5forall a. Monoid a => a -> a -> a
.Sequence
dinga forall a. Monoid a => a -> a -> a
. Sequence
kpforall 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
. Sequence
dinga forall a. Monoid a => a -> a -> a
. Sequence
kpnpforall 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
    , forall sollu. SequenceT sollu -> SequenceT sollu
tri (Sequence
tatforall a. Monoid a => a -> a -> a
.Sequence
dinga forall a. Monoid a => a -> a -> a
. Sequence
tatforall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__forall a. Monoid a => a -> a -> a
.Sequence
dingaforall a. Monoid a => a -> a -> a
.forall sollu. SequenceT sollu
p5)
    , forall sollu. Int -> SequenceT sollu -> SequenceT sollu
spread Int
3 (Sequence
takaforall a. Monoid a => a -> a -> a
.Sequence
tdgnt) forall a. Monoid a => a -> a -> a
. forall sollu. Int -> SequenceT sollu -> SequenceT sollu
spread Int
2 (Sequence
takaforall a. Monoid a => a -> a -> a
.Sequence
tdgnt) forall a. Monoid a => a -> a -> a
. Sequence
takaforall a. Monoid a => a -> a -> a
.Sequence
tdgnt
    ]
    where
    p123 :: SequenceT sollu -> SequenceT sollu -> SequenceT sollu
p123 SequenceT sollu
p SequenceT sollu
sep = forall sollu.
SequenceT sollu
-> SequenceT sollu
-> SequenceT sollu
-> SequenceT sollu
-> SequenceT sollu
trin SequenceT sollu
sep SequenceT sollu
p (SequenceT sollu
pforall a. Monoid a => a -> a -> a
.SequenceT sollu
p) (SequenceT sollu
pforall a. Monoid a => a -> a -> a
.SequenceT sollu
pforall a. Monoid a => a -> a -> a
.SequenceT sollu
p)
    purvangam :: Sequence
purvangam = forall sollu. SequenceT sollu -> SequenceT sollu
tri (Sequence
ta_katakitaforall a. Monoid a => a -> a -> a
.Sequence
takadinna forall a. Monoid a => a -> a -> a
. Sequence
dinforall a. Monoid a => a -> a -> a
.forall sollu. SequenceT sollu
__6)
    mridangam :: StrokeMaps
mridangam = StrokeMap Stroke -> StrokeMaps
makeMridangam forall a b. (a -> b) -> a -> b
$
        [ (Sequence
taforall a. Monoid a => a -> a -> a
.Sequence
din, forall {g}. Sequence g (Note (Stroke Stroke))
kforall a. Monoid a => a -> a -> a
.forall {g}. Sequence g (Note (Stroke Stroke))
od)
        , (Sequence
dheem, forall {g}. Sequence g (Note (Stroke Stroke))
u)
        , (Sequence
din, forall {g}. Sequence g (Note (Stroke Stroke))
od)
        , (Sequence
tat, forall {g}. Sequence g (Note (Stroke Stroke))
k)
        , (Sequence
dinga, forall {g}. Sequence g (Note (Stroke Stroke))
odforall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__forall a. Monoid a => a -> a -> a
.forall {g}. Sequence g (Note (Stroke Stroke))
p)
        , (Sequence
taka, forall {g}. Sequence g (Note (Stroke Stroke))
kforall a. Monoid a => a -> a -> a
.forall {g}. Sequence g (Note (Stroke Stroke))
p)
        ] forall a. [a] -> [a] -> [a]
++ StrokeMap Stroke
m_ta_katakita

ta_katakita :: Sequence
ta_katakita :: Sequence
ta_katakita = Sequence
taforall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__forall a. Monoid a => a -> a -> a
.Sequence
kaforall a. Monoid a => a -> a -> a
.Sequence
takitaforall a. Monoid a => a -> a -> a
.Sequence
taka

m_ta_katakita :: StrokeMap Mridangam.Stroke
m_ta_katakita :: StrokeMap Stroke
m_ta_katakita =
    [ (Sequence
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 stroke.
SequenceT (Stroke stroke) -> SequenceT (Stroke stroke)
lt 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)
    ]

c_14_03_13 :: Korvai
c_14_03_13 :: Korvai
c_14_03_13 = Stack => Int -> Int -> Int -> Korvai -> Korvai
date Int
2014 Int
3 Int
13 forall a b. (a -> b) -> a -> b
$ Korvai -> Korvai
ganesh forall a b. (a -> b) -> a -> b
$ Tala -> StrokeMaps -> [Sequence] -> Korvai
korvaiS Tala
adi StrokeMaps
mridangam
    [ forall sollu. Stack => Duration -> SequenceT sollu
sarvaD_ Duration
4 forall a. Monoid a => a -> a -> a
. Sequence
t1forall a. Monoid a => a -> a -> a
.Sequence
din forall a. Monoid a => a -> a -> a
. forall sollu. Stack => Duration -> SequenceT sollu
sarvaD_ Duration
3
    forall a. Monoid a => a -> a -> a
. forall a. Monoid a => a -> a
r2 (Sequence
t1forall a. Monoid a => a -> a -> a
.Sequence
din forall a. Monoid a => a -> a -> a
. forall sollu. Stack => Duration -> SequenceT sollu
sarvaD_ Duration
3)
    , forall b a. Monoid b => (a -> b) -> [a] -> b
mconcatMap Sequence -> Sequence
sequence [Sequence
t1, Sequence
t2, Sequence
t3]
    ]
    where
    sequence :: Sequence -> Sequence
sequence Sequence
p = Sequence
pforall a. Monoid a => a -> a -> a
.Sequence
din forall a. Monoid a => a -> a -> a
. forall sollu. Stack => Duration -> SequenceT sollu
sarvaD_ Duration
3 forall a. Monoid a => a -> a -> a
. Sequence
pforall a. Monoid a => a -> a -> a
.Sequence
din forall a. Monoid a => a -> a -> a
. forall sollu. Stack => Duration -> SequenceT sollu
sarvaD_ Duration
1 forall a. Monoid a => a -> a -> a
. Sequence
p
        forall a. Monoid a => a -> a -> a
. forall sollu.
(Stack, Pretty sollu) =>
FMatra -> SequenceT sollu -> SequenceT sollu
dropM (FMatra
1forall a. Fractional a => a -> a -> a
/FMatra
2) Sequence
p forall a. Monoid a => a -> a -> a
. forall sollu.
(Stack, Pretty sollu) =>
FMatra -> SequenceT sollu -> SequenceT sollu
dropM (FMatra
1forall a. Fractional a => a -> a -> a
/FMatra
2) Sequence
p
    t1 :: Sequence
t1 = forall g sollu. Sequence g sollu -> Sequence g sollu
su forall a b. (a -> b) -> a -> b
$ Sequence
dinforall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__forall a. Monoid a => a -> a -> a
.Sequence
kitataka
    t2 :: Sequence
t2 = forall g sollu. Sequence g sollu -> Sequence g sollu
su forall a b. (a -> b) -> a -> b
$ Sequence
kaforall a. Monoid a => a -> a -> a
.Sequence
tdgnt
    t3 :: Sequence
t3 = forall g sollu. Sequence g sollu -> Sequence g sollu
su forall a b. (a -> b) -> a -> b
$ Sequence
takadinnaforall a. Monoid a => a -> a -> a
.Sequence
taka

    -- sarva = d.__.n.d.l.d.n.k .t.k.n.d.l.d.n.l -- TODO sarva
    --         o.__.o.o._.o.o._ .o._.o.o._.o.o._
    mridangam :: StrokeMaps
mridangam = StrokeMap Stroke -> StrokeMaps
makeMridangam
        [ (Sequence
t1, forall {g}. Sequence g (Note (Stroke Stroke))
odforall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__forall a. Monoid a => a -> a -> a
.forall {g}. Sequence g (Note (Stroke Stroke))
pforall a. Monoid a => a -> a -> a
.forall {g}. Sequence g (Note (Stroke Stroke))
kforall a. Monoid a => a -> a -> a
.forall {g}. Sequence g (Note (Stroke Stroke))
nforall a. Monoid a => a -> a -> a
.forall {g}. Sequence g (Note (Stroke Stroke))
o)
        , (Sequence
t2, 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))
nforall a. Monoid a => a -> a -> a
.forall {g}. Sequence g (Note (Stroke Stroke))
o)
        , (Sequence
t3, 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))
oforall a. Monoid a => a -> a -> a
.forall {g}. Sequence g (Note (Stroke Stroke))
k)
        , (Sequence
din, forall {g}. Sequence g (Note (Stroke Stroke))
od)
        ]

c_14_03_26 :: Korvai
c_14_03_26 :: Korvai
c_14_03_26 = Stack => Int -> Int -> Int -> Korvai -> Korvai
date Int
2014 Int
3 Int
26 forall a b. (a -> b) -> a -> b
$ Korvai -> Korvai
ganesh forall a b. (a -> b) -> a -> b
$ Text -> Text -> Korvai -> Korvai
similarTo Text
"Solkattu2014" Text
"c_14_03_13" forall a b. (a -> b) -> a -> b
$
        Tala -> StrokeMaps -> [Sequence] -> Korvai
korvaiS Tala
adi StrokeMaps
mridangam forall a b. (a -> b) -> a -> b
$
    [ Sequence
t1 forall a. Monoid a => a -> a -> a
. forall sollu. Stack => Duration -> SequenceT sollu
sarvaD_ Duration
7 forall a. Monoid a => a -> a -> a
. forall a. Monoid a => a -> a
r2 (Sequence
t1 forall a. Monoid a => a -> a -> a
. forall sollu. Stack => Duration -> SequenceT sollu
sarvaD_ Duration
3)
        forall a. Monoid a => a -> a -> a
. forall a. Monoid a => a -> a
r2 (Sequence
t1 forall a. Monoid a => a -> a -> a
. forall sollu. Stack => Duration -> SequenceT sollu
sarvaD_ Duration
1) forall a. Monoid a => a -> a -> a
. Sequence
t1 forall a. Monoid a => a -> a -> a
. forall sollu. Stack => Duration -> SequenceT sollu
sarvaD_ Duration
3
        forall a. Monoid a => a -> a -> a
. forall a. Monoid a => a -> a
r3 (Sequence
t1forall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__) forall a. Monoid a => a -> a -> a
. Sequence
ka forall a. Monoid a => a -> a -> a
. Sequence
t1 forall a. Monoid a => a -> a -> a
. forall sollu. Stack => Duration -> SequenceT sollu
sarvaD_ Duration
3
        forall a. Monoid a => a -> a -> a
. Sequence
t1forall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__forall a. Monoid a => a -> a -> a
.Sequence
ka forall a. Monoid a => a -> a -> a
. forall a. Monoid a => a -> a
r2 (Sequence
t1forall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__) forall a. Monoid a => a -> a -> a
. Sequence
t1 forall a. Monoid a => a -> a -> a
. forall sollu. Stack => Duration -> SequenceT sollu
sarvaD_ Duration
3
    ] forall a. [a] -> [a] -> [a]
++ forall a b. (a -> b) -> [a] -> [b]
map Sequence -> Sequence
sequence [Sequence
t1, Sequence
t2, Sequence
t3, Sequence
t4, Sequence
t5]
    where
    -- Same sarva as c_14_03_13.  TODO sarva
    sequence :: Sequence -> Sequence
sequence Sequence
p = forall sollu. SequenceT sollu -> SequenceT sollu -> SequenceT sollu
tri_ (Sequence
dheemforall a. Monoid a => a -> a -> a
.forall sollu. SequenceT sollu
__3) (forall a. Monoid a => a -> a
r3 (Sequence
pforall 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 forall sollu. SequenceT sollu
p5)
    t1 :: Sequence
t1 = forall sollu. SequenceT sollu -> SequenceT sollu
group forall a b. (a -> b) -> a -> b
$ Sequence
naforall a. Monoid a => a -> a -> a
.Sequence
naforall a. Monoid a => a -> a -> a
.Sequence
naforall a. Monoid a => a -> a -> a
.Sequence
din
    t2 :: Sequence
t2 = forall sollu. SequenceT sollu -> SequenceT sollu
group forall a b. (a -> b) -> a -> b
$ forall g sollu. Sequence g sollu -> Sequence g sollu
su forall a b. (a -> b) -> a -> b
$ Sequence
dhomforall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__forall a. Monoid a => a -> a -> a
.Sequence
takaforall a. Monoid a => a -> a -> a
.Sequence
takaforall a. Monoid a => a -> a -> a
.Sequence
dinforall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__
    t3 :: Sequence
t3 = forall sollu. SequenceT sollu -> SequenceT sollu
group forall a b. (a -> b) -> a -> b
$ forall g sollu. Sequence g sollu -> Sequence g sollu
su forall a b. (a -> b) -> a -> b
$ Sequence
tamforall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__forall a. Monoid a => a -> a -> a
.Sequence
takaforall a. Monoid a => a -> a -> a
.Sequence
naforall a. Monoid a => a -> a -> a
.Sequence
kaforall a. Monoid a => a -> a -> a
.Sequence
dinforall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__
    t4 :: Sequence
t4 = forall sollu. SequenceT sollu -> SequenceT sollu
group forall a b. (a -> b) -> a -> b
$ forall g sollu. Sequence g sollu -> Sequence g sollu
su forall a b. (a -> b) -> a -> b
$ Sequence
takadinnaforall a. Monoid a => a -> a -> a
.Sequence
takaforall a. Monoid a => a -> a -> a
.Sequence
dinforall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__
    t5 :: Sequence
t5 = forall sollu. SequenceT sollu -> SequenceT sollu
group forall a b. (a -> b) -> a -> b
$ forall g sollu. Sequence g sollu -> Sequence g sollu
su forall a b. (a -> b) -> a -> b
$ Sequence
dhomforall a. Monoid a => a -> a -> a
.Sequence
tdgntforall a. Monoid a => a -> a -> a
.Sequence
dinforall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__
    -- 2014-04-02 has transition from c_14_03_12 to this
    mridangam :: StrokeMaps
mridangam = StrokeMap Stroke -> StrokeMaps
makeMridangam
        [ (Sequence
t1, Sequence Group (Note (Stroke Stroke))
onforall a. Monoid a => a -> a -> a
.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))
od)
        , (Sequence
t2, forall {g}. Sequence g (Note (Stroke Stroke))
oforall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__forall a. Monoid a => a -> a -> a
.forall {g}. Sequence g (Note (Stroke Stroke))
kforall a. Monoid a => a -> a -> a
.forall {g}. Sequence g (Note (Stroke Stroke))
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))
oforall a. Monoid a => a -> a -> a
.forall {g}. Sequence g (Note (Stroke Stroke))
odforall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__)
        , (Sequence
t3, 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))
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))
oforall a. Monoid a => a -> a -> a
.forall {g}. Sequence g (Note (Stroke Stroke))
odforall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__)
        , (Sequence
t4, 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))
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 a. Rest a => a
__)
        , (Sequence
t5, forall {g}. Sequence g (Note (Stroke Stroke))
oforall a. Monoid a => a -> a -> a
.forall {g}. Sequence g (Note (Stroke Stroke))
kforall a. Monoid a => a -> a -> a
.forall {g}. Sequence g (Note (Stroke Stroke))
tforall a. Monoid a => a -> a -> a
.forall {g}. Sequence g (Note (Stroke Stroke))
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))
odforall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__)
        , (Sequence
ka, forall {g}. Sequence g (Note (Stroke Stroke))
k)
        , (Sequence
dheem, forall {g}. Sequence g (Note (Stroke Stroke))
i)
        ]

c_14_04_21 :: Korvai
c_14_04_21 :: Korvai
c_14_04_21 = Stack => Int -> Int -> Int -> Korvai -> Korvai
date Int
2014 Int
4 Int
21 forall a b. (a -> b) -> a -> b
$ Korvai -> Korvai
ganesh forall a b. (a -> b) -> a -> b
$ Tala -> StrokeMaps -> [Sequence] -> Korvai
korvaiS Tala
adi StrokeMaps
mridangam forall a b. (a -> b) -> a -> b
$
    [ forall sollu. SequenceT sollu -> SequenceT sollu -> SequenceT sollu
tri_ (Sequence
tamforall a. Monoid a => a -> a -> a
.forall sollu. SequenceT sollu
__3) forall a b. (a -> b) -> a -> b
$ forall sollu. SequenceT sollu -> SequenceT sollu
tri (forall g sollu. Sequence g sollu -> Sequence g sollu
su (Sequence
dhomforall a. Monoid a => a -> a -> a
.forall sollu. SequenceT sollu
p5)forall a. Monoid a => a -> a -> a
.Sequence
dinforall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__) forall a. Monoid a => a -> a -> a
. forall sollu. SequenceT sollu -> SequenceT sollu
tri Sequence
p5_1
    , forall sollu. SequenceT sollu -> SequenceT sollu -> SequenceT sollu
tri_ (Sequence
tamforall a. Monoid a => a -> a -> a
.forall sollu. SequenceT sollu
__3) forall a b. (a -> b) -> a -> b
$ forall sollu. SequenceT sollu -> SequenceT sollu
tri (forall g sollu. Sequence g sollu -> Sequence g sollu
su (Sequence
dhomforall a. Monoid a => a -> a -> a
.forall sollu. SequenceT sollu
p5)forall a. Monoid a => a -> a -> a
.Sequence
dinforall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__) forall a. Monoid a => a -> a -> a
. forall sollu. SequenceT sollu -> SequenceT sollu
tri Sequence
p5_2
    ]
    where
    p5_1 :: Sequence
p5_1 = forall sollu. SequenceT sollu -> SequenceT sollu
pattern forall a b. (a -> b) -> a -> b
$ Sequence
taforall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__forall a. Monoid a => a -> a -> a
.Sequence
tkforall a. Monoid a => a -> a -> a
.Sequence
tkforall a. Monoid a => a -> a -> a
.Sequence
din
    p5_2 :: Sequence
p5_2 = forall sollu. SequenceT sollu -> SequenceT sollu
pattern forall a b. (a -> b) -> a -> b
$ Sequence
taforall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__forall a. Monoid a => a -> a -> a
.Sequence
taforall a. Monoid a => a -> a -> a
.Sequence
tkforall a. Monoid a => a -> a -> a
.Sequence
din
    mridangam :: StrokeMaps
mridangam = StrokeMap Stroke -> StrokeMaps
makeMridangam
        [ (Sequence
din, forall {g}. Sequence g (Note (Stroke Stroke))
od)
        , (Sequence
tam, forall {g}. Sequence g (Note (Stroke Stroke))
u)
        , (Sequence
p5_1, forall {g}. Sequence g (Note (Stroke Stroke))
kforall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__forall a. Monoid a => a -> a -> a
.forall {g}. Sequence g (Note (Stroke Stroke))
kforall a. Monoid a => a -> a -> a
.forall {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))
o)
        , (Sequence
p5_2, forall {g}. Sequence g (Note (Stroke Stroke))
kforall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__forall a. Monoid a => a -> a -> a
.forall {g}. Sequence g (Note (Stroke Stroke))
kforall a. Monoid a => a -> a -> a
.forall {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))
o)
        ]

c_14_04_29 :: Korvai
c_14_04_29 :: Korvai
c_14_04_29 = Stack => Int -> Int -> Int -> Korvai -> Korvai
date Int
2014 Int
4 Int
29 forall a b. (a -> b) -> a -> b
$ Korvai -> Korvai
ganesh forall a b. (a -> b) -> a -> b
$ Tala -> StrokeMaps -> [Sequence] -> Korvai
korvaiS Tala
adi StrokeMaps
mridangam forall a b. (a -> b) -> a -> b
$
    -- TODO sarva is namita dimita dimi
    [ forall sollu.
(Stack, Pretty sollu) =>
Tala -> SequenceT sollu -> SequenceT sollu
sarvaSam Tala
adi Sequence
t1
        forall a. Monoid a => a -> a -> a
. forall sollu.
(Stack, Pretty sollu) =>
Duration -> SequenceT sollu -> SequenceT sollu
sarvaA_ Duration
4 Sequence
t1 forall a. Monoid a => a -> a -> a
. forall sollu.
(Stack, Pretty sollu) =>
Duration -> SequenceT sollu -> SequenceT sollu
sarvaA_ Duration
4 Sequence
t1
        forall a. Monoid a => a -> a -> a
. Tag
1forall sollu. Tag -> SequenceT sollu -> SequenceT sollu
^Sequence
t1 forall a. Monoid a => a -> a -> a
. Sequence
t1 forall a. Monoid a => a -> a -> a
. Tag
1forall sollu. Tag -> SequenceT sollu -> SequenceT sollu
^Sequence
t1 forall a. Monoid a => a -> a -> a
. Sequence
t1
        -- TODO still not right, t1 after 1^t1 should drop the first thom.
    ] forall a. [a] -> [a] -> [a]
++ forall a b. (a -> b) -> [a] -> [b]
map Sequence -> Sequence
sequence [Sequence]
ts
    where
    sequence :: Sequence -> Sequence
sequence Sequence
t = forall sollu. SequenceT sollu -> SequenceT sollu -> SequenceT sollu
tri_ (Sequence
dinforall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__forall a. Monoid a => a -> a -> a
.Sequence
takita) (forall sollu.
(Stack, Pretty sollu) =>
FMatra -> SequenceT sollu -> SequenceT sollu
takeM FMatra
5 Sequence
t forall a. Monoid a => a -> a -> a
. forall sollu.
(Stack, Pretty sollu) =>
FMatra -> SequenceT sollu -> SequenceT sollu
takeM FMatra
5 Sequence
t forall a. Monoid a => a -> a -> a
. Sequence
t)
    t1 :: Sequence
t1 = forall sollu. SequenceT sollu -> SequenceT sollu
group forall a b. (a -> b) -> a -> b
$ Sequence
nangforall a. Monoid a => a -> a -> a
.Sequence
kttkforall a. Monoid a => a -> a -> a
.Sequence
dinforall a. Monoid a => a -> a -> a
.Sequence
naforall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__forall a. Monoid a => a -> a -> a
.Sequence
diforall a. Monoid a => a -> a -> a
.Sequence
mi
    t2 :: Sequence
t2 = Sequence -> Sequence
theme (Sequence
dhomforall a. Monoid a => a -> a -> a
.Sequence
ka)
    t3 :: Sequence
t3 = Sequence -> Sequence
theme (forall g sollu. Sequence g sollu -> Sequence g sollu
su (Sequence
taforall a. Monoid a => a -> a -> a
.Sequence
kiforall a. Monoid a => a -> a -> a
.Sequence
taka))
    t4 :: Sequence
t4 = Sequence -> Sequence
theme (forall g sollu. Sequence g sollu -> Sequence g sollu
su (Sequence
dhomforall a. Monoid a => a -> a -> a
.Sequence
kiforall a. Monoid a => a -> a -> a
.Sequence
taforall a. Monoid a => a -> a -> a
.Sequence
ki))
    t5 :: Sequence
t5 = Sequence -> Sequence
theme (forall g sollu. Sequence g sollu -> Sequence g sollu
su (Sequence
talangforall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__forall a. Monoid a => a -> a -> a
.Sequence
ga))
    t6 :: Sequence
t6 = Sequence -> Sequence
theme (forall g sollu. Sequence g sollu -> Sequence g sollu
su (Sequence
dinforall a. Monoid a => a -> a -> a
.Sequence
naforall a. Monoid a => a -> a -> a
.Sequence
tatforall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__))
    t7 :: Sequence
t7 = Sequence -> Sequence
theme (forall a. Rest a => a
__forall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__)
    ts :: [Sequence]
ts = [Sequence
t1, Sequence
t2, Sequence
t3, Sequence
t4, Sequence
t5, Sequence
t6, Sequence
t7]

    theme :: Sequence -> Sequence
theme Sequence
xx = forall sollu. SequenceT sollu -> SequenceT sollu
group forall a b. (a -> b) -> a -> b
$ Sequence
nangforall a. Monoid a => a -> a -> a
.Sequence
kttkforall a. Monoid a => a -> a -> a
.Sequence
xxforall a. Monoid a => a -> a -> a
.Sequence
nangforall a. Monoid a => a -> a -> a
.Sequence
kttk
    theme_m :: Sequence Group (Note (Stroke Stroke))
-> Sequence Group (Note (Stroke Stroke))
theme_m Sequence Group (Note (Stroke Stroke))
xx = Sequence Group (Note (Stroke Stroke))
onforall a. Monoid a => a -> a -> a
.forall {g}. Sequence g (Note (Stroke Stroke))
kforall a. Monoid a => a -> a -> a
.forall {g}. Sequence g (Note (Stroke Stroke))
tforall a. Monoid a => a -> a -> a
.forall {g}. Sequence g (Note (Stroke Stroke))
oforall a. Monoid a => a -> a -> a
.forall {g}. Sequence g (Note (Stroke Stroke))
k forall a. Monoid a => a -> a -> a
. Sequence Group (Note (Stroke Stroke))
xxforall a. Monoid a => a -> a -> a
.forall {g}. Sequence g (Note (Stroke Stroke))
nforall a. Monoid a => a -> a -> a
.forall {g}. Sequence g (Note (Stroke Stroke))
kforall a. Monoid a => a -> a -> a
.forall {g}. Sequence g (Note (Stroke Stroke))
tforall a. Monoid a => a -> a -> a
.forall {g}. Sequence g (Note (Stroke Stroke))
oforall a. Monoid a => a -> a -> a
.forall {g}. Sequence g (Note (Stroke Stroke))
k
                                 -- khali: p
    mridangam :: StrokeMaps
mridangam = StrokeMap Stroke -> StrokeMaps
makeMridangam
        [ (Sequence
t1,   Sequence Group (Note (Stroke Stroke))
onforall a. Monoid a => a -> a -> a
.forall {g}. Sequence g (Note (Stroke Stroke))
kforall a. Monoid a => a -> a -> a
.forall {g}. Sequence g (Note (Stroke Stroke))
tforall a. Monoid a => a -> a -> a
.forall {g}. Sequence g (Note (Stroke Stroke))
oforall a. Monoid a => a -> a -> a
.forall {g}. Sequence g (Note (Stroke Stroke))
kforall 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))
nforall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__forall a. Monoid a => a -> a -> a
.forall {g}. Sequence g (Note (Stroke Stroke))
odforall a. Monoid a => a -> a -> a
.forall {g}. Sequence g (Note (Stroke Stroke))
k)
        , (Tag
1forall sollu. Tag -> SequenceT sollu -> SequenceT sollu
^Sequence
t1, Sequence Group (Note (Stroke Stroke))
onforall a. Monoid a => a -> a -> a
.forall {g}. Sequence g (Note (Stroke Stroke))
kforall a. Monoid a => a -> a -> a
.forall {g}. Sequence g (Note (Stroke Stroke))
tforall a. Monoid a => a -> a -> a
.forall {g}. Sequence g (Note (Stroke Stroke))
oforall a. Monoid a => a -> a -> a
.forall {g}. Sequence g (Note (Stroke Stroke))
kforall 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))
nforall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__forall a. Monoid a => a -> a -> a
.forall {g}. Sequence g (Note (Stroke Stroke))
pStack =>
Sequence Group (Note (Stroke Stroke))
-> Sequence Group (Note (Stroke Stroke))
-> Sequence Group (Note (Stroke Stroke))
&forall {g}. Sequence g (Note (Stroke Stroke))
dforall a. Monoid a => a -> a -> a
.forall {g}. Sequence g (Note (Stroke Stroke))
k)
        , (Sequence
t2, Sequence Group (Note (Stroke Stroke))
-> Sequence Group (Note (Stroke Stroke))
theme_m (forall {g}. Sequence g (Note (Stroke Stroke))
oStack =>
Sequence Group (Note (Stroke Stroke))
-> Sequence Group (Note (Stroke Stroke))
-> Sequence Group (Note (Stroke Stroke))
&forall {g}. Sequence g (Note (Stroke Stroke))
tforall a. Monoid a => a -> a -> a
.forall {g}. Sequence g (Note (Stroke Stroke))
k))
        , (Sequence
t3, Sequence Group (Note (Stroke Stroke))
-> Sequence Group (Note (Stroke Stroke))
theme_m (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))
oforall a. Monoid a => a -> a -> a
.forall {g}. Sequence g (Note (Stroke Stroke))
t))
        , (Sequence
t4, Sequence Group (Note (Stroke Stroke))
-> Sequence Group (Note (Stroke Stroke))
theme_m (forall {g}. Sequence g (Note (Stroke Stroke))
oforall a. Monoid a => a -> a -> a
.forall {g}. Sequence g (Note (Stroke Stroke))
kforall a. Monoid a => a -> a -> a
.forall {g}. Sequence g (Note (Stroke Stroke))
tforall a. Monoid a => a -> a -> a
.forall {g}. Sequence g (Note (Stroke Stroke))
k))
        , (Sequence
t5, Sequence Group (Note (Stroke Stroke))
-> Sequence Group (Note (Stroke Stroke))
theme_m (forall {g}. Sequence g (Note (Stroke Stroke))
oforall a. Monoid a => a -> a -> a
.forall {g}. Sequence g (Note (Stroke Stroke))
uforall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__forall a. Monoid a => a -> a -> a
.forall {g}. Sequence g (Note (Stroke Stroke))
k))
        , (Sequence
t6, Sequence Group (Note (Stroke Stroke))
-> Sequence Group (Note (Stroke Stroke))
theme_m (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))
kforall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__))
        , (Sequence
t7, Sequence Group (Note (Stroke Stroke))
-> Sequence Group (Note (Stroke Stroke))
theme_m (forall a. Rest a => a
__forall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__))
        , (Sequence
dinforall a. Monoid a => a -> a -> a
.Sequence
takita, 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))
pforall a. Monoid a => a -> a -> a
.forall {g}. Sequence g (Note (Stroke Stroke))
k)
        ]

-- faran + nadai exercise at 14-04-29.

c_14_06_06 :: Korvai
c_14_06_06 :: Korvai
c_14_06_06 = Stack => Int -> Int -> Int -> Korvai -> Korvai
date Int
2014 Int
6 Int
6 forall a b. (a -> b) -> a -> b
$ Korvai -> Korvai
ganesh forall a b. (a -> b) -> a -> b
$ Text -> Korvai -> Korvai
comment Text
"chatusra tisram" forall a b. (a -> b) -> a -> b
$
    Tala -> StrokeMaps -> [Sequence] -> Korvai
korvaiS Tala
adi StrokeMaps
mridangam
    -- sarva is nami dimi nami dimi
    [ forall a. Monoid a => a -> a
r2 (forall sollu. Stack => Duration -> SequenceT sollu
sarvaD_ Duration
5 forall a. Monoid a => a -> a -> a
. Sequence
nadin4)
        forall a. Monoid a => a -> a -> a
. Sequence
dinforall a. Monoid a => a -> a -> a
.forall sollu. SequenceT sollu
__4 forall a. Monoid a => a -> a -> a
. Sequence
nadin4forall a. Monoid a => a -> a -> a
.Sequence
dinforall a. Monoid a => a -> a -> a
.forall sollu. SequenceT sollu
__4 forall a. Monoid a => a -> a -> a
. forall sollu. Int -> SequenceT sollu -> SequenceT sollu
spread Int
3 Sequence
tadindintat

    , Sequence -> Sequence -> Sequence
purvangam (Sequence
tatforall a. Monoid a => a -> a -> a
.forall sollu. SequenceT sollu
__3) (Sequence
tatforall a. Monoid a => a -> a -> a
.forall sollu. SequenceT sollu
__3forall a. Monoid a => a -> a -> a
.Sequence
ditforall a. Monoid a => a -> a -> a
.forall sollu. SequenceT sollu
__3)
        forall a. Monoid a => a -> a -> a
. forall sollu. SequenceT sollu -> SequenceT sollu -> SequenceT sollu
tri_ (Sequence
dinforall a. Monoid a => a -> a -> a
.forall sollu. SequenceT sollu
__3) (Tag
1forall sollu. Tag -> SequenceT sollu -> SequenceT sollu
^Sequence
taforall a. Monoid a => a -> a -> a
.Sequence
kaforall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__forall a. Monoid a => a -> a -> a
.Sequence
dinforall a. Monoid a => a -> a -> a
.Sequence
naforall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__)
    , Sequence -> Sequence -> Sequence
purvangam (Sequence
takaforall a. Monoid a => a -> a -> a
.Sequence
ta) (Sequence
takitaforall a. Monoid a => a -> a -> a
.Sequence
takaforall a. Monoid a => a -> a -> a
.Sequence
ta)
        forall a. Monoid a => a -> a -> a
. forall sollu. SequenceT sollu -> SequenceT sollu -> SequenceT sollu
tri_ Sequence
dinga (Tag
1forall sollu. Tag -> SequenceT sollu -> SequenceT sollu
^Sequence
taforall a. Monoid a => a -> a -> a
.Sequence
kaforall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__forall a. Monoid a => a -> a -> a
.Sequence
dinforall a. Monoid a => a -> a -> a
.Sequence
naforall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__)
    , Sequence -> Sequence -> Sequence
purvangam (Sequence
takaforall a. Monoid a => a -> a -> a
.Sequence
ta) (Sequence
takitaforall a. Monoid a => a -> a -> a
.Sequence
takaforall a. Monoid a => a -> a -> a
.Sequence
ta)
        forall a. Monoid a => a -> a -> a
. forall sollu. SequenceT sollu -> SequenceT sollu -> SequenceT sollu
tri_ Sequence
dinga (Sequence
kiforall a. Monoid a => a -> a -> a
.Sequence
takadinnaforall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__)
    -- Pure chatusra tisram.
    , forall g sollu. Int -> Sequence g sollu -> Sequence g sollu
stride Int
3 forall a b. (a -> b) -> a -> b
$ Sequence
tadindintatforall a. Monoid a => a -> a -> a
.Sequence
dinforall 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 Sequence
taka forall a. Monoid a => a -> a -> a
. Sequence
tadindintatforall a. Monoid a => a -> a -> a
.Sequence
dinforall 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 (Sequence
kitaforall a. Monoid a => a -> a -> a
.Sequence
taka) forall a. Monoid a => a -> a -> a
. Sequence
tadindintatforall a. Monoid a => a -> a -> a
.Sequence
dinforall a. Monoid a => a -> a -> a
.forall sollu. SequenceT sollu
__3
        forall a. Monoid a => a -> a -> a
. forall sollu. SequenceT sollu -> SequenceT sollu -> SequenceT sollu
tri_ Sequence
thom (forall g sollu. Sequence g sollu -> Sequence g sollu
su Sequence
takadinna)

    -- Variation.
    , Sequence
purvangam2 forall a. Monoid a => a -> a -> a
. forall sollu. SequenceT sollu -> SequenceT sollu
tri (Sequence
tamforall a. Monoid a => a -> a -> a
.forall sollu. SequenceT sollu
__7 forall a. Monoid a => a -> a -> a
. forall sollu. SequenceT sollu
p5)
    , Sequence
purvangam2 forall a. Monoid a => a -> a -> a
. forall sollu. SequenceT sollu -> SequenceT sollu
tri (forall g sollu. Int -> Sequence g sollu -> Sequence g sollu
nadai Int
3 (Sequence
dheemforall a. Monoid a => a -> a -> a
.forall sollu. SequenceT sollu
__4 forall a. Monoid a => a -> a -> a
. Sequence
tdgnt))
    ]
    where
    purvangam :: Sequence -> Sequence -> Sequence
purvangam Sequence
x1 Sequence
x2 = forall sollu. Int -> SequenceT sollu -> SequenceT sollu
spread Int
3 (Sequence
tadindintatforall a. Monoid a => a -> a -> a
.Sequence
dinforall a. Monoid a => a -> a -> a
.forall sollu. SequenceT sollu
__3)
        forall a. Monoid a => a -> a -> a
. Sequence
x1 forall a. Monoid a => a -> a -> a
. forall sollu. Int -> SequenceT sollu -> SequenceT sollu
spread Int
3 (Sequence
tadindintatforall a. Monoid a => a -> a -> a
.Sequence
dinforall a. Monoid a => a -> a -> a
.forall sollu. SequenceT sollu
__3)
        forall a. Monoid a => a -> a -> a
. Sequence
x2 forall a. Monoid a => a -> a -> a
. forall sollu. Int -> SequenceT sollu -> SequenceT sollu
spread Int
3 (Sequence
tadindintatforall a. Monoid a => a -> a -> a
.Sequence
dinforall a. Monoid a => a -> a -> a
.forall sollu. SequenceT sollu
__3)
    tadindintat :: Sequence
tadindintat = Sequence
tatforall a. Monoid a => a -> a -> a
.Sequence
dinforall a. Monoid a => a -> a -> a
.Sequence
dinforall a. Monoid a => a -> a -> a
.Sequence
tat
    purvangam2 :: Sequence
purvangam2 = Sequence
t forall a. Monoid a => a -> a -> a
. Sequence
tatforall a. Monoid a => a -> a -> a
.forall sollu. SequenceT sollu
__3forall a. Monoid a => a -> a -> a
.Sequence
t forall a. Monoid a => a -> a -> a
. Sequence
tatforall a. Monoid a => a -> a -> a
.forall sollu. SequenceT sollu
__3forall a. Monoid a => a -> a -> a
.Sequence
ditforall a. Monoid a => a -> a -> a
.forall sollu. SequenceT sollu
__3forall a. Monoid a => a -> a -> a
.Sequence
t
        where t :: Sequence
t = forall sollu. Int -> SequenceT sollu -> SequenceT sollu
spread Int
3 (Sequence
tatforall a. Monoid a => a -> a -> a
.Sequence
dinforall a. Monoid a => a -> a -> a
.Sequence
din) forall a. Monoid a => a -> a -> a
. Sequence
tatforall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__forall a. Monoid a => a -> a -> a
.Sequence
dinforall a. Monoid a => a -> a -> a
.forall sollu. SequenceT sollu
__6

    nadin4 :: Sequence
nadin4 = forall a. Monoid a => a -> a
r4 (Sequence
naforall a. Monoid a => a -> a -> a
.Sequence
dinforall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__)
    mridangam :: StrokeMaps
mridangam = StrokeMap Stroke -> StrokeMaps
makeMridangam
        [ (Sequence
naforall a. Monoid a => a -> a -> a
.Sequence
din, Sequence Group (Note (Stroke Stroke))
onforall a. Monoid a => a -> a -> a
.forall {g}. Sequence g (Note (Stroke Stroke))
d)
        , (Sequence
din, forall {g}. Sequence g (Note (Stroke Stroke))
od)
        , (Sequence
dinga, forall {g}. Sequence g (Note (Stroke Stroke))
odforall a. Monoid a => a -> a -> a
.forall a. Rest a => a
__forall a. Monoid a => a -> a -> a
.forall {g}. Sequence g (Note (Stroke Stroke))
k)
        , (Sequence
tadindintat, 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 {g}. Sequence g (Note (Stroke Stroke))
odforall a. Monoid a => a -> a -> a
.forall {g}. Sequence g (Note (Stroke Stroke))
k)
        , (Sequence
tat, forall {g}. Sequence g (Note (Stroke Stroke))
k)
        , (Sequence
dit, forall {g}. Sequence g (Note (Stroke Stroke))
t)
        , (Sequence
takaforall a. Monoid a => a -> a -> a
.Sequence
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)
        , (Sequence
takitaforall a. Monoid a => a -> a -> a
.Sequence
takaforall a. Monoid a => a -> a -> a
.Sequence
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))
kforall a. Monoid a => a -> a -> a
.forall {g}. Sequence g (Note (Stroke Stroke))
tforall a. Monoid a => a -> a -> a
.forall {g}. Sequence g (Note (Stroke Stroke))
pforall a. Monoid a => a -> a -> a
.forall {g}. Sequence g (Note (Stroke Stroke))
k)
        , (Sequence
kiforall a. Monoid a => a -> a -> a
.Sequence
takadinna, 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))
oforall a. Monoid a => a -> a -> a
.forall {g}. Sequence g (Note (Stroke Stroke))
k)
        , (Sequence
tam, forall {g}. Sequence g (Note (Stroke Stroke))
u)
        , (Sequence
dheem, forall {g}. Sequence g (Note (Stroke Stroke))
i)

        , (Sequence
taka, forall {g}. Sequence g (Note (Stroke Stroke))
kforall a. Monoid a => a -> a -> a
.forall {g}. Sequence g (Note (Stroke Stroke))
t)
        , (Sequence
kitaforall a. Monoid a => a -> a -> a
.Sequence
taka, forall {g}. Sequence g (Note (Stroke Stroke))
kforall a. Monoid a => a -> a -> a
.forall {g}. Sequence g (Note (Stroke Stroke))
tforall a. Monoid a => a -> a -> a
.forall {g}. Sequence g (Note (Stroke Stroke))
pforall a. Monoid a => a -> a -> a
.forall {g}. Sequence g (Note (Stroke Stroke))
k)
        , (Sequence
takadinna, forall {g}. Sequence g (Note (Stroke Stroke))
kforall a. Monoid a => a -> a -> a
.forall {g}. Sequence g (Note (Stroke Stroke))
oforall a. Monoid a => a -> a -> a
.forall {g}. Sequence g (Note (Stroke Stroke))
odforall a. Monoid a => a -> a -> a
.forall {g}. Sequence g (Note (Stroke Stroke))
k)
        ]