-
-\header{
-texidoc = "This example shows prelude in C major of WTK1, but coded
-using Scheme functions to save typing work.
-"
-
-
-
- title = "Preludium"
- opus = "BWV 846"
- composer = "Johann Sebastian Bach (1685-1750)"
- enteredby = "Rune Zedeler"
- mutopiatitle = "Das Wohltemperierte Clavier I, Prelude 1 (c-major)"
- mutopiacomposer = "J.S.Bach"
- mutopiaopus = "BWV846"
- mutopiainstrument = "Piano"
- style = "baroque"
- copyright = "Public Domain"
- maintainer = "rz@daimi.au.dk"
- lastupdated = "2001/mar/30"
- tagline = "\\parbox{\hsize}{\\thefooter\\quad\\small \\\\This music is part of the Mutopia project, \\texttt{http://www.mutopiaproject.org/}\\\\It has been typeset and placed in the public domain by " + \maintainer + ".\\\\Unrestricted modification and redistribution is permitted and encouraged---copy this music and share it!}"
-}
+\version "2.10.0"
+\sourcefilename "music-box.ly"
\include "deutsch.ly"
-\version "1.7.5"
+% possible rename to scheme- something. -gp
+% TODO: ask if it needs to have so many empty bars in the middle. -gp
+\header{ texidoc = "@cindex Scheme Music Box
+This example shows prelude in C major of WTK1, but coded
+using Scheme functions to avoid typing work. " }
+
#(define (transform music)
- (let* ((es (ly:get-mus-property music 'elements))
- (n (ly:music-name music))
- )
- (if (not (equal? n "Sequential_music"))
- (ly:warn "transform needs sequential music!")
+ (let* ((es (ly:music-property music 'elements))
+ (n (ly:music-property music 'name)))
+ (if (not (equal? n 'SequentialMusic))
+ (ly:warning "transform needs SequentialMusic, got ~a" n)
(begin
(let recurse ((elts es))
(if (not (equal? elts '()))
(begin
- ((trans (ly:get-mus-property (cadr elts) 'elements)) (car elts))
+ ((trans (ly:music-property (cadr elts) 'elements)) (car elts))
(set-cdr! elts (cddr elts))
(recurse (cdr elts))
- )
- )
- )
- )
- )
+ )))))
music
- )
- )
+ ))
#(define ((trans pitches) music)
- (let* ((es (ly:get-mus-property music 'elements))
- (e (ly:get-mus-property music 'element))
- (p (ly:get-mus-property music 'pitch)))
+ (let* ((es (ly:music-property music 'elements))
+ (e (ly:music-property music 'element))
+ (p (ly:music-property music 'pitch)))
(if (pair? es)
- (ly:set-mus-property!
+ (ly:music-set-property!
music 'elements
(map (trans pitches) es)))
(if (ly:music? e)
- (ly:set-mus-property!
+ (ly:music-set-property!
music 'element
((trans pitches) e)))
(let* ((o (ly:pitch-octave p))
(n (ly:pitch-notename p))
(i (+ (* 7 o) n))
- (pes (ly:get-mus-property (list-ref pitches i) 'elements))
- (pnew (ly:get-mus-property (car pes) 'pitch))
+ (pes (ly:music-property (list-ref pitches i) 'elements))
+ (pnew (ly:music-property (car pes) 'pitch))
)
- (ly:set-mus-property! music 'pitch pnew)
- )
- )
- music
- )
- )
-
-
+ (ly:music-set-property! music 'pitch pnew)
+ ))
+ music))
+
+
+pat = \transpose c c' \repeat unfold 2 {
+ << { \context Staff = "up" {r8 e16 f g e f g } }
+ { \context Staff = "down" <<
+ \context Voice = "vup" { \stemUp \tieUp r16 d8.~d4 }
+ \context Voice = "vdwn" { \stemDown c2 }
+ >> }
+ >>
+}
+enda = { r8 f,16 a, c f c a, \stemUp c \change Staff = down
+ a, f, a, f, d, f, d, \change Staff = up \stemNeutral
+ r8 g16 h d' f' d' h d' h g h d f e\prall d <e g c'>1^\fermata \bar "|."
+}
+endb = {\stemUp \tieUp r16 c,8.~c,4~c,2 r16 h,,8.~h,,4~h,,2 c,1 \bar "|."}
+endc = {\stemDown \tieDown c,,2~c,, c,,~c,, c,,1_\fermata }
-\version "1.7.5"
+prelude =
+#(define-music-function (parser location patterns) (ly:music?)
+ (transform patterns))
-pat = \notes \transpose c c' \repeat unfold 2 {
- < { \context Staff=up {r8 e16 f g e f g } }
- { \context Staff=down <
- \context Voice=vup { \stemUp \tieUp r16 d8.~d4 }
- \context Voice=vdwn { \stemDown c2 }
- > }
- >
-}
-
-enda = \notes { r8 f,16 a, c f c a, \stemUp c \translator Staff = down
- a, f, a, f, d, f, d, \translator Staff = up \stemBoth
- r8 g16 h d' f' d' h d' h g h d f e-\prall d <e1 g c'^\fermata> \bar "|."
-}
-endb = \notes {\stemUp \tieUp r16 c,8.~c,4~c,2 r16 h,,8.~h,,4~h,,2 c,1 \bar "|."}
-endc = \notes {\stemDown \tieDown c,,2~c,, c,,~c,, c,,1_\fermata }
\score {
- \notes \transpose c c' \context PianoStaff <
- \context Staff=up { \clef "G" s1*32 \enda }
- \context Staff=down { \clef "F" s1*32 < \context Voice=vup \endb
- \context Voice=vdwn \endc
- > }
- { \apply #transform {\pat {c e g c' e' }
- \pat {c d a d' f' }
- \pat {h, d g d' f' }
- \pat {c e g c' e' }
- \pat {c e a e' a' }
- \pat {c d fis a d' }
- \pat {h, d g d' g' }
- \pat {h, c e g c' }
- \pat {a, c e g c' }
- \pat {d, a, d fis c' }
- \pat {g, h, d g h }
- \pat {g, b, e g cis' }
- \pat {f, a, d a d' }
- \pat {f, as, d f h }
- \pat {e, g, c g c' }
- \pat {e, f, a, c f }
- \pat {d, f, a, c f }
-
- \pat {g,, d, g, h, f }
- \pat {c, e, g, c e }
- \pat {c, g, b, c e }
- \pat {f,, f, a, c e }
- \pat {fis,, c, a, c es }
- \pat {as,, f, h, c d }
- \pat {g,, f, g, h, d }
- \pat {g,, e, g, c e }
- \pat {g,, d, g, c f }
- \pat {g,, d, g, h, f }
- \pat {g,, es, a, c fis }
- \pat {g,, e, g, c g }
- \pat {g,, d, g, c f }
- \pat {g,, d, g, h, f }
- \pat {c,, c, g, b, e }
- }
- }
- >
- \paper {
- \translator {
- \PianoStaffContext
- VerticalAlignment \override #'forced-distance = #10
+ \transpose c c' \context PianoStaff <<
+ \new Staff = "up" { \clef "G" }
+ \new Staff = "down" { \clef "F" }
+ { \prelude {
+ \pat {c e g c' e' }
+ \pat {c d a d' f' }
+ }
+
+%{
+ %Etc.
+
+ %we get the idea now.
+
+
+ \pat {h, d g d' f' }
+ \pat {c e g c' e' }
+
+ \pat {c e a e' a' }
+ \pat {c d fis a d' }
+ \pat {h, d g d' g' }
+ \pat {h, c e g c' }
+ \pat {a, c e g c' }
+ \pat {d, a, d fis c' }
+ \pat {g, h, d g h }
+ \pat {g, b, e g cis' }
+ \pat {f, a, d a d' }
+ \pat {f, as, d f h }
+ \pat {e, g, c g c' }
+ \pat {e, f, a, c f }
+ \pat {d, f, a, c f }
+
+ \pat {g,, d, g, h, f }
+ \pat {c, e, g, c e }
+ \pat {c, g, b, c e }
+ \pat {f,, f, a, c e }
+ \pat {fis,, c, a, c es }
+ \pat {as,, f, h, c d }
+ \pat {g,, f, g, h, d }
+ \pat {g,, e, g, c e }
+ \pat {g,, d, g, c f }
+ \pat {g,, d, g, h, f }
+ \pat {g,, es, a, c fis }
+ \pat {g,, e, g, c g }
+ \pat {g,, d, g, c f }
+ \pat {g,, d, g, h, f }
+ \pat {c,, c, g, b, e }
+%}
+ }
+ >>
+
+ \layout {
+ line-width = 18.0 \cm
+ }
+
+
+ \midi {
+ \context {
+ \Score
+ tempoWholesPerMinute = #(ly:make-moment 80 4)
+ }
}
- linewidth = 18.0 \cm
- }
- \midi {
- \tempo 4 = 80
- }
+
}
+