diff --git a/Joseph-Haydn-Die-Sieben-Wörte-des-Erlösers.ly b/Joseph-Haydn-Die-Sieben-Wörte-des-Erlösers.ly index b2a3946..d4ed2a3 100644 --- a/Joseph-Haydn-Die-Sieben-Wörte-des-Erlösers.ly +++ b/Joseph-Haydn-Die-Sieben-Wörte-des-Erlösers.ly @@ -32,13 +32,128 @@ } } +rmtext = #(define-scheme-function + (o) + (ly:music?) + (define (f o) + (ly:music-set-property! o 'text "") + (let ((t (ly:music-property o 'name))) + (let ((els (ly:music-property o 'elements))) + (if (null? els) + (let ((arts (ly:music-property o 'articulations))) + (map (lambda (a) + (f a)) + arts)) + (map (lambda (e) + (f e) + ) + els)))) + ) + (let ((oo (ly:music-deep-copy o))) + (f oo) + oo) + ) + + +rep = #(define-scheme-function + (n m) + (index? ly:music?) + (let ((nn (- n 1)) + (mm (rmtext m)) + ) + (if (> nn 0) + #{ + $m \repeat unfold $nn $mm + #} + #{ + $m + #} + ) + ) + ) + fr = #(define-scheme-function - (n) - (ly:music?) - #{ - $n $n $n $n - #} - ) + (n) + (ly:music?) + (let ((nf (ly:music-deep-copy n))) + (let ((els (ly:music-property nf 'elements))) + (map (lambda (e) + (ly:music-set-property! e 'text "")) + els) + ) + #{ + $n $nf $nf $nf + #} + ) + ) + +frr = #(define-scheme-function + (n) + (ly:music?) + (let ((nf (ly:music-deep-copy n))) + (let ((els (ly:music-property nf 'elements))) + (map (lambda (e) + (ly:music-set-property! e 'text "")) + els) + ) + #{ + $n $nf $nf $nf $nf $nf $nf $nf + #} + ) + ) + + +fig = #(define-music-function + (a b c) + (ly:music? ly:music? ly:music?) + + (define (with-duration-i m d) + (map (lambda (n) (with-duration-i n d)) + (ly:music-property m 'elements))) + + (define (with-duration-internal m duration) + (cond + ((or (music-is-of-type? m 'note-event) (music-is-of-type? m 'rest-event) (music-is-of-type? m 'skip-event)) + (ly:music-set-property! m 'duration (apply ly:make-duration duration))) + ((music-is-of-type? m 'event-chord) + (map (lambda (n) (with-duration-internal n duration)) + (ly:music-property m 'elements))) + (else (ly:warning "Neither note event nor chord")) + ) + m + ) + + (define (with-duration m . d) + (with-duration-internal (ly:music-deep-copy m) d)) + + (define (adjust-first l) + (if (null? l) + 'done + (let ((e (car l))) + (if (music-is-of-type? e 'note-event) + (adjust-pitch-i e) + (adjust-first (cdr l)))) + ) + ) + + (define (adjust-pitch-i m) + (cond + ((music-is-of-type? m 'note-event) + (let ((p (ly:music-property m 'pitch))) + (let ((pp (ly:make-pitch -1 (ly:pitch-notename p) 0))) + (ly:music-set-property! m 'pitch pp))) + ) + ((music-is-of-type? m 'event-chord) + (adjust-first (ly:music-property m 'elements)) + ) + ) + m) + + (define (adjust-pitch a) + (adjust-pitch-i (ly:music-deep-copy a))) + + #{ #(with-duration a 3 2) #(with-duration (adjust-pitch a) 5) -. $b -. $c -. #} + ) global = { \key f \major @@ -56,9 +171,9 @@ scoreAViolinI_introduzione = \relative c'' { \introduzione % Muziek volgt hier. \relative c' { - d4\ff d'8.. d32-. cs8-. bf'-. r4 a,, g''8.. g32-. f8-. d'-. r4 - f,,2\p( e4. fs16. g32) g4 r8 bf16.( a32) a8-. r r bf'16.( a32) a8-. r r b,16.\fz( a32) a16-.\p r g-. r f-. r e-. r - d4\f d'8.. d32-. cs8-. bf'-. r4 c,,4 ef'8.. ef32 d16 d'-.\ff d-. d-. \fr d-. + d4\ff \fig d' cs8 bf' r4 a,, \fig g'' f8 d' r4 + f,,2\p( e4. fs16. g32) g4 r8 bf16.( a32) a8-. r r bf'16.( a32) a8-. r r b,16.\fz( a32) a16-!\p r g-! r f-! r e-! r + d4\f \fig d' cs8 bf' r4 c,,4 ef'8.. ef32 d16 d'-.\ff d-. d-. \fr d-. d8\fz( d32)( c bf a) \fr g16-. c8\fz( c32)( bf a g) \fr fs16-. g8 \acciaccatura a g32( fs g a) \fr bf16-. -. r -. r -. r -. r 8 r f'16.(\fz d32) f16.(\fz d32) cs8 a' gs4( a8) r8 f,16.(\fz d32) f16.(\fz d32) cs8 a' gs4( a8) a,-. a-. a-. a2\fermata @@ -90,12 +205,42 @@ scoreAViolinI_introduzione = \relative c'' { scoreAViolinII_introduzione = \relative c'' { \global % Muziek volgt hier. + \relative c' { + d4\ff \fig 8 cs, r4 a4 \fig 8 f r4 + d2.\p( cs8) c-. r r cs16.( d32) d8-. r r cs'16.( d32) d8-. r r cs,16.(\f d32) d16-. r e-.\p r d-. r cs-. r + d4\f \fig 8 cs, r4 c!4 8.. 32 4 r + \fr 16\ff \fr \fr \fz \fr \frr a' r a r e' r d r cs8 a8 gs4 a8 cs!16. e32 f16.(\fz d32) f16.(\fz d32) + cs8 r gs,4 a8 cs16. e32 f16.(\fz e32) f16.(\fz e32) cs8 a-. a-. a-. a2\fermata + + \mark A + + \rep 2 {a16-.(\p a-. a-. a-.)} \rep 8 bf \rep 7 bf g \rep 8 a \rep 8 af' \rep 7 af + af8-. g-. r4 f8\p( f) r4 8-.\f -. r4 d2\p( df4)( c d) r4 a4( bf a) r + 16\f \rep 7 16 8 r4 d,4 r4 e2 8\f 4\fz 8 e' bf'4\fz a8 g e'4\fz f8 d8 r r + <<{ \stemDown \rep 4 f16\p } \\ {\stemUp 8 }>> \rep 4 f16 f2:16 \rep 8 f16 gf8-. -.\f r4 gf'16\p \rep 3 gf f f ef ef + \rep 8 f f2:16 f2:16 \rep 8 f16 f2:16 \rep 8 g16 g2:16 \rep 8 g16 \rep 4 a \rep 4 f \rep 8 d\f cs8 a' gs4 + a8 cs16. e32 f16.\fz( d32) f16.\fz( d32) cs8 r4 gs,8 a cs16.( e32) f16.\fz( d32) f16.\fz( d32) cs8 a a a a1\fermata + + \mark B + d4\f \fig 8 cs, r4 a4 \fig 8 f r4 + d2.\p( cs4 c!2) d8( c bf c) d2( cs16) a'-.\f \rep 6 a-. \rep 4 -. -. bf'-. a-. g-. -. \rep 4 -. f'-. g-. a-. + \rep 4 \fz \fz \rep 3 4 r bf\p r bf'8-. a-. r4 + 8-.\f r8. f16\p e8( bf' a cs,) d4\fermata r8\fermata r8 c'16\p \rep 7 c16 \rep 8 bf bf2:16 + a8 r8 r8 cs16.( d32) d8-. r8 r8 g,,16.( a32) a8 r8 r8 a16.( bf32) bf8-. r8 cs r d8\f 4\fz d8 cs8 cs4\fz d8 + e8 cs'4\fz d8 8 r r + r bf'16.\p( a32) \autoBeamOff a8-. \autoBeamOn g16.( f32) \autoBeamOff f8-. \autoBeamOn g16.( f32) \autoBeamOff f8 \autoBeamOn e16.( d32) + d8-.(\pp d-. d-. d-.) d2\fermata + } } scoreAViola_introduzione = \relative c' { \global % Muziek volgt hier. + 4\ff \fig d e8 g r4 a4 cs8.. cs32 d8 d, r4 r8 d\p( bf f g gs a d) g,4 r8 e'16.( f32) f8-. r r g16.( f32) g8 r r e16.(\fz f32) f16\p r g r a r a, r + 4\f d'8.. d32 e8-. g-. r4 c,!4 c'8.. c32 bf16 \rep 7 -.\ff \rep 8 ef'\fz ef ef ef a, a a a bf bf bf bf g g g g g r f r cs r d r + + } @@ -125,10 +270,27 @@ scoreACelloPart_introduzione = \new Staff \with { \score { \scoreAViolinIPart_introduzione \layout { + \context { + \Score + \override SpacingSpanner.common-shortest-duration = #(ly:make-moment 1/3) + } %#(layout-set-staff-size 16) } } +\score { + \scoreAViolinIIPart_introduzione + \layout { + \context { + \Score + \override SpacingSpanner.common-shortest-duration = #(ly:make-moment 1/3) + } + %#(layout-set-staff-size 16) + } +} + + + \score { << \scoreAViolinIPart_introduzione