From: Han-Wen Nienhuys Date: Mon, 23 Apr 2001 11:55:37 +0000 (+0200) Subject: release: 1.3.150 X-Git-Tag: release/1.3.150 X-Git-Url: https://git.donarmstrong.com/?a=commitdiff_plain;h=f7c306cacfbdf6229e9414c691e36e49b41ea71a;p=lilypond.git release: 1.3.150 ============ * Bugfix: markup text: lines with markup. * Fixed line height in postscript output. * Windows installer stuff: the ``It shouldn't be hard -- but do need some sleep'' release. Think of it: /shouldn't/ is *exactly* why GNU/Linux exists, and why we advise to run LilyPond on Linux -- UMSDOS if you must. You may consider our part of the job done. Any more of this sad and sorry stuff will drive me to drink. It makes you realise again how much fun using Linux actually is. We'll take patches from now on, from people that have a stronger stomach. Good night. - Ly2dvi: run commands from sh (so that tex wrappers be used). - Added cygwin man,less and windows gs, gsview, miktex, python to lilypond installer repository. Moved profile.d setup functionality to postinstall. - Added tex and latex wrappers. - Wrappers for all python scripts. * Removed RMAIL header from german-chords.ly + fixes (Rune). 1.3.149.h --- diff --git a/CHANGES b/CHANGES index d3c1eb6644..6552157a3c 100644 --- a/CHANGES +++ b/CHANGES @@ -1,6 +1,3 @@ ---- ../lilypond-1.3.149.jcn2/CHANGES Fri Apr 20 15:44:19 2001 -++ b/CHANGES Sun Apr 22 15:11:37 2001 -@@ -1,3 +1,10 @@ 1.3.149.jcn3 ============ @@ -8,16 +5,6 @@ * Fixed line height in postscript output. - 1.3.149.jcn2 - ============ - 1.3.149.jcn2 -============ - -* Fixed one more shift/reduce rule in parser: c1/e NOT - -1.3.149.jcn1 -============ - * Windows installer stuff: the ``It shouldn't be hard -- but do need some sleep'' release. @@ -41,6 +28,37 @@ * Removed RMAIL header from german-chords.ly + fixes (Rune). +1.3.149.hwn1 +============ + +* Website fixes + +* Allow ` for lyric punctuation + +* Add note to refman saying to read the tutorial first. + +* Changed regular identifier error to warning. + +* Make lexer emit FRACTION for N/M (where N, M unsigned numbers). This +fixes one shift reduce, fixing the problem with multiplied durations +and inversions. + +* Set measureLength and beatLength from the parser. This fixes percent +repeats that come directly after a time signature change. + +* Bugfix: process clef change upon Clef_engraver creation. This fixes +grace notes beginning a piece; bug with combining clef changes and +grace notes remains. + +* Bugfix: typo in convert-ly rule + +* spelling: barsize-procedure -> bar-size-procedure + +* fixes for input/test/ (thanks, Laura) + +* Bugfix: \version "1.2.4.foo" now doesn't cause a crash. + + 1.3.149 ======= 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/README.texi b/Documentation/topdocs/README.texi index c10fa8db2a..ba1f8b870b 100644 --- a/Documentation/topdocs/README.texi +++ b/Documentation/topdocs/README.texi @@ -40,9 +40,9 @@ in the toplevel directory, as INSTALL.txt @section Documentation The documentation is available online at -@uref{http://www.cs.uu.nl/~hanwen/lilypond/index.html}. You can also -build it locally. This does require a working LilyPond binary. The -following formats are supported: +@uref{http://www.lilypond.org/}. You can also build it locally. This +does require a working LilyPond binary. The following formats are +supported: @itemize @bullet @item HTML. Refer to INSTALL.txt for information @@ -91,8 +91,8 @@ If you have bugreports, you should send them to this list. If you have received this file as part of a DOS/Window32 distribution (@file{LilyPond-*.zip}), it is advisable to also download the -source package, since it might contain more documentation -@uref{ftp://ftp.cs.uu.nl/pub/GNU/LilyPond/} +@uref{ftp://ftp.cs.uu.nl/pub/GNU/LilyPond/,source package}, since it +might contain more documentation @section Caveats diff --git a/Documentation/topdocs/WINDOWS.texi b/Documentation/topdocs/WINDOWS.texi deleted file mode 100644 index 57807d2488..0000000000 --- a/Documentation/topdocs/WINDOWS.texi +++ /dev/null @@ -1,208 +0,0 @@ -\input texinfo @c -*-texinfo-*- -@setfilename WINDOWS.info -@settitle WINDOWS - compiling and installing GNU LilyPond on Windows - -@node Top -@top - -@chapter WINDOWS - compiling and installing GNU LilyPond on Windows - -This document is a supplement to INSTALL.txt, you may want to read -that too. - -@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 - - -@section Windows precompiled binaries - -@table @code -@item LilyPond -Click @uref{http://appel.lilypond.org/lilypond/gnu-windows/setup.exe, -here} to install LilyPond, or visit @uref{http://appel.lilypond.org/lilypond/gnu-windows, -LilyPond on Windows}. - -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}. -@end table - -Note that none of the developers uses Windows, of course. In fact, we -recommend you to use GNU/Linux for running LilyPond. We provide these -binaries anyway, because it saves us the trouble of helping Windows -users trying to compile LilyPond themselves. - -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}. - -@section Windows running requirements - -GNU LilyPond does use a lot of resources. For operation you need the -following software - -@table @code -@item GUILE -Included in binary installation. -@item TeX -A full TeX installation. -Click -@uref{http://prdownloads.sourceforge.net/miktex/miktex-2.0-lvl-1.zip,here} -to install basic MiKTeX commands, -or visit @uref{http://www.miktex.org,www.miktex.org}. -@c See @file{/usr/doc/cygwin/tetex-beta-20001218.README} for details. -@item PostScript tools -@table @code -@item GSView-2.6, or -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}. - -@item 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, -or visit the -@uref{http://www.cs.wisc.edu/~ghost/,Ghostscript, Ghostview and GSview site}. -@end table - -@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}. - -Python > 1.5.2 has ugly licensing issues, so we only used and tested -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: - -* politely ask windows users not to complain but rather send instructive -bug reports along with patches. - -* 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. -] - - -emacs - -http://cygwin.com/ml/cygwin/2000-08/msg01049.html -http://www.cs.unc.edu/~juliano/my_emacs_files/cygwin32-mount.el -http://cygwin.com/ml/cygwin/2000-02/msg00109.html -http://sources.redhat.com/ml/cygwin/2001-01/msg00878/cygwin32-mount.el - - ;; setup Bash shell - (setq exec-path (cons "C:/cygwin/bin" exec-path)) - (setenv "PATH" (concat "C:\\cygwin\\bin;" (getenv "PATH"))) - (setq process-coding-system-alist '(("bash" . undecided-unix))) - (setq w32-quote-process-args ?\") - (setq shell-file-name "bash") - (setenv "SHELL" shell-file-name) - (setq explicit-shell-file-name shell-file-name) - (add-hook 'comint-output-filter-functions 'comint-strip-ctrl-m) - -@end ignore - - 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/lilypond-book.itely b/Documentation/user/lilypond-book.itely index d11d447ebd..6bdddfb0c4 100644 --- a/Documentation/user/lilypond-book.itely +++ b/Documentation/user/lilypond-book.itely @@ -323,7 +323,7 @@ you need this one of these options. @section Authors -@email{hanwen@@cs.uu.nl, Han-Wen Nienhuys}, @uref{http://www.cs.uu.nl/people/hanwen} +@email{hanwen@@cs.uu.nl, Han-Wen Nienhuys}, @uref{http://www.cs.uu.nl/~hanwen} @email{tca@@gnu.org, Tom Cato Amundsen} 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/Documentation/windows/lily-tex.sh b/Documentation/windows/lily-tex.sh deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/Documentation/windows/lily-wins.texi b/Documentation/windows/lily-wins.texi index dab0d6972c..6d53dd4989 100644 --- a/Documentation/windows/lily-wins.texi +++ b/Documentation/windows/lily-wins.texi @@ -14,7 +14,7 @@ Until now, installing LilyPond on Windows was @uref{http://mail.gnu.org/pipermail/help-gnu-music/2001-April/000620.html, almost} a dull process that could easily be @uref{ -ftp://appel.lilypond.org/pub/gnu-windows/cygwin-1.1.7/bin/tar/lily-install-0.6-i686-cygwin.bin.tar.gz, +ftp://ftp.lilypond.org/pub/LilyPond/gnu-windows/latest/bin/tar/lily-install-0.6-i686-cygwin.bin.tar.gz, automated} and scripted. This meant that you would have more time left for actual work, and we all know that's not what computers were designed for. @@ -41,8 +41,7 @@ way before schedule}. With the upcoming @uref{ http://mail.gnu.org/pipermail/info-gnu-music/2001-April/000060.html, LilyPond-1.4} release, we have innovated agressively, by copying and -@uref{ -http://appel.lilypond.org/lilypond/gnu-windows/cygwin-installer.patch, +@uref{ftp://ftp.lilypond.org/pub/LilyPond/gnu-windows/latest/cygwin-installer.patch, mutilating } @uref{http://sources.redhat.com/cygwin,Cygwin}'s @uref{ ftp://ftp.franken.de/pub/win32/develop/gnuwin32/cygwin/mirrors/cygnus/snapshots/cygwin-src-20010410.tar.bz2, @@ -50,7 +49,7 @@ Windows installer}. No @uref{http://appel.lilypond.org/lilypond/gnu-windows/tar/lilypond/md5.sum, difficult checksums} or signatures. Enjoy the the thrills of running -@uref{http://appel.lilypond.org/lilypond/gnu-windows/setup.exe, +@uref{ftp://ftp.lilypond.org/pub/LilyPond/gnu-windows/latest/setup.exe, untrusted binaries} with adminstrator rights, on your painfully firewalled intranet. diff --git a/Documentation/windows/lilypond-profile.z.sh b/Documentation/windows/lilypond-profile.z.sh deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/Documentation/windows/ly2dvi-wrapper.sh b/Documentation/windows/ly2dvi-wrapper.sh deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/GNUmakefile.in b/GNUmakefile.in index 9099be977d..81c9024e1c 100644 --- a/GNUmakefile.in +++ b/GNUmakefile.in @@ -18,7 +18,7 @@ SUBDIRS = buildscripts scripts flower lily \ SCRIPTS = configure aclocal.m4 README_FILES = DEDICATION COPYING NEWS CHANGES ROADMAP -README_TXT_FILES = AUTHORS.txt README.txt INSTALL.txt WINDOWS.txt FAQ.txt +README_TXT_FILES = AUTHORS.txt README.txt INSTALL.txt FAQ.txt IN_FILES := $(wildcard *.in) EXTRA_DIST_FILES = lilypond-font-lock.el lilypond-mode.el vimrc VERSION $(README_FILES) $(SCRIPTS) $(IN_FILES) emacsclient.patch NON_ESSENTIAL_DIST_FILES = $(README_TXT_FILES) diff --git a/INSTALL.txt b/INSTALL.txt index f08529a3b7..898649b307 100644 --- a/INSTALL.txt +++ b/INSTALL.txt @@ -3,27 +3,58 @@ INSTALL - compiling and installing GNU LilyPond *********************************************** -Obtaining -========= +Downloading source code +======================= + + If you want to compile LilyPond from source, download here: + * Download stable releases at GNU (ftp://ftp.gnu.org/gnu/lilypond/) + + * Download development releases from by FTP + (ftp://ftp.cs.uu.nl/pub/GNU/LilyPond/development/) and by HTTP + (http://ftp.cs.uu.nl/pub/GNU/LilyPond/development/). + + * ftp (Canadian mirror) (ftp://sca.uwaterloo.ca/pub/) + + * at `lilypond.org' by FTP (ftp://ftp.lilypond.org/pub/LilyPond/) and + HTTP (http://www.lilypond.org/ftp/). + + Installing and compiling requires many additional packages, which are +listed in the installation instructions +(Documentation/topdocs/out-www/INSTALL.html). + +Downloading binaries +==================== + + Binaries are available, but are not updated for every version +released. + * RedHat i386 (ftp://ftp.cs.uu.nl/pub/GNU/LilyPond/RedHat/RPMS/) + + * LinuxPPC (ftp://ftp.cs.uu.nl/pub/GNU/LilyPond/linuxppc) + + * Debian GNU/Linux Stable + (ftp://ftp.debian.org/debian/pool/main/l/lilypond) - You can get the latest version of LilyPond at -ftp://ftp.cs.uu.nl/pub/GNU/LilyPond/ -(ftp://ftp.cs.uu.nl/pub/GNU/LilyPond/). + * Debian GNU/Linux Unstable + (ftp://ftp.debian.org/debian/pool/main/l/lilypond1.3) - There are three options for downloading sources. + * Windows Stable (http://home.austin.rr.com/jbr/jeff/lilypond/) + + * Windows Testing (ftp://ftp.lilypond.org/pub/lilypond/gnu-windows) + +Upgrading +========= - * if you don't have any version, then you can download the entire - `.tar.gz' file. + There are two options for upgrading sources. - * if you have an unpacked source tree of a previous version, you - may use the diffs . + * if you have an unpacked source tree of a previous version, you may + the patches. _If you upgrade by patching do remember to rerun autoconf after applying the patch_. * if you have the `.tar.gz' file of a previous release, you can use xdelta (ftp://ftp.xcf.berkeley.edu/pub/xdelta/). This is much - safer than using normal diffs, and is the recommended way. + safer than using patches, and is the recommended way. The following command produces `lilypond-1.3.122.tar.gz' from `lilypond-1.3.121' identical (up to compression dates) to the .122 @@ -36,7 +67,7 @@ Build requirements 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 LilyPond on Windows page -(http://appel.lilypond.org/lilypond/gnu-windows/). +(ftp://ftp.lilypond.org/pub/LilyPond/gnu-windows/). You need the following packages to compile Lilypond. diff --git a/README.txt b/README.txt index 738fbcd200..c71e734e5f 100644 --- a/README.txt +++ b/README.txt @@ -39,10 +39,9 @@ are in the toplevel directory, as INSTALL.txt Documentation ============= - The documentation is available online at -`http://www.cs.uu.nl/~hanwen/lilypond/index.html'. You can also build -it locally. This does require a working LilyPond binary. The following -formats are supported: + The documentation is available online at `http://www.lilypond.org/'. +You can also build it locally. This does require a working LilyPond +binary. The following formats are supported: * HTML. Refer to INSTALL.txt for information on how to make the HTML documentation. @@ -85,9 +84,9 @@ Windows 32 ========== If you have received this file as part of a DOS/Window32 distribution -(`LilyPond-*.zip'), it is advisable to also download the source -package, since it might contain more documentation -`ftp://ftp.cs.uu.nl/pub/GNU/LilyPond/' +(`LilyPond-*.zip'), it is advisable to also download the source package +(ftp://ftp.cs.uu.nl/pub/GNU/LilyPond/), since it might contain more +documentation Caveats ======= diff --git a/ROADMAP b/ROADMAP index 85a50d9ec8..3befc63473 100644 --- a/ROADMAP +++ b/ROADMAP @@ -4,7 +4,7 @@ LilyPond's source files. Documentation/ bibliography/ .bib files with references to books and articles - ntweb/ building on NT + windows/ building on windows pictures/ .xpms of the logo programmer/ programmers documentation, including a test document topdocs/ sources for the toplevel files (README.txt, INSTALL.txt, etc.) diff --git a/VERSION b/VERSION index 6483ebaf4d..e9f70f477a 100644 --- a/VERSION +++ b/VERSION @@ -1,8 +1,8 @@ PACKAGE_NAME=LilyPond MAJOR_VERSION=1 MINOR_VERSION=3 -PATCH_LEVEL=149 -MY_PATCH_LEVEL=jcn3 +PATCH_LEVEL=150 +MY_PATCH_LEVEL= # use the above to send patches: MY_PATCH_LEVEL is always empty for a # released version. diff --git a/WINDOWS.txt b/WINDOWS.txt deleted file mode 100644 index cd455e9319..0000000000 --- a/WINDOWS.txt +++ /dev/null @@ -1,148 +0,0 @@ - - -WINDOWS - compiling and installing GNU LilyPond on Windows -********************************************************** - - This document is a supplement to INSTALL.txt, you may want to read -that too. - -Obtaining LilyPond -================== - - You can get the latest version of LilyPond at -ftp://ftp.cs.uu.nl/pub/GNU/LilyPond/ -(ftp://ftp.cs.uu.nl/pub/GNU/LilyPond/). - -Windows build requirements -========================== - - You need the following packages to compile Lilypond on Windows. - -`The GNU + Cygnus tools, 1.1.7 or newer.' - Check out the Cygwin webpage (http://sources.redhat.com/cygwin). - You can get the latest version of the GNU + Cygnus tools from - cygnus mirror site (http://sources.redhat.com/cygwin/mirrors.html). - Install everything, including tetex. - -`GUILE 1.4, or newer.' - Check out the GUILE webpage - (http://www.gnu.org/software/guile.html). You may need the patch - `guile-1.4-gnu-windows.patch' included in LilyPond's source - distribution. - -Windows precompiled binaries -============================ - -`LilyPond' - Click here - (http://appel.lilypond.org/lilypond/gnu-windows/setup.exe) to - install LilyPond, or visit LilyPond on Windows - (http://appel.lilypond.org/lilypond/gnu-windows). - - 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 here (http://sources.redhat.com/cygwin/setup.exe), or visit - a Cygwin mirror site - (http://sources.redhat.com/cygwin/mirrors.html). - - Note that none of the developers uses Windows, of course. In fact, -we recommend you to use GNU/Linux for running LilyPond. We provide -these binaries anyway, because it saves us the trouble of helping -Windows users trying to compile LilyPond themselves. - - These binaries are cross compiled for Windows on a GNU/Linux box. -You may want to check out the cross compilation scripts -(http://appel.lilypond.org/lilypond/gnu-windows/cross-1.1.8.tar.gz). - -Windows running requirements -============================ - - GNU LilyPond does use a lot of resources. For operation you need the -following software - -`GUILE' - Included in binary installation. - -`TeX' - A full TeX installation. Click here - (http://prdownloads.sourceforge.net/miktex/miktex-2.0-lvl-1.zip) - to install basic MiKTeX commands, or visit www.miktex.org - (http://www.miktex.org). - -`PostScript tools' - - `GSView-2.6, or' - This old package has two advantages. It has gsview and - ghostscript bundeled, and it doesn't popup _Register - Now|Cancel_ windows all the time. It doesn't work together - with Yap to display PostScript specials. - - Click here - (ftp://ftp.cs.wisc.edu/ghost/ghostgum/gsv26w32.exe) to - install GSView-2.6 (GhostView for Windows), or visit - ftp.cs.wisc.edu (ftp://ftp.cs.wisc.edu/ghost/ghostgum). - - `GSView-3.6 and GhostScript-6.50' - If you install both these packages, Yap will display - PostScript specials. You get annoying _Register Now|Cancel_ - popups, though. - - Click here - (ftp://ftp.cs.wisc.edu/ghost/ghostgum/gsv36w32.exe) for - GSview and Click here - (ftp://mirror.cs.wisc.edu/pub/mirrors/ghost/AFPL/gs650/gs650w32.exe) - for GhostScript. ftp.cs.wisc.edu - (ftp://ftp.cs.wisc.edu/ghost/ghostgum). or visit the - Ghostview and GSview site. - -`Python' - Click here (http://www.python.org/ftp/python/win32/py152.exe) to - install Python-1.5.2, or visit www.python.org - (http://www.python.org). - - Python > 1.5.2 has ugly licensing issues, so we only used and - tested 1.5.2. - -Windows running setup -===================== - - If you're lucky, after running `setup.exe' you're all set up. - - Open a LilyPond shell (or any bash shell), and type - lilypond --help - - If you don't see something similar to - 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 - [..] - - you should try adding `/usr/lilypond-x.y.z/bin' to your PATH, do: - PATH=/usr/lilypond-1.3.147/bin:$PATH - - and try again. - - [TODO: - - * politely ask windows users not to complain but rather send -instructive bug reports along with patches. - - * 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 - - ] - 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/no-notation/parse5.ly b/input/no-notation/parse5.ly deleted file mode 100644 index da016ea1f0..0000000000 --- a/input/no-notation/parse5.ly +++ /dev/null @@ -1,12 +0,0 @@ - -\score { - \context ChordNames \chords { - c1 /e % trivial - - c1 * 1/2 % think - c1 * 3 /e % think - - c1 * 1/3 /e % hard - c1/2 % must have parse error here - } -} 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/memory.ly b/input/test/memory.ly deleted file mode 100644 index d288ae6233..0000000000 --- a/input/test/memory.ly +++ /dev/null @@ -1,16 +0,0 @@ -\version "1.3.146" -%{ -do a memory stress test. -%} - - -bla = \notes { - c1(((( c1 \break c1 \break c1 \break c1 \break c1 \break c1 \break c1 \break c1 \break c1 \break c1 \break c1 \break c1 \break c1 \break c1 \break c1 \break c1 \break c1 \break c1 \break c1 \break c1 \break c1 \break c1 \break c1 \break c1 \break c1 \break c1 \break c1 \break c1 \break c1 \break c1 \break c1 \break c1 \break c1 \break c1 \break c1 \break c1 \break c1 \break ))))c1} - -\score { \context Score < - \bla \bla \bla \bla \bla \bla \bla - > - \paper { Gourlay_maxmeaures = 2. } -} - - 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/part-combine.ly b/input/test/part-combine.ly index 98ab7f1221..843c22bf66 100644 --- a/input/test/part-combine.ly +++ b/input/test/part-combine.ly @@ -10,15 +10,15 @@ voices according to actual rhythm and pitch. User-defined texts such as } \score{ - \context Staff = flauti < + \notes \context Staff = flauti < \time 4/4 \context Voice=one \partcombine Voice - \context Thread=one \notes\relative c'' { + \context Thread=one\relative c'' { c4 d e f | b,4 d c d | r2 e4 f | c4 d e f | c4 r e f | c4 r e f | c4 r a r | a a r a | a2 \property Voice.soloADue = ##f a | } - \context Thread=two \notes\relative c'' { + \context Thread=two\relative c'' { g4 b d f | r2 c4 d | a c c d | a4. b8 c4 d c r e r | r2 s2 | a,4 r a r | a r r a | a2 \property Voice.soloADue = ##f a | 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/staff-side-slur.ly b/input/test/staff-side-slur.ly deleted file mode 100644 index b667e6d7a8..0000000000 --- a/input/test/staff-side-slur.ly +++ /dev/null @@ -1,22 +0,0 @@ -\version "1.3.146" -\score{ - \context Staff \notes\relative c''{ - \property Staff.instrument = "Toeters" - c c c c(\break - )c c c c ~\break - c c c c\break - } - \paper{ - linewidth=60.0\mm -% \translator { \HaraKiriStaffContext } - \translator { \OrchestralScoreContext } - \translator { - \StaffContext - \consists "Instrument_name_engraver" - marginHangOnClef = 1 - } - } -} - - - diff --git a/input/test/super-sub.ly.orig b/input/test/super-sub.ly.orig deleted file mode 100644 index 5d55806d8d..0000000000 --- a/input/test/super-sub.ly.orig +++ /dev/null @@ -1,27 +0,0 @@ -\header { -texidoc="Test super/sub, raise and overstrike." -} - - - -\score { - \notes \relative a'' { - c^#'("bar") - c^#'(("bar")) - c^#'((("bar"))) - c^#'(bold "bar") - c^#'((bold) "bar") - c^#'(((bold)) "bar") - c^#'(bold ("bar")) - c^#'(bold "bar") - c^#'(columns "foe" ((raise . 3) "bar")) - c^#'(columns "foe" (((raise . 3) "bar"))) - c^#'(columns "foe" (((raise . 3)) "bar")) - c^#'(columns "foe" (super "12") (sub "3 4")) - c^#'(columns "foe" (super (overstrike "o") "/") (sub "x")) - c^#'(columns "foe" (overstrike "o") "/") - c^#'(columns "foe" ((bold roman overstrike) "o") "/") - c^#'(columns "foe" ((extent . (0 . 0)) "o") "/") - c^#'(columns "foo" (super "bar" (super "baz"))) - } -} \ No newline at end of file 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/menuet.ly b/input/tutorial/menuet.ly deleted file mode 100644 index 6fba5af310..0000000000 --- a/input/tutorial/menuet.ly +++ /dev/null @@ -1,30 +0,0 @@ - -% 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/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/parser.yy b/lily/parser.yy index bf19d07cc1..043a658fcf 100644 --- a/lily/parser.yy +++ b/lily/parser.yy @@ -8,13 +8,6 @@ (c) 1997--2001 Han-Wen Nienhuys Jan Nieuwenhuizen */ - -/* - Two shift/reduce problems: - - - - - */ - #include #include @@ -45,6 +38,7 @@ #include "transposed-music.hh" #include "time-scaled-music.hh" #include "repeated-music.hh" + #include "lilypond-input-version.hh" #include "grace-music.hh" #include "part-combine-music.hh" @@ -53,8 +47,6 @@ #include "un-relativable-music.hh" #include "chord.hh" - - bool regular_identifier_b (SCM id) { @@ -71,13 +63,24 @@ regular_identifier_b (SCM id) } +Music* +set_property_music (SCM sym, SCM value) +{ + Music * p = new Music (SCM_EOL); + p->set_mus_property ("symbol", sym); + p->set_mus_property ("iterator-ctor", + Property_iterator::constructor_cxx_function); + + p->set_mus_property ("value", value); + return p; +} + bool is_duration_b (int t) { return t && t == 1 << intlog2 (t); } - void set_music_properties (Music *p, SCM a) { @@ -88,15 +91,9 @@ set_music_properties (Music *p, SCM a) } -// mmm JUNKME ? -Lilypond_version oldest_version ("1.3.59"); -void -print_lilypond_versions (ostream &os) -{ - os << _f ("Oldest supported input version: %s", oldest_version.str ()) - << endl; -} + + // needed for bison.simple's malloc () and free () @@ -238,6 +235,7 @@ yylex (YYSTYPE *s, void * v_l) %token TONICNAME_PITCH %token CHORDMODIFIER_PITCH %token DURATION_IDENTIFIER +%token FRACTION %token IDENTIFIER @@ -278,7 +276,7 @@ yylex (YYSTYPE *s, void * v_l) %type chord_additions chord_subtractions chord_notes chord_step %type chord %type chord_note chord_inversion chord_bass -%type duration_length +%type duration_length fraction %type embedded_scm scalar %type Music Sequential_music Simultaneous_music Music_sequence @@ -291,7 +289,7 @@ yylex (YYSTYPE *s, void * v_l) %type command_req verbose_command_req %type extender_req %type hyphen_req -%type string bare_number number_expression +%type string bare_number number_expression number_term number_factor %type score_block score_body @@ -301,32 +299,13 @@ yylex (YYSTYPE *s, void * v_l) %type script_abbreviation -/* - left association: must reduce - a - b - c = (a - b) - c - */ -%left '-' '+' -%left '*' '/' -%left UNARY_MINUS - - - -/* - multiplied_duration precedence - `* 3 / c' and `* 1 / 2' should be equal, try shift rather than - forced reduce, and take higher precedence than plain `*' and `/' - - -- ugr, but it doesn't really work? input/no-notation/parse5.ly - it seems that: - %left *forces* reduce - %right *forces* shift +%left '-' '+' - but we need (the default): *try* shift, and we can't override - above %left '*' '/' with `%prec default setting'? +/* We don't assign precedence to / and *, because we might need varied +prec levels in different prods */ - */ -%right MUL1 MUL2 INVERSION +%left UNARY_MINUS %% @@ -335,11 +314,9 @@ lilypond: /* empty */ | lilypond assignment { } | lilypond error { THIS->error_level_i_ = 1; - //THIS->parser_error (_ ("ly invalid")); } | lilypond INVALID { THIS->error_level_i_ = 1; - //THIS->parser_error (_ ("ly invalid")); } ; @@ -357,7 +334,6 @@ toplevel_expression: } | score_block { score_global_array.push ($1); - } | output_def { if (dynamic_cast ($1)) @@ -380,13 +356,10 @@ chordmodifiers_block: CHORDMODIFIERS notenames_body { $$ = $2; } ; - notenames_block: PITCHNAMES notenames_body { $$ = $2; } ; - - notenames_body: embedded_scm { int i = scm_ilength ($1); @@ -432,8 +405,16 @@ assignment: THIS->remember_spot (); } /* cont */ '=' identifier_init { + + /* + Should find generic way of associating input with objects. + */ + Input ip = THIS->pop_spot (); + if (! regular_identifier_b ($1)) - THIS->parser_error (_ ("Identifier should have alphabetic characters only")); + { + ip.warning (_ ("Identifier should have alphabetic characters only")); + } THIS->lexer_p_->set_identifier (ly_scm2string ($1), $4); @@ -444,10 +425,6 @@ assignment: all objects can be unprotected as soon as they're here. */ - /* - Should find generic way of associating input with objects. - */ - THIS->pop_spot (); } ; @@ -841,11 +818,11 @@ Composite_music: THIS->remember_spot (); } /* CONTINUED */ - bare_unsigned '/' bare_unsigned Music + fraction Music { - int n = $3; int d = $5; - Music *mp = $6; + int n = gh_scm2int (gh_car ($3)); int d = gh_scm2int (gh_cdr ($3)); + Music *mp = $4; $$ = new Time_scaled_music (SCM_EOL); $$->set_spot (THIS->pop_spot ()); @@ -972,13 +949,8 @@ translator_change: property_def: PROPERTY STRING '.' STRING '=' scalar { - Music *t = new Music (SCM_EOL); - - t->set_mus_property ("iterator-ctor", - Property_iterator::constructor_cxx_function); - t->set_mus_property ("symbol", scm_string_to_symbol ($4)); - t->set_mus_property ("value", $6); - + + Music *t = set_property_music (scm_string_to_symbol ($4), $6); Context_specced_music *csm = new Context_specced_music (SCM_EOL); csm->set_mus_property ("element", t->self_scm ()); @@ -1087,12 +1059,7 @@ command_element: $1-> set_spot (THIS->here_input ()); } | BAR STRING { - Music *t = new Music (SCM_EOL); - - t->set_mus_property ("iterator-ctor", - Property_iterator::constructor_cxx_function); - t->set_mus_property ("symbol", ly_symbol2scm ("whichBar")); - t->set_mus_property ("value", $2); + Music *t = set_property_music (ly_symbol2scm ("whichBar"), $2); Context_specced_music *csm = new Context_specced_music (SCM_EOL); csm->set_mus_property ("element", t->self_scm ()); @@ -1104,13 +1071,8 @@ command_element: csm->set_mus_property ("context-type", ly_str02scm ("Score")); } | PARTIAL duration_length { - Music * p = new Music (SCM_EOL); - p->set_mus_property ("symbol", ly_symbol2scm ( "measurePosition")); - p->set_mus_property ("iterator-ctor", - Property_iterator::constructor_cxx_function); - Moment m = - unsmob_duration ($2)->length_mom (); - p->set_mus_property ("value", m.smobbed_copy ()); + Music * p = set_property_music (ly_symbol2scm ( "measurePosition"),m.smobbed_copy ()); Context_specced_music * sp = new Context_specced_music (SCM_EOL); sp->set_mus_property ("element", p->self_scm ()); @@ -1140,19 +1102,33 @@ command_element: $$ =sp ; sp-> set_mus_property ("context-type", ly_str02scm ("Staff")); } - | TIME_T bare_unsigned '/' bare_unsigned { - Music * p = new Music (SCM_EOL); - p->set_mus_property ("symbol", - ly_symbol2scm ( "timeSignatureFraction")); - p->set_mus_property ("iterator-ctor", - Property_iterator::constructor_cxx_function); + | TIME_T fraction { + Music * p1 = set_property_music (ly_symbol2scm ( "timeSignatureFraction"), $2); - p->set_mus_property ("value", gh_cons (gh_int2scm ($2), - gh_int2scm ($4))); + int l = gh_scm2int (gh_car ($2)); + int o = gh_scm2int (gh_cdr ($2)); + + Moment one_beat = Moment (1)/Moment (o); + Moment len = Moment (l) * one_beat; + + + Music *p2 = set_property_music (ly_symbol2scm ("measureLength"), len.smobbed_copy ()); + Music *p3 = set_property_music (ly_symbol2scm ("beatLength"), one_beat.smobbed_copy ()); + + SCM list = gh_list (p1->self_scm (), p2->self_scm (), p3->self_scm(), SCM_UNDEFINED); + Sequential_music *seq = new Sequential_music (SCM_EOL); + seq->set_mus_property ("elements", list); + Context_specced_music * sp = new Context_specced_music (SCM_EOL); - sp->set_mus_property ("element", p->self_scm ()); - scm_unprotect_object (p->self_scm ()); + sp->set_mus_property ("element", seq->self_scm ()); + + + + scm_unprotect_object (p3->self_scm ()); + scm_unprotect_object (p2->self_scm ()); + scm_unprotect_object (p1->self_scm ()); + scm_unprotect_object (seq->self_scm ()); $$ = sp; @@ -1613,32 +1589,24 @@ steno_duration: -/* - Multiplied durations are always multiplied, ie, - c1 * INT or c1 * RAT. - - No support for c1 /4 and c1 /2/2. - - '*' and '/' are declared %left, with makes them reduce rather than - shift. - - Because there are no a/b/c association problems anymore, it is - safe to allow '*' and '/' to shift. - - * 1 / 4 shifts to match second rule: '* 1 / 4' - - '/' TONIC_NAME shifts to match rule: chord_inversion - - */ multiplied_duration: steno_duration { $$ = $1; } - | multiplied_duration '*' bare_unsigned %prec MUL1 { - $$ = unsmob_duration ($$)->compressed ($3).smobbed_copy (); + | steno_duration '*' bare_unsigned { + $$ = unsmob_duration ($$)->compressed ( $3) .smobbed_copy (); + } + | steno_duration '*' FRACTION { + Moment m (gh_scm2int (gh_car ($3)), gh_scm2int (gh_cdr ($3))); + + $$ = unsmob_duration ($$)->compressed (m).smobbed_copy (); } - | multiplied_duration '*' bare_unsigned '/' bare_unsigned %prec MUL2 { - $$ = unsmob_duration ($$)->compressed (Moment ($3, $5)).smobbed_copy (); + ; + +fraction: + FRACTION { $$ = $1; } + | UNSIGNED '/' UNSIGNED { + $$ = gh_cons (gh_int2scm ($1), gh_int2scm ($3)); } ; @@ -1797,7 +1765,7 @@ chord_inversion: { $$ = SCM_EOL; } - | '/' steno_tonic_pitch %prec INVERSION { + | '/' steno_tonic_pitch { $$ = $2; } ; @@ -1855,29 +1823,38 @@ chord_note: UTILITIES */ number_expression: - bare_number { - $$ = $1; + number_expression '+' number_term { + $$ = scm_sum ($1, $3); } - | '-' number_expression %prec UNARY_MINUS { - $$ = scm_difference ($2, SCM_UNDEFINED); + | number_expression '-' number_term { + $$ = scm_difference ($1, $3); } - | number_expression '*' number_expression { + | number_term + ; + +number_term: + number_factor { + $$ = $1; + } + | number_factor '*' number_factor { $$ = scm_product ($1, $3); } - | number_expression '/' number_expression { + | number_factor '/' number_factor { $$ = scm_divide ($1, $3); } - | number_expression '+' number_expression { - $$ = scm_sum ($1, $3); - } - | number_expression '-' number_expression { - $$ = scm_difference ($1, $3); - } - | '(' number_expression ')' { + ; + +number_factor: + '(' number_expression ')' { $$ = $2; } + | '-' number_factor { /* %prec UNARY_MINUS */ + $$ = scm_difference ($2, SCM_UNDEFINED); + } + | bare_number ; + bare_number: UNSIGNED { $$ = gh_int2scm ($1); 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/lily/volta-spanner.cc b/lily/volta-spanner.cc index 356d696d52..3ffe7b78da 100644 --- a/lily/volta-spanner.cc +++ b/lily/volta-spanner.cc @@ -6,6 +6,7 @@ (c) 1997--2001 Jan Nieuwenhuizen */ +#include #include "box.hh" #include "debug.hh" @@ -46,16 +47,22 @@ Volta_spanner::brew_molecule (SCM smob) if (!bar_arr.size ()) return SCM_EOL; - bool no_vertical_start = false; - bool no_vertical_end = to_boolean (me->get_grob_property ("last-volta")); Spanner *orig_span = dynamic_cast (me->original_l_); bool first_bracket = orig_span && (orig_span->broken_into_l_arr_[0] == (Spanner*)me); bool last_bracket = orig_span && (orig_span->broken_into_l_arr_.top () == (Spanner*)me); - no_vertical_start = orig_span && !first_bracket; - no_vertical_end = orig_span && !last_bracket; + bool no_vertical_start = orig_span && !first_bracket; + bool no_vertical_end = orig_span && !last_bracket; + SCM bars = me->get_grob_property ("bars"); + Grob * endbar = unsmob_grob (gh_car (bars)); + SCM glyph = endbar->get_grob_property("glyph"); + String str = ly_scm2string(glyph); + const char* cs = str.ch_C(); + no_vertical_end |= + (strcmp(cs,":|")!=0 && strcmp(cs,"|:")!=0 && strcmp(cs,"|.")!=0 + && strcmp(cs,":|:")!=0 && strcmp(cs,".|")!=0); Real staff_thick = me->paper_l ()->get_var ("stafflinethickness"); Real half_space = 0.5; 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/make/out/lilypond.lsm b/make/out/lilypond.lsm index ba96f088ca..665f1cfd22 100644 --- a/make/out/lilypond.lsm +++ b/make/out/lilypond.lsm @@ -1,15 +1,15 @@ Begin3 Title: LilyPond -Version: 1.3.149 -Entered-date: 17APR01 +Version: 1.3.150 +Entered-date: 23APR01 Description: @BLURB@ Keywords: music notation typesetting midi fonts engraving Author: hanwen@cs.uu.nl (Han-Wen Nienhuys) janneke@gnu.org (Jan Nieuwenhuizen) Maintained-by: hanwen@stack.nl (Han-Wen Nienhuys) Primary-site: sunsite.unc.edu /pub/Linux/apps/sound/convert - 1000k lilypond-1.3.149.tar.gz + 1000k lilypond-1.3.150.tar.gz Original-site: ftp.cs.uu.nl /pub/GNU/LilyPond/development/ - 1000k lilypond-1.3.149.tar.gz + 1000k lilypond-1.3.150.tar.gz Copying-policy: GPL End diff --git a/make/out/lilypond.spec b/make/out/lilypond.spec index fa05908bff..31e7302fb7 100644 --- a/make/out/lilypond.spec +++ b/make/out/lilypond.spec @@ -1,11 +1,11 @@ %define info yes Name: lilypond -Version: 1.3.149 +Version: 1.3.150 Release: 1 License: GPL Group: Applications/Publishing -Source0: ftp.cs.uu.nl:/pub/GNU/LilyPond/development/lilypond-1.3.149.tar.gz +Source0: ftp.cs.uu.nl:/pub/GNU/LilyPond/development/lilypond-1.3.150.tar.gz # music notation software for.. ? Summary: A program for printing sheet music. URL: http://www.cs.uu.nl/~hanwen/lilypond diff --git a/mutopia/J.S.Bach/Petites-Preludes/preludes-1.ly b/mutopia/J.S.Bach/Petites-Preludes/preludes-1.ly index 119471cba3..db728f19d5 100644 --- a/mutopia/J.S.Bach/Petites-Preludes/preludes-1.ly +++ b/mutopia/J.S.Bach/Petites-Preludes/preludes-1.ly @@ -95,13 +95,13 @@ upper = \context Staff=upper \notes\relative c { lower = \context Staff=lower \notes\relative c{ \context Voice=i \property Voice.TextScript \set #'font-style = #'roman - c4 e g^"\\textsharp"-\mordent g,4 | - d'4-\mordent f a-\mordent^"\\textsharp" a,4 | + c4 e g^#'(music "accidentals-1") -\mordent g,4 | + d'4-\mordent f a-\mordent^#'(music "accidentals-1") a,4 | e' e'-\mordent a, b-\upprall | c4 e, fis gis-\upprall | a4 c, d e-\upprall | f4 e d-\prall c | - g'-\mordent^"\\textsharp" g, g'-\mordent g, | + g'-\mordent^#'(music "accidentals-1") g, g'-\mordent g, | g'-\mordent g, g'-\mordent g, | g' r s s | s s s s \clef "bass" | < diff --git a/mutopia/J.S.Bach/Petites-Preludes/preludes-2.ly b/mutopia/J.S.Bach/Petites-Preludes/preludes-2.ly index e4046587dc..e8f231a3f9 100644 --- a/mutopia/J.S.Bach/Petites-Preludes/preludes-2.ly +++ b/mutopia/J.S.Bach/Petites-Preludes/preludes-2.ly @@ -60,7 +60,7 @@ lower = \context Staff \notes\relative c{ g2 r4 g | a8 a, c e c a g' e | fis2 r4 d | - g-\mordent-"(\\textsharp)" g, 4 g'-\mordent g, | + g-\mordent-#'(music "accidentals-1") g, 4 g'-\mordent g, | % mordents in brackets... g'-\mordent g, g'-\mordent g, | g'-\mordent g, g'-\mordent g, | diff --git a/mutopia/J.S.Bach/Petites-Preludes/preludes-5.ly b/mutopia/J.S.Bach/Petites-Preludes/preludes-5.ly index 3792cad340..d760a91db4 100644 --- a/mutopia/J.S.Bach/Petites-Preludes/preludes-5.ly +++ b/mutopia/J.S.Bach/Petites-Preludes/preludes-5.ly @@ -26,8 +26,8 @@ upper = \context Staff \notes\relative c { \stemUp \property Voice.TextScript \set #'font-style = #'roman - c4-\mordent^"(\\textsharp)" r r | - c4-\mordent^"(\\textsharp)" r r + c4-\mordent^#'(music "accidentals-1") r r | + c4-\mordent^#'(music "accidentals-1") r r \property Voice.TextScript \set #'font-style = #'italic } \context Voice=ii { \stemDown a4 r r | a4 r r } @@ -124,7 +124,7 @@ lower = \context Staff \notes\relative c{ fis,4 r r d fis d | \property Voice.TextScript \set #'font-style = #'roman - g4-\mordent^"(\\textsharp)" r r8 f!8 | + g4-\mordent^#'(music "accidentals-1") r r8 f!8 | \property Voice.TextScript \set #'font-style = #'italic e4-\prall r r | f4-\mordent r r8 e | diff --git a/ps/lily.ps b/ps/lily.ps deleted file mode 100644 index 154fa206c0..0000000000 --- a/ps/lily.ps +++ /dev/null @@ -1,265 +0,0 @@ -%!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/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 008a6e7d67..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,6 +160,7 @@ (ly-number->string thick) " draw_bezier_sandwich")) +; TODO: use HEIGHT argument (define (start-line height) (string-append "\n" 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"')) ################################ diff --git a/tex/fetdefs.tex b/tex/fetdefs.tex index fca3c1bfd2..e69de29bb2 100644 --- a/tex/fetdefs.tex +++ b/tex/fetdefs.tex @@ -1,23 +0,0 @@ -% fetdefs.tex -% encapsulating tex backend for auto-generated feta definitions - -% fix chord.cc::banter_str before removing these - -\def\fetdef#1#2{% - \def#1{\hbox{\char#2}}} - -\fetdef\fetasharp{16} -\fetdef\fetanatural{17} -\fetdef\fetaflat{18} - -% \font\fetasixteenfont=feta16 - -\def\fetasixteenfont{\message{TeX strings are deprecated. Please use -Scheme markup expressions. See the reference manual for more information}} - -\def\fetafont{\fetasixteenfont} -\def\textflat{{\fetafont\raise 1ex\hbox{\fetaflat}}} -\def\textnatural{{\fetafont\raise 1ex\hbox{\fetanatural}}} -\def\textsharp{{\fetafont\raise1ex\hbox{\fetasharp}}} - -\endinput diff --git a/tex/lilyponddefs.tex b/tex/lilyponddefs.tex index bf471d8122..2daf37fca9 100644 --- a/tex/lilyponddefs.tex +++ b/tex/lilyponddefs.tex @@ -77,7 +77,4 @@ nolilyfooter\texsuffix\endcsname \fi -% fix chord.cc::banter_str before removing these -\input fetdefs - \endinput