lilypond-user
[Top][All Lists]
Advanced

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

Can't get page breaks for 7 over square root of 71 meter


From: mclaren
Subject: Can't get page breaks for 7 over square root of 71 meter
Date: Thu, 3 Nov 2016 17:36:55 -0700 (MST)

A meter of 7/sqr(71) simply means that that there are 7 eighth notes each of
which has duration of square root of 71 = 1/8.426149 of a whole note,
whereas a standard eighth note has duration of 1/8 of a whole note. 
Therefore each eighth note in 7/sqr(71) meter has a duration of 8.426149/8 =
1.053268 of a regular eighth note. We use a rational approximation program
to get a rational fraction which approximates this value to within one part
in a billion, close enough.

The problem comes from Lilypond's bizarre assumption that at some point all
the barlines in the score will line up. In this case, clearly the barlines
in the 7/sqr(71) staff will never line up with any of the other barlines in
the score. Therefore Lilypond can't ever break the page. 

That's a) insane, b) stupid, c) unmusical, d) all three (take your pick). No
matter where I place bar checks and page breaks, Lilypond absolutely
posistively 100% utterly totally refuses to break the page.

Is there any way, any way at all, to break the page on this score?  Or am I
completely and utterly stuck, and have to generate the score piecewise by
compiling a few measures at a time and then PhotoShopping 'em into a full
score?

Here's the Lilypond score:

\version "2.18.2"

\header { 
  tagline = ""  % removed 
} 
#(set-default-paper-size "a4" 'landscape)
\layout {

indent=0
  % Create time signature context
  % Source: http://lsr.di.unimi.it/LSR/Snippet?id=272
  % (modified)
  \context {
    \type Engraver_group
    % Add elements that _can_ be printed
    \consists "Timing_translator"
    \consists "Time_signature_engraver"
    \consists "Axis_group_engraver"
    \name "TimeLine"
    \alias "Staff"
    
    % Align time signatures on barlines
    \override TimeSignature.X-offset =
      #ly:self-alignment-interface::x-aligned-on-self
    \override TimeSignature.self-alignment-X = #CENTER
  }
  \context {
    \Score
    \accepts "TimeLine"
    \remove "Timing_translator"
    \remove "Default_bar_line_engraver"
    \override TupletNumber.text = #tuplet-number::calc-fraction-text
  }
  \context {
    \Staff
    \consists "Timing_translator"
    \consists "Default_bar_line_engraver"
   
  }
}

{
  
  
<<
  
    \new TimeLine {
  
  \override Staff.TimeSignature #'stencil = ##f 
  \time 7/8
% Not 7/8 time, it's actually 7/sqrt(71) time.
% To get this, you choose time sig of 7/8
% since an eighth note is the basic pulse
% and you want 7 of those basic pulses per measure.
% Then you calculate the fraction of an eighth note
% that 1/(sqrt(71) of a whole note makes. That's
% 1/sqrt(71) of a whole note, or 1/(8.426149773) of
% of a whole note. This is 1/(8.426149773/8) or
% 1/1.053268772 of an eighth note. Now use a
% rational approximation program to calculate
% the best ratio giving a rational approximation
% to 1.053268772 eighth note with integers below, say, 300.
% That turns out to be 256/244, which gives an
% approximation to better than 1 part in 10,000 --
% good enough for real-world musical purposes.
% Now you just insert a tuplet using the command
% \times 256/244, which sets every eighth note
% to a duration of 244/256 of the basic pulse
% set by the time signature, and voila. 
 
  }

\new Staff { \clef "treble"
             \relative c''
{

 \override Staff.TimeSignature.stencil = #ly:text-interface::print 
  \override Staff.TimeSignature.text = 
  \markup \override #'(baseline-skip . 0) \center-column \number { 
    \concat { "7" } 
      \hspace #-0.1 
      \override #'(offset . -32) 
      \override #'(thickness . 1.6) 
      \underline "√71"}
  
%\set Timing.measureLength = #(ly:make-moment 3430/413) 
\set Timing.measureLength = #(ly:make-moment 800/898)
\scaleDurations 435/413 {
% 7 over the square root of 71 time signature,
% = 1.053268772 eighth notes per eighth note.
% This rational fraction approximation is 
% accurate to within 6.86 parts per billion.
  { c8 d f e b c  d16 f | e8  b c d16 f  e8 b c16 d } 
  { f8  } }
 
   {e8 b c d f e b16 c d8 f e b16 c  d8 f e16 b c8 d f e b c  d[ f16[ e b8 c
}
    
    
    d f16 e b8]
     \bar ""
    \break
    c[ d16 f e8 b c d f e] b 
 
}  
}
  \new TimeLine {
    
    %\override Staff.TimeSignature #'stencil = ##f 
    \time 13/8
  

  }

\new Staff { \clef "treble"
             \relative c''
{


\override Staff.TimeSignature #'stencil = ##f 

 \scaleDurations 8/13 { c8[ d f e b c d16 f e8  b c d16 f e8 b]
   c16[ d f8 e b c d f e b16 c d8 f e b16 c]
   d8[ f e16 b c8 d f e b c  d f16 e b8 c]  
   d[ f16 e b8 c d16 f e8 b c  d f e b d] 
  c8[ d f e b c d16 f e8  b c d16 f e8 b]
   
 d8[ f e16 b c8 d 
 
 \bar ""
 \break
 f e b c  d f16 e b8 c]
 
 }
 
}  
}

  \new TimeLine {
    \time 9/8

  }

\new Staff { \clef "treble"
             \relative c''
{


\override Staff.TimeSignature #'stencil = ##f 

 \scaleDurations 8/9 { c8[ d f e b c d16 f e8  b]
 c[ d16 f e8 b c16 d f8 e b c]
 d[ f e b16 c d8 f e b16 c  d8]
  
  \break  f e16 b c8 d f e b c  d 
  f16[ e b8 c d f16 e b8 c d16 f e8]
    
  b c d f
  \bar ""
 \break
  e b d f e16 b16 }
 
}  
}

 
  \new TimeLine {
    \time 7/8

  }

\new Staff { \clef "treble"
             \relative c''
{


\override Staff.TimeSignature #'stencil = ##f 


 
 \scaleDurations 8/7
 
 { e8[ b c d16 f e8 b c] 
   d16[ f e8 b c16 d f8 e b] 
   c[ d f e b16 c d8 f]
   e[ b16 c d8 f e16 b c8 d]
   f[ e b c d f16 e b8 ]
 }
 
  c[ d f16 e
  \bar ""
 \break
  b8 c d16 f e8]     

}

}

>>
     
}


And here's what the score looks like on imgur:
http://imgur.com/a/yydzS





--
View this message in context: 
http://lilypond.1069038.n5.nabble.com/Can-t-get-page-breaks-for-7-over-square-root-of-71-meter-tp196099.html
Sent from the User mailing list archive at Nabble.com.



reply via email to

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