]> git.donarmstrong.com Git - lilypond.git/commitdiff
release: 1.3.143 release/1.3.143
authorHan-Wen Nienhuys <hanwen@xs4all.nl>
Sun, 25 Mar 2001 22:04:29 +0000 (00:04 +0200)
committerHan-Wen Nienhuys <hanwen@xs4all.nl>
Sun, 25 Mar 2001 22:04:29 +0000 (00:04 +0200)
============

* Glossary bugfixes for lilypond code.

* Bugfix: don't crash if dy or y not set.

* Doco updates: moved contents of tricks chapter to input/tricks,
inserted lilypond-book tutorial, added polyphony section.

* Score.skipTypesetting skips over already or not yet corrected music, thus
speeding up running times and score debugging. (Includes bugfix relative to
patch submitted to list.)

1.3.142.j

36 files changed:
CHANGES
Documentation/topdocs/INSTALL.texi
Documentation/user/glossary.tely
Documentation/user/lilypond-book.itely
Documentation/user/lilypond.tely
Documentation/user/mutopia.itely
Documentation/user/refman.itely
Documentation/user/tricks.itely [deleted file]
Documentation/user/tutorial.itely
INSTALL.txt
VERSION
input/scarlatti-paper.ly
input/test/beam-dir-functions.ly [new file with mode: 0644]
input/test/default-neutral-dir.ly [new file with mode: 0644]
input/test/stem-extend.ly [new file with mode: 0644]
input/tricks/embedded-postscript.ly
lily/auto-beam-engraver.cc
lily/beam.cc
lily/grace-engraver-group.cc
lily/grace-performer-group.cc
lily/include/beam.hh
lily/include/translator.hh
lily/multi-measure-rest-engraver.cc
lily/note-heads-engraver.cc
lily/rest-collision.cc
lily/score-engraver.cc
lily/score-performer.cc
lily/tie-engraver.cc
lily/translator-group.cc
lily/translator.cc
make/out/lilypond.lsm
make/out/lilypond.spec
scm/grob-property-description.scm
scm/translator-property-description.scm
scripts/lilypond-book.py
stepmake/stepmake/toplevel-targets.make

diff --git a/CHANGES b/CHANGES
index 8af5682b1c7651f4bc8d633852d2927cc4cd3ebd..242f08f6d7c549554e97d7552cf6f2a7fd0a9f45 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -1,3 +1,17 @@
+1.3.142.hwn2
+============
+
+* Glossary bugfixes for lilypond code.
+
+* Bugfix: don't crash if dy or y not set.
+
+* Doco updates: moved contents of tricks chapter to input/tricks,
+inserted lilypond-book tutorial, added polyphony section.
+
+* Score.skipTypesetting skips over already or not yet corrected music, thus
+speeding up running times and score debugging. (Includes bugfix relative to
+patch submitted to list.)
+
 1.3.142.jcn1
 ============
 
 1.3.142.jcn1
 ============
 
 
 * Bugfix: patch in $(outdir)
 
 
 * Bugfix: patch in $(outdir)
 
+
 1.3.142
 =======
 
 1.3.142
 =======
 
-1.3.141.jcn3
-============
-
 * some mup2ly progress.
 
 * Bugfix: ly2dvi: don't include empty set fo latexheaders, don't use
 * some mup2ly progress.
 
 * Bugfix: ly2dvi: don't include empty set fo latexheaders, don't use
index 66141d6c215c27e02c603c1d4fe65d60f2a9923b..53966d411bf1434ec2018b8916c0d00055d8a0cb 100644 (file)
@@ -121,13 +121,15 @@ recommended for comfortable use.
 @section Website
 
 The website is the most convenient form to use for reading the
 @section Website
 
 The website is the most convenient form to use for reading the
-documentation on-line documentation. It is made by entering @example 
+documentation on-line documentation. It is made by entering
 
 
-  make htmldoc
+@example 
+
+  make web-doc
  
 @end example 
  
 @end example 
-This does require a functioning LilyPond.  The binary doesn't have to
-be installed. 
+This does require a functioning LilyPond.  The executable doesn't have
+to be installed, though.
 
 If you want to auto-generate Lily's website, you'll need some additional
 conversion tools.
 
 If you want to auto-generate Lily's website, you'll need some additional
 conversion tools.
index 9365267b7422a46c2dbbcb69dec94b7b0f5854c1..d10a4d3a53d82ca2a8c4e11cd1da53b2af7478bb 100644 (file)
@@ -184,13 +184,13 @@ Akkord, NL: gebroken akoord, DK: arpeggio, akkordbrydning, S: arpeggio, N:
 @
 
 @lilypond[13pt,eps]
 @
 
 @lilypond[13pt,eps]
-\context GrandStaff <
-  \notes\relative c'' { 
+  \notes \context PianoStaff <
+  \context Staff = SA \relative c'' { 
     \time 4/4;
     \clef treble; 
     r8 g16 c e g, c e r8 g,16 c e g, c e |
     r8 a,16 d f a, d f r8 a,16 d f a, d f \bar "||"; }
     \time 4/4;
     \clef treble; 
     r8 g16 c e g, c e r8 g,16 c e g, c e |
     r8 a,16 d f a, d f r8 a,16 d f a, d f \bar "||"; }
-  \notes\relative c' {
+  \context Staff = SB \relative c' {
     \clef bass; 
     < \context Voice = va { 
         \stemUp 
     \clef bass; 
     < \context Voice = va { 
         \stemUp 
@@ -314,23 +314,17 @@ Symbol at the start of a system connecting staffs. Curly braces are used
 for connecting piano staves, angular brackets for connecting parts in an
 orchestral or choral score.
 
 for connecting piano staves, angular brackets for connecting parts in an
 orchestral or choral score.
 
-@
-
-@lilypond[13pt,eps] 
-\context GrandStaff < 
-  \property GrandStaff.minVerticalAlign = 12
-  \notes\relative c'' { \clef treble; g4 e c2 }
-  \notes\relative c { \clef bass; c1 \bar "|."; } > 
+@lilypond[13pt,eps]
+\notes\context GrandStaff < 
+  \relative c''\context Staff = SA  { \clef treble; g4 e c2 }
+  \relative c \context Staff = SB { \clef bass; c1 \bar "|."; } > 
 @end lilypond
 
 @end lilypond
 
-@
-
 @lilypond[13pt,eps] 
 @lilypond[13pt,eps] 
-%\context StaffGroup < 
-\context ChoirStaff < 
-  \property StaffGroup.minVerticalAlign = 12
-  \notes\relative c'' { \clef treble; g4 e c2 }
-  \notes\relative c { \clef bass; c1 \bar "|."; } > 
+\context StaffGroup < 
+%  \property StaffGroup.minVerticalAlign = 12
+  \notes\relative c'' \context Staff = SA { \clef treble; g4 e c2 }
+  \notes\relative c \context Staff = SB { \clef bass; c1 \bar "|."; } > 
 @end lilypond
 
 @item brass
 @end lilypond
 
 @item brass
@@ -375,16 +369,15 @@ lines.
 
 @lilypond[13pt,eps] 
 \property Score.barNonAuto = ##t
 
 @lilypond[13pt,eps] 
 \property Score.barNonAuto = ##t
-\property Staff.clefStyle = #"fullSizeChanges"
-\property Staff.textStyle = #"large"
-\property Lyrics.textStyle = #"large"
+\property Score.Clef \override #'full-size-change = ##t
+\property Score.LyricText \set #'font-style = #'large
 \addlyrics
 \addlyrics
-\notes\relative c' { 
-  \clef soprano; c1 s s
-  \clef mezzosoprano; c s s
-  \clef alto; c s s
-  \clef tenor; c s s
-  \clef baritone; c s
+\context Staff \notes\relative c' { 
+  \clef soprano; c1 
+  \clef mezzosoprano; c 
+  \clef alto; c 
+  \clef tenor; c 
+  \clef baritone; c 
 }
 \context Lyrics \lyrics { 
   Soprano Mezzosoprano Alto Tenor Baritone 
 }
 \context Lyrics \lyrics { 
   Soprano Mezzosoprano Alto Tenor Baritone 
@@ -544,8 +537,8 @@ composition methods.
 
 @lilypond[13pt,eps]
 \property Score.TimeSignature \override #'style = #'C2/2
 
 @lilypond[13pt,eps]
 \property Score.TimeSignature \override #'style = #'C2/2
-\context GrandStaff <
-  \notes\relative c' { 
+\notes\context PianoStaff <
+  \context Staff = SA \relative c' { 
     \key bes \major;
     \time 4/4;
     \clef treble; 
     \key bes \major;
     \time 4/4;
     \clef treble; 
@@ -561,7 +554,7 @@ composition methods.
       }
     >
   }
       }
     >
   }
-  \notes\relative c' {
+  \context Staff = SB \relative c' {
     \clef bass; 
     \key bes \major;
     < \context Voice = lha {
     \clef bass; 
     \key bes \major;
     < \context Voice = lha {
@@ -647,8 +640,8 @@ or the abbreviation "decresc.".
 @
 
 @lilypond[13pt,eps] 
 @
 
 @lilypond[13pt,eps] 
-\key g \major; \time 4/4;
-\notes\relative c'' { d4 \> c b a | \! g1 \bar "|."; }
+\context Staff \notes\relative c'' {\key g \major; \time 4/4;
+ d4 \> c b a | \! g1 \bar "|."; }
 @end lilypond
 
 @item descending interval
 @end lilypond
 
 @item descending interval
@@ -679,9 +672,9 @@ also to some extent in newer jazz music.
 \addlyrics
 \notes\relative c' { 
   c1 d
 \addlyrics
 \notes\relative c' { 
   c1 d
-  \property Voice.textScriptPadding = #-10
+  \property Voice.TextScript \set #'padding = #-10
   e^"~~ S" f g a 
   e^"~~ S" f g a 
-  \property Voice.textScriptPadding = #-4
+  \property Voice.TextScript \set #'padding = #-4
   b^"~~ S" c }
   \context Lyrics \lyrics { Ionian }
 @end lilypond
   b^"~~ S" c }
   \context Lyrics \lyrics { Ionian }
 @end lilypond
@@ -694,10 +687,10 @@ also to some extent in newer jazz music.
 \addlyrics
 \notes\relative c' { 
   d1
 \addlyrics
 \notes\relative c' { 
   d1
-  \property Voice.textScriptPadding = #-10
+  \property Voice.TextScript \set #'padding = #-10
   e^"~~ S"
   f g a 
   e^"~~ S"
   f g a 
-  \property Voice.textScriptPadding = #-4
+  \property Voice.TextScript \set #'padding = #-4
   b^"~~ S" c d }
   \context Lyrics \lyrics { Dorian }
 @end lilypond
   b^"~~ S" c d }
   \context Lyrics \lyrics { Dorian }
 @end lilypond
@@ -709,10 +702,10 @@ also to some extent in newer jazz music.
 \property Voice.TextScript \set #'font-style = #'large
 \addlyrics
 \notes\relative c' { 
 \property Voice.TextScript \set #'font-style = #'large
 \addlyrics
 \notes\relative c' { 
-  \property Voice.textScriptPadding = #-10
+  \property Voice.TextScript \set #'padding = #-10
   e1^"~~ S"
   f g a 
   e1^"~~ S"
   f g a 
-  \property Voice.textScriptPadding = #-4
+  \property Voice.TextScript \set #'padding = #-4
   b^"~~ S" c d e }
   \context Lyrics \lyrics { Phrygian }
 @end lilypond
   b^"~~ S" c d e }
   \context Lyrics \lyrics { Phrygian }
 @end lilypond
@@ -725,9 +718,9 @@ also to some extent in newer jazz music.
 \addlyrics
 \notes\relative c' { 
   f1 g a 
 \addlyrics
 \notes\relative c' { 
   f1 g a 
-  \property Voice.textScriptPadding = #-4
+  \property Voice.TextScript \set #'padding = #-4
   b^"~~ S" c d 
   b^"~~ S" c d 
-  \property Voice.textScriptPadding = #0
+  \property Voice.TextScript \set #'padding = #0
   e^"~~ S" f }
   \context Lyrics \lyrics { Lydian }
 @end lilypond
   e^"~~ S" f }
   \context Lyrics \lyrics { Lydian }
 @end lilypond
