-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathChildSong6.lhs
50 lines (47 loc) · 1.73 KB
/
ChildSong6.lhs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
\section{Partial Encoding of Chick Corea's ``Children's Song No. 6''}
\label{chick}
{\small\begin{verbatim}
> module ChildSong6 where
> import Haskore
>
> -- note updaters for mappings
> fd d n = n d v
> vol n = n v
> v = [Volume 80]
> lmap f l = line (map f l)
>
> -- repeat something n times
> times 1 m = m
> times (n+1) m = m :+: (times n m)
>
> -- Baseline:
> b1 = lmap (fd dqn) [b 3, fs 4, g 4, fs 4]
> b2 = lmap (fd dqn) [b 3, es 4, fs 4, es 4]
> b3 = lmap (fd dqn) [as 3, fs 4, g 4, fs 4]
>
> bassLine = times 3 b1 :+: times 2 b2 :+: times 4 b3 :+: times 5 b1
>
> -- Main Voice:
> v1 = v1a :+: v1b
> v1a = lmap (fd en) [a 5, e 5, d 5, fs 5, cs 5, b 4, e 5, b 4]
> v1b = lmap vol [cs 5 tn, d 5 (qn-tn), cs 5 en, b 4 en]
>
> v2 = v2a :+: v2b :+: v2c :+: v2d :+: v2e :+: v2f
> v2a = lmap vol [cs 5 (dhn+dhn), d 5 dhn,
> f 5 hn, gs 5 qn, fs 5 (hn+en), g 5 en]
> v2b = lmap (fd en) [fs 5, e 5, cs 5, as 4] :+: a 4 dqn v :+:
> lmap (fd en) [as 4, cs 5, fs 5, e 5, fs 5, g 5, as 5]
> v2c = lmap vol [cs 6 (hn+en), d 6 en, cs 6 en, e 5 en] :+: enr :+:
> lmap vol [as 5 en, a 5 en, g 5 en, d 5 qn, c 5 en, cs 5 en]
> v2d = lmap (fd en) [fs 5, cs 5, e 5, cs 5, a 4, as 4, d 5, e 5, fs 5] :+:
> lmap vol [fs 5 tn, e 5 (qn-tn), d 5 en, e 5 tn, d 5 (qn-tn),
> cs 5 en, d 5 tn, cs 5 (qn-tn), b 4 (en+hn)]
> v2e = lmap vol [cs 5 en, b 4 en, fs 5 en, a 5 en, b 5 (hn+qn), a 5 en,
> fs 5 en, e 5 qn, d 5 en, fs 5 en, e 5 hn, d 5 hn, fs 5 qn]
> v2f = Tempo (3/2) (lmap vol [cs 5 en, d 5 en, cs 5 en]) :+: b 4 (3*dhn+hn) v
>
> mainVoice = times 3 v1 :+: v2
>
> -- Putting it all together:
> childSong6 = Instr "piano" (Tempo 3 (Phrase [Dyn SF] bassLine :=: mainVoice))
\end{verbatim} }