]> git.donarmstrong.com Git - lilypond.git/commitdiff
lilypond-1.3.150
authorfred <fred>
Wed, 27 Mar 2002 01:03:03 +0000 (01:03 +0000)
committerfred <fred>
Wed, 27 Mar 2002 01:03:03 +0000 (01:03 +0000)
48 files changed:
Documentation/doc-roadmap.texi [new file with mode: 0644]
Documentation/header.html.in
Documentation/index.texi
Documentation/topdocs/INSTALL.texi
Documentation/topdocs/index.tely
Documentation/user/literature.itely
Documentation/user/refman.itely
Documentation/user/tutorial.itely
Documentation/windows/compiling.texi [new file with mode: 0644]
Documentation/windows/installing.texi [new file with mode: 0644]
VERSION
input/bugs/grace-clef.ly [new file with mode: 0644]
input/bugs/l.ly [new file with mode: 0644]
input/bugs/markup.ly [new file with mode: 0644]
input/test/Cc-chords.ly
input/test/barline-lyric-only.ly [new file with mode: 0644]
input/test/equaliser.ly
input/test/fake-grace.ly
input/test/hara-kiri-switch.ly
input/test/improv.ly
input/test/lyrics.ly
input/test/note-shift.ly
input/test/slur-dash.ly
input/test/transposing.ly
input/test/volta-start.ly
input/test/volta.ly
input/tutorial/minuet.ly [new file with mode: 0644]
lily/bar.cc
lily/clef-engraver.cc
lily/include/lilypond-input-version.hh
lily/include/main.hh
lily/include/timing-translator.hh
lily/instrument-name-engraver.cc
lily/kpath.cc
lily/lexer.ll
lily/lilypond-version.cc
lily/system-start-delimiter.cc
lily/time-signature-performer.cc
lily/timing-translator.cc
ly/engraver.ly
ps/music-drawing-routines.ps [new file with mode: 0644]
scm/grob-description.scm
scm/grob-property-description.scm
scm/interface-description.scm
scm/ps.scm
scm/tex.scm
scm/translator-property-description.scm
scripts/convert-ly.py

diff --git a/Documentation/doc-roadmap.texi b/Documentation/doc-roadmap.texi
new file mode 100644 (file)
index 0000000..8b13789
--- /dev/null
@@ -0,0 +1 @@
+
index 05a32d05aebb7911421912692308c8b8736871aa..47d8a1386f632c7e8974b89d5c501d90ab1033f3 100644 (file)
@@ -37,11 +37,11 @@ which substitutes some @AT_VARIABLES@ as well.
     <table align=left>
       <tr><td bgcolor="#e8e8ff"><a href="@INDEX@"><b>Home</b></a></td></tr>
       <tr><td><font size=-1>
-        <a href="http://www.cs.uu.nl/~hanwen/lilypond">Development</a><br>
-        <a href="http://appel.lilypond.org/wiki?LilyPond">WikiWikiWeb</a><br>
+        <a href="http://www.lilypond.org/">LilyPond website</a><br>
+        <a href="http://www.lilypond.org/wiki">WikiWikiWeb</a><br>
         <a href="http://www.gnu.org">GNU Project</a><br>
         <a href="http://www2.iro.umontreal.ca/~pinard/po/registry.cgi?domain=lilypond">Translations</a><br>
-        <a href="http://www.lilypond.org">LilyPond dot org</a><br>
+        <a href="http://www.cs.uu.nl/~hanwen/lilypond/">Han-Wen's site</a><br>
        <br>
       </td></tr>
       <tr><td bgcolor="#e8e8ff">
@@ -49,32 +49,18 @@ which substitutes some @AT_VARIABLES@ as well.
       </td></tr>
       <tr><td><font size=-1>
        <a href="@TOP@Documentation/out-www/CHANGES.html">Change Log</a><br>
-       <a href="@TOP@Documentation/topdocs/out-www/FAQ.html">Small FAQ</a><br>
-       <a href="http://appel.lilypond.org/wiki?LilyPondFaqs">Full FAQ</a><br>
+       <a href="http://appel.lilypond.org/wiki?LilyPondFaqs">FAQ</a><br>
        <a href="@TOP@Documentation/user/out-www/lilypond/lilypond.html">User manual</a><br>
        <a href="@TOP@Documentation/out-www/regression-test.html">Regression Test</a><br>
        <a href="@TOP@Documentation/user/out-www/lilypond-internals/lilypond-internals.html">Documentation of internals</a><br>
 <br>
       </td></tr>
       <tr><td bgcolor="#e8e8ff">
-       <a href="@INDEX@#download-source"><b>Download Source</b></a>
+       <b>Download </b>
       </td></tr>
       <tr><td><font size=-1>
-        <a href="ftp://ftp.gnu.org/pub/gnu/lilypond">Stable</a><br>
-        <a href="ftp://ftp.cs.uu.nl/pub/GNU/LilyPond/development">Development</a><br>
-       <br>
-      </td></tr>
-      <tr><td bgcolor="#e8e8ff">
-       <a href="@INDEX@#download-binary"><b>Download Binary</b></a>
-      </td></tr>
-      <tr><td><font size=-1>
-       <a href="ftp://ftp.cs.uu.nl/pub/GNU/LilyPond/RedHat/RPMS/">RedHat i386</a><br>
-       <a href="ftp://appel.lilypond.org/pub/gnu/LilyPond/linuxppc-2000-Q4">LinuxPPC</a><br>
-       <a href="ftp://ftp.debian.org/debian/pool/main/l/lilypond">Debian Stable</a><br>
-       <a href="ftp://ftp.debian.org/debian/pool/main/l/lilypond1.3">Debian Unstable</a><br>
-       <a href="http://home.austin.rr.com/jbr/jeff/lilypond/">Windows Stable</a><br>
-       <a href="http://appel.lilypond.org/lilypond/gnu-windows">Windows Unstable</a><br>
-       <br>
+<a href="@TOP@Documentation/topdocs/out-www/INSTALL.html#download-source">Source</a><br>
+       <a href="@TOP@Documentation/topdocs/out-www/INSTALL.html#download-binaries">Binary</a>  <br>
       </td></tr>
       <tr><td bgcolor="#e8e8ff">
        <a href="@INDEX@#music"><b>Music</b></a>
index ae488127bed5e07b52daeaf5365693cfc01ba629..90066f462ac013fc1452edb519e99b50974db814 100644 (file)
@@ -6,75 +6,73 @@
 @top
 
 
-@unnumberedsubsec General information
+@unnumberedsubsec Documentation for everyone
 
 @itemize @bullet 
