lilypond-user
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Polymetric music and page breaks


From: Jan-Peter Voigt
Subject: Re: Polymetric music and page breaks
Date: Mon, 30 May 2011 18:20:24 +0200

Dear Andrea,

right now I have to develop heavliy on something else ... so this is just a short intermission and might not be the help you are asking for ...
this is just, what I did, typesetting a polymetric song of my beloved uncle, where I also got into trouble with page/line breaking:
------------------------------------------------------------------------------snip--
% I declared a function for declaring 'count' measures of 'nom'/'den' timing
#(define-public taktdef (define-music-function (parser location nom den count)(integer? integer? integer?)
  (make-music
    'SequentialMusic
    'elements
    (list 
      (make-music
        'ContextSpeccedMusic
        'context-type
        'Timing
        'element
        (make-music
          'SequentialMusic
          'elements
          (list 
            
            (make-music
              'PropertySet
              'value
              (cons nom den)
              'symbol
              'timeSignatureFraction)
            (make-music
              'PropertySet
              'value
              (ly:make-moment 1 den 0 1)
              'symbol
              'beatLength)
            (make-music
              'PropertySet
              'value
              (ly:make-moment nom den 0 1)
              'symbol
              'measureLength))
      ))
      (make-music
        'SkipEvent
        'duration
        (ly:make-duration (inexact->exact (/ (log den)(log 2))) 0 (* nom count) 1))))))

% then I declared a music-function to build one staff with one voice and one lyrice line (it is a choral piece)
dostaff = #(define-music-function (parser location name short global meta noten vers)
  (string? string? ly:music? ly:music? ly:music? ly:music?)
  #{
    <<
      \new Staff \with {
        instrumentName = $name
        shortInstrumentName = $short
      } <<
        \new Voice { $meta }
        \new Voice = $name { $global $noten } >>
      \new Lyrics \lyricsto $name { $vers } >>
#})

% then I defined a meta, a notes and a lyrics var like this ... this doesn't fit!
global = {
% choral music!
\autoBeamOff
\dynamicUp
}

sopmeta = {
% ...
  \taktdef #7 #4 #1
  << \taktdef #11 #8 #1 { s4 \mark \default s \tempo "etwas bewegter" \bar "" } >>
  \taktdef #4 #4 #1
% ...
}
sopN = \relative c'' {
% ...
e | r4 r b4. b8 c! d! | b1. r4 |
% ...
}
sopT = \lyricmode {
a a a a
}
% ... alt,ten,bas
% and then I combined my parts like this
  \score {
    \new ChoirStaff <<
      \dostaff #"Sopran" #"S" { \global } \sopmeta \sopN \sopT
      \dostaff #"Alt" #"A" { \global } \altmeta \altN \altT
      \dostaff #"Tenor" #"T" { \clef "G_8" \global } \tenmeta \tenN \tenT
      \dostaff #"Bass" #"B" { \clef "bass" \global } \basmeta \basN \basT >>
}

------------------------------------------------------------------------------snip--

And this is a short test only with full measure rests:
It won't break, if you omit the empty bar lines. 

------------------------------------------------------------------------------snip--
\version "2.12.3" 

\layout {
#(layout-set-staff-size 12)
ragged-right = ##t
ragged-left = ##f
  \context {
    \Score
    \remove "Timing_translator"
    \remove "Default_bar_line_engraver"
\override NoteColumn #'ignore-collision = ##t
  }
  \context {
    \Staff
    \consists "Timing_translator"
    \consists "Default_bar_line_engraver"
  }
  \context {
\Voice
\remove "Forbid_line_break_engraver"
\override Beam #'breakable = ##t
  }
%end of layout
}

\score {
<<
\new Staff <<
{ \time 11/8 }
\repeat unfold 4 {
R8*11 \break
>>
\new Staff <<
\time 13/8
\repeat unfold 3 {
R8*13
}
% if you omit this, no breaking will occur!
\repeat unfold 4 {
s8*11 \bar ""
} >>>
}

------------------------------------------------------------------------------snip--
 As you can see in the first example, I used << \taktdef { s \bar "" s } >> for withinthemeasure breaks.

Regards,
Jan-Peter


reply via email to

[Prev in Thread] Current Thread [Next in Thread]