]> git.donarmstrong.com Git - lilypond.git/commitdiff
(Educational use): new section
authorhanwen <hanwen>
Sat, 31 Jul 2004 20:35:58 +0000 (20:35 +0000)
committerhanwen <hanwen>
Sat, 31 Jul 2004 20:35:58 +0000 (20:35 +0000)
ChangeLog
Documentation/user/notation.itely
input/mutopia/J.S.Bach/baerenreiter-sarabande.ly [new file with mode: 0644]
input/regression/baerenreiter-sarabande.ly [deleted file]
input/test/blank-notes.ly [deleted file]
lily/slur-quanting.cc
scripts/lilypond-book.py

index ecf4c2a1ed965104d681f79d269c217e3b7bd5f0..a839232dc3f36a52b062753ca3b65573855390ae 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,7 +1,6 @@
 2004-07-31  Han-Wen Nienhuys   <hanwen@xs4all.nl>
 
 2004-07-31  Han-Wen Nienhuys   <hanwen@xs4all.nl>
 
-       * mf/parmesan*.mf (threequartercircle): change neo_mensural to
-       neomensural.
+       * mf/parmesan*.mf: change neo_mensural to neomensural.
 
        * input/test/trills.ly: remove.
 
 
        * input/test/trills.ly: remove.
 
@@ -45,8 +44,6 @@
        
        * input/test/count-systems.ly: remove.
 
        
        * input/test/count-systems.ly: remove.
 
-       * input/regression/baerenreiter-sarabande.ly: move file.
-       
        * lily/bar-line.cc (compound_barline): fix : for staff without
        lines.
 
        * lily/bar-line.cc (compound_barline): fix : for staff without
        lines.
 
index 142bcb576bce65e2e1058a2b65cfaabea18088aa..2ffb52078ef65b2aa5c7af97ade8c32fed7ea02e 100644 (file)
@@ -4855,9 +4855,9 @@ Augmentum dots within ligatures are  not handled correctly.
 For ancient notation, a note head style other than the @code{default}
 style may be chosen.  This is accomplished by setting the @code{style}
 property of the NoteHead object to the desired value (@code{baroque},
 For ancient notation, a note head style other than the @code{default}
 style may be chosen.  This is accomplished by setting the @code{style}
 property of the NoteHead object to the desired value (@code{baroque},
-@code{neo_mensural} or @code{mensural}).  The @code{baroque} style
+@code{neomensural} or @code{mensural}).  The @code{baroque} style
 differs from the @code{default} style only in using a square shape for
 differs from the @code{default} style only in using a square shape for
-@code{\breve} note heads.  The @code{neo_mensural} style differs from
+@code{\breve} note heads.  The @code{neomensural} style differs from
 the @code{baroque} style in that it uses rhomboidal heads for whole
 notes and all smaller durations.  Stems are centered on the note
 heads.  This style is in particular useful when transcribing mensural
 the @code{baroque} style in that it uses rhomboidal heads for whole
 notes and all smaller durations.  Stems are centered on the note
 heads.  This style is in particular useful when transcribing mensural
@@ -4865,10 +4865,10 @@ music, e.g. for the incipit.  The @code{mensural} style finally
 produces note heads that mimic the look of note heads in historic
 printings of the 16th century.
 
 produces note heads that mimic the look of note heads in historic
 printings of the 16th century.
 
-The following example demonstrates the @code{neo_mensural} style
+The following example demonstrates the @code{neomensural} style
 
 @lilypond[quote,fragment,raggedright,verbatim]
 
 @lilypond[quote,fragment,raggedright,verbatim]
-\override NoteHead #'style = #'neo_mensural
+\override NoteHead #'style = #'neomensural
 a'\longa a'\breve a'1 a'2 a'4 a'8 a'16
 @end lilypond
 
 a'\longa a'\breve a'1 a'2 a'4 a'8 a'16
 @end lilypond
 
@@ -4973,17 +4973,17 @@ Examples: @inputfileref{input/test,ancient-accidentals.ly}.
 
 Use the @code{style} property of grob @internalsref{Rest} to select
 ancient accidentals.   Supported styles are @code{classical},
 
 Use the @code{style} property of grob @internalsref{Rest} to select
 ancient accidentals.   Supported styles are @code{classical},
-@code{neo_mensural} and @code{mensural}.  @code{classical} differs
+@code{neomensural} and @code{mensural}.  @code{classical} differs
 from the @code{default} style only in that the quarter rest looks like
 from the @code{default} style only in that the quarter rest looks like