-@item @uref{DEDICATION.html,Dedication}
-@item @uref{../topdocs/out-www/AUTHORS.html, Authors}
-@item @uref{../topdocs/out-www/README.html, Readme file}
-@item @uref{../topdocs/out-www/INSTALL.html, Installation instructions}
-@item @uref{../topdocs/out-www/WINDOWS.html, LilyPond for Windows}
-@item @uref{CHANGES.html, Things recently done}
-@item @uref{../topdocs/out-www/FAQ.html,Very Frequently Asked Questions}, with answers
-@item @uref{http://appel.lilypond.org/wiki?LilyPondFaqs,Full Frequently asked questions}, with answers
+@item @uref{DEDICATION.html,Dedication}  Lily is  dedicated to our friends.
+@item @uref{http://www.gnu.org/copyleft/gpl.html,GPL} it is released under
+  the GNU GPL.
 @end itemize
 
-@unnumberedsubsec Manuals
-
+@unnumberedsubsec Information for new users
 @itemize @bullet
-@item @uref{../user/out-www/lilypond/lilypond.html,LilyPond full documentation}
-@item @uref{../user/out-www/lilypond/Tutorial.html#Tutorial,LilyPond Tutorial}
-@item @uref{../user/out-www/lilypond/Reference-Manual.html#Reference Manual,LilyPond Reference manual}
-also available in @uref{../user/out-www/lilypond.ps.gz,PostScript}
-@item @uref{../user/out-www/lilypond/Tricks.html#Tricks, LilyPond
-features and tricks}
-@item @uref{../user/out-www/lilypond/Index.html#Index,LilyPond
-documentation master index}
-@item
-@uref{../user/out-www/lilypond-internals/lilypond-internals.html,Autogenerated
-documentation of internals}
-@item @uref{../user/out-www/glossary.html,A glossary of musical
-terms}, includes translations.  Also available in @uref{../user/out-www/glossary.ps.gz,Postscript})
-@item @uref{../user/out-www/lilypond-book.html,lilypond-book}, a tool for
-integrating text and music in LaTeX and texinfo; also available in
-@uref{../user/out-www/lilypond-book.ps.gz,Postscript}
-@item @uref{../user/out-www/lilypond/ly2dvi.html#ly2dvi,ly2dvi}  does page layout for
-LilyPond printout.
-@item @uref{../user/out-www/lilypond/midi2ly.html#midi2ly,midi2ly} 
-converts MIDI files to LilyPond input
-@item @uref{regression-test.html, LilyPond test document}
-Also available in @uref{regression-test.ps.gz,Postscript}
+@item @uref{../../index.html,index} What is Lilypond?
+@item @uref{../topdocs/out-www/README.html, README} general information
+@item @uref{../topdocs/out-www/INSTALL.html, INSTALL}
+  How install on Unix.
+@item @uref{../windows/out-www/installing.html, WINDOWS}
+How to install on Windows.
+@item @uref{http://appel.lilypond.org/wiki?LilyPondFaqs,FAQ} Frequently
+asked questions, with answers.
+@item @uref{http://appel.lilypond.org/wiki?MailingLists,MailingLists} Subscribe to
+the mailing lists
+@item @uref{../out-www/lilypond/Tutorial.html,Tutorial} Learn how to use LilyPond.
 @end itemize
 
+@unnumberedsubsec Information for other users
 
-@unnumberedsubsec Logo
 @itemize @bullet
-@item @uref{../pictures/out-www/lelieblond.png,  logo} in large size
-@item @uref{../pictures/out-www/lelie-logo.png, logo} in medium size
-@item @uref{../pictures/out-www/lelie-icon.png, logo} in small size
+@item @uref{CHANGES.html, CHANGES} things recently done
+
+@c download sites?
+
+@c NEWS
+
+@c archives?
+
+@item @uref{../user/out-www/lilypond-internals/lilypond-internals.html,lilypond-internals}
+Documentation of internals, generated from the sources.
+
+@item @uref{../user/out-www/lilypond/lilypond.html,lilypond}
+  The user manual, (in @uref{../user/out-www/lilypond.ps.gz,PostScript})
+@item @uref{../user/out-www/glossary.html,glossary} A glossary of musical
+terms, including translations.  (in
+@uref{../user/out-www/glossary.ps.gz,Postscript})
 @end itemize
 
-@unnumberedsubsec Literature
+@unnumberedsubsec Information for developers
 
 @itemize @bullet
-@item @uref{../bibliography/out-www/colorado.html,University of
-Colorado Engraving music bibliography}. Books refered from the
-@uref{http://www.cc.colorado.edu/Dept/MU/Musicpress/,Big Site of Music
-Notation and Engraving} at University  of Colorado.
-@item References on
-@uref{../bibliography/out-www/engraving.html,engraving and music
-notation}.
-@item Papers on
-@uref{../bibliography/out-www/computer-notation.html,music notation
-by computer}.
+@item @uref{../out-www/regression-test.html,regression-test} A glossary
+of musical terms, including translations.  (in
+@uref{../out-www/regression-test.ps.gz,Postscript})
 @end itemize
 
 
-@unnumberedsubsec Background information
+@unnumberedsubsec Logo
+@itemize @bullet
+@item @uref{../pictures/out-www/lelieblond.png, logo} in large size
+@item @uref{../pictures/out-www/lelie-logo.png, logo} in medium size
+@item @uref{../pictures/out-www/lelie-icon.png, logo} in small size
+@end itemize
 
 
+@unnumberedsubsec Background information
 
 @itemize @bullet
+@item @uref{../topdocs/out-www/AUTHORS.html, Authors} documents who did
+what on LilyPond.
+
 @item @uref{../misc/out-www/CHANGES-0.0.html, Change logs from 0.0 till 0.1 }
 @item @uref{../misc/out-www/CHANGES-0.1.html, Change logs from 0.1 till 1.0 }
 @item @uref{../misc/out-www/CHANGES-1.0.html, Change logs from 1.0 till 1.1 }
@@ -92,6 +90,20 @@ changes)}
 @item @uref{../windows/out-www/lily-wins.html, Lily Wins}
 @end itemize
 
+@unnumberedsubsec Literature
+
+@itemize @bullet
+@item @uref{../bibliography/out-www/colorado.html,University of
+Colorado Engraving music bibliography}. Books refered from the
+@uref{http://www.cc.colorado.edu/Dept/MU/Musicpress/,Big Site of Music
+Notation and Engraving} at University of Colorado.
+@item References on
+@uref{../bibliography/out-www/engraving.html,engraving and music
+notation}.
+@item Papers on
+@uref{../bibliography/out-www/computer-notation.html,music notation
+by computer}.
+@end itemize
 
 
 @bye
index feaecbf0a30fb2277c0f41dec1e541e5c33eda05..80cb4abb8aacb39873793d5d82d2c35e5ae8e38b 100644 (file)
@@ -7,30 +7,67 @@
 
 @chapter INSTALL - compiling and installing GNU LilyPond
 
-@section Obtaining
+@section Downloading source code
 
-You can get the latest version of LilyPond at
-@uref{ftp://ftp.cs.uu.nl/pub/GNU/LilyPond/,
-ftp://ftp.cs.uu.nl/pub/GNU/LilyPond/}.
+@html
+<a name="download-source">
+@end html
 
-There are three options for downloading sources.
+If you want to compile LilyPond from source, download here:
+@itemize @bullet
+@item Download stable releases at
+@uref{ftp://ftp.gnu.org/gnu/lilypond/,GNU}
+@item Download development releases from
+@uref{ftp://ftp.cs.uu.nl/pub/GNU/LilyPond/development/, by FTP} and
+@uref{http://ftp.cs.uu.nl/pub/GNU/LilyPond/development/, by HTTP}.
+@item @uref{ftp://sca.uwaterloo.ca/pub/, ftp (Canadian mirror)} 
+@item at @code{lilypond.org} by
+@uref{ftp://ftp.lilypond.org/pub/LilyPond/, FTP} and
+@uref{http://www.lilypond.org/ftp/, HTTP}.
+@end itemize
+
+Installing and compiling requires many additional packages, which are
+listed in the @uref{Documentation/topdocs/out-www/INSTALL.html,
+installation instructions}.
 
-@itemize
-@item if you don't have any version, then you can  download
- the entire @file{.tar.gz} file.
 
-@item if you have an unpacked source   tree of a previous version, you
-may use the diffs .
+@section Downloading binaries
+
+@html
+<a name="download-binary">
+@end html
+Binaries are available, but are not updated for every version released.
+@itemize @bullet
+@item @uref{ftp://ftp.cs.uu.nl/pub/GNU/LilyPond/RedHat/RPMS/, RedHat i386}
+@item @uref{ftp://ftp.cs.uu.nl/pub/GNU/LilyPond/linuxppc, LinuxPPC}
+@item
+@uref{ftp://ftp.debian.org/debian/pool/main/l/lilypond,
+Debian GNU/Linux Stable} 
+@item
+@uref{ftp://ftp.debian.org/debian/pool/main/l/lilypond1.3,
+Debian GNU/Linux Unstable} 
+@item @uref{http://home.austin.rr.com/jbr/jeff/lilypond/, Windows Stable}
+@item @uref{ftp://ftp.lilypond.org/pub/lilypond/gnu-windows, Windows
+Testing}
+@end itemize
 
 
+
+@section Upgrading
+
+There are two  options for upgrading sources.
+
+@itemize
+@item if you have an unpacked source tree of a previous version, you
+may the patches.
+
 @emph{If you upgrade by patching do remember to rerun autoconf after
 applying the patch}.
 
-
 @item if you have the @code{.tar.gz} file of a previous release, you can
 use
 @uref{ftp://ftp.xcf.berkeley.edu/pub/xdelta/, xdelta}.
- This is much safer than using normal diffs, and is the recommended way.
+ This is much safer than using patches, and is the recommended way.
 
 The following command produces @file{lilypond-1.3.122.tar.gz} from
 @file{lilypond-1.3.121} identical (up to compression dates) to the .122
@@ -45,7 +82,7 @@ on the FTP site.
 This document describes how to build LilyPond on Unix platforms.  It is
 also known to run and compile on Windows NT/95/98 as well.  More
 information on this topic can be found at the
-@uref{http://appel.lilypond.org/lilypond/gnu-windows/, LilyPond on Windows
+@uref{ftp://ftp.lilypond.org/pub/LilyPond/gnu-windows/, LilyPond on Windows
 page}.
 
 You need the following packages to compile Lilypond.
index 93084b449609af7c95f97fad390f611ee7e59c05..064f4a742a9ca1e88be5c81e7759c948abab9b57 100644 (file)
@@ -49,9 +49,9 @@ The version numbers are in Linux-kernel style: even numbered versions
 are `stable'. The webpages for the stable version (1.2) reside
 @uref{http://www.gnu.org/software/lilypond, on the GNU servers}. Big
 enhancements go into the latest odd numbered version (1.3), whose
-webpages are on @uref{http://www.cs.uu.nl/~hanwen/lilypond/,Han-Wen's
-site}.  Information on the latest and greatest features can be found in
-the @uref{Documentation/out-www/CHANGES.html, Change Log}.
+webpages are on @uref{http://www.lilypond.org/,the lilypond site}.
+Information on the latest and greatest features can be found in the
+@uref{Documentation/out-www/CHANGES.html, Change Log}.
 
 If want more information, you can browse the
 @uref{Documentation/user/out-www/lilypond.html, manual} or other
@@ -70,44 +70,6 @@ examples include sound bites  in MIDI, pictures in PNG, printable scores
 in PostScript, and LilyPond input. Others use LilyPond too, and have put
 scores on the web. Head over to @uref{http://appel.lilypond.org/wiki?DownloadLilyPondScores}
 
-@html
-<a name="download-source">
-@end html
-@unnumberedsec Download
-
-If you want to compile LilyPond from source, download here:
-@itemize @bullet
-@item Download stable releases at
-@uref{ftp://ftp.gnu.org/gnu/lilypond/,GNU}
-@item Download development releases from
-@uref{ftp://ftp.cs.uu.nl/pub/GNU/LilyPond/development/, by FTP} and
-@uref{http://ftp.cs.uu.nl/pub/GNU/LilyPond/development/, by HTTP}.
-@item @uref{ftp://sca.uwaterloo.ca/pub/, ftp (Canadian mirror)} 
-@item @uref{ftp://ftp.lilypond.org/pub/LilyPond/, mirror (Europe)}
-@end itemize
-
-Installing and compiling requires many additional packages, which are
-listed in the @uref{Documentation/topdocs/out-www/INSTALL.html,
-installation instructions}.
-
-@html
-<a name="download-binary">
-@end html
-Binaries are available, but are not updated for every version released.
-@itemize @bullet
-@item @uref{ftp://ftp.cs.uu.nl/pub/GNU/LilyPond/RedHat/RPMS/, RedHat i386}
-@item @uref{ftp://ftp.cs.uu.nl/pub/GNU/LilyPond/RedHat/RPMS/ppc, LinuxPPC}
-@item
-@uref{ftp://ftp.debian.org/debian/pool/main/l/lilypond,
-Debian GNU/Linux Stable} 
-@item
-@uref{ftp://ftp.debian.org/debian/pool/main/l/lilypond1.3,
-Debian GNU/Linux Unstable} 
-@item @uref{http://home.austin.rr.com/jbr/jeff/lilypond/, Windows Stable}
-@item @uref{http://appel.lilypond.org/lilypond/gnu-windows, Windows
-Testing}
-@end itemize
-
 
 @html
 <a name="mailing-lists">
index e7b18c5e3aef13096e122e517f81529f58a62a4e..6b33242eea601da92003c4ec39ec5963b32a93ee 100644 (file)
@@ -1,7 +1,9 @@
 @node Literature
 @chapter Literature
 
-If you need to know more about music notation, here are some interesting titles to read
+If you need to know more about music notation, here are some interesting
+titles to read. The source archive includes a more elaborate
+bibliography of over 100 entries in @file{Documentation/bibliography/}.
 
 @table @cite
 @item Banter 1987
index fd99c884851606b0636fd35a350f18b4a5ecff29..45bf0efd7b860a3abb6a31c43013c9d6290133bc 100644 (file)
@@ -21,7 +21,9 @@
 @chapter Reference Manual
 
 This document describes GNU LilyPond and its input format. The last
-revision of this document was made for LilyPond 1.3.145.
+revision of this document was made for LilyPond 1.3.145.  It supposes a
+passing familiarity with how LilyPond input works. New users are
+encouraged to study the tutorial first.
 
 
 @menu
@@ -608,19 +610,23 @@ Editio XXX.''
 
 The time signature is changed by the @code{\time} command. Syntax:
 @example
-  \time @var{numerator}@code{/}@var{denominator
+  \time @var{n}@code{/}@var{d
 @end example
 Internally, this is a shortcut for doing
 @example
-     \property Score.timeSignatureFraction = #'(@var{numerator} . @var{denominator})
+\property Score.timeSignatureFraction = #'(@var{n} . @var{d})
+\property Score.beatLength = #(make-moment 1 @var{d})
+\property Score.measureLength = #(make-moment @var{n} @var{d})
 @end example
 
-The property @code{timeSignatureFraction} is used to determine where bar
-lines should be inserted, and how automatic beams should be generated.
+These properties @code{timeSignatureFraction} determine where bar lines
+should be inserted, and how automatic beams should be
+generated.
 
-The grob is @code{TimeSignature}.  There are many options for the layout
-of this grob. They are selected through the @code{style} grob
-property. See @file{input/test/time.ly} for examples.
+Changing the value of @code{timeSignatureFraction} also causes a
+fraction to be printed. This grob is @code{TimeSignature}.  There are
+many options for the layout of this grob. They are selected through the
+@code{style} grob property. See @file{input/test/time.ly} for examples.
 
 @c .   {Partial}
 @subsection Partial
@@ -1309,6 +1315,8 @@ syntactically valid, but makes no sense and may cause runtime errors.
 Ending a staff or score with grace notes may also generate a run-time
 error, since there will be no main note to attach the grace notes to.
 
+Combining grace notes and clef changes will prints note heads on
+erroneous vertical positions.
 
 The present implementation of grace notes is not robust and generally
 kludgey. We expect it to change after LilyPond 1.4. Syntax changes might
@@ -1730,18 +1738,21 @@ Voices can be switched between staffs manually, using the following command:
 @example
   \translator Staff = @var{staffname} @var{music}
 @end example
-The string @var{staffname} is the name of the staff. Typically it is
-@code{"up"} or @code{"down"}. 
-
-Formally, this construct is a music expression indicating that the
-context which is a direct child of the context of type
-@var{contexttype} should be shifted to a context of type
-@var{contexttype} and the specified name.
+The string @var{staffname} is the name of the staff. It switches the
+current voice from its current staff to the Staff called
+@var{staffname}. Typically @var{staffname} is @code{"up"} or
+@code{"down"}.
 
+The formal definition of this construct is obtuse, but for the sake of
+completeness we give it here.
 @cindex @code{\translator}
 @example
   \translator @var{contexttype} = @var{name}
 @end example
+Formally, this construct is a music expression indicating
+that the context which is a direct child of the context of type
+@var{contexttype} should be shifted to a context of type
+@var{contexttype} and the specified name.
 
 
 @c .   {Pedals}
index 5772357a910cbaaa3e01158e31d55f102d4725a7..7883872722a465c9dbc54fd2c327a46b0fcebe71 100644 (file)
@@ -232,8 +232,8 @@ gsview32 /s test.ps
 
 To demonstrate what LilyPond input looks like, we start off with a
 full-fledged, yet simple example. It is a convoluted version
-of the famous menuet in J. S. Bach's @emph{Klavierb@"uchlein}. The file
-is included in the distribution as  @file{menuet.ly}.
+of the famous minuet in J. S. Bach's @emph{Klavierb@"uchlein}. The file
+is included in the distribution as  @file{minuet.ly}.
 @cindex Bach, Johann Sebastian 
 
 @lilypond[verbatim]
@@ -2202,10 +2202,10 @@ project}.
 mkdir my-project
 cd my-project
 cp /usr/share/lilypond/make/ly.make GNUmakefile
-cp /usr/share/doc/lilypond/examples/input/tutorial/menuet.ly .
-make menuet
+cp /usr/share/doc/lilypond/examples/input/tutorial/minuet.ly .
+make minuet
 [..]
-Generated out/menuet.ps for target menuet.
+Generated out/minuet.ps for target minuet.
 @end example
 
 Type @samp{make help} to see possible targets.
diff --git a/Documentation/windows/compiling.texi b/Documentation/windows/compiling.texi
new file mode 100644 (file)
index 0000000..dbf0dba
--- /dev/null
@@ -0,0 +1,25 @@
+@section Obtaining LilyPond
+
+You can get the latest version of LilyPond at
+@uref{ftp://ftp.cs.uu.nl/pub/GNU/LilyPond/,
+ftp://ftp.cs.uu.nl/pub/GNU/LilyPond/}.
+
+@section Windows build requirements
+You need the following packages to compile Lilypond on Windows.
+
+@table @code
+@item The GNU + Cygnus tools, 1.1.7 or newer.
+Check out the @uref{http://sources.redhat.com/cygwin,Cygwin webpage}.
+You can get the latest version of the GNU + Cygnus tools from cygnus
+@uref{http://sources.redhat.com/cygwin/mirrors.html,mirror site}.
+Install everything, including tetex.
+@item GUILE 1.4, or newer.
+Check out the @uref{http://www.gnu.org/software/guile.html,GUILE
+webpage}.  You may need the patch @file{guile-1.4-gnu-windows.patch}
+included in LilyPond's source distribution.
+@end table
+
+These binaries are cross compiled for Windows on a GNU/Linux box.  You
+may want to check out the
+@uref{http://appel.lilypond.org/lilypond/gnu-windows/cross-1.1.8.tar.gz,cross
+compilation scripts}.
diff --git a/Documentation/windows/installing.texi b/Documentation/windows/installing.texi
new file mode 100644 (file)
index 0000000..406dac5
--- /dev/null
@@ -0,0 +1,151 @@
+\input texinfo @c -*-texinfo-*-
+@setfilename installing.info
+@settitle LilyPond on Windows
+
+@node Top
+@top
+
+@chapter WINDOWS - Installing GNU LilyPond on Windows
+
+This document explains how to install the binary release for windows
+on a Microsoft Windows 95, 98, NT or 2000 machine.
+
+This release is a free extra service of the developers to assist windows
+users. Please remember that we (the developers) rather dislike windows,
+and none of us use it.  Don't complain to us that installing LilyPond is
+too difficult; rather, send us code that works better.
+
+You must install the following software:
+
+@table @asis
+@item LilyPond
+Download and run
+@uref{ftp://ftp.lilypond.org/pub/LilyPond/gnu-windows/setup.exe, setup.exe}
+to install LilyPond.
+
+This will install the minimal set of cygwin tools needed to run
+LilyPond.  If you already have cygwin installed, don't worry: nothing
+will be installed twice.  To expand on this minimal set, click
+@uref{http://sources.redhat.com/cygwin/setup.exe,here},
+or visit a Cygwin
+@uref{http://sources.redhat.com/cygwin/mirrors.html,mirror site}.
+
+@item A full TeX installation.
+
+For example,  download  and install 
+@uref{http://prdownloads.sourceforge.net/miktex/miktex-2.0-lvl-1.zip,MikTeX},
+or visit @uref{http://www.miktex.org,www.miktex.org}.
+@c See @file{/usr/doc/cygwin/tetex-beta-20001218.README} for details.
+
+@item Ghostview.
+
+You can use GSView-2.6.  This old package has two advantages.  It has
+gsview and ghostscript bundeled, and it doesn't popup @emph{Register
+Now|Cancel} windows all the time.  It doesn't work together with Yap to
+display PostScript specials.
+
+Click @uref{ftp://ftp.cs.wisc.edu/ghost/ghostgum/gsv26w32.exe,here} to
+install GSView-2.6 (GhostView for Windows), or visit
+@uref{ftp://ftp.cs.wisc.edu/ghost/ghostgum,ftp.cs.wisc.edu}.
+
+You can also use the newer versions GSView-3.6 and GhostScript-6.50 If
+you install both these packages, Yap will display PostScript specials.
+You get annoying @emph{Register Now|Cancel} popups, though.
+
+Click @uref{ftp://ftp.cs.wisc.edu/ghost/ghostgum/gsv36w32.exe,here} for
+GSview and 
+Click @uref{ftp://mirror.cs.wisc.edu/pub/mirrors/ghost/AFPL/gs650/gs650w32.exe
+,here} for GhostScript.
+@uref{ftp://ftp.cs.wisc.edu/ghost/ghostgum,ftp.cs.wisc.edu}.
+or visit the
+@uref{http://www.cs.wisc.edu/~ghost/,Ghostscript, Ghostview and GSview site}.
+
+@item Python
+Click @uref{http://www.python.org/ftp/python/win32/py152.exe,here} to
+install Python-1.5.2, or visit
+@uref{http://www.python.org,www.python.org}.
+
+We have not tried using newer versions than 1.5.2.
+@end table
+
+
+@section Windows running setup
+
+If you're lucky, after running @file{setup.exe} you're all set up.
+
+Open a LilyPond shell (or any bash shell), and type
+@example
+lilypond --help
+@end example
+
+If you don't see something similar to
+@example
+Usage: lilypond [OPTION]... [FILE]...
+
+Typeset music and or play MIDI from FILE
+
+LilyPond is a music typesetter.  It produces beautiful sheet music
+using a high level description file as input.  LilyPond is part of 
+the GNU Project.
+
+Options:
+  -h,--help             this help
+[..]
+@end example
+
+you should try adding @file{/usr/lilypond-x.y.z/bin} to your @var{PATH},
+do:
+@example
+PATH=/usr/lilypond-1.3.147/bin:$PATH
+@end example
+
+and try again.
+
+[TODO:
+
+
+* emacs-mode installation, figure out and describe proper
+emacs-on-cygwin setup.
+
+* talk about /etc/profile.d/lilypond-profile.sh
+
+* GUILE errors, simple guile test
+
+* (La)TEX errors, simple tex test
+
+
+]
+@ignore 
+
+  guile -v
+  Guile 1.4.1
+
+  guile -e %load-path
+  ERROR: Wrong type to apply: ("/usr/share/guile/site" /usr/share/guile/1.4.1")
+  
+
+  
+Mats?
+
+Let's take this step by step.
+
+It should not be critical which MikTeX version you use.
+Let's first verify that your MikTeX works as it should.
+Open a DOS window. Run the commands
+>> latex sample2e
+ Should produce some lines of output
+>> yap sample2e
+ Should display a three page document.
+
+Next step; verify that the geometry package is in place. 
+Save the attached file to the directory where you run 
+your DOS window. Run the commands
+>> latex geometrytest
+>> yap geometrytest
+This one you should get a single page document with some text
+in each corner.
+]
+
+@end ignore
+
+
diff --git a/VERSION b/VERSION
index c04251a6c1ea54e2d5c79a4ed4b126873de63e24..e9f70f477a184e30b2d0b8b5560b5e664e93f8a1 100644 (file)
--- a/VERSION
+++ b/VERSION
@@ -1,7 +1,7 @@
 PACKAGE_NAME=LilyPond
 MAJOR_VERSION=1
 MINOR_VERSION=3
-PATCH_LEVEL=149
+PATCH_LEVEL=150
 MY_PATCH_LEVEL=
 
 # use the above to send patches: MY_PATCH_LEVEL is always empty for a
diff --git a/input/bugs/grace-clef.ly b/input/bugs/grace-clef.ly
new file mode 100644 (file)
index 0000000..460ee4d
--- /dev/null
@@ -0,0 +1,3 @@
+\score  {\notes\context Voice {
+c4 \clef bass  \grace c'8  c4
+      }}
diff --git a/input/bugs/l.ly b/input/bugs/l.ly
new file mode 100644 (file)
index 0000000..7711233
--- /dev/null
@@ -0,0 +1,3 @@
+
+\score { \notes { c^#`(rows ";" (lines "1" (bold "2") "3"))}}
+
diff --git a/input/bugs/markup.ly b/input/bugs/markup.ly
new file mode 100644 (file)
index 0000000..7711233
--- /dev/null
@@ -0,0 +1,3 @@
+
+\score { \notes { c^#`(rows ";" (lines "1" (bold "2") "3"))}}
+
index b92cb37198f9705fd6a25dcecd1bf17b2e47a9a2..2879a55422c826650b32fcc93bf03557f847b255 100644 (file)
@@ -1,5 +1,5 @@
 \header {
-  texidoc="Jazz chord names, but with lower case names for minor chords";
+  texidoc="Jazz chord names, but with lower case names for minor chords"
 }
 
 #(assoc-set! chord::names-alist-jazz
diff --git a/input/test/barline-lyric-only.ly b/input/test/barline-lyric-only.ly
new file mode 100644 (file)
index 0000000..0ad5f5b
--- /dev/null
@@ -0,0 +1,36 @@
+\header {
+
+texidoc = "You can move around Bar_engraver and
+Span_bar_engraver if you want bar lines on lyrics."  }
+
+
+\score {
+\notes \relative c' \context StaffGroup = groupie <
+ \context Staff = SA { c1 c1 c1}
+ \context Lyrics \lyrics <
+  { bla1 die bla }
+  { foo bar foo }
+  { foo bar foo }  
+ >
+ \context Staff = SB { c1 c1 c1} 
+
+ > 
+
+
+\paper  {
+\translator {
+  \LyricsVoiceContext
+  \consists Bar_engraver
+  % need procedure, since lyrics doesn't have a staff_sym engraver.
+  BarLine \override #'bar-size-procedure = #(lambda (x) 3.0)
+}
+
+\translator {
+  \LyricsContext
+  \consists "Span_bar_engraver"
+}
+\translator{
+  \StaffGroupContext
+  \remove "Span_bar_engraver"
+}
+}}
index 6e7657fcba308e311a52efaa98364d667d0a941e..3b38c5ca4ee56862c9cee6971600765829b2cb55 100644 (file)
@@ -1,8 +1,8 @@
-\version "1.3.146"
-%
-% TODO: junkme.
-%
 
+\header {
+texidoc = "The full orchestra plays a notes, where groups stop one after another. USe this to tune equalizer settings. "
+}
+\version "1.3.146"
 
 flauti = \notes \relative c' {
   \property Staff.midiInstrument = #"flute"
@@ -60,7 +60,7 @@ timpani = \notes \relative c' {
   R1*6 c1 R1*4
 }
 
-violinoB = \notes \relative c' {
+violinoI = \notes \relative c' {
   \property Staff.midiInstrument = #"violin"
   \property Staff.instrument   = #"Violino I"
   \property Staff.instr                = #"Vl. I"
@@ -68,7 +68,7 @@ violinoB = \notes \relative c' {
   R1*7 c1 R1*3
 }
 
-violinoC = \notes \relative c' {
+violinoII = \notes \relative c' {
   \property Staff.midiInstrument = #"violin"
   \property Staff.instrument   = #"Violino II"
   \property Staff.instr                = #"Vl. II"
@@ -117,8 +117,8 @@ violoncello = \notes \relative c' {
     >
     \context StaffGroup ="archi" <
       \context GrandStaff ="violini" <
-        \context Staff ="violino1" \violino1
-        \context Staff ="violino2" \violino2
+        \context Staff ="violino1" \violinoI
+        \context Staff ="violino2" \violinoII
       >
       \context Staff ="viola" \viola
       \context Staff ="violoncello" \violoncello
index de17c2aae1ca43f73bb87b0dac10d5dba18c5ca6..b669a14e444e550ded1d5d2a26bb55c35b71e7a3 100644 (file)
@@ -6,7 +6,7 @@
        c'4 c4
        
        \property Voice.fontSize= #-2
-       b16 (*1/2 
+       b16*1/2  (
        \property Voice.fontSize= #0
        
        ) g4 *31/32
index f687c765e2c5a45bb58a729aeecce5153e3eff92..fd83125d12c3101ae8581b3bcb4590494948090d 100644 (file)
@@ -1,3 +1,7 @@
+
+\header {
+texidoc = "some instruments (notably: cello and double bass) are alternatively written on one and two staves. This is the way to do it:"
+}
 \version "1.3.146"
 
 
@@ -46,7 +50,7 @@ grandstaff =  \context GrandStaff = one <
 
                \translator { \VoiceContext noAutoBeaming = ##t }
                \translator { \HaraKiriStaffContext }
-               \translator { \OrchestralScoreContext skipBars = 1 }
+               \translator { \OrchestralScoreContext skipBars = ##t }
        }
 }
 
index a09105069fd6748bfd1ac7684cab951baf93eb41..312361a9c8357edc975f94771175ec78d4ace07a 100644 (file)
@@ -1,3 +1,11 @@
+
+\header {
+texidoc = "note heads for improvisation have a different shape. "
+}
+
+%{ TODO: the construct with separet SquashVoice context is a little
+ gory. FIXME.  %}
+
 \version "1.3.146"
 
 improOn = \notes {\translator Voice = impro }
@@ -7,7 +15,7 @@ global = \notes { s1*3 \bar "|." }
 
 \score {
   <
-    \context ChordNames \chords {e8:m7*7 a2.:m7 bes4:m7 b1:m7 e8:m }
+    \context ChordNames \chords {e8*7:m7 a2.:m7 bes4:m7 b1:m7 e8:m }
     \context Staff \notes <
       \context SquashVoice = impro { \global }
       \context Voice = melo \transpose c'' {
@@ -24,7 +32,7 @@ global = \notes { s1*3 \bar "|." }
       \alias Voice
       \consists Pitch_squash_engraver
       \consists Local_key_engraver
-      squashedPosition = 6
+      squashedPosition = #0
       NoteHead \override #'style = #'slash
       Accidentals \override #'transparent = ##t
     }
index 19b1b54627295bae3e3fc14103a756f5597c869d..0129a9411e92d563f82c8a28701915032ac35312 100644 (file)
@@ -1,4 +1,4 @@
-4\version "1.3.146"
+\version "1.3.146"
 
 
 somewhatLong =  \lyrics{
index a9b2fc9e8d1bcc44d4b745a25f0c3ee0e8ea545d..c29e4b3a3d1cf1c93bf6946b7a72fdcc43d3960e 100644 (file)
@@ -20,7 +20,7 @@
             }
             \context Voice=four {
                \stemDown\slurDown\tieDown 
-               \property Voice.horizontalNoteShift=-1
+               \property Voice .NoteColumn \override #'horizontal-shift = #-1
                fis
             }
        >
index 66a8890c95ead72e72fe9f86a594c9a1f9fd419c..13b6c57f46ec14ea2a44833192a2aaf263c9ab8b 100644 (file)
@@ -6,11 +6,11 @@
                c( d e )c |
                \slurDotted
                c( d e )c |
-               \slurNoDots
+               \slurSolid
                c( d e )c |
-               \property Voice.slurDash = #0.0
+               \property Voice. Slur \set #'dashed = #0.0
                c( d e )c |
-               \slurNoDots
+               \slurSolid
                c( d e )c |
        }
        \paper{ 
index a41d3f0d2b270d1d63207d9122d54018add78c29..3221b86eeb19b8d8974cf1f0f364667b81178fc0 100644 (file)
@@ -1,17 +1,21 @@
+\header {
+texidoc = " the transposing property leaves output invariant, but has effect on MIDI."
+
+}
 \version "1.3.146"
 
 \score { 
   \context Voice \notes\relative c {
     % btw: this is not how transposing is done in mudela,
        % this is a transposing performer, i.e. for midi-output only
-       \property Staff.transposing = 0 c
-       \property Staff.transposing = 2 c
-       \property Staff.transposing = 4 c
-       \property Staff.transposing = 5 c
-       \property Staff.transposing = 7 c
-       \property Staff.transposing = 9 c
-       \property Staff.transposing = 11 c
-       \property Staff.transposing = 12 c
+       \property Staff.transposing = #0 c
+       \property Staff.transposing = #2 c
+       \property Staff.transposing = #4 c
+       \property Staff.transposing = #5 c
+       \property Staff.transposing = #7 c
+       \property Staff.transposing = #9 c
+       \property Staff.transposing = #11 c
+       \property Staff.transposing = #12 c
        
   }
   \paper { }  
index 262c35e10b7d90e58a05af27141b3a18a769dc7e..0422d00aeb46367f7d9499f2f9cdd942f804604a 100644 (file)
@@ -100,7 +100,6 @@ voiceE =  \notes {
 
     >
        \paper {
-           font_normal = 12.
            \translator {
                 \StaffContext 
                 \consists Instrument_name_engraver
index e08f25beb2f96cf62ae5d927ceec6663ba45315c..5a40037ec218de9dc7278946840adaf910aa5337 100644 (file)
@@ -1,3 +1,5 @@
+% DOCUMENTME!
+
 \version "1.3.146"
 
 
@@ -38,11 +40,9 @@ voicedefault =  \notes {
 
     >
         \paper {
-            font_normal = 12.
             \translator {
                  \StaffContext
                 TimeSignature \override   #'style = #'C
-                 \consists Instrument_name_engraver
             }
         }
 }
diff --git a/input/tutorial/minuet.ly b/input/tutorial/minuet.ly
new file mode 100644 (file)
index 0000000..6fba5af
--- /dev/null
@@ -0,0 +1,30 @@
+
+% lines preceded by a percent sign are comments.
+\include "paper16.ly"
+\score {
+    \notes
+    \relative c''
+        \sequential {
+           \key g \major
+           \time 3/4    
+
+       \repeat "volta" 2 \sequential {
+           d4 g,8 a b c d4 g, g |
+           e'4 c8 d e fis g4 g, g |
+           c4 d8( )c b a( )b4 c8 b a g |
+           a4 [b8 a] [g fis] g2.  |
+       }
+
+        b'4 g8 a b g
+        a4 d,8 e fis d |
+        g4 e8 fis g d cis4 b8 cis a4 |
+        a8-. b-. cis-. d-. e-. fis-.
+        g4 fis e |
+        fis a,  r8 cis8
+        d2.-\fermata
+        \bar "|."
+    }
+    \paper {
+       linewidth = 10.0 \cm % standard settings are too wide for a book
+   }
+}
index 33b7e5af4daa6ae61a0fc152ec34743dfb6c8161..33a04d2f3956df291a9629a566e091179dd23dfe 100644 (file)
@@ -29,7 +29,7 @@ Bar::brew_molecule (SCM smob)
   Grob * me = unsmob_grob (smob);
 
   SCM s = me->get_grob_property ("glyph");
-  SCM barsiz_proc = me->get_grob_property ("barsize-procedure");
+  SCM barsiz_proc = me->get_grob_property ("bar-size-procedure");
   if (gh_string_p (s) && gh_procedure_p (barsiz_proc))
     {
       String str  =ly_scm2string (s);
index 961b6bf6c0ac503f0f0492ac32fb6a81a79c86b9..013c5dac4b9a17e6da8230fa86cfb370f82b4bc7 100644 (file)
@@ -20,7 +20,7 @@
 #include "side-position-interface.hh"
 #include "item.hh"
 
-/// where is c-0 in the staff?
+
 class Clef_engraver : public  Engraver
 {
 public:
@@ -34,7 +34,7 @@ protected:
   virtual void start_translation_timestep ();
   virtual void process_music ();
   virtual void acknowledge_grob (Grob_info);
-
+  virtual void do_creation_processing ();
 private:
   Item * clef_p_;
   Item * octavate_p_;
@@ -45,6 +45,7 @@ private:
   void create_clef ();
   void set_central_c (SCM, SCM, SCM);
   void set_glyph ();
+  void inspect_clef_properties ();
 };
 
 Clef_engraver::Clef_engraver ()
@@ -162,6 +163,24 @@ Clef_engraver::create_clef ()
 
 void
 Clef_engraver::process_music ()
+{
+  inspect_clef_properties ();
+}
+
+/*
+  this must be done in creation_proc() since grace notes will be
+  processed before Clef_engraver::prcoess_music()
+
+  Grace notes and clef changes are still broken.
+*/
+void
+Clef_engraver::do_creation_processing ()
+{
+  inspect_clef_properties ();
+}
+
+void
+Clef_engraver::inspect_clef_properties ()
 {
   SCM glyph = get_property ("clefGlyph");
   SCM clefpos = get_property ("clefPosition");
index 3fdfc26950dc520eeef96757a68958ba916b12be..bfb2f6a72cec7fe2ba26da46586536e4e750d84e 100644 (file)
@@ -23,6 +23,7 @@ struct Lilypond_version
   int major_i_;
   int minor_i_;
   int patch_i_;
+  String extra_patch_str_;
 };
 
 extern Lilypond_version oldest_version;
index d85f19796d55a12908813b853e5b3ea019dce9f1..12d63619c826bd14f92da3ad39e4f44a192c5236 100644 (file)
@@ -39,6 +39,6 @@ extern int score_count_global;
 extern Sources* source_global_l;
 
 #include <iostream.h> /* gcc 3.0 */
-void print_lilypond_versions (ostream &os);
+
 
 #endif /* MAIN_HH */
index 1fcc8a86a35d046f36cbed1a923b8f7aa4da7cda..122f8d0d80ebf9876ebc5d2185e7a581d3272e2e 100644 (file)
@@ -17,8 +17,6 @@
 
 class Timing_translator : public virtual Translator
 {
-
-  SCM last_time_sig_;
 public:
   VIRTUAL_COPY_CONS (Translator);
   Timing_translator ();
@@ -34,6 +32,6 @@ protected:
 public:
   Moment measure_position () const;
   Moment measure_length () const;  
-  void set_time_signature ();
+
 };
 #endif // TIMING_TRANSLATOR_HH
index e58439dc9b66fb1b207ff01364083b7503a19a49..54b7ccdcf8e2de9d676223776cd9cc99556c373f 100644 (file)
@@ -89,7 +89,6 @@ Instrument_name_engraver::acknowledge_grob (Grob_info i)
       */
       if (gh_string_p (s) || gh_pair_p (s))
        create_text (s);
-         
     }
 
   if (dynamic_cast<Spanner*> (i.elem_l_)
index e061214ef156aebaed35110489020d0b38ac14bb..413d4be351f4cc3fcfeb05967d0711461ec1fcf4 100644 (file)
@@ -7,6 +7,7 @@
 */
 
 #include <stdio.h>
+#include <string.h>
 
 #include "config.h"
 #include "string.hh"
@@ -48,6 +49,27 @@ void
 ly_init_kpath (char *av0)
 {
 #if KPATHSEA && HAVE_KPATHSEA_KPATHSEA_H
+
+  /*
+    Remove the setting for TFMFONTS if we have kpathsea, because
+    kpathsea can find TFM fonts anyway.
+
+    If we don't lily will want to make tfms for cmr fonts, even if
+    there is a :: entry in the TFMFONTS path.
+
+    This will fail if a user has special fonts (outside of feta) that
+    can not be found by kpath.
+
+    If TFMFONTS is unset, TFMs of feta will be generated on the
+    fly. The risk is that this will cause checksum mismatch errors,
+    but MF is reasonably deterministic (so we hope not).
+
+    The advantage is that the PK font will also be generated under
+    /var/texmf/fonts, reducing clutter and compilation time.
+    
+  */
+  unsetenv ("TFMFONTS");
+  
   /*
    initialize kpathsea
    */
index 01a2cf6c700edb794c01aa3ebb23eb20e235f842..f9a545082f5317934b3ed95f0a43ae644fdbfff7 100644 (file)
@@ -72,6 +72,9 @@ LYRICS                ({AA}|{TEX})[^0-9 \t\n\f]*
 
 */
 
+
+SCM scan_fraction (String);
+
 %}
 
 %option c++
@@ -96,7 +99,7 @@ A             [a-zA-Z]
 AA             {A}|_
 N              [0-9]
 AN             {AA}|{N}
-PUNCT          [?!:']
+PUNCT          [?!:'`]
 ACCENT         \\[`'"^]
 NATIONAL       [\001-\006\021-\027\031\036\200-\377]
 TEX            {AA}|-|{PUNCT}|{ACCENT}|{NATIONAL}
@@ -104,6 +107,7 @@ WORD                {A}{AN}*
 ALPHAWORD      {A}+
 DIGIT          {N}
 UNSIGNED       {N}+
+FRACTION       {N}+\/{N}+
 INT            -?{UNSIGNED}
 REAL           ({INT}\.{N}*)|(-?\.{N}+)
 KEYWORD                \\{WORD}
@@ -269,6 +273,10 @@ HYPHEN             --
        {NOTECOMMAND}   {
                return scan_escaped_word (YYText () + 1); 
        }
+       {FRACTION}      {
+               yylval.scm =  scan_fraction (YYText ());
+               return FRACTION;
+       }
 
        {DIGIT}         {
                yylval.i = String_convert::dec2_i (String (YYText ()));
@@ -313,6 +321,10 @@ HYPHEN             --
        \" {
                start_quote ();
        }
+       {FRACTION}      {
+               yylval.scm =  scan_fraction (YYText ());
+               return FRACTION;
+       }
        {UNSIGNED}              {
                yylval.i = String_convert::dec2_i (String (YYText ()));
                return UNSIGNED;
@@ -349,6 +361,10 @@ HYPHEN             --
        {NOTECOMMAND}   {
                return scan_escaped_word (YYText () + 1);
        }
+       {FRACTION}      {
+               yylval.scm =  scan_fraction (YYText ());
+               return FRACTION;
+       }
        {UNSIGNED}              {
                yylval.i = String_convert::dec2_i (String (YYText ()));
                return UNSIGNED;
@@ -591,6 +607,15 @@ strip_trailing_white (String&s)
 
 
 
+Lilypond_version oldest_version ("1.3.59");
+
+void
+print_lilypond_versions (ostream &os)
+{
+  os << _f ("Oldest supported input version: %s", oldest_version.str ()) 
+    << endl;
+}
+
 
 bool
 valid_version_b (String s)
@@ -630,3 +655,20 @@ lyric_fudge (String s)
 
   return s;
 }
+
+/*
+Convert "NUM/DEN" into a '(NUM . DEN) cons.
+*/
+SCM
+scan_fraction (String frac)
+{
+       int i = frac.index_i ('/');
+       int l = frac.length_i ();
+       String left = frac.left_str (i);
+       String right = frac.right_str (l - i - 1);
+
+       int n = String_convert::dec2_i (left);
+       int d = String_convert::dec2_i (right);
+       return gh_cons (gh_int2scm (n), gh_int2scm (d));
+}
+               
index d1bddc5cf796c60eafe13839d8ee274919cc21a1..5af0c899fdd49e152a792fa0ea3ad13a52a185b8 100644 (file)
@@ -22,10 +22,15 @@ Lilypond_version::Lilypond_version (String str)
 {
   Array<String> version;
   version = String_convert::split_arr (str, '.');
-  assert (version.size () == 3);
+  
   major_i_ = version[0].value_i ();
   minor_i_ = version[1].value_i ();
-  patch_i_ = version[2].value_i ();
+  patch_i_ = 0;
+  if (version.size () >= 3)
+    patch_i_ = version[2].value_i ();
+
+  if (version.size () >= 4)
+    extra_patch_str_ = version[3];
 }
 
 String
index 5ebe1920230bd258f6ada4118faf2d088fb643ee..72a444a5329b11940773ccb3d228288494cc1750 100644 (file)
@@ -32,7 +32,7 @@ System_start_delimiter::staff_bracket (Grob*me,Real height)
                    me->get_grob_property ("bracket-thick"),
                    SCM_UNDEFINED);
 
-  /*
+/*
 TODO: sort this out.
     
 Another thing:
@@ -47,10 +47,9 @@ But I really think that you mean
 (arc_height changes the x-axis-size of arc ; arc_width changes the
 y-axis-size)
 Will not fix it since I'm not sure.
-
--Rune
   
    */
+
   Real h = height + 2 * arc_height;
   Box b (Interval (0, 1.5), Interval (-h/2, h/2));
   Molecule mol (b, at);
index e17b77d353e88ef30688fb5a051123090ff85d89..a8ce824d564cfdb14fc7045d5c63b6dbd8bf40bf 100644 (file)
@@ -46,8 +46,7 @@ void
 Time_signature_performer::create_audio_elements ()
 {
   SCM fr = get_property ("timeSignatureFraction");
-  if (gh_pair_p (fr)
-      && scm_equal_p (fr, prev_fraction_) != SCM_BOOL_T)
+  if (gh_pair_p (fr) && !gh_equal_p (fr, prev_fraction_))
     {
       prev_fraction_ = fr;
       int b = gh_scm2int (gh_car (fr));
index ec677a56faa0f472fb95d93d5e60816e7189437d..aa4882853075520b62e236629e93fe3c5c039e8e 100644 (file)
@@ -42,14 +42,6 @@ Timing_translator::process_music ()
       if (!to_boolean (get_property ("barCheckNoSynchronize")))
        daddy_trans_l_->set_property ("measurePosition", zero.smobbed_copy ());
     }
-
-  SCM fr = get_property ("timeSignatureFraction");
-  
-  if (scm_equal_p (fr, last_time_sig_) == SCM_BOOL_F)
-    {
-      last_time_sig_ = fr;
-      set_time_signature ();
-    }
 }
 
 
@@ -96,7 +88,8 @@ Timing_translator::initialize ()
   daddy_trans_l_->set_property ("timeSignatureFraction",
                                gh_cons (gh_int2scm (4), gh_int2scm (4)));
 
-  set_time_signature ();
+  daddy_trans_l_->set_property ("measureLength", Moment (1).smobbed_copy ());
+  daddy_trans_l_->set_property ("beatLength", Moment (1,4).smobbed_copy ());
 }
 
 Moment
@@ -110,24 +103,10 @@ Timing_translator::measure_length () const
 }
 
 
-void
-Timing_translator::set_time_signature ()
-{
-  SCM fr = get_property ("timeSignatureFraction");
-  int l = gh_scm2int (gh_car (fr));
-  int o = gh_scm2int (gh_cdr (fr));
-  
-  Moment one_beat = Moment (1)/Moment (o);
-  Moment len = Moment (l) * one_beat;
-
-  daddy_trans_l_->set_property ("measureLength", len.smobbed_copy ());
-  daddy_trans_l_->set_property ("beatLength", one_beat.smobbed_copy ());
-}
 
 Timing_translator::Timing_translator ()
 {
 
-  last_time_sig_ = SCM_BOOL_F;
 
 }
 
index 52995c5849c188391383d7177682102b2e0a5aff..bec4f635108ac4ed952e23bbd1c1f6c8b5bbf2d6 100644 (file)
@@ -42,8 +42,8 @@ StaffContext=\translator {
        % weird effects when doing instrument names for
        % piano staffs
 
-       instrument = #""
-       instr = #""
+       instrument = ##f
+       instr = ##f
          
        \accepts "Voice"
 }
@@ -238,8 +238,10 @@ PianoStaffContext = \translator{
        \name "PianoStaff"
 
        \consists "Vertical_align_engraver"
-
+       \consists "Instrument_name_engraver"
        
+       instrument = ##f
+       instr = ##f
        
        verticalAlignmentChildCallback = #Align_interface::fixed_distance_alignment_callback
        VerticalAlignment \override #'forced-distance = #12
diff --git a/ps/music-drawing-routines.ps b/ps/music-drawing-routines.ps
new file mode 100644 (file)
index 0000000..154fa20
--- /dev/null
@@ -0,0 +1,265 @@
+%!PS-Adobe-1.0: lily.ps 
+%
+% Functions for direct and embedded PostScript
+
+% round cappings 
+1 setlinecap
+
+/euclidean_length  
+{ 
+       1 copy mul exch 1 copy mul add sqrt 
+} bind def 
+
+/draw_beam % width slope thick 
+{ 
+        2 div /beam_thick exch def 
+        /beam_slope exch def 
+        /beam_wd exch def 
+        beam_slope beam_wd mul /beam_ht exch def 
+        0 beam_thick neg moveto  
+        beam_wd beam_ht rlineto  
+        0 beam_thick 2 mul rlineto 
+        0 beam_thick lineto 
+        closepath fill 
+} bind def 
+
+/draw_repeat_slash % width slope thick
+{
+  /beamthick exch def
+  /slope exch def
+  /width exch def
+  beamthick beamthick slope div euclidean_length
+    /xwid exch def 
+  0 0 moveto
+  xwid 0  rlineto
+  width slope width mul rlineto
+  xwid neg 0 rlineto
+%  width neg width angle sin mul neg rlineto
+  closepath fill
+} bind def
+
+/draw_hairpin % width start_h end_h thick
+{
+  setlinewidth
+  /end_h exch def 
+  /start_h exch def
+  /wid exch def
+  0 start_h moveto
+  wid end_h lineto
+  stroke
+  0 start_h neg moveto
+  wid end_h neg lineto
+  stroke
+} bind def
+
+/draw_tuplet % height gap dx dy thick dir 
+{ 
+       /dir exch def 
+       setlinewidth 
+       1 setlinecap 
+       1 setlinejoin 
+       /tuplet_dy exch def 
+       /tuplet_dx exch def 
+       /tuplet_gapx exch def 
+       /tuplet_h exch def 
+       tuplet_dy tuplet_dx div tuplet_gapx mul /tuplet_gapy exch def 
+
+
+       0 0 moveto 
+       0 tuplet_h dir mul lineto  
+       tuplet_dx tuplet_gapx sub 2 div  
+               tuplet_dy tuplet_gapy sub 2 div tuplet_h dir mul add lineto 
+       tuplet_dx tuplet_gapx add 2 div  
+               tuplet_dy tuplet_gapy add 2 div tuplet_h dir mul add moveto 
+       tuplet_dx tuplet_dy tuplet_h dir mul add lineto 
+       tuplet_dx tuplet_dy lineto 
+       stroke 
+} bind def 
+
+/difficult_draw_ez_ball % ch letter_col ball_col font
+{
+       % font
+       findfont 0.7 scalefont setfont 
+       0.1 setlinewidth
+       0 0 moveto
+       0 setgray
+       0.5 0 0.5 0 360 arc closepath fill stroke
+       % ball_col
+       1 eq {
+               0.01 setlinewidth
+               1 setgray
+               0.5 0 0.4 0 360 arc closepath
+               fill stroke
+       } if 
+       % letter_col
+       setgray
+       % 0.25 is empiric centering. Change to taste
+       0.25 -0.25 moveto
+       % ch
+       show
+} bind def
+
+% Simple, but does it work everywhere?
+% The filled circles are drawn by setting the linewidth
+% to 2*radius and drawing a point.  Is that (defined to be)
+% a nice filled circle?
+/draw_ez_ball % ch letter_col ball_col font
+{
+       % font
+       findfont 0.85 scalefont setfont
+       /origin { 0.45 0 } def
+       0 setgray
+       1.1 setlinewidth
+       origin moveto
+       origin lineto stroke
+       % ball_col
+       setgray
+       0.9 setlinewidth
+       origin moveto
+       origin lineto stroke
+       % letter_col
+       setgray
+       % 0.25 is empiric centering. Change to taste
+       origin moveto
+       -0.28 -0.30 rmoveto
+       % ch
+       show
+} bind def
+
+/draw_volta % h w thick vert_start vert_end 
+{ 
+       /vert_end exch def 
+       /vert_start exch def 
+       setlinewidth 
+       /volta_w exch def 
+       /volta_h exch def 
+       1 setlinecap 
+       1 setlinejoin 
+       vert_start 0 eq { 
+               0 0 moveto 
+               0 volta_h lineto 
+       } if 
+       0 volta_h moveto 
+       volta_w volta_h lineto 
+       vert_end 0 eq { 
+               volta_w 0 lineto 
+       } if 
+       stroke 
+} bind def 
+
+% this is for drawing slurs. 
+/draw_bezier_sandwich  % thickness controls 
+{ 
+       setlinewidth 
+       moveto 
+       curveto 
+       lineto 
+       curveto 
+       gsave 
+       fill 
+       grestore 
+       stroke 
+} bind def 
+
+/draw_dashed_line % dash thickness dx dy
+{ 
+       1 setlinecap 
+       1 setlinejoin 
+       setdash 
+       setlinewidth 
+       0 0 moveto
+       lineto
+       stroke 
+} bind def 
+
+/draw_dashed_slur % dash thickness controls
+{ 
+       1 setlinecap 
+       1 setlinejoin 
+       setdash 
+       setlinewidth 
+       8 -2 roll 
+       moveto 
+       curveto 
+       stroke 
+} bind def 
+
+
+
+/bracket_traject 
+{ 
+       /traject_ds exch def 
+       /traject_alpha exch def 
+       traject_ds traject_alpha sin mul add 
+       exch 
+       traject_ds traject_alpha cos mul add 
+       exch 
+} bind def 
+
+
+
+/half_bracket
+{ 
+%6 
+       0 0 
+%5a 
+       bracket_thick arch_height add half_height arch_thick sub arch_width add 
+       arch_angle arch_height -0.15 mul bracket_traject 
+%5b 
+       bracket_thick 0.5 mul half_height 
+       0 arch_height 0.5 mul bracket_traject 
+%5c 
+       0 half_height 
+%4a 
+       bracket_thick half_height arch_thick sub 
+       0 arch_height 0.4 mul bracket_traject 
+%4b 
+       bracket_thick arch_height add half_height arch_thick sub arch_width add 
+       arch_angle arch_height -0.25 mul bracket_traject 
+%4c 
+       bracket_thick arch_height add half_height arch_thick sub arch_width add 
+%3 
+       bracket_thick half_height arch_thick sub 
+%2 
+       bracket_thick 0 
+%1 
+       0 0 
+} bind def 
+
+/draw_half_bracket { 
+       moveto 
+       lineto 
+       lineto 
+       curveto 
+       curveto 
+       lineto 
+       gsave 
+       fill 
+       grestore 
+} bind def 
+
+/draw_bracket % arch_angle arch_width arch_height bracket_height arch_thick bracket_thick
+{ 
+       % urg
+
+       /bracket_thick exch def
+       /arch_thick exch def
+       /bracket_height exch def
+       /arch_height exch def
+       /arch_width exch def
+       /arch_angle exch def
+
+       bracket_height 2 div bracket_thick add /half_height exch def 
+       bracket_thick 0.5 mul setlinewidth
+       1 setlinecap 
+       1 setlinejoin 
+       half_bracket 
+       20 copy 
+       1 -1 scale 
+       draw_half_bracket 
+       stroke 
+       1 -1 scale 
+       draw_half_bracket 
+       stroke 
+} bind def 
+
index ad4e1e2501fbcb171141c73f6dff487d5525981e..90bbb79a0b62fe5c3d18a32f09d5b3c13ad2d4b4 100644 (file)
@@ -37,7 +37,7 @@
                (break-align-symbol . Staff_bar)
                (glyph . "|")
                (break-glyph-function . ,default-break-barline)
-               (barsize-procedure . ,Bar::get_staff_bar_size)
+               (bar-size-procedure . ,Bar::get_staff_bar_size)
                (molecule-callback . ,Bar::brew_molecule)          
                (visibility-lambda . ,all-visible)
                (breakable . #t)
        (Script . (
                ;; don't set direction here: it breaks staccato.
                (molecule-callback . ,Script::brew_molecule)
+               (padding . 0.3) 
                (X-offset-callbacks . (,Side_position_interface::centered_on_parent))
                (before-line-breaking-callback . ,Script::before_line_breaking)
                (meta . ,(grob-description "Script" script-interface side-position-interface font-interface))
        ))
        (SpanBar . (
                (break-align-symbol . Staff_bar)
-               (barsize-procedure . ,Span_bar::get_bar_size) 
+               (bar-size-procedure . ,Span_bar::get_bar_size) 
                (molecule-callback . ,Bar::brew_molecule)
                (visibility-lambda . ,begin-of-line-invisible)
                (X-extent-callback . ,Span_bar::width_callback)
index c84eb680ea11f2eb7d4ee2e8cfb2be2fe4daa3df..8f22abd64961f9d63f2c076febd0b48ce5fa648b 100644 (file)
@@ -56,7 +56,7 @@ attachments to prevent ugly slurs.  [fixme: we need more documentation here].
 In the case of alignment grobs, this should contain only one number.")
 (grob-property-description 'bar-size number? "size of a bar line.")
 (grob-property-description 'bars list? "list of barline pointers.")
-(grob-property-description 'barsize-procedure procedure? "Procedure that computes the size of a bar line.")
+(grob-property-description 'bar-size-procedure procedure? "Procedure that computes the size of a bar line.")
 (grob-property-description 'baseline-skip number? "Baseline skip to use for multiple lines of text.")
 (grob-property-description 'bass list? " musical-pitch, optional.")
 (grob-property-description 'beam ly-grob? "pointer to the beam, if applicable.")
index 80fe44bc27f09c53046449c9300ca3984a33498f..ceb0bb95a382dc90803d2925ae9c76ac0c06fcc0 100644 (file)
@@ -359,7 +359,7 @@ If @var{bartype} is set to @code{\"empty\"} then nothing is printed,
 but a line break is allowed at that spot.
 
 "
- '( barsize-procedure kern thin-kern hair-thickness thick-thickness glyph bar-size break-glyph-function ))
+ '(bar-size-procedure kern thin-kern hair-thickness thick-thickness glyph bar-size break-glyph-function ))
 
 
 (lily-interface
index 70a115d8c63b856d98fa44093fd1ea51ceeda823..95280791262b3daee6651d936e1cd37c2a8ec9fc 100644 (file)
      ;; URG: now we can't use scm output without Lily
      (ly-gulp-file "lilyponddefs.ps")
      " {exch pop //systemdict /run get exec} "
-     (ly-gulp-file "lily.ps")
+     (ly-gulp-file "music-drawing-routines.ps")
      "{ exch pop //systemdict /run get exec } "
     ))
   
      (ly-number->string  thick)
      " draw_bezier_sandwich"))
 
+; TODO: use HEIGHT argument
   (define (start-line height)
-         "\nstart-line {
+    (string-append
+     "\n"
+     (ly-number->string height)
+     " start-line {
 lilypondpaperoutputscale lilypondpaperoutputscale scale
-")
+"))
   
   (define (stem breapth width depth height) 
     (string-append (numbers->string (list breapth width depth height))
index 4ba31ff8b426f32f17fe82b285b5c1d81ab04fc8..4c8904415daed98e2311622b200b4c3fea45d084 100644 (file)
      (if use-regex
         ;; fixed in 1.3.4 for powerpc -- broken on Windows
         (regexp-substitute/global #f "\n"
-                                  (ly-gulp-file "lily.ps") 'pre " %\n" 'post)
-        (ly-gulp-file "lily.ps"))
+                                  (ly-gulp-file "music-drawing-routines.ps") 'pre " %\n" 'post)
+        (ly-gulp-file "music-drawing-routines.ps"))
      "}"
      "\\input lilyponddefs\\newdimen\\outputscale \\outputscale=\\lilypondpaperoutputscale pt\\turnOnPostScript"))
 
index 8d4e312a9083afdddf15d1eda52fce3337efa6a9..2dde1156dd4e161cacfd99eaefdf70ec646fe8ea 100644 (file)
@@ -102,6 +102,7 @@ makes bar-checks for polyphonic music easier.")
     count if this property is set to zero.
 ")
 (translator-property-description 'beamMelismaBusy boolean? "Signal if a beam is set when automaticMelismata is set")
+(translator-property-description 'beatLength moment? "The length of one beat in this time signature.")
 (translator-property-description 'breakAlignOrder list? "Defines the order in which
 prefatory matter (clefs, key signatures) appears, eg. this puts the
 key signatures after the bar lines:
index b0f0dd6a9d3ab203dca83310f13e141b33cb5773..c450497c9ca77f6c7803cab253833793ecad113c 100644 (file)
@@ -821,9 +821,9 @@ if 1:
 if 1:
        def conv (str):
                str = re.sub ('\(align', '(axis', str)
-               str = re.sub ('\(row', '(columns', str)
+               str = re.sub ('\(rows', '(columns', str)
                return str
-       conversions.append (((1,3,148), conv, '(align -> (axis, (row -> columns'))
+       conversions.append (((1,3,148), conv, '"(align" -> "(axis", "(rows" -> "(columns"'))
 
 
 ################################