]> git.donarmstrong.com Git - lilypond.git/commitdiff
patch::: 1.3.143.jcn1
authorJan Nieuwenhuizen <janneke@gnu.org>
Mon, 26 Mar 2001 19:01:51 +0000 (21:01 +0200)
committerJan Nieuwenhuizen <janneke@gnu.org>
Mon, 26 Mar 2001 19:01:51 +0000 (21:01 +0200)
1.3.143.jcn1
============

* Small doco fixes.

* Cosmetic bugfixes to chord names.

* Fixed order of piano pedal strings (Amelie).

* Changed embarrassing 'chorda' to corda (Thanks, Amelie).

* Bugfixes: ly2dvi: empty tagline, don't fail if gettext.py can't be
imported, check for linewidth before indexing, copy midi output.

1.3.143
=======

21 files changed:
CHANGES
Documentation/user/refman.itely
Documentation/user/tutorial.itely
VERSION
input/bugs/ac-clash.ly [new file with mode: 0644]
lily/piano-pedal-engraver.cc
ly/engraver.ly
ly/spanners.ly
mutopia/F.Schubert/GNUmakefile
mutopia/F.Schubert/standchen-16.ly
mutopia/F.Schubert/standchen-20.ly
mutopia/F.Schubert/standchen.ly
scm/chord-name.scm
scm/grob-description.scm
scm/midi.scm
scm/translator-description.scm
scm/translator-property-description.scm
scripts/convert-ly.py
scripts/ly2dvi.py
scripts/update-lily.py
tex/titledefs.tex

diff --git a/CHANGES b/CHANGES
index 242f08f6d7c549554e97d7552cf6f2a7fd0a9f45..cbdfc1be3334efb8a63dadb386ffe56ba202bda4 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -1,3 +1,20 @@
+1.3.143.jcn1
+============
+
+* Small doco fixes.
+
+* Cosmetic bugfixes to chord names.
+
+* Fixed order of piano pedal strings (Amelie).
+
+* Changed embarrassing 'chorda' to corda (Thanks, Amelie).
+
+* Bugfixes: ly2dvi: empty tagline, don't fail if gettext.py can't be
+imported, check for linewidth before indexing, copy midi output.
+
+1.3.143
+=======
+
 1.3.142.hwn2
 ============
 
 1.3.142.hwn2
 ============
 
index 8ce5bf8e23e1831776966ee490ff6e13cc33247d..a46c14eaee71902342c24871da184d523d87db5f 100644 (file)
@@ -820,9 +820,11 @@ note they contain. For a beam ending rule that only applies to beams
 with 32nd notes (and no shorter notes), you would use @code{(end * * 1
 32)}.
 
 with 32nd notes (and no shorter notes), you would use @code{(end * * 1
 32)}.
 
-[say something about irregular meters. eg 5/8 = 2+3/8, 3+2/8] 
+@c not true
+@c Automatic beams can not be put on the last note in a score.
 
 
-Automatic beams can not be put on the last note in a score.
+If a score ends while an automatic beam has not been ended and is still
+accepting notes, this last beam will not be typeset at all.
 
 @cindex automatic beam generation
 @cindex autobeam
 
 @cindex automatic beam generation
 @cindex autobeam
@@ -834,15 +836,19 @@ a melody that goes with lyrics.
 
 @refbugs
 
 
 @refbugs
 
-It is not possible to specify beaming for beams with mixed durations,
-that differs from the beaming of all separate durations, ie, you'll
-have to specify manual beams to get:
+It is not possible to specify beaming parameters for beams with mixed
+durations, that differ from the beaming parameters of all separate
+durations, ie, you'll have to specify manual beams to get:
 @lilypond[fragment,singleline,relative]
   \property Voice.autoBeamSettings
 @lilypond[fragment,singleline,relative]
   \property Voice.autoBeamSettings
-    \override #'(end * * * *) = #(make-moment 3 8)
-  \time 12/8; c'8 c c  c16 c c c c c  [c c c c] c8 c  c4
+  \override #'(end * * * *) = #(make-moment 3 8)
+  \time 12/8; c'8 c c c16 c c c c c [c c c c] c8 c c4
 @end lilypond
 
 @end lilypond
 
+It is not possible to specify beaming parameters that act differently in
+different parts of a measure, eg, in irregular meters such as @code{5/8}
+that breaks down to @code{2/8 +3/8} or @code{3/8 + 2/8}, automatic beams
+won't act according to the broken down parts @code{2/8} and @code{3/8}.
 
 @c .    {Manual beams}
 @cindex Automatic beams
 
 @c .    {Manual beams}
 @cindex Automatic beams
@@ -1695,11 +1701,11 @@ context which is a direct child of the a context of type
 @cindex Pedals
 
 Piano pedal instruction can be expressed using 
 @cindex Pedals
 
 Piano pedal instruction can be expressed using 
-@code{\sustainDown}, @code{\sustainUp}, @code{\unaChorda},
-@code{\treChorde}, @code{\sostenutoDown} and @code{\sostenutoUp}.
+@code{\sustainDown}, @code{\sustainUp}, @code{\unaCorda},
+@code{\treCorde}, @code{\sostenutoDown} and @code{\sostenutoUp}.
 
 These identifiers are shorthands for spanner commands of the types
 
 These identifiers are shorthands for spanner commands of the types
-@code{Sustain}, @code{UnaChorda} and @code{Sostenuto}:
+@code{Sustain}, @code{UnaCorda} and @code{Sostenuto}:
 
 @lilypond[fragment,verbatim]
 c''4 \spanrequest \start "Sustain" c''4 c''4 \spanrequest \stop "Sustain"
 
 @lilypond[fragment,verbatim]
 c''4 \spanrequest \start "Sustain" c''4 c''4 \spanrequest \stop "Sustain"
