summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorThibaut Horel <thibaut.horel@gmail.com>2013-08-16 11:26:43 +0200
committerThibaut Horel <thibaut.horel@gmail.com>2013-08-16 11:26:43 +0200
commite016d43307fedbc0825a7f0f03cbebede4e98f1b (patch)
tree2514d7097b701a6ec93ed70dac9c994815ed812a
downloadhanon-e016d43307fedbc0825a7f0f03cbebede4e98f1b.tar.gz
Initial commit
-rw-r--r--dir/1.ily36
-rw-r--r--dir/10.ily17
-rw-r--r--dir/2.ily17
-rw-r--r--dir/3.ily17
-rw-r--r--dir/4.ily25
-rw-r--r--dir/5.ily17
-rw-r--r--dir/6.ily17
-rw-r--r--dir/7.ily17
-rw-r--r--dir/8.ily17
-rw-r--r--dir/9.ily17
-rw-r--r--dir/lh1.ily42
-rw-r--r--dir/lh10.ily36
-rw-r--r--dir/lh2.ily40
-rw-r--r--dir/lh3.ily40
-rw-r--r--dir/lh4.ily42
-rw-r--r--dir/lh5.ily40
-rw-r--r--dir/lh6.ily40
-rw-r--r--dir/lh7.ily40
-rw-r--r--dir/lh8.ily36
-rw-r--r--dir/lh9.ily36
-rw-r--r--dir/rh1.ily45
-rw-r--r--dir/rh10.ily36
-rw-r--r--dir/rh2.ily43
-rw-r--r--dir/rh3.ily43
-rw-r--r--dir/rh4.ily45
-rw-r--r--dir/rh5.ily43
-rw-r--r--dir/rh6.ily43
-rw-r--r--dir/rh7.ily43
-rw-r--r--dir/rh8.ily36
-rw-r--r--dir/rh9.ily36
-rw-r--r--gen_exercises.py11
-rw-r--r--gen_pitches.py58
-rw-r--r--hanon.ly19
-rw-r--r--hanon.pdfbin0 -> 1189304 bytes
-rw-r--r--imslp-hanon.pdfbin0 -> 10582035 bytes
-rw-r--r--seeds_simple10
-rw-r--r--simple.itpl17
37 files changed, 1117 insertions, 0 deletions
diff --git a/dir/1.ily b/dir/1.ily
new file mode 100644
index 0000000..f999530
--- /dev/null
+++ b/dir/1.ily
@@ -0,0 +1,36 @@
+\markup {
+ \column{
+ \fill-line{
+ \center-column{
+ \fontsize #2 \bold"Part I."
+ \fontsize #1.5 "Preparatory Exercises for the Acquirement of Agility, Independence,"
+ \fontsize #1.5 "Strength and Perfect Evenness in the Fingers."
+ \vspace #0.2
+ \fontsize #2 \bold 1
+ }
+ }
+ \justify{
+ test
+ }
+ }
+}
+\score{
+ \new PianoStaff <<
+ \override PianoStaff.InstrumentName #'self-alignment-X = #RIGHT
+ \set PianoStaff.instrumentName = \markup{\right-align\bold\fontsize #3 1.}
+ \new Staff = "up" {
+ \clef treble
+ \time 2/4
+ \new Voice
+\include "dir/rh1.ily"
+ }
+ \new Staff = "down" {
+ \clef bass
+ \new Voice
+\include "dir/lh1.ily"
+ }
+ >>
+ \layout{
+ system-count = 6
+ }
+}
diff --git a/dir/10.ily b/dir/10.ily
new file mode 100644
index 0000000..fc5e700
--- /dev/null
+++ b/dir/10.ily
@@ -0,0 +1,17 @@
+\score{
+ \new PianoStaff <<
+ \override PianoStaff.InstrumentName #'self-alignment-X = #RIGHT
+ \set PianoStaff.instrumentName = \markup{\right-align\bold\fontsize #3 10.}
+ \new Staff = "up" {
+ \clef treble
+ \time 2/4
+ \new Voice
+\include "dir/rh10.ily"
+ }
+ \new Staff = "down" {
+ \clef bass
+ \new Voice
+\include "dir/lh10.ily"
+ }
+ >>
+}
diff --git a/dir/2.ily b/dir/2.ily
new file mode 100644
index 0000000..ab8d36e
--- /dev/null
+++ b/dir/2.ily
@@ -0,0 +1,17 @@
+\score{
+ \new PianoStaff <<
+ \override PianoStaff.InstrumentName #'self-alignment-X = #RIGHT
+ \set PianoStaff.instrumentName = \markup{\right-align\bold\fontsize #3 2.}
+ \new Staff = "up" {
+ \clef treble
+ \time 2/4
+ \new Voice
+\include "dir/rh2.ily"
+ }
+ \new Staff = "down" {
+ \clef bass
+ \new Voice
+\include "dir/lh2.ily"
+ }
+ >>
+}
diff --git a/dir/3.ily b/dir/3.ily
new file mode 100644
index 0000000..01d56e6
--- /dev/null
+++ b/dir/3.ily
@@ -0,0 +1,17 @@
+\score{
+ \new PianoStaff <<
+ \override PianoStaff.InstrumentName #'self-alignment-X = #RIGHT
+ \set PianoStaff.instrumentName = \markup{\right-align\bold\fontsize #3 3.}
+ \new Staff = "up" {
+ \clef treble
+ \time 2/4
+ \new Voice
+\include "dir/rh3.ily"
+ }
+ \new Staff = "down" {
+ \clef bass
+ \new Voice
+\include "dir/lh3.ily"
+ }
+ >>
+}
diff --git a/dir/4.ily b/dir/4.ily
new file mode 100644
index 0000000..e5ff2e7
--- /dev/null
+++ b/dir/4.ily
@@ -0,0 +1,25 @@
+\markup {
+ \column {
+ \fill-line {\bold\fontsize #3 4}
+ \vspace #0.5
+ \line{(3-4-5) (1) Special exercise for the 3\super{rd}, 4\super{th} and 5\super{th} fingers of the hand.}
+ \vspace #0.5
+}
+}
+\score{
+ \new PianoStaff <<
+ \override PianoStaff.InstrumentName #'self-alignment-X = #RIGHT
+ \set PianoStaff.instrumentName = \markup{\right-align\bold\fontsize #3 4.}
+ \new Staff = "up" {
+ \clef treble
+ \time 2/4
+ \new Voice
+\include "dir/rh4.ily"
+ }
+ \new Staff = "down" {
+ \clef bass
+ \new Voice
+\include "dir/lh4.ily"
+ }
+ >>
+}
diff --git a/dir/5.ily b/dir/5.ily
new file mode 100644
index 0000000..7b161aa
--- /dev/null
+++ b/dir/5.ily
@@ -0,0 +1,17 @@
+\score{
+ \new PianoStaff <<
+ \override PianoStaff.InstrumentName #'self-alignment-X = #RIGHT
+ \set PianoStaff.instrumentName = \markup{\right-align\bold\fontsize #3 5.}
+ \new Staff = "up" {
+ \clef treble
+ \time 2/4
+ \new Voice
+\include "dir/rh5.ily"
+ }
+ \new Staff = "down" {
+ \clef bass
+ \new Voice
+\include "dir/lh5.ily"
+ }
+ >>
+}
diff --git a/dir/6.ily b/dir/6.ily
new file mode 100644
index 0000000..43d2a17
--- /dev/null
+++ b/dir/6.ily
@@ -0,0 +1,17 @@
+\score{
+ \new PianoStaff <<
+ \override PianoStaff.InstrumentName #'self-alignment-X = #RIGHT
+ \set PianoStaff.instrumentName = \markup{\right-align\bold\fontsize #3 6.}
+ \new Staff = "up" {
+ \clef treble
+ \time 2/4
+ \new Voice
+\include "dir/rh6.ily"
+ }
+ \new Staff = "down" {
+ \clef bass
+ \new Voice
+\include "dir/lh6.ily"
+ }
+ >>
+}
diff --git a/dir/7.ily b/dir/7.ily
new file mode 100644
index 0000000..45a4bcc
--- /dev/null
+++ b/dir/7.ily
@@ -0,0 +1,17 @@
+\score{
+ \new PianoStaff <<
+ \override PianoStaff.InstrumentName #'self-alignment-X = #RIGHT
+ \set PianoStaff.instrumentName = \markup{\right-align\bold\fontsize #3 7.}
+ \new Staff = "up" {
+ \clef treble
+ \time 2/4
+ \new Voice
+\include "dir/rh7.ily"
+ }
+ \new Staff = "down" {
+ \clef bass
+ \new Voice
+\include "dir/lh7.ily"
+ }
+ >>
+}
diff --git a/dir/8.ily b/dir/8.ily
new file mode 100644
index 0000000..eb780fb
--- /dev/null
+++ b/dir/8.ily
@@ -0,0 +1,17 @@
+\score{
+ \new PianoStaff <<
+ \override PianoStaff.InstrumentName #'self-alignment-X = #RIGHT
+ \set PianoStaff.instrumentName = \markup{\right-align\bold\fontsize #3 8.}
+ \new Staff = "up" {
+ \clef treble
+ \time 2/4
+ \new Voice
+\include "dir/rh8.ily"
+ }
+ \new Staff = "down" {
+ \clef bass
+ \new Voice
+\include "dir/lh8.ily"
+ }
+ >>
+}
diff --git a/dir/9.ily b/dir/9.ily
new file mode 100644
index 0000000..80efa9c
--- /dev/null
+++ b/dir/9.ily
@@ -0,0 +1,17 @@
+\score{
+ \new PianoStaff <<
+ \override PianoStaff.InstrumentName #'self-alignment-X = #RIGHT
+ \set PianoStaff.instrumentName = \markup{\right-align\bold\fontsize #3 9.}
+ \new Staff = "up" {
+ \clef treble
+ \time 2/4
+ \new Voice
+\include "dir/rh9.ily"
+ }
+ \new Staff = "down" {
+ \clef bass
+ \new Voice
+\include "dir/lh9.ily"
+ }
+ >>
+}
diff --git a/dir/lh1.ily b/dir/lh1.ily
new file mode 100644
index 0000000..77b9d68
--- /dev/null
+++ b/dir/lh1.ily
@@ -0,0 +1,42 @@
+\relative e, {
+\voiceTwo
+c16-5 e-4 f-3 g-2 a-1 g f e
+d16-5 f-4 g-3 a-2 b-1 a g f
+e16-5 g-4 a b c-1 b a g
+f16-5 a-4 b c d-1 c b a
+g16-5 b-4 c d
+\oneVoice
+e d c b
+a16 c d e f e d c
+b16 d e f g f e d
+
+c16 e f g a g f e
+d16 f g a b a g f
+e16 g a b c b a g
+f16 a b c d c b a
+g16 b c d e d c b
+a16 c d e f e d c
+b16 d e f g f e d
+\bar "||"
+}
+\relative e' {
+g16-1 e-2 d-3 c-4 b-5 c d e
+f16-1 d-2 c-3 b-4 a-5 b c d
+e16-1 c-2 b a g-5 a b c
+d16-1 b-2 a g f-5 g a b
+c16-1 a-2 g f e-5 f g a
+b16 g f e d e f g
+a16 f e d c d e f
+
+g16 e d c b c d e
+f16 d c b a b c d
+e16 c b a
+\voiceTwo
+g a b c
+d16 b a g f g a b
+c16 a g f e f g a
+b16 g f e d e f g
+a16 f e d c d e f
+c2
+\bar "|."
+}
diff --git a/dir/lh10.ily b/dir/lh10.ily
new file mode 100644
index 0000000..3ca30aa
--- /dev/null
+++ b/dir/lh10.ily
@@ -0,0 +1,36 @@
+\relative e, {
+c16 a' g f e f e f
+d16 b' a g f g f g
+e16 c' b a g a g a
+f16 d' c b a b a b
+g16 e' d c b c b c
+a16 f' e d c d c d
+b16 g' f e d e d e
+
+c16 a' g f e f e f
+d16 b' a g f g f g
+e16 c' b a g a g a
+f16 d' c b a b a b
+g16 e' d c b c b c
+a16 f' e d c d c d
+b16 g' f e d e d e
+\bar "||"
+}
+\relative e' {
+g16 b, c d e d e d
+f16 a, b c d c d c
+e16 g, a b c b c b
+d16 f, g a b a b a
+c16 e, f g a g a g
+b16 d, e f g f g f
+a16 c, d e f e f e
+
+g16 b, c d e d e d
+f16 a, b c d c d c
+e16 g, a b c b c b
+d16 f, g a b a b a
+c16 e, f g a g a g
+b16 d, e f g f g f
+a16 c, d e f e f e
+\bar "|."
+}
diff --git a/dir/lh2.ily b/dir/lh2.ily
new file mode 100644
index 0000000..4c6b794
--- /dev/null
+++ b/dir/lh2.ily
@@ -0,0 +1,40 @@
+\relative e, {
+\voiceTwo
+c16 e a g f g f e
+d16 f b a g a g f
+e16 g c b a b a g
+f16 a d c b c b a
+\oneVoice
+g16 b e d c d c b
+a16 c f e d e d c
+b16 d g f e f e d
+
+c16 e a g f g f e
+d16 f b a g a g f
+e16 g c b a b a g
+f16 a d c b c b a
+g16 b e d c d c b
+a16 c f e d e d c
+b16 d g f e f e d
+\bar "||"
+}
+\relative e' {
+g16 d b c d c d e
+f16 c a b c b c d
+e16 b g a b a b c
+d16 a f g a g a b
+c16 g e f g f g a
+b16 f d e f e f g
+a16 e c d e d e f
+
+g16 d b c d c d e
+f16 c a b c b c d
+\voiceTwo
+e16 b g a b a b c
+d16 a f g a g a b
+c16 g e f g f g a
+b16 f d e f e f g
+a16 e c d e d e f
+c2
+\bar "|."
+}
diff --git a/dir/lh3.ily b/dir/lh3.ily
new file mode 100644
index 0000000..f678613
--- /dev/null
+++ b/dir/lh3.ily
@@ -0,0 +1,40 @@
+\relative e, {
+\voiceTwo
+c16 e a g f e f g
+d16 f b a g f g a
+e16 g c b a g a b
+f16 a d c b a b c
+\oneVoice
+g16 b e d c b c d
+a16 c f e d c d e
+b16 d g f e d e f
+
+c16 e a g f e f g
+d16 f b a g f g a
+e16 g c b a g a b
+f16 a d c b a b c
+g16 b e d c b c d
+a16 c f e d c d e
+b16 d g f e d e f
+\bar "||"
+}
+\relative e' {
+g16 d b c d e d c
+f16 c a b c d c b
+e16 b g a b c b a
+d16 a f g a b a g
+c16 g e f g a g f
+b16 f d e f g f e
+a16 e c d e f e d
+
+g16 d b c d e d c
+f16 c a b c d c b
+\voiceTwo
+e16 b g a b c b a
+d16 a f g a b a g
+c16 g e f g a g f
+b16 f d e f g f e
+a16 e c d e f e d
+c2
+\bar "|."
+}
diff --git a/dir/lh4.ily b/dir/lh4.ily
new file mode 100644
index 0000000..5b9d365
--- /dev/null
+++ b/dir/lh4.ily
@@ -0,0 +1,42 @@
+\relative e, {
+\voiceTwo
+c16 d c e a g f e
+d16 e d f b a g f
+e16 f e g c b a g
+f16 g f a d c b a
+g16 a g b
+\oneVoice
+e d c b
+a16 b a c f e d c
+b16 c b d g f e d
+
+c16 d c e a g f e
+d16 e d f b a g f
+e16 f e g c b a g
+f16 g f a d c b a
+g16 a g b e d c b
+a16 b a c f e d c
+b16 c b d g f e d
+\bar "||"
+}
+\relative e' {
+g16 f g d b c d e
+f16 e f c a b c d
+e16 d e b g a b c
+d16 c d a f g a b
+c16 b c g e f g a
+b16 a b f d e f g
+a16 g a e c d e f
+
+g16 f g d b c d e
+f16 e f c a b c d
+e16 d e b
+\voiceTwo
+g a b c
+d16 c d a f g a b
+c16 b c g e f g a
+b16 a b f d e f g
+a16 g a e c d e f
+c2
+\bar "|."
+}
diff --git a/dir/lh5.ily b/dir/lh5.ily
new file mode 100644
index 0000000..1980ccf
--- /dev/null
+++ b/dir/lh5.ily
@@ -0,0 +1,40 @@
+\relative e, {
+\voiceTwo
+c16 a' g a f g e f
+d16 b' a b g a f g
+e16 c' b c a b g a
+f16 d' c d b c a b
+\oneVoice
+g16 e' d e c d b c
+a16 f' e f d e c d
+b16 g' f g e f d e
+
+c16 a' g a f g e f
+d16 b' a b g a f g
+e16 c' b c a b g a
+f16 d' c d b c a b
+g16 e' d e c d b c
+a16 f' e f d e c d
+b16 g' f g e f d e
+\bar "||"
+}
+\relative e' {
+c16 d c e d f e g
+b,16 c b d c e d f
+a,16 b a c b d c e
+g,16 a g b a c b d
+f,16 g f a g b a c
+e,16 f e g f a g b
+d,16 e d f e g f a
+
+c,16 d c e d f e g
+b,16 c b d c e d f
+a,16 b a c b d c e
+\voiceTwo
+g,16 a g b a c b d
+f,16 g f a g b a c
+e,16 f e g f a g b
+d,16 e d f e g f a
+c,2
+\bar "|."
+}
diff --git a/dir/lh6.ily b/dir/lh6.ily
new file mode 100644
index 0000000..d8ac5c5
--- /dev/null
+++ b/dir/lh6.ily
@@ -0,0 +1,40 @@
+\relative e, {
+\voiceTwo
+c16 a' g a f a e a
+d,16 b' a b g b f b
+e,16 c' b c a c g c
+f,16 d' c d b d a d
+\oneVoice
+g,16 e' d e c e b e
+a,16 f' e f d f c f
+b,16 g' f g e g d g
+
+c,16 a' g a f a e a
+d,16 b' a b g b f b
+e,16 c' b c a c g c
+f,16 d' c d b d a d
+g,16 e' d e c e b e
+a,16 f' e f d f c f
+b,16 g' f g e g d g
+\bar "||"
+}
+\relative e' {
+g16 b, c b d b e c
+f16 a, b a c a d b
+e16 g, a g b g c a
+d16 f, g f a f b g
+c16 e, f e g e a f
+b16 d, e d f d g e
+a16 c, d c e c f d
+
+g16 b, c b d b e c
+f16 a, b a c a d b
+\voiceTwo
+e16 g, a g b g c a
+d16 f, g f a f b g
+c16 e, f e g e a f
+b16 d, e d f d g e
+a16 c, d c e c f d
+c2
+\bar "|."
+}
diff --git a/dir/lh7.ily b/dir/lh7.ily
new file mode 100644
index 0000000..d4ca597
--- /dev/null
+++ b/dir/lh7.ily
@@ -0,0 +1,40 @@
+\relative e, {
+\voiceTwo
+c16 e d f e g f e
+d16 f e g f a g f
+e16 g f a g b a g
+f16 a g b a c b a
+\oneVoice
+g16 b a c b d c b
+a16 c b d c e d c
+b16 d c e d f e d
+
+c16 e d f e g f e
+d16 f e g f a g f
+e16 g f a g b a g
+f16 a g b a c b a
+g16 b a c b d c b
+a16 c b d c e d c
+b16 d c e d f e d
+\bar "||"
+}
+\relative e' {
+g16 e f d e c d e
+f16 d e c d b c d
+e16 c d b c a b c
+d16 b c a b g a b
+c16 a b g a f g a
+b16 g a f g e f g
+a16 f g e f d e f
+
+g16 e f d e c d e
+f16 d e c d b c d
+e16 c d b c a b c
+\voiceTwo
+d16 b c a b g a b
+c16 a b g a f g a
+b16 g a f g e f g
+a16 f g e f d e f
+c2
+\bar "|."
+}
diff --git a/dir/lh8.ily b/dir/lh8.ily
new file mode 100644
index 0000000..a69f154
--- /dev/null
+++ b/dir/lh8.ily
@@ -0,0 +1,36 @@
+\relative e, {
+c16 e g a f g e f
+d16 f a b g a f g
+e16 g b c a b g a
+f16 a c d b c a b
+g16 b d e c d b c
+a16 c e f d e c d
+b16 d f g e f d e
+
+c16 e g a f g e f
+d16 f a b g a f g
+e16 g b c a b g a
+f16 a c d b c a b
+g16 b d e c d b c
+a16 c e f d e c d
+b16 d f g e f d e
+\bar "||"
+}
+\relative e' {
+g16 e c b d c e d
+f16 d b a c b d c
+e16 c a g b a c b
+d16 b g f a g b a
+c16 a f e g f a g
+b16 g e d f e g f
+a16 f d c e d f e
+
+g16 e c b d c e d
+f16 d b a c b d c
+e16 c a g b a c b
+d16 b g f a g b a
+c16 a f e g f a g
+b16 g e d f e g f
+a16 f d c e d f e
+\bar "|."
+}
diff --git a/dir/lh9.ily b/dir/lh9.ily
new file mode 100644
index 0000000..b8c52b7
--- /dev/null
+++ b/dir/lh9.ily
@@ -0,0 +1,36 @@
+\relative e, {
+c16 e f e g f a g
+d16 f g f a g b a
+e16 g a g b a c b
+f16 a b a c b d c
+g16 b c b d c e d
+a16 c d c e d f e
+b16 d e d f e g f
+
+c16 e f e g f a g
+d16 f g f a g b a
+e16 g a g b a c b
+f16 a b a c b d c
+g16 b c b d c e d
+a16 c d c e d f e
+b16 d e d f e g f
+\bar "||"
+}
+\relative e' {
+g16 e d e c d b c
+f16 d c d b c a b
+e16 c b c a b g a
+d16 b a b g a f g
+c16 a g a f g e f
+b16 g f g e f d e
+a16 f e f d e c d
+
+g16 e d e c d b c
+f16 d c d b c a b
+e16 c b c a b g a
+d16 b a b g a f g
+c16 a g a f g e f
+b16 g f g e f d e
+a16 f e f d e c d
+\bar "|."
+}
diff --git a/dir/rh1.ily b/dir/rh1.ily
new file mode 100644
index 0000000..a5daa92
--- /dev/null
+++ b/dir/rh1.ily
@@ -0,0 +1,45 @@
+\relative e {
+\change Staff = "down"
+\voiceOne
+c16-1 e-2 f-3 g-4 a-5 g f e
+d16-1 f-2 g-3 a-4 b-5 a g f
+e16-1 g-2 a b c-5 b a g
+f16-1 a-2 b c d-5 c b a
+g16-1 b-2 c d
+\change Staff = "up"
+\oneVoice
+e d c b
+a16 c d e f e d c
+b16 d e f g f e d
+
+c16 e f g a g f e
+d16 f g a b a g f
+e16 g a b c b a g
+f16 a b c d c b a
+g16 b c d e d c b
+a16 c d e f e d c
+b16 d e f g f e d
+\bar "||"
+}
+\relative e'' {
+g16-5 e-4 d-3 c-2 b-1 c d e
+f16-5 d-4 c-3 b-2 a-1 b c d
+e16-5 c-4 b a g-1 a b c
+d16-5 b-4 a g f-1 g a b
+c16-5 a-4 g f e-1 f g a
+b16 g f e d e f g
+a16 f e d c d e f
+
+g16 e d c b c d e
+f16 d c b a b c d
+e16 c b a
+\change Staff = "down"
+\voiceOne
+g a b c
+d16 b a g f g a b
+c16 a g f e f g a
+b16 g f e d e f g
+a16 f e d c d e f
+c2
+\bar "|."
+}
diff --git a/dir/rh10.ily b/dir/rh10.ily
new file mode 100644
index 0000000..12d0db8
--- /dev/null
+++ b/dir/rh10.ily
@@ -0,0 +1,36 @@
+\relative e {
+c16 a' g f e f e f
+d16 b' a g f g f g
+e16 c' b a g a g a
+f16 d' c b a b a b
+g16 e' d c b c b c
+a16 f' e d c d c d
+b16 g' f e d e d e
+
+c16 a' g f e f e f
+d16 b' a g f g f g
+e16 c' b a g a g a
+f16 d' c b a b a b
+g16 e' d c b c b c
+a16 f' e d c d c d
+b16 g' f e d e d e
+\bar "||"
+}
+\relative e'' {
+g16 b, c d e d e d
+f16 a, b c d c d c
+e16 g, a b c b c b
+d16 f, g a b a b a
+c16 e, f g a g a g
+b16 d, e f g f g f
+a16 c, d e f e f e
+
+g16 b, c d e d e d
+f16 a, b c d c d c
+e16 g, a b c b c b
+d16 f, g a b a b a
+c16 e, f g a g a g
+b16 d, e f g f g f
+a16 c, d e f e f e
+\bar "|."
+}
diff --git a/dir/rh2.ily b/dir/rh2.ily
new file mode 100644
index 0000000..6de4e4b
--- /dev/null
+++ b/dir/rh2.ily
@@ -0,0 +1,43 @@
+\relative e {
+\change Staff = "down"
+\voiceOne
+c16 e a g f g f e
+d16 f b a g a g f
+e16 g c b a b a g
+f16 a d c b c b a
+\change Staff = "up"
+\oneVoice
+g16 b e d c d c b
+a16 c f e d e d c
+b16 d g f e f e d
+
+c16 e a g f g f e
+d16 f b a g a g f
+e16 g c b a b a g
+f16 a d c b c b a
+g16 b e d c d c b
+a16 c f e d e d c
+b16 d g f e f e d
+\bar "||"
+}
+\relative e'' {
+g16 d b c d c d e
+f16 c a b c b c d
+e16 b g a b a b c
+d16 a f g a g a b
+c16 g e f g f g a
+b16 f d e f e f g
+a16 e c d e d e f
+
+g16 d b c d c d e
+f16 c a b c b c d
+\change Staff = "down"
+\voiceOne
+e16 b g a b a b c
+d16 a f g a g a b
+c16 g e f g f g a
+b16 f d e f e f g
+a16 e c d e d e f
+c2
+\bar "|."
+}
diff --git a/dir/rh3.ily b/dir/rh3.ily
new file mode 100644
index 0000000..bda8517
--- /dev/null
+++ b/dir/rh3.ily
@@ -0,0 +1,43 @@
+\relative e {
+\change Staff = "down"
+\voiceOne
+c16 e a g f e f g
+d16 f b a g f g a
+e16 g c b a g a b
+f16 a d c b a b c
+\change Staff = "up"
+\oneVoice
+g16 b e d c b c d
+a16 c f e d c d e
+b16 d g f e d e f
+
+c16 e a g f e f g
+d16 f b a g f g a
+e16 g c b a g a b
+f16 a d c b a b c
+g16 b e d c b c d
+a16 c f e d c d e
+b16 d g f e d e f
+\bar "||"
+}
+\relative e'' {
+g16 d b c d e d c
+f16 c a b c d c b
+e16 b g a b c b a
+d16 a f g a b a g
+c16 g e f g a g f
+b16 f d e f g f e
+a16 e c d e f e d
+
+g16 d b c d e d c
+f16 c a b c d c b
+\change Staff = "down"
+\voiceOne
+e16 b g a b c b a
+d16 a f g a b a g
+c16 g e f g a g f
+b16 f d e f g f e
+a16 e c d e f e d
+c2
+\bar "|."
+}
diff --git a/dir/rh4.ily b/dir/rh4.ily
new file mode 100644
index 0000000..2bc36d9
--- /dev/null
+++ b/dir/rh4.ily
@@ -0,0 +1,45 @@
+\relative e {
+\change Staff = "down"
+\voiceOne
+c16 d c e a g f e
+d16 e d f b a g f
+e16 f e g c b a g
+f16 g f a d c b a
+g16 a g b
+\change Staff = "up"
+\oneVoice
+e d c b
+a16 b a c f e d c
+b16 c b d g f e d
+
+c16 d c e a g f e
+d16 e d f b a g f
+e16 f e g c b a g
+f16 g f a d c b a
+g16 a g b e d c b
+a16 b a c f e d c
+b16 c b d g f e d
+\bar "||"
+}
+\relative e'' {
+g16 f g d b c d e
+f16 e f c a b c d
+e16 d e b g a b c
+d16 c d a f g a b
+c16 b c g e f g a
+b16 a b f d e f g
+a16 g a e c d e f
+
+g16 f g d b c d e
+f16 e f c a b c d
+e16 d e b
+\change Staff = "down"
+\voiceOne
+g a b c
+d16 c d a f g a b
+c16 b c g e f g a
+b16 a b f d e f g
+a16 g a e c d e f
+c2
+\bar "|."
+}
diff --git a/dir/rh5.ily b/dir/rh5.ily
new file mode 100644
index 0000000..b7120df
--- /dev/null
+++ b/dir/rh5.ily
@@ -0,0 +1,43 @@
+\relative e {
+\change Staff = "down"
+\voiceOne
+c16 a' g a f g e f
+d16 b' a b g a f g
+e16 c' b c a b g a
+f16 d' c d b c a b
+\change Staff = "up"
+\oneVoice
+g16 e' d e c d b c
+a16 f' e f d e c d
+b16 g' f g e f d e
+
+c16 a' g a f g e f
+d16 b' a b g a f g
+e16 c' b c a b g a
+f16 d' c d b c a b
+g16 e' d e c d b c
+a16 f' e f d e c d
+b16 g' f g e f d e
+\bar "||"
+}
+\relative e'' {
+c16 d c e d f e g
+b,16 c b d c e d f
+a,16 b a c b d c e
+g,16 a g b a c b d
+f,16 g f a g b a c
+e,16 f e g f a g b
+d,16 e d f e g f a
+
+c,16 d c e d f e g
+b,16 c b d c e d f
+a,16 b a c b d c e
+\change Staff = "down"
+\voiceOne
+g,16 a g b a c b d
+f,16 g f a g b a c
+e,16 f e g f a g b
+d,16 e d f e g f a
+c,2
+\bar "|."
+}
diff --git a/dir/rh6.ily b/dir/rh6.ily
new file mode 100644
index 0000000..4b15adb
--- /dev/null
+++ b/dir/rh6.ily
@@ -0,0 +1,43 @@
+\relative e {
+\change Staff = "down"
+\voiceOne
+c16 a' g a f a e a
+d,16 b' a b g b f b
+e,16 c' b c a c g c
+f,16 d' c d b d a d
+\change Staff = "up"
+\oneVoice
+g,16 e' d e c e b e
+a,16 f' e f d f c f
+b,16 g' f g e g d g
+
+c,16 a' g a f a e a
+d,16 b' a b g b f b
+e,16 c' b c a c g c
+f,16 d' c d b d a d
+g,16 e' d e c e b e
+a,16 f' e f d f c f
+b,16 g' f g e g d g
+\bar "||"
+}
+\relative e'' {
+g16 b, c b d b e c
+f16 a, b a c a d b
+e16 g, a g b g c a
+d16 f, g f a f b g
+c16 e, f e g e a f
+b16 d, e d f d g e
+a16 c, d c e c f d
+
+g16 b, c b d b e c
+f16 a, b a c a d b
+\change Staff = "down"
+\voiceOne
+e16 g, a g b g c a
+d16 f, g f a f b g
+c16 e, f e g e a f
+b16 d, e d f d g e
+a16 c, d c e c f d
+c2
+\bar "|."
+}
diff --git a/dir/rh7.ily b/dir/rh7.ily
new file mode 100644
index 0000000..5f115f8
--- /dev/null
+++ b/dir/rh7.ily
@@ -0,0 +1,43 @@
+\relative e {
+\change Staff = "down"
+\voiceOne
+c16 e d f e g f e
+d16 f e g f a g f
+e16 g f a g b a g
+f16 a g b a c b a
+\change Staff = "up"
+\oneVoice
+g16 b a c b d c b
+a16 c b d c e d c
+b16 d c e d f e d
+
+c16 e d f e g f e
+d16 f e g f a g f
+e16 g f a g b a g
+f16 a g b a c b a
+g16 b a c b d c b
+a16 c b d c e d c
+b16 d c e d f e d
+\bar "||"
+}
+\relative e'' {
+g16 e f d e c d e
+f16 d e c d b c d
+e16 c d b c a b c
+d16 b c a b g a b
+c16 a b g a f g a
+b16 g a f g e f g
+a16 f g e f d e f
+
+g16 e f d e c d e
+f16 d e c d b c d
+e16 c d b c a b c
+\change Staff = "down"
+\voiceOne
+d16 b c a b g a b
+c16 a b g a f g a
+b16 g a f g e f g
+a16 f g e f d e f
+c2
+\bar "|."
+}
diff --git a/dir/rh8.ily b/dir/rh8.ily
new file mode 100644
index 0000000..8c1973c
--- /dev/null
+++ b/dir/rh8.ily
@@ -0,0 +1,36 @@
+\relative e {
+c16 e g a f g e f
+d16 f a b g a f g
+e16 g b c a b g a
+f16 a c d b c a b
+g16 b d e c d b c
+a16 c e f d e c d
+b16 d f g e f d e
+
+c16 e g a f g e f
+d16 f a b g a f g
+e16 g b c a b g a
+f16 a c d b c a b
+g16 b d e c d b c
+a16 c e f d e c d
+b16 d f g e f d e
+\bar "||"
+}
+\relative e'' {
+g16 e c b d c e d
+f16 d b a c b d c
+e16 c a g b a c b
+d16 b g f a g b a
+c16 a f e g f a g
+b16 g e d f e g f
+a16 f d c e d f e
+
+g16 e c b d c e d
+f16 d b a c b d c
+e16 c a g b a c b
+d16 b g f a g b a
+c16 a f e g f a g
+b16 g e d f e g f
+a16 f d c e d f e
+\bar "|."
+}
diff --git a/dir/rh9.ily b/dir/rh9.ily
new file mode 100644
index 0000000..b0d658f
--- /dev/null
+++ b/dir/rh9.ily
@@ -0,0 +1,36 @@
+\relative e {
+c16 e f e g f a g
+d16 f g f a g b a
+e16 g a g b a c b
+f16 a b a c b d c
+g16 b c b d c e d
+a16 c d c e d f e
+b16 d e d f e g f
+
+c16 e f e g f a g
+d16 f g f a g b a
+e16 g a g b a c b
+f16 a b a c b d c
+g16 b c b d c e d
+a16 c d c e d f e
+b16 d e d f e g f
+\bar "||"
+}
+\relative e'' {
+g16 e d e c d b c
+f16 d c d b c a b
+e16 c b c a b g a
+d16 b a b g a f g
+c16 a g a f g e f
+b16 g f g e f d e
+a16 f e f d e c d
+
+g16 e d e c d b c
+f16 d c d b c a b
+e16 c b c a b g a
+d16 b a b g a f g
+c16 a g a f g e f
+b16 g f g e f d e
+a16 f e f d e c d
+\bar "|."
+}
diff --git a/gen_exercises.py b/gen_exercises.py
new file mode 100644
index 0000000..dc58560
--- /dev/null
+++ b/gen_exercises.py
@@ -0,0 +1,11 @@
+from string import Template
+import sys
+
+with open(sys.argv[1]) as fh:
+ template = Template(fh.read())
+
+for i in xrange(1, 11):
+ lh = "lh" + str(i) + ".ily"
+ rh = "rh" + str(i) + ".ily"
+ with open(str(i) + ".ily", "w") as fh:
+ fh.write(template.substitute(title=i, lh=lh, rh=rh))
diff --git a/gen_pitches.py b/gen_pitches.py
new file mode 100644
index 0000000..8c15317
--- /dev/null
+++ b/gen_pitches.py
@@ -0,0 +1,58 @@
+from functools import partial
+from string import Template
+
+index_to_pitch = [ "a", "b", "c", "d", "e", "f", "g"]
+pitch_to_index = { "a": 0, "b": 1, "c": 2, "d": 3, "e": 4, "f": 5, "g": 6}
+
+def pitch_transpose(pitch, delta=1):
+ return index_to_pitch[(pitch_to_index[pitch[0]] + delta) % 7] + pitch[1:]
+
+def bar_transpose(bar, delta=1):
+ return " ".join(pitch_transpose(pitch, delta) for pitch in bar.split())
+
+def compile_exercise(seed_asc, seed_desc):
+ asc = "\n".join(bar_transpose(seed_asc, i) for i in xrange(7))
+ desc = "\n".join(bar_transpose(seed_desc, -i) for i in xrange(7))
+ right = """\\relative e {
+$asc
+
+$asc
+\\bar "||"
+}
+\\relative e'' {
+$desc
+
+$desc
+\\bar "|."
+}
+"""
+ left = """\\relative e, {
+$asc
+
+$asc
+\\bar "||"
+}
+\\relative e' {
+$desc
+
+$desc
+\\bar "|."
+}
+"""
+ tpl_left, tpl_right = Template(left), Template(right)
+ return (tpl_left.substitute(asc=asc, desc=desc),
+ tpl_right.substitute(asc=asc, desc=desc))
+
+
+if __name__ == "__main__":
+ import sys
+ from string import Template
+ seeds = sys.argv[1]
+ with open(seeds) as fh:
+ for line in fh:
+ num, seed_asc, seed_desc = line.split("#")
+ lh, rh = compile_exercise(seed_asc, seed_desc)
+ with open("rh" + num + ".ily", "w") as fhr:
+ fhr.write(rh)
+ with open("lh" + num + ".ily", "w") as fhr:
+ fhr.write(lh)
diff --git a/hanon.ly b/hanon.ly
new file mode 100644
index 0000000..c942f5d
--- /dev/null
+++ b/hanon.ly
@@ -0,0 +1,19 @@
+\version "2.16.2"
+
+\paper {
+ two-sided = ##t
+ bottom-margin = 1\cm
+ indent = 1\cm
+}
+
+\include "dir/1.ily"
+\include "dir/2.ily"
+\include "dir/3.ily"
+\pageBreak
+\include "dir/4.ily"
+\include "dir/5.ily"
+\include "dir/6.ily"
+\include "dir/7.ily"
+\include "dir/8.ily"
+\include "dir/9.ily"
+\include "dir/10.ily"
diff --git a/hanon.pdf b/hanon.pdf
new file mode 100644
index 0000000..d5ead65
--- /dev/null
+++ b/hanon.pdf
Binary files differ
diff --git a/imslp-hanon.pdf b/imslp-hanon.pdf
new file mode 100644
index 0000000..d9b9579
--- /dev/null
+++ b/imslp-hanon.pdf
Binary files differ
diff --git a/seeds_simple b/seeds_simple
new file mode 100644
index 0000000..c4c646b
--- /dev/null
+++ b/seeds_simple
@@ -0,0 +1,10 @@
+1#c16 e f g a g f e#g16 e d c b c d e
+2#c16 e a g f g f e#g16 d b c d c d e
+3#c16 e a g f e f g#g16 d b c d e d c
+4#c16 d c e a g f e#g16 f g d b c d e
+5#c16 a' g a f g e f#c16 d c e d f e g
+6#c16 a' g a f a e a#g16 b, c b d b e c
+7#c16 e d f e g f e#g16 e f d e c d e
+8#c16 e g a f g e f#g16 e c b d c e d
+9#c16 e f e g f a g#g16 e d e c d b c
+10#c16 a' g f e f e f#g16 b, c d e d e d
diff --git a/simple.itpl b/simple.itpl
new file mode 100644
index 0000000..842809a
--- /dev/null
+++ b/simple.itpl
@@ -0,0 +1,17 @@
+\score{
+ \new PianoStaff <<
+ \override PianoStaff.InstrumentName #'self-alignment-X = #RIGHT
+ \set PianoStaff.instrumentName = \markup{\right-align\bold\fontsize #3 ${title}.}
+ \new Staff = "up" {
+ \clef treble
+ \time 2/4
+ \new Voice
+\include "dir/$rh"
+ }
+ \new Staff = "down" {
+ \clef bass
+ \new Voice
+\include "dir/$lh"
+ }
+ >>
+}