-- | Tom Johnson. \"Perfect Rhythmic Tilings\".
-- Technical report, IRCAM, 24 January 2004. MaMuX Lecture.
module Music.Theory.Tiling.Johnson_2004 where

import Music.Theory.Tiling.Canon

-- | @{0,1,2}@ order 5, p.1
--
-- >>> v_print 15 (r_voices p1)
-- >
-- > ..***..........
-- > ........*.*.*..
-- > .....*...*...*.
-- > .*....*....*...
-- > *......*......*
p1 :: R
p1 :: R
p1 = (Int
15,[Int
0,Int
1,Int
2],[Int
1,Int
2,Int
4,Int
5,Int
7],[Int
2,Int
8,Int
5,Int
1,Int
0])

-- | @{0,1,2}@ order 7, p.2
--
-- >>> v_print 21 (r_voices p2)
-- >
-- > ..............***....
-- > ..*.*.*..............
-- > ...*...*...*.........
-- > ........*....*....*..
-- > .....*......*......*.
-- > .*.......*.......*...
-- > *.........*.........*
p2 :: R
p2 :: R
p2 = (Int
21,[Int
0,Int
1,Int
2],[Int
1,Int
2,Int
4,Int
5,Int
7,Int
8,Int
10],[Int
14,Int
2,Int
3,Int
8,Int
5,Int
1,Int
0])

-- | @{0,1}@ order 4, p.3
--
-- >>> v_print 8 (r_voices p3)
-- >
-- > *...*...
-- > .**.....
-- > ...*..*.
-- > .....*.*
p3 :: R
p3 :: R
p3 = (Int
8,[Int
0,Int
1],[Int
4,Int
1,Int
3,Int
2],[Int
0,Int
1,Int
3,Int
5])

-- | @{0,1}@ order 5, p.4
--
-- >>> mapM_ (v_print 10 . r_voices) p4
-- >
-- > *...*.....
-- > .**.......
-- > ...*....*.
-- > .....*.*..
-- > ......*..*
-- >
-- > *....*....
-- > .**.......
-- > ...*..*...
-- > ....*...*.
-- > .......*.*
-- >
-- > *...*.....
-- > .*....*...
-- > ..**......
-- > .....*..*.
-- > .......*.*
p4 :: [R]
p4 :: [R]
p4 = [(Int
10,[Int
0,Int
1],[Int
4,Int
1,Int
5,Int
2,Int
3],[Int
0,Int
1,Int
3,Int
5,Int
6])
     ,(Int
10,[Int
0,Int
1],[Int
5,Int
1,Int
3,Int
4,Int
2],[Int
0,Int
1,Int
3,Int
4,Int
7])
     ,(Int
10,[Int
0,Int
1],[Int
4,Int
5,Int
1,Int
3,Int
2],[Int
0,Int
1,Int
2,Int
5,Int
7])]

-- | Open @{1,2,3}@ order 5, p.4
--
-- >>> v_print 18 (r_voices p4_b)
-- >
-- > ...***............
-- > ........*.*.*.....
-- > .........*...*...*
-- > .*....*....*......
-- > *......*......*...
p4_b :: R
p4_b :: R
p4_b = (Int
21,[Int
0,Int
1,Int
2],[Int
1,Int
2,Int
4,Int
5,Int
7],[Int
3,Int
8,Int
9,Int
1,Int
0])

-- Local Variables:
-- truncate-lines:t
-- End: