From 2857a4af6ac2b70a916da91647c97662207a76b3 Mon Sep 17 00:00:00 2001 From: hanwen Date: Sat, 26 Jul 2003 14:03:49 +0000 Subject: [PATCH] * input/test/polymetric-differing-notes.ly: add example with disparate note values. * input/test/polymetric.ly: rename from poly-metric --- ChangeLog | 4 +- input/test/polymetric-differing-notes.ly | 70 ++++++++++++++++++++++++ input/test/polymetric.ly | 11 +--- 3 files changed, 74 insertions(+), 11 deletions(-) create mode 100644 input/test/polymetric-differing-notes.ly diff --git a/ChangeLog b/ChangeLog index f74710ec71..e03ebbaeba 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,7 +1,9 @@ 2003-07-26 Han-Wen Nienhuys + * input/test/polymetric-differing-notes.ly: add example with + disparate note values. + * input/test/polymetric.ly: rename from poly-metric - add example with disparate note value. * scripts/ly2dvi.py (include_path): bugfix: use outbase iso. outname. diff --git a/input/test/polymetric-differing-notes.ly b/input/test/polymetric-differing-notes.ly new file mode 100644 index 0000000000..e519f3665e --- /dev/null +++ b/input/test/polymetric-differing-notes.ly @@ -0,0 +1,70 @@ +\version "1.7.18" + +\header{ texidoc=" + +@cindex polymetric music + +@cindex scaling durations + +You can have multiple time signatures occuring at the same time, with +different durations aligned. This is done by 1. compressing one of +the lines, analogous to \times, but without the bracket, and +2. manually setting timeSignatureFraction to the desired fraction. + +This example puts 3/4, 9/8 and 10/8 in parallel. The last staff shows +what happens on the inside: a 3/4 time signature is combined with a +3/5 tuplet yielding the equivalent of a 10/8. + +" + +} + + +#(define (scale-one-music m fraction) + "Maybe we should just export Music::compress to Scheme?" + (let* + ((dur (ly:get-mus-property m 'duration))) + + (if (ly:duration? dur) + (let* + ((l (ly:duration-log dur)) + (d (ly:duration-dot-count dur)) + (factor (ly:duration-factor dur))) + + (ly:set-mus-property! m 'duration + (ly:make-duration l d + (* (car fraction) (car factor)) + (* (cdr fraction) (cdr factor)))))) + + m)) + +#(define (scale-music-function fraction) + (lambda (x) + (music-map (lambda (y) (scale-one-music y fraction)) x))) + + + +\score { + \notes \relative c' < + \context Staff= AS { + \time 3/4 + c4 c c | c c c | + } + \context Staff= BS { + \time 3/4 + \property Staff.timeSignatureFraction= #'(9 . 8) + \apply #display-music \apply #(scale-music-function '(2 . 3)) + \repeat unfold 6 { c8-[ c c-] } + } + + \context Staff= DS { + \time 3/4 + \property Staff.timeSignatureFraction= #'(10 . 8) + \apply #display-music \apply #(scale-music-function '(3 . 5)) + { \repeat unfold 2 { c8-[ c c-] } + \repeat unfold 2 { c8-[ c-] } + | c4. c4. \times 2/3 { c8 c c } c4 } + } + } > + \paper { raggedright = ##t } +} diff --git a/input/test/polymetric.ly b/input/test/polymetric.ly index e3b17665a5..3bf0888ef8 100644 --- a/input/test/polymetric.ly +++ b/input/test/polymetric.ly @@ -10,10 +10,6 @@ This is done by moving the timing engraver to staff context. Also, Staff should be given the alias @code{Timing} to make @code{\time} command work correctly. Barlines distort the regular spacing, though. -If the note durations do not line up, \times can be used to scale up a -staff. The second staff has a 3/4 signature with a 3/5 tuplet over all -of the notes. Switching off the tuplet bracket, and manually printing -a 10/8 sign gives the desired effect. " } @@ -23,12 +19,7 @@ a 10/8 sign gives the desired effect. \time 3/4 c4 c c | c c c | } - \context Staff= DS { - \time 3/4 - \property Staff.timeSignatureFraction= #'(10 . 8) - \property Staff.tupletInvisible = ##t - \times 3/5 { c4. c4. c4 c4 | c4. c4. c4 c4 } - } + \context Staff=BS { \time 2/4 c4 c | c c | c c -- 2.39.5