@@ -740,9 +733,9 @@ also to some extent in newer jazz music.
 \addlyrics
 \notes\relative c'' { 
   g1 a 
 \addlyrics
 \notes\relative c'' { 
   g1 a 
-  \property Voice.textScriptPadding = #-4
+  \property Voice.TextScript \set #'padding = #-4
   b^"~~ S" c d 
   b^"~~ S" c d 
-  \property Voice.textScriptPadding = #0
+  \property Voice.TextScript \set #'padding = #0
   e^"~~ S" f g }
   \context Lyrics \lyrics { Mixolydian }
 @end lilypond
   e^"~~ S" f g }
   \context Lyrics \lyrics { Mixolydian }
 @end lilypond
@@ -755,9 +748,9 @@ also to some extent in newer jazz music.
 \addlyrics
 \notes\relative c'' { 
   a1
 \addlyrics
 \notes\relative c'' { 
   a1
-  \property Voice.textScriptPadding = #-4
+  \property Voice.TextScript \set #'padding = #-4
   b^"~~ S" c d 
   b^"~~ S" c d 
-  \property Voice.textScriptPadding = #0
+  \property Voice.TextScript \set #'padding = #0
   e^"~~ S" f g a }
   \context Lyrics \lyrics { Aeolian }
 @end lilypond
   e^"~~ S" f g a }
   \context Lyrics \lyrics { Aeolian }
 @end lilypond
@@ -775,9 +768,9 @@ harmonic minor scale type an augmented second (A) occurs between the 6th and
 \addlyrics
 \notes\relative c' { 
   c1 d
 \addlyrics
 \notes\relative c' { 
   c1 d
-  \property Voice.textScriptPadding = #-10
+  \property Voice.TextScript \set #'padding = #-10
   e^"~~ S" f g a 
   e^"~~ S" f g a 
-  \property Voice.textScriptPadding = #-4
+  \property Voice.TextScript \set #'padding = #-4
   b^"~~ S" c }
   \context Lyrics \lyrics { Major }
 @end lilypond
   b^"~~ S" c }
   \context Lyrics \lyrics { Major }
 @end lilypond
@@ -790,9 +783,9 @@ harmonic minor scale type an augmented second (A) occurs between the 6th and
 \addlyrics
 \notes\relative c'' { 
   a1
 \addlyrics
 \notes\relative c'' { 
   a1
-  \property Voice.textScriptPadding = #-4
+  \property Voice.TextScript \set #'padding = #-4
   b^"~~ S" c d 
   b^"~~ S" c d 
-  \property Voice.textScriptPadding = #0
+  \property Voice.TextScript \set #'padding = #0
   e^"~~ S" f g a }
   \context Lyrics \lyrics { "ancient minor" }
 @end lilypond
   e^"~~ S" f g a }
   \context Lyrics \lyrics { "ancient minor" }
 @end lilypond
@@ -805,11 +798,11 @@ harmonic minor scale type an augmented second (A) occurs between the 6th and
 \addlyrics
 \notes\relative c'' { 
   a1
 \addlyrics
 \notes\relative c'' { 
   a1
-  \property Voice.textScriptPadding = #-4
+  \property Voice.TextScript \set #'padding = #-4
   b^"~~ S" c d 
   b^"~~ S" c d 
-  \property Voice.textScriptPadding = #0
+  \property Voice.TextScript \set #'padding = #0
   e^"~~ S" 
   e^"~~ S" 
-  \property Voice.textScriptPadding = #1
+  \property Voice.TextScript \set #'padding = #1
   f!^"~~ A" 
   gis^"~~ S" 
   a }
   f!^"~~ A" 
   gis^"~~ S" 
   a }
@@ -824,13 +817,13 @@ harmonic minor scale type an augmented second (A) occurs between the 6th and
 \addlyrics
 \notes\relative c'' { 
   a1
 \addlyrics
 \notes\relative c'' { 
   a1
-  \property Voice.textScriptPadding = #-4
+  \property Voice.TextScript \set #'padding = #-4
   b^"~~ S" c d e fis 
   b^"~~ S" c d e fis 
-  \property Voice.textScriptPadding = #0
+  \property Voice.TextScript \set #'padding = #0
   gis^"~~ S" a g! 
   gis^"~~ S" a g! 
-  \property Voice.textScriptPadding = #-1
+  \property Voice.TextScript \set #'padding = #-1
   f!^"~~ S" e d 
   f!^"~~ S" e d 
-  \property Voice.textScriptPadding = #-4
+  \property Voice.TextScript \set #'padding = #-4
   c^"~~ S" b a
 }
   \context Lyrics \lyrics { "Melodic minor" }
   c^"~~ S" b a
 }
   \context Lyrics \lyrics { "Melodic minor" }
@@ -1046,23 +1039,21 @@ octave lower (for example on double bass @w{@ar{}@strong{strings}}).
 
 @lilypond[13pt,eps] 
 \property Score.barNonAuto = ##t 
 
 @lilypond[13pt,eps] 
 \property Score.barNonAuto = ##t 
-\property Staff.clefStyle = #"fullSizeChanges"
+\property Staff.Clef \override #'full-size-change = ##t
 \property Lyrics.LyricText \set #'font-style = #'large
 \addlyrics
 \notes\relative c { 
 %  \clef "F3";
   \clef varbaritone;
 \property Lyrics.LyricText \set #'font-style = #'large
 \addlyrics
 \notes\relative c { 
 %  \clef "F3";
   \clef varbaritone;
-  f1 s
-%  \clef "F4";
+  f1
   \clef bass;
   \clef bass;
-  f1 s
-%  \clef "F5";
+  f1
   \clef subbass;
   \clef subbass;
-  f1 s
+  f1
   \clef "F^8";
   \clef "F^8";
-  f'1 s s
+  f1
   \clef "F_8";
   \clef "F_8";
-  f,,1 s s
+  f1
 } 
 \context Lyrics \lyrics { 
   baritone 
 } 
 \context Lyrics \lyrics { 
   baritone 
@@ -1184,18 +1175,18 @@ that).
 
 @lilypond[13pt,eps] 
 \property Score.barNonAuto = ##t 
 
 @lilypond[13pt,eps] 
 \property Score.barNonAuto = ##t 
-\property Staff.clefStyle = #"fullSizeChanges"
+\property Staff.Clef \set #'full-size-change = ##t
 \property Lyrics.LyricText \set #'font-style = #'large
 \addlyrics
 \notes\relative c'' { 
   \clef french; 
 \property Lyrics.LyricText \set #'font-style = #'large
 \addlyrics
 \notes\relative c'' { 
   \clef french; 
-  g1 s s s s
+  g1
   \clef treble; 
   \clef treble; 
-  g s s s
+  g
   \clef "G^8"; 
   \clef "G^8"; 
-  g' s s s 
+  g
   \clef "G_8"; 
   \clef "G_8"; 
-  g,, s s
+  g
 }
 \context Lyrics \lyrics { 
   "french violin clef" 
 }
 \context Lyrics \lyrics { 
   "french violin clef" 
@@ -1254,14 +1245,14 @@ section. @ar{}@w{}@strong{functional harmony}
 @
 
 @lilypond[13pt,eps] 
 @
 
 @lilypond[13pt,eps] 
-\context GrandStaff < 
-  \notes\relative c'' { 
+\notes\context PianoStaff < 
+  \context Staff = SA \relative c'' { 
     \time 4/4;
     \clef treble; 
     \partial 4; < c4 g e > | < c a f > < b g d > < c2 g e > }
   \property Lyrics.LyricText \set #'font-style = #'large
   \addlyrics
     \time 4/4;
     \clef treble; 
     \partial 4; < c4 g e > | < c a f > < b g d > < c2 g e > }
   \property Lyrics.LyricText \set #'font-style = #'large
   \addlyrics
-  \notes\relative c { 
+  \context Staff = SB \relative c { 
     \clef bass; 
     \partial 4; c4 | f, g c2
     \bar "|."; } 
     \clef bass; 
     \partial 4; c4 | f, g c2
     \bar "|."; } 
@@ -1330,10 +1321,10 @@ forms an octave.
 
 @lilypond[13pt,eps] 
 \property Score.barNonAuto = ##t
 
 @lilypond[13pt,eps] 
 \property Score.barNonAuto = ##t
-\property Lyrics.LyricText \set #'font-style = #'large
-\property Voice.TextScript \set #'font-style = #'large
+\property Score.LyricText \set #'font-style = #'large
+\property Score.TextScript \set #'font-style = #'large
 \addlyrics
 \addlyrics
-\notes\relative c'' {
+\context Staff \notes\relative c'' {
   < g1 g > s
   < g^"minor" as > s
   < g^"major" a! > s
   < g1 g > s
   < g^"minor" as > s
   < g^"major" a! > s
@@ -1351,10 +1342,10 @@ forms an octave.
 
 @lilypond[13pt,eps] 
 \property Score.barNonAuto = ##t
 
 @lilypond[13pt,eps] 
 \property Score.barNonAuto = ##t
-\property Lyrics.LyricText \set #'font-style = #'large
-\property Voice.TextScript \set #'font-style = #'large
+\property Score.LyricText \set #'font-style = #'large
+\property Score.TextScript \set #'font-style = #'large
 \addlyrics
 \addlyrics
-\notes\relative c'' {
+\context Staff \notes\relative c'' {
   < g1^"perfect" c > s
   < g^"augm" cis > s
   < g^"perfect" d' > s
   < g1^"perfect" c > s
   < g^"augm" cis > s
   < g^"perfect" d' > s
@@ -1372,10 +1363,10 @@ forms an octave.
 
 @lilypond[13pt,eps] 
 \property Score.barNonAuto = ##t
 
 @lilypond[13pt,eps] 
 \property Score.barNonAuto = ##t
-\property Lyrics.LyricText \set #'font-style = #'large
-\property Voice.TextScript \set #'font-style = #'large
+\property Score.LyricText \set #'font-style = #'large
+\property Score.TextScript \set #'font-style = #'large
 \addlyrics
 \addlyrics
-\notes\relative c'' {
+\context Staff \notes\relative c'' {
   < gis1^"dimin" f'! > s
   < g!^"minor" f'! > s
   < g^"major" fis' > s
   < gis1^"dimin" f'! > s
   < g!^"minor" f'! > s
   < g^"major" fis' > s
@@ -1399,8 +1390,8 @@ The difference between an interval and an octave.
 
 @lilypond[13pt,eps] 
 \property Score.barNonAuto = ##t
 
 @lilypond[13pt,eps] 
 \property Score.barNonAuto = ##t
-\property Voice.TextScript \set #'font-style = #'large
-\notes\relative c'' {
+\property Score.TextScript \set #'font-style = #'large
+\context Staff \notes\relative c'' {
   < g1_"second" a > s < g'_"seventh" a, > s \bar "||"; 
   < g,_"third" b > s < g'_"sixth" b, > s \bar "||";
   < g,_"fourth" c > s < g'_"fifth" c, > s \bar "||";
   < g1_"second" a > s < g'_"seventh" a, > s \bar "||"; 
   < g,_"third" b > s < g'_"sixth" b, > s \bar "||";
   < g,_"fourth" c > s < g'_"fifth" c, > s \bar "||";
@@ -1513,7 +1504,7 @@ note value: double length of @w{@ar{}@strong{brevis}}. @w{@ar{}@strong{note valu
 @lilypond[13pt,eps] 
 \property Score.barNonAuto = ##t 
 \notes\relative c'' { 
 @lilypond[13pt,eps] 
 \property Score.barNonAuto = ##t 
 \notes\relative c'' { 
-  \property Voice.noteHeadStyle = #'mensural
+  \property Voice.NoteHead \set #'style = #'mensural
   g\longa 
 } 
 @end lilypond
   g\longa 
 } 
 @end lilypond
@@ -1627,7 +1618,7 @@ First C below the 440 Hz A.
 
 @lilypond[13pt,eps] 
 \property Score.barNonAuto = ##t 
 
 @lilypond[13pt,eps] 
 \property Score.barNonAuto = ##t 
-\property Staff.clefStyle = #"fullSizeChanges"
+\property Staff.Clef \set #'full-size-change = ##t
 \notes\relative c' { 
   \clef bass; c1 s
   \clef alto; c s
 \notes\relative c' { 
   \clef bass; c1 s
   \clef alto; c s
@@ -1762,9 +1753,9 @@ but sometimes (mostly in pre baroque music) the double length note value
 \property Voice.TextScript \set #'font-style = #'large
 \property Score.barNonAuto = ##t
 \notes\relative c'' { 
 \property Voice.TextScript \set #'font-style = #'large
 \property Score.barNonAuto = ##t
 \notes\relative c'' { 
-  \property Voice.noteHeadStyle = #'mensural
+  \property Voice.NoteHead \override #'style = #'mensural
   g\longa_"longa" g\breve_"breve" 
   g\longa_"longa" g\breve_"breve" 
-  \property Voice.noteHeadStyle = ##f
+  \property Voice.NoteHead \revert #'style
   g1_"1/1" g2_"1/2" g4_"1/4" s16 g8_"1/8" s16
   g16_"1/16" s16 g32_"1/32" s16 g64_"1/64" s32 }
 @end lilypond
   g1_"1/1" g2_"1/2" g4_"1/4" s16 g8_"1/8" s16
   g16_"1/16" s16 g32_"1/32" s16 g64_"1/64" s32 }
 @end lilypond
@@ -2076,7 +2067,7 @@ sub@-do@-mi@-nant (S) and V = dominant (D).
 \emptyText
 \property Score.barNonAuto = ##t 
 \property Lyrics.LyricText \set #'font-style = #'large
 \emptyText
 \property Score.barNonAuto = ##t 
 \property Lyrics.LyricText \set #'font-style = #'large
-\property Lyrics.minVerticalAlign = 8
+%\property Lyrics.minVerticalAlign = 8
 \addlyrics
 \notes\relative c' { 
   c1 d e f g a b c }
 \addlyrics
 \notes\relative c' { 
   c1 d e f g a b c }
index d94fda2b8dfc4ad4df46c54d58abea14d14e4762..f324d0e56729f0ee4d56e2941c7ff277e283724a 100644 (file)
@@ -6,9 +6,6 @@
 @node lilypond-book
 @chapter  lilypond-book
 
 @node lilypond-book
 @chapter  lilypond-book
 
-[ The tutorial part is at the moment commented out and moved to 
-the end of this document ]
-
 [TODO: THIS MANUAL IS NOT FINISHED YET. FIXME.]
 
 @command{lilypond-book} is a script that helps integrating lilypond with
 [TODO: THIS MANUAL IS NOT FINISHED YET. FIXME.]
 
 @command{lilypond-book} is a script that helps integrating lilypond with
@@ -226,11 +223,10 @@ careful, don't give the source file that ext, or the file will be
 overwritten.
 
 If you use @code{--outdir}, you should also @code{cd} to that directory
 overwritten.
 
 If you use @code{--outdir}, you should also @code{cd} to that directory
-before running LaTeX or makeinfo.
-
-@strong{[UGH: IS THIS THE BEST WAY TO DO IT? MAYBE ADD A COMMENT LINE TO THE
-GENERATED FILE, SO LILYPOND-BOOK CAN TEST IF THE FILE IT IS TO OVERWRITE
-IS GENERATED.]}
+before running LaTeX or makeinfo. This may seem a little kludgy, but
+both Latex and makeinfo expect picture files (the music) to be in the
+current working directory. Moreover, if you do this, LaTeX will not
+clutter you normal working directory  with output files.
 
 @strong{About the input}
 
 
 @strong{About the input}
 
@@ -311,234 +307,3 @@ Ignores almost all La@TeX{} commands that changes margins and linewidths.
 
 @email{tca@@gnu.org, Tom Cato Amundsen}
 
 
 @email{tca@@gnu.org, Tom Cato Amundsen}
 
-
-
-@ignore
-
-So what does this look like? Well, here is an example:
-@lilypond[veryverbatim, intertext="produces this music:"]
-\score{
-  \notes\relative c'{
-    \time 5/8;
-    [e16( g b c a g][e a b d] | )e2 d,8 |
-    [e16( g b c a g][e a b d] | )b2 [a16( f] |
-    [e a b d] )e4 c8 | [es16( bes a as g es][d c b! )g] |
-    [f( a b d b a][f a b d] | )e2
-  }
-}
-@end lilypond
-If you are lucky, the above example show a nice feature of LilyPond
-and La@TeX{}. Since LilyPond can output the music as @TeX{} graphics,
-La@TeX{} can insert pagebreaks between the lines of music.
-
-Notice that there is no @code{\paper} statement in the example
-above. Lilypond-book will insert some code for you that defines the
-linewidth and the font to use. If you don't want to change the default, 
-there is no need to put an empty @code{\paper@{@}} inside the @code{\score}.
-In the example above, something like
-this might be inserted before your code:
-@example
-\include "paper16.ly"
-\paper@{ \paper_sixteen
-    linewidth = 390.\pt;
-    castingalgorithm = \Gourlay;
-@}
-@end example
-The actual values for linewidth will differ depending on papersize and
-number of columns. Also, if you use a different fontsize for the
-music, another file than @code{paper16.ly} will be included.
-
-If you want to make the music not so wide, you can insert a
-@code{\paper} statement that set the linewidth:
-
-@lilypond[veryverbatim, intertext="produces this music:"]
-\score{
-  \notes\relative c'{
-    \time 5/8;
-    [e16( g b c a g][e a b d] | )e2 d,8 |
-    [e16( g b c a g][e a b d] | )b2 [a16( f] |
-    [e a b d] )e4 c8 | [es16( bes a as g es][d c b! )g] |
-    [f( a b d b a][f a b d] | )e2
-  }
-  \paper{linewidth = 10.\cm;}
-}
-@end lilypond
-
-Very often, if you mix music and text, the music is often only a 
-few notes or at most a few bars. This music should be as short as
-possible and not stretched to be aligned to the right margin.
-
-If you only write voice-contents in the lilypond block, @command{lilypond-book}
-will set the @code{linewidth} variable to -1, so Lilypond
-will make the music as short as possible but without breaking the
-line. Here is a well know harmonic progression:
-@lilypond[veryverbatim, intertext="produce a well known harmonic progression:"]
-  \context Voice { <c' e g> <b d g> <c2 e g> }
-@end lilypond
-
-If you want to place music examples in the text,
-@lilypond[eps]
-\context Voice {  <c' e g> <b d g> <c2 e g>}
-@end lilypond
-, you can use the @code{eps} option. This will create the music as
-eps graphics and include it into the document with the 
-@code{\includegraphics} command.
-
-The code used look like this:
-@example
-@@lilypond[eps]
- \context Voice { <c' e g> <b d g> <c2 e g> }
-@@end lilypond
-@end example
-
-You can also use the @code{eps} option if the block is a complete
-lilypond source. This 5 cm long empty line, 
-@lilypond[eps]
-\score{
-  \notes{s}
-  \paper{ linewidth = 5.\cm;}
-}
-@end lilypond
-was created with this code:
-@example
-@@lilypond[eps]
-\score@{
-  \notes@{s@}
-  \paper@{ linewidth = 5.\cm;@}
-@}
-@@end lilypond
-@end example
-
-To avoid that La@TeX{} places the music on a line of its one, there should
-be no empty lines between the normal text and the lilypond
-environment. 
-
-You can also use @code{lilypondfile} (on a separate line, FIXME), to
-include another file.
-
-@section Fontsize options You can use all lilypond fontsizes in
-@command{lilypond-book}.  The default 16pt fontsize is probably to big to be
-included in the middle of the text, 11pt or 13pt is probably better.
-
-The code can look like this:
-@example
-@@lilypond[13pt, eps]
-<c' e g>
-@@end lilypond
-@end example
-
-The following options set the fontsize:
-@itemize
-@item @code{11pt}
-@lilypond[11pt, eps]
-  \relative c'{
-    r16 [c d e][f d e c] [g'8 c][b-\prall c] |
-    [d16 g, a b][c a b g][d'8 g f-\prall g]
-  }
-@end lilypond
-@item @code{13pt}
-@lilypond[13pt, eps]
-  \relative c'{
-    r16 [c d e][f d e c] [g'8 c][b-\prall c] |
-    [d16 g, a b][c a b g][d'8 g f-\prall g]
-  }
-@end lilypond
-@item @code{16pt}
-@lilypond[16pt, eps]
-  \relative c'{
-    r16 [c d e][f d e c] [g'8 c][b-\prall c] |
-    [d16 g, a b][c a b g][d'8 g f-\prall g]
-  }
-@end lilypond
-@item @code{20pt}
-@lilypond[20pt, eps]
-  \relative c'{
-    r16 [c d e][f d e c] [g'8 c][b-\prall c] |
-    [d16 g, a b][c a b g][d'8 g f-\prall g]
-  }
-@end lilypond
-@item @code{26pt}
-@lilypond[26pt, eps]
-  \relative c'{
-    r16 [c d e][f d e c] [g'8 c][b-\prall c] |
-    [d16 g, a b][c a b g][d'8 g f-\prall g]
-  }
-@end lilypond
-@end itemize
-
-
-@section More options
-@itemize
-@item The @code{singleline} option set @code{linewidth} to -1.0.
-@item The @code{multiline} option set @code{linewidth} to a value letting
-the music be aligned to the right margin. The music can span several
-lines. 
-@end itemize
-
-@section Just in case...
-The options @code{fragment} and @code{nonfragment} will override
-@command{lilypond-book} when it scans the lilypond code to see if it is voice
-contents or complete code. This might be useful if @command{lilypond-book} choose
-wrong. 
-
-Since there is no finder's fee which doubles every year, there is no
-need to wait for the price money to grow. So send a bug report today
-if you need this one of these options.
-
-@section Examples
-
-This was all options to @code{\begin}. The rest of the lilypond
-document will show some ways you can use lilypond in
-La@TeX{} documents. It will also act as a simple test-suite for
-lilypond-book. You can place @code{eps} lilypond in and marginspars just
-as any other included eps graphics.
-
-@lilypond
-\score{
-  \notes\relative c'{ 
-        \time 12/8;  
-        r4-\fermata [b16-.( )b-.] [f'8-- dis16-.( )dis-. gis8--]
-        [f16-.( )f-. dis8-- gis16-.( )gis-.] cis4.-\fermata |
-        
-        r4.-\fermata [cis,16 cis g'8 f16 f b8][g16 g f8 b16 b] dis4.-\fermata
-  }
-  \paper{linewidth = 7.\cm;}
-}
-@end lilypond
-
-
-To the right you can see some bars from the trumpet fanfara from the
-beginning of the fantastic street opera ``Houdini the Great'', by the
-Danish composer Andy Pape. The music is put inside a
-@code{floatingfigure} environment, and the music will be aligned by
-the right marging if you set floatingfigure width and lilypond linewidth
-to the same value. The code looks like this:
-
-@lilypond[verbatim]
-\score{
-  \notes\relative c'{ 
-    \time 12/8;  
-    r4.-\fermata [b16-.( )b-.] [f'8-- dis16-.( )dis-. gis8--]
-    [f16-.( )f-. dis8-- gis16-.( )gis-.] cis8.-\fermata |
-        
-    r4.-\fermata [cis,16 cis g'8 f16 f b8]
-    [g16 g f8 b16 b] dis4.-\fermata
-  }
-  \paper{linewidth = 7.\cm;}
-}
-@end lilypond
-
-If you have a lot of small music examples like this in the middle of
-your text, you might get a nicer look by using ``double'' line
-spacing. Put the @code{\linespread@{1.6@}} command into the preamble of
-your document. Then the line spacing will not be increased between the
-lines where you have music printed with the smallest font size.
-
-Lilypond-book does know about @code{\onecolumn} and @code{\twocolumn}. 
-So the music will be adjusted to the new linewith:
-
-Verbatim environments will also ignore the page margins. That is
-a feature of La@TeX{}. (But you usually put things inside a verbatim
-environment when you don't want La@TeX{} to do any linebreaking)
-
-@end ignore
index d0034f88a75df8aaae3787d7bab65ccbc3c5b858..96f3ae35b609049d0811a75e0f633eedd6d3fd21 100644 (file)
@@ -72,7 +72,6 @@ this and other documentation.
 * Tutorial::                       A tutorial introduction to LilyPond.
 * Reference Manual::               Reference Manual.
 * Mutopia project::                Mutopia project.
 * Tutorial::                       A tutorial introduction to LilyPond.
 * Reference Manual::               Reference Manual.
 * Mutopia project::                Mutopia project.
-* Tricks::                         Features, tips and tricks.
 * Invoking LilyPond::              Operation.
 * Bug reports::                    Where to report bugs.
 * ly2dvi::                         Generating nice output with titles.
 * Invoking LilyPond::              Operation.
 * Bug reports::                    Where to report bugs.
 * ly2dvi::                         Generating nice output with titles.
@@ -97,7 +96,6 @@ this and other documentation.
 @mbinclude tutorial.itely
 @mbinclude refman.itely
 @mbinclude mutopia.itely
 @mbinclude tutorial.itely
 @mbinclude refman.itely
 @mbinclude mutopia.itely
-@mbinclude tricks.itely
 @mbinclude internals.itely
 @mbinclude invoking.itexi
 @mbinclude bugs.itexi
 @mbinclude internals.itely
 @mbinclude invoking.itexi
 @mbinclude bugs.itexi
index 810893784e3f447e8ed7b383dac765c03737cef7..1ce696d77fcd4c8675573d7b07f6b4a3fc649d6e 100644 (file)
@@ -1,19 +1,26 @@
-
 @node Mutopia project
 @chapter Mutopia project
 @cindex mutopia project
 @cindex sheet music archive
 
 @node Mutopia project
 @chapter Mutopia project
 @cindex mutopia project
 @cindex sheet music archive
 
+[TODO:
+
+* different name. Ports sucks
+
+* drop for 1.4
+
+* mutopia is rather offtopic in the lilypond manual
 
 
-The Mutopia project needs your help.  Mutopia is a collection of
-public domain sheet music.  All the music on Mutopia is completely
-free to download, print out, perform and distribute.  Mutopia is
-similar in spirit to Project Gutenburg - but consists of a growing
-collection of free music.  You can help the project by entering music
-(either by hand, or by converting from scans or MIDI) and submitting
-it.  Point your browser to the @uref{http://www.mutopiaproject.org}.
+]
 
 
 
 
+Mutopia is a collection of public domain sheet music.  All the music
+on Mutopia is completely free to download, print out, perform and
+distribute.  Mutopia is similar in spirit to Project Gutenburg.  You can
+help the project by entering music (either by hand, or by converting
+from scans or MIDI) and submitting it.  Point your browser to the
+@uref{http://www.mutopiaproject.org}.
+
 @menu
 * Mutopia ports collection::    
 @end menu
 @menu
 * Mutopia ports collection::    
 @end menu
@@ -23,22 +30,20 @@ it.  Point your browser to the @uref{http://www.mutopiaproject.org}.
 @cindex mutopia ports collection
 
 
 @cindex mutopia ports collection
 
 
-We're working on a ports collection for LilyPond.  The aim is to make
-all music in Mutopia very easily accessible for LilyPond users 
-to study, edit and print.
-
-A somewhat functional experimental tree will be available in version
-1.3.141.  It should then be very easy to
+The ports collection to makes all music in Mutopia very easily
+accessible for LilyPond users to study, edit and print.  The
+ports-system performs the following functions:
 
 @enumerate 1
 
 @enumerate 1
-  download anything from Mutopia
-  compile for printing or for Mutopia submission
-  publish and package for Mutopia
+@item  download anything from Mutopia
+@item  compile for printing or for Mutopia submission
+@item  publish and package for Mutopia
 @end enumerate
 
 Type @samp{make help} in @file{ports} directory to see possible
 targets.
 
 @end enumerate
 
 Type @samp{make help} in @file{ports} directory to see possible
 targets.
 
+@ignore
 [TODO]
 
 Now that we have the @samp{make sync} target, maybe we should
 [TODO]
 
 Now that we have the @samp{make sync} target, maybe we should
@@ -73,3 +78,5 @@ $ make mutopia
 @end example
 
 Disadvantage: no clue of available titles.
 @end example
 
 Disadvantage: no clue of available titles.
+@end ignore
+
index ee400db07aa56a89ea7a4efbff59ea6bd58264d3..8ce5bf8e23e1831776966ee490ff6e13cc33247d 100644 (file)
@@ -41,6 +41,7 @@ revision of this document was for LilyPond 1.3.141.
 * Page layout::                 
 * Sound::                       
 * Music entry::                 
 * Page layout::                 
 * Sound::                       
 * Music entry::                 
+* Skipping corrected music::    
 * Interpretation context::      
 * Syntactic details::           
 * Lexical details::             
 * Interpretation context::      
 * Syntactic details::           
 * Lexical details::             
@@ -674,80 +675,77 @@ settings.
 @c .   {Polyphony}
 @node Polyphony
 @section Polyphony
 @c .   {Polyphony}
 @node Polyphony
 @section Polyphony
-@cindex Polyphony
+@cindex polyphony
 
 
-[TODO: collisions, rest-collisinos, voiceX identifiers, how to
-which  contexts to instantiate.  some small examples? ]
+Polyphonic parts, i.e. parts with more than one voice on a staff can be
+typeset with LilyPond.   To use this, instantiate a separate Voice
+context for each part, and assign a stem direction to each part. 
+@lilypond[fragment,verbatim]
+\context Staff
+< \context Voice = VA { \stemUp b'4 a' g' f' e' }
+  \context Voice = VB { \stemDown g'4 g' g' g' g' } >
+@end lilypond
+
+When there are more than two voices on a staff, you must also indicate
+which voice should moved horizontally in case of a collision. This can
+be done with the identifiers @code{\shiftOff}, @code{\shiftOn},
+@code{\shiftOnn}, etc. (which sets grob property @code{horizontal-shift}
+in @code{NoteColumn}).
+
+@lilypond[fragment, verbatim]
+  \context Staff \notes\relative c''<
+       \context Voice=one {
+       \shiftOff \stemUp e4
+       }
+       \context Voice=two {
+         \shiftOn \stemUp cis
+       }
+       \context Voice=three {
+         \shiftOnn \stemUp ais
+       }
+       \context Voice=four {
+         \shiftOnnn \stemUp fis-2
+       }
+  >
+@end lilypond
 
 
+The most convenient way is to use the identifiers @code{\voiceOne}
+through @code{\voiceFour}, which also set slur and tie directions in the
+correct manner.
+
+@lilypond[singleline, verbatim]
+\relative c''
+\context Staff < \context Voice = VA { \voiceOne cis2 b  }
+  \context Voice = VB { \voiceThree b4 ais ~ ais4 gis4 } 
+  \context Voice = VC { \voiceTwo fis4~  fis4 f ~ f  } >
+@end lilypond
+
+
+LilyPond also vertically shifts rests that are opposite of a stem. 
+
+@lilypond[singleline,verbatim]
+\context Staff <
+\context Voice {  \stemUp c''4  }
+\context Voice =VB { r4 }
+>
+@end lilypond
+
+Note head collisions (horizontal shifting of note heads) are handled by
+the @code{NoteCollision} grob. @code{RestCollision} handles vertical
+shifting of rests.
+
+@cindex @code{NoteCollision}
+@cindex @code{RestCollision}
 
 
-@table @code
-@cindex @code{\shiftOff}  
-  @item @code{\shiftOff}
-    Disable horizontal shifting of note heads that collide. 
-
-@cindex @code{\shiftOn}  
-  @item @code{\shiftOn}
-    Enable note heads that collide with other note heads to be
-    shifted horiztonally. Also @code{\shiftOnn} and @code{\shiftOnnn}
-set different shift values.
-
-@cindex @code{\stemBoth} 
-  @item @code{\stemBoth}
-    Allow stems and beams to point either upwards or
-    downwards, decided automatically by LilyPond.
-
-@cindex @code{\stemDown}  
-  @item @code{\stemDown}
-    Force stems and beams to point down.
-
-@cindex @code{\stemUp}  
-  @item @code{\stemUp}
-    Force stems and beams to point up.
-@end table
 
 
-@cindex @code{\slurBoth}
-@cindex @code{\slurDown} 
-@cindex @code{\slurUp}
-Similarly, for slurs use
-@code{\slurBoth}, 
-@code{\slurDown}, 
-@code{\slurUp}.
-
-@cindex @code{\tieBoth}
-@cindex @code{\tieDown} 
-@cindex @code{\tieUp}
-For ties use
-@code{\tieBoth}, 
-@code{\tieDown}, 
-@code{\tieUp}.
-
-@cindex @code{\dynacmicBoth}
-@cindex @code{\dynamicDown} 
-@cindex @code{\dynamicUp}
-For dynamics use
-@code{\dynamicBoth}, 
-@code{\dynamicDown}, 
-@code{\dynamicUp}.
-
-@c text scripts? articulation scripts? fingering?
-
-@cindex @code{\voiceOne}
-@cindex @code{\voiceTwo}
-@cindex @code{\voiceThree}
-@cindex @code{\voiceFour}
-@cindex @code{\oneVoice}
-@cindex @code{\shiftOn}
-@cindex @code{\shiftOff}
-
-If two voices sharing one staff have the same stem directions, their
-note heads may collide.  You can shift the note heads of one voice by
-setting @code{\shiftOn}.  This can be undone by setting
-@code{\shiftOff}.
-
-For simple polyphonic music, shorthands are available that combine
-directions and shift settings: @code{\voiceOne}, @code{\voiceTwo},
-@code{\voiceThree}, @code{\voiceFour} and @code{\oneVoice}.
+@refbugs
+
+Resolving collisions is a very intricate subject, and LilyPond only
+handles a few situations. When it can not cope, you are advised to use
+@code{force-hshift} of the NoteColumn grob and @code{staff-position} of
+the Rest grob to override typesetting decisions.
 
 
+[TODO: doc merge-differently-dotted]
 
 @node Beaming
 @section Beaming
 
 @node Beaming
 @section Beaming
@@ -2274,7 +2272,21 @@ used, for the next ones @code{instr} is used.
 @end lilypond
 
 This requires  that you add the @code{Instrument_name_engraver} to the
 @end lilypond
 
 This requires  that you add the @code{Instrument_name_engraver} to the
-staff context.
+staff context. You can also  use markup texts:
+
+
+@lilypond[verbatim,singleline]
+#(define text-flat
+  '((font-relative-size . -2 ) (music "accidentals--1")))
+
+\score { \notes {
+  \property Staff.instrument = #`((kern . 0.5) (lines
+    "2 Clarinetti" (rows "     (B" ,text-flat ")")))
+    c'' 4 }
+  \paper { 
+    \translator { \StaffContext
+    \consists "Instrument_name_engraver"; } } }
+@end lilypond
 
 
 @node Transpose
 
 
 @node Transpose
@@ -2567,12 +2579,17 @@ property.  By assigning to that property (using plain @code{\property}),
 you can change the resulting grobs.
 
 @lilypond[verbatim, fragment]
 you can change the resulting grobs.
 
 @lilypond[verbatim, fragment]
-c'4 \property Voice.Stem \override #'meta = #'((interfaces . ())) c'4
+c'4 \property Voice.Stem  = #'((meta . ((interfaces . ())))) c'4
 @end lilypond
 
 @end lilypond
 
-The @code{\property} statement effectively empties the definition of the
-Stem object. One of the effects is that property specifying how it
+The @code{\property} assignment effectively empties the definition of
+the Stem object. One of the effects is that property specifying how it
 should be printed is erased, with the effect of rendering it invisible.
 should be printed is erased, with the effect of rendering it invisible.
+The above assignment is available as a standard identifier, lest you
+find this useful:
+@example
+  \property Voice.Stem = \turnOff
+@end example
 
 @cindex \override
 @cindex \revert
 
 @cindex \override
 @cindex \revert
@@ -2904,6 +2921,35 @@ avoided because this makes it impossible for LilyPond to compute the
 exact length of the string, which may lead to collisions.  Also, @TeX{}
 commands won't work with direct postscript output.
 
 exact length of the string, which may lead to collisions.  Also, @TeX{}
 commands won't work with direct postscript output.
 
+@cindex metronome mark
+
+One practical application of complicated markup is to fake a metronome
+marking:
+
+@lilypond[verbatim]
+#(define note '(rows
+  (music "noteheads-2" ((kern . -0.1) "flags-stem"))))
+#(define eight-note `(rows ,note ((kern . -0.1)
+  (music ((raise . 3.5) "flags-u3")))))
+#(define dotted-eight-note
+  `(rows ,eight-note (music "dots-dot")))
+
+\score {
+  \notes\relative c'' {
+    a1^#`((rows (font-relative-size . -1)) ,dotted-eight-note " = 64")
+  }
+  \paper {
+    linewidth = -1.;
+    \translator{
+      \ScoreContext
+      TextScript \override #'font-shape = #'upright
+    }
+  }
+}
+@end lilypond
+
+
+
 @c . {Page layout}
 @node Page layout
 @section Page layout
 @c . {Page layout}
 @node Page layout
 @section Page layout
@@ -3297,8 +3343,6 @@ relocated, so this can also be used to shorten measures.
 
 A bar check is entered using the bar symbol, @code{|}
 
 
 A bar check is entered using the bar symbol, @code{|}
 
-
-
 @c .  {Point and click}
 @node Point and click
 @subsection Point and click
 @c .  {Point and click}
 @node Point and click
 @subsection Point and click
@@ -3367,6 +3411,24 @@ will complain about not finding @code{src:X:Y} files. Those complaints are
 harmless, and can be ignored.
 
 
 harmless, and can be ignored.
 
 
+@node Skipping corrected music
+@section Skipping corrected music
+
+The property @code{Score.skipTypesetting} can be used to switch on and
+off typesetting completely during the interpretation phase. When
+typesetting is switched off, the music is processed much more quickly.
+You can use this to skip over the parts of a score that you have already
+checked for errors. 
+
+@lilypond[fragment,singleline,verbatim]
+\relative c'' { c8 d
+\property Score.skipTypesetting = ##t
+  e f g a g c, f e d
+\property Score.skipTypesetting = ##f
+c d b bes a g c2 } 
+@end lilypond
+
+
 @node Interpretation context
 @section Interpretation context
 
 @node Interpretation context
 @section Interpretation context
 
@@ -3909,7 +3971,8 @@ This means that @var{func} is applied to @var{music}.  The function
 This example replaces the text string of a script. It also shows a dump
 of the music it processes, which is useful if you want to know more
 about how music is stored.
 This example replaces the text string of a script. It also shows a dump
 of the music it processes, which is useful if you want to know more
 about how music is stored.
-@lilypond[verbatim]
+
+@lilypond[verbatim,singleline]
 #(define (testfunc x)
         (if (equal? (ly-get-mus-property x 'text) "foo")
                 (ly-set-mus-property x 'text "bar"))
 #(define (testfunc x)
         (if (equal? (ly-get-mus-property x 'text) "foo")
                 (ly-set-mus-property x 'text "bar"))
@@ -3924,15 +3987,36 @@ about how music is stored.
 } 
 @end lilypond
 
 } 
 @end lilypond
 
-For more information on what is possible, see the @ref{Tricks} and the
-automatically generated documentation.
+For more information on what is possible, see the automatically
+generated documentation.
 
 
 Directly accessing internal representations is dangerous: the
 implementation is subject to changes, so you should avoid this feature
 if possible.
 
 
 Directly accessing internal representations is dangerous: the
 implementation is subject to changes, so you should avoid this feature
 if possible.
-  
-  
+
+A final example is a function that reverses a piece of music in time:
+
+@lilypond[verbatim,singleline]
+#(define (reverse-music music)
+  (let* ((elements (ly-get-mus-property music 'elements))
+         (reversed (reverse elements))
+         (span-dir (ly-get-mus-property music 'span-direction)))
+    (ly-set-mus-property music 'elements reversed)
+    (if (dir? span-dir)
+        (ly-set-mus-property music 'span-direction (- span-dir)))
+    (map reverse-music reversed)
+    music))
+
+music = \notes { c'4 d'4( e'4 f'4 }
+
+\score { \context Voice {
+    \music
+    \apply #reverse-music \music
+  }
+}
+@end lilypond
+
 
 @c .   {Span requests}
 @menu
 
 @c .   {Span requests}
 @menu
diff --git a/Documentation/user/tricks.itely b/Documentation/user/tricks.itely
deleted file mode 100644 (file)
index 6dd0de0..0000000
+++ /dev/null
@@ -1,267 +0,0 @@
-@c -*-texinfo-*-
-@c Note:
-@c
-@c A menu is needed before every deeper *section nesting of @nodes
-@c Run M-x texinfo-all-menus-update
-@c to automagically fill in these menus
-@c before saving changes
-
-@ignore
-
-TODO
-  * cue notes
-  * different staff sizes
-  * font selection
-
-  * move some stuff to refman
-  * merge some stuff with refman entries
-  
-  * add @ref{}s to lilypond-internals:
-     @rgrob{Name} to grob
-     @reng{Name} to engraver
-
-  there's a very simple, very general noXXX mechanism; try
-
-noop   \property Staff.VoltaBrace = #'()
-yes: \property Staff.VoltaBracket = #'((meta .  ((interfaces . ()))))
-
-
-  visibility?
-  brew_molecule?
-@end ignore
-
-
-@node Tricks
-@chapter Tricks
-
-@menu
-* Manual beam settings::        Manual beam settings
-* Engraver hacking::            Engraver hacking
-* Markup text::                 Markup text
-* Apply hacking::               Apply hacking
-* Embedded TeX::                Embedded TeX
-* Embedded PostScript::         Embedded PostScript
-@end menu
-
-
-@node Manual beam settings
-@section Manual beam settings
-@cindex beams
-@cindex beam settings
-@cindex manual beams
-
-
-@c auto knees
-
-
-@cindex @code{no-stem-extend}
-
-Conventionally, stems and beams extend to the middle staff line.  This
-extension can be controlled through @code{Voice.Stem}'s grob-property
-@code{no-stem-extend}:
-
-@quotation
-@lilypond[fragment,relative,verbatim]
-  \grace a'8 a4
-  \property Voice.Stem \set #'no-stem-extend = ##t
-  \grace g8 g4 [g8 g]
-@end lilypond
-@end quotation
-
-The direction of a perfectly centred beams can be
-controlled through @code{Voice.Beam}'s grob-property
-@code{default-neutral-direction}
-
-@quotation
-@lilypond[fragment,relative,verbatim]
-  [b''8 b]
-  \property Voice.Beam \set #'default-neutral-direction = #-1
-  [b b]
-@end lilypond
-@end quotation
-
-There are several ways to calculate the direction of a beam.
-@table @code
-@item majority
-number count of up or down notes
-@item mean
-mean center distance of all notes
-@item median
-mean centre distance weighted per note
-@end table
-
-You can spot the differences of these settings from these simple
-examples:
-
-@quotation
-@lilypond[fragment,relative,verbatim]
-  [d''8 a]
-  \property Voice.Beam \set #'dir-function = #beam-dir-mean
-  [d a] 
-  \property Voice.Beam \set #'dir-function = #beam-dir-median
-  [d a]
-@end lilypond
-@end quotation
-
-@quotation    
-@lilypond[fragment,relative,verbatim]
-  \time 3/8;
-  [d''8 a a]
-  \property Voice.Beam \set #'dir-function = #beam-dir-mean
-  [d a a] 
-  \property Voice.Beam \set #'dir-function = #beam-dir-median
-  [d a a] 
-@end lilypond
-@end quotation
-
-These beam direction functions are defined in @file{scm/beam.scm}.  If
-your favourite algorithm isn't one of these, you can hook up your own.
-
-
-
-@node Engraver hacking
-@section Engraver hacking
-
-No time signature, no barlines... 
-@lilypond[verbatim]
-\score {
-  \notes \relative c'' {
-    a b c d
-    d c b a
-  }
-  \paper {
-    linewidth = -1.;
-    \translator {
-      \StaffContext
-      whichBar = #""
-      \remove "Time_signature_engraver";
-    }
-  }
-}
-@end lilypond
-
-No staff, no clef, squash pitches
-@lilypond[verbatim]
-\score {
-  \notes { c4 c4 c8 c8 }
-  \paper {
-    linewidth = -1.;
-    \translator {
-      \StaffContext
-      \remove Staff_symbol_engraver;
-      \consists Pitch_squash_engraver;
-      \remove Clef_engraver;
-    }
-  }
-}
-@end lilypond
-
-
-
-@node Markup text
-@section Markup text
-
-
-@ignore
-
-
-#(define text-flat '((font-relative-size . -2 ) (music "accidentals--1")))
-
-  \property VoiceCombineStaff.instrument = #`((kern . 0.5) (lines
-    "2 Clarinetti" (rows "     (B" ,text-flat ")")))
-
-    % Ugh, markup burps
-    \property StaffCombineStaff.instrument = #'((kern . 0.5)
-    (lines "Violoncello" (rows "     e") (rows "Contrabasso")))
-
-
-@end ignore
-
-
-
-Metrome hack...
-
-[todo: hack this into C++, use \tempo]
-
-@lilypond[verbatim]
-#(define note '(rows (music "noteheads-2" ((kern . -0.1) "flags-stem"))))
-#(define eight-note `(rows ,note ((kern . -0.1) (music ((raise . 3.5) "flags-u3")))))
-#(define dotted-eight-note `(rows ,eight-note (music "dots-dot")))
-
-\score {
-  \notes\relative c'' {
-    a1^#`((rows (font-relative-size . -1)) ,dotted-eight-note " = 64")
-  }
-  \paper {
-    linewidth = -1.;
-    \translator{
-      \ScoreContext
-      TextScript \override #'font-shape = #'upright
-    }
-  }
-}
-@end lilypond
-
-
-@c  equalizer
-
-
-@node Apply hacking
-@section Apply hacking
-
-[Add Parenthesed note head example?]
-
-[Add Smart transpose example?]
-
-
-@lilypond[verbatim]
-music = \notes { c'4 d'4( e'4 f'4 }
-
-#(define (reverse-music music)
-  (let* ((elements (ly-get-mus-property music 'elements))
-         (reversed (reverse elements))
-         (span-dir (ly-get-mus-property music 'span-direction)))
-    
-    (ly-set-mus-property music 'elements reversed)
-    
-    (if (dir? span-dir)
-        (ly-set-mus-property music 'span-direction (- span-dir)))
-    
-    (map reverse-music reversed)
-    
-    music))
-
-\score {
-  \context Voice {
-    \music
-    \apply #reverse-music \music
-  }
-  \paper { linewidth = -1.; }
-}
-@end lilypond
-
-@node Embedded TeX
-@section Embedded TeX
-@lilypond[fragment,relative,verbatim]
-  a''^"3 $\\times$ \\`a deux"
-@end lilypond
-
-@node Embedded PostScript
-@section Embedded PostScript
-
-Arbitrary lines and curves not supported...
-
-[TODO:] Make a direct postscript command?
-
-@lilypond[verbatim]
-\score {
-  \notes \relative c'' {
-    a-#"\\embeddedps{3 4 moveto 5 3 rlineto stroke}"
-    -#"\\embeddedps{ [ 0 1 ] 0 setdash 3 5 moveto 5 -3 rlineto stroke}"
-    b-#"\\embeddedps{3 4 moveto 0 0 1 2 8 4 20 3.5 rcurveto stroke}"
-    s2
-    a'1
-  }
-  \paper { linewidth = 70 * \staffspace; }
-}
-@end lilypond
index f4172bdda125539d88fd11d4f3ddd5e6ee5d4e55..0a23734104a23b605a1ae9fd8a4960038e63cd70 100644 (file)
@@ -12,6 +12,7 @@
 * A piano excerpt::             Piano music
 * An orchestral score::         
 * Part extraction::             
 * A piano excerpt::             Piano music
 * An orchestral score::         
 * Part extraction::             
+* Latex and texinfo integration::  
 * end of tutorial::             The end
 * Pre-cooked makefile::         
 @end menu
 * end of tutorial::             The end
 * Pre-cooked makefile::         
 @end menu
@@ -1819,6 +1820,238 @@ bars.
       skipBars = ##t
 @end example
 
       skipBars = ##t
 @end example
 
+@node Latex and texinfo integration
+@section Latex and texinfo integration
+
+So what does this look like? Well, here is an example:
+@lilypond[veryverbatim, intertext="produces this music:"]
+\score{
+  \notes\relative c'{
+    \time 5/8;
+    [e16( g b c a g][e a b d] | )e2 d,8 |
+    [e16( g b c a g][e a b d] | )b2 [a16( f] |
+    [e a b d] )e4 c8 | [es16( bes a as g es][d c b! )g] |
+    [f( a b d b a][f a b d] | )e2
+  }
+}
+@end lilypond
+If you are lucky, the above example show a nice feature of LilyPond
+and La@TeX{}. Since LilyPond can output the music as @TeX{} graphics,
+La@TeX{} can insert pagebreaks between the lines of music.
+
+Notice that there is no @code{\paper} statement in the example
+above. Lilypond-book will insert some code for you that defines the
+linewidth and the font to use. If you don't want to change the default, 
+there is no need to put an empty @code{\paper@{@}} inside the @code{\score}.
+In the example above, something like
+this might be inserted before your code:
+@example
+\include "paper16.ly"
+\paper@{ \paper_sixteen
+    linewidth = 390.\pt;
+    castingalgorithm = \Gourlay;
+@}
+@end example
+The actual values for linewidth will differ depending on papersize and
+number of columns. Also, if you use a different fontsize for the
+music, another file than @code{paper16.ly} will be included.
+
+If you want to make the music not so wide, you can insert a
+@code{\paper} statement that set the linewidth:
+
+@lilypond[veryverbatim, intertext="produces this music:"]
+\score{
+  \notes\relative c'{
+    \time 5/8;
+    [e16( g b c a g][e a b d] | )e2 d,8 |
+    [e16( g b c a g][e a b d] | )b2 [a16( f] |
+    [e a b d] )e4 c8 | [es16( bes a as g es][d c b! )g] |
+    [f( a b d b a][f a b d] | )e2
+  }
+  \paper{linewidth = 10.\cm;}
+}
+@end lilypond
+
+Very often, if you mix music and text, the music is often only a 
+few notes or at most a few bars. This music should be as short as
+possible and not stretched to be aligned to the right margin.
+
+If you only write voice-contents in the lilypond block, @command{lilypond-book}
+will set the @code{linewidth} variable to -1, so Lilypond
+will make the music as short as possible but without breaking the
+line. Here is a well know harmonic progression:
+@lilypond[veryverbatim, intertext="produce a well known harmonic progression:"]
+  \context Voice { <c' e g> <b d g> <c2 e g> }
+@end lilypond
+
+If you want to place music examples in the text,
+@lilypond[eps]
+  \context Voice {  <c' e g> <b d g> <c2 e g> }
+@end lilypond
+, you can use the @code{eps} option. This will create the music as
+eps graphics and include it into the document with the 
+@code{\includegraphics} command.
+
+The code used look like this:
+@example
+@@lilypond[eps]
+ \context Voice @{ <c' e g> <b d g> <c2 e g> @}
+@@end lilypond
+@end example
+
+You can also use the @code{eps} option if the block is a complete
+lilypond source. This 5 cm long empty line, 
+@lilypond[eps]
+\score{
+  \notes{s}
+  \paper{ linewidth = 5.\cm;}
+}
+@end lilypond
+was created with this code:
+@example
+@@lilypond[eps]
+\score@{
+  \notes@{s@}
+  \paper@{ linewidth = 5.\cm;@}
+@}
+@@end lilypond
+@end example
+
+To avoid that La@TeX{} places the music on a line of its one, there should
+be no empty lines between the normal text and the lilypond
+environment. 
+
+You can also use @code{lilypondfile} (on a separate line, FIXME), to
+include another file.
+
+@subsection Fontsize options
+
+You can use all lilypond fontsizes in @command{lilypond-book}.  The
+default 16pt fontsize is probably to big to be included in the middle of
+the text, 11pt or 13pt is probably better.
+
+The code can look like this:
+@example
+@@lilypond[13pt, eps]
+<c' e g>
+@@end lilypond
+@end example
+
+The following options set the fontsize:
+@itemize
+@item @code{11pt}
+@lilypond[11pt, eps]
+  \relative c'{
+    r16 [c d e][f d e c] [g'8 c][b-\prall c] |
+    [d16 g, a b][c a b g][d'8 g f-\prall g]
+  }
+@end lilypond
+@item @code{13pt}
+@lilypond[13pt, eps]
+  \relative c'{
+    r16 [c d e][f d e c] [g'8 c][b-\prall c] |
+    [d16 g, a b][c a b g][d'8 g f-\prall g]
+  }
+@end lilypond
+@item @code{16pt}
+@lilypond[16pt, eps]
+  \relative c'{
+    r16 [c d e][f d e c] [g'8 c][b-\prall c] |
+    [d16 g, a b][c a b g][d'8 g f-\prall g]
+  }
+@end lilypond
+@item @code{20pt}
+@lilypond[20pt, eps]
+  \relative c'{
+    r16 [c d e][f d e c] [g'8 c][b-\prall c] |
+    [d16 g, a b][c a b g][d'8 g f-\prall g]
+  }
+@end lilypond
+@item @code{26pt}
+@lilypond[26pt, eps]
+  \relative c'{
+    r16 [c d e][f d e c] [g'8 c][b-\prall c] |
+  }
+@end lilypond
+@end itemize
+
+
+@subsection More options
+
+@itemize
+@item The @code{singleline} option set @code{linewidth} to -1.0.
+@item The @code{multiline} option set @code{linewidth} to a value letting
+the music be aligned to the right margin. The music can span several
+lines. 
+@end itemize
+
+@subsection Just in case...
+The options @code{fragment} and @code{nofragment} will override
+@command{lilypond-book} when it scans the lilypond code to see if it is voice
+contents or complete code. This might be useful if @command{lilypond-book} choose
+wrong. 
+
+Since there is no finder's fee which doubles every year, there is no
+need to wait for the price money to grow. So send a bug report today
+if you need this one of these options.
+
+@subsection Examples
+
+This was all options to @code{\begin}. The rest of the lilypond
+document will show some ways you can use lilypond in
+La@TeX{} documents. It will also act as a simple test-suite for
+lilypond-book. You can place @code{eps} lilypond in and marginspars just
+as any other included eps graphics.
+
+@lilypond
+\score{
+  \notes\relative c'{ 
+        \time 12/8;  
+        r4-\fermata [b16-.( )b-.] [f'8-- dis16-.( )dis-. gis8--]
+        [f16-.( )f-. dis8-- gis16-.( )gis-.] cis4.-\fermata |
+        
+        r4.-\fermata [cis,16 cis g'8 f16 f b8][g16 g f8 b16 b] dis4.-\fermata
+  }
+  \paper{linewidth = 7.\cm;}
+}
+@end lilypond
+
+
+To the right you can see some bars from the trumpet fanfara from the
+beginning of the fantastic street opera ``Houdini the Great'', by the
+Danish composer Andy Pape. The music is put inside a
+@code{floatingfigure} environment, and the music will be aligned by
+the right marging if you set floatingfigure width and lilypond linewidth
+to the same value. The code looks like this:
+
+@lilypond[verbatim]
+\score{
+  \notes\relative c'{ 
+    \time 12/8;  
+    r4.-\fermata [b16-.( )b-.] [f'8-- dis16-.( )dis-. gis8--]
+    [f16-.( )f-. dis8-- gis16-.( )gis-.] cis8.-\fermata |
+        
+    r4.-\fermata [cis,16 cis g'8 f16 f b8]
+    [g16 g f8 b16 b] dis4.-\fermata
+  }
+  \paper{linewidth = 7.\cm;}
+}
+@end lilypond
+
+If you have a lot of small music examples like this in the middle of
+your text, you might get a nicer look by using ``double'' line
+spacing. Put the @code{\linespread@{1.6@}} command into the preamble of
+your document. Then the line spacing will not be increased between the
+lines where you have music printed with the smallest font size.
+
+Lilypond-book does know about @code{\onecolumn} and @code{\twocolumn}. 
+So the music will be adjusted to the new linewith:
+
+Verbatim environments will also ignore the page margins. That is
+a feature of La@TeX{}. (But you usually put things inside a verbatim
+environment when you don't want La@TeX{} to do any linebreaking)
+
+
 @node  end of tutorial
 @section The end        
          
 @node  end of tutorial
 @section The end        
          
index 386e18a831f70be64944dbcf294b071602f5319d..b4eeade2943ced984d92e78f6beda2dca60386d7 100644 (file)
@@ -121,9 +121,10 @@ Website
    The website is the most convenient form to use for reading the
 documentation on-line documentation. It is made by entering
 
    The website is the most convenient form to use for reading the
 documentation on-line documentation. It is made by entering
 
-       make htmldoc
-   This does require a functioning LilyPond.  The binary doesn't have to
-be installed.
+
+       make web-doc
+   This does require a functioning LilyPond.  The executable doesn't
+have to be installed, though.
 
    If you want to auto-generate Lily's website, you'll need some
 additional conversion tools.
 
    If you want to auto-generate Lily's website, you'll need some
 additional conversion tools.
diff --git a/VERSION b/VERSION
index 43882c53d43d09ad9a67a994eb2d526ef68e0e46..2dd6a9f23ebb4721aab1402649689410b43ea162 100644 (file)
--- a/VERSION
+++ b/VERSION
@@ -1,8 +1,8 @@
 PACKAGE_NAME=LilyPond
 MAJOR_VERSION=1
 MINOR_VERSION=3
 PACKAGE_NAME=LilyPond
 MAJOR_VERSION=1
 MINOR_VERSION=3
-PATCH_LEVEL=142
-MY_PATCH_LEVEL=jcn1
+PATCH_LEVEL=143
+MY_PATCH_LEVEL=
 
 # use the above to send patches: MY_PATCH_LEVEL is always empty for a
 # released version.
 
 # use the above to send patches: MY_PATCH_LEVEL is always empty for a
 # released version.
index 8751a1ffedcd1452babfe984629c7afea740c271..30569232783e18ae2fcd6fa2ef4df5619d21fbc8 100644 (file)
@@ -1,18 +1,10 @@
 
 \paper{
 
 \paper{
-       %my standard paper block
-
-
-%      0=\font "feta19"
-%      -1=\font "feta16"
-%      \stylesheet #(make-style-sheet 'paper19)
-
        indent=0.;
        linewidth=188.\mm;
 
        \translator{
                \PianoStaffContext
        indent=0.;
        linewidth=188.\mm;
 
        \translator{
                \PianoStaffContext
-               %VerticalAlignment \set #'forced-distance = #8.4
                VerticalAlignment \override #'forced-distance = #8.4
        }
        \translator{\StaffContext
                VerticalAlignment \override #'forced-distance = #8.4
        }
        \translator{\StaffContext
diff --git a/input/test/beam-dir-functions.ly b/input/test/beam-dir-functions.ly
new file mode 100644 (file)
index 0000000..613eec4
--- /dev/null
@@ -0,0 +1,38 @@
+\header {
+texidoc = "
+
+There are several ways to calculate the direction of a beam.
+@table @code
+@item majority
+number count of up or down notes
+@item mean
+mean center distance of all notes
+@item median
+mean centre distance weighted per note
+@end table
+
+You can spot the differences of these settings from these simple
+examples:
+
+These beam direction functions are defined in @file{scm/beam.scm}.  If
+your favourite algorithm isn't one of these, you can hook up your own.
+";
+}
+
+\paper { linewidth = -1.;}
+\score { \notes \relative c { 
+  [d''8 a]
+  \property Voice.Beam \set #'dir-function = #beam-dir-mean
+  [d a] 
+  \property Voice.Beam \set #'dir-function = #beam-dir-median
+  [d a]
+}}
+\score { \notes \relative c {
+  \time 3/8;
+  [d''8 a a]
+  \property Voice.Beam \set #'dir-function = #beam-dir-mean
+  [d a a] 
+  \property Voice.Beam \set #'dir-function = #beam-dir-median
+  [d a a] 
+}}
+
diff --git a/input/test/default-neutral-dir.ly b/input/test/default-neutral-dir.ly
new file mode 100644 (file)
index 0000000..5aeb134
--- /dev/null
@@ -0,0 +1,12 @@
+\header { texidoc = "
+The direction of a perfectly centred beams can be
+controlled through @code{Voice.Beam}'s grob-property
+@code{default-neutral-direction}
+";}
+
+\paper { linewidth = -1.;}
+\score {\notes \relative c {
+  [b''8 b]
+  \property Voice.Beam \set #'default-neutral-direction = #-1
+  [b b]
+}}
diff --git a/input/test/stem-extend.ly b/input/test/stem-extend.ly
new file mode 100644 (file)
index 0000000..101e95e
--- /dev/null
@@ -0,0 +1,12 @@
+\header { texidoc = "
+Conventionally, stems and beams extend to the middle staff line.  This
+extension can be controlled through @code{Voice.Stem}'s grob-property
+@code{no-stem-extend}:
+";}
+
+\paper { linewidth = -1.;}
+\score {\notes \relative c {
+  \grace a'8 a4
+  \property Voice.Stem \set #'no-stem-extend = ##t
+  \grace g8 g4 [g8 g]
+}}
index 491257bbb1b294ca6df8dea1c3466eaed92f26d3..557c9ba403cafa62adacd5a493f3e9469ad01e84 100644 (file)
@@ -1,3 +1,10 @@
+\header {
+  texidoc = "By inserting the @TeX{} command \embeddedps, you can
+insert postscript directly into the output.
+
+TODO: make molecule-callback to do this. 
+  ";
+}
 
 \score {
   \notes \relative c'' {
 
 \score {
   \notes \relative c'' {
index 6f0f0e1dabc09d9cfae40d78d90a1488c69e203d..b3353789cd1faa855872f799c5ec9e7b139a6bd8 100644 (file)
@@ -218,6 +218,11 @@ Auto_beam_engraver::consider_end (Moment test_mom)
 Spanner*
 Auto_beam_engraver::create_beam_p ()
 {
 Spanner*
 Auto_beam_engraver::create_beam_p ()
 {
+  if (to_boolean (get_property ("skipTypesetting")))
+    {
+     return 0;
+    }
+  
   Spanner* beam_p = new Spanner (get_property ("Beam"));
   for (int i = 0; i < stem_l_arr_p_->size (); i++)
     {
   Spanner* beam_p = new Spanner (get_property ("Beam"));
   for (int i = 0; i < stem_l_arr_p_->size (); i++)
     {
@@ -258,6 +263,7 @@ Auto_beam_engraver::junk_beam ()
   stem_l_arr_p_ = 0;
   delete grouping_p_;
   grouping_p_ = 0;
   stem_l_arr_p_ = 0;
   delete grouping_p_;
   grouping_p_ = 0;
+
   shortest_mom_ = Moment (1, 8);
 }
 
   shortest_mom_ = Moment (1, 8);
 }
 
@@ -269,6 +275,7 @@ Auto_beam_engraver::end_beam ()
       junk_beam ();
     }
   else
       junk_beam ();
     }
   else
+    
     {
       finished_beam_p_ = create_beam_p ();
       if (finished_beam_p_)
     {
       finished_beam_p_ = create_beam_p ();
       if (finished_beam_p_)
@@ -276,8 +283,9 @@ Auto_beam_engraver::end_beam ()
       delete stem_l_arr_p_;
       stem_l_arr_p_ = 0;
       grouping_p_ = 0;
       delete stem_l_arr_p_;
       stem_l_arr_p_ = 0;
       grouping_p_ = 0;
-      shortest_mom_ = Moment (1, 8);
     }
     }
+
+  shortest_mom_ = Moment (1, 8);
 }
 
 void
 }
 
 void
index 2e0615baf4610425567523f377406af946f0f50c..901d56ab21bbb24f1e04b63c9745dbeacdf84ed8 100644 (file)
@@ -751,7 +751,9 @@ Beam::set_beaming (Grob*me,Beaming_info_list *beaming)
   FIXME: clean me up.
   */
 Molecule
   FIXME: clean me up.
   */
 Molecule
-Beam::stem_beams (Grob*me,Item *here, Item *next, Item *prev) 
+Beam::stem_beams (Grob*me,Item *here, Item *next, Item *prev,
+                 Real dy, Real dydx
+                 ) 
 {
   // ugh -> use commonx
   if ((next && ! (next->relative_coordinate (0, X_AXIS) > here->relative_coordinate (0, X_AXIS))) ||
 {
   // ugh -> use commonx
   if ((next && ! (next->relative_coordinate (0, X_AXIS) > here->relative_coordinate (0, X_AXIS))) ||
@@ -774,8 +776,6 @@ Beam::stem_beams (Grob*me,Item *here, Item *next, Item *prev)
   Real dx = visible_stem_count (me) ?
     last_visible_stem (me)->relative_coordinate (0, X_AXIS) - first_visible_stem (me)->relative_coordinate (0, X_AXIS)
     : 0.0;
   Real dx = visible_stem_count (me) ?
     last_visible_stem (me)->relative_coordinate (0, X_AXIS) - first_visible_stem (me)->relative_coordinate (0, X_AXIS)
     : 0.0;
-  Real dy = gh_scm2double (me->get_grob_property ("dy"));
-  Real dydx = dy && dx ? dy/dx : 0;
 
   Molecule leftbeams;
   Molecule rightbeams;
 
   Molecule leftbeams;
   Molecule rightbeams;
@@ -898,10 +898,18 @@ Beam::brew_molecule (SCM smob)
       dx = stems.top ()->relative_coordinate (0, X_AXIS) - x0;
     }
   
       dx = stems.top ()->relative_coordinate (0, X_AXIS) - x0;
     }
   
+
+
+  /*
+    TODO: the naming of the grob properties sucks.
+   */
+  SCM dy_s = me->get_grob_property ("dy");
+  SCM y_s = me->get_grob_property ("y");
+
   
   
-  Real dy = gh_scm2double (me->get_grob_property ("dy"));
+  Real dy = gh_number_p (dy_s) ? gh_scm2double (dy_s) : 0.0;
   Real dydx = dy && dx ? dy/dx : 0;
   Real dydx = dy && dx ? dy/dx : 0;
-  Real y = gh_scm2double (me->get_grob_property ("y"));
+  Real y = gh_number_p (y_s) ? gh_scm2double (y_s) : 0.0;
 
 
   for (int j=0; j <stems.size (); j++)
 
 
   for (int j=0; j <stems.size (); j++)
@@ -910,7 +918,7 @@ Beam::brew_molecule (SCM smob)
       Item * prev = (j > 0)? stems[j-1] : 0;
       Item * next = (j < stems.size ()-1) ? stems[j+1] :0;
 
       Item * prev = (j > 0)? stems[j-1] : 0;
       Item * next = (j < stems.size ()-1) ? stems[j+1] :0;
 
-      Molecule sb = stem_beams (me, i, next, prev);
+      Molecule sb = stem_beams (me, i, next, prev, dy, dydx);
       Real x = i->relative_coordinate (0, X_AXIS)-x0;
       sb.translate (Offset (x, x * dydx + y));
       mol.add_molecule (sb);
       Real x = i->relative_coordinate (0, X_AXIS)-x0;
       sb.translate (Offset (x, x * dydx + y));
       mol.add_molecule (sb);
index fd60e0de66c3b44de5cbbd05834b550a87aad674..72c1ebdcc6d3e81e62869849844c82e420253c8d 100644 (file)
@@ -69,9 +69,13 @@ void
 Grace_engraver_group::one_time_step ()
 {
   calling_self_b_  = true;
 Grace_engraver_group::one_time_step ()
 {
   calling_self_b_  = true;
-  process_music ();
-  announces ();
-  pre_move_processing ();
+
+  if (!to_boolean (get_property (ly_symbol2scm ("skipTypesetting"))))
+    {
+      process_music ();
+      announces ();
+    }
+  stop_translation_timestep ();
   check_removal ();
   calling_self_b_ = false;
 }
   check_removal ();
   calling_self_b_ = false;
 }
index 54fbce92d94e1f169287f5ab313b3fd58ea525f2..58a3f1fdde2373940c549ca39efc614777cbb454 100644 (file)
@@ -73,7 +73,7 @@ Grace_performer_group::one_time_step ()
   calling_self_b_  = true;
   // process_music ();
   announces ();
   calling_self_b_  = true;
   // process_music ();
   announces ();
-  pre_move_processing ();
+  stop_translation_timestep ();
   check_removal ();
   calling_self_b_ = false;
 }
   check_removal ();
   calling_self_b_ = false;
 }
index 082ceb630e48244f4c5c5b656217c47a4be9c72f..36ad55aec706a11d46f3d4ac9323dc917c5511a4 100644 (file)
@@ -39,7 +39,7 @@ public:
   DECLARE_SCHEME_CALLBACK (user_override, (SCM));
   DECLARE_SCHEME_CALLBACK (do_quantise_y, (SCM));
 
   DECLARE_SCHEME_CALLBACK (user_override, (SCM));
   DECLARE_SCHEME_CALLBACK (do_quantise_y, (SCM));
 
-  static Molecule stem_beams (Grob*,Item *here, Item *next, Item *prev);
+  static Molecule stem_beams (Grob*,Item *here, Item *next, Item *prev, Real, Real);
 
 private:
   static Direction get_default_dir (Grob*);
 
 private:
   static Direction get_default_dir (Grob*);
index d0c14c1424ae14f3a36081cf5a9f2e79cdfcd42e..112c21496f0e02d286b337dfa61de75286170e54 100644 (file)
@@ -38,9 +38,8 @@ public:
   Translator_group * daddy_trans_l_ ;
  
 
   Translator_group * daddy_trans_l_ ;
  
 
-  void pre_move_processing ();
   void announces ();
   void announces ();
-  void post_move_processing ();
+
   void removal_processing ();
   /**
     ask daddy for a feature
   void removal_processing ();
   /**
     ask daddy for a feature
index 9720596664caa40c5b69bea10c17a21161d571f9..0a0ec83780d920ce1a018ad66c13333bd53e7fb1 100644 (file)
@@ -35,7 +35,6 @@ protected:
   virtual void stop_translation_timestep ();
   virtual void start_translation_timestep ();
   virtual void finalize ();
   virtual void stop_translation_timestep ();
   virtual void start_translation_timestep ();
   virtual void finalize ();
-  virtual void create_grobs ();
 
 private:
   Span_req * new_req_l_;
 
 private:
   Span_req * new_req_l_;
@@ -114,12 +113,6 @@ Multi_measure_rest_engraver::process_music ()
       new_req_l_ =0;
     }
 
       new_req_l_ =0;
     }
 
-}
-
-void
-Multi_measure_rest_engraver::create_grobs ()
-{
-
   if (busy_span_req_l_ && !mmrest_p_)
     {
       mmrest_p_ = new Spanner (get_property ("MultiMeasureRest"));
   if (busy_span_req_l_ && !mmrest_p_)
     {
       mmrest_p_ = new Spanner (get_property ("MultiMeasureRest"));
@@ -131,6 +124,8 @@ Multi_measure_rest_engraver::create_grobs ()
       start_measure_i_
        = gh_scm2int (get_property ("currentBarNumber"));
     }
       start_measure_i_
        = gh_scm2int (get_property ("currentBarNumber"));
     }
+
+
 }
 
 void
 }
 
 void
@@ -145,7 +140,8 @@ Multi_measure_rest_engraver::stop_translation_timestep ()
     {
       typeset_grob (mmrest_p_);
       /*
     {
       typeset_grob (mmrest_p_);
       /*
-       we must keep mmrest_p_ around to set measure-count.
+       we must keep mmrest_p_ around to set measure-count, so
+       no mmrest_p_ = 0 here. 
        */
     }
 
        */
     }
 
index 2b3b9e082732853dc343439a189a34b680c65e25..2d13e7a7a87b7429762531ca63472fd350416800 100644 (file)
@@ -26,7 +26,7 @@ class Note_heads_engraver : public Engraver
   Moment note_end_mom_;
 public:
   VIRTUAL_COPY_CONS (Translator);
   Moment note_end_mom_;
 public:
   VIRTUAL_COPY_CONS (Translator);
-  
+
 protected:
   virtual void start_translation_timestep ();
   virtual bool try_music (Music *req_l) ;
 protected:
   virtual void start_translation_timestep ();
   virtual bool try_music (Music *req_l) ;
@@ -35,7 +35,6 @@ protected:
   virtual void stop_translation_timestep ();
 };
 
   virtual void stop_translation_timestep ();
 };
 
-
 bool
 Note_heads_engraver::try_music (Music *m) 
 {
 bool
 Note_heads_engraver::try_music (Music *m) 
 {
@@ -131,6 +130,7 @@ Note_heads_engraver::stop_translation_timestep ()
 void
 Note_heads_engraver::start_translation_timestep ()
 {
 void
 Note_heads_engraver::start_translation_timestep ()
 {
+  
   /* TODO:make this settable?
    */
   if (note_end_mom_ > now_mom ())
   /* TODO:make this settable?
    */
   if (note_end_mom_ > now_mom ())
@@ -147,6 +147,8 @@ Note_heads_engraver::start_translation_timestep ()
       else
        e->forbid_breaks ();    // guh. Use properties!
     }
       else
        e->forbid_breaks ();    // guh. Use properties!
     }
+
+  
 }
 
 
 }
 
 
index bd4c308d0f17883372e318df6b72ea51379b242d..591d90b3868998dc9cd58be9e715bd74139f5ec7 100644 (file)
@@ -76,6 +76,10 @@ head_characteristic (Grob * col)
 
 /*
   TODO: fixme, fucks up if called twice on the same set of rests.
 
 /*
   TODO: fixme, fucks up if called twice on the same set of rests.
+
+  TODO: look at horizontal-shift to determine ordering between rests
+  for more than two voices.
+  
  */
 SCM
 Rest_collision::do_shift (Grob *me, SCM elts)
  */
 SCM
 Rest_collision::do_shift (Grob *me, SCM elts)
index a85c72c8952a2855197880a05376232baa89c5dc..c387a33959065ac0c1c7145db0bce2a06a8e2713 100644 (file)
@@ -59,7 +59,7 @@ Score_engraver::prepare (Moment w)
   Global_translator::prepare (w);
   make_columns (w);
 
   Global_translator::prepare (w);
   make_columns (w);
 
-  post_move_processing ();
+  start_translation_timestep ();
 }
 
 void
 }
 
 void
@@ -115,9 +115,14 @@ Score_engraver::finalize ()
 void
 Score_engraver::one_time_step ()
 {
 void
 Score_engraver::one_time_step ()
 {
-  process_music ();
-  announces ();
-  pre_move_processing ();
+  if (!to_boolean (get_property (ly_symbol2scm("skipTypesetting"))))
+    {
+      process_music ();
+      announces ();
+    }
+
+  
+  stop_translation_timestep ();
   check_removal ();
 }
 
   check_removal ();
 }
 
index e3d966e6e806661011390e827dd294bf934b45ef..63af656abedbe03fbb08e34d87c5c5826b0912a4 100644 (file)
@@ -60,7 +60,7 @@ Score_performer::prepare (Moment m)
   Global_translator::prepare (m);
   audio_column_l_ = new Audio_column (m);
   play_element (audio_column_l_);
   Global_translator::prepare (m);
   audio_column_l_ = new Audio_column (m);
   play_element (audio_column_l_);
-  post_move_processing ();
+  start_translation_timestep ();
 }
 
 
 }
 
 
@@ -70,7 +70,7 @@ Score_performer::one_time_step ()
   // fixme: put this back.
   // process_music ();
   announces ();
   // fixme: put this back.
   // process_music ();
   announces ();
-  pre_move_processing ();
+  stop_translation_timestep ();
   check_removal ();
 }
 
   check_removal ();
 }
 
index 24a608fa02c89cb0f1a25dddb5bb23abac29ddb2..ca954b5e080ded5f1a27f8c05fcd254f1bc4231f 100644 (file)
@@ -208,12 +208,18 @@ Tie_engraver::stop_translation_timestep ()
     }
   now_heads_.clear ();
 
     }
   now_heads_.clear ();
 
+  /*
+    we don't warn for no ties, since this happens naturally when you
+    use skipTypesetting.  */
+  
+#if 0
   if (req_l_ && !tie_p_arr_.size ())
     {
       /* How to shut up this warning, when no notes appeared because
         they were suicided by Thread_devnull_engraver? */
       req_l_->origin ()->warning (_ ("No ties were created!"));
     }
   if (req_l_ && !tie_p_arr_.size ())
     {
       /* How to shut up this warning, when no notes appeared because
         they were suicided by Thread_devnull_engraver? */
       req_l_->origin ()->warning (_ ("No ties were created!"));
     }
+#endif
   
   for (int i=0; i<  tie_p_arr_.size (); i++)
    {
   
   for (int i=0; i<  tie_p_arr_.size (); i++)
    {
index ff63c26e16a2d89338745a23fe9aa1d39a4487ec..6bda7b9030505e1e86c4b31c3a5853cdaaf3f4e3 100644 (file)
@@ -372,13 +372,13 @@ Translator_group::execute_single_pushpop_property (SCM prop, SCM eltprop, SCM va
 void
 Translator_group::stop_translation_timestep ()
 {
 void
 Translator_group::stop_translation_timestep ()
 {
-  each (&Translator::pre_move_processing);
+  each (&Translator::stop_translation_timestep);
 }
 
 void
 Translator_group::start_translation_timestep ()
 {
 }
 
 void
 Translator_group::start_translation_timestep ()
 {
-  each (&Translator::post_move_processing);
+  each (&Translator::start_translation_timestep);
 }
 
 void
 }
 
 void
index 6183057b85cbab2bc649302246d68fb8e9e8f549..03adb249f91a22bb4065e746183fab71e21248e4 100644 (file)
@@ -82,11 +82,6 @@ Translator::now_mom () const
 
 
 
 
 
 
-void
-Translator::post_move_processing ()
-{
-  start_translation_timestep ();
-}
 
 void
 Translator::removal_processing ()
 
 void
 Translator::removal_processing ()
@@ -102,14 +97,6 @@ Translator::announces ()
 }
 
 
 }
 
 
-void
-Translator::pre_move_processing ()
-{
-  stop_translation_timestep ();
-}
-
-
-
 Music_output_def *
 Translator::output_def_l () const
 {
 Music_output_def *
 Translator::output_def_l () const
 {
index 54d0ab1b2f260b9416da0fc701858c3be3b63a37..df77291fd3bc9679164cfc88b9a1adbdb32d4f6a 100644 (file)
@@ -1,15 +1,15 @@
 Begin3
 Title: LilyPond
 Begin3
 Title: LilyPond
-Version: 1.3.142
-Entered-date: 25MAR01
+Version: 1.3.143
+Entered-date: 26MAR01
 Description: @BLURB@
 Keywords: music notation typesetting midi fonts engraving
 Author: hanwen@cs.uu.nl (Han-Wen Nienhuys)
        janneke@gnu.org (Jan Nieuwenhuizen)
 Maintained-by: hanwen@stack.nl (Han-Wen Nienhuys)
 Primary-site: sunsite.unc.edu /pub/Linux/apps/sound/convert
 Description: @BLURB@
 Keywords: music notation typesetting midi fonts engraving
 Author: hanwen@cs.uu.nl (Han-Wen Nienhuys)
        janneke@gnu.org (Jan Nieuwenhuizen)
 Maintained-by: hanwen@stack.nl (Han-Wen Nienhuys)
 Primary-site: sunsite.unc.edu /pub/Linux/apps/sound/convert
-       1000k lilypond-1.3.142.tar.gz 
+       1000k lilypond-1.3.143.tar.gz 
 Original-site: ftp.cs.uu.nl /pub/GNU/LilyPond/development/
 Original-site: ftp.cs.uu.nl /pub/GNU/LilyPond/development/
-       1000k lilypond-1.3.142.tar.gz 
+       1000k lilypond-1.3.143.tar.gz 
 Copying-policy: GPL
 End
 Copying-policy: GPL
 End
index 6964856c54a026c8ab420ad287d765cfc69a926a..572146d4a504b3a30e7a89334a988fba4af699f3 100644 (file)
@@ -1,11 +1,11 @@
 %define info yes
 
 Name: lilypond
 %define info yes
 
 Name: lilypond
-Version: 1.3.142
+Version: 1.3.143
 Release: 1
 License: GPL
 Group: Applications/Publishing
 Release: 1
 License: GPL
 Group: Applications/Publishing
-Source0: ftp.cs.uu.nl:/pub/GNU/LilyPond/development/lilypond-1.3.142.tar.gz
+Source0: ftp.cs.uu.nl:/pub/GNU/LilyPond/development/lilypond-1.3.143.tar.gz
 Summary: A program for printing sheet music.
 URL: http://www.cs.uu.nl/~hanwen/lilypond
 # Icon: lilypond-icon.gif
 Summary: A program for printing sheet music.
 URL: http://www.cs.uu.nl/~hanwen/lilypond
 # Icon: lilypond-icon.gif
index dbad3eee0a209334a1d7167ccd52aef6f063bb84..b85ec0a97a1fa6b5098ff8e02fb47e52139eedef 100644 (file)
@@ -104,7 +104,19 @@ Align_interface::center_on_element). .")
 (grob-property-description 'dependencies list? "list of score-grob pointers that indicate who to compute first for certain global passes.")
 (grob-property-description 'details list? "alist of parameters for detailed grob behavior.")
 (grob-property-description 'dir-forced boolean? "set if direction has been forced; read by Beam.")
 (grob-property-description 'dependencies list? "list of score-grob pointers that indicate who to compute first for certain global passes.")
 (grob-property-description 'details list? "alist of parameters for detailed grob behavior.")
 (grob-property-description 'dir-forced boolean? "set if direction has been forced; read by Beam.")
-(grob-property-description 'dir-function procedure? "function of type (count total)->direction.  Default value: beam-dir-majority, also available: beam-dir-mean, beam-dir-median.")
+(grob-property-description 'dir-function procedure? "function of type (count total)->direction.  Default value: beam-dir-majority, also available: beam-dir-mean, beam-dir-median.
+
+The ways to calculate the direction of a beam work as follows:
+@table @code
+@item majority
+number count of up or down notes
+@item mean
+mean center distance of all notes
+@item median
+mean centre distance weighted per note
+@end table
+
+")
 (grob-property-description 'dir-list list? "list of stem directions, needed for optical spacing correction.")
 (grob-property-description 'direction dir? "up or down, left or right?.")
 (grob-property-description 'direction-source ly-grob? "in case side-relative-direction is set, which grob  to get the direction from .")
 (grob-property-description 'dir-list list? "list of stem directions, needed for optical spacing correction.")
 (grob-property-description 'direction dir? "up or down, left or right?.")
 (grob-property-description 'direction-source ly-grob? "in case side-relative-direction is set, which grob  to get the direction from .")
index ba69b79bd01010441ff139a51eb0189dee126792..cf2bd96fa50592920ef63dafe64332e991bb9261 100644 (file)
@@ -259,6 +259,11 @@ r1 r1*3 R1*3  \\\\property Score.skipBars= ##t r1*3 R1*3
 @end example
 
 ")
 @end example
 
 ")
+(translator-property-description 'skipTypesetting boolean?
+                                "When true, all no typesetting is done at
+this moment, causing  the interpretation phase to go a lot faster. This can
+help with debugging large scores.")
+
 (translator-property-description 'slurBeginAttachment symbol?
 "translates to the car of grob-property 'attachment of NoteColumn. See
 @ref{Slur}.")
 (translator-property-description 'slurBeginAttachment symbol?
 "translates to the car of grob-property 'attachment of NoteColumn. See
 @ref{Slur}.")
index dfaf288dbb302a3ad8063b9f2fc54995b24245fe..e15ee356ddaff5485255bcb2291298bdc053c8e0 100644 (file)
@@ -42,7 +42,7 @@ import operator
 
 program_version = '@TOPLEVEL_VERSION@'
 if program_version == '@' + 'TOPLEVEL_VERSION' + '@':
 
 program_version = '@TOPLEVEL_VERSION@'
 if program_version == '@' + 'TOPLEVEL_VERSION' + '@':
-       program_version = '1.3.113'
+       program_version = '1.4pre'
 
 include_path = [os.getcwd()]
 
 
 include_path = [os.getcwd()]
 
index 975b3d2b1e20b61204763d84b18a4733e4047da9..7d4380e305c0e0831017bbda6fea0b16e78d7875 100644 (file)
@@ -75,6 +75,7 @@ local-help:
   po-replace  do po-update and replace catalogs with msgmerged versions\n\
   po-update   update translation Portable Object database\n\
   web         update website in out-www\n\
   po-replace  do po-update and replace catalogs with msgmerged versions\n\
   po-update   update translation Portable Object database\n\
   web         update website in out-www\n\
+  web-doc     generate documentation website\n\
   web-clean   clean out-www\n\
 \n\
 Some of these top level targets (diff, dist, release) can be issued\n\
   web-clean   clean out-www\n\
 \n\
 Some of these top level targets (diff, dist, release) can be issued\n\