@@ -2159,10 +2165,8 @@ scheme = \chords {
 
 LilyPond examines chords specified as lists of notes to determine a name
 to give the chord. LilyPond will not try to identify chord inversions or
 
 LilyPond examines chords specified as lists of notes to determine a name
 to give the chord. LilyPond will not try to identify chord inversions or
-added base, which may result in strange chord names when chords are
-entered as a list of pitches:
-
-[base vs. bass ?]
+an added bass note, which may result in strange chord names when chords
+are entered as a list of pitches:
 
 @lilypond[verbatim,center,singleline]
 scheme = \notes {
 
 @lilypond[verbatim,center,singleline]
 scheme = \notes {
@@ -2189,9 +2193,33 @@ chordnames.
 
 Routines that determine the names to be printed are written in Scheme,
 and may be customized by the user.  The code can be found in
 
 Routines that determine the names to be printed are written in Scheme,
 and may be customized by the user.  The code can be found in
-@file{scm/chord-name.scm}.
+@file{scm/chord-name.scm}.  Here's an example showing the differences in
+chord name styles:
+
+@c too long?
+@c maybe just junk verbatim option?
+@lilypond[verbatim,singleline]
+scheme = \chords {
+  c1 c:5^3 c:4^3 c:5+
+  c:m7+ c:m5-.7
+  c:5-.7 c:5+.7
+  c:9^7
+}
+
+\score {
+  \notes <
+    \context ChordNames = banter \scheme
+    \context ChordNames = american {
+      \property ChordNames.ChordName \override
+        #'style = #'american \scheme }
+    \context ChordNames = jazz {
+      \property ChordNames.ChordName \override
+        #'style = #'jazz \scheme }
+    \context Staff \transpose c'' \scheme
+  >
+}
+@end lilypond
 
 
-[3 short examples showing differences between american, banter and jazz]
 
 @node Writing parts
 @section Writing parts
 
 @node Writing parts
 @section Writing parts
@@ -2381,11 +2409,9 @@ The syntax for part combining is
 @end example
 
 where the pieces of music @var{musicexpr1} and @var{musicexpr2} will be
 @end example
 
 where the pieces of music @var{musicexpr1} and @var{musicexpr2} will be
-combined into one context @var{context}.  The names of the music
+combined into one context @var{context}.  The context names of the music
 expressions must start with the prefixes @code{one} and @code{two}.
 
 expressions must start with the prefixes @code{one} and @code{two}.
 
-[Name of music expressions?  is that context name? ]
-
 The most useful function of the part combiner to combining threads into
 one voice, as common for wind parts in orchestral scores:
 
 The most useful function of the part combiner to combining threads into
 one voice, as common for wind parts in orchestral scores:
 
@@ -2567,6 +2593,7 @@ grob property.
 * What to tune?::               
 * Font selection::              
 * Text markup::                 
 * What to tune?::               
 * Font selection::              
 * Text markup::                 
+* Embedded @TeX{}::             
 @end menu
 
 @node Tuning groups of grobs 
 @end menu
 
 @node Tuning groups of grobs 
@@ -2948,6 +2975,42 @@ marking:
 }
 @end lilypond
 
 }
 @end lilypond
 
+@node Embedded @TeX{}
+@subsection Embeded @TeX{}
+@cindex embedded tex
+@cindex embedded tex
+
+You can use @TeX{} commands in text scripts, but this should be 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.
+
+@lilypond[fragment,relative,verbatim]
+  a''^"3 $\\times$ \\`a deux"
+@end lilypond
+
+@subsection Embedded PostScript
+@cindex embedded postscript
+@cindex embedded postscript
+
+You can also use raw PostScript commands embedded in text scripts.  This
+offers ultimate flexibitily, but you'll have to learn the arcane
+PostScript language.  Currently, embedded PostScript will @strong{not}
+work with direct PostScript output.  Note that all dimensions that you
+use are in @code{staff-space}s.
+
+@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
 
 
 @c . {Page layout}
 
 
 @c . {Page layout}
@@ -3175,13 +3238,25 @@ details, see the example file @file{input/test/between-systems.ly}
 @cindex Sound
 
 LilyPond can produce MIDI output.  The performance lacks lots of
 @cindex Sound
 
 LilyPond can produce MIDI output.  The performance lacks lots of
-interesting effects, such as swing, articulation, slurring, tieing,
-etc., but it is good enough for proof-hearing the music you enter.
-
-Dynamics and tempo changes are interpreted.
-
-[TODO: mention volume control/Instrument Equaliser]
-
+interesting effects, such as swing, articulation, slurring, etc., but it
+is good enough for proof-hearing the music you have entered.  Ties,
+dynamics and tempo changes are interpreted.
+
+The MIDI volume is composed of two elements: the current dynamics of the
+voice and the type of musical instrument.
+
+Dynamic marks, crescendi and decrescendi translate into MIDI volume
+levels.  Dynamic marks translate to a fixed fraction of the available
+MIDI volume range, crescendi and decrescendi make the the volume vary
+linearly between their two extremities.  The fractions be adjusted by
+overriding the @code{absolute-volume-alist} defined in
+@file{scm/midi.scm}.
+
+For each type of musical instrument (that MIDI supports), a volume range
+can be defined.  This gives you basic equaliser control, which can
+enhance the quality of the MIDI output remarkably.  You can add
+instruments and ranges or change the default settings by overriding
+the @code{instrument-equaliser-alist} defined in @file{scm/midi.scm}.
 
 @refbugs
 
 
 @refbugs
 
index 0a23734104a23b605a1ae9fd8a4960038e63cd70..b0dd10d42d6005a39f6ba31fe22ca70f10c4ecad 100644 (file)
@@ -1823,6 +1823,12 @@ bars.
 @node Latex and texinfo integration
 @section Latex and texinfo integration
 
 @node Latex and texinfo integration
 @section Latex and texinfo integration
 
+
+@menu
+* Songs with additional verses::  
+@end menu
+
+
 So what does this look like? Well, here is an example:
 @lilypond[veryverbatim, intertext="produces this music:"]
 \score{
 So what does this look like? Well, here is an example:
 @lilypond[veryverbatim, intertext="produces this music:"]
 \score{
@@ -2051,6 +2057,50 @@ 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)
 
 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 Songs with additional verses
+@subsection Songs with additional verses
+
+With lilypond-book, you can typeset songs with additional verses.  To
+make lilypond-book print titles like ly2dvi, add
+
+@example
+\input titledefs.tex
+\def\preLilypondExample@{\def\mustmakelilypondtitle@{@}@}
+@end example
+
+just before the music fragment.
+
+@c urg: can't show, won't work for .texi docs
+
+@example
+% generate standard lilypond titles
+\input titledefs.tex
+\def\preLilypondExample@{\def\mustmakelilypondtitle@{@}@}
+
+\begin@{lilypond@}
+\header @{
+  title =      "Title";
+  subtitle =   "Subtitle";
+  subsubtitle =        "Subsubtitle";
+  opus =  "Opus 1";
+  piece = "Piece";
+  composer =    "Composer";
+  enteredby =   "JCN";
+  instrument = "instrument";
+@}
+\paper @{ linewidth = -1.; @}
+\score @{
+  \notes \relative c'' @{ a b c d @}
+@}
+\end@{lilypond@}
+
+\begin@{enumerate@}
+\item Verse one.  aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa 
+\item Verse two.  bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb 
+\end@{enumerate@}
+@end example
+
+
 
 @node  end of tutorial
 @section The end        
 
 @node  end of tutorial
 @section The end        
diff --git a/VERSION b/VERSION
index 2dd6a9f23ebb4721aab1402649689410b43ea162..74ac4485095bb35c80adfad34c3b824d100835dc 100644 (file)
--- a/VERSION
+++ b/VERSION
@@ -2,7 +2,7 @@ PACKAGE_NAME=LilyPond
 MAJOR_VERSION=1
 MINOR_VERSION=3
 PATCH_LEVEL=143
 MAJOR_VERSION=1
 MINOR_VERSION=3
 PATCH_LEVEL=143
-MY_PATCH_LEVEL=
+MY_PATCH_LEVEL=jcn1
 
 # 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.
diff --git a/input/bugs/ac-clash.ly b/input/bugs/ac-clash.ly
new file mode 100644 (file)
index 0000000..0f0d4f4
--- /dev/null
@@ -0,0 +1,7 @@
+% accidentals clash
+\score {
+  \context Staff \notes\relative c' <
+    % koord: c1 e g bes dis
+    bes'1 dis
+  >
+}
\ No newline at end of file
index 09f5d1e09355f99075d1bb4f8eec4f0b2d4e5ea9..7f25a21dd30c51874851d33cca1740a75ae6341c 100644 (file)
@@ -57,7 +57,7 @@ Piano_pedal_engraver::initialize ()
   Pedal_info *p = info_list_;
 
 
   Pedal_info *p = info_list_;
 
 
-  char * names [] = { "Sostenuto", "Sustain", "UnaChorda", 0  };
+  char * names [] = { "Sostenuto", "Sustain", "UnaCorda", 0  };
   char **np = names ;
   do
     {
   char **np = names ;
   do
     {
@@ -155,14 +155,14 @@ Piano_pedal_engraver::create_grobs ()
            }
          else
            {
            }
          else
            {
-             s = gh_car (strings);
+             s = gh_caddr (strings);
            }
          p->start_req_l_ = 0;
        }
       else if (p->req_l_drul_[START])
        {
          p->start_req_l_ = p->req_l_drul_[START];
            }
          p->start_req_l_ = 0;
        }
       else if (p->req_l_drul_[START])
        {
          p->start_req_l_ = p->req_l_drul_[START];
-         s = gh_caddr (strings);
+         s = gh_car (strings);
        }
 
       if (gh_string_p (s))
        }
 
       if (gh_string_p (s))
index 72dced40f50f098a4d772a27543a863d3f5b88d5..a9ac7371fe7b435972c0d4d3d43aa480c8a79268 100644 (file)
@@ -406,7 +406,7 @@ ScoreContext = \translator {
        verticalAlignmentChildCallback = #Align_interface::alignment_callback
 
        pedalSustainStrings = #'("Ped." "*Ped." "*")
        verticalAlignmentChildCallback = #Align_interface::alignment_callback
 
        pedalSustainStrings = #'("Ped." "*Ped." "*")
-       pedalUnaChordaStrings = #'("una chorda" "" "tre chorde")
+       pedalUnaCordaStrings = #'("una corda" "" "tre corde")
        pedalSostenutoStrings = #'()  % FIXME
 
        tupletNumberFormatFunction = #denominator-tuplet-formatter
        pedalSostenutoStrings = #'()  % FIXME
 
        tupletNumberFormatFunction = #denominator-tuplet-formatter
index a0e837b8efebc8cd1efc0ae01cbbe8129d1b153a..ae445148c4d4a7b72974e471b52927b13a358640 100644 (file)
@@ -10,10 +10,24 @@ cresc = \notes {
   \property Voice.crescendoSpanner = "dashed-line"
 }
 
   \property Voice.crescendoSpanner = "dashed-line"
 }
 
+% ah, this is handy: maybe drop resetting of properties in
+% dynamic-engraver ?
 endcresc = \notes {
 endcresc = \notes {
-\commandspanrequest \stop "crescendo"; 
-\property Voice.crescendoText = ##f
-\property Voice.crescendoSpanner = ##f
+  \commandspanrequest \stop "crescendo"; 
+  \property Voice.crescendoText = ##f
+  \property Voice.crescendoSpanner = ##f
+}
+
+dim = \notes {
+  \commandspanrequest \start "decrescendo" ;
+  \property Voice.decrescendoText = "dim."
+  \property Voice.decrescendoSpanner = "dashed-line"
+}
+
+enddim = \notes {
+  \commandspanrequest \stop "decrescendo"; 
+  \property Voice.decrescendoText = ##f
+  \property Voice.decrescendoSpanner = ##f
 }
 
 %{
 }
 
 %{
@@ -27,8 +41,8 @@ endcresc = \spanrequest \stop "crescendo"
 sustainDown = \spanrequest \start "Sustain"
 sustainUp = \spanrequest \stop "Sustain"
 
 sustainDown = \spanrequest \start "Sustain"
 sustainUp = \spanrequest \stop "Sustain"
 
-unaChorda = \spanrequest \start "UnaChorda"
-treChorde = \spanrequest \stop "UnaChorda"
+unaCorda = \spanrequest \start "UnaCorda"
+treCorde = \spanrequest \stop "UnaCorda"
 
 sostenutoDown = \spanrequest \start "Sostenuto"
 sostenutoUp = \spanrequest \stop "Sostenuto"
 
 sostenutoDown = \spanrequest \start "Sostenuto"
 sostenutoUp = \spanrequest \stop "Sostenuto"
index d1038f0a04ca9817061106b6030ad7a99dc602b3..93cc57080139e71b0de702d682958029177a9177 100644 (file)
@@ -3,6 +3,7 @@
 depth = ../..
 
 examples=standchen
 depth = ../..
 
 examples=standchen
+mutopia-examples=standchen
 LOCALSTEPMAKE_TEMPLATES=mutopia
 
 include $(depth)/make/stepmake.make
 LOCALSTEPMAKE_TEMPLATES=mutopia
 
 include $(depth)/make/stepmake.make
index eb5f1bca043943e1d8eb2c9d30add686ef0dad41..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 (file)
@@ -1,14 +0,0 @@
-\header{
-filename =      "standchen.ly";
-title =         "St\"andchen (Serenade) \"Leise flehen meine Lieder\"";
-opus =          "D. 957 No. 4";
-composer =      "Franz Schubert (1797-1828)";
-poet= "Text by Ludwig Rellstab (1799-1860)";
-enteredby =     "JCN";
-description =  "A schubert song in 16 pt";
-copyright =     "public domain";
-} 
-
-\version "1.3.117";
-
-\include "standchen.ly"
index b7caa54b3f59db53decb6508812ae657b85c4706..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 (file)
@@ -1,16 +0,0 @@
-\header{
-filename =      "standchen.ly";
-title    = "St\\\"andchen";
-subtitle =  "(Serenade)\\\\``Leise flehen meine Lieder''";
-opus =          "D. 957 No. 4";
-date =  "August 1828";
-composer =      "Franz Schubert (1797-1828)";
-poet=   "Text by Ludwig Rellstab (1799-1860)";
-enteredby =     "JCN";
-copyright =     "public domain";
-} 
-
-\version "1.3.117";
-
-% fool make-website
-% \include "standchen.ly";
index 0b24dc81a943ebae7928b58f7c66eb687b4f2160..c9a0b1f6aa14095e16a995dfddb6ca946fa67fe4 100644 (file)
@@ -1,51 +1,50 @@
-\header{
-filename =      "standchen.ly";
-%
-% From the album:
-% Schubert-Lieder
-% Edition Schott No. 608
-% Without date, but makes mention of
-% ``Jubil"aums-Ausgabe zum 100. Todestage'' ie, 1928
-%
-% page 60
-%
-title    = "St\\\"andchen";
-subtitle =  "(Serenade)\\\\``Leise flehen meine Lieder''";
-opus =          "D. 957 No. 4";
-date =  "August 1828";
-composer =      "Franz Schubert (1797-1828)";
-poet=   "Text by Ludwig Rellstab (1799-1860)";
-enteredby =     "JCN";
-copyright =     "public domain";
+
+instrument = "Piano"
+
+\header {
+  title = "Ständchen";
+  subtitle = "(Serenade)";
+  subsubtitle = "Leise flehen meine Lieder";
+  opus = "D. 957 No. 4";
+  date = "August 1828";
+  composer = "Franz Schubert (1797-1828)";
+  poet = "Text by Ludwig Rellstab (1799-1860)";
+  enteredby = "JCN";
+  copyright = "public domain";
+  instrument = \instrument;
 
   % mutopia headers.
 
   % mutopia headers.
-  mutopiatitle = "St\\\"andchen";
-  mutopiasubtitle = "(Serenade)\\\\``Leise flehen meine Lieder''";
+  mutopiatitle = "Standchen";
+  mutopiasubtitle = "Leise flehen meine Lieder";
   mutopiacomposer = "Franz Schubert (1797-1828)";
   mutopiapoet = "Ludwig Rellstab (1799-1860)";
   mutopiacomposer = "Franz Schubert (1797-1828)";
   mutopiapoet = "Ludwig Rellstab (1799-1860)";
-  mutopiaopus = "D. 957 No. 4";
-  mutopiainstrument = "Piano";
+  mutopiaopus = "D957.4";
+  mutopiainstrument = \instrument;
+  date = "1828/08";
   style = "Romantic";
   style = "Romantic";
-  copyright = "Public Domain";
-  tagline =    "\\\\This music is part of the Mutopia project, http://sca.uwater
-loo.ca/Mutopia/\\\\It has been typeset and placed in the public domain by Jan Nieuwenhuizen.\\\\Unrestricted modification and redistribution is permitted and enc
-ouraged - copy this music and share it!";
-  maintainer = "janneke@gnu.org";
-  lastupdated = "1999/Oct/17";
+  source = "Schubert-Lieder; Edition Schott No. 608, (Not dated).
+    Jubilaeums-Ausgabe zum 100. Todestage (~1928).";
 
 
+  copyright = "Public Domain";
+  maintainer = "Jan Nieuwenhuizen";
+  maintainer_email = "janneke@gnu.org";
+  lastupdated =         "2001/Mar/26";
+  mutopiapublicdomain = "\\parbox{\hsize}{\\thefooter\\quad\\small
+    \\\\This music is part of the Mutopia project,
+    \\texttt{http://www.mutopiaproject.org/}\\\\It has been typeset
+    and placed in the public domain by " + \maintainer +
+    ".\\\\Unrestricted modification and redistribution is permitted
+    and encouraged---copy this music and share it.}";
+ tagline = \mutopiapublicdomain;
+ footer = "Mutopia-2001/03/26-xx";
 } 
 
 } 
 
-%{
- Tested Features: multivoice accents lyrics chords piano music
-multiple \paper{}s in one \score 
-Note: Original key f.
-%}
-
-\version "1.3.117";
+\version "1.3.141";
 
 
-dynamicUp =    \property Voice.DynamicLineSpanner \override #'direction = #1
-dynamicRevert =        \property Voice.DynamicLineSpanner \revert #'direction
+dynamicUp = \property Voice.DynamicLineSpanner \override #'direction = #1
+dynamicRevert = \property Voice.DynamicLineSpanner \revert #'direction
 
 
+\include "paper16.ly"
 
 vocalVerse =  \notes\relative c''{
        \dynamicUp
 
 vocalVerse =  \notes\relative c''{
        \dynamicUp
@@ -63,7 +62,9 @@ vocalVerse =  \notes\relative c''{
        R2. |
        g8. b16 es4. d8 |
        c8. g16 es4. c8 |
        R2. |
        g8. b16 es4. d8 |
        c8. g16 es4. c8 |
-       \grace { as'16 bes } \times 2/3 { [ )as8( )g] as } c4. as8 |
+       % CHECK
+       % \grace { as'16 bes } \times 2/3 { [ )as8( )g] as } c4. as8 |
+       \grace { as'16( bes } \times 2/3 { [ )as8( )g] as } c4. as8 |
        g2. |
        \grace { f16( g } \times 2/3 { [ )f8( )e] f } as4. f8 |
   
        g2. |
        \grace { f16( g } \times 2/3 { [ )f8( )e] f } as4. f8 |
   
index 5bbb2017e4d61f904725fb87163f1d1debe96661..920875a15b9585d5fa882010da01004051d22fa8 100644 (file)
        ; Cm iso Cm.no5
        (((0 . 0) (2 . -1)) . ("m"))
        ; C2 iso C2.no3
        ; Cm iso Cm.no5
        (((0 . 0) (2 . -1)) . ("m"))
        ; C2 iso C2.no3
-       (((0 . 0) (1 . 0) (4 . 0)) . (super "2"))
+       (((0 . 0) (1 . 0) (4 . 0)) . ("" (super "2")))
        ; C4 iso C4.no3
        ; C4 iso C4.no3
-       (((0 . 0) (3 . 0) (4 . 0)) . (super "4"))
-       ; Cdim iso Cm5-
+       (((0 . 0) (3 . 0) (4 . 0)) . ("" (super "4")))
+       ;; Cdim iso Cm5-
        (((0 . 0) (2 . -1) (4 . -1)) . ("dim"))
        ; Co iso Cm5-7-
        (((0 . 0) (2 . -1) (4 . -1)) . ("dim"))
        ; Co iso Cm5-7-
-       ; urg
-        (((0 . 0) (2 . -1) (4 . -1) (6 . -2)) . (super "o"))
+        (((0 . 0) (2 . -1) (4 . -1) (6 . -2)) . ("" (super "o")))
        ; Cdim9
        (((0 . 0) (2 . -1) (4 . -1) (6 . -2) (1 . -1)) . ("dim" (super "9")))
        (((0 . 0) (2 . -1) (4 . -1) (6 . -2) (1 . -1) (3 . -1)) . ("dim" (super "11")))
        ; Cdim9
        (((0 . 0) (2 . -1) (4 . -1) (6 . -2) (1 . -1)) . ("dim" (super "9")))
        (((0 . 0) (2 . -1) (4 . -1) (6 . -2) (1 . -1) (3 . -1)) . ("dim" (super "11")))
         (((0 . 0) (2 . -1)) . ("m"))
         (((0 . 0) (3 . 0) (4 . 0)) . ("sus"))
         (((0 . 0) (2 . -1) (4 . -1)) . ("dim"))
         (((0 . 0) (2 . -1)) . ("m"))
         (((0 . 0) (3 . 0) (4 . 0)) . ("sus"))
         (((0 . 0) (2 . -1) (4 . -1)) . ("dim"))
-;Alternate:     (((0 . 0) (2 . -1) (4 . -1)) . ((super "o")))
+;Alternate:     (((0 . 0) (2 . -1) (4 . -1)) . ("" (super "o")))
         (((0 . 0) (2 . 0) (4 . 1)) . ("aug"))
 ;Alternate:     (((0 . 0) (2 . 0) (4 . 1)) . ("+"))
         (((0 . 0) (1 . 0) (4 . 0)) . ("2"))
         ;; Common seventh chords
         (((0 . 0) (2 . 0) (4 . 1)) . ("aug"))
 ;Alternate:     (((0 . 0) (2 . 0) (4 . 1)) . ("+"))
         (((0 . 0) (1 . 0) (4 . 0)) . ("2"))
         ;; Common seventh chords
-        (((0 . 0) (2 . -1) (4 . -1) (6 . -2)) . (rows (super "o") "7"))
+        (((0 . 0) (2 . -1) (4 . -1) (6 . -2)) . ("" (super "o") "7"))
         (((0 . 0) (2 . 0) (4 . 0) (6 . 0)) . ("maj7"))
         (((0 . 0) (2 . -1) (4 . 0) (6 . -1)) . ("m7"))
         (((0 . 0) (2 . 0) (4 . 0) (6 . -1)) . ("7"))
         (((0 . 0) (2 . 0) (4 . 0) (6 . 0)) . ("maj7"))
         (((0 . 0) (2 . -1) (4 . 0) (6 . -1)) . ("m7"))
         (((0 . 0) (2 . 0) (4 . 0) (6 . -1)) . ("7"))
@@ -96,7 +95,9 @@
         ;jazz: the delta, see jazz-chords.ly
         ;;(((0 . 0) (2 . -1) (4 . -1) (6 . -2)) .  (super ((font-family . math) "N"))
         ;; ugh, kludge slashed o
         ;jazz: the delta, see jazz-chords.ly
         ;;(((0 . 0) (2 . -1) (4 . -1) (6 . -2)) .  (super ((font-family . math) "N"))
         ;; ugh, kludge slashed o
-        (((0 . 0) (2 . -1) (4 . -1) (6 . -1)) . (rows ((raise . 1) "o") ((kern . -0.85) ((raise . 0.57) ((font-relative-size . -3) "/"))) "7")) ; slashed o
+        ;; (((0 . 0) (2 . -1) (4 . -1) (6 . -1)) . (rows ((raise . 1) "o") ((kern . -0.85) ((raise . 0.57) ((font-relative-size . -3) "/"))) "7")) ; slashed o
+        (((0 . 0) (2 . -1) (4 . -1) (6 . -1)) . (rows ((raise . 1) "o") (((kern . -0.85) (raise . 1.1) (font-relative-size . -2)) "/") "7")) ; slashed o
+
         (((0 . 0) (2 . 0) (4 . 1) (6 . -1)) . ("aug7"))
         (((0 . 0) (2 . 0) (4 . -1) (6 . 0)) . (rows "maj7" ((font-relative-size . -2) ((raise . 0.2) (music (named "accidentals--1")))) "5"))
         (((0 . 0) (2 . 0) (4 . -1) (6 . -1)) . (rows "7" ((font-relative-size . -2) ((raise . 0.2) (music (named "accidentals--1")))) "5"))
         (((0 . 0) (2 . 0) (4 . 1) (6 . -1)) . ("aug7"))
         (((0 . 0) (2 . 0) (4 . -1) (6 . 0)) . (rows "maj7" ((font-relative-size . -2) ((raise . 0.2) (music (named "accidentals--1")))) "5"))
         (((0 . 0) (2 . 0) (4 . -1) (6 . -1)) . (rows "7" ((font-relative-size . -2) ((raise . 0.2) (music (named "accidentals--1")))) "5"))
 
        ;; DONT use non-ascii characters, even if ``it works'' in Windows
        
 
        ;; DONT use non-ascii characters, even if ``it works'' in Windows
        
-       ;;(((0 . 0) (2 . -1) (4 . -1) (6 . -2)) . (((raise . 0.8)"o"))); works, but "o" is a little big
-       (((0 . 0) (2 . -1) (4 . -1) (6 . -2)) . ((raise . 0.8) (size . -2) ("o")))
+       ;;(((0 . 0) (2 . -1) (4 . -1) (6 . -2)) . ((raise . 0.8) (size . -2) ("o")))
+       (((0 . 0) (2 . -1) (4 . -1) (6 . -2)) . ("" (super "o")))
 
        ;; half diminshed chords
 
        ;; half diminshed chords
-       ; half diminished seventh chord = slashed o
-       (((0 . 0) (2 . -1) (4 . -1) (6 . -1)) . (((raise . 0.8)"/o")))
+       ;; half diminished seventh chord = slashed o
+       ;; (((0 . 0) (2 . -1) (4 . -1) (6 . -1)) . (((raise . 0.8) "/o")))
+        (((0 . 0) (2 . -1) (4 . -1) (6 . -1)) . (rows ((raise . 1) "o") (((kern . -0.85) (raise . 1.1) (font-relative-size . -2)) "/") "7")) ; slashed o
+
        ; half diminished seventh chord  with major 9 = slashed o cancelation 9
        (((0 . 0) (2 . -1) (4 . -1) (6 . -1) (1 . 0)) . (
                ((raise . 0.8)"/o(")
        ; half diminished seventh chord  with major 9 = slashed o cancelation 9
        (((0 . 0) (2 . -1) (4 . -1) (6 . -1) (1 . 0)) . (
                ((raise . 0.8)"/o(")
index 0ad01c0ff7d554d4fd353db2b6b92b3b64467243..ea932de96c5a7016f85a5b34b9b1bef14856cdc6 100644 (file)
                           tuplet-bracket-interface font-interface))
        ))
 
                           tuplet-bracket-interface font-interface))
        ))
 
-       (UnaChordaPedal . (
+       (UnaCordaPedal . (
                (molecule-callback . ,Text_item::brew_molecule)
                 (font-shape . italic)
                (no-spacing-rods . #t)
                (molecule-callback . ,Text_item::brew_molecule)
                 (font-shape . italic)
                (no-spacing-rods . #t)
                (Y-offset-callbacks .
                 (,Side_position_interface::aligned_side
                  ,Side_position_interface::centered_on_parent))
                (Y-offset-callbacks .
                 (,Side_position_interface::aligned_side
                  ,Side_position_interface::centered_on_parent))
-               (meta . ,(grob-description "UnaChordaPedal" text-interface font-interface))
+               (meta . ,(grob-description "UnaCordaPedal" text-interface font-interface))
        ))
 
        (VoltaBracket . (
        ))
 
        (VoltaBracket . (
index 0d8f588e561f1f38d003374d692728175609b7a7..c823dcb9f2a2d76d546028b32094260ebfe6da3c 100644 (file)
@@ -11,6 +11,7 @@
       (append 
       '(
        ("sf" . 1.00)
       (append 
       '(
        ("sf" . 1.00)
+       ("fffff" . 0.95)
        ("ffff" . 0.91)
        ("fff" . 0.81)
        ("ff" . 0.71)
        ("ffff" . 0.91)
        ("fff" . 0.81)
        ("ff" . 0.71)
@@ -20,6 +21,8 @@
        ("p" . 0.30)
        ("pp" . 0.20)
        ("ppp" . 0.10)
        ("p" . 0.30)
        ("pp" . 0.20)
        ("ppp" . 0.10)
+       ("pppp" . 0.08)
+       ("ppppp" . 0.05)
        )
       absolute-volume-alist))
 
        )
       absolute-volume-alist))
 
index bf10ef40e97bd4b1b9da417b0d370306c44586c8..ac11ab645fb8e50e501881d1969c4a1ab5558142 100644 (file)
@@ -463,8 +463,8 @@ to any Graphic objects that satisfies the predicate."
     (engraver-description
      "Piano_pedal_engraver"
      "Engrave piano pedal symbols."
     (engraver-description
      "Piano_pedal_engraver"
      "Engrave piano pedal symbols."
-     '(SostenutoPedal SustainPedal UnaChordaPedal)
-     '(pedalSostenutoStrings pedalSustainStrings pedalUnaChordaStrings
+     '(SostenutoPedal SustainPedal UnaCordaPedal)
+     '(pedalSostenutoStrings pedalSustainStrings pedalUnaCordaStrings
       )))
 
    (cons 
       )))
 
    (cons 
index cf2bd96fa50592920ef63dafe64332e991bb9261..4751d5ef7b1336614453efd321af002f8c003686 100644 (file)
@@ -228,7 +228,7 @@ measures later.
 (translator-property-description 'pedalSustainStrings list? "List of   string to print for sustain-pedal. Format is
  (UP UPDOWN DOWN), where each of the three is the string to print when
 this is done with the pedal.")
 (translator-property-description 'pedalSustainStrings list? "List of   string to print for sustain-pedal. Format is
  (UP UPDOWN DOWN), where each of the three is the string to print when
 this is done with the pedal.")
-(translator-property-description 'pedalUnaChordaStrings string? "see pedalSustainStrings.")
+(translator-property-description 'pedalUnaCordaStrings string? "see pedalSustainStrings.")
 (translator-property-description 'pedalSostenutoStrings string? "see pedalSustainStrings.")
 
 (translator-property-description 'phrasingPunctuation string? "")
 (translator-property-description 'pedalSostenutoStrings string? "see pedalSustainStrings.")
 
 (translator-property-description 'phrasingPunctuation string? "")
index c27f2f19d33ab43010e1f0554fabb094c1a02b2d..e24b537299a9908d3d7751726ba92cde65cc9b70 100644 (file)
@@ -773,6 +773,13 @@ if 1:
        
        conversions.append (((1,3,141), conv, 'xNoDots -> xSolid'))
 
        
        conversions.append (((1,3,141), conv, 'xNoDots -> xSolid'))
 
+if 1:
+       def conv (str):
+               str = re.sub ('([Cc])horda', '\\1orda', str)
+               return str
+       
+       conversions.append (((1,3,144), conv, 'Chorda -> Corda'))
+
 
 ############################
        
 
 ############################
        
index 8d81d27fc8e3a5cf91d34694ffba233a5ec23fb3..ccd80c83788033add40fbfc5bb43dcae45321714 100644 (file)
@@ -16,12 +16,19 @@ TODO:
         endfooter=\tagline  -> 'lily was here <version>'
      }
 
         endfooter=\tagline  -> 'lily was here <version>'
      }
 
+     lilytagline (->lily was here), usertagline, copyright etc.
+
   * head/header tagline/endfooter
 
   * head/header tagline/endfooter
 
+  * check/set TEXINPUTS: see to it that/warn if not/
+    kpathsea can find titledefs.tex?
+    
   * dvi from lilypond .tex output?  This is hairy, because we create dvi
     from lilypond .tex *and* header output.
 
   * dvi from lilypond .tex output?  This is hairy, because we create dvi
     from lilypond .tex *and* header output.
 
-  * windows compatibility: rm -rf, cp file... dir
+  * multiple \score blocks?
+  
+  * windows-sans-cygwin compatibility?  rm -rf, cp file... dir
   
 '''
 
   
 '''
 
@@ -37,10 +44,14 @@ import operator
 import tempfile
 
 sys.path.append ('@datadir@/python')
 import tempfile
 
 sys.path.append ('@datadir@/python')
-import gettext
-gettext.bindtextdomain ('lilypond', '@localedir@')
-gettext.textdomain('lilypond')
-_ = gettext.gettext
+try:
+       import gettext
+       gettext.bindtextdomain ('lilypond', '@localedir@')
+       gettext.textdomain('lilypond')
+       _ = gettext.gettext
+except:
+       def _ (s):
+               return s
 
 
 layout_fields = ['title', 'subtitle', 'subsubtitle', 'footer', 'head',
 
 
 layout_fields = ['title', 'subtitle', 'subsubtitle', 'footer', 'head',
@@ -222,7 +233,7 @@ def system (cmd, ignore_error = 0):
 def cleanup_temp ():
        if not keep_temp_dir_p:
                if verbose_p:
 def cleanup_temp ():
        if not keep_temp_dir_p:
                if verbose_p:
-                       progress (_ ('Cleaning up `%s\'') % temp_dir)
+                       progress (_ ("Cleaning %s...") % temp_dir)
                system ('rm -rf %s' % temp_dir)
 
 
                system ('rm -rf %s' % temp_dir)
 
 
@@ -388,9 +399,10 @@ def global_latex_definition (tfiles, extra):
                orientation = extra['orientation'][0]
 
        # set sane geometry width (a4-width) for linewidth = -1.
                orientation = extra['orientation'][0]
 
        # set sane geometry width (a4-width) for linewidth = -1.
-       linewidth = extra['linewidth'][0]
-       if linewidth < 0:
+       if not extra['linewidth'] or extra['linewidth'][0] < 0:
                linewidth = 597
                linewidth = 597
+       else:
+               linewidth = extra['linewidth'][0]
        s = s + '\geometry{width=%spt%s,headheight=2mm,headsep=0pt,footskip=2mm,%s}\n' % (linewidth, textheight, orientation)
 
        s = s + r'''
        s = s + '\geometry{width=%spt%s,headheight=2mm,headsep=0pt,footskip=2mm,%s}\n' % (linewidth, textheight, orientation)
 
        s = s + r'''
@@ -419,7 +431,7 @@ def global_latex_definition (tfiles, extra):
 
        s = s + r'''
 \makeatletter
 
        s = s + r'''
 \makeatletter
-\renewcommand{\@oddfoot}{\parbox{\textwidth}{\mbox{}\lilypondtagline}}%
+\renewcommand{\@oddfoot}{\parbox{\textwidth}{\mbox{}\makelilypondtagline}}%
 \makeatother
 '''
        s = s + '\\end{document}'
 \makeatother
 '''
        s = s + '\\end{document}'
@@ -556,11 +568,22 @@ if files:
                type = 'DVI'
 
        dest = os.path.join (outdir, dest)
                type = 'DVI'
 
        dest = os.path.join (outdir, dest)
+       midi = base + '.midi'
+       midi = os.path.join (outdir, midi)
+       
        if outdir != '.':
                system ('mkdir -p %s' % outdir)
        if outdir != '.':
                system ('mkdir -p %s' % outdir)
-       system ('cp \"%s\" \"%s\"' % (srcname, dest ))
-       if re.match ('[.]midi', string.join (os.listdir ('.'))):
-               system ('cp *.midi %s' % outdir, ignore_error = 1)
+               
+       #if re.match ('.*[.]dvi', string.join (os.listdir ('.'))):
+       if os.path.isfile (srcname):
+               # huh, and what bout all other (-1, -2) scores?
+               system ('cp \"%s\" \"%s\"' % (srcname, dest))
+       else:
+               dest = 0
+       if re.match ('.*[.]midi', string.join (os.listdir ('.'))):
+               system ('cp *.midi %s' % outdir)
+       else:
+               midi = 0
 
        depfile = os.path.join (outdir, base + '.dep')
 
 
        depfile = os.path.join (outdir, base + '.dep')
 
@@ -571,8 +594,13 @@ if files:
        cleanup_temp ()
 
        # most insteresting info last
        cleanup_temp ()
 
        # most insteresting info last
-       progress (_ ("dependencies output to %s...") % depfile)
-       progress (_ ("%s output to %s...") % (type, dest))
+       # don't say silly things
+       if os.path.isfile (depfile):
+               progress (_ ("dependencies output to %s...") % depfile)
+       if dest and os.path.isfile (dest):
+               progress (_ ("%s output to %s...") % (type, dest))
+       if midi and os.path.isfile (midi):
+               progress (_ ("%s output to %s...") % ('MIDI', midi))
 
 
 
 
 
 
index b758cccb28628e441b0051245fb9fc176e1fb8e2..4248459bb85634952f9c0c9dabef68660ef14469 100644 (file)
@@ -9,8 +9,7 @@
 
 '''
 TODO:
 
 '''
 TODO:
-    * more flexible build paths
-    * cleanup previous tree
+    * more flexible build/ftp/patches/releases paths
     * flexible build command
     * show only?
 '''
     * flexible build command
     * show only?
 '''
@@ -26,6 +25,14 @@ import __main__
 import operator
 import tempfile
 
 import operator
 import tempfile
 
+try:
+       import gettext
+       gettext.bindtextdomain ('lilypond', '@localedir@')
+       gettext.textdomain('lilypond')
+       _ = gettext.gettext
+except:
+       def _ (s):
+               return s
 
 sys.path.append ('@datadir@/python')
 import gettext
 
 sys.path.append ('@datadir@/python')
 import gettext
@@ -38,7 +45,8 @@ program_name = 'build-lily'
 package_name = 'lilypond'
 help_summary = _("Fetch and rebuild from latest source package")
 build_root = os.environ ['HOME'] + '/usr/src'
 package_name = 'lilypond'
 help_summary = _("Fetch and rebuild from latest source package")
 build_root = os.environ ['HOME'] + '/usr/src'
-build_command = './configure; make web'
+build_command = '(./configure --prefix=$HOME/usr && make all web) >> log.txt 2>&1'
+
 release_dir = build_root + '/releases'
 patch_dir = build_root + '/patches'
 
 release_dir = build_root + '/releases'
 patch_dir = build_root + '/patches'
 
@@ -46,6 +54,8 @@ url = 'file:/home/ftp/pub/gnu/LilyPond/development/lilypond-*.tar.gz'
 url = 'ftp://appel.lilypond.org/pub/gnu/LilyPond/development/lilypond-*.tar.gz'
 url = 'ftp://ftp.cs.uu.nl/pub/GNU/LilyPond/development/lilypond-*.tar.gz'
 
 url = 'ftp://appel.lilypond.org/pub/gnu/LilyPond/development/lilypond-*.tar.gz'
 url = 'ftp://ftp.cs.uu.nl/pub/GNU/LilyPond/development/lilypond-*.tar.gz'
 
+remove_previous_p = 0
+
 
 # lily_py.py -- options and stuff
 # 
 
 # lily_py.py -- options and stuff
 # 
@@ -189,7 +199,7 @@ def system (cmd, ignore_error = 0):
 def cleanup_temp ():
        if not keep_temp_dir_p:
                if verbose_p:
 def cleanup_temp ():
        if not keep_temp_dir_p:
                if verbose_p:
-                       progress (_ ('Cleaning up `%s\'') % temp_dir)
+                       progress (_ ("Cleaning %s...") % temp_dir)
                system ('rm -rf %s' % temp_dir)
 
 
                system ('rm -rf %s' % temp_dir)
 
 
@@ -328,6 +338,8 @@ def find_latest (url):
 def build (p):
        os.chdir (build_root)
        system ('tar xzf %s/%s.tar.gz' % (release_dir, p))
 def build (p):
        os.chdir (build_root)
        system ('tar xzf %s/%s.tar.gz' % (release_dir, p))
+       system ('rm -f building')
+        os.symlink ('%s/%s' % (build_root, p), 'building')
        os.chdir (p)
        return system (build_command)
 
        os.chdir (p)
        return system (build_command)
 
@@ -348,6 +360,8 @@ for opt in options:
                help ()
        elif o == '--buid-root' or o == '-b':
                build_root = a
                help ()
        elif o == '--buid-root' or o == '-b':
                build_root = a
+       elif o == '--remove-previous' or o == '-r':
+               remove_previous_p = 1
        elif o == '--url' or o == '-u':
                url = a
        elif o == '--verbose' or o == '-V':
        elif o == '--url' or o == '-u':
                url = a
        elif o == '--verbose' or o == '-V':
@@ -362,7 +376,8 @@ for opt in options:
 if 1:
        latest = find_latest (url)
 
 if 1:
        latest = find_latest (url)
 
-       if os.path.isdir ('%s/%s' % (build_root, latest)):
+       #if os.path.isdir ('%s/%s' % (build_root, latest)):
+       if os.path.isdir ('%s/%s/%s' % (build_root, latest, 'lily/out/lilypond')):
                progress (_ ("latest is %s") % latest)
                progress (_ ("relax, %s is up to date" % package_name))
                sys.exit (0)
                progress (_ ("latest is %s") % latest)
                progress (_ ("relax, %s is up to date" % package_name))
                sys.exit (0)
@@ -387,15 +402,15 @@ if 1:
                progress (_ ("fetching %s...") % get)
                copy_url (get, '.')
 
                progress (_ ("fetching %s...") % get)
                copy_url (get, '.')
 
-       build_command = './configure --prefix=$HOME/usr && make web'
        if not build (latest):
                if os.path.isdir ('%s/%s' % (build_root, package_name)):
                        os.chdir ('%s/%s' % (build_root, package_name))
                        previous = os.getcwd ()
                        os.chdir (build_root)
        if not build (latest):
                if os.path.isdir ('%s/%s' % (build_root, package_name)):
                        os.chdir ('%s/%s' % (build_root, package_name))
                        previous = os.getcwd ()
                        os.chdir (build_root)
-                       system ('rm -f %s' % package_name)
-                       system ('echo rm -rf %s/%s' % (build_root, previous))
+                       if remove_previous_p:
+                               system ('echo rm -rf %s/%s' % (build_root, previous))
                        
                        
+               system ('rm -f %s' % package_name)
                os.symlink ('%s/%s' % (build_root, latest),  package_name)
                
        os.chdir (original_dir)
                os.symlink ('%s/%s' % (build_root, latest),  package_name)
                
        os.chdir (original_dir)
index fa8f5966e226e1885d608ed14a30d1a5511ae87c..698d26b7e6a4fe211c12135eeababb79b14f41b8 100644 (file)
@@ -61,5 +61,9 @@
   \ifx\lilypondfooter\undefined\else%
     \parbox{\textwidth}{\mbox{}\lilypondfooter}\fi
 }
   \ifx\lilypondfooter\undefined\else%
     \parbox{\textwidth}{\mbox{}\lilypondfooter}\fi
 }
+\def\makelilypondtagline
+{
+  \ifx\lilypondtagline\undefined\else\lilypondtagline\fi
+}
 \endinput
 
 \endinput