-a horizontally mirrored 8th rest.  The @code{neo_mensural} style suits
+a horizontally mirrored 8th rest.  The @code{neomensural} style suits
 well for e.g. the incipit of a transcribed mensural piece of music.
 The @code{mensural} style finally mimics the appearance of rests as
 in historic prints of the 16th century.
 
 well for e.g. the incipit of a transcribed mensural piece of music.
 The @code{mensural} style finally mimics the appearance of rests as
 in historic prints of the 16th century.
 
-The following example demonstrates the @code{neo_mensural} style
+The following example demonstrates the @code{neomensural} style
 
 @lilypond[quote,fragment,raggedright,verbatim]
 
 @lilypond[quote,fragment,raggedright,verbatim]
-\override Rest #'style = #'neo_mensural
+\override Rest #'style = #'neomensural
 r\longa r\breve r1 r2 r4 r8 r16
 @end lilypond
 
 r\longa r\breve r1 r2 r4 r8 r16
 @end lilypond
 
@@ -5017,32 +5017,23 @@ arbitrary line, as described in @ref{Clef}.  The note printed to the
 right side of each clef in the example column denotes the @code{c'}
 with respect to that clef.
 
 right side of each clef in the example column denotes the @code{c'}
 with respect to that clef.
 
-@multitable @columnfractions  .3 .3 .3 .1
+@multitable @columnfractions   .4 .4 .2
 
 @item
 
 @item
-@b{Glyph Name} @tab
 @b{Description} @tab
 @b{Supported Clefs} @tab
 @b{Example}
 
 @item
 @b{Description} @tab
 @b{Supported Clefs} @tab
 @b{Example}
 
 @item
-@code{clefs-neo_mensural_c} @tab
 modern style mensural C clef @tab
 modern style mensural C clef @tab
-@code{neo_mensural_c1}, @code{neo_mensural_c2},
-@code{neo_mensural_c3}, @code{neo_mensural_c4} @tab
+@code{neomensural_c1}, @code{neomensural_c2},
+@code{neomensural_c3}, @code{neomensural_c4} @tab
 @lilypond[fragment,quote,relative=1,notime]
 \override Staff.TimeSignature   #'transparent = ##t
 @lilypond[fragment,quote,relative=1,notime]
 \override Staff.TimeSignature   #'transparent = ##t
-\clef "neo_mensural_c2" c
+\clef "neomensural_c2" c
 @end lilypond
 
 @item
 @end lilypond
 
 @item
-@code{clefs-petrucci_c1}
-@code{clefs-petrucci_c2}
-@code{clefs-petrucci_c3}
-@code{clefs-petrucci_c4}
-@code{clefs-petrucci_c5}
-
-@tab
 petrucci style mensural C clefs, for use  on different  staff lines
 (the examples shows the 2nd staff line C clef).
 
 petrucci style mensural C clefs, for use  on different  staff lines
 (the examples shows the 2nd staff line C clef).
 
@@ -5060,7 +5051,6 @@ petrucci style mensural C clefs, for use  on different  staff lines
 @end lilypond
 
 @item
 @end lilypond
 
 @item
-@code{clefs-petrucci_f} @tab
 petrucci style mensural F clef @tab
 @code{petrucci_f} @tab
 @lilypond[fragment,quote,relative=1,notime]
 petrucci style mensural F clef @tab
 @code{petrucci_f} @tab
 @lilypond[fragment,quote,relative=1,notime]
@@ -5069,7 +5059,6 @@ petrucci style mensural F clef @tab
 @end lilypond
 
 @item
 @end lilypond
 
 @item
-@code{clefs-petrucci_g} @tab
 petrucci style mensural G clef @tab
 @code{petrucci_g} @tab
 @lilypond[fragment,quote,relative=1,notime]
 petrucci style mensural G clef @tab
 @code{petrucci_g} @tab
 @lilypond[fragment,quote,relative=1,notime]
@@ -5078,7 +5067,6 @@ petrucci style mensural G clef @tab
 @end lilypond
 
 @item
 @end lilypond
 
 @item
-@code{clefs-mensural_c} @tab
 historic style mensural C clef @tab
 @code{mensural_c1}, @code{mensural_c2}, @code{mensural_c3},
 @code{mensural_c4} @tab
 historic style mensural C clef @tab
 @code{mensural_c1}, @code{mensural_c2}, @code{mensural_c3},
 @code{mensural_c4} @tab
@@ -5088,7 +5076,6 @@ historic style mensural C clef @tab
 @end lilypond
 
 @item
 @end lilypond
 
 @item
-@code{clefs-mensural_f} @tab
 historic style mensural F clef @tab
 @code{mensural_f} @tab
 @lilypond[fragment,quote,relative=1,notime]
 historic style mensural F clef @tab
 @code{mensural_f} @tab
 @lilypond[fragment,quote,relative=1,notime]
@@ -5097,7 +5084,6 @@ historic style mensural F clef @tab
 @end lilypond
 
 @item
 @end lilypond
 
 @item
-@code{clefs-mensural_g} @tab
 historic style mensural G clef @tab
 @code{mensural_g} @tab
 @lilypond[fragment,quote,relative=1,notime]
 historic style mensural G clef @tab
 @code{mensural_g} @tab
 @lilypond[fragment,quote,relative=1,notime]
@@ -5106,7 +5092,6 @@ historic style mensural G clef @tab
 @end lilypond
 
 @item
 @end lilypond
 
 @item
-@code{clefs-vaticana_do} @tab
 Editio Vaticana style do clef @tab
 @code{vaticana_do1}, @code{vaticana_do2}, @code{vaticana_do3} @tab
 @lilypond[fragment,quote,relative=1,notime]
 Editio Vaticana style do clef @tab
 @code{vaticana_do1}, @code{vaticana_do2}, @code{vaticana_do3} @tab
 @lilypond[fragment,quote,relative=1,notime]
@@ -5116,7 +5101,6 @@ Editio Vaticana style do clef @tab
 @end lilypond
 
 @item
 @end lilypond
 
 @item
-@code{clefs-vaticana_fa} @tab
 Editio Vaticana style fa clef @tab
 @code{vaticana_fa1}, @code{vaticana_fa2} @tab
 @lilypond[quote,relative=1,notime,fragment]
 Editio Vaticana style fa clef @tab
 @code{vaticana_fa1}, @code{vaticana_fa2} @tab
 @lilypond[quote,relative=1,notime,fragment]
@@ -5126,7 +5110,6 @@ Editio Vaticana style fa clef @tab
 @end lilypond
 
 @item
 @end lilypond
 
 @item
-@code{clefs-medicaea_do} @tab
 Editio Medicaea style do clef @tab
 @code{medicaea_do1}, @code{medicaea_do2}, @code{medicaea_do3} @tab
 @lilypond[fragment,quote,relative=1,notime]
 Editio Medicaea style do clef @tab
 @code{medicaea_do1}, @code{medicaea_do2}, @code{medicaea_do3} @tab
 @lilypond[fragment,quote,relative=1,notime]
@@ -5136,7 +5119,6 @@ Editio Medicaea style do clef @tab
 @end lilypond
 
 @item
 @end lilypond
 
 @item
-@code{clefs-medicaea_fa} @tab
 Editio Medicaea style fa clef @tab
 @code{medicaea_fa1}, @code{medicaea_fa2} @tab
 @lilypond[fragment,quote,relative=1,notime]
 Editio Medicaea style fa clef @tab
 @code{medicaea_fa1}, @code{medicaea_fa2} @tab
 @lilypond[fragment,quote,relative=1,notime]
@@ -5146,7 +5128,6 @@ Editio Medicaea style fa clef @tab
 @end lilypond
 
 @item
 @end lilypond
 
 @item
-@code{clefs-hufnagel_do} @tab
 historic style hufnagel do clef @tab
 @code{hufnagel_do1}, @code{hufnagel_do2}, @code{hufnagel_do3} @tab
 @lilypond[fragment,quote,relative=1,notime]
 historic style hufnagel do clef @tab
 @code{hufnagel_do1}, @code{hufnagel_do2}, @code{hufnagel_do3} @tab
 @lilypond[fragment,quote,relative=1,notime]
@@ -5156,7 +5137,6 @@ historic style hufnagel do clef @tab
 @end lilypond
 
 @item
 @end lilypond
 
 @item
-@code{clefs-hufnagel_fa} @tab
 historic style hufnagel fa clef @tab
 @code{hufnagel_fa1}, @code{hufnagel_fa2} @tab
 @lilypond[fragment,quote,relative=1,notime]
 historic style hufnagel fa clef @tab
 @code{hufnagel_fa1}, @code{hufnagel_fa2} @tab
 @lilypond[fragment,quote,relative=1,notime]
@@ -5166,7 +5146,6 @@ historic style hufnagel fa clef @tab
 @end lilypond
 
 @item
 @end lilypond
 
 @item
-@code{clefs-hufnagel_do_fa} @tab
 historic style hufnagel combined do/fa clef @tab
 @code{hufnagel_do_fa} @tab
 @lilypond[fragment,quote,relative=1,notime]
 historic style hufnagel combined do/fa clef @tab
 @code{hufnagel_do_fa} @tab
 @lilypond[fragment,quote,relative=1,notime]
@@ -5263,34 +5242,34 @@ following table
         \set Score.timing = ##f
         \set Score.barAlways = ##t
         s_\markup { "$\\backslash$time 4/4" }
         \set Score.timing = ##f
         \set Score.barAlways = ##t
         s_\markup { "$\\backslash$time 4/4" }
-         ^\markup { "       " \musicglyph #"timesig-neo_mensural4/4" }
+         ^\markup { "       " \musicglyph #"timesig-neomensural4/4" }
        s
        s_\markup { "$\\backslash$time 2/2" }
        s
        s_\markup { "$\\backslash$time 2/2" }
-        ^\markup { "       " \musicglyph #"timesig-neo_mensural2/2" }
+        ^\markup { "       " \musicglyph #"timesig-neomensural2/2" }
        s
        s_\markup { "$\\backslash$time 6/4" }
        s
        s_\markup { "$\\backslash$time 6/4" }
-        ^\markup { "       " \musicglyph #"timesig-neo_mensural6/4" }
+        ^\markup { "       " \musicglyph #"timesig-neomensural6/4" }
        s
        s_\markup { "$\\backslash$time 6/8" }
        s
        s_\markup { "$\\backslash$time 6/8" }
-        ^\markup { "       " \musicglyph #"timesig-neo_mensural6/8" }
+        ^\markup { "       " \musicglyph #"timesig-neomensural6/8" }
        \break
        s_\markup { "$\\backslash$time 3/2" }
        \break
        s_\markup { "$\\backslash$time 3/2" }
-        ^\markup { "       " \musicglyph #"timesig-neo_mensural3/2" }
+        ^\markup { "       " \musicglyph #"timesig-neomensural3/2" }
        s
        s_\markup { "$\\backslash$time 3/4" }
        s
        s_\markup { "$\\backslash$time 3/4" }
-        ^\markup { "       " \musicglyph #"timesig-neo_mensural3/4" }
+        ^\markup { "       " \musicglyph #"timesig-neomensural3/4" }
        s
        s_\markup { "$\\backslash$time 9/4" }
        s
        s_\markup { "$\\backslash$time 9/4" }
-        ^\markup { "       " \musicglyph #"timesig-neo_mensural9/4" }
+        ^\markup { "       " \musicglyph #"timesig-neomensural9/4" }
         s
        s_\markup { "$\\backslash$time 9/8" }
         s
        s_\markup { "$\\backslash$time 9/8" }
-        ^\markup { "       " \musicglyph #"timesig-neo_mensural9/8" }
+        ^\markup { "       " \musicglyph #"timesig-neomensural9/8" }
         \break
        s_\markup { "$\\backslash$time 4/8" }
         \break
        s_\markup { "$\\backslash$time 4/8" }
-        ^\markup { "       " \musicglyph #"timesig-neo_mensural4/8" }
+        ^\markup { "       " \musicglyph #"timesig-neomensural4/8" }
        s
        s_\markup { "$\\backslash$time 2/4" }
        s
        s_\markup { "$\\backslash$time 2/4" }
-        ^\markup { "       " \musicglyph #"timesig-neo_mensural2/4" }
+        ^\markup { "       " \musicglyph #"timesig-neomensural2/4" }
        \break
     }
     \paper {
        \break
     }
     \paper {
@@ -5308,8 +5287,8 @@ following table
 
 Use the @code{style} property of grob @internalsref{TimeSignature} to
 select ancient time signatures.  Supported styles are
 
 Use the @code{style} property of grob @internalsref{TimeSignature} to
 select ancient time signatures.  Supported styles are
-@code{neo_mensural} and @code{mensural}.  The above table uses the
-@code{neo_mensural} style.  This style is appropriate e.g. for the
+@code{neomensural} and @code{mensural}.  The above table uses the
+@code{neomensural} style.  This style is appropriate e.g. for the
 incipit of transcriptions of mensural pieces.  The @code{mensural}
 style mimics the look of historical printings of the 16th century.
 
 incipit of transcriptions of mensural pieces.  The @code{mensural}
 style mimics the look of historical printings of the 16th century.
 
@@ -5559,8 +5538,8 @@ For example,
 @example
         \set Score.timing = ##f
         \set Score.defaultBarType = "empty"
 @example
         \set Score.timing = ##f
         \set Score.defaultBarType = "empty"
-        \override NoteHead #'style = #'neo_mensural
-        \override Staff.TimeSignature   #'style = #'neo_mensural
+        \override NoteHead #'style = #'neomensural
+        \override Staff.TimeSignature   #'style = #'neomensural
         \clef "petrucci_g"
         \[ g\longa c\breve a\breve f\breve d'\longa \]
         s4
         \clef "petrucci_g"
         \[ g\longa c\breve a\breve f\breve d'\longa \]
         s4
@@ -5571,8 +5550,8 @@ For example,
     \transpose c c' {
         \set Score.timing = ##f
         \set Score.defaultBarType = "empty"
     \transpose c c' {
         \set Score.timing = ##f
         \set Score.defaultBarType = "empty"
-        \override NoteHead #'style = #'neo_mensural
-        \override Staff.TimeSignature   #'style = #'neo_mensural
+        \override NoteHead #'style = #'neomensural
+        \override Staff.TimeSignature   #'style = #'neomensural
         \clef "petrucci_g"
         \[ g\longa c\breve a\breve f\breve d'\longa \]
         s4
         \clef "petrucci_g"
         \[ g\longa c\breve a\breve f\breve d'\longa \]
         s4
@@ -5596,8 +5575,8 @@ to the following
 \transpose c c' {
         \set Score.timing = ##f
         \set Score.defaultBarType = "empty"
 \transpose c c' {
         \set Score.timing = ##f
         \set Score.defaultBarType = "empty"
-        \override NoteHead #'style = #'neo_mensural
-        \override Staff.TimeSignature   #'style = #'neo_mensural
+        \override NoteHead #'style = #'neomensural
+        \override Staff.TimeSignature   #'style = #'neomensural
         \clef "petrucci_g"
         \[ g\longa c\breve a\breve f\breve d'\longa \]
         s4
         \clef "petrucci_g"
         \[ g\longa c\breve a\breve f\breve d'\longa \]
         s4
diff --git a/input/mutopia/J.S.Bach/baerenreiter-sarabande.ly b/input/mutopia/J.S.Bach/baerenreiter-sarabande.ly
new file mode 100644 (file)
index 0000000..0e42c30
--- /dev/null
@@ -0,0 +1,192 @@
+\version "2.3.4"
+
+% #(ly:set-point-and-click 'line-column)
+
+forcedLastBreak =  { \break }
+
+%% We want this to perfectly match the Baerenreiter spacing.
+%% If we're not using 6 systems, there's definately a problem.
+#(define (assert-system-count smob n)
+  (let ((systems (length (ly:spanner-broken-into
+                         (ly:grob-original
+                          (ly:grob-system smob))))))
+    (if (not (equal? n systems))
+       (error
+       ;;(warn
+       (string-append "Got " (number->string systems)
+                            " systems (expecting " (number->string n))))))
+            
+
+\header {
+  title = "Solo Cello Suite II"
+  piece ="Sarabande"
+  composer = "J.S. Bach"
+  editor = "August Wenzinger"
+  source= "B\\\"arenreiter Urtext"
+
+  texidoc = "The B\\\"arenreiter edition of the Cello Suites is the
+most beautifully typeset piece of music in our collection of music (we
+both own one. It is also lovely on French Horn). This piece does not
+include articulation, but it does follows the same beaming and
+linebreaking as the printed edition. This is done in order to
+benchmark the quality of the LilyPond output.
+
+As of lilypond 1.5.42, the spacing and beam quanting is almost
+identical.
+
+There are two tweaks in this file: a line-break was forced before
+measure 25, we get back the linebreaking of Baerenreiter.  The stem
+direction is forced in measure 24. The last beam of that measure is up
+in Baerenreiter because of context. We don't detect that yet.
+
+Note that the Barenreiter edition contains a few engraving
+mistakes. The second line begins with measure 6 (but prints 5). The |:
+half way in measure 13 has been forgotten.
+ "
+}
+
+
+sarabandeA =  \context Voice  \relative c {
+  \override Staff.NoteCollision  #'merge-differently-dotted = ##t
+
+  
+  << { d8. e16 e4.\trill d16 e } \\
+    { d4 a2 } >>
+  <d, a' f'>4.  e'8[ d c] |
+  bes[ g'] f[ e16(f] g[ a bes d,)] |
+  cis4.\trill b8[ a g] |
+
+  %% check spacing without accs: 
+  %%   c4.\trill bes8[ a g] |
+  
+  << { d'8. e16 e4.\trill d16 e |
+      f4. d8[ e f] }
+    \\
+    { <a, f>4 a2 <a d,>4.  } >> |
+
+  %%7
+  g'8 bes16(a) c(bes) a(g) d'8 f, |
+  <<  e4.\trill
+    \\ <c, g'>4 >>
+  d'8[ c bes]
+
+  %%9
+  << { f'8 g16(a) a4. g16(f)  |
+      g8 a16(bes) bes4. c16(d) }
+    \\
+    { a,4 <bes d >4. r8 bes4 <g f'>2  }
+  >> |
+
+  %% 11
+  e'8[ f] c,[ g'] f'[ e] |
+  f4 f,2 |
+  << {  a'4 a4.\trill bes8 
+       c bes16 a } \\
+    { f8[ es] es4. r8 d4 } >>
+
+  fis8.\trill es16 d8 c |
+  bes[ g']
+  a,[ fis']
+  es'[ d] |
+  
+  %%16
+  < bes d, g, >4.\trill a8[ g f!] |
+  e bes a f' g a |
+  d, as g es' f g |
+  cis,[ bes'] a[ g16 f] e!8[ f16 d] |
+  cis8 e16 a a,8. g'16 f8(e) |
+  
+  %%21
+  << { d e16(f) f4. e16(d) |
+      e8 f16(g) g4. a16(bes) |
+      a8 cis16 d d,8 e16 f32 g f8\trill e16(d) } \\
+    { bes4 g2 |
+      g4 <bes cis,>4. s8 |
+      <d a f>8 r r g, a4 } >>
+  |
+  \stemUp
+  d4 d,16 a'( b cis d e f g) |
+  \stemBoth
+  \forcedLastBreak
+  %%25
+  << { a16(b c b) c4. b16(a) |
+      b cis d cis d4. e16(f) | }
+    \\
+    { f,4 fis4. s8 |
+      <d g,>4 gis4.   } >>
+  \voiceOne
+  d'16(cis  d) f,
+  a,8[ e']
+  \oneVoice
+  d'[ cis] |
+  %%  d4 d,,2 |
+  d4
+  \override NoteHead
+    #'after-line-breaking-callback
+ = #(lambda (smob) (assert-system-count smob 6))
+  d,,2 |
+}
+
+
+sarabandeCelloGlobal = {
+  \time 3/4
+  \key f \major
+  \clef bass
+  \repeat "volta" 2 {
+    s2.*12
+  } \repeat "volta" 2 {
+    s2.*16
+  }
+}
+
+sarabandeCelloScripts = {
+}
+
+sarabandeCelloStaff = \context Staff <<
+  \sarabandeA
+  \sarabandeCelloGlobal
+  \sarabandeCelloScripts
+>>
+
+% size perversions
+smallerPaper = \paper {
+    \context { \Staff
+                 fontSize = #-1
+                 \override StaffSymbol  #'staff-space = #0.8
+                 }
+    \context { \Score
+                  \override SpacingSpanner #'spacing-increment = #0.96
+               }
+       
+    indent = 5.6 \mm
+    linewidth = 146.8 \mm
+}
+
+baerPaper = \paper {
+    indent = 7. \mm
+    linewidth =183.5 \mm
+%    interscoreline=4.0\mm
+    \context {
+            \Score
+%           \override System #'print-function = #box-grob-stencil
+    }
+}
+
+\bookpaper {
+  raggedbottom = ##t
+}
+\score{
+  \sarabandeCelloStaff
+  \paper{
+    \baerPaper
+  }
+  \midi{ \tempo 4 = 40 }
+  \header{
+    opus= "" 
+    piece ="Sarabande" }
+}
+
+%%% Local variables:
+%%% LilyPond-indent-level:2
+%%% End:
+
diff --git a/input/regression/baerenreiter-sarabande.ly b/input/regression/baerenreiter-sarabande.ly
deleted file mode 100644 (file)
index 0e42c30..0000000
+++ /dev/null
@@ -1,192 +0,0 @@
-\version "2.3.4"
-
-% #(ly:set-point-and-click 'line-column)
-
-forcedLastBreak =  { \break }
-
-%% We want this to perfectly match the Baerenreiter spacing.
-%% If we're not using 6 systems, there's definately a problem.
-#(define (assert-system-count smob n)
-  (let ((systems (length (ly:spanner-broken-into
-                         (ly:grob-original
-                          (ly:grob-system smob))))))
-    (if (not (equal? n systems))
-       (error
-       ;;(warn
-       (string-append "Got " (number->string systems)
-                            " systems (expecting " (number->string n))))))
-            
-
-\header {
-  title = "Solo Cello Suite II"
-  piece ="Sarabande"
-  composer = "J.S. Bach"
-  editor = "August Wenzinger"
-  source= "B\\\"arenreiter Urtext"
-
-  texidoc = "The B\\\"arenreiter edition of the Cello Suites is the
-most beautifully typeset piece of music in our collection of music (we
-both own one. It is also lovely on French Horn). This piece does not
-include articulation, but it does follows the same beaming and
-linebreaking as the printed edition. This is done in order to
-benchmark the quality of the LilyPond output.
-
-As of lilypond 1.5.42, the spacing and beam quanting is almost
-identical.
-
-There are two tweaks in this file: a line-break was forced before
-measure 25, we get back the linebreaking of Baerenreiter.  The stem
-direction is forced in measure 24. The last beam of that measure is up
-in Baerenreiter because of context. We don't detect that yet.
-
-Note that the Barenreiter edition contains a few engraving
-mistakes. The second line begins with measure 6 (but prints 5). The |:
-half way in measure 13 has been forgotten.
- "
-}
-
-
-sarabandeA =  \context Voice  \relative c {
-  \override Staff.NoteCollision  #'merge-differently-dotted = ##t
-
-  
-  << { d8. e16 e4.\trill d16 e } \\
-    { d4 a2 } >>
-  <d, a' f'>4.  e'8[ d c] |
-  bes[ g'] f[ e16(f] g[ a bes d,)] |
-  cis4.\trill b8[ a g] |
-
-  %% check spacing without accs: 
-  %%   c4.\trill bes8[ a g] |
-  
-  << { d'8. e16 e4.\trill d16 e |
-      f4. d8[ e f] }
-    \\
-    { <a, f>4 a2 <a d,>4.  } >> |
-
-  %%7
-  g'8 bes16(a) c(bes) a(g) d'8 f, |
-  <<  e4.\trill
-    \\ <c, g'>4 >>
-  d'8[ c bes]
-
-  %%9
-  << { f'8 g16(a) a4. g16(f)  |
-      g8 a16(bes) bes4. c16(d) }
-    \\
-    { a,4 <bes d >4. r8 bes4 <g f'>2  }
-  >> |
-
-  %% 11
-  e'8[ f] c,[ g'] f'[ e] |
-  f4 f,2 |
-  << {  a'4 a4.\trill bes8 
-       c bes16 a } \\
-    { f8[ es] es4. r8 d4 } >>
-
-  fis8.\trill es16 d8 c |
-  bes[ g']
-  a,[ fis']
-  es'[ d] |
-  
-  %%16
-  < bes d, g, >4.\trill a8[ g f!] |
-  e bes a f' g a |
-  d, as g es' f g |
-  cis,[ bes'] a[ g16 f] e!8[ f16 d] |
-  cis8 e16 a a,8. g'16 f8(e) |
-  
-  %%21
-  << { d e16(f) f4. e16(d) |
-      e8 f16(g) g4. a16(bes) |
-      a8 cis16 d d,8 e16 f32 g f8\trill e16(d) } \\
-    { bes4 g2 |
-      g4 <bes cis,>4. s8 |
-      <d a f>8 r r g, a4 } >>
-  |
-  \stemUp
-  d4 d,16 a'( b cis d e f g) |
-  \stemBoth
-  \forcedLastBreak
-  %%25
-  << { a16(b c b) c4. b16(a) |
-      b cis d cis d4. e16(f) | }
-    \\
-    { f,4 fis4. s8 |
-      <d g,>4 gis4.   } >>
-  \voiceOne
-  d'16(cis  d) f,
-  a,8[ e']
-  \oneVoice
-  d'[ cis] |
-  %%  d4 d,,2 |
-  d4
-  \override NoteHead
-    #'after-line-breaking-callback
- = #(lambda (smob) (assert-system-count smob 6))
-  d,,2 |
-}
-
-
-sarabandeCelloGlobal = {
-  \time 3/4
-  \key f \major
-  \clef bass
-  \repeat "volta" 2 {
-    s2.*12
-  } \repeat "volta" 2 {
-    s2.*16
-  }
-}
-
-sarabandeCelloScripts = {
-}
-
-sarabandeCelloStaff = \context Staff <<
-  \sarabandeA
-  \sarabandeCelloGlobal
-  \sarabandeCelloScripts
->>
-
-% size perversions
-smallerPaper = \paper {
-    \context { \Staff
-                 fontSize = #-1
-                 \override StaffSymbol  #'staff-space = #0.8
-                 }
-    \context { \Score
-                  \override SpacingSpanner #'spacing-increment = #0.96
-               }
-       
-    indent = 5.6 \mm
-    linewidth = 146.8 \mm
-}
-
-baerPaper = \paper {
-    indent = 7. \mm
-    linewidth =183.5 \mm
-%    interscoreline=4.0\mm
-    \context {
-            \Score
-%           \override System #'print-function = #box-grob-stencil
-    }
-}
-
-\bookpaper {
-  raggedbottom = ##t
-}
-\score{
-  \sarabandeCelloStaff
-  \paper{
-    \baerPaper
-  }
-  \midi{ \tempo 4 = 40 }
-  \header{
-    opus= "" 
-    piece ="Sarabande" }
-}
-
-%%% Local variables:
-%%% LilyPond-indent-level:2
-%%% End:
-
diff --git a/input/test/blank-notes.ly b/input/test/blank-notes.ly
deleted file mode 100644 (file)
index 7b2a470..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-
-\version "2.3.8"
-% possible rename to invis-notes.ly
-% check if other documents call this "blank notes", though.  I think
-% invisible notes sounds better, but whatever it is, it should be
-% consistent.
-\header {
-    texidoc = "@cindex Invisible Notes
-@cindex Blank Notes
-Invisible (or transparent) notes can be useful, when weird tricks are needed; 
-especially, a slur cannot be attach to a rest or spacer rest.
-" }
-
index cc33c91b1730c15e5d535fb67c4305a5be8ce57c..bed231991f724c99a1ee35ff3654c5419b6481c9 100644 (file)
@@ -75,7 +75,7 @@ struct Slur_score_parameters
   - short-cut: try a smaller region first.
   - collisions with accidentals
   - collisions with articulations (staccato, portato, sforzato, ...)
   - short-cut: try a smaller region first.
   - collisions with accidentals
   - collisions with articulations (staccato, portato, sforzato, ...)
-  -
+  - handle non-visible stems better.
 */
 struct Encompass_info
 {
 */
 struct Encompass_info
 {
@@ -287,7 +287,11 @@ get_encompass_info (Grob *me,
       ei.stem_ = stem->extent (common[Y_AXIS], Y_AXIS)[dir];
       if (Grob *b = Stem::get_beam (stem))
        ei.stem_ += stem_dir * 0.5 * Beam::get_thickness (b);
       ei.stem_ = stem->extent (common[Y_AXIS], Y_AXIS)[dir];
       if (Grob *b = Stem::get_beam (stem))
        ei.stem_ += stem_dir * 0.5 * Beam::get_thickness (b);
-      ei.x_ = stem->extent (common[X_AXIS], X_AXIS).center ();
+
+      Interval x = stem->extent (common[X_AXIS], X_AXIS);
+      ei.x_ = x.is_empty ()
+       ? stem->relative_coordinate (common[X_AXIS], X_AXIS)
+       : x.center ();
     }
   else
     ei.stem_ = ei.head_;
     }
   else
     ei.stem_ = ei.head_;
@@ -698,7 +702,10 @@ enumerate_attachments (Grob *me, Grob *common[],
                      attach_to_stem[d] = true;
                    }
                  else if (dir *extremes[d].stem_extent_[Y_AXIS][dir]
                      attach_to_stem[d] = true;
                    }
                  else if (dir *extremes[d].stem_extent_[Y_AXIS][dir]
-                          < dir * os[d][Y_AXIS])
+                            < dir * os[d][Y_AXIS]
+                          && !extremes[d].stem_extent_[X_AXIS].is_empty()
+                          )
+                   
                    os[d][X_AXIS] = extremes[d].stem_extent_[X_AXIS].center();
                }
            }
                    os[d][X_AXIS] = extremes[d].stem_extent_[X_AXIS].center();
                }
            }
@@ -847,7 +854,6 @@ score_extra_encompass (Grob *me, Grob *common[],
     = Pointer_group_interface__extract_grobs (me, (Grob *)0,
                                              "encompass-objects");
   Direction dir = get_grob_direction (me);
     = Pointer_group_interface__extract_grobs (me, (Grob *)0,
                                              "encompass-objects");
   Direction dir = get_grob_direction (me);
-  Real staff_space = Staff_symbol_referencer::staff_space ((Grob *) me);
   Real lt =  me->get_paper ()->get_dimension (ly_symbol2scm ("linethickness"));
   Real thick = robust_scm2double (me->get_property ("thickness"), 1.0) * lt;
 
   Real lt =  me->get_paper ()->get_dimension (ly_symbol2scm ("linethickness"));
   Real thick = robust_scm2double (me->get_property ("thickness"), 1.0) * lt;
 
@@ -903,7 +909,6 @@ score_extra_encompass (Grob *me, Grob *common[],
 
   for (int i = 0; i < scores->size (); i++)
     {
 
   for (int i = 0; i < scores->size (); i++)
     {
-      Bezier const &bez (scores->elem (i).curve_);
       Real demerit = 0.0;
       for (int j = 0; j < xidxs.size(); j++)
        {
       Real demerit = 0.0;
       for (int j = 0; j < xidxs.size(); j++)
        {
index 8f842eb33f53a448d205f33845f5f727722e1f9f..d634ab693c36fff9a6679c9ebb238983dde9495e 100644 (file)
@@ -712,16 +712,7 @@ class Lilypond_snippet (Snippet):
 class Lilypond_file_snippet (Lilypond_snippet):
        def ly (self):
                name = self.substring ('filename')
 class Lilypond_file_snippet (Lilypond_snippet):
        def ly (self):
                name = self.substring ('filename')
-               contents = open (find_file (name)).read ()
-               checksum =  abs (hash (contents))
-               width = default_ly_options[LINEWIDTH]
-               return r'''
-%% hash of included file:  %(checksum)d
-
-\include "%(name)s"
-''' % locals()
-                          
-       
+               return open (find_file (name)).read ()
                        
 snippet_type_to_class = {
        'lilypond_file' : Lilypond_file_snippet,
                        
 snippet_type_to_class = {
        'lilypond_file' : Lilypond_file_snippet,