From: fred Date: Wed, 27 Mar 2002 01:03:03 +0000 (+0000) Subject: lilypond-1.3.150 X-Git-Tag: release/1.5.59~708 X-Git-Url: https://git.donarmstrong.com/?a=commitdiff_plain;h=6fbf190a907313c21bea5342bd4c493867aeddcd;p=lilypond.git lilypond-1.3.150 --- diff --git a/Documentation/doc-roadmap.texi b/Documentation/doc-roadmap.texi new file mode 100644 index 0000000000..8b13789179 --- /dev/null +++ b/Documentation/doc-roadmap.texi @@ -0,0 +1 @@ + diff --git a/Documentation/header.html.in b/Documentation/header.html.in index 05a32d05ae..47d8a1386f 100644 --- a/Documentation/header.html.in +++ b/Documentation/header.html.in @@ -37,11 +37,11 @@ which substitutes some @AT_VARIABLES@ as well. - -
Home
- Development
- WikiWikiWeb
+ LilyPond website
+ WikiWikiWeb
GNU Project
Translations
- LilyPond dot org
+ Han-Wen's site

@@ -49,32 +49,18 @@ which substitutes some @AT_VARIABLES@ as well.
Change Log
- Small FAQ
- Full FAQ
+ FAQ
User manual
Regression Test
Documentation of internals

