---- ../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
============
* 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.
* 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
=======
<table align=left>
<tr><td bgcolor="#e8e8ff"><a href="@INDEX@"><b>Home</b></a></td></tr>
<tr><td><font size=-1>
- <a href="http://www.cs.uu.nl/~hanwen/lilypond">Development</a><br>
- <a href="http://appel.lilypond.org/wiki?LilyPond">WikiWikiWeb</a><br>
+ <a href="http://www.lilypond.org/">LilyPond website</a><br>
+ <a href="http://www.lilypond.org/wiki">WikiWikiWeb</a><br>
<a href="http://www.gnu.org">GNU Project</a><br>
<a href="http://www2.iro.umontreal.ca/~pinard/po/registry.cgi?domain=lilypond">Translations</a><br>
- <a href="http://www.lilypond.org">LilyPond dot org</a><br>
+ <a href="http://www.cs.uu.nl/~hanwen/lilypond/">Han-Wen's site</a><br>
<br>
</td></tr>
<tr><td bgcolor="#e8e8ff">
</td></tr>
<tr><td><font size=-1>
<a href="@TOP@Documentation/out-www/CHANGES.html">Change Log</a><br>
- <a href="@TOP@Documentation/topdocs/out-www/FAQ.html">Small FAQ</a><br>
- <a href="http://appel.lilypond.org/wiki?LilyPondFaqs">Full FAQ</a><br>
+ <a href="http://appel.lilypond.org/wiki?LilyPondFaqs">FAQ</a><br>
<a href="@TOP@Documentation/user/out-www/lilypond/lilypond.html">User manual</a><br>
<a href="@TOP@Documentation/out-www/regression-test.html">Regression Test</a><br>
<a href="@TOP@Documentation/user/out-www/lilypond-internals/lilypond-internals.html">Documentation of internals</a><br>
<br>
</td></tr>
<tr><td bgcolor="#e8e8ff">
- <a href="@INDEX@#download-source"><b>Download Source</b></a>
+ <b>Download </b>
</td></tr>
<tr><td><font size=-1>
- <a href="ftp://ftp.gnu.org/pub/gnu/lilypond">Stable</a><br>
- <a href="ftp://ftp.cs.uu.nl/pub/GNU/LilyPond/development">Development</a><br>
- <br>
- </td></tr>
- <tr><td bgcolor="#e8e8ff">
- <a href="@INDEX@#download-binary"><b>Download Binary</b></a>
- </td></tr>
- <tr><td><font size=-1>
- <a href="ftp://ftp.cs.uu.nl/pub/GNU/LilyPond/RedHat/RPMS/">RedHat i386</a><br>
- <a href="ftp://appel.lilypond.org/pub/gnu/LilyPond/linuxppc-2000-Q4">LinuxPPC</a><br>
- <a href="ftp://ftp.debian.org/debian/pool/main/l/lilypond">Debian Stable</a><br>
- <a href="ftp://ftp.debian.org/debian/pool/main/l/lilypond1.3">Debian Unstable</a><br>
- <a href="http://home.austin.rr.com/jbr/jeff/lilypond/">Windows Stable</a><br>
- <a href="http://appel.lilypond.org/lilypond/gnu-windows">Windows Unstable</a><br>
- <br>
+<a href="@TOP@Documentation/topdocs/out-www/INSTALL.html#download-source">Source</a><br>
+ <a href="@TOP@Documentation/topdocs/out-www/INSTALL.html#download-binaries">Binary</a> <br>
</td></tr>
<tr><td bgcolor="#e8e8ff">
<a href="@INDEX@#music"><b>Music</b></a>
@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 }
@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
@chapter INSTALL - compiling and installing GNU LilyPond
-@section Obtaining
+@section Downloading source code
-You can get the latest version of LilyPond at
-@uref{ftp://ftp.cs.uu.nl/pub/GNU/LilyPond/,
-ftp://ftp.cs.uu.nl/pub/GNU/LilyPond/}.
+@html
+<a name="download-source">
+@end html
-There are three options for downloading sources.
+If you want to compile LilyPond from source, download here:
+@itemize @bullet
+@item Download stable releases at
+@uref{ftp://ftp.gnu.org/gnu/lilypond/,GNU}
+@item Download development releases from
+@uref{ftp://ftp.cs.uu.nl/pub/GNU/LilyPond/development/, by FTP} and
+@uref{http://ftp.cs.uu.nl/pub/GNU/LilyPond/development/, by HTTP}.
+@item @uref{ftp://sca.uwaterloo.ca/pub/, ftp (Canadian mirror)}
+@item at @code{lilypond.org} by
+@uref{ftp://ftp.lilypond.org/pub/LilyPond/, FTP} and
+@uref{http://www.lilypond.org/ftp/, HTTP}.
+@end itemize
+
+Installing and compiling requires many additional packages, which are
+listed in the @uref{Documentation/topdocs/out-www/INSTALL.html,
+installation instructions}.
-@itemize
-@item if you don't have any version, then you can download
- the entire @file{.tar.gz} file.
-@item if you have an unpacked source tree of a previous version, you
-may use the diffs .
+@section Downloading binaries
+
+@html
+<a name="download-binary">
+@end html
+Binaries are available, but are not updated for every version released.
+@itemize @bullet
+@item @uref{ftp://ftp.cs.uu.nl/pub/GNU/LilyPond/RedHat/RPMS/, RedHat i386}
+@item @uref{ftp://ftp.cs.uu.nl/pub/GNU/LilyPond/linuxppc, LinuxPPC}
+@item
+@uref{ftp://ftp.debian.org/debian/pool/main/l/lilypond,
+Debian GNU/Linux Stable}
+@item
+@uref{ftp://ftp.debian.org/debian/pool/main/l/lilypond1.3,
+Debian GNU/Linux Unstable}
+@item @uref{http://home.austin.rr.com/jbr/jeff/lilypond/, Windows Stable}
+@item @uref{ftp://ftp.lilypond.org/pub/lilypond/gnu-windows, Windows
+Testing}
+@end itemize
+
+@section Upgrading
+
+There are two options for upgrading sources.
+
+@itemize
+@item if you have an unpacked source tree of a previous version, you
+may the patches.
+
@emph{If you upgrade by patching do remember to rerun autoconf after
applying the patch}.
-
@item if you have the @code{.tar.gz} file of a previous release, you can
use
@uref{ftp://ftp.xcf.berkeley.edu/pub/xdelta/, xdelta}.
- This is much safer than using normal diffs, and is the recommended way.
+ This is much safer than using patches, and is the recommended way.
The following command produces @file{lilypond-1.3.122.tar.gz} from
@file{lilypond-1.3.121} identical (up to compression dates) to the .122
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.
@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
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
+++ /dev/null
-\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
-
-
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
in PostScript, and LilyPond input. Others use LilyPond too, and have put
scores on the web. Head over to @uref{http://appel.lilypond.org/wiki?DownloadLilyPondScores}
-@html
-<a name="download-source">
-@end html
-@unnumberedsec Download
-
-If you want to compile LilyPond from source, download here:
-@itemize @bullet
-@item Download stable releases at
-@uref{ftp://ftp.gnu.org/gnu/lilypond/,GNU}
-@item Download development releases from
-@uref{ftp://ftp.cs.uu.nl/pub/GNU/LilyPond/development/, by FTP} and
-@uref{http://ftp.cs.uu.nl/pub/GNU/LilyPond/development/, by HTTP}.
-@item @uref{ftp://sca.uwaterloo.ca/pub/, ftp (Canadian mirror)}
-@item @uref{ftp://ftp.lilypond.org/pub/LilyPond/, mirror (Europe)}
-@end itemize
-
-Installing and compiling requires many additional packages, which are
-listed in the @uref{Documentation/topdocs/out-www/INSTALL.html,
-installation instructions}.
-
-@html
-<a name="download-binary">
-@end html
-Binaries are available, but are not updated for every version released.
-@itemize @bullet
-@item @uref{ftp://ftp.cs.uu.nl/pub/GNU/LilyPond/RedHat/RPMS/, RedHat i386}
-@item @uref{ftp://ftp.cs.uu.nl/pub/GNU/LilyPond/RedHat/RPMS/ppc, LinuxPPC}
-@item
-@uref{ftp://ftp.debian.org/debian/pool/main/l/lilypond,
-Debian GNU/Linux Stable}
-@item
-@uref{ftp://ftp.debian.org/debian/pool/main/l/lilypond1.3,
-Debian GNU/Linux Unstable}
-@item @uref{http://home.austin.rr.com/jbr/jeff/lilypond/, Windows Stable}
-@item @uref{http://appel.lilypond.org/lilypond/gnu-windows, Windows
-Testing}
-@end itemize
-
@html
<a name="mailing-lists">
@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}
@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
@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
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
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
@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}
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]
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.
--- /dev/null
+@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}.
--- /dev/null
+\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
+
+
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.
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,
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.
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)
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
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.
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.
==========
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
=======
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.)
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.
+++ /dev/null
-
-
-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
-
- ]
-
--- /dev/null
+\score {\notes\context Voice {
+c4 \clef bass \grace c'8 c4
+ }}
--- /dev/null
+
+\score { \notes { c^#`(rows ";" (lines "1" (bold "2") "3"))}}
+
--- /dev/null
+
+\score { \notes { c^#`(rows ";" (lines "1" (bold "2") "3"))}}
+
+++ /dev/null
-
-\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
- }
-}
\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
--- /dev/null
+\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"
+}
+}}
-\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"
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"
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"
>
\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
c'4 c4
\property Voice.fontSize= #-2
- b16 (*1/2
+ b16*1/2 (
\property Voice.fontSize= #0
) g4 *31/32
+
+\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"
\translator { \VoiceContext noAutoBeaming = ##t }
\translator { \HaraKiriStaffContext }
- \translator { \OrchestralScoreContext skipBars = 1 }
+ \translator { \OrchestralScoreContext skipBars = ##t }
}
}
+
+\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 }
\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'' {
\alias Voice
\consists Pitch_squash_engraver
\consists Local_key_engraver
- squashedPosition = 6
+ squashedPosition = #0
NoteHead \override #'style = #'slash
Accidentals \override #'transparent = ##t
}
-4\version "1.3.146"
+\version "1.3.146"
somewhatLong = \lyrics{
+++ /dev/null
-\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. }
-}
-
-
}
\context Voice=four {
\stemDown\slurDown\tieDown
- \property Voice.horizontalNoteShift=-1
+ \property Voice .NoteColumn \override #'horizontal-shift = #-1
fis
}
>
}
\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 |
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{
+++ /dev/null
-\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
- }
- }
-}
-
-
-
+++ /dev/null
-\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
+\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 { }
>
\paper {
- font_normal = 12.
\translator {
\StaffContext
\consists Instrument_name_engraver
+% DOCUMENTME!
+
\version "1.3.146"
>
\paper {
- font_normal = 12.
\translator {
\StaffContext
TimeSignature \override #'style = #'C
- \consists Instrument_name_engraver
}
}
}
+++ /dev/null
-
-% 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
- }
-}
--- /dev/null
+
+% 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
+ }
+}
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);
#include "side-position-interface.hh"
#include "item.hh"
-/// where is c-0 in the staff?
+
class Clef_engraver : public Engraver
{
public:
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_;
void create_clef ();
void set_central_c (SCM, SCM, SCM);
void set_glyph ();
+ void inspect_clef_properties ();
};
Clef_engraver::Clef_engraver ()
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");
int major_i_;
int minor_i_;
int patch_i_;
+ String extra_patch_str_;
};
extern Lilypond_version oldest_version;
extern Sources* source_global_l;
#include <iostream.h> /* gcc 3.0 */
-void print_lilypond_versions (ostream &os);
+
#endif /* MAIN_HH */
class Timing_translator : public virtual Translator
{
-
- SCM last_time_sig_;
public:
VIRTUAL_COPY_CONS (Translator);
Timing_translator ();
public:
Moment measure_position () const;
Moment measure_length () const;
- void set_time_signature ();
+
};
#endif // TIMING_TRANSLATOR_HH
*/
if (gh_string_p (s) || gh_pair_p (s))
create_text (s);
-
}
if (dynamic_cast<Spanner*> (i.elem_l_)
*/
#include <stdio.h>
+#include <string.h>
#include "config.h"
#include "string.hh"
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
*/
*/
+
+SCM scan_fraction (String);
+
%}
%option c++
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}
ALPHAWORD {A}+
DIGIT {N}
UNSIGNED {N}+
+FRACTION {N}+\/{N}+
INT -?{UNSIGNED}
REAL ({INT}\.{N}*)|(-?\.{N}+)
KEYWORD \\{WORD}
{NOTECOMMAND} {
return scan_escaped_word (YYText () + 1);
}
+ {FRACTION} {
+ yylval.scm = scan_fraction (YYText ());
+ return FRACTION;
+ }
{DIGIT} {
yylval.i = String_convert::dec2_i (String (YYText ()));
\" {
start_quote ();
}
+ {FRACTION} {
+ yylval.scm = scan_fraction (YYText ());
+ return FRACTION;
+ }
{UNSIGNED} {
yylval.i = String_convert::dec2_i (String (YYText ()));
return UNSIGNED;
{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;
+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)
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));
+}
+
{
Array<String> version;
version = String_convert::split_arr (str, '.');
- assert (version.size () == 3);
+
major_i_ = version[0].value_i ();
minor_i_ = version[1].value_i ();
- patch_i_ = version[2].value_i ();
+ patch_i_ = 0;
+ if (version.size () >= 3)
+ patch_i_ = version[2].value_i ();
+
+ if (version.size () >= 4)
+ extra_patch_str_ = version[3];
}
String
(c) 1997--2001 Han-Wen Nienhuys <hanwen@cs.uu.nl>
Jan Nieuwenhuizen <janneke@gnu.org>
*/
-
-/*
- Two shift/reduce problems:
- -
- -
- */
-
#include <ctype.h>
#include <iostream.h>
#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"
#include "un-relativable-music.hh"
#include "chord.hh"
-
-
bool
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)
{
}
-// 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 ()
%token <scm> TONICNAME_PITCH
%token <scm> CHORDMODIFIER_PITCH
%token <scm> DURATION_IDENTIFIER
+%token <scm> FRACTION
%token <id> IDENTIFIER
%type <scm> chord_additions chord_subtractions chord_notes chord_step
%type <music> chord
%type <scm> chord_note chord_inversion chord_bass
-%type <scm> duration_length
+%type <scm> duration_length fraction
%type <scm> embedded_scm scalar
%type <music> Music Sequential_music Simultaneous_music Music_sequence
%type <music> command_req verbose_command_req
%type <request> extender_req
%type <request> hyphen_req
-%type <scm> string bare_number number_expression
+%type <scm> string bare_number number_expression number_term number_factor
%type <score> score_block score_body
%type <scm> 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
%%
| 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"));
}
;
}
| score_block {
score_global_array.push ($1);
-
}
| output_def {
if (dynamic_cast<Paper_def*> ($1))
CHORDMODIFIERS notenames_body { $$ = $2; }
;
-
notenames_block:
PITCHNAMES notenames_body { $$ = $2; }
;
-
-
notenames_body:
embedded_scm {
int i = scm_ilength ($1);
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);
all objects can be unprotected as soon as they're here.
*/
- /*
- Should find generic way of associating input with objects.
- */
- THIS->pop_spot ();
}
;
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 ());
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 ());
$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 ());
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 ());
$$ =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;
-/*
- 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));
}
;
{
$$ = SCM_EOL;
}
- | '/' steno_tonic_pitch %prec INVERSION {
+ | '/' steno_tonic_pitch {
$$ = $2;
}
;
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);
me->get_grob_property ("bracket-thick"),
SCM_UNDEFINED);
- /*
+/*
TODO: sort this out.
Another thing:
(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);
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));
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 ();
- }
}
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
}
-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;
}
(c) 1997--2001 Jan Nieuwenhuizen <janneke@gnu.org>
*/
+#include <string.h>
#include "box.hh"
#include "debug.hh"
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<Spanner*> (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;
% weird effects when doing instrument names for
% piano staffs
- instrument = #""
- instr = #""
+ instrument = ##f
+ instr = ##f
\accepts "Voice"
}
\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
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
%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
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" |
<
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, |
{
\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 }
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 |
+++ /dev/null
-%!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
-
--- /dev/null
+%!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
+
(break-align-symbol . Staff_bar)
(glyph . "|")
(break-glyph-function . ,default-break-barline)
- (barsize-procedure . ,Bar::get_staff_bar_size)
+ (bar-size-procedure . ,Bar::get_staff_bar_size)
(molecule-callback . ,Bar::brew_molecule)
(visibility-lambda . ,all-visible)
(breakable . #t)
(Script . (
;; don't set direction here: it breaks staccato.
(molecule-callback . ,Script::brew_molecule)
+ (padding . 0.3)
(X-offset-callbacks . (,Side_position_interface::centered_on_parent))
(before-line-breaking-callback . ,Script::before_line_breaking)
(meta . ,(grob-description "Script" script-interface side-position-interface font-interface))
))
(SpanBar . (
(break-align-symbol . Staff_bar)
- (barsize-procedure . ,Span_bar::get_bar_size)
+ (bar-size-procedure . ,Span_bar::get_bar_size)
(molecule-callback . ,Bar::brew_molecule)
(visibility-lambda . ,begin-of-line-invisible)
(X-extent-callback . ,Span_bar::width_callback)
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.")
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
;; URG: now we can't use scm output without Lily
(ly-gulp-file "lilyponddefs.ps")
" {exch pop //systemdict /run get exec} "
- (ly-gulp-file "lily.ps")
+ (ly-gulp-file "music-drawing-routines.ps")
"{ exch pop //systemdict /run get exec } "
))
(ly-number->string thick)
" draw_bezier_sandwich"))
+; TODO: use HEIGHT argument
(define (start-line height)
(string-append
"\n"
(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"))
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:
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"'))
################################
-% 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
nolilyfooter\texsuffix\endcsname
\fi
-% fix chord.cc::banter_str before removing these
-\input fetdefs
-
\endinput