- Download Source + Download
- Stable
- Development
-
-
- Download Binary -
- RedHat i386
- LinuxPPC
- Debian Stable
- Debian Unstable
- Windows Stable
- Windows Unstable
-
+Source
+ Binary
Music diff --git a/Documentation/index.texi b/Documentation/index.texi index ae488127be..90066f462a 100644 --- a/Documentation/index.texi +++ b/Documentation/index.texi @@ -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 diff --git a/Documentation/topdocs/INSTALL.texi b/Documentation/topdocs/INSTALL.texi index feaecbf0a3..80cb4abb8a 100644 --- a/Documentation/topdocs/INSTALL.texi +++ b/Documentation/topdocs/INSTALL.texi @@ -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 + +@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 + +@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. diff --git a/Documentation/topdocs/index.tely b/Documentation/topdocs/index.tely index 93084b4496..064f4a742a 100644 --- a/Documentation/topdocs/index.tely +++ b/Documentation/topdocs/index.tely @@ -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 - -@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 - -@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 diff --git a/Documentation/user/literature.itely b/Documentation/user/literature.itely index e7b18c5e3a..6b33242eea 100644 --- a/Documentation/user/literature.itely +++ b/Documentation/user/literature.itely @@ -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 diff --git a/Documentation/user/refman.itely b/Documentation/user/refman.itely index fd99c88485..45bf0efd7b 100644 --- a/Documentation/user/refman.itely +++ b/Documentation/user/refman.itely @@ -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} diff --git a/Documentation/user/tutorial.itely b/Documentation/user/tutorial.itely index 5772357a91..7883872722 100644 --- a/Documentation/user/tutorial.itely +++ b/Documentation/user/tutorial.itely @@ -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 index 0000000000..dbf0dbad86 --- /dev/null +++ b/Documentation/windows/compiling.texi @@ -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 index 0000000000..406dac5010 --- /dev/null +++ b/Documentation/windows/installing.texi @@ -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 c04251a6c1..e9f70f477a 100644 --- 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 index 0000000000..460ee4d094 --- /dev/null +++ b/input/bugs/grace-clef.ly @@ -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 index 0000000000..7711233517 --- /dev/null +++ b/input/bugs/l.ly @@ -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 index 0000000000..7711233517 --- /dev/null +++ b/input/bugs/markup.ly @@ -0,0 +1,3 @@ + +\score { \notes { c^#`(rows ";" (lines "1" (bold "2") "3"))}} + diff --git a/input/test/Cc-chords.ly b/input/test/Cc-chords.ly index b92cb37198..2879a55422 100644 --- a/input/test/Cc-chords.ly +++ b/input/test/Cc-chords.ly @@ -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 index 0000000000..0ad5f5bc24 --- /dev/null +++ b/input/test/barline-lyric-only.ly @@ -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" +} +}} diff --git a/input/test/equaliser.ly b/input/test/equaliser.ly index 6e7657fcba..3b38c5ca4e 100644 --- a/input/test/equaliser.ly +++ b/input/test/equaliser.ly @@ -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 diff --git a/input/test/fake-grace.ly b/input/test/fake-grace.ly index de17c2aae1..b669a14e44 100644 --- a/input/test/fake-grace.ly +++ b/input/test/fake-grace.ly @@ -6,7 +6,7 @@ c'4 c4 \property Voice.fontSize= #-2 - b16 (*1/2 + b16*1/2 ( \property Voice.fontSize= #0 ) g4 *31/32 diff --git a/input/test/hara-kiri-switch.ly b/input/test/hara-kiri-switch.ly index f687c765e2..fd83125d12 100644 --- a/input/test/hara-kiri-switch.ly +++ b/input/test/hara-kiri-switch.ly @@ -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 } } } diff --git a/input/test/improv.ly b/input/test/improv.ly index a09105069f..312361a9c8 100644 --- a/input/test/improv.ly +++ b/input/test/improv.ly @@ -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 } diff --git a/input/test/lyrics.ly b/input/test/lyrics.ly index 19b1b54627..0129a9411e 100644 --- a/input/test/lyrics.ly +++ b/input/test/lyrics.ly @@ -1,4 +1,4 @@ -4\version "1.3.146" +\version "1.3.146" somewhatLong = \lyrics{ diff --git a/input/test/note-shift.ly b/input/test/note-shift.ly index a9b2fc9e8d..c29e4b3a3d 100644 --- a/input/test/note-shift.ly +++ b/input/test/note-shift.ly @@ -20,7 +20,7 @@ } \context Voice=four { \stemDown\slurDown\tieDown - \property Voice.horizontalNoteShift=-1 + \property Voice .NoteColumn \override #'horizontal-shift = #-1 fis } > diff --git a/input/test/slur-dash.ly b/input/test/slur-dash.ly index 66a8890c95..13b6c57f46 100644 --- a/input/test/slur-dash.ly +++ b/input/test/slur-dash.ly @@ -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{ diff --git a/input/test/transposing.ly b/input/test/transposing.ly index a41d3f0d2b..3221b86eeb 100644 --- a/input/test/transposing.ly +++ b/input/test/transposing.ly @@ -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 { } diff --git a/input/test/volta-start.ly b/input/test/volta-start.ly index 262c35e10b..0422d00aeb 100644 --- a/input/test/volta-start.ly +++ b/input/test/volta-start.ly @@ -100,7 +100,6 @@ voiceE = \notes { > \paper { - font_normal = 12. \translator { \StaffContext \consists Instrument_name_engraver diff --git a/input/test/volta.ly b/input/test/volta.ly index e08f25beb2..5a40037ec2 100644 --- a/input/test/volta.ly +++ b/input/test/volta.ly @@ -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 index 0000000000..6fba5af310 --- /dev/null +++ b/input/tutorial/minuet.ly @@ -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 + } +} diff --git a/lily/bar.cc b/lily/bar.cc index 33b7e5af4d..33a04d2f39 100644 --- a/lily/bar.cc +++ b/lily/bar.cc @@ -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); diff --git a/lily/clef-engraver.cc b/lily/clef-engraver.cc index 961b6bf6c0..013c5dac4b 100644 --- a/lily/clef-engraver.cc +++ b/lily/clef-engraver.cc @@ -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"); diff --git a/lily/include/lilypond-input-version.hh b/lily/include/lilypond-input-version.hh index 3fdfc26950..bfb2f6a72c 100644 --- a/lily/include/lilypond-input-version.hh +++ b/lily/include/lilypond-input-version.hh @@ -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; diff --git a/lily/include/main.hh b/lily/include/main.hh index d85f19796d..12d63619c8 100644 --- a/lily/include/main.hh +++ b/lily/include/main.hh @@ -39,6 +39,6 @@ extern int score_count_global; extern Sources* source_global_l; #include /* gcc 3.0 */ -void print_lilypond_versions (ostream &os); + #endif /* MAIN_HH */ diff --git a/lily/include/timing-translator.hh b/lily/include/timing-translator.hh index 1fcc8a86a3..122f8d0d80 100644 --- a/lily/include/timing-translator.hh +++ b/lily/include/timing-translator.hh @@ -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 diff --git a/lily/instrument-name-engraver.cc b/lily/instrument-name-engraver.cc index e58439dc9b..54b7ccdcf8 100644 --- a/lily/instrument-name-engraver.cc +++ b/lily/instrument-name-engraver.cc @@ -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 (i.elem_l_) diff --git a/lily/kpath.cc b/lily/kpath.cc index e061214ef1..413d4be351 100644 --- a/lily/kpath.cc +++ b/lily/kpath.cc @@ -7,6 +7,7 @@ */ #include +#include #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 */ diff --git a/lily/lexer.ll b/lily/lexer.ll index 01a2cf6c70..f9a545082f 100644 --- a/lily/lexer.ll +++ b/lily/lexer.ll @@ -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)); +} + diff --git a/lily/lilypond-version.cc b/lily/lilypond-version.cc index d1bddc5cf7..5af0c899fd 100644 --- a/lily/lilypond-version.cc +++ b/lily/lilypond-version.cc @@ -22,10 +22,15 @@ Lilypond_version::Lilypond_version (String str) { Array 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 diff --git a/lily/system-start-delimiter.cc b/lily/system-start-delimiter.cc index 5ebe192023..72a444a532 100644 --- a/lily/system-start-delimiter.cc +++ b/lily/system-start-delimiter.cc @@ -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); diff --git a/lily/time-signature-performer.cc b/lily/time-signature-performer.cc index e17b77d353..a8ce824d56 100644 --- a/lily/time-signature-performer.cc +++ b/lily/time-signature-performer.cc @@ -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)); diff --git a/lily/timing-translator.cc b/lily/timing-translator.cc index ec677a56fa..aa48828530 100644 --- a/lily/timing-translator.cc +++ b/lily/timing-translator.cc @@ -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; } diff --git a/ly/engraver.ly b/ly/engraver.ly index 52995c5849..bec4f63510 100644 --- a/ly/engraver.ly +++ b/ly/engraver.ly @@ -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 index 0000000000..154fa206c0 --- /dev/null +++ b/ps/music-drawing-routines.ps @@ -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 + diff --git a/scm/grob-description.scm b/scm/grob-description.scm index ad4e1e2501..90bbb79a0b 100644 --- a/scm/grob-description.scm +++ b/scm/grob-description.scm @@ -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) @@ -467,6 +467,7 @@ (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)) @@ -510,7 +511,7 @@ )) (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) diff --git a/scm/grob-property-description.scm b/scm/grob-property-description.scm index c84eb680ea..8f22abd649 100644 --- a/scm/grob-property-description.scm +++ b/scm/grob-property-description.scm @@ -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.") diff --git a/scm/interface-description.scm b/scm/interface-description.scm index 80fe44bc27..ceb0bb95a3 100644 --- a/scm/interface-description.scm +++ b/scm/interface-description.scm @@ -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 diff --git a/scm/ps.scm b/scm/ps.scm index 70a115d8c6..9528079126 100644 --- a/scm/ps.scm +++ b/scm/ps.scm @@ -125,7 +125,7 @@ ;; 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 } " )) @@ -160,10 +160,14 @@ (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)) diff --git a/scm/tex.scm b/scm/tex.scm index 4ba31ff8b4..4c8904415d 100644 --- a/scm/tex.scm +++ b/scm/tex.scm @@ -102,8 +102,8 @@ (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")) diff --git a/scm/translator-property-description.scm b/scm/translator-property-description.scm index 8d4e312a90..2dde1156dd 100644 --- a/scm/translator-property-description.scm +++ b/scm/translator-property-description.scm @@ -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: diff --git a/scripts/convert-ly.py b/scripts/convert-ly.py index b0f0dd6a9d..c450497c9c 100644 --- a/scripts/convert-ly.py +++ b/scripts/convert-ly.py @@ -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"')) ################################