]> git.donarmstrong.com Git - lilypond.git/commitdiff
release: 1.3.147 release/1.3.147
authorHan-Wen Nienhuys <hanwen@xs4all.nl>
Sun, 8 Apr 2001 23:35:55 +0000 (01:35 +0200)
committerHan-Wen Nienhuys <hanwen@xs4all.nl>
Sun, 8 Apr 2001 23:35:55 +0000 (01:35 +0200)
============

* Updated doco to reflect Windows installer.

* Ripped Cygnus' installer/updater for Windows.

* Cleanups: chord-name.scm.

* Added 'trunc' target for ports, and run at local-dist: in
ports/mutopia topdir.

* Bugfixes: update-lily.py

* Bugfix: synchronised german-chords.ly with chord-name.scm.

* --srcdir build fix: really included dummy-interfaces.itexi now.

* Added warning message, rather than encouragement, against configuring
without kpathsea support.

* Moved convert-ly targets from ports to ly make, added ly templates
to mutopia and input directories.  Bugfix to convert-ly.  Ran
convert-ly in mutopia dir.

* Recommented some scheme comments in .lys, checked that convert-ly
doesn't destroy them.

* Bugfixes to convert-ly: don't try to open unexistent file (eg,
unexpanded wildcard).  Don't remove one semicolon of ';;' scheme
comments, don't remove semicolon after hash: #;

* Fixed some errors from ; conversion.

1.3.146.h

147 files changed:
CHANGES
Documentation/topdocs/index.tely
Documentation/user/GNUmakefile
Documentation/user/appendices.itely
Documentation/user/convert-ly.itexi
Documentation/user/converters.itely
Documentation/user/dummy-interfaces.itexi [new file with mode: 0644]
Documentation/user/lilypond-book.itely
Documentation/user/lilypond.tely
Documentation/user/literature.itely
Documentation/user/ly2dvi.itexi
Documentation/user/mutopia.itely
Documentation/user/preface.itely
Documentation/user/refman.itely
Documentation/user/tutorial.itely
Documentation/windows/LilyPond.ico [new file with mode: 0644]
INSTALL.txt
VERSION
WINDOWS.txt [new file with mode: 0644]
configure
input/ascii-art/as1.ly [new file with mode: 0644]
input/ascii-art/as2.ly [new file with mode: 0644]
input/regression/merge-differently-dotted.ly [new file with mode: 0644]
input/regression/stem-direction-down.ly
input/regression/volta-broken-left-edge.ly
input/test/Cc-chords.ly
input/test/as.ly [deleted file]
input/test/as1.ly [deleted file]
input/test/as2.ly [deleted file]
input/test/beam-position.ly
input/test/boxed-molecule.ly
input/test/lyrics.ly
input/test/music-box.ly [new file with mode: 0644]
input/test/test-german-chords.ly
input/tutorial/GNUmakefile
input/tutorial/lilbook.tex [new file with mode: 0644]
input/tutorial/sammartini.ly
lily/align-interface.cc
lily/beam.cc
lily/parser.yy
lily/rest.cc
lily/stem.cc
ly/book-fragment.ly
ly/center-fragment.ly
ly/engraver.ly
ly/fragment.ly
ly/german-chords.ly
ly/property.ly
ly/script.ly
ly/spanners.ly
make/out/lilypond.lsm
make/out/lilypond.spec
make/ports-targets.make
mutopia/E.Satie/petite-ouverture-a-danser.ly
mutopia/F.Schubert/standchen.ly
mutopia/J.S.Bach/wtk1-fugue1.ly
ports/mutopia/ArbeauT/Orch/GNUmakefile [deleted file]
ports/mutopia/ArbeauT/Orch/belle/GNUmakefile [deleted file]
ports/mutopia/BachJS/BWV1008/GNUmakefile [deleted file]
ports/mutopia/BachJS/BWV1008/solo-cello-suite-ii/GNUmakefile [deleted file]
ports/mutopia/BachJS/BWV1042/GNUmakefile [deleted file]
ports/mutopia/BachJS/BWV1042/concerto-in-e-major/GNUmakefile [deleted file]
ports/mutopia/BachJS/BWV1043/GNUmakefile [deleted file]
ports/mutopia/BachJS/BWV1043/concerto-in-d-minor/GNUmakefile [deleted file]
ports/mutopia/BachJS/BWV772/GNUmakefile [deleted file]
ports/mutopia/BachJS/BWV772/bach-invention-01/GNUmakefile [deleted file]
ports/mutopia/BachJS/BWV846/GNUmakefile [deleted file]
ports/mutopia/BachJS/BWV846/wtk1-fugue1/GNUmakefile [deleted file]
ports/mutopia/BachJS/BWV846/wtk1-prelude1/GNUmakefile [deleted file]
ports/mutopia/BachJS/BWV847/GNUmakefile [deleted file]
ports/mutopia/BachJS/BWV847/wtk1-fugue2/GNUmakefile [deleted file]
ports/mutopia/BachJS/BWV847/wtk1-prae2/GNUmakefile [deleted file]
ports/mutopia/BachJS/BWV851/GNUmakefile [deleted file]
ports/mutopia/BachJS/BWV851/fugue_re_mineur_BWV851/GNUmakefile [deleted file]
ports/mutopia/BachJS/BWV854/GNUmakefile [deleted file]
ports/mutopia/BachJS/BWV854/wtk1-fugue9/GNUmakefile [deleted file]
ports/mutopia/BachJS/BWV854/wtk1-prelude9/GNUmakefile [deleted file]
ports/mutopia/BachJS/BWV871/GNUmakefile [deleted file]
ports/mutopia/BachJS/BWV871/wtk2-fugue2/GNUmakefile [deleted file]
ports/mutopia/BachJS/BWV997/Bach_Preludio_BWV997/GNUmakefile [deleted file]
ports/mutopia/BachJS/BWV997/GNUmakefile [deleted file]
ports/mutopia/BachJS/BWV997/bwv997-01prelude/GNUmakefile [deleted file]
ports/mutopia/BachJS/BWV997/bwv997-02fuga/GNUmakefile [deleted file]
ports/mutopia/BachJS/BWV997/bwv997-03sarabande/GNUmakefile [deleted file]
ports/mutopia/BachJS/BWV997/bwv997-04gigue/GNUmakefile [deleted file]
ports/mutopia/BachJS/BWV997/bwv997-05double/GNUmakefile [deleted file]
ports/mutopia/BachJS/BWV999/GNUmakefile [deleted file]
ports/mutopia/BachJS/BWV999/praludum-in-c-moll/GNUmakefile [deleted file]
ports/mutopia/BachJS/chorale_1/GNUmakefile [deleted file]
ports/mutopia/BanchieriA/Reg1_Suon1/GNUmakefile [deleted file]
ports/mutopia/BanchieriA/Reg1_Suon2/GNUmakefile [deleted file]
ports/mutopia/BanchieriA/Reg1_Suon3/GNUmakefile [deleted file]
ports/mutopia/BanchieriA/Reg1_Suon4/GNUmakefile [deleted file]
ports/mutopia/BanchieriA/Reg1_Suon5/GNUmakefile [deleted file]
ports/mutopia/BanchieriA/Reg1_Suon6/GNUmakefile [deleted file]
ports/mutopia/BeethovenLv/O62/Coriolan/GNUmakefile [deleted file]
ports/mutopia/BeethovenLv/O62/GNUmakefile [deleted file]
ports/mutopia/BeethovenLv/WoO59/GNUmakefile [deleted file]
ports/mutopia/BeethovenLv/WoO59/fur-elise/GNUmakefile [deleted file]
ports/mutopia/BendaJA/Benda_SonateG3/GNUmakefile [deleted file]
ports/mutopia/BruhnsN/BWV847/GNUmakefile [deleted file]
ports/mutopia/BruhnsN/BWV847/Pfeminor/GNUmakefile [deleted file]
ports/mutopia/CarcassiM/O60/GNUmakefile [deleted file]
ports/mutopia/CarcassiM/O60/carcassi-op60-01/GNUmakefile [deleted file]
ports/mutopia/CarcassiM/O60/carcassi-op60-03/GNUmakefile [deleted file]
ports/mutopia/CarcassiM/O60/carcassi-op60-08/GNUmakefile [deleted file]
ports/mutopia/CarcassiM/O60/carcassi-op60-15/GNUmakefile [deleted file]
ports/mutopia/CarulliF/carulli-duet-in-g/GNUmakefile [deleted file]
ports/mutopia/ClementiM/O36/GNUmakefile [deleted file]
ports/mutopia/ClementiM/O36/sonatina-36-1/GNUmakefile [deleted file]
ports/mutopia/ClementiM/O36/sonatina-36-2/GNUmakefile [deleted file]
ports/mutopia/ClementiM/O36/sonatina-36-3/GNUmakefile [deleted file]
ports/mutopia/ClementiM/O36/sonatina-36-4/GNUmakefile [deleted file]
ports/mutopia/DowlandJ/ALS1/GNUmakefile [deleted file]
ports/mutopia/DowlandJ/ALS1/unquietthoughts/GNUmakefile [deleted file]
ports/mutopia/GNUmakefile
ports/mutopia/GiordianoG/caromioben/GNUmakefile [deleted file]
ports/mutopia/JoplinS/maple/GNUmakefile [deleted file]
ports/mutopia/Mendelssohn-BartholdyF/GNUmakefile [new file with mode: 0644]
ports/mutopia/MilanL/milan-pavan2/GNUmakefile [deleted file]
ports/mutopia/MozartWA/KV447/GNUmakefile [deleted file]
ports/mutopia/MozartWA/KV447/horn-concerto-3/GNUmakefile [deleted file]
ports/mutopia/PaganiniN/O1/GNUmakefile [deleted file]
ports/mutopia/PaganiniN/O1/caprice-24/GNUmakefile [deleted file]
ports/mutopia/Saint-SaensC/O94/GNUmakefile [deleted file]
ports/mutopia/Saint-SaensC/O94/morceau-de-concert/GNUmakefile [deleted file]
ports/mutopia/SatieE/gnossienne_1/GNUmakefile [deleted file]
ports/mutopia/SatieE/gnossienne_2/GNUmakefile [deleted file]
ports/mutopia/SatieE/gnossienne_3/GNUmakefile [deleted file]
ports/mutopia/SatieE/gnossienne_4/GNUmakefile [deleted file]
ports/mutopia/SatieE/gnossienne_5/GNUmakefile [deleted file]
ports/mutopia/SatieE/gymnopedie_1/GNUmakefile [deleted file]
ports/mutopia/SatieE/gymnopedie_2/GNUmakefile [deleted file]
ports/mutopia/SatieE/gymnopedie_3/GNUmakefile [deleted file]
ports/mutopia/SchubertF/D891/AnSylvia/GNUmakefile [deleted file]
ports/mutopia/SchubertF/D891/GNUmakefile [deleted file]
ports/mutopia/SorF/GNUmakefile [new file with mode: 0644]
scm/chord-name.scm
scm/documentation-lib.scm
scm/drums.scm
scm/font.scm
scm/grob-description.scm
scm/lily.scm
scripts/GNUmakefile
scripts/convert-ly.py
scripts/ly2dvi.py
scripts/update-lily.py

diff --git a/CHANGES b/CHANGES
index 9da4d8c8fb3aec974569bc6077dbc17586b5d106..0eefa79a9943d5ab1da98d955bc26cfec758447b 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -1,6 +1,3 @@
---- ../lilypond-1.3.146.jcn3/CHANGES   Fri Apr  6 17:25:56 2001
-++ b/CHANGES   Sun Apr  8 20:07:26 2001
-@@ -1,3 +1,10 @@
 1.3.146.jcn4
 ============
 
@@ -8,16 +5,20 @@
 
 * Ripped Cygnus' installer/updater for Windows.
 
- 1.3.146.jcn3
- ============
- 1.3.146.jcn1
-============
+* Cleanups: chord-name.scm.
+
+* Added 'trunc' target for ports, and run at local-dist: in
+ports/mutopia topdir.
+
+* Bugfixes: update-lily.py
+
+* Bugfix: synchronised german-chords.ly with chord-name.scm.
+
+* --srcdir build fix: really included dummy-interfaces.itexi now.
 
 * Added warning message, rather than encouragement, against configuring
 without kpathsea support.
 
-* --srcdir build fix.
-
 * Moved convert-ly targets from ports to ly make, added ly templates
 to mutopia and input directories.  Bugfix to convert-ly.  Ran
 convert-ly in mutopia dir.
@@ -31,9 +32,28 @@ comments, don't remove semicolon after hash: #;
 
 * Fixed some errors from ; conversion.
 
-1.3.145.jcn2
+1.3.146.hwn3
 ============
 
+* ly2dvi bugfixes and latexoptions  support (Mark Hindley)
+
+* Reference manual fixes.
+
+* Added lilypond-book tutorial section
+
+* Hairy bugfix for Align_interface::align_to_fixed_distance (). This
+fixes gaps that appear sometimes when you put things on top of a piano
+staff.
+
+* Added Rune's apply example of wtk1-prelude1.
+
+* Bugfixes for wtk1-fugue1
+
+* Add a check for regular identifiers to parser.
+
+1.3.145
+=======
+
 * Make and ly2dvi fixes.
  
 * Made feta-timesig C a bit rounder. 
@@ -68,7 +88,7 @@ comments, don't remove semicolon after hash: #;
 
 * Bugfix: LyricsVoice.stz property now works.
 
-* Remove sem-colons from lilypond syntax. 
+* Remove semi-colons from lilypond syntax. 
 
 * Removed a grammar ambiguity: '-' DIGIT (fingering, only possible in \notes)
 now can not be interpreted as a negative number.
@@ -350,11 +370,6 @@ Slur::set_spacing_rods into Spanner::set_spacing_rods
 
 1.3.140
 =======
-
-
-1.3.139.jcn5
-============
 
 * Coriolan gets mutopia-id 57.
 
index 2272a4f2f4c075c153e7e299bb39c96fe15b8d37..93084b449609af7c95f97fad390f611ee7e59c05 100644 (file)
@@ -80,12 +80,10 @@ If you want to compile LilyPond from source, download here:
 @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/,the source}
-@item @uref{http://sca.uwaterloo.ca/lilypond/, by http (Canadian
-mirror)} and
-@uref{ftp://sca.uwaterloo.ca/pub/, ftp (Canadian mirror)} 
-@item 
-@uref{ftp://ftp.lilypond.org/pub/LilyPond/, mirror (Europe)}
+@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
index 207ee6654ba151d461b18822d3d554ef77b70616..1dc1853f4434e519246e1d10a5a669ab5b08ecff 100644 (file)
@@ -115,8 +115,8 @@ local-clean:
        rm -f fonts.aux fonts.log feta*.tfm feta*.*pk 
        rm -rf $(outdir)/lilypond $(outdir)/lilypond-internals
 
-$(outdir)/lilypond.nexi: $(outdir)/interfaces.itexi
-$(outdir)/lilypond.texi: $(outdir)/interfaces.itexi
+#$(outdir)/lilypond.nexi: $(outdir)/interfaces.itexi
+#$(outdir)/lilypond.texi: $(outdir)/interfaces.itexi
 
 # Rules for the automatically generated documentation
 # When cross-compiling, we don't have lilypond, so we fake
@@ -136,6 +136,6 @@ $(outdir)/lilypond-internals.nexi $(outdir)/lilypond-internals.texi:
        touch $(outdir)/$(*F).nexi
 
 $(outdir)/interfaces.itexi:
-       cp $(src-depth)/Documentation/user/dummy-interfaces.itexi $@
+       cp dummy-interfaces.itexi $@
 endif
 
index 800cd82d6317a1c3c83d68f5d1774a38dd91db33..17ab55f4c08450eaf16581bf4817f65760c7f812 100644 (file)
 @node Lyrics mode definition
 @section Lyrics mode definition
 
+The definition of lyrics mode is ludicrous, and this will remain so
+until the authors of LilyPond acquire a deeper understanding of
+character encoding, or someone else steps up to fix this.
+
+
 A word in Lyrics mode begins with: an alphabetic character, @code{_},
 @code{?}, @code{!}, @code{:}, @code{'}, the control characters @code{^A}
 through @code{^F}, @code{^Q} through @code{^W}, @code{^Y}, @code{^^},
@@ -143,16 +148,13 @@ scheme = \chords {
 @end lilypond
 @end quotation
 
-
-[barnumbers look silly, fixme.]
+@c [barnumbers look silly, fixme.]
 
 
 
 @node MIDI instruments
 @section MIDI instruments
 
-[todo: make nicely formatted table]
-
 @example 
 "acoustic grand"            "contrabass"           "lead 7 (fifths)"
 "bright acoustic"           "tremolo strings"      "lead 8 (bass+lead)"
index 9d001f89b1391930f83847e091583496faec1ec8..f8af4c7df8eec38f0aa3cd72310e43bf354252f1 100644 (file)
@@ -16,15 +16,19 @@ detect the old version number.
 
 
 @table @code
-@item --assume-old
+@item -a,--assume-old
     If version number cannot be determined, apply all conversions.
-@item --edit
+@item -e,--edit
     Do an inline edit of the input file. override @code{--output}
-@item --from=@var{FROM_PATCHLEVEL}
+@item -f,--from=@var{FROM_PATCHLEVEL}
     Set the level to convert from. If this is not set, convert-ly will
     guess this, on the basis of @code{\version} strings in the file
-@item --output
+@item -o,--output
     The output file to write.  
+@item -n,--no-version
+    Normally, convert-ly adds a @code{\version} indicator 
+to the output. Specifying this option suppresses this.  
+
 @item --show-rules
     shows all known conversions, and exit
 @item --to=@var{TO_PATCHLEVEL}
@@ -36,7 +40,8 @@ Not all language changes are handled. Multiple output options won't
 work.
 
 @code{convert-ly} is written in @uref{http://www.python.org,Python}. It
-was written by @email{hanwen@@cs.uu.nl, Han-Wen Nienhuys}.
+was written by @email{hanwen@@cs.uu.nl, Han-Wen Nienhuys}. Report bugs
+to @code{bug-gnu-music@@gnu.org}
 
 
 
index 84077b7130b941869d61bc066e84d76a323343ae..945f4f15d224e0b5de57e75d921c915f9b288034 100644 (file)
@@ -20,6 +20,11 @@ Midi2ly translates a MIDI input file to a LilyPond source file. MIDI
 (Music Instrument Digital Interface) is a standard for digital
 instruments: it specifies cabling, a serial protocol and a file format.
 
+The MIDI file format is a de facto standard format for exporting music
+from other programs, so this capability may come in useful when you want
+to import files from a program that has no converter for its native
+format.
+
 It is possible to record a MIDI file using a digital keyboard, and then
 convert it to @file{.ly}. However, human players can not rhythmically
 exact enough to make a MIDI to .ly conversion trivial.  midi2ly tries to
@@ -31,10 +36,6 @@ lot of time.
 Hackers who know about signal processing are invited to write  a more
 robust midi2ly.
 
-MIDI is also a de facto standard format for exporting music from other
-programs, so this capability may come in useful when you want to import
-files from a program that has no converter for its native format.
-
 @subsection Invoking midi2ly
 
 @example
@@ -157,7 +158,7 @@ Report bugs to @email{bug-gnu-music@@gnu.org}.
 @section pmx2ly
 
 PMX is a Musixtex preprocessor written by Don Simons, see
-@uref{http://www.gmd.de/Misc/Music/musixtex/software/pmx/}.
+@uref{http://icking-music-archive.sunsite.dk/Misc/Music/musixtex/software/pmx/}.
 
 Report bugs to @email{bug-gnu-music@@gnu.org}.
 
@@ -188,13 +189,13 @@ Written by @email{Han-Wen Nienhuys,hanwen@@cs.uu.nl}.
 @node musedata2ly
 @section musedata2ly
 
- Musedata (@uref{http://www.musedata.org/}) is an electronic library of
+Musedata (@uref{http://www.musedata.org/}) is an electronic library of
 classical music scores, currently comprising about 800 composition
 dating from 1700 to 1825.  The music is encoded in so-called Musedata
 format
 (@uref{http://www.ccarh.org/publications/books/beyondmidi/online/musedata}).
 musedata2ly converts a set of musedata files to one .ly file, and will
-include a \header field if a .ref file is supplied
+include a @code{\header} field if a @file{.ref} file is supplied
 
 @subsection Invoking musedata2ly
 
diff --git a/Documentation/user/dummy-interfaces.itexi b/Documentation/user/dummy-interfaces.itexi
new file mode 100644 (file)
index 0000000..65772d0
--- /dev/null
@@ -0,0 +1,6 @@
+
+@node Full Grob interface list
+@unnumbered Full Grob interface list
+
+The automatic documentation failed to build.
+Visit @uref{http://www.cs.uu.nl/~hanwen/lilypond/Documentation,lilypond online}
index f324d0e56729f0ee4d56e2941c7ff277e283724a..bfa123b1fee789ea95d1e8f06df3a0471ad240da 100644 (file)
@@ -246,6 +246,18 @@ commands. @code{\preLilypondExample} and @code{posLilypondExample} is
 defined to nothing by default, and the user can redefine them
 to whatever he wants.
 
+@cindex titling and lilypond-book
+@cindex lilypond-book and titling
+@cindex \header in LaTeX documents
+
+If you want to combine music that has titling in @code{\header}
+files, you should add  the following to the top of your LaTeX
+@example
+\input titledefs.tex
+\def\preLilypondExample@{\def\mustmakelilypondtitle@{@}@}
+@end example
+
+
 
 @subsection Command line options
 
index 1c88efb3347faf465a491b07c90a336ef7094219..375272f238eb88dc3db01dfa8c7d3d0d2e4c9245 100644 (file)
@@ -71,7 +71,6 @@ this and other documentation.
 * Preface::                        Preface.
 * Tutorial::                       A tutorial introduction to LilyPond.
 * Reference Manual::               Reference Manual.
-* Mutopia project::                Mutopia project.
 * Invoking LilyPond::              Operation.
 * Bug reports::                    Where to report bugs.
 * ly2dvi::                         Generating nice output with titles.
@@ -80,7 +79,6 @@ this and other documentation.
 * lilypond-book::                  Interleaving text with music.
 * Internals::                      How it all works.
 * Literature::                     Additional reading
-* Full Grob interface list::       Generated list of all Grob properties.
 * Index of internals:(lilypond-internals).  Auto generated detailed documentation.
 * Index::                          Unified index.
 * Function Index::                 Function index.
@@ -96,7 +94,6 @@ this and other documentation.
 @mbinclude preface.itely
 @mbinclude tutorial.itely
 @mbinclude refman.itely
-@mbinclude mutopia.itely
 @mbinclude internals.itely
 @mbinclude invoking.itexi
 @mbinclude bugs.itexi
@@ -105,7 +102,7 @@ this and other documentation.
 @mbinclude lilypond-book.itely
 @mbinclude converters.itely
 @mbinclude literature.itely
-@mbinclude interfaces.itexi
+
 
 @c FIXME: Index has two alphabetically sorted lists @code vs plain?
 @node Index
index 0140a5e529017e2509a8d60bc15796053cdd0270..e7b18c5e3aef13096e122e517f81529f58a62a4e 100644 (file)
@@ -4,7 +4,7 @@
 If you need to know more about music notation, here are some interesting titles to read
 
 @table @cite
-@item banter
+@item Banter 1987
 Harald Banter, Akkord Lexikon.  Schott's S@"{o}hne
 1987. Mainz, Germany ISBN 3-7957-2095-8
 
@@ -13,7 +13,7 @@ unification for all different kinds of chord names.
 
 
 
-@item gerou96
+@item Gerou 19xx
 
 Tom Gerou and Linda Lusk, Essential Dictionary of Music
 Notation.  Alfred Publishing, Van Nuys CA ISBN 0-88284-768-6
@@ -21,22 +21,8 @@ Notation.  Alfred Publishing, Van Nuys CA ISBN 0-88284-768-6
 A concise, alphabetically ordered list of typesetting and music
 (notation) issues which covers most of the normal  cases.
 
-@item Stone80
 
-Kurt Stone, Music Notation in the Twentieth Century
-Norton, New York 1980.
-
-The most important book on notation in recent years: it describes music
-notation for modern serious music, but starts out with a thorough
-overview of existing traditional notation practices.
-
-@item read-notation,
-Gardner Read,  Music Notation: a Manual of Modern Practice.
-Taplinger Publishing, New York (2nd edition).
-
-A standard work on music notation.  
-
-@item hader48,
+@item Hader 1948,
 
 Karl Hader, Aus der Werkstatt eines Notenstechers. Waldheim--Eberle
 Verlag, Vienna 1948.
@@ -49,7 +35,14 @@ compactly formulated rules on musical orthography. This book is out of
 print.
 
 
-@item ross,
+@item Read 1968
+Gardner Read,  Music Notation: a Manual of Modern Practice.
+Taplinger Publishing, New York (2nd edition).
+
+A standard work on music notation.  
+
+
+@item Ross 1987,
 Ted Ross, Teach yourself the art of music engraving and processing.
 Hansen House, Miami, Florida    1987
 
@@ -57,7 +50,17 @@ This book is about engraving, i.e.  professional typesetting.  It contains
 directions on good typesetting, but the sections on reproduction
 technicalities, how to use pens and history are interesting.
 
-@item  wanske,
+
+@item Stone 1980
+
+Kurt Stone, Music Notation in the Twentieth Century
+Norton, New York 1980.
+
+The most important book on notation in recent years: it describes music
+notation for modern serious music, but starts out with a thorough
+overview of existing traditional notation practices.
+
+@item Wanske 1988,
 
 Helene Wanske, Musiknotation --- Von der Syntax des Notenstichs zum
 EDV-gesteuerten Notensatz.  Schott-Verlag, Mainz 1988.  ISBN
index abb6dc2f2b63e17a1f0770b11a5e1c7d98ca97de..fb08e7be110f4d202eda26791f6d53d66e654dc7 100644 (file)
@@ -40,7 +40,7 @@ files. The temporary directory is created in the current directory as @code{ly2d
     Also generate PostScript output.
 @item -s,--set=@var{KEY}=@var{VAL}
     Add @var{key}= @var{val} to the settings, overriding those specified
-in the files. Possible keys: language, latexheaders, latexpackages,
+in the files. Possible keys: language, latexheaders, latexpackages, latexoptions,
 papersize, pagenumber, linewidth, orientation, textheight.
 @item -v,--version
 Show version information 
@@ -75,6 +75,9 @@ generate titling:
     Name of the instrument, centered below the arranger
 @item piece
     Name of the piece, leftflushed below the instrument
+@item tagline
+    Line to print at the bottom of last page.  Default: ``Lily was here,
+@var{version-number}''.
 @end table
 
 
@@ -102,6 +105,9 @@ so you can add multiple packages using multiple @code{-s=latexpackages} options.
        Normally read from the @code{\header} block. Default value:
 @code{geometry}.
 
+@item latexoptions
+    Specify additional options for the La@TeX{} @code{\documentclass}. You can put any valid value here. This was designed to allow ly2dvi to produce output for double-sided paper, with balanced margins and pagenumbers on alternating sides. To achieve this specify @code{twoside}
+
 @item orientation
     Set orientation. Choices are @code{portrait} or @code{landscape}. Is
 read from the @code{\paper} block, if set.
index 1ce696d77fcd4c8675573d7b07f6b4a3fc649d6e..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 (file)
@@ -1,82 +0,0 @@
-@node Mutopia project
-@chapter Mutopia project
-@cindex mutopia project
-@cindex sheet music archive
-
-[TODO:
-
-* different name. Ports sucks
-
-* drop for 1.4
-
-* mutopia is rather offtopic in the lilypond manual
-
-]
-
-
-Mutopia is a collection of public domain sheet music.  All the music
-on Mutopia is completely free to download, print out, perform and
-distribute.  Mutopia is similar in spirit to Project Gutenburg.  You can
-help the project by entering music (either by hand, or by converting
-from scans or MIDI) and submitting it.  Point your browser to the
-@uref{http://www.mutopiaproject.org}.
-
-@menu
-* Mutopia ports collection::    
-@end menu
-
-@node Mutopia ports collection
-@section Mutopia ports collection
-@cindex mutopia ports collection
-
-
-The ports collection to makes all music in Mutopia very easily
-accessible for LilyPond users to study, edit and print.  The
-ports-system performs the following functions:
-
-@enumerate 1
-@item  download anything from Mutopia
-@item  compile for printing or for Mutopia submission
-@item  publish and package for Mutopia
-@end enumerate
-
-Type @samp{make help} in @file{ports} directory to see possible
-targets.
-
-@ignore
-[TODO]
-
-Now that we have the @samp{make sync} target, maybe we should
-only dist the composers in the tarball:
-@example
-ports/mutopia/ArbeauT
-ports/mutopia/BachJS
-ports/mutopia/BanchieriA
-ports/mutopia/BeethovenLv
-ports/mutopia/BendaJA
-ports/mutopia/BruhnsN
-ports/mutopia/CarcassiM
-ports/mutopia/CarulliF
-ports/mutopia/ClementiM
-ports/mutopia/DowlandJ
-ports/mutopia/GiordianoG
-ports/mutopia/JoplinS
-ports/mutopia/MilanL
-ports/mutopia/MozartWA
-ports/mutopia/PaganiniN
-ports/mutopia/Saint-SaensC
-ports/mutopia/SatieE
-ports/mutopia/SchubertF
-@end example
-
-To build the Solo Cello Suite from J.S.Bach, you would do:
-@example
-$ cd ports/mutopia/BachJS
-$ make sync
-$ cd BWV1008/solo-cello-suite-ii
-$ make mutopia
-@end example
-
-Disadvantage: no clue of available titles.
-@end ignore
-
index 20a85a9ce364ab62a9244536a296db7c2b54ed33..2ddcf76b3aaed46d34ce9357cbb50f2c2c9c7532 100644 (file)
@@ -4,17 +4,16 @@
 
 
 It must have been during a rehearsal of the EJE (Eindhoven Youth
-Orchestra), somewhere in 1994 that Jan, one of the cranked violists
-told Han-Wen, one of the distorted french horn players, about the
-grand new project he was working on.  It was an automated system for
-printing music (to be precise, it was MPP, a preprocessor for
-MusiXTeX).  As it happened, Han-Wen accidentally wanted to print out
-some parts from a score, so he started looking at the software, and he
-quickly got hooked.  We soon realised that MPP was fundamentally
-broken by design and it slowly died during 1995.  We debated a lot
-about the requirements to an inputformat, but that didn't produce any
-new code.  In 1996, Han-Wen started LilyPond.  This time, Jan got
-sucked into Han-Wen's new project.  The rest is, as they say, history.
+Orchestra), somewhere in 1995 that Jan, one of the cranked violists told
+Han-Wen, one of the distorted french horn players, about the grand new
+project he was working on.  It was an automated system for printing
+music (to be precise, it was MPP, a preprocessor for MusiXTeX).  As it
+happened, Han-Wen accidentally wanted to print out some parts from a
+score, so he started looking at the software, and he quickly got hooked.
+It was soon decided that MPP was a dead end. After lots of
+philosophizing and heated e-mail exchanges Han-Wen started LilyPond in
+1996.  This time, Jan got sucked into Han-Wen's new project.  The rest
+is, as they say, history.
 
 You're reading the preface of the manual for LilyPond 1.4, which is in
 all honesty, the first release of LilyPond that combines stability,
@@ -22,11 +21,10 @@ flexibility and good documentation.  We hope you will have as much fun
 in using LilyPond as we have when hacking it.
 
 This manual was written to help you learn LilyPond, but as you might
-imagine, we ourselves don't have much to learn about it.  Therefore,
-we can't really judge whether the manual is clear for a newbie, but
-maybe you can!  So, should you find any part of the manual vague or
-outdated, please tell us your suggestions: if you don't, we'll never
-know.
+imagine, we ourselves don't have much to learn about it.  We can't
+really judge whether the manual is helpful for users, but maybe you can!
+So should you find any part of the manual vague, unclear or outdated,
+please let us know.
 
 Han-Wen and Jan
 
index c1bf8f60a12b4f89cf846fdd17fcb9444311217e..c7ab49eef616e59ef05e33bd079a863407d2ed34 100644 (file)
@@ -7,8 +7,10 @@
 @c before saving changes
 
 
+@
+
 @macro refbugs
-@unnumberedsubsec Bugs
+@strong{BUGS}
 
 @end macro
 
@@ -92,10 +94,7 @@ output file.
 
 These threemanship of tasks (parsing, translating, typesetting) and
 data-structures (music, context, graphical objects) permeates the entire
-design of the program.  This manual is ordered in terms of user
-tasks. For each concept, it will be explained to which of the three parts
-it belongs.
-
+design of the program.
 
 @c . {Note entry}
 @node Note entry
@@ -104,7 +103,7 @@ it belongs.
 
 The most basic forms of music are notes. We discuss how you enter them
 here.  Notes on their own don't form valid input, but for the sake of
-brevity we omit obligotary lint such as @code{\score} blocks and
+brevity we omit obligatory lint such as @code{\score} blocks and
 @code{\paper} declarations.
 
 
@@ -222,7 +221,7 @@ Here, @var{scmduration} is a Scheme object of type @code{Duration}. See
 
 In Note, Chord, and Lyrics mode, durations may be designated by numbers
 and dots: durations are entered as their reciprocal values.  For notes
-longer than a whole note you must use identifiers.
+longer than a whole you must use identifiers.
 
 @example 
  c'\breve  
@@ -331,7 +330,7 @@ readable, see @ref{Output scaling}.
 
 If you view the result with Xdvi, then staff lines will show through the
 letters.  Printing the postscript file obtained either by using dvips or
-the @code{-f ps} option of lilypond will produce the desired result.
+the @code{-f ps} option of lilypond produces the correct result.
 
 
 @node Tie
@@ -367,8 +366,7 @@ exactly the same concept.
 c'2 c'4 ~ c'4
 @end lilypond
 
-
-Ties are printed through the @code{Tie} grob.
+The name of the tie grob is  @code{Voice.Tie}.
 
 @refbugs
 
@@ -408,8 +406,7 @@ their written length:
 
 The property @code{tupletSpannerDuration} specifies how long brackets
 should last.  With this, you can make lots of tuplets while typing
-@code{\times} only once. This saves typing work when you must make lots
-of tuplets.
+@code{\times} only once, thus  saving typing work.
 
 @lilypond[fragment,  relative, singleline, verbatim]
 \property Voice.tupletSpannerDuration = #(make-moment 1 4)
@@ -449,7 +446,7 @@ Rests are entered like notes, with note name `@code{r}'. The grob is
 @cindex @code{\skip}
 
 Skips the amount of time specified by @var{duration}.  If no other music
-is played, a gap will be left for the skipped time with no notes
+is played, a gap will be left for the skipped time without any notes
 printed.  The shorthand is only available in Note and Chord mode.
 
 
@@ -526,41 +523,69 @@ Any change in these properties creates a clef (a @code{Clef} grob).
 
 Supported clef-names include 
 
-@itemize @bullet
-@item treble, violin, G, G2: G clef on 2nd line
-@item french: G clef on 1st line
-@item soprano: C clef on 1st line
-@item mezzosoprano: C clef on 2nd line
-@item alto: C clef on 3rd line
-@item tenor: C clef on 4th line
-@item baritone: C clef on 5th line
-@item varbaritone: F clef on 3rd line
-@item bass, F: F clef on 4th line
-@item subbass: F clef on 5th line
-@item percussion: percussion clef
-@end itemize
+@table @code
+@item treble, violin, G, G2
+G clef on 2nd line
+@item french
+ G clef on 1st line
+@item soprano
+ C clef on 1st line
+@item mezzosoprano
+ C clef on 2nd line
+@item alto
+ C clef on 3rd line
+@item tenor
+ C clef on 4th line
+@item baritone
+ C clef on 5th line
+@item varbaritone
+ F clef on 3rd line
+@item bass, F
+ F clef on 4th line
+@item subbass
+ F clef on 5th line
+@item percussion
+ percussion clef
+@end table
 
 Supported associated glyphs (for @code{Staff.clefGlyph}) are:
 
-@itemize @bullet
-@item clefs-C: modern style C clef
-@item clefs-F: modern style F clef
-@item clefs-G: modern style G clef
-@item clefs-vaticana_do: Editio Vaticana style do clef
-@item clefs-vaticana_fa: Editio Vaticana style fa clef
-@item clefs-medicaea_do: Editio Medicaea style do clef
-@item clefs-medicaea_fa: Editio Medicaea style fa clef
-@item clefs-mensural1_c: modern style mensural C clef
-@item clefs-mensural2_c: historic style small mensural C clef
-@item clefs-mensural3_c: historic style big mensural C clef
-@item clefs-mensural1_f: historic style traditional mensural F clef
-@item clefs-mensural2_f: historic style new mensural F clef
-@item clefs-mensural_g: historic style mensural G clef
-@item clefs-hufnagel_do: historic style hufnagel do clef
-@item clefs-hufnagel_fa: historic style hufnagel fa clef
-@item clefs-hufnagel_do_fa: historic style hufnagel combined do/fa clef
-@item clefs-percussion: modern style percussion clef
-@end itemize
+@table @code
+@item clefs-C
+ modern style C clef
+@item clefs-F
+ modern style F clef
+@item clefs-G
+ modern style G clef
+@item clefs-vaticana_do
+ Editio Vaticana style do clef
+@item clefs-vaticana_fa
+ Editio Vaticana style fa clef
+@item clefs-medicaea_do
+ Editio Medicaea style do clef
+@item clefs-medicaea_fa
+ Editio Medicaea style fa clef
+@item clefs-mensural1_c
+ modern style mensural C clef
+@item clefs-mensural2_c
+ historic style small mensural C clef
+@item clefs-mensural3_c
+ historic style big mensural C clef
+@item clefs-mensural1_f
+ historic style traditional mensural F clef
+@item clefs-mensural2_f
+ historic style new mensural F clef
+@item clefs-mensural_g
+ historic style mensural G clef
+@item clefs-hufnagel_do
+ historic style hufnagel do clef
+@item clefs-hufnagel_fa
+ historic style hufnagel fa clef
+@item clefs-hufnagel_do_fa
+ historic style hufnagel combined do/fa clef
+@item clefs-percussion
+ modern style percussion clef
+@end table
 
 @emph{Modern style} means ``as is typeset in current editions.''
 @emph{Historic style} means ``as was typeset or written in contemporary
@@ -588,6 +613,9 @@ Internally, this is a shortcut for doing
      \property Score.timeSignatureFraction = #'(@var{numerator} . @var{denominator})
 @end example
 
+The property @code{timeSignatureFraction} is used to 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.
@@ -604,7 +632,7 @@ property. See @file{input/test/time.ly} for examples.
 
 Partial measures are entered using the @code{\partial} command:
 @example
-  \partial @var{duration} @code{;}
+  \partial @var{duration} 
 @end example
 
 Internally,  this is a shortcut for 
@@ -614,6 +642,9 @@ Internally,  this is a shortcut for
 @end example
 @cindex @code{|}
 
+The property @code{measurePosition} contains a rational number
+indicating how much of the measure has passed at this point. 
+
 
 @node Unmetered music
 @subsection Unmetered music
@@ -625,7 +656,7 @@ music (e.g. cadenzas), this is not desirable. The property
 @lilypond[fragment,relative,singleline,verbatim]
 c'2.
 \property Score.timing = ##f
-c4 c4 c4  
+c2
 \property Score.timing = ##t
 c4 c4 c4 
 @end lilypond
@@ -654,8 +685,7 @@ This is a shortcut for doing
 @end example
 
 You are encouraged to use @code{\repeat} for repetitions.  See
-@ref{Repeats}, and the documentation of @code{whichBar} in the generated
-documentation.
+@ref{Repeats}.
 
 
 @cindex Bar_line_engraver
@@ -663,12 +693,10 @@ documentation.
 @cindex repeatCommands
 @cindex defaultBarType
 
-Bar lines are created by the @code{Bar_engraver}. That engraver examines
-@code{whichBar} at every moment. Whenever it is set to a string, it will
-create a bar with that type.  @code{whichBar} is usually set
-automatically: at the start of a measure it is set to
-@code{defaultBarType}. The contents of @code{repeatCommands} is used to
-override default measure bars. 
+Whenever @code{whichBar} is set to a string, a bar line of that type is
+created.  @code{whichBar} is usually set automatically: at the start of
+a measure it is set to @code{defaultBarType}. The contents of
+@code{repeatCommands} is used to override default measure bars.
 
 @code{whichBar} can also be set directly, using @code{\property} or
 @code{\bar  }.  These settings take precedence over automatic @code{whichBar}
@@ -702,13 +730,13 @@ in @code{NoteColumn}).
        \shiftOff \stemUp e4
        }
        \context Voice=two {
-         \shiftOn \stemUp cis
+          \shiftOn \stemUp cis
        }
        \context Voice=three {
          \shiftOnn \stemUp ais
        }
        \context Voice=four {
-         \shiftOnnn \stemUp fis
+          \shiftOnnn \stemUp fis
        }
   >
 @end lilypond
@@ -724,6 +752,20 @@ correct manner.
   \context Voice = VC { \voiceTwo fis4~  fis4 f ~ f  } >
 @end lilypond
 
+Normally, note heads with a different number of dots are not merged, but
+if you set the grob property @code{merge-differently-dotted}, they are:
+
+@lilypond[verbatim,fragment,singleline]
+  \context Staff <
+  \context Voice = VA { \voiceOne
+     g'8 g'8 
+     \property Staff.NoteCollision \override #'merge-differently-dotted = ##t
+     g'8 g'8
+  }
+  \context Voice = VB { \voiceTwo [g'8. f16] [g'8. f'16] } 
+  >
+@end lilypond
+
 LilyPond also vertically shifts rests that are opposite of a stem. 
 
 @lilypond[singleline,verbatim]
@@ -752,10 +794,10 @@ the Rest grob to override typesetting decisions.
 @section Beaming
 
 Beams are used to group short notes into chunks that are aligned with
-the metrum.  LilyPond guesses where beams should be inserted, but if
-you're not satisfied with the automatic beaming, you can either instruct
-lilypond which patterns to beam automatically. In specific cases, you
-can also specify explicitly what to beam and what not.
+the metrum.  LilyPond guesses where beams should be inserted. If you're
+not satisfied with the automatic beaming, you can specify which patterns
+to beam automatically. In specific cases, you can also explicitly enter
+beams.
 
 
 @c .    {Automatic beams}
@@ -765,17 +807,14 @@ can also specify explicitly what to beam and what not.
 @cindex @code{(end * * * *)}
 @cindex @code{(begin * * * *)}
 
-A large number of Voice properties are used to decide how to generate
-beams.  Their default values appear in @file{scm/auto-beam.scm}.
 
-By default, automatic beams can start on any note@footnote{In exotic
-time signatures such as 1/8 and 1/16 this is not true} but can only end
-in a few positions within the measure: they can end on a beat, or at
-durations specified by the properties in
+In normal time signatures, automatic beams can start on any note but can
+only end in a few positions within the measure: beams can end on a beat,
+or at durations specified by the properties in
 @code{Voice.autoBeamSettings}. The defaults for @code{autoBeamSettings}
 are defined in @file{scm/auto-beam.scm}.
 
-The syntax for  changing the value @code{autoBeamSettings} is set using
+Changing the value of @code{autoBeamSettings} is done using
 @code{\override} and unset using @code{\revert}:
 @example
 \property Voice.autoBeamSettings \override #'(@var{BE} @var{N} @var{M} @var{P} @var{Q}) = @var{dur}
@@ -783,12 +822,13 @@ The syntax for  changing the value @code{autoBeamSettings} is set using
 @end example
 Here, @var{BE} is the symbol @code{begin} or @code{end}. It determines
 whether the rule applies to begin or end-points.  The quantity
-@var{N}/@var{M} refers to a time signature (@code{* *} may be entered to
-designate all time signatures), @var{P}/@var{Q} refers to the length of
-the beamed notes (@code{* *} designate notes of any length).
+@var{N}/@var{M} refers to a time signature (wildcards, `@code{* *}' may
+be entered to designate all time signatures), @var{P}/@var{Q} refers to
+the length of the beamed notes (and `@code{* *}' designates notes of any
+length).
 
-If you want automatic beams to end on every  quarter note, you can
-use the following:
+For example, if you want automatic beams to end on every quarter note,
+you can use the following:
 @example
 \property Voice.autoBeamSettings \override
     #'(end * * * *) = #(make-moment 1 4)
@@ -797,7 +837,7 @@ The duration a quarter note is 1/4 of a whole note. It is entered as
 @code{(make-moment 1 4)}. 
 
 The same syntax can be used to specify beam starting points. In this
-example, you automatic beams can only end on a dotted quarter note. 
+example,  automatic beams can only end on a dotted quarter note. 
 @example
 \property Voice.autoBeamSettings \override
     #'(begin * * * *) = #(make-moment 3 8)
@@ -847,9 +887,8 @@ durations, ie, you'll have to specify manual beams to get:
 @end lilypond
 
 It is not possible to specify beaming parameters that act differently in
-different parts of a measure, eg, in irregular meters such as @code{5/8}
-that breaks down to @code{2/8 +3/8} or @code{3/8 + 2/8}, automatic beams
-won't act according to the broken down parts @code{2/8} and @code{3/8}.
+different parts of a measure. This means that it is not possible to use
+automatic beaming in irregular meters such as @code{5/8}.
 
 @c .    {Manual beams}
 @cindex Automatic beams
@@ -860,7 +899,7 @@ won't act according to the broken down parts @code{2/8} and @code{3/8}.
 
 In some cases it may be necessary to override LilyPond's automatic
 beaming algorithm.  For example, the auto beamer will not beam over
-rests or bar lines, so if you want that, specify the begin and end point
+rests or bar lines, If you want that, specify the begin and end point
 manually using @code{[} and @code{]}:
 
 @lilypond[fragment,relative,verbatim]
@@ -868,14 +907,16 @@ manually using @code{[} and @code{]}:
     r4 [r8 g'' a r8] r8 [g | a] r8
   }
 @end lilypond
-Whenever an manual beam is busy, the auto beam will not produce
+Whenever an manual beam is busy, the automatic beamer will not produce
 anything.
 
 @cindex @code{stemLeftBeamCount}
 
-If you have specific wishes for the number of beams, you can fully
-control the number of beams through the properties
-@code{Voice.stemLeftBeamCount} and @code{Voice.stemRightBeamCount}.
+Normally, beaming patterns within a beam are determined automatically.
+When this mechanism fouls up, the properties
+@code{Voice.stemLeftBeamCount} and @code{Voice.stemRightBeamCount}.  can
+be used to control the beam subdivision on a stem.  If you set either
+property, it's value will be used only once, and then it is erased.
 
 @lilypond[fragment,relative,verbatim]
   \context Staff {
@@ -887,9 +928,9 @@ control the number of beams through the properties
 
 The beam symbol (grob @code{Voice.Beam}, both for automatic and manual
 beams) can be tweaked through grob-properties @code{height} and
-@code{staff-position}, which are both measured  staff-spaces.
+@code{staff-position}. These specify vertical location and vertical
+span.  Both are measured half staff-spaces.
 
-[TODO: check: halfspaces?]
 
 Set @code{height} to zero, to get horizontal beams:
 
@@ -903,8 +944,8 @@ Here's how you'd specify a weird looking beam that instead of being
 horizontal, falls two staff spaces:
 
 @lilypond[fragment,relative,verbatim]
-  \property Voice.Beam \set #'staff-position = #2
-  \property Voice.Beam \set #'height = #-2
+  \property Voice.Beam \set #'staff-position = #4
+  \property Voice.Beam \set #'height = #-4
   [c'8 c] 
 @end lilypond
 @cindex @code{default-neutral-direction}
@@ -925,17 +966,19 @@ horizontal, falls two staff spaces:
 @subsection Slur
 @cindex slur
 
-A slur indicates that notes are to be played bound or @emph{legato}.  In
-lilypond, they are entered using parentheses:
+A slur indicates that notes are to be played bound or @emph{legato}.
+They are entered using parentheses:
+
 @lilypond[fragment,verbatim,center]
   f'()g'()a' [a'8 b'(] a'4 g'2 )f'4
 @end lilypond
 
 
-Slurs avoid crossing stems, and are attached to note heads whenever
-possible.  In some instances involving beams slurs may be attached to a
-stem end.  If you want to override this layout you can do this through
-@code{Voice.Slur}'s grob-property @code{attachment}:
+Slurs avoid crossing stems, and are generally attached to note heads.
+However, in some situations with beams, slurs may be attached to stem
+ends.  If you want to override this layout you can do this through
+@code{Voice.Slur}'s grob-property @code{attachment}. It's value is a
+pair of symbols, specifying the attachment type of the left and right end points.
 
 @lilypond[fragment,relative,verbatim]
   \property Voice.Slur \set #'direction = #1
@@ -965,7 +1008,7 @@ is in @code{Voice.Slur}'s grob-property @code{beautiful}.  It is loosely
 related to the enclosed area between the slur and the notes.  Usually,
 the default setting works well, but in some cases you may prefer a
 curved slur when LilyPond decides for a vertically moved one.  You can
-express this by increasing the @code{beautiful} value:
+indicate this preference by increasing the @code{beautiful} value:
 
 @lilypond[verbatim,singleline,relative]
   \property Voice.Beam \override #'direction = #-1
@@ -978,8 +1021,8 @@ express this by increasing the @code{beautiful} value:
 
 @refbugs
 
-The definition for @code{beautiful} is vague, the default setting is
-experimental computer science.
+@code{beautiful} is an arbitrary parameter in the slur formatter.
+Useful values can only be determined by trial and error.
 
 @cindex Adusting slurs
 
@@ -990,8 +1033,8 @@ experimental computer science.
 @cindex phrasing mark
 
 A phrasing slur (or phrasing mark) connects chords and is used to
-indicate a musical sentence. It is entered using @code{\(} and
-@code{\)}.
+indicate a musical sentence. It is started using @code{\(} and @code{\)}
+respectively.
 
 @lilypond[fragment,verbatim,center,relative]
   \time 6/4 c''\((d)e f(e)\)d
@@ -1003,14 +1046,14 @@ slur. The grob associated with it is @code{Voice.PhrasingSlur}.
 @node Breath marks
 @subsection Breath marks
 
-Breath marks are entered using @code{\breathe}:
+Breath marks are entered using @code{\breathe}.  The result is
+@code{Voice.BreathingSign} grob.
 
 @lilypond[fragment,relative]
 c'4 \breathe d4
 @end lilypond
 
-Currently, only tick marks are supported, comma style breath marks are
-not. The grob for this object is called @code{Voice.BreathingSign}.
+
 
 
 @refbugs
@@ -1026,19 +1069,21 @@ not.
 @cindex beats per minute
 @cindex metronome marking
 
+Metronome settings can be entered as follows:
+
 @cindex @code{\tempo}
 @example
-  \tempo @var{duration} = @var{perminute} @code{;}
+  \tempo @var{duration} = @var{perminute} 
 @end example
 
-Used to specify the tempo.  For example, @code{\tempo 4 = 76;} requests
-output with 76 quarter notes per minute.
+For example, @code{\tempo 4 = 76;} requests output with 76 quarter notes
+per minute.
   
 @refbugs
   
-The tempo setting is not printed, but is currently only used in the MIDI
+The tempo setting is not printed, but is only used in the MIDI
 output. You can trick lily into producing a metronome mark,
-though. Details   are in @ref{Text markup}.
+though. Details are in @ref{Text markup}.
   
 
 
@@ -1048,8 +1093,8 @@ though. Details   are in @ref{Text markup}.
 
 Some textual indications, e.g. rallentando, accelerando, often extend
 over a many measures. This is indicated by following the text with a
-dotted line.   You can create such texts in LilyPond using 
-text spanners. The syntax is as follows: 
+dotted line.  You can create such texts using text spanners. The syntax
+is as follows:
 @example
 \spanrequest \start "text"
 \spanrequest \stop "text"
@@ -1060,7 +1105,7 @@ properties.
 
 An application---or rather, a hack---is to fake octavation indications.
 @lilypond[fragment,relative,verbatim]
- \relative c' {  a'''' b c a
+ \relative c' {  a''' b c a
   \property Voice.TextSpanner \set #'type = #'dotted-line
   \property Voice.TextSpanner \set #'edge-height = #'(0 . 1.5)
   \property Voice.TextSpanner \set #'edge-text = #'("8va " . "")
@@ -1093,18 +1138,18 @@ An application---or rather, a hack---is to fake octavation indications.
 A variety of symbols can appear above and below notes to indicate
 different characteristics of the performance.  These symbols can be
 added to a note with `@var{note}@code{-\}@var{name}'.  Numerous symbols
-are defined in @file{script.ly} and @file{script.scm}.  Symbols can be
-forced to appear above or below the note by writing
-`@var{note}@code{^\}@var{name}' and `@var{note}@code{_\}@var{name}'
-respectively.  Here is a chart showing symbols above notes, with the
-name of the corresponding symbol appearing underneath.
+are defined in @file{script.ly}.  Symbols can be forced to appear above
+or below the note by writing `@var{note}@code{^\}@var{name}' and
+`@var{note}@code{_\}@var{name}' respectively.  Here is a chart showing
+symbols on notes, with the name of the corresponding symbol appearing
+underneath.
 
 @lilypond[]
   \score {
-    < \notes {
-        \property Score.LyricSyllable \override #'font-family =
-#'typewriter
-        \property Score.LyricSyllable \override #'font-shape = #'upright
+    <
+      \property Score.LyricSyllable \override #'font-family =#'typewriter
+      \property Score.LyricSyllable \override #'font-shape = #'upright
+      \context Staff \notes {
         c''-\accent      c''-\marcato      c''-\staccatissimo c''-\fermata 
         c''-\stopped     c''-\staccato     c''-\tenuto        c''-\upbow
         c''-\downbow     c''^\lheel        c''-\rheel         c''^\ltoe
@@ -1159,17 +1204,17 @@ Fingering instructions can also be entered in  this shorthand.
 @cindex superscript
 @cindex subscript
 
+You can add scripts by editing @file{scm/script.scm}. This file contains
+a table, listing script definitions and aliases. The following syntax
+accesses a script definition from the table:
+
 @example
   \script @var{alias}
 @end example
 
-Defines a script printing request.  The argument is a string which
-points into the script-alias table defined in @file{scm/script.scm}.
 Usually the @code{\script} keyword is not used directly.  Various
 helpful identifier definitions appear in @file{script.ly}.
 
-For information on how to add scripts, consult @file{scm/script.scm}.
-
 Grobs for these objects are @code{Script} and @code{Fingering}.
 
 @refbugs
@@ -1191,9 +1236,11 @@ In addition, it is possible to place arbitrary strings of text or markup
 text (see @ref{Text markup}) above or below notes by using a string:
 @code{c^"text"}.  The text is typeset in italic by default.
 
+@c FIXME italic, are we sure?
+
 The amount of space taken by these indications by default does not
 influence, spacing, but setting @code{Voice.textNonEmpty} to true will
-take the widths into account.  The identifier @code{\fattext} is defined
+take the widths into account.  The identifier @code{\fatText} is defined
 in the standard  includes.
 @lilypond[fragment,singleline,verbatim]
 \relative c' { c4^"longtext" \fatText c4_"longlongtext" c4 }
@@ -1219,7 +1266,7 @@ c4-\foo
 
 @end quotation
 
-This is equivalent to @code{c4-6 c4-"foo"}.  
+This is equivalent to @code{c4-6}.  
 
 
 @c .   {Grace notes}
@@ -1250,8 +1297,7 @@ When grace music is interpreted, a score-within-a-score is set up:
 example) have a separate time signature within grace notes.  While in
 this score-within-a-score, you can create notes, beams, slurs, etc.
 Unbeamed eighth notes and shorter by default have a slash through the
-stem.  This behavior can be controlled with the
-@code{Stem}.@code{flag-style} property.
+stem.
 
 @lilypond[fragment,verbatim]
 \relative c'' {
@@ -1261,6 +1307,13 @@ stem.  This behavior can be controlled with the
 @end lilypond
 
 
+A grace note expression has duration 0; the next real note is assumed to
+be the main note. If you want the note to appear after the main note,
+set @code{Voice.graceAlignPosition} to @code{1}.
+
+@refbugs
+
+
 At present, nesting @code{\grace} notes is not supported. The following
 may cause run-time errors:
 @example
@@ -1273,12 +1326,6 @@ 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.
 
 
-A grace note expression has duration 0; the next real note is assumed to
-be the main note. If you want the note to appear after the main note,
-set @code{Voice.graceAlignPosition} to @code{1}.
-
-@refbugs
-
 The present implementation of grace notes is not robust and generally
 kludgy. We expect it to change after LilyPond 1.4. Syntax changes might
 also be implemented.
@@ -1303,7 +1350,7 @@ A glissando line (grob @code{Voice.Glissando}) can be requested by attaching a
 @code{\glissando} to a note:
 
 @lilypond[fragment,relative,verbatim]
-  c'' \glissando c'
+  c''-\glissando c'
 @end lilypond
 
 @refbugs
@@ -1349,8 +1396,6 @@ note: @code{c4-\ff}.  The available dynamic marks are: @code{\ppp},
   c2\sf c\rfz
 @end lilypond
 
-@cindex Crescendo and Decrescendo
-@cindex crescendo
 @cindex @code{\cr}
 @cindex @code{\rc}
 @cindex @code{\decr}
@@ -1378,6 +1423,9 @@ want to get several marks during one note, you must use spacer notes.
 You can also use a text saying @emph{cresc.} instead of hairpins. Here
 is an example how to do it:
 
+@cindex crescendo
+@cindex decrescendo
+
 @lilypond[fragment,relative,verbatim]
   \context Voice {
     \property Voice.crescendoText = "cresc."
@@ -1386,6 +1434,10 @@ is an example how to do it:
   }
 @end lilypond
 
+For everyday use, we recommend the identifiers @code{\cresc},
+@code{endcresc}, @code{\dim} and @code{\enddim}.
+
+@cindex diminuendo
 
 Dynamics are grobs of @code{Voice.DynamicText} and
 @code{Voice.Hairpin}. They are put together on
@@ -1405,17 +1457,17 @@ should work differently when played or printed, there are a few
 different variants of repeats.
 
 @table @asis
-@item unfolded  
+@item unfold
 Repeated music is fully written (played) out.  Useful for MIDI
-output.
+output, and entering repetitive music.
 
 @item volta  
 This is the normal notation: Repeats are not written out, but
 alternative endings (voltas) are printed, left to right.
 
 @item folded  
-Alternative endings are written stacked.  Which is unfortunately not
-practical for anything right now.
+Alternative endings are written stacked.  This has no practical use
+right now.
 
 @item tremolo
 Make tremolo beams.
@@ -1483,7 +1535,7 @@ the specified number of repeats.
 \context Staff {
   \relative c' {
     \partial 4
-    \repeat volta 3 { e | c2 d2 | e2 f2 | }
+    \repeat volta 4 { e | c2 d2 | e2 f2 | }
     \alternative { { g4 g g } { a | a a a a | b2. } }
   }
 }
@@ -1491,11 +1543,11 @@ the specified number of repeats.
 
 @refbugs
 
-As you can see, LilyPond doesn't remember the timing information, nor
-are slurs or ties repeated, so you have to reset timing information
-after a repeat, e.g. using a bar-check (See @ref{Bar check}),
-@code{Score.measurePosition} or @code{\partial}. We hope to fix this
-after 1.4.
+Notice that timing information is not rembered at the start of an
+alternative, so you have to reset timing information after a repeat,
+e.g. using a bar-check (See @ref{Bar check}), setting
+@code{Score.measurePosition} or entering @code{\partial}.  Slurs or ties
+are also not repeated.
 
 It is possible to nest @code{\repeat}, although it probably is only
 meaningful for unfolded repeats.
@@ -1592,6 +1644,8 @@ Tremolos in this style do not carry over into the MIDI output.
 
 In the @code{percent} style, a note pattern can be repeated. It is
 printed once, and then the pattern is replaced with a special sign.
+Patterns of a one and two measures are replaced by percent signs,
+patterns that divide the measure length are replaced by slashes.
 
 @lilypond[verbatim,singleline]
  \context Voice { \repeat  "percent" 4  { c'4 }
@@ -1604,8 +1658,8 @@ The signs are represented by these grobs: @code{Voice.RepeatSlash} and
 
 @refbugs
 
-You can not nest percent repeats, e.g. filling in the first measure with
-slashes, and repeating that measure with percents.
+You can not nest percent repeats, e.g. by filling in the first measure
+with slashes, and repeating that measure with percents.
 
 @node Rhythmic music
 @section Rhythmic music
@@ -1622,7 +1676,7 @@ Some times you might want to show only the rhythm of a melody.  This can
 be done  with the rhythmic staff. All pitches of notes on such a staff
 are squashed, and the  staff itself  looks has  a single staff line:
 
-@lilypond[fragment,relative ]
+@lilypond[fragment,relative,verbatim]
   \context RhythmicStaff {
       \time 4/4
       c4 e8 f  g2 | r4 g r2 | g1:32 | r1 |
@@ -1634,8 +1688,9 @@ are squashed, and the  staff itself  looks has  a single staff line:
 @node Piano music
 @section Piano music
 
-Piano music is an odd type of notation: two staffs are largely
-independent, but sometimes voices can cross between the two staffs.  The
+Piano music is an odd type of notation. Piano staffs are two normal
+staffs coupled with a brace.  The staffs are largely independent, but
+sometimes voices can cross between the two staffs.  The
 @code{PianoStaff} is especially built to handle this cross-staffing
 behavior.  In this section we discuss the @code{PianoStaff} and some
 other pianistic peculiarities.
@@ -1645,7 +1700,7 @@ other pianistic peculiarities.
 * Manual staff switches::       
 * Pedals::                      
 * Arpeggio::                    
-* VoiceFollower::               
+* Voice follower line::         
 @end menu 
 
 
@@ -1659,7 +1714,7 @@ syntax for this is
 @example
         \autochange @var{contexttype} @var{musicexp}
 @end example
-This will switch notation context of @var{musicexp} between a
+This will switch the interpretation context of @var{musicexp} between a
 @var{contexttype} named @code{up} and @code{down}. Typically, you use
 @code{Staff} for @var{contexttype}.  The autochanger switches on basis
 of pitch (central C is the turning point), and it looks ahead skipping
@@ -1688,9 +1743,9 @@ terminating too soon.
 
 Voices can be switched between staffs manually, using the following command:
 @example
-  \translator Staff = @var{which} @var{music}
+  \translator Staff = @var{staffname} @var{music}
 @end example
-The string @var{which} is the name of the staff. Typically it is
+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
@@ -1717,7 +1772,8 @@ These identifiers are shorthands for spanner commands of the types
 @code{Sustain}, @code{UnaCorda} and @code{Sostenuto}:
 
 @lilypond[fragment,verbatim]
-c''4 \spanrequest \start "Sustain" c''4 c''4 \spanrequest \stop "Sustain"
+c''4 \spanrequest \start "Sustain" c''4
+c''4 \spanrequest \stop "Sustain"
 @end lilypond
 
 The symbols that are printed can be modified by setting
@@ -1727,7 +1783,7 @@ types. Refer to the generated documentation for more information.
 @refbugs
 
 
-Currently, brackets are not supported, only text markings (ie. *Ped
+Currently, brackets are not supported, only text markings (i.e. `*Ped'
 style).
 
 
@@ -1768,9 +1824,9 @@ It is not possible to mix connected arpeggios and unconnected arpeggios
 at the same time.
 
 
-@c .    {VoiceFollower}
-@node  VoiceFollower
-@subsection VoiceFollower
+
+@node  Voice follower line
+@subsection Voice follower line
 
 @cindex follow voice
 @cindex staff switching
@@ -1796,7 +1852,7 @@ can be printed automatically. This is enabled if the property
 
 The associated grob is @code{Voice.VoiceFollower}.
 
-@c . {Lyrics}
+
 @node Lyrics
 @section Lyrics
 
@@ -1813,11 +1869,9 @@ The associated grob is @code{Voice.VoiceFollower}.
 @subsection Lyrics mode
 @cindex Lyrics mode
 
-To print lyrics in LilyPond, you must first make a music expression from
-the lyric text. When they're in a music expression, that music
-expression can be printed by selecting an appropriate context.  We shall
-discuss lyric printing in this order.
-
+To print lyrics, you must first make a music expression from the lyric
+text.  That music expression can be printed by selecting an appropriate
+context.
 
 @cindex lyric mode
 @cindex @code{\lyrics}
@@ -1827,11 +1881,6 @@ called Lyrics mode, and it is introduced by the keyword @code{\lyrics}.
 The purpose of this mode is that you can enter lyrics as plain text,
 punctuation and accents without any hassle.
 
-The precise definition of this mode is in @ref{Lyrics mode
-definition}. The definition itself is ludicrous, and this will remain so
-until the authors of LilyPond acquire a deeper understanding of
-character encoding, or someone else steps up to fix this.
-
 Syllables are entered like notes, with pitches replaced by text.  For
 example, @code{Twin- kle twin- kle} enters four syllables.  Note that
 the hyphen has no special meaning for lyrics, and does not introduce
@@ -1841,29 +1890,33 @@ Spaces can be introduced into a lyric either by using quotes
 (@code{"}) or by using an underscore without quotes: @code{He_could4
 not4}.  All unquoted underscores are converted to spaces.
 
+The precise definition of this mode is in @ref{Lyrics mode
+definition}. 
+
 @c .  {Printing lyrics}
 @node Printing lyrics
 @subsection Printing lyrics
 @cindex lyrics
 
-Normally, you will want to have notes and syllables matched
-automatically. This is accomplished using @code{\addlyrics}, which is
-documented in @ref{Automatic syllable durations}. Setting
-@code{automaticMelismata} in the melody staff, will cause slurs to be
-interpreted as melismata. Lyric syllables must be interpreted within a
-@code{Lyrics} context in order to printing them.
+Lyrics are printed by interpreting them in the @code{Lyrics}  context.
 
 @lilypond[verbatim,singleline]
 \addlyrics \notes \relative c' {
         \time 7/4
         \property Staff.automaticMelismata = ##t
         d'2 c4 b2 a2
-       b2 c4 b4 ()  a4 g2 }
+        b2 c4 b4 ()  a4 g2 }
     \context Lyrics \lyrics { 
        Join us now and
-       share the so -- ftware; }
+       share the soft- __ ware; }
 @end lilypond
 
+
+Notes and syllable durations are matched automatically. This is
+accomplished using @code{\addlyrics}, which is documented in
+@ref{Automatic syllable durations}. Setting @code{automaticMelismata} in
+the melody staff will cause slurs to be interpreted as melismata.
+
 The Lyric syllables are @code{LyricsVoice.LyricSyllable} grobs.
 
 @cindex extender
@@ -1882,9 +1935,9 @@ The grob for this symbol is @code{LyricsVoice.LyricExtender}.
 If you want to have hyphens centered between syllables (rather than
 attached to the end of the first syllable) you can use the special
 `@code{-}@code{-}' lyric as a separate word between syllables.  This
-will result in a hyphen which length varies depending on the space
-between syllables, and which will be centered between the syllables. 
-The grob for this symbol is @code{LyricsVoice.LyricHyphen}.
+will result in a hyphen whose length varies depending on the space
+between syllables. It will be centered between the syllables.  The grob
+for this symbol is @code{LyricsVoice.LyricHyphen}.
 
 @cindex Lyric hyphen
 
@@ -1902,10 +1955,10 @@ this is
   \addlyrics @var{musicexpr1 musicexpr2}
 @end example
 
-This means that both @var{musicexpr1} and @var{musicexpr2} are
-interpreted, but that every non-command atomic music expression
-(``every syllable'') in @var{musicexpr2} is interpreted using timing
-of @var{musicexpr1}.
+Both @var{musicexpr1} and @var{musicexpr2} are interpreted, but every
+music event (``every syllable'') in @var{musicexpr2} is interpreted only
+when there are events in @var{musicexpr1}.
+
 @cindex @code{automaticMelismata}
 
 If the property @code{automaticMelismata} is set in the
@@ -1945,8 +1998,8 @@ not, you can get undesired effects when using multiple stanzas:
   c8 () cis d8. e16 f2
 }
 \context Lyrics \lyrics
-< { do4 re mi fa }
-  { do8 re mi fa } >
+< { do4 re fa sol }
+  { do8 re fa sol } >
 @end lilypond
 
 It is valid (but probably not very useful) to use notes instead of
@@ -1957,12 +2010,13 @@ lyrics for @var{musicexpr2}.
 
 @cindex phrasing
 
-If you have multiple stanzas printed underneath each other, the separate
-syllables should be aligned around punctuation. LilyPond can do this if
-you explain it which lyric lines belong to which melody.
+If you have multiple stanzas printed underneath each other, the vertical
+groups of syllables should be aligned around punctuation. LilyPond can
+do this if you explain it which lyric lines belong to which melody.
 
 To this end, give the Voice context an identity, and set the LyricsVoice
-to name starting with that identity. In the following example, the Voice
+to a name starting with that identity followed by a dash.
+In the following example, the Voice
 identity is @code{duet}, and the identities of the LyricsVoices are
 @code{duet-1} and @code{duet-2}.
 
@@ -1984,7 +2038,12 @@ identity is @code{duet}, and the identities of the LyricsVoices are
 @end lilypond
 
 You can add stanza numbers by setting @code{LyricsVoice.Stanza} (for the
-first system) and @code{LyricsVoice.stz} for the following systems.
+first system) and @code{LyricsVoice.stz} for the following
+systems. Notice how you must surround dots with spaces in @code{\lyrics}
+mode.
+
+
+
 
 @cindex stanza numbering
 
@@ -1995,11 +2054,11 @@ first system) and @code{LyricsVoice.stz} for the following systems.
 @cindex Chords
 
 LilyPond has support for both entering and printing chords.  Chords are
-a harmonic device that is characterized by a set of pitches. It is
-something different from simultaneous music, although you can express a
-chord using simultaneous music. In fact, chords are internally stored as
-simultaneous music expressions. This means you can enter chords by name,
-and print them as note head, or enter as notes and print as chord names:
+a harmonic device that is characterized by a set of pitches. They are
+internally stored as simultaneous music expressions. This means you can
+enter chords by name and print them as note head, enter them as notes
+and print them as chord names, or (the most common case) enter them by
+name, and print them as name.
 
 
 @lilypond[verbatim,singleline]
@@ -2014,12 +2073,12 @@ twoWays = \notes \transpose c'' {
 
 \score {
    < \context ChordNames \twoWays
-     \context Staff \twoWays > }
+     \context Voice \twoWays > }
 @end lilypond
 
-Note that this example also shows that the LilyPond chord does not
-attempt to be intelligent, if you enter @code{f bes d}, it does no
-attempt to find out whether it this is an inversion.
+Note that this example also shows that the chord printing routines do
+not attempt to be intelligent. If you enter @code{f bes d}, it does not
+interpret this as an inversion.
 
 @menu
 * Chords mode::                 
@@ -2041,19 +2100,17 @@ so articulation scripts can not be entered in Chord mode.
 
 The syntax for named chords is as follows:
 @example
-
   @var{tonic}[@var{duration}][@code{-}@var{modifiers}][@code{^}@var{subtractions}][@code{/}@var{inversion}][@code{/+}@var{bass}].
 @end example
 
-@var{tonic} should be the tonic note of the chord, and @var{duration}
-is the chord duration in the usual notation.  There are two kinds of
-modifiers.  One type is @emph{chord additions}, which are obtained by
-listing intervals separated by dots.  An interval is written by its
-number with an optional @code{+} or @code{-} to indicate raising or
-lowering by half a step.  Chord additions has two effects: It adds
+@var{tonic} should be the tonic note of the chord, and @var{duration} is
+the chord duration in the usual notation.  There are two kinds of
+modifiers.  One type is formed by @emph{chord additions}. Additions are
+obtained by listing intervals separated by dots.  An interval is written
+by its number with an optional @code{+} or @code{-} to indicate raising
+or lowering by half a step.  Chord additions have two effects: they adds
 the specified interval and all lower odd numbered intervals to the
-chord, and it may lower or raise the specified interval.  Intervals
-must be separated by a dot (@code{.}).
+chord, and they may lower or raise the specified interval.
 
 Throughout these examples, chords have been shifted around the staff
 using @code{\transpose}.
@@ -2062,7 +2119,7 @@ using @code{\transpose}.
 \transpose c'' {
   \chords {
     c1  c:3-       c:7     c:8
-    c:9 c:9-.5+.7+ c:3-.5- c:4.6.8
+    c:9 c:9-.5+.7+ c:3-.5- 
   }
 }
 @end lilypond
@@ -2104,8 +2161,8 @@ separated by dots.
 
 Chord inversions can be specified by appending `@code{/}' and the name
 of a single note to a chord.  In a chord inversion, the inverted note is
-transposed down until it is the lowest note in the chord.  If the
-specified note is not in the chord, a warning will be printed.
+transposed down until it is the lowest note in the chord.  If the note
+is not in the chord, a warning will be printed.
 
 @lilypond[fragment,verbatim,center]
   \transpose c''' {
@@ -2131,7 +2188,10 @@ so it becomes the lowest note in the chord.
 
 @end lilypond 
 
+@refbugs
 
+Implementation details are quite gory. For example @code{c:4} not only
+adds a fourth, but also removes the third.
 
 
 @c .  {Printing named chords}
@@ -2160,16 +2220,15 @@ scheme = \notes {
 }
 @end lilypond
 
-You can make the chord changes stand out by setting property
+You can make the chord changes stand out by setting
 @code{ChordNames.chordChanges} to true.  This will only display chord
 names when there's a change in the chords scheme and at the start of the
 line.
 
 @lilypond[verbatim]
 scheme = \chords {
-  c1:m \break c:m c:m c:m d
+  c1:m c:m \break c:m c:m d
 }
-
 \score {
   \notes <
     \context ChordNames {
@@ -2200,12 +2259,11 @@ scheme = \notes {
 @end lilypond
 
 
-By default LilyPond uses chord name system proposed by Harald Banter
-(See @ref{Literature}). The system is is unambiguous and has a logical
-structure.  Typical American style chord names may be selected by
-setting the @code{style} property of the @code{ChordNames.ChordName}
-grob to @code{'american}. Similarly @code{'jazz} selects Jazz
-chordnames.
+By default, a chord name system proposed by Harald Banter (See
+@ref{Literature}) is used. The system is very regular and predictable.
+Typical American style chord names may be selected by setting the
+@code{style} property of the @code{ChordNames.ChordName} grob to
+@code{'american}. Similarly @code{'jazz} selects Jazz chordnames.
 
 Routines that determine the names to be printed are written in Scheme,
 and may be customized by the user.  The code can be found in
@@ -2271,10 +2329,10 @@ problems in orchestral music.
   \mark \default
 @end example
 
-With this command, you can print a rehearsal mark above the system. You
-can provide a number, a string or a markup text as argument. If there is
-no argument, the property @code{rehearsalMark} is used and automatically
-incremented.
+This command prints a rehearsal mark above the system. You can provide
+a number, a string or a markup text as argument. If you use
+@code{\default}, the value of property @code{rehearsalMark} is used and
+automatically incremented.
 
 @lilypond[fragment,verbatim]
 \relative c'' {
@@ -2287,17 +2345,19 @@ incremented.
 }
 @end lilypond
 
+The grob is @code{Score.RehearsalMark}. See
+@code{input/test/boxed-molecule.ly} if you need boxes around the marks.
+
 @node Bar numbers
 @subsection Bar numbers
 
-Bar numbers are printed at the start of the line by default. This is
-done by the @code{Bar_number_engraver} in the Score context.
+Bar numbers (grob: @code{BarNumber}) are printed at the start of the
+line. See @code{input/test/boxed-molecule.ly} for boxed bar numbers.
 
 @refbugs
 
-It is currently not possible to make boxed bar numbers, or print them at
-regular intervals.
-
+It is not possible to have bar numbers printed at regular intervals
+only.
 
 @node Instrument names
 @subsection Instrument names
@@ -2308,11 +2368,7 @@ before the start of the staff. For the first start, @code{instrument} is
 used, for the next ones @code{instr} is used.
 
 @lilypond[verbatim,singleline]
-\score { \notes {
-  \property Staff.instrument = "ploink " { c''4 } }
-  \paper { 
-    \translator { \StaffContext
-    \consists "Instrument_name_engraver" } } }
+  \property Staff.instrument = "ploink " { c''4 }  
 @end lilypond
 
 This requires  that you add the @code{Instrument_name_engraver} to the
@@ -2329,18 +2385,15 @@ complicated instrument names:
     "2 Clarinetti" (rows "     (B" ,text-flat ")")))
     c'' 4 }
   \paper { 
-    \translator { \StaffContext
-    \consists "Instrument_name_engraver" } } }
+    \translator { \StaffContext  } } }
 @end lilypond
 
 
 @refbugs
 
-When you put a name on a grand staff or piano staff (By adding an
-@code{Instrument_name_engraver} to that context and setting
-e.g. @code{\property GrandStaff.instrument}), the width of the brace is
-not taken into account. You must add extra spaces to the end of the name
-to avoid a collision.
+When you put a name on a grand staff or piano staff the width of the
+brace is not taken into account. You must add extra spaces to the end of
+the name to avoid a collision.
 
 @node Transpose
 @subsection Transpose
@@ -2387,8 +2440,8 @@ semitones) for the transposed instruments. This is done using the
 @cindex @code{transposing}
 
 @example
-       \property Staff.instrument = #"Cl. in B-flat"
-       \property Staff.transposing = #-2
+        \property Staff.instrument = #"Cl. in B-flat"
+        \property Staff.transposing = #-2
 @end example
 
 
@@ -2420,8 +2473,8 @@ multimeasure rest.
 @cindex automatic part combining
 @cindex part combiner
 
-Automatic part combining is used to merge two parts of music onto on
-staff in an intelligent way.  It is aimed primarily at typesetting Hymns
+Automatic part combining is used to merge two parts of music onto a
+staff in an intelligent way.  It is aimed primarily at typesetting hymns
 and orchestral scores.  When the two parts are identical for a period of
 time, only one is shown.  In places where the two parts differ, stem
 directions are set automatically.  Also, soli and @emph{a due} parts can be
@@ -2641,7 +2694,6 @@ should be printed is erased, with the effect of rendering it invisible.
 The above assignment is available as a standard identifier, lest you
 find this useful:
 
-@c FIXME: doesn't work well for eg StaffSymbol
 @example
   \property Voice.Stem = \turnOff
 @end example
@@ -2719,6 +2771,16 @@ The backend is not very strict in type-checking grob properties. If you
 @code{\revert} properties that are expected to be set by default,
 LilyPond may crash.
 
+Some grobs are created at the moment that their context is created. An
+example of such a grob is the staff itself (i.e. the horizontal lines).
+You can not change the appearance of the staff symbol by manipulating
+@code{\property Staff.StaffSymbol}.  At the moment that @code{\property
+Staff} is interpreted, a Staff context is made, and the StaffSymbol is
+created before any @code{\override} is effective. You can deal with this
+either overriding properties in a @code{\translator} definition, or by
+using @code{\outputproperty}.
+
+
 
 
 @node Tuning per grob 
@@ -3012,6 +3074,14 @@ marking:
 @subsection Invisible grobs
 @cindex invisible grobs
 
+@ignore
+
+ben nog steeds niet kapot van de informatiedichtheid hier.
+
+--hwn
+
+@end ignore
+
 You can imagine a number of situtations where you would want to make
 certain grobs not show up in the output.  There may be aesthetic
 reasons, to make the output resemble an (old) manuscript as close as
@@ -3019,30 +3089,17 @@ possible, or to make lessons or exercises for students.
 
 Grobs can be made invisible in a number of ways:
 
-@ignore
-FIXME
-
-Move \turnOff feature here and explain why it doesn't work for eg
-StaffSymbol
-
-Show molecule-callback override
-   StaffSymbol \override #'molecule-callback = #(lambda (x) '())
-
-Show visibility-lambda and explain why it doesn't work for eg
-StaffSymbol
-@end ignore
-
 Here's an example with blanked-out notes and stems:
 @lilypond[singleline,verbatim]
 blanknotes = {
   \property Voice.NoteHead \override
-    #'molecule-callback = #(lambda (x) '())
+    #'transparent = ##t
   \property Voice.Stem \override
-    #'molecule-callback = #(lambda (x) '()) }
+    #'transparent = ##t }
   
 unblanknotes = {
-  \property Voice.NoteHead \revert #'molecule-callback
-  \property Voice.Stem \revert #'molecule-callback }
+  \property Voice.NoteHead \revert #'transparent
+  \property Voice.Stem \revert #'transparent }
 
 \score {
   \notes\relative c'' {
@@ -3052,37 +3109,16 @@ unblanknotes = {
 }
 @end lilypond                
 
-Some grobs require a special treatment.
 
-Rhythm exercise: make staff invisible and squash pitches:
-@lilypond[singleline,verbatim]
-\score {
-  \notes { \time 3/4 c4 c c8 c | c4 c c8 c }
-  \paper {
-    \translator {
-      \StaffContext
-      \remove Staff_symbol_engraver
-      \consists Pitch_squash_engraver
-      \remove Clef_engraver
-    }
-  }
-}
-@end lilypond
+A very rigorous way of removing grobs from the output is to remove the
+engraver that creates them. For example,
 
-Some modern music does not show bar lines:
-@lilypond[singleline,verbatim]
-\score {
-  \notes \relative c'' {
-    a b c d
-    d c b a
-  }
-  \paper {
-    \translator {
-      \StaffContext
-      whichBar = #""
-      \remove "Time_signature_engraver"
-    }
-  }
+@lilypond[verbatim]
+\score {\notes { c'4 d'8 e'8 g2 }
+  \paper { \translator {
+     \VoiceContext
+     \remove Stem_engraver
+  } }
 }
 @end lilypond
 
@@ -3311,7 +3347,7 @@ Similarly, @code{\noBreak} forbids a  line break at a certain point.
 The @code{\break} and @code{\noBreak} commands are defined in terms of
 the penalty command:
 @example
-  \penalty @var{int} @code{;}
+  \penalty @var{int} 
 @end example
 
 This encourages or discourages LilyPond to make a line break at this
@@ -3415,15 +3451,18 @@ created through direct postscript output, you should prepend the
 necessary .pfa files to LilyPond's .ps output, or upload them to the
 printer before printing.
 
-Titling is not generated.  FIXME: adding titling should not be too
-difficult.
-
+Titling is not generated.
 
 @node Scheme output
 @subsection Scheme output
 @cindex Scheme output
 
-[TODO]
+In the typesetting stage, LilyPond builds a page description, which is
+then written to disk in postscript, @TeX{} or ASCII art. Before it is
+written, the page description is represented as Scheme expressions.  You
+can also dump these  Scheme expressions to a file, which may be
+convenient for debugging output routines.  This done with the Scheme
+output format
 
 @example
 $ lilypond -fscm foo.ly
@@ -3470,14 +3509,6 @@ Here's an example use for ASCII Art output (the example file
 symbol has been made invisible:
 
 @example
-To: bug-gnu-music@@gnu.org
-Subject: LilyPond-1.3.144 beaming broken in 5/8 time
-Gcc: nnml:sent
---------
-Hi List,
-
-Subject says it all.
-
 $ lilypond -fas as-email.ly
 GNU LilyPond 1.3.144
 Now processing: `as-email.ly'
@@ -3951,6 +3982,9 @@ Properties can be unset using the following expression:
   \property @var{contextname}.@var{propname} \unset
 @end example
 
+@cindex properties, unsetting
+@cindex @code{\unset} 
+
 This removes the definition of @var{propname} in @var{contextname}. If
 @var{propname} was not defined in @var{contextname} (but was inherited
 from a higher context), then this has no effect.
@@ -3958,9 +3992,8 @@ from a higher context), then this has no effect.
 
 @refbugs
 
-@code{\property \unset} is not the inverse of @code{\property \set}
-
-
+The syntax of @code{\unset} is asymetric: @code{\property \unset} is not
+the inverse of @code{\property \set}.
 
 
 @c .  {Context definitions}
index 09d60d1ed2f601c6b5c3efcbd02633957d70fa83..944fdb91425f36fb9feb41fb3fc0f0f173973578 100644 (file)
@@ -2,8 +2,6 @@
 
 @c TODO: LilyPond Lilypond lilypond
 
-FIXME: choose one of: notation context/interpretation context.
-
 
 @node Tutorial
 @chapter Tutorial
@@ -36,7 +34,7 @@ yourself, to get a feel for how the program behaves.
 * A piano excerpt::             Piano music
 * An orchestral score::         
 * Other ways to run LilyPond::  
-* Latex and texinfo integration::  
+* Integrating text and music::  
 * end of tutorial::             The end
 @end menu
 
@@ -445,7 +443,7 @@ identifier.
 @end example 
 Here the music ends.  LilyPond does not automatically typeset and end
 bar, we must explicitely request one, using @code{"|."}.
-@c FIXME: Why not?!  better to override \bar "" if not wanted?
+
 @separate
 @example 
 
@@ -594,7 +592,7 @@ the @code{\header} block contains assignments.  In each assignment, a
 variable is set to a value. Lexically, both the variable name and the
 assigned value are strings. The values have to be quoted here, because
 they contain spaces, the variable names could also be put within quotes
-but it is not necessary. Each assignment is finished with a semicolon.
+but it is not necessary. 
 @separate
 @example 
 
@@ -646,10 +644,7 @@ beams off, and use explicit beaming where needed.
         @}
  
 @end example 
-This ends the definition of @code{melody}.  Note that there are no
-semicolons after assignments at the top level.
-
-[FIXME: no longer true for 146?]
+This ends the definition of @code{melody}.  
 
 @separate
 @example 
@@ -774,8 +769,9 @@ Normally, the notes that you enter are transformed into note heads.
 Note heads alone make no sense, they need surrounding information: a key
 signature, a clef, staff lines, etc.  They need @emph{context}.  In
 LilyPond, these symbols are created by objects called `interpretation
-contexts'.  Interpretation contexts (or `Notation contexts') only exist
-during a run of LilyPond.
+contexts'.  Interpretation contexts exist for generating notation
+(`notation context') and for generating sound (`performance
+context'). These objects only exist during a run of LilyPond.
 
 By default, LilyPond will create a Staff context for you.  If you would
 remove the @code{%} sign in the previous line, you would see that
@@ -1838,18 +1834,6 @@ We specify a big indent for the first line and a small linewidth for this
 tutorial.
 
 @separate
-@example
-    \translator@{
-      \VoiceContext
-      \consists "Multi_measure_rest_engraver"
-    @}
-    \translator@{
-      \HaraKiriStaffContext
-      \remove "Multi_measure_rest_engraver"
-    @}
-@end example
-[FIXME: ignoring mmrest moving for now, assuming we'll do that in
-engraver.ly]
 
 Usually, LilyPond's predefined setup of notation contexts (Thread,
 Voice, Staff, Staffgroup, Score) is just fine.  But in this case, we
@@ -1939,15 +1923,13 @@ true.
 @node Other ways to run LilyPond
 @section Other ways to run LilyPond
 
-[FIXME: describe all programs involved in one list.]
-
 Until now, you have been using @file{ly2dvi} to invoke LilyPond.
 There are three other routes.  Firstly, there is a script called
 @code{lilypond-book}, that allows you to freely mix LilyPond input with
 Texinfo or LaTeX input. For example, this manual was written using
 @code{lilypond-book}. It is discussed in @ref{lilypond-book}.
 
-@c FIXME: ly2dvi option?
+
 Secondly, you can generate PostScript directly. This is useful if you
 can not or do not want to run @TeX{} on your system.  To obtain direct
 PostScript output, invoke LilyPond as follows:
@@ -1959,24 +1941,197 @@ You have to set some environment variables to view or print this
 output. More information can be found in @ref{Invoking
 LilyPond}.
 
-@c FIXME: ly2dvi option?
+
 Thirdly, if you want to do special things with your output, you can run
 invoke lilypond directly:
 @example
 lilypond test.ly
 @end example
-to produce plain @TeX{}@footnote{@TeX{} is a text-typesetting system
-that is especially suited for typesetting mathematics.}  output.  Note
-that you must run @TeX{} on the resulting @file{test.tex}, ie, not
-LaTeX.
+to produce plain @TeX{} output.  Note that La@TeX{} will not work on the
+resulting @file{test.tex}.  You must run plain @TeX{} on it.
+
 @cindex @TeX{}
 
 
 
 
 
-@node Latex and texinfo integration
-@section Latex and texinfo integration
+@node Integrating text and music
+@section Integrating text and music
+
+Sometimes, you might want to use music examples in a text that you are
+writing. For example, if you are writing a musicological treatise, a
+songbook, or (like us) the LilyPond manual.  You can make such texts by
+hand, simply by importing a PostScript figure into your wordprocessor.
+However, there is a also an automated procedure:
+
+If you use La@TeX{} or texinfo, you can mix text and lilypond code. A
+script called @code{lilypond-book} will extract the music fragments, run
+lilypond on them, and put back the resulting notation.  lilypond-book is
+described fully in @ref{lilypond-book}, but here we show a small
+example. Since the example also contains explanatory text, we won't
+comment on the contents.
+
+@example
+\documentclass[a4paper]@{article@}
+\begin@{document@}
+
+In a lilypond-book document, you can freely mix music and text. For
+example:
+\begin@{lilypond@}
+  \score @{ \notes \relative c' @{
+     c2 g'2 \times 2/3 @{ f8 e d @} c'2 g4
+  @} @}
+\end@{lilypond@}
+Notice that the music line length matches the margin settings of the
+document.
+
+If you have no \verb+\score+ block in the fragment,
+\texttt@{lilypond-book@} will supply one:
+
+\begin@{lilypond@}
+  c'4
+\end@{lilypond@}
+
+In the example you see here, a number of things happened: a
+\verb+\score+ block was added, and the line width was set to natural
+length. You can specify many more options using  \LaTeX style options
+in brackets:
+
+\begin[verbatim,11pt,singleline,
+  fragment,relative,intertext="hi there!"]@{lilypond@}
+  c'4 f bes es
+\end@{lilypond@}
+
+\texttt@{verbatim@} also shows the lilypond code, \texttt@{11pt@} selects
+the default music size, \texttt@{fragment@} adds a score block,
+\texttt@{relative@} uses relative mode for the fragment, and
+\texttt@{intertext@} specifies what to print between the
+\texttt@{verbatim@} code and the music.
+
+If you include large examples into the text, it may be more convenient
+to put the example in a separate file:
+
+\lilypondfile[printfilename]@{sammartini.ly@}
+
+The \texttt@{printfilename@} option adds the file name to the output.
+
+\end@{document@}
+@end example
+
+Under Unix, you can view the results as follows.
+@example
+$ cd input/tutorial
+$ lilypond-book --outdir=out/ lilbook.tex
+lilypond-book (GNU LilyPond) 1.3.146
+Reading `/home/hanwen/usr/src/lilypond-1.3.146/input/tutorial/lilbook.tex'
+Reading
+`/home/hanwen/usr/src/lilypond-1.3.146/input/tutorial/sammartini.ly'
+@var{lots of stuff deleted}
+Writing `out/lilbook.latex'
+$ cd out
+$ latex lilbook.latex
+@var{lots of stuff deleted}
+$ xdvi lilbook 
+@end example
+
+Notice the @code{outdir} option to lilypond-book. Running lilypond-book
+and running latex creates a lot of temporary files, and you wouldn't
+those to clutter up your working directory. Hence, we have them created
+in a separate subdirectory.
+
+The result more or less looks like this: 
+
+@separate
+
+In a lilypond-book document, you can freely mix music and text. For
+example:
+@lilypond
+  \score { \notes \relative c' {
+     c2 g'2 \times 2/3 { f8 e d } c'2 g4
+  } }
+@end lilypond
+Notice that the music line length matches the margin settings of the
+document.
+
+If you have no @code{\score} block in the fragment,
+@code{lilypond-book} will supply one:
+
+@lilypond
+  c'4
+@end lilypond
+
+In the example you see here, a number of things happened: a
+@code{\score} block was added, and the line width was set to natural
+length. You can specify many more options using  La@TeX{} style options
+in brackets:
+
+@lilypond[verbatim,11pt,singleline,
+  fragment,relative,intertext="hi there!"]
+  c'4 f bes es
+@end lilypond
+
+@code{verbatim} also shows the lilypond code, @code{11pt} selects
+the default music size, @code{fragment} adds a score block,
+@code{relative} uses relative mode for the fragment, and
+@code{intertext} specifies what to print between the
+@code{verbatim} code and the music.
+
+If you include large examples into the text, it may be more convenient
+to put the example in a separate file:
+
+@lilypondfile[printfilename]{sammartini.ly}
+
+The @code{printfilename} option adds the file name to the output.
+@node  end of tutorial
+@section The end        
+         
+That's all folks.  From here, you can either try fiddling with input
+files, or you can read the reference manual.  You can find more example
+files in @file{input} and @file{input/test}.  You can also look at some
+real music.  Have a look at the @uref{Mutopia project,
+http://www.mutopiaproject.org}.
+
+
+
+@ignore
+
+[TODO
+
+this should be on mutopia website.
+
+]
+
+
+@c waar deze info?  is uiteindelijk wel handig, schat ik.
+[TODO: cut blabla]
+
+If you have a big music project, or just a lot of LilyPond input files,
+all generated output from LilyPond, @TeX{} and metafont will clutter
+your working directory.  LilyPond comes with a one-size-fits-all
+pre-cooked makefile that helps you manage producing output.  It will
+produce all output in the directory @file{out} , generate and track
+dependencies. Also, it helps in preparing your submission to @ref{Mutopia
+project}.
+
+@file{make/ly.make}
+@example
+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
+[..]
+Generated out/menuet.ps for target menuet.
+@end example
+
+Type @samp{make help} to see possible targets.
+
+[TODO]
+@file{/usr/share/lilypond/doc/lilypond/examples/input/mutopia-header.ly}
+
+
+
 
 
 [TODO: rewrite completely.]
@@ -1987,7 +2142,7 @@ LaTeX.
 
 
 So what does this look like? Well, here is an example:
-@lilypond[veryverbatim, intertext="produces this music:"]
+@li lypond[veryverbatim, intertext="produces this music:"]
 \score{
   \notes\relative c'{
     \time 5/8
@@ -2020,7 +2175,7 @@ music, another file than @code{paper16.ly} should be included.
 If you want to make the music not so wide, you can insert a
 @code{\paper} statement to set the linewidth:
 
-@lilypond[veryverbatim, intertext="produces this music:"]
+@li lypond[veryverbatim, intertext="produces this music:"]
 \score{
   \notes\relative c'{
     \time 5/8
@@ -2041,12 +2196,12 @@ If you only write voice-contents in the lilypond block, @command{lilypond-book}
 will set the @code{linewidth} variable to -1, so Lilypond
 will make the music as short as possible but without breaking the
 line. Here is a well know harmonic progression:
-@lilypond[veryverbatim, intertext="produce a well known harmonic progression:"]
+@li lypond[veryverbatim, intertext="produce a well known harmonic progression:"]
   \context Voice { <c' e g> <b d g> <c2 e g> }
 @end lilypond
 
 If you want to place music examples in the text,
-@lilypond[eps]
+@li lypond[eps]
   \context Voice {  <c' e g> <b d g> <c2 e g> }
 @end lilypond
 , you can use the @code{eps} option. This will create the music as
@@ -2055,14 +2210,14 @@ eps graphics and include it into the document with the
 
 The code used look like this:
 @example
-@@lilypond[eps]
+@@li lypond[eps]
  \context Voice @{ <c' e g> <b d g> <c2 e g> @}
 @@end lilypond
 @end example
 
 You can also use the @code{eps} option if the block is a complete
 lilypond source. This 5 cm long empty line, 
-@lilypond[eps]
+@li lypond[eps]
 \score{
   \notes{s}
   \paper{ linewidth = 5.\cm }
@@ -2070,7 +2225,7 @@ lilypond source. This 5 cm long empty line,
 @end lilypond
 was created with this code:
 @example
-@@lilypond[eps]
+@@li lypond[eps]
 \score@{
   \notes@{s@}
   \paper@{ linewidth = 5.\cm@}
@@ -2082,8 +2237,10 @@ To avoid that La@TeX{} places the music on a line of its one, there should
 be no empty lines between the normal text and the lilypond
 environment. 
 
-You can also use @code{lilypondfile} (on a separate line, FIXME), to
-include another file.
+You can also use @code{lilypondfile}, to include another file:
+@example
+        @@li lypondfile[printfilename]@{foo.ly@}
+@end example
 
 @subsection Fontsize options
 
@@ -2093,7 +2250,7 @@ the text, 11pt or 13pt is probably better.
 
 The code can look like this:
 @example
-@@lilypond[13pt, eps]
+@@li lypond[13pt, eps]
 <c' e g>
 @@end lilypond
 @end example
@@ -2101,35 +2258,35 @@ The code can look like this:
 The following options set the fontsize:
 @itemize
 @item @code{11pt}
-@lilypond[11pt, eps]
+@li lypond[11pt, eps]
   \relative c'{
     r16 [c d e][f d e c] [g'8 c][b-\prall c] |
     [d16 g, a b][c a b g][d'8 g f-\prall g]
   }
 @end lilypond
 @item @code{13pt}
-@lilypond[13pt, eps]
+@li lypond[13pt, eps]
   \relative c'{
     r16 [c d e][f d e c] [g'8 c][b-\prall c] |
     [d16 g, a b][c a b g][d'8 g f-\prall g]
   }
 @end lilypond
 @item @code{16pt}
-@lilypond[16pt, eps]
+@li lypond[16pt, eps]
   \relative c'{
     r16 [c d e][f d e c] [g'8 c][b-\prall c] |
     [d16 g, a b][c a b g][d'8 g f-\prall g]
   }
 @end lilypond
 @item @code{20pt}
-@lilypond[20pt, eps]
+@li lypond[20pt, eps]
   \relative c'{
     r16 [c d e][f d e c] [g'8 c][b-\prall c] |
     [d16 g, a b][c a b g][d'8 g f-\prall g]
   }
 @end lilypond
 @item @code{26pt}
-@lilypond[26pt, eps]
+@li lypond[26pt, eps]
   \relative c'{
     r16 [c d e][f d e c] [g'8 c][b-\prall c] |
   }
@@ -2164,7 +2321,7 @@ La@TeX{} documents. It will also act as a simple test-suite for
 lilypond-book. You can place @code{eps} lilypond in and marginspars just
 as any other included eps graphics.
 
-@lilypond
+@li lypond
 \score{
   \notes\relative c'{ 
         \time 12/8
@@ -2185,7 +2342,7 @@ Danish composer Andy Pape. The music is put inside a
 the right margin if you set floatingfigure width and lilypond linewidth
 to the same value. The code looks like this:
 
-@lilypond[verbatim]
+@li lypond[verbatim]
 \score{
   \notes\relative c'{ 
     \time 12/8
@@ -2212,101 +2369,5 @@ Verbatim environments will also ignore the page margins. That is
 a feature of La@TeX{}. (But you usually put things inside a verbatim
 environment when you don't want La@TeX{} to do any linebreaking)
 
-@node Songs with additional verses
-@subsection Songs with additional verses
-
-With lilypond-book, you can typeset songs with additional verses.  To
-make lilypond-book print titles like ly2dvi, add
-
-[TODO: merge with lilypond-book tutorial]
-
-
-
-
-@example
-\input titledefs.tex
-\def\preLilypondExample@{\def\mustmakelilypondtitle@{@}@}
-@end example
-
-just before the music fragment.
-
-@c urg: can't show, won't work for .texi docs
-
-@example
-% generate standard lilypond titles
-\input titledefs.tex
-\def\preLilypondExample@{\def\mustmakelilypondtitle@{@}@}
-
-\begin@{lilypond@}
-\header @{
-  title =      "Title"
-  subtitle =   "Subtitle"
-  subsubtitle =        "Subsubtitle"
-  opus =  "Opus 1"
-  piece = "Piece"
-  composer =    "Composer"
-  enteredby =   "JCN"
-  instrument = "instrument"
-@}
-\paper @{ linewidth = -1. @}
-\score @{
-  \notes \relative c'' @{ a b c d @}
-@}
-\end@{lilypond@}
-
-\begin@{enumerate@}
-\item Verse one.  aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa 
-\item Verse two.  bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb 
-\end@{enumerate@}
-@end example
-
-
-
-@node  end of tutorial
-@section The end        
-         
-That's all folks.  From here, you can either try fiddling with input
-files, or you can read the reference manual.  You can find more example
-files in @file{input} and @file{input/test}.  You can also look at some
-Real Music (TM), have a look at the @ref{Mutopia project}.
-
-
-
-@ignore
-
-[TODO
-
-this should be on mutopia website.
-
-]
-
-
-@c waar deze info?  is uiteindelijk wel handig, schat ik.
-[TODO: cut blabla]
-
-If you have a big music project, or just a lot of LilyPond input files,
-all generated output from LilyPond, @TeX{} and metafont will clutter
-your working directory.  LilyPond comes with a one-size-fits-all
-pre-cooked makefile that helps you manage producing output.  It will
-produce all output in the directory @file{out} , generate and track
-dependencies. Also, it helps in preparing your submission to @ref{Mutopia
-project}.
-
-@file{make/ly.make}
-@example
-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
-[..]
-Generated out/menuet.ps for target menuet.
-@end example
-
-Type @samp{make help} to see possible targets.
-
-[TODO]
-@file{/usr/share/lilypond/doc/lilypond/examples/input/mutopia-header.ly}
-
 @end ignore
 
diff --git a/Documentation/windows/LilyPond.ico b/Documentation/windows/LilyPond.ico
new file mode 100644 (file)
index 0000000..6877806
Binary files /dev/null and b/Documentation/windows/LilyPond.ico differ
index 411a5e943f38955be1e53d24baab5c8fdc04f32f..f08529a3b756476c949d6f6d8da23daa9c783814 100644 (file)
@@ -35,7 +35,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 Jan's windows page
+information on this topic can be found at the LilyPond on Windows page
 (http://appel.lilypond.org/lilypond/gnu-windows/).
 
    You need the following packages to compile Lilypond.
@@ -60,9 +60,12 @@ information on this topic can be found at Jan's windows page
 
    * TeX.
 
-     If you want LilyPond to use kpathsea support (recommended), make
-     sure you have tetex 1.0 or newer (1.0.6 is known to work).  You
-     may need to install a tetex-devel or tetex-dev package too.
+     TeX is used as an output backend.
+
+     Also, TeX's libkpathsea is used to find the fonts (.mf, .afm,
+     .tfm).  Make sure you have tetex 1.0 or newer (1.0.6 is known to
+     work).  You may need to install a tetex-devel or tetex-dev package
+     too.
 
    * Texinfo (version 4.0 or newer).  The documentation of lily is
      written in texinfo.  Check out the texinfo FTP directory
@@ -83,7 +86,16 @@ information on this topic can be found at Jan's windows page
      `PFA_FILES='.
 
    * kpathsea, a library for searching (TeX) files.  `kpathsea' is
-     usually included with your installation of TeX.
+     usually included with your installation of TeX.  You may need to
+     install a tetex-devel or tetex-dev package too.
+
+     In the very unlikely case that kpathsea is not available for your
+     platform (ie, you're not running GNU/Linux, Windows, or any recent
+     UNIX), you can compile LilyPond without kpathsea support.  In that
+     case, you'll probably have to indicate where TeX's tfm files live.
+     Invoke configure something like:
+
+          ./configure --without-kpathsea --enable-tfm-path=/usr/share/texmf/fonts/tfm/public/cm/:/usr/share/texmf/fonts/tfm/ams/symbols
 
 
 Running requirements
diff --git a/VERSION b/VERSION
index 6619d9fcb8994b497d07c20254eddf73b786d2a0..3b1525cd12d34dc8b7be1fab1f6fd9f6b1f69bbf 100644 (file)
--- a/VERSION
+++ b/VERSION
@@ -1,8 +1,8 @@
 PACKAGE_NAME=LilyPond
 MAJOR_VERSION=1
 MINOR_VERSION=3
-PATCH_LEVEL=146
-MY_PATCH_LEVEL=jcn4
+PATCH_LEVEL=147
+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
new file mode 100644 (file)
index 0000000..ddbfa62
--- /dev/null
@@ -0,0 +1,111 @@
+
+
+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).
+
+`GUILE 1.4, or newer.'
+     Check out the GUILE webpage
+     (http://www.gnu.org/software/guile.html)
+
+   You can get the latest version of the GNU + Cygnus tools from cygnus
+mirror site (http://sources.redhat.com/cygwin/mirrors.html).
+
+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.
+
+   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.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.  See /usr/share/doc/tetex-beta for
+     details.
+
+`GSView'
+     Click  here (ftp://ftp.cs.wisc.edu/ghost/ghostgum/gsv36w32.exe) to
+     install GSView (GhostView for Windows), or visit ftp.cs.wisc.edu
+     (ftp://ftp.cs.wisc.edu/ghost/ghostgum).
+
+`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).
+
+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:
+
+   * talk about /etc/profile.d/lilypond-profile.sh
+
+   * GUILE errors
+
+   * TEX errors
+
+   ]
+
index edfdbda20a9e1d4f1c5d69a69d54a028e81e89ce..f582a235e4f0091bbaf75ff758f35173fc65b9e6 100755 (executable)
--- a/configure
+++ b/configure
@@ -3068,7 +3068,7 @@ EOF
  
 else
   echo "$ac_t""no" 1>&6
-{ echo "configure: error: Cannot find kpathsea functions.  Rerun with --without-kpathsea." 1>&2; exit 1; } 
+{ echo "configure: error: Cannot find kpathsea functions.  You should install kpathsea; see INSTALL.txt.  Rerun ./configure --without-kpathsea only if kpathsea is not available for your platform." 1>&2; exit 1; }
 fi
 done
 
diff --git a/input/ascii-art/as1.ly b/input/ascii-art/as1.ly
new file mode 100644 (file)
index 0000000..dc68f84
--- /dev/null
@@ -0,0 +1,13 @@
+
+\version "1.3.146"
+
+\score { 
+  \context Voice \notes\relative c {
+    \time 4/4
+       g''1 a2 b4. c8
+       \repeat "volta" 2 { a4 b c d } \alternative { { c c c c } { d2 d4 [d8 d] } }
+       
+  }
+  \paper { }  
+  \midi { }
+}
diff --git a/input/ascii-art/as2.ly b/input/ascii-art/as2.ly
new file mode 100644 (file)
index 0000000..4866362
--- /dev/null
@@ -0,0 +1,22 @@
+\version "1.3.146"
+
+% test for ascii-art output
+
+\include "paper-as9.ly"
+
+\score {
+       \notes\relative c'{
+               \time 4/4
+               c8( e g )b
+               d( d d )d
+               \bar "|."
+       }
+       \paper {
+               linewidth=65.0\char
+               \translator { \StaffContext barSize = #9 }
+               %\translator { \VoiceContext beamHeight = #0 }
+               \translator { \VoiceContext beamHeight = ##f }
+       }
+
+}
+
diff --git a/input/regression/merge-differently-dotted.ly b/input/regression/merge-differently-dotted.ly
new file mode 100644 (file)
index 0000000..32380cc
--- /dev/null
@@ -0,0 +1,16 @@
+\header {
+
+texidoc = "If NoteCollision has merge-differently-dotted set, note
+heads that have differing dot counts may be merged anyway."
+
+ }
+       
+\score { \notes {
+  \context Staff <
+  \context Voice = VA { \voiceOne g'8 g'8 
+     \property Staff.NoteCollision \override #'merge-differently-dotted = ##t
+     g'8 g'8
+     }
+  \context Voice = VB { \voiceTwo [g'8. f16] [g'8. f'16] } 
+  >
+}}
index b7706cc60ec0f907a2b5dea49d98c5706ca3c563..857dea910d1f9ca59c6f8c8ad51f2e4bc2da9618 100644 (file)
@@ -1,17 +1,18 @@
 \version "1.3.146"
 
 \header{
-texidoc="
-@c FIXME
-Similarly, if @code{stem_default_neutral_direction} is set to @code{-1}.
-"
+
+texidoc="Similarly, if @code{'neutral-direction} is set to @code{-1}.  "
+
 }
 
 \score{
        \notes\relative c{
+       \property Voice.Stem \override #'default-neutral-direction = #-1
+                
            b''4 ~ b8()b8 e4 e,
        }
        \paper{
-               stem_default_neutral_direction=-1.0
+
        }
 }
index 6515426ad69025da7504956aeb022556d6aab747..920ff395c39eaa2ba8a5a6048b27fec3d215a071 100644 (file)
@@ -130,7 +130,6 @@ voiceE = \notes {
 
     >
        \paper {
-           font_normal = 12.
            \translator {
                 \StaffContext 
                 \consists Instrument_name_engraver
index b9a3d9dd3cce8b8c66f56e6ef354276ac659349a..b92cb37198f9705fd6a25dcecd1bf17b2e47a9a2 100644 (file)
@@ -1,9 +1,7 @@
 \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";
 }
 
-\version "1.3.146"
-
 #(assoc-set! chord::names-alist-jazz
   '((0 . 0) (2 . -1)) '(""))
 
diff --git a/input/test/as.ly b/input/test/as.ly
deleted file mode 100644 (file)
index 39644dc..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-\version "1.3.146"
-
-\score { 
-  \context Voice \notes\relative c {
-    \time 4/4
-       g''1 a2 b4. c8
-       
-  }
-  \paper { }  
-  \midi { }
-}
diff --git a/input/test/as1.ly b/input/test/as1.ly
deleted file mode 100644 (file)
index 6c669f3..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-\version "1.3.146"
-
-\score { 
-  \context Voice \notes\relative c {
-    \time 4/4
-       g''1 a2 b4. c8
-       \repeat "volta" 2 { a4 b c d } \alternative { { c c c c } { d2 d4 [d8 d] } }
-       
-  }
-  \paper { }  
-  \midi { }
-}
diff --git a/input/test/as2.ly b/input/test/as2.ly
deleted file mode 100644 (file)
index 4866362..0000000
+++ /dev/null
@@ -1,22 +0,0 @@
-\version "1.3.146"
-
-% test for ascii-art output
-
-\include "paper-as9.ly"
-
-\score {
-       \notes\relative c'{
-               \time 4/4
-               c8( e g )b
-               d( d d )d
-               \bar "|."
-       }
-       \paper {
-               linewidth=65.0\char
-               \translator { \StaffContext barSize = #9 }
-               %\translator { \VoiceContext beamHeight = #0 }
-               \translator { \VoiceContext beamHeight = ##f }
-       }
-
-}
-
index 33726b736c88e1f4e1f8b38c2c57275571fccffd..59d792200479d9312ba531b28255ea50cc991dd3 100644 (file)
@@ -2,8 +2,8 @@
 
 
 fragment = \notes {
-  \property Voice.Beam \set #'staff-position = #2
-  \property Voice.Beam \set #'height = #-2
+  \property Voice.Beam \set #'staff-position = #4
+  \property Voice.Beam \set #'height = #-4
   [c'8 c]
 }
 
index e4b660d41d09a4326417ba9c21cf1dc2aa63b802..aef4112f2a1e70139189bbdc1ae69db12c79ff18 100644 (file)
@@ -45,7 +45,7 @@ texidoc = "overriding the molecule callback can also be used to draw a
  )
 
 
- \score { \notes  {
+ \score { \notes \relative c''  {
 
  \property Voice.TextScript \override #'molecule-callback =
    #(make-molecule-boxer Text_item::brew_molecule)
@@ -55,5 +55,11 @@ texidoc = "overriding the molecule callback can also be used to draw a
 \property Voice.Stem \override #'molecule-callback =
    #(make-molecule-boxer Stem::brew_molecule)
 
-      c''8
+\property Score.RehearsalMark \override #'molecule-callback =
+   #(make-molecule-boxer Text_item::brew_molecule)
+
+      c8
+\property Voice.Stem \revert #'molecule-callback
+
+      c4. c4 \mark "F" c1 
    }}
index 0129a9411e92d563f82c8a28701915032ac35312..19b1b54627295bae3e3fc14103a756f5597c869d 100644 (file)
@@ -1,4 +1,4 @@
-\version "1.3.146"
+4\version "1.3.146"
 
 
 somewhatLong =  \lyrics{
diff --git a/input/test/music-box.ly b/input/test/music-box.ly
new file mode 100644 (file)
index 0000000..2ff6c63
--- /dev/null
@@ -0,0 +1,164 @@
+
+\header{
+texidoc = "This example shows prelude in C major of WTK1, but coded
+using Scheme functions to save typing work.
+"
+
+
+
+  title =  "Preludium"
+  opus =   "BWV 846"
+  composer = "Johann Sebastian Bach (1685-1750)"
+  enteredby = "Rune Zedeler"
+  mutopiatitle = "Das Wohltemperierte Clavier I, Prelude 1 (c-major)"
+  mutopiacomposer = "J.S.Bach"
+  mutopiaopus = "BWV846"
+  mutopiainstrument = "Piano"
+  style = "baroque"
+  copyright = "Public Domain"
+  maintainer = "rz@daimi.au.dk"
+  lastupdated = "2001/mar/30"
+  tagline = "\\parbox{\hsize}{\\thefooter\\quad\\small \\\\This music is part of the Mutopia project, \\texttt{http://www.mutopiaproject.org/}\\\\It has been typeset and placed in the public domain by " + \maintainer + ".\\\\Unrestricted modification and redistribution is permitted and encouraged---copy this music and share it!}"
+}
+
+\include "deutsch.ly"
+
+#(define (transform music)
+  (let* ((es (ly-get-mus-property music 'elements))
+         (n  (ly-music-name music))
+        )
+   (if (not (equal? n "Sequential_music"))
+     (ly-warn "transform needs sequential music!")
+     (begin
+      (let recurse ((elts es))
+       (if (not (equal? elts '()))
+        (begin
+           ((trans (ly-get-mus-property (cadr elts) 'elements)) (car elts))
+          (set-cdr! elts (cddr elts))
+          (recurse (cdr elts))
+        )
+       )
+      )
+     )
+   )
+   music
+  )
+ )
+
+#(define ((trans pitches) music)
+  (let* ((es (ly-get-mus-property music 'elements))
+         (e (ly-get-mus-property music 'element))
+         (p (ly-get-mus-property music 'pitch))
+         (body (ly-get-mus-property music 'body))
+         (alts (ly-get-mus-property music 'alternatives)))
+
+    (if (pair? es)
+        (ly-set-mus-property
+         music 'elements
+         (map (trans pitches) es)))
+
+    (if (music? alts)
+        (ly-set-mus-property
+         music 'alternatives
+         ((trans pitches) alts)))
+
+    (if (music? body)
+        (ly-set-mus-property
+         music 'body
+         ((trans pitches) body)))
+
+    (if (music? e)
+        (ly-set-mus-property
+         music 'element
+         ((trans pitches) e)))
+
+    (if (pitch? p)
+       (let* ((o (pitch-octave p))
+              (n (pitch-notename p))
+              (i (+ (* 7 o) n))
+             (pes (ly-get-mus-property (list-ref pitches i) 'elements))
+             (pnew (ly-get-mus-property (car pes) 'pitch))
+             )
+          (ly-set-mus-property music 'pitch pnew)
+       )
+    )
+    music
+  )
+ )
+
+
+
+
+
+\version "1.3.142"
+
+pat = \notes \transpose c'' \repeat unfold 2 {
+  < { \context Staff=up {r8 e16 f g e f g } }
+    { \context Staff=down <
+      \context Voice=vup  { \stemUp \tieUp r16 d8.~d4 }
+      \context Voice=vdwn { \stemDown  c2 }
+    > }
+  >
+}
+
+enda = \notes { r8 f,16 a, c f c a, \stemUp c \translator Staff = down
+      a, f, a, f, d, f, d, \translator Staff = up \stemBoth
+      r8 g16 h d' f' d' h d' h g h d f e-\prall d <e1 g c'^\fermata> \bar "|."
+}
+endb = \notes {\stemUp \tieUp r16 c,8.~c,4~c,2 r16 h,,8.~h,,4~h,,2 c,1 \bar "|."}
+endc = \notes {\stemDown \tieDown c,,2~c,, c,,~c,, c,,1_\fermata }
+
+\score {
+  \notes \transpose c'' \context PianoStaff <
+    \context Staff=up   { \clef "G" s1*32 \enda }
+    \context Staff=down { \clef "F" s1*32 < \context Voice=vup \endb
+                                            \context Voice=vdwn \endc
+                       > }
+    { \apply #transform {\pat {c e g c' e' }
+                         \pat {c d a d' f' }
+                        \pat {h, d g d' f' }
+                        \pat {c e g c' e' }
+                        \pat {c e a e' a' }
+                        \pat {c d fis a d'  }
+                        \pat {h, d g d' g' }
+                        \pat {h, c e g c' }
+                        \pat {a, c e g c'  }
+                        \pat {d, a, d fis c' }
+                        \pat {g, h, d g h }
+                        \pat {g, b, e g cis'  }
+                        \pat {f, a, d a d' }
+                        \pat {f, as, d f h }
+                        \pat {e, g, c g c' }
+                        \pat {e, f, a, c f }
+                        \pat {d, f, a, c f }
+
+                        \pat {g,, d, g, h, f }
+                        \pat {c, e, g, c e }
+                        \pat {c, g, b, c e }
+                        \pat {f,, f, a, c e  }
+                        \pat {fis,, c, a, c es }
+                        \pat {as,, f, h, c d }
+                        \pat {g,, f, g, h, d }
+                        \pat {g,, e, g, c e }
+                        \pat {g,, d, g, c f }
+                        \pat {g,, d, g, h, f }
+                        \pat {g,, es, a, c fis }
+                        \pat {g,, e, g, c g }
+                        \pat {g,, d, g, c f }
+                        \pat {g,, d, g, h, f }
+                        \pat {c,, c, g, b, e }
+                       }
+    }
+  >
+  \paper {
+    \translator {
+      \PianoStaffContext
+      VerticalAlignment \override #'forced-distance = #10
+    }
+
+    linewidth = 18.0 \cm
+  }
+  \midi {
+      \tempo 4 = 80
+  }
+}
index 240b6641c90e4787a138c0537dd5f927ae6ee838..3e574ee957c28778db9d69b0b5a4586838fdc03e 100644 (file)
@@ -3,12 +3,12 @@
 
 % #(set! german-Bb #t)
 
-ch = \chords { beses1/+beses bes/+bes b/+b bis/+bis ases/+ases as/+as a/+a ais/+ais fisis/+fisis }
+ch = \chords { beses1/+beses bes/+bes b/+b bis/+bis ases/+ases as/+as a/+a ais/+ais fisis/+fisis}
 
 \score {
    <
    \context ChordNames=chn {\ch}
-   \context Staff=stf {\clef "G_8" \ch }
+   \context Staff=stf \chords {\ch}
    >
    \paper {}
 }
index 5d1d790f83c992e9bc5c90bf4f95e58b7938ba22..45447ca2a56537651b172d8f27a4a1073dae8af6 100644 (file)
@@ -1,6 +1,9 @@
 depth = ../..
 
 LOCALSTEPMAKE_TEMPLATES=ly mutopia
+
+EXTRA_DIST_FILES=lilbook.tex
+
 include $(depth)/make/stepmake.make 
 
 
diff --git a/input/tutorial/lilbook.tex b/input/tutorial/lilbook.tex
new file mode 100644 (file)
index 0000000..c64b11c
--- /dev/null
@@ -0,0 +1,44 @@
+\documentclass[a4paper]{article}
+\begin{document}
+
+In a lilypond-book document, you can freely mix music and text. For
+example:
+\begin{lilypond}
+  \score { \notes \relative c' {
+     c2 g'2 \times 2/3 { f8 e d } c'2 g4
+  } }
+\end{lilypond}
+Notice that the music line length matches the margin settings of the
+document.
+
+If you have no \verb+\score+ block in the fragment,
+\texttt{lilypond-book} will supply one:
+
+\begin{lilypond}
+  c'4
+\end{lilypond}
+
+In the example you see here, a number of things happened: a
+\verb+\score+ block was added, and the line width was set to natural
+length. You can specify many more options using  \LaTeX style options
+in brackets:
+
+\begin[verbatim,11pt,singleline,
+  fragment,relative,intertext="hi there!"]{lilypond}
+  c'4 f bes es
+\end{lilypond}
+
+\texttt{verbatim} also shows the lilypond code, \texttt{11pt} selects
+the default music size, \texttt{fragment} adds a score block,
+\texttt{relative} uses relative mode for the fragment, and
+\texttt{intertext} specifies what to print between the
+\texttt{verbatim} code and the music.
+
+If you include large examples into the text, it may be more convenient
+to put the example in a separate file:
+
+\lilypondfile[printfilename]{sammartini.ly}
+
+The \texttt{printfilename} option adds the file name to the output.
+
+\end{document}
index 9b96735fad5a070f2a03ffb1899f8c469e7b0959..8b1b54fe95d0206686c6e4e786f09e9b03c73dfa 100644 (file)
@@ -51,7 +51,7 @@ bassvoices = \notes \relative c' {
              \viola
              \oboes
          >
-         \context Staff = down < \time 2/2 \clef bass;
+         \context Staff = down < \time 2/2 \clef bass
              \bassvoices
          >
     >
index af9d3763e67837d00cd59ca86bdb3e67440f09ae..0310b7c959388e9e616b925357e3836eed1879a4 100644 (file)
@@ -45,6 +45,9 @@ Align_interface::fixed_distance_alignment_callback (SCM element_smob, SCM axis)
   return gh_double2scm (0.0);
 }
 
+/*
+  merge with align-to-extents? 
+ */
 void
 Align_interface::align_to_fixed_distance (Grob *me , Axis a)
 {
@@ -68,18 +71,44 @@ Align_interface::align_to_fixed_distance (Grob *me , Axis a)
   
   Link_array<Grob> elems
     = Pointer_group_interface__extract_elements (me, (Grob*) 0, "elements");
+
   Real where_f=0;
+
+  Interval v;
+  v.set_empty ();
+  Array<Real> translates;
+  
   for (int j=0 ;  j < elems.size (); j++) 
     {
       where_f += stacking_dir * dy;
-      elems[j]->translate_axis (where_f, a);
+      translates.push (where_f);
+      v.unite (Interval (where_f, where_f));
+    }
+
+  /*
+    TODO: support self-alignment-{Y,X}
+   */
+  for (int i = 0; i < translates.size (); i++)
+    {
+      elems[i]->translate_axis (translates[i] - v.center (), a);
     }
 }
 
 /*
   Hairy function to put elements where they should be. Can be tweaked
   from the outside by setting minimum-space and extra-space in its
-  children */
+  children
+
+  We assume that the children the refpoints of the children are still
+  found at 0.0 -- we will fuck up with thresholds if children's
+  extents are already moved to locations such as (-16, -8), since the
+  dy needed to put things in a row doesn't relate to the distances
+  between original refpoints.
+
+  TODO: maybe we should rethink and throw out thresholding altogether.
+  The original function has been taken over by
+  align_to_fixed_distance().
+*/
 void
 Align_interface::align_elements_to_extents (Grob * me, Axis a)
 {
@@ -158,11 +187,15 @@ Align_interface::align_elements_to_extents (Grob * me, Axis a)
   
   for (int j=0 ;  j < elems.size (); j++) 
     {
-      Real dy = 0.0;
-      dy = - stacking_dir * dims[j][-stacking_dir];
+      Real dy = -  dims[j][-stacking_dir];
       if (j)
-       dy += stacking_dir * dims[j-1][stacking_dir];
+       dy += dims[j-1][stacking_dir];
+
 
+      /*
+       we want dy to be > 0
+       */
+      dy *= stacking_dir; 
       if (j)
        {
          dy = (dy >? threshold[SMALLER])
@@ -175,7 +208,6 @@ Align_interface::align_elements_to_extents (Grob * me, Axis a)
     }
 
   
-
   Grob * align_center = unsmob_grob (align);
   Real center_offset = 0.0;
   
@@ -200,10 +232,15 @@ Align_interface::align_elements_to_extents (Grob * me, Axis a)
          j++;
        }
 
-      if (isdir_b (align))
-       {
-         center_offset = total.linear_combination (gh_scm2double (align));
-       }
+
+      /*
+       FIXME: uncommenting freaks out the Y-alignment of
+       line-of-score.
+       */
+      // Real align_param = isdir_b (align)  ? gh_scm2double (align) : 0.0;
+      
+      if (gh_number_p (align))
+       center_offset = total.linear_combination (gh_scm2double (align));
 
       for (int j = 0 ;  j < all_grobs.size (); j++)
        all_grobs[j]->translate_axis (all_translates[j] - center_offset, a);
index 901d56ab21bbb24f1e04b63c9745dbeacdf84ed8..46bf9a7131cf91e1093b2ddeb0a61b127fa4430f 100644 (file)
 /*
   [TODO]
 
-  * shorter! (now +- 1000 lines)
-  * less hairy code
+  -* shorter! (now +- 1000 lines)
+  
+  -* less hairy code
+  
   */
 
 
@@ -135,7 +137,7 @@ Beam::get_default_dir (Grob*me)
   /*
     If dir is not determined: get default
   */
-  return to_dir (me->get_grob_property ("default-neutral-direction"));
+  return to_dir (me->get_grob_property ("neutral-direction"));
 }
 
 
@@ -495,7 +497,7 @@ Beam::user_override (SCM smob)
   SCM s = me->get_grob_property ("staff-position");
   if (gh_number_p (s))
     {
-      Real y = gh_scm2double (s) * staff_space;
+      Real y = gh_scm2double (s) * staff_space * 0.5;
       me->set_grob_property ("y", gh_double2scm (y));
     }
 
@@ -503,7 +505,7 @@ Beam::user_override (SCM smob)
   s = me->get_grob_property ("height");
   if (gh_number_p (s))
     {
-      Real dy = gh_scm2double (s) * staff_space;
+      Real dy = gh_scm2double (s) * staff_space * 0.5;
       me->set_grob_property ("dy", gh_double2scm (dy));
     }
   
@@ -772,11 +774,13 @@ Beam::stem_beams (Grob*me,Item *here, Item *next, Item *prev,
   Real bdy = interbeam_f;
   Real stemdx = staffline_f;
 
+#if 0
     // ugh -> use commonx
   Real dx = visible_stem_count (me) ?
     last_visible_stem (me)->relative_coordinate (0, X_AXIS) - first_visible_stem (me)->relative_coordinate (0, X_AXIS)
     : 0.0;
-
+#endif
+  
   Molecule leftbeams;
   Molecule rightbeams;
 
index 33a75d50c89654c2728ae87f3cafb1746b9fa6cb..165d105e386399ec7fdc0f0cdc48306c7ec32e95 100644 (file)
@@ -8,8 +8,9 @@
   (c)  1997--2001 Han-Wen Nienhuys <hanwen@cs.uu.nl>
            Jan Nieuwenhuizen <janneke@gnu.org>
 */
-
+#include <ctype.h>
 #include <iostream.h>
+
 #include "translator-def.hh"
 #include "lily-guile.hh"
 #include "change-iterator.hh"
 #include "un-relativable-music.hh"
 #include "chord.hh"
 
+
+
+bool
+regular_identifier_b (SCM id)
+{
+  String str = ly_scm2string (id);
+  char const *s = str.ch_C() ;
+
+  bool v = true;
+  while (*s && v)
+   {
+        v = v && isalpha (*s);
+        s++;
+   }
+  return v;
+}
+
+
 bool
 is_duration_b (int t)
 {
@@ -384,6 +403,9 @@ assignment:
                THIS->remember_spot ();
        }
        /* cont */ '=' identifier_init  {
+               if (! regular_identifier_b ($1))
+                       THIS->parser_error (_ ("Identifier should have  alphabetic characters only"));
+
                THIS->lexer_p_->set_identifier (ly_scm2string ($1), $4);
 
 /*
@@ -1222,7 +1244,7 @@ request_that_take_dir:
        gen_text_def
        | verbose_request
        | script_abbreviation {
-               SCM s = THIS->lexer_p_->lookup_identifier ("dash-" + ly_scm2string ($1));
+               SCM s = THIS->lexer_p_->lookup_identifier ("dash" + ly_scm2string ($1));
                Articulation_req *a = new Articulation_req;
                if (gh_string_p (s))
                        a->set_mus_property ("articulation-type", s);
@@ -1476,22 +1498,22 @@ gen_text_def:
 
 script_abbreviation:
        '^'             {
-               $$ = gh_str02scm ("hat");
+               $$ = gh_str02scm ("Hat");
        }
        | '+'           {
-               $$ = gh_str02scm ("plus");
+               $$ = gh_str02scm ("Plus");
        }
        | '-'           {
-               $$ = gh_str02scm ("dash");
+               $$ = gh_str02scm ("Dash");
        }
        | '|'           {
-               $$ = gh_str02scm ("bar");
+               $$ = gh_str02scm ("Bar");
        }
        | '>'           {
-               $$ = gh_str02scm ("larger");
+               $$ = gh_str02scm ("Larger");
        }
        | '.'           {
-               $$ = gh_str02scm ("dot");
+               $$ = gh_str02scm ("Dot");
        }
        ;
 
index 2efbf78e0417761b5ffee0424dc0c1745f47dd56..4a9169e83f135efa8ae002b6e1b43661b77f37b9 100644 (file)
@@ -30,7 +30,7 @@ Rest::after_line_breaking (SCM smob)
   if (d && bt > 4) // UGH.
     {
       d->set_grob_property ("staff-position",
-                          gh_int2scm ((bt == 7) ? 4 : 3));
+                           gh_int2scm ((bt == 7) ? 4 : 3));
     }
 
   return SCM_UNSPECIFIED;
index 165848acd7d3e73c30581d305d1ed53f1f558500..09c15b567969faf314cdc2b9474668ae94849610 100644 (file)
@@ -235,7 +235,7 @@ Stem::get_default_dir (Grob*me)
   if (sign (dd - du))
     return Direction (sign (dd -du));
 
-  return to_dir (me->get_grob_property ("default-neutral-direction"));
+  return to_dir (me->get_grob_property ("neutral-direction"));
 }
 
 Real
@@ -476,12 +476,9 @@ Stem::brew_molecule (SCM smob)
   stem_y.unite (Interval (y2,y1));
 
   Real dy = Staff_symbol_referencer::staff_space (me)/2.0;
-  Real head_wid = 0;
     
   if (Grob *hed = support_head (me))
     {
-      Real slope =0.0;
-      
       Interval head_height = hed->extent (hed,Y_AXIS);
       Real y_attach = Note_head::stem_attachment_coordinate ( hed, Y_AXIS);
 
index b05101b73ac6b16e5f85566fa827452e85b2e306..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 (file)
@@ -1,20 +0,0 @@
-% Toplevel initialisation file. 
-       
-\version "1.3.146"
-
-
-\include "declarations.ly"
-
-\include "paper16.ly"
-  \paper { \paperSixteen
-    linewidth = -1.\cm
-    castingalgorithm = \Wordwrap 
-    "unusedentry" = "}\\def\\nolilyfooter{"
-  }
-
-\score { 
-  \notes {
-    \maininput
-  }
-\paper{}
-}
index 6366e6973af483194dfe9f0eb68975256a9f9fb3..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 (file)
@@ -1,25 +0,0 @@
-% Toplevel initialisation file. 
-       
-
-\version "1.3.146"
-
-
-\include "declarations.ly"
-
-\include "paper16.ly"
-
- \paper { 
-  \paperSixteen
-    linewidth = -1.0\cm
-    castingalgorithm = \Wordwrap
-   "unusedentry" = "}\\def\\nolilyfooter{" 
-}
-
-
-\score { 
-%  \notes\relative c {
-  \notes {
-    \maininput
-  }
-\paper{} 
-}
index 8205f6c3df02f662a0406faca62a2faa90ddb19d..52995c5849c188391383d7177682102b2e0a5aff 100644 (file)
@@ -11,8 +11,6 @@ StaffContext=\translator {
        Generic_property_list = #generic-staff-properties
        \consists "Property_engraver"
        
-       \consists "Multi_measure_rest_engraver"
-
        \consists "Bar_engraver"
  % Bar_engraver must be first so default bars aren't overwritten
 % with empty ones.
@@ -32,20 +30,11 @@ StaffContext=\translator {
        \consists "Rest_collision_engraver"
        \consists "Local_key_engraver"
        \consists "Piano_pedal_engraver"
-
-%{
-       The Instrument_name_engravei puts the name of the instrument
-       (\property Staff.instrument Staff.instr for subsequent lines)
-       to the left of a staff.
-
-       This is commented out, so you don't get funny things on the
-       PianoStaff      
        \consists "Instrument_name_engraver"
-%}
 
        \consistsend "Axis_group_engraver"
        
-       MinimumVerticalExtent = ##f
+       MinimumVerticalExtent = #'(-4 . 4)
        ExtraVerticalExtent = ##f
        VerticalExtent = ##f 
 
@@ -134,7 +123,7 @@ VoiceContext = \translator {
        \consists "Voice_devnull_engraver"
        \consists "Output_property_engraver"    
        \consists "Arpeggio_engraver"
-
+       \consists "Multi_measure_rest_engraver"
        \consists "Text_spanner_engraver"
        \consists "Property_engraver"
        
@@ -250,10 +239,11 @@ PianoStaffContext = \translator{
 
        \consists "Vertical_align_engraver"
 
-       alignmentReference = #0
+       
+       
        verticalAlignmentChildCallback = #Align_interface::fixed_distance_alignment_callback
        VerticalAlignment \override #'forced-distance = #12
-
+       VerticalAlignment \override #'self-alignment-Y = #0
 %      \consistsend "Axis_group_engraver"
 }
 
@@ -412,8 +402,6 @@ ScoreContext = \translator {
        splitInterval = #'(0 . 1)
        changeMoment = #`(,(make-moment 0 0) . ,(make-moment 1 512))
 
-       StaffMinimumVerticalExtent = #(cons -4.0 4.0)
-
        barAuto = ##t
        voltaVisibility = ##t
        %  name, glyph id, clef position 
index e0b43d71d6384b2c989f9c2da469993fac0d9059..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 (file)
@@ -1,25 +0,0 @@
-% Toplevel initialisation file. 
-       
-\version "1.3.146"
-
-
-\include "declarations.ly"
-
-\include "paper16.ly"
-
-\paper { 
-  \paperSixteen
-    linewidth = -1.0\cm
-    castingalgorithm = \Wordwrap
-    "unusedentry" = "}\\def\\nolilyfooter{"
-}
-
-
-\score { 
-%  \notes\relative c {
-  \notes {
-    \maininput
-  }
-  \paper { }
-
-}
index eb0e026d6de9512b5fe9d214be841f649345856b..2bdc143f30284c9d7b59dea269ef06fcc78d9403 100644 (file)
@@ -9,33 +9,32 @@
 
 #(define german-Bb #f)
 
-#(define (pitch->chord-name-text-banter pitch steps)
-   (let ((dopitch (if (member (cdr pitch) '((6 -1) (6 -2)))
-                     (list 7 (+ (if german-Bb 0 1) (caddr pitch)))
-                     (cdr pitch)
-                )))
+#(define (pitch->chord-name-text-banter pitch additions)
+   (if (equal? (cdr pitch) '(6 -1))
+     (if german-Bb
+       (cons "B" (accidental->text -1))
+       '("B")
+     )
      (cons
-       (list-ref '("C" "D" "E" "F" "G" "A" "H" "B") (car dopitch))
-       (accidental->text-super (cadr dopitch))
+       (list-ref '("C" "D" "E" "F" "G" "A" "H") (cadr pitch))
+       (accidental->text (caddr pitch))
      )
    )
  )   
 
 
 #(define (pitch->note-name-text-banter pitch)
-   (let ((dopitch (if (member (cdr pitch) '((6 -1) (6 -2)))
-                    (list 7 (+ 1 (caddr pitch)))
-                    (cdr pitch)
-                )))
-     (list
+   (if (equal? (cdr pitch) '(6 -1))
+     '("b")
+     (cons
        (string-append
-         (list-ref '("c" "d" "e" "f" "g" "a" "h" "b") (car dopitch))
-         (if (or (equal? (car dopitch) 2) (equal? (car dopitch) 5))
-           (list-ref '( "ses"  "s" "" "is" "isis") (+ 2 (cadr dopitch)))
-           (list-ref '("eses" "es" "" "is" "isis") (+ 2 (cadr dopitch)))
+         (list-ref '("c" "d" "e" "f" "g" "a" "h") (cadr pitch))
+         (if (or (equal? (cadr pitch) 2) (equal? (cadr pitch) 5))
+           (list-ref '( "ses"  "s" "" "is" "isis") (+ 2 (caddr pitch)))
+           (list-ref '("eses" "es" "" "is" "isis") (+ 2 (caddr pitch)))
          )
        )
+       '()
      )
    )
  )
-
index 6bce4b2ece596a3fe2750fe81de7e55e04ec9ec2..5fa998727dd151daa881e4560c1ef6490d3e21c6 100644 (file)
@@ -2,8 +2,8 @@
 
 \version "1.3.146"
 
-stemUp = \property Voice.Stem \override #'direction = #1
-stemDown = \property Voice.Stem \override #'direction = #-1 
+stemUp = \property Voice.Stem \set #'direction = #1
+stemDown = \property Voice.Stem \set #'direction = #-1 
 stemBoth= \property Voice.Stem \revert #'direction
 
 slurUp   = \property Voice.Slur \override #'direction = #1
index 3407f96bc9c4959cd9b163a0b7f543d5ef154f2a..b0fcedd3dc6c0cacd41839494cfbfd2371e31fde 100644 (file)
@@ -1,12 +1,12 @@
 \version "1.3.146"
 
 
-"dash-hat" = "marcato"
-"dash-plus" = "stopped"
-"dash-dash" = "tenuto"
-"dash-bar" = "staccatissimo"
-"dash-larger" = "accent"
-"dash-dot" = "staccato"
+dashHat= "marcato"
+dashPlus= "stopped"
+dashDash= "tenuto"
+dashBar= "staccatissimo"
+dashLarger= "accent"
+dashDot= "staccato"
 
 
 thumb = \script "thumb"
index 6fd99caaba5d54ca24ade0415fb116a1779455e2..3fdf1b7b31029418cd342e23185742ba26ac361c 100644 (file)
@@ -7,28 +7,28 @@ rced = \spanrequest \stop "decrescendo"
 
 cresc = \notes {
   \commandspanrequest \start "crescendo" 
-  \property Voice.crescendoText = "cresc."
-  \property Voice.crescendoSpanner = "dashed-line"
+  \property Voice.crescendoText = #"cresc."
+  \property Voice.crescendoSpanner = #'dashed-line
 }
 
 % ah, this is handy: maybe drop resetting of properties in
 % dynamic-engraver ?
 endcresc = \notes {
   \commandspanrequest \stop "crescendo" 
-  \property Voice.crescendoText = ##f
-  \property Voice.crescendoSpanner = ##f
+  \property Voice.crescendoText \unset
+  \property Voice.crescendoSpanner \unset
 }
 
 dim = \notes {
   \commandspanrequest \start "decrescendo" 
-  \property Voice.decrescendoText = "dim."
-  \property Voice.decrescendoSpanner = "dashed-line"
+  \property Voice.decrescendoText = #"dim."
+  \property Voice.decrescendoSpanner = #'dashed-line
 }
 
 enddim = \notes {
   \commandspanrequest \stop "decrescendo" 
-  \property Voice.decrescendoText = ##f
-  \property Voice.decrescendoSpanner = ##f
+   \property Voice.decrescendoText \unset
+ \property Voice.decrescendoSpanner \unset
 }
 
 %{
index afabd4365aa3690ff83818de3eca0e3df8adc8f4..617b8dc7714e4d0c3ad064686de36d343c31b70a 100644 (file)
@@ -1,15 +1,15 @@
 Begin3
 Title: LilyPond
-Version: 1.3.146
-Entered-date: 05APR01
+Version: 1.3.147
+Entered-date: 09APR01
 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.146.tar.gz 
+       1000k lilypond-1.3.147.tar.gz 
 Original-site: ftp.cs.uu.nl /pub/GNU/LilyPond/development/
-       1000k lilypond-1.3.146.tar.gz 
+       1000k lilypond-1.3.147.tar.gz 
 Copying-policy: GPL
 End
index 7041a22ba8da05436c6d7a93fface3af8da3081a..fa309a096344e666043b954066dfd9235b474c21 100644 (file)
@@ -1,11 +1,11 @@
 %define info yes
 
 Name: lilypond
-Version: 1.3.146
+Version: 1.3.147
 Release: 1
 License: GPL
 Group: Applications/Publishing
-Source0: ftp.cs.uu.nl:/pub/GNU/LilyPond/development/lilypond-1.3.146.tar.gz
+Source0: ftp.cs.uu.nl:/pub/GNU/LilyPond/development/lilypond-1.3.147.tar.gz
 # music notation software for.. ?
 Summary: A program for printing sheet music.
 URL: http://www.cs.uu.nl/~hanwen/lilypond
index 93d19a946b573f153ddaebe543f4b65091218b86..529672ced5a7382987f5400d4b7ab6ab044fb0b2 100644 (file)
@@ -32,6 +32,10 @@ sync: local-sync
 
 generate-GNUmakefiles: $(dirs-after:%=%/GNUmakefile)
 
+truncate = $(filter-out %/GNUmakefile , $(wildcard */*))
+trunc:
+       rm -fr $(truncate)
+
 # too time-consuming?
 # local-dist: local-ly-clean
 
@@ -42,5 +46,6 @@ local-ports-help:
   download    download .lys from $(MUTOPIA_MIRROR)\n\
   ly-clean    move all .lys to $(outdir)\n\
   sync        generate missing parts of tree\n\
+  trunc       truncate tree\n\
 "\
 
index d70a07c6091446bff314152cd89f4c4d8896a5e1..1a43a5a86a419eefec6262752cd7e20a27e67815 100644 (file)
@@ -147,7 +147,6 @@ lower =  \context Staff \notes \relative c{
     >
 
   \paper {
-    gourlay_maxmeasures = 5.
     textheight = 295.\mm
     \translator{ \OrchestralScoreContext }
     \translator{
index a726f6b9ba442dcd0d7c50547095fce38e908272..f008fdef15fb357c489e66b7872416e3a14b72c1 100644 (file)
@@ -29,7 +29,7 @@ instrument = "Piano"
 
   copyright = "Public Domain"
   maintainer = "Jan Nieuwenhuizen"
-  maintainer_email = "janneke@gnu.org"
+  maintainerEmail = "janneke@gnu.org"
   lastupdated =         "2001/Mar/26"
   mutopiapublicdomain = "\\parbox{\hsize}{\\thefooter\\quad\\small
     \\\\This music is part of the Mutopia project,
@@ -431,7 +431,18 @@ grandStaff =  \context PianoStaff <
                \grandStaff
        >
        \paper { 
-               \translator { \HaraKiriStaffContext }
+               \translator {
+                       \HaraKiriStaffContext
+                       %VerticalExtent = #'(0 . 0)
+                       %MinimumVerticalExtent = #'(0 . 0)
+                       %StaffMinimumVerticalExtent = #'(0 . 0)
+               }
+               \translator {
+                       \LyricsContext
+                       VerticalExtent = #'(1.2 . 1.2)
+                       MinimumVerticalExtent = #'(0 . 0)
+                       StaffMinimumVerticalExtent = #'(1.2 . 1.2)
+               }
        }
        \midi{
                \tempo 4 = 54
index 2a803c6bf89c35d82ceea715a392dc6584f8e387..821207bf572707202ec29339c0a1bf44cd564f90 100644 (file)
@@ -12,8 +12,8 @@ enteredby =    "Shay Rojansky"
   style = "baroque"
   copyright =    "\\\\This music is part of the Mutopia project, http://sca.uwaterloo.ca/Mutopia/\\\\It has been typeset and placed in the public domain by Han-Wen Nienhuys.\\\\Unrestricted modification and redistribution is permitted and encouraged - copy this music and share it!"
   maintainer = "hanwen@cs.uu.nl"
-  lastupdated = "1999/Oct/14"
-  
+  lastupdated = "2001/April/6"
+  footer = "Mutopia-2001/4/6-4"
 }
 
 %{
@@ -21,12 +21,13 @@ TODO: use autobeaming.
 %}
 \version "1.3.146"
 
+% #(set! point-and-click line-column-location)
 
 tenor = 
        \context Voice  = tenor  \notes \relative c' {
        \clef "violin"
 
-       \stemDown
+       \voiceTwo
        r8 [c8 d e] [f8. g32 f] [e8 a] |
        [d, g] ~ [g16 a g f] [e f e d] [c d c b ] |
        [a 8 fis'] g4 ~ [g8 fis16 e] [f8 d] |
@@ -42,20 +43,19 @@ tenor =
        [e fis] [g8.   a32 g] [fis8 b e, a] ~ |
        [a16 b a gis] [fis8 f!] [e d] ~ [d16 e fis gis] |
        [a gis a b] [gis fis gis a] b8 r8 r4 |
-       r8 [c,8 d e] \stemUp [f8.  g32 f] [e8 a] |
+       r8 [c,8 d e]  [f8.  g32 f] [e8 a] |
 %% 15
-       [d, g] ~ [g16 a g f] e8 \stemDown [e fis g] ~ |
+       [d, g] ~ [g16 a g f] e8 [e fis g] ~ |
        [g8 fis] [gis8 a] ~ [a g! a b] |
-       \stemBoth
        [c8.    d32 c ] [b8 e ] [a, d ] ~ [d 16 e  d  c ] |
        [b8 g'  cis,  d ] [e  cis  d  e  ] |
-       \stemDown a,8 r8 r e [fis g] \stemBoth [a8.  b32 a] |
+        a,8 r8 r e [fis g] [a8.  b32 a] |
 %% 20
-       [g8 c  fis, b] ~ [b16 c  b a] \stemDown [g fis e d] \stemBoth |
-       e4 \stemDown d ~ [d16 a' g f!] [e g f! a] |
+       [g8 c  fis, b] ~ [b16 c  b a]  [g fis e d]  |
+       e4 d ~ [d16 a' g f!] [e g f! a] |
        g4 ~ [g16 a bes8] c 4 [d 8 g,] |
-       \stemBoth g4. f8 ~ [f e] d4 |
-       \stemDown e8 a4 g8 ~ [g8 f g a] |
+        g4. f8 ~ [f e] d4 |
+        e8 a4 g8 ~ [g8 f g a] |
 %% 25
        [bes8.  c32 b] [a8 d ] [g, c ] ~ [c 16 d  c  bes] |
        [a bes a g] [f g f e] d4 ~ [d8. g16] |
@@ -66,7 +66,7 @@ tenor =
 soprane = 
        \context Voice = sop \notes \relative c' {
 
-       \stemUp
+       \voiceOne
        r1 |
        r2 r8 [g'8 a b] |
        [c8.  d32 c ] [b8 e ] [a, d ] ~ [d 16 e  d  c ] |
@@ -106,10 +106,8 @@ alt =
        \clef "bass"
 
        
-       \stemUp
-       r1 |
-       r |
-       r |
+       \voiceOne
+       R1*3 |
        r8 [g'8 a b] [c8.  d32 c ] [b8 e ] |
 %% 5
        [a, d ] ~ [d 16 e  d  c ] [b8 c  ~ c  bes8] |
@@ -124,7 +122,7 @@ alt =
        [fis, b] ~ [b16 c  b a] gis8 a4 gis8 |
        a4 r8 g8 [a b] c8. [d32 c ] |
 %% 15
-       [b8 e  a, d (]  [ ) d'  g,] d 4 |
+       [b8 e  a, d ] ~ [ d  g,] d'4 |
        [c 8 a] e' 4 d 8 r8 r4 |
        r8 [a8 b cis ] [d8.  e32 d ] [c !8 f ] |
        [b,8 e ] ~ [e 16 f  e  d ] cis 8 r8 r4 |
@@ -145,12 +143,8 @@ bass = \context Voice = bassvoice
        \notes \relative c {
        \clef "bass"
 
-
-       \stemDown
-       r1 |
-       r |
-       r |
-       r |
+       \voiceTwo
+       R1*4 |
 %% 5
        r2 r8 [c8 d e] |
        [f8.  g32 f] [e8 a] [d, g] ~ [g16 a g f] |
@@ -165,8 +159,8 @@ bass = \context Voice = bassvoice
        a, 4 r4 r2 |
 %% 15
        r8 [g 8 a  b ] [c8.  d32 c] [b 8 e] |
-       [a, 8 d] ~ [d16 e d c] [b 8 bes  a  g'' ] |
-       [a,, 8 fis' g e] d4 [e8 f!] |
+       [a, 8 d] ~ [d16 e d c] [b 8 bes  a  g ] |
+       [a 8 fis' g e] d4 [e8 f!] |
        [g8.  a32 g] [f8 bes] [e, a] ~ [a16 bes a g] |
        [f e f d] [g8 a] d,2 ~ |
 %% 20
@@ -190,10 +184,10 @@ bass = \context Voice = bassvoice
                        \soprane
                        \tenor
                > \bar "|." }
-               \context Staff = two <
+               \context Staff = two <
                        \alt
                        \bass
-               > \bar "|." }
+               >
        > 
 
        \paper{
diff --git a/ports/mutopia/ArbeauT/Orch/GNUmakefile b/ports/mutopia/ArbeauT/Orch/GNUmakefile
deleted file mode 100644 (file)
index 0197f03..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
- depth = ../../../..
- include $(depth)/ports/ports.make
diff --git a/ports/mutopia/ArbeauT/Orch/belle/GNUmakefile b/ports/mutopia/ArbeauT/Orch/belle/GNUmakefile
deleted file mode 100644 (file)
index 323b508..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-mutopia-name = belle
- depth = ../../../../..
- include $(depth)/ports/ports.make
diff --git a/ports/mutopia/BachJS/BWV1008/GNUmakefile b/ports/mutopia/BachJS/BWV1008/GNUmakefile
deleted file mode 100644 (file)
index 0197f03..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
- depth = ../../../..
- include $(depth)/ports/ports.make
diff --git a/ports/mutopia/BachJS/BWV1008/solo-cello-suite-ii/GNUmakefile b/ports/mutopia/BachJS/BWV1008/solo-cello-suite-ii/GNUmakefile
deleted file mode 100644 (file)
index 7315975..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-zipped = true
-mutopia-name = solo-cello-suite-ii
- depth = ../../../../..
- include $(depth)/ports/ports.make
diff --git a/ports/mutopia/BachJS/BWV1042/GNUmakefile b/ports/mutopia/BachJS/BWV1042/GNUmakefile
deleted file mode 100644 (file)
index 0197f03..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
- depth = ../../../..
- include $(depth)/ports/ports.make
diff --git a/ports/mutopia/BachJS/BWV1042/concerto-in-e-major/GNUmakefile b/ports/mutopia/BachJS/BWV1042/concerto-in-e-major/GNUmakefile
deleted file mode 100644 (file)
index 906bb58..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-zipped = true
-mutopia-name = concerto-in-e-major
- depth = ../../../../..
- include $(depth)/ports/ports.make
diff --git a/ports/mutopia/BachJS/BWV1043/GNUmakefile b/ports/mutopia/BachJS/BWV1043/GNUmakefile
deleted file mode 100644 (file)
index 0197f03..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
- depth = ../../../..
- include $(depth)/ports/ports.make
diff --git a/ports/mutopia/BachJS/BWV1043/concerto-in-d-minor/GNUmakefile b/ports/mutopia/BachJS/BWV1043/concerto-in-d-minor/GNUmakefile
deleted file mode 100644 (file)
index 54462b8..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-zipped = true
-mutopia-name = concerto-in-d-minor
- depth = ../../../../..
- include $(depth)/ports/ports.make
diff --git a/ports/mutopia/BachJS/BWV772/GNUmakefile b/ports/mutopia/BachJS/BWV772/GNUmakefile
deleted file mode 100644 (file)
index 0197f03..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
- depth = ../../../..
- include $(depth)/ports/ports.make
diff --git a/ports/mutopia/BachJS/BWV772/bach-invention-01/GNUmakefile b/ports/mutopia/BachJS/BWV772/bach-invention-01/GNUmakefile
deleted file mode 100644 (file)
index c95bad2..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-mutopia-name = bach-invention-01
- depth = ../../../../..
- include $(depth)/ports/ports.make
diff --git a/ports/mutopia/BachJS/BWV846/GNUmakefile b/ports/mutopia/BachJS/BWV846/GNUmakefile
deleted file mode 100644 (file)
index 0197f03..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
- depth = ../../../..
- include $(depth)/ports/ports.make
diff --git a/ports/mutopia/BachJS/BWV846/wtk1-fugue1/GNUmakefile b/ports/mutopia/BachJS/BWV846/wtk1-fugue1/GNUmakefile
deleted file mode 100644 (file)
index 548dd19..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-mutopia-name = wtk1-fugue1
- depth = ../../../../..
- include $(depth)/ports/ports.make
diff --git a/ports/mutopia/BachJS/BWV846/wtk1-prelude1/GNUmakefile b/ports/mutopia/BachJS/BWV846/wtk1-prelude1/GNUmakefile
deleted file mode 100644 (file)
index c019c24..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-mutopia-name = wtk1-prelude1
- depth = ../../../../..
- include $(depth)/ports/ports.make
diff --git a/ports/mutopia/BachJS/BWV847/GNUmakefile b/ports/mutopia/BachJS/BWV847/GNUmakefile
deleted file mode 100644 (file)
index 0197f03..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
- depth = ../../../..
- include $(depth)/ports/ports.make
diff --git a/ports/mutopia/BachJS/BWV847/wtk1-fugue2/GNUmakefile b/ports/mutopia/BachJS/BWV847/wtk1-fugue2/GNUmakefile
deleted file mode 100644 (file)
index 4c96983..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-mutopia-name = wtk1-fugue2
- depth = ../../../../..
- include $(depth)/ports/ports.make
diff --git a/ports/mutopia/BachJS/BWV847/wtk1-prae2/GNUmakefile b/ports/mutopia/BachJS/BWV847/wtk1-prae2/GNUmakefile
deleted file mode 100644 (file)
index b508d65..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-mutopia-name = wtk1-prae2
- depth = ../../../../..
- include $(depth)/ports/ports.make
diff --git a/ports/mutopia/BachJS/BWV851/GNUmakefile b/ports/mutopia/BachJS/BWV851/GNUmakefile
deleted file mode 100644 (file)
index 0197f03..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
- depth = ../../../..
- include $(depth)/ports/ports.make
diff --git a/ports/mutopia/BachJS/BWV851/fugue_re_mineur_BWV851/GNUmakefile b/ports/mutopia/BachJS/BWV851/fugue_re_mineur_BWV851/GNUmakefile
deleted file mode 100644 (file)
index ece1342..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-mutopia-name = fugue_re_mineur_BWV851
- depth = ../../../../..
- include $(depth)/ports/ports.make
diff --git a/ports/mutopia/BachJS/BWV854/GNUmakefile b/ports/mutopia/BachJS/BWV854/GNUmakefile
deleted file mode 100644 (file)
index 0197f03..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
- depth = ../../../..
- include $(depth)/ports/ports.make
diff --git a/ports/mutopia/BachJS/BWV854/wtk1-fugue9/GNUmakefile b/ports/mutopia/BachJS/BWV854/wtk1-fugue9/GNUmakefile
deleted file mode 100644 (file)
index cccc7e4..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-mutopia-name = wtk1-fugue9
- depth = ../../../../..
- include $(depth)/ports/ports.make
diff --git a/ports/mutopia/BachJS/BWV854/wtk1-prelude9/GNUmakefile b/ports/mutopia/BachJS/BWV854/wtk1-prelude9/GNUmakefile
deleted file mode 100644 (file)
index df6b7a9..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-mutopia-name = wtk1-prelude9
- depth = ../../../../..
- include $(depth)/ports/ports.make
diff --git a/ports/mutopia/BachJS/BWV871/GNUmakefile b/ports/mutopia/BachJS/BWV871/GNUmakefile
deleted file mode 100644 (file)
index 0197f03..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
- depth = ../../../..
- include $(depth)/ports/ports.make
diff --git a/ports/mutopia/BachJS/BWV871/wtk2-fugue2/GNUmakefile b/ports/mutopia/BachJS/BWV871/wtk2-fugue2/GNUmakefile
deleted file mode 100644 (file)
index 9c56ab8..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-mutopia-name = wtk2-fugue2
- depth = ../../../../..
- include $(depth)/ports/ports.make
diff --git a/ports/mutopia/BachJS/BWV997/Bach_Preludio_BWV997/GNUmakefile b/ports/mutopia/BachJS/BWV997/Bach_Preludio_BWV997/GNUmakefile
deleted file mode 100644 (file)
index a656a9b..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-mutopia-name = Bach_Preludio_BWV997
- depth = ../../../../..
- include $(depth)/ports/ports.make
diff --git a/ports/mutopia/BachJS/BWV997/GNUmakefile b/ports/mutopia/BachJS/BWV997/GNUmakefile
deleted file mode 100644 (file)
index 0197f03..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
- depth = ../../../..
- include $(depth)/ports/ports.make
diff --git a/ports/mutopia/BachJS/BWV997/bwv997-01prelude/GNUmakefile b/ports/mutopia/BachJS/BWV997/bwv997-01prelude/GNUmakefile
deleted file mode 100644 (file)
index 49b3845..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-mutopia-name = bwv997-01prelude
- depth = ../../../../..
- include $(depth)/ports/ports.make
diff --git a/ports/mutopia/BachJS/BWV997/bwv997-02fuga/GNUmakefile b/ports/mutopia/BachJS/BWV997/bwv997-02fuga/GNUmakefile
deleted file mode 100644 (file)
index 02a3dc6..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-mutopia-name = bwv997-02fuga
- depth = ../../../../..
- include $(depth)/ports/ports.make
diff --git a/ports/mutopia/BachJS/BWV997/bwv997-03sarabande/GNUmakefile b/ports/mutopia/BachJS/BWV997/bwv997-03sarabande/GNUmakefile
deleted file mode 100644 (file)
index c48449e..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-mutopia-name = bwv997-03sarabande
- depth = ../../../../..
- include $(depth)/ports/ports.make
diff --git a/ports/mutopia/BachJS/BWV997/bwv997-04gigue/GNUmakefile b/ports/mutopia/BachJS/BWV997/bwv997-04gigue/GNUmakefile
deleted file mode 100644 (file)
index 3cbd1b1..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-mutopia-name = bwv997-04gigue
- depth = ../../../../..
- include $(depth)/ports/ports.make
diff --git a/ports/mutopia/BachJS/BWV997/bwv997-05double/GNUmakefile b/ports/mutopia/BachJS/BWV997/bwv997-05double/GNUmakefile
deleted file mode 100644 (file)
index 7a4719e..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-mutopia-name = bwv997-05double
- depth = ../../../../..
- include $(depth)/ports/ports.make
diff --git a/ports/mutopia/BachJS/BWV999/GNUmakefile b/ports/mutopia/BachJS/BWV999/GNUmakefile
deleted file mode 100644 (file)
index 0197f03..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
- depth = ../../../..
- include $(depth)/ports/ports.make
diff --git a/ports/mutopia/BachJS/BWV999/praludum-in-c-moll/GNUmakefile b/ports/mutopia/BachJS/BWV999/praludum-in-c-moll/GNUmakefile
deleted file mode 100644 (file)
index 1ba40da..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-mutopia-name = praludum-in-c-moll
- depth = ../../../../..
- include $(depth)/ports/ports.make
diff --git a/ports/mutopia/BachJS/chorale_1/GNUmakefile b/ports/mutopia/BachJS/chorale_1/GNUmakefile
deleted file mode 100644 (file)
index b3db5d4..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-zipped = true
-mutopia-name = chorale_1
- depth = ../../../..
- include $(depth)/ports/ports.make
diff --git a/ports/mutopia/BanchieriA/Reg1_Suon1/GNUmakefile b/ports/mutopia/BanchieriA/Reg1_Suon1/GNUmakefile
deleted file mode 100644 (file)
index 6b65bcd..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-mutopia-name = Reg1_Suon1
- depth = ../../../..
- include $(depth)/ports/ports.make
diff --git a/ports/mutopia/BanchieriA/Reg1_Suon2/GNUmakefile b/ports/mutopia/BanchieriA/Reg1_Suon2/GNUmakefile
deleted file mode 100644 (file)
index a85e3e7..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-mutopia-name = Reg1_Suon2
- depth = ../../../..
- include $(depth)/ports/ports.make
diff --git a/ports/mutopia/BanchieriA/Reg1_Suon3/GNUmakefile b/ports/mutopia/BanchieriA/Reg1_Suon3/GNUmakefile
deleted file mode 100644 (file)
index 6eb7b33..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-mutopia-name = Reg1_Suon3
- depth = ../../../..
- include $(depth)/ports/ports.make
diff --git a/ports/mutopia/BanchieriA/Reg1_Suon4/GNUmakefile b/ports/mutopia/BanchieriA/Reg1_Suon4/GNUmakefile
deleted file mode 100644 (file)
index e6e0812..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-mutopia-name = Reg1_Suon4
- depth = ../../../..
- include $(depth)/ports/ports.make
diff --git a/ports/mutopia/BanchieriA/Reg1_Suon5/GNUmakefile b/ports/mutopia/BanchieriA/Reg1_Suon5/GNUmakefile
deleted file mode 100644 (file)
index c62fb57..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-mutopia-name = Reg1_Suon5
- depth = ../../../..
- include $(depth)/ports/ports.make
diff --git a/ports/mutopia/BanchieriA/Reg1_Suon6/GNUmakefile b/ports/mutopia/BanchieriA/Reg1_Suon6/GNUmakefile
deleted file mode 100644 (file)
index 4ff0e46..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-mutopia-name = Reg1_Suon6
- depth = ../../../..
- include $(depth)/ports/ports.make
diff --git a/ports/mutopia/BeethovenLv/O62/Coriolan/GNUmakefile b/ports/mutopia/BeethovenLv/O62/Coriolan/GNUmakefile
deleted file mode 100644 (file)
index 6876273..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-zipped = true
-mutopia-name = Coriolan
- depth = ../../../../..
- include $(depth)/ports/ports.make
diff --git a/ports/mutopia/BeethovenLv/O62/GNUmakefile b/ports/mutopia/BeethovenLv/O62/GNUmakefile
deleted file mode 100644 (file)
index 0197f03..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
- depth = ../../../..
- include $(depth)/ports/ports.make
diff --git a/ports/mutopia/BeethovenLv/WoO59/GNUmakefile b/ports/mutopia/BeethovenLv/WoO59/GNUmakefile
deleted file mode 100644 (file)
index 0197f03..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
- depth = ../../../..
- include $(depth)/ports/ports.make
diff --git a/ports/mutopia/BeethovenLv/WoO59/fur-elise/GNUmakefile b/ports/mutopia/BeethovenLv/WoO59/fur-elise/GNUmakefile
deleted file mode 100644 (file)
index a8fc9af..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-mutopia-name = fur-elise
- depth = ../../../../..
- include $(depth)/ports/ports.make
diff --git a/ports/mutopia/BendaJA/Benda_SonateG3/GNUmakefile b/ports/mutopia/BendaJA/Benda_SonateG3/GNUmakefile
deleted file mode 100644 (file)
index 5b32721..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-mutopia-name = Benda_SonateG3
- depth = ../../../..
- include $(depth)/ports/ports.make
diff --git a/ports/mutopia/BruhnsN/BWV847/GNUmakefile b/ports/mutopia/BruhnsN/BWV847/GNUmakefile
deleted file mode 100644 (file)
index 0197f03..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
- depth = ../../../..
- include $(depth)/ports/ports.make
diff --git a/ports/mutopia/BruhnsN/BWV847/Pfeminor/GNUmakefile b/ports/mutopia/BruhnsN/BWV847/Pfeminor/GNUmakefile
deleted file mode 100644 (file)
index e455a64..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-mutopia-name = Pfeminor
- depth = ../../../../..
- include $(depth)/ports/ports.make
diff --git a/ports/mutopia/CarcassiM/O60/GNUmakefile b/ports/mutopia/CarcassiM/O60/GNUmakefile
deleted file mode 100644 (file)
index 0197f03..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
- depth = ../../../..
- include $(depth)/ports/ports.make
diff --git a/ports/mutopia/CarcassiM/O60/carcassi-op60-01/GNUmakefile b/ports/mutopia/CarcassiM/O60/carcassi-op60-01/GNUmakefile
deleted file mode 100644 (file)
index b515408..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-mutopia-name = carcassi-op60-01
- depth = ../../../../..
- include $(depth)/ports/ports.make
diff --git a/ports/mutopia/CarcassiM/O60/carcassi-op60-03/GNUmakefile b/ports/mutopia/CarcassiM/O60/carcassi-op60-03/GNUmakefile
deleted file mode 100644 (file)
index 67f8a16..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-mutopia-name = carcassi-op60-03
- depth = ../../../../..
- include $(depth)/ports/ports.make
diff --git a/ports/mutopia/CarcassiM/O60/carcassi-op60-08/GNUmakefile b/ports/mutopia/CarcassiM/O60/carcassi-op60-08/GNUmakefile
deleted file mode 100644 (file)
index b69c4bf..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-mutopia-name = carcassi-op60-08
- depth = ../../../../..
- include $(depth)/ports/ports.make
diff --git a/ports/mutopia/CarcassiM/O60/carcassi-op60-15/GNUmakefile b/ports/mutopia/CarcassiM/O60/carcassi-op60-15/GNUmakefile
deleted file mode 100644 (file)
index 41e472d..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-mutopia-name = carcassi-op60-15
- depth = ../../../../..
- include $(depth)/ports/ports.make
diff --git a/ports/mutopia/CarulliF/carulli-duet-in-g/GNUmakefile b/ports/mutopia/CarulliF/carulli-duet-in-g/GNUmakefile
deleted file mode 100644 (file)
index 4963b07..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-mutopia-name = carulli-duet-in-g
- depth = ../../../..
- include $(depth)/ports/ports.make
diff --git a/ports/mutopia/ClementiM/O36/GNUmakefile b/ports/mutopia/ClementiM/O36/GNUmakefile
deleted file mode 100644 (file)
index 0197f03..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
- depth = ../../../..
- include $(depth)/ports/ports.make
diff --git a/ports/mutopia/ClementiM/O36/sonatina-36-1/GNUmakefile b/ports/mutopia/ClementiM/O36/sonatina-36-1/GNUmakefile
deleted file mode 100644 (file)
index 81e0fdf..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-zipped = true
-mutopia-name = sonatina-36-1
- depth = ../../../../..
- include $(depth)/ports/ports.make
diff --git a/ports/mutopia/ClementiM/O36/sonatina-36-2/GNUmakefile b/ports/mutopia/ClementiM/O36/sonatina-36-2/GNUmakefile
deleted file mode 100644 (file)
index 3a6baa4..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-zipped = true
-mutopia-name = sonatina-36-2
- depth = ../../../../..
- include $(depth)/ports/ports.make
diff --git a/ports/mutopia/ClementiM/O36/sonatina-36-3/GNUmakefile b/ports/mutopia/ClementiM/O36/sonatina-36-3/GNUmakefile
deleted file mode 100644 (file)
index c21fdd0..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-zipped = true
-mutopia-name = sonatina-36-3
- depth = ../../../../..
- include $(depth)/ports/ports.make
diff --git a/ports/mutopia/ClementiM/O36/sonatina-36-4/GNUmakefile b/ports/mutopia/ClementiM/O36/sonatina-36-4/GNUmakefile
deleted file mode 100644 (file)
index d2df3d5..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-zipped = true
-mutopia-name = sonatina-36-4
- depth = ../../../../..
- include $(depth)/ports/ports.make
diff --git a/ports/mutopia/DowlandJ/ALS1/GNUmakefile b/ports/mutopia/DowlandJ/ALS1/GNUmakefile
deleted file mode 100644 (file)
index 0197f03..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
- depth = ../../../..
- include $(depth)/ports/ports.make
diff --git a/ports/mutopia/DowlandJ/ALS1/unquietthoughts/GNUmakefile b/ports/mutopia/DowlandJ/ALS1/unquietthoughts/GNUmakefile
deleted file mode 100644 (file)
index 424a252..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-mutopia-name = unquietthoughts
- depth = ../../../../..
- include $(depth)/ports/ports.make
index f132889afbcbd3979bb80d803b1b3f9bea97121c..eb9a649127389458c553e7be4f19f6db43579928 100644 (file)
@@ -4,3 +4,5 @@ depth = ../..
 
 include $(depth)/ports/ports.make
 
+# Only dist composers
+local-dist: trunc
diff --git a/ports/mutopia/GiordianoG/caromioben/GNUmakefile b/ports/mutopia/GiordianoG/caromioben/GNUmakefile
deleted file mode 100644 (file)
index eed950e..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-mutopia-name = caromioben
- depth = ../../../..
- include $(depth)/ports/ports.make
diff --git a/ports/mutopia/JoplinS/maple/GNUmakefile b/ports/mutopia/JoplinS/maple/GNUmakefile
deleted file mode 100644 (file)
index 5c59dcc..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-mutopia-name = maple
- depth = ../../../..
- include $(depth)/ports/ports.make
diff --git a/ports/mutopia/Mendelssohn-BartholdyF/GNUmakefile b/ports/mutopia/Mendelssohn-BartholdyF/GNUmakefile
new file mode 100644 (file)
index 0000000..aa36317
--- /dev/null
@@ -0,0 +1,3 @@
+ depth = ../../..
+ include $(depth)/ports/ports.make
diff --git a/ports/mutopia/MilanL/milan-pavan2/GNUmakefile b/ports/mutopia/MilanL/milan-pavan2/GNUmakefile
deleted file mode 100644 (file)
index c03fa43..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-mutopia-name = milan-pavan2
- depth = ../../../..
- include $(depth)/ports/ports.make
diff --git a/ports/mutopia/MozartWA/KV447/GNUmakefile b/ports/mutopia/MozartWA/KV447/GNUmakefile
deleted file mode 100644 (file)
index 0197f03..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
- depth = ../../../..
- include $(depth)/ports/ports.make
diff --git a/ports/mutopia/MozartWA/KV447/horn-concerto-3/GNUmakefile b/ports/mutopia/MozartWA/KV447/horn-concerto-3/GNUmakefile
deleted file mode 100644 (file)
index c1c0108..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-zipped = true
-mutopia-name = horn-concerto-3
- depth = ../../../../..
- include $(depth)/ports/ports.make
diff --git a/ports/mutopia/PaganiniN/O1/GNUmakefile b/ports/mutopia/PaganiniN/O1/GNUmakefile
deleted file mode 100644 (file)
index 0197f03..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
- depth = ../../../..
- include $(depth)/ports/ports.make
diff --git a/ports/mutopia/PaganiniN/O1/caprice-24/GNUmakefile b/ports/mutopia/PaganiniN/O1/caprice-24/GNUmakefile
deleted file mode 100644 (file)
index 252d3c4..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-mutopia-name = caprice-24
- depth = ../../../../..
- include $(depth)/ports/ports.make
diff --git a/ports/mutopia/Saint-SaensC/O94/GNUmakefile b/ports/mutopia/Saint-SaensC/O94/GNUmakefile
deleted file mode 100644 (file)
index 0197f03..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
- depth = ../../../..
- include $(depth)/ports/ports.make
diff --git a/ports/mutopia/Saint-SaensC/O94/morceau-de-concert/GNUmakefile b/ports/mutopia/Saint-SaensC/O94/morceau-de-concert/GNUmakefile
deleted file mode 100644 (file)
index 4ab7f62..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-mutopia-name = morceau-de-concert
- depth = ../../../../..
- include $(depth)/ports/ports.make
diff --git a/ports/mutopia/SatieE/gnossienne_1/GNUmakefile b/ports/mutopia/SatieE/gnossienne_1/GNUmakefile
deleted file mode 100644 (file)
index 8c2e7e3..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-mutopia-name = gnossienne_1
- depth = ../../../..
- include $(depth)/ports/ports.make
diff --git a/ports/mutopia/SatieE/gnossienne_2/GNUmakefile b/ports/mutopia/SatieE/gnossienne_2/GNUmakefile
deleted file mode 100644 (file)
index 78cc307..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-mutopia-name = gnossienne_2
- depth = ../../../..
- include $(depth)/ports/ports.make
diff --git a/ports/mutopia/SatieE/gnossienne_3/GNUmakefile b/ports/mutopia/SatieE/gnossienne_3/GNUmakefile
deleted file mode 100644 (file)
index 75aa855..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-mutopia-name = gnossienne_3
- depth = ../../../..
- include $(depth)/ports/ports.make
diff --git a/ports/mutopia/SatieE/gnossienne_4/GNUmakefile b/ports/mutopia/SatieE/gnossienne_4/GNUmakefile
deleted file mode 100644 (file)
index 1b014e5..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-mutopia-name = gnossienne_4
- depth = ../../../..
- include $(depth)/ports/ports.make
diff --git a/ports/mutopia/SatieE/gnossienne_5/GNUmakefile b/ports/mutopia/SatieE/gnossienne_5/GNUmakefile
deleted file mode 100644 (file)
index 8c342be..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-mutopia-name = gnossienne_5
- depth = ../../../..
- include $(depth)/ports/ports.make
diff --git a/ports/mutopia/SatieE/gymnopedie_1/GNUmakefile b/ports/mutopia/SatieE/gymnopedie_1/GNUmakefile
deleted file mode 100644 (file)
index f674d2c..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-mutopia-name = gymnopedie_1
- depth = ../../../..
- include $(depth)/ports/ports.make
diff --git a/ports/mutopia/SatieE/gymnopedie_2/GNUmakefile b/ports/mutopia/SatieE/gymnopedie_2/GNUmakefile
deleted file mode 100644 (file)
index 968e3eb..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-mutopia-name = gymnopedie_2
- depth = ../../../..
- include $(depth)/ports/ports.make
diff --git a/ports/mutopia/SatieE/gymnopedie_3/GNUmakefile b/ports/mutopia/SatieE/gymnopedie_3/GNUmakefile
deleted file mode 100644 (file)
index f249bde..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-mutopia-name = gymnopedie_3
- depth = ../../../..
- include $(depth)/ports/ports.make
diff --git a/ports/mutopia/SchubertF/D891/AnSylvia/GNUmakefile b/ports/mutopia/SchubertF/D891/AnSylvia/GNUmakefile
deleted file mode 100644 (file)
index ff3229b..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-mutopia-name = AnSylvia
- depth = ../../../../..
- include $(depth)/ports/ports.make
diff --git a/ports/mutopia/SchubertF/D891/GNUmakefile b/ports/mutopia/SchubertF/D891/GNUmakefile
deleted file mode 100644 (file)
index 0197f03..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
- depth = ../../../..
- include $(depth)/ports/ports.make
diff --git a/ports/mutopia/SorF/GNUmakefile b/ports/mutopia/SorF/GNUmakefile
new file mode 100644 (file)
index 0000000..aa36317
--- /dev/null
@@ -0,0 +1,3 @@
+ depth = ../../..
+ include $(depth)/ports/ports.make
index 01a3a1eb1e8a94daa54af30a91b48c884a8cbb00..7599ef7e339ea0e4dc4464dd4a7fcb69b6dea761 100644 (file)
    (ice-9 string-fun)
    )
 
+;; pitch = (octave notename accidental)
 ;;
-;; (octave notename accidental)
+;; note = (notename . accidental)
 ;;
+;; text = scm markup text -- see font.scm and input/test/markup.ly
 
-;;
-;; text: scm markup text -- see font.scm and input/test/markup.ly
-;;
 
 ;; TODO
 ;;
-;; * clean split of bass/banter/american stuff
-;; * text definition is rather ad-hoc
-;; * do without format module
-;; * finish and check american names
-;; * make notename (tonic) configurable from lilypond
-;; * fix append/cons stuff in inner-name-banter
-;; * doc strings.
-
-;;;;;;;;;
+;; * fix FIXMEs
+;; * clean split/merge of bass/banter/american stuff
+;; * handy, documented hooks for user-override of:
+;;    - tonic (chord) name
+;;    - 
+;; * doc strings
+
 (define chord::names-alist-banter '())
 (set! chord::names-alist-banter
       (append 
 ;;;;;;;;;;
 
 
-(define (accidental->textp acc pos)
+;; FIXME
+(define (accidental->text acc)
   (if (= acc 0)
       '()
-       (list (list '(music (font-relative-size . -2))
-            `(,pos ,(string-append "accidentals-" (number->string acc)))))))
+       (list '(music (font-relative-size . -2))
+            (string-append "accidentals-" (number->string acc)))))
 
-(define (accidental->text acc) (accidental->textp acc 'rows))
-(define (accidental->text-super acc) (accidental->textp acc 'super))
-(define (accidental->text-sub acc) (accidental->textp acc 'sub))
+(define (accidental->text-super acc)
+  (if (= acc 0)
+      '()
+      (cons 'super (list (accidental->text acc)))))
+
+(define (accidental->text-sub acc)
+  (if (= acc 0)
+      '()
+      (cons sub (list accidental->text acc))))
+
+
+;; these look nice, but don't work together with current inner-name-jazz
+;; (inner-name-jazz is a bit broken: apply append etc)
+(define (xaccidental->textp acc pos)
+  (if (= acc 0)
+      '()
+       (list (list '(music (font-relative-size . -2))
+            (list pos (string-append "accidentals-" (number->string acc))))))
+)
 
+(define (xaccidental->text acc) (accidental->textp acc 'rows))
+(define (xaccidental->text-super acc) (accidental->textp acc 'super))
+(define (xaccidental->text-sub acc) (accidental->textp acc 'sub))
 
 (define (pitch->note-name pitch)
   (cons (cadr pitch) (caddr pitch)))
 
+;; FIXME: see german-chords.ly
 (define (pitch->text pitch)
   (cons
    (make-string 1 (integer->char (+ (modulo (+ (cadr pitch) 2) 7) 65)))
@@ -81,7 +99,7 @@
 
 
 ;;; Hooks to override chord names and note names, 
-;;; see ly/german-chords.ly
+;;; see input/tricks/german-chords.ly
 
 (define (pitch->text-banter pitch)
   (pitch->text pitch))
      (vector-ref pitch::semitone-vec (modulo (cadr pitch) 7)) 
      (caddr pitch)))
 
+(define (pitch::< l r)
+  (< (pitch::semitone l) (pitch::semitone r)))
+  
 (define (pitch::transpose pitch delta)
   (let ((simple-octave (+ (car pitch) (car delta)))
        (simple-notename (+ (cadr pitch) (cadr delta))))
 (define (pitch::note-pitch pitch)
   (+ (* (car pitch) 7) (cadr pitch)))
 
-
-(define (write-me n x)
-  (display n)
-  (write x)
-  (newline)
-  x)
-
-(define (empty? x)
-  (equal? x '()))
-  
 (define (chord::text? text)
   (not (or (not text) (empty? text) (unspecified? text))))
 
-;; recursively remove '() #f, and #<unspecified> from text
 (define (chord::text-cleanup dirty)
+  "
+   Recursively remove '() #f, and #<unspecified> from markup text tree.
+   This allows us to leave else parts of (if # #) off.
+   Otherwise, you'd have to do (if # # '()), and you'd have to
+   filter-out the '() anyway.
+  "
   (if (pair? dirty)
       (let ((r (car dirty)))
        (if (chord::text? r)
       (if (chord::text? dirty)
          dirty
          '())))
-               
+
 (define (chord::text-append l . r)
   (if (not (chord::text? r))
       l
 
 (define chord::minor-major-vec (list->vector '(0 -1 -1 0 -1 -1 0)))
 
+;; FIXME: unLOOP
 ;; compute the relative-to-tonic pitch that goes with 'step'
 (define (chord::step-pitch tonic step)
   ;; urg, we only do this for thirds
                ;; -1 (step=1 -> vector=0) + 7 = 6
                (modulo (+ i 6) 7)))))))))
 
-;; find the pitches that are not part of `normal' chord
-(define (chord::additions chord-pitches)
-  (let ((tonic (car chord-pitches)))
-    ;; walk the chord steps: 1, 3, 5
-    (let loop ((step 1) (pitches chord-pitches) (additions '()))
-      (if (pair? pitches)
-       (let* ((pitch (car pitches))
-              (p-step (+ (- (pitch::note-pitch pitch)
-                            (pitch::note-pitch tonic))
-                         1)))
-         ;; pitch is an addition if 
-         (if (or 
-               ;; it comes before this step or
-               (< p-step step)
-               ;; its step is even or
-               (= (modulo p-step 2) 0)
-               ;; has same step, but different accidental or
-               (and (= p-step step)
-                    (not (equal? pitch (chord::step-pitch tonic step))))
-               ;; is the last of the chord and not one of base thirds
-               (and (> p-step  5)
-                    (= (length pitches) 1)))
-           (loop step (cdr pitches) (cons pitch additions))
-         (if (= p-step step)
-           (loop step (cdr pitches) additions)
-           (loop (+ step 2) pitches additions))))
-      (reverse additions)))))
-
+(define (chord::additions steps)
+  " Return:
+   * any even step (2, 4, 6)
+   * any uneven step that is chromatically altered,
+     (where 7-- == -1, 7- == 0, 7 == +1)
+   * highest step
+
+and you need also:
+
+   * TODO: any uneven step that's lower than an uneven step which is
+     chromatically altered
+  "
+  (let ((evens (filter-list (lambda (x) (!= 0 (modulo (cadr x) 2))) steps))
+       (altered-unevens
+        (filter-list (lambda (x)
+                       (let ((n (cadr x)) (a (caddr x)))
+                         (or (and (= 6 n) (!= -1 a))
+                             (and (!= 6 n)
+                                  (= 0 (modulo n 2))
+                                  (!= 0 a)))))
+                     steps))
+       (highest (let ((h (car (last-pair steps))))
+                  (if (and (not (empty? h))
+                           (or (> 4 (cadr h))
+                               (!= 0 (caddr h))))
+                      (list (list h))
+                      '()))))
+    ;; Hmm, what if we have a step twice, can we ignore that?
+    (uniq-list (sort (apply append evens altered-unevens highest)
+                    pitch::<))))
+       
+     
+;; FIXME: unLOOP, see ::additions
 ;; find the pitches that are missing from `normal' chord
 (define (chord::subtractions chord-pitches)
   (let ((tonic (car chord-pitches)))
              (loop step (cdr pitches) subtractions)))))
        (reverse subtractions)))))
 
-
 (define (chord::additions->text-banter additions subtractions)
   (if (pair? additions)
       (cons (apply append
                     (if (or (pair? (cdr additions))
                             (pair? subtractions))
                         '(super "/")))))
-           (chord::additions->text-banter (cdr additions) subtractions))
-      '()))
+           (chord::additions->text-banter (cdr additions) subtractions))))
 
 (define (chord::subtractions->text-banter subtractions)         
   (if (pair? subtractions)
                     (cons 'super (step->text-banter (car subtractions)))
                     (if (pair? (cdr subtractions))
                         '(super "/")))))
-           (chord::subtractions->text-banter (cdr subtractions)))
-       '()))
-
+           (chord::subtractions->text-banter (cdr subtractions)))))
 
 (define (chord::bass-and-inversion->text-banter bass-and-inversion)
   (if (and (pair? bass-and-inversion)
                    (pitch->note-name-text-banter
                     (car bass-and-inversion))
                    (pitch->note-name-text-banter
-                    (cdr bass-and-inversion)))
-           '())
-      '()))
+                    (cdr bass-and-inversion))))))
 
+;; FIXME: merge this function with inner-name-jazz, -american
+;;        iso using chord::bass-and-inversion->text-banter,
+;;        call (chord::restyle 'chord::bass-and-inversion->text- style)
+;;        See: chord::exceptions-lookup
+;;        
 ;; Banter style
 ;; Combine tonic, exception-part of chord name,
 ;; additions, subtractions and bass or inversion into chord name
 (define (chord::inner-name-banter tonic exception-part additions subtractions
                                  bass-and-inversion steps)
-  ;; ugh
-  (apply
-   append
-   (chord::text-cleanup
-    (list '(rows)
-         (pitch->chord-name-text-banter tonic steps)
-         exception-part
-         ;; why does list->string not work, format seems only hope...
-         (if (and (string-match "super" (format "~s" exception-part))
-                  (or (pair? additions)
-                      (pair? subtractions)))
-             '((super "/")))
-        (chord::additions->text-banter additions subtractions)
-        (chord::subtractions->text-banter subtractions)
-        (chord::bass-and-inversion->text-banter bass-and-inversion)))))
+  (let ((tonic-text (pitch->chord-name-text-banter tonic steps))
+       (except-text exception-part)
+       (sep-text (if (and (string-match "super" (format "~s" exception-part))
+                           (or (pair? additions)
+                               (pair? subtractions)))
+                      '((super "/"))))
+       (adds-text (chord::additions->text-banter additions subtractions))
+       (subs-text (chord::subtractions->text-banter subtractions))
+       (b+i-text (chord::bass-and-inversion->text-banter bass-and-inversion)))
+    (apply append
+          (map chord::text-cleanup
+               (list
+                '(rows) tonic-text except-text sep-text adds-text subs-text
+                b+i-text)))))
 
 (define (chord::name-banter tonic exception-part unmatched-steps
                            bass-and-inversion steps)
 (define (chord::exceptions-lookup-helper
         exceptions-alist try-steps unmatched-steps exception-part)
   (if (pair? try-steps)
-      ;; FIXME: junk '(0 . 0) from exceptions lists
+      ;; FIXME: junk '(0 . 0) from exceptions lists?
+      ;;        if so: how to handle first '((0 . 0) . #f) entry?
       ;;
       ;; FIXME: either format exceptions list as real pitches, ie,
       ;;        including octave '((0 2 -1) ..), or drop octave
          (chord::bass-and-inversion->text-banter bass-and-inversion)))))
 
 ;; Jazz style--basically similar to american with minor changes
+;;
+;; Consider Dm6.  When we get here:
+;;     tonic =  '(0 1 0) (note d=2)
+;;     steps =  '((0 0 0) '(0 2 -1) (0 4 0) (0 5 0))
+;;               steps are transposed for tonic c, octave 0,
+;;               so (car steps) is always (0 0 0)
+;;     except  = ("m")
+;;               assuming that the exceptions-alist has an entry
+;;               '(((0 . 0) (2 . -1)) . ("m"))
+;;               (and NOT the full chord, like std jazz list, ugh)
+;;     unmatch = '((0 0 0) (0 2 0) (0 4 0) (0 5 0))
+;;     subtract= '()
+;;
+;; You can look very easily what happens, if you add some write-me calls,
+;; and run lilypond on a simple file, eg, containing only the chord c:m6:
+;;
+;;   (let ((additions (write-me "adds: "
+;;                 (chord::additions (write-me "unmatched:"
+;;                 unmatched-steps))))
+;;
+;; If you set subtract #f, the chord::inner-name-jazz does not see any
+;; subtractions, ever, so they don't turn up in the chord name.
+;;
 (define (chord::name-jazz tonic exception-part unmatched-steps
                          bass-and-inversion steps)
   (let ((additions (chord::additions unmatched-steps))
             bass-and-inversion steps)))
 
 ;; wip (set! chord::names-alist-jazz
-(define amy-chord::names-alist-jazz
+(define chord::names-alist-jazz
       (append
       '(
         (((0 . 0) (2 . -1)) . ("m"))
        )
-      chord::names-alist-american))
+      '()))
+      ;;chord::names-alist-american))
index 02f5a5606372e443112f1e20ff8fa48027ba412b..ce550d3bcdce26e35cfa159221db74f90ccc5edc 100644 (file)
@@ -6,27 +6,6 @@
 ;;; (c) 2000--2001 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 ;;; Jan Nieuwenhuizen <janneke@gnu.org>
 
-(define (uniqued-alist  alist acc)
-  (if (null? alist) acc
-      (if (assoc (caar alist) acc)
-         (uniqued-alist (cdr alist) acc)
-         (uniqued-alist (cdr alist) (cons (car alist) acc)
-  ))))
-
-(define (uniq-list list)
-  (if (null? list) '()
-      (if (null? (cdr list))
-         list
-         (if (equal? (car list) (cadr list))
-             (uniq-list (cdr list))
-             (cons (car list) (uniq-list (cdr list)))
-  
-  ))))
-
-(define (alist<? x y)
-  (string<? (symbol->string (car x))
-           (symbol->string (car y))))
-
 (define (processing name)
   (display (string-append "\nProcessing " name " ... ") (current-error-port)))
 
index c6de3d7132a7cc3b0d334e1ff1a691d2df309e44..187844cd5db595ff1fdcc1adedcc2312342b8817 100644 (file)
@@ -1,4 +1,4 @@
-;;;; drum-"hack". See input/test/drums.ly and ly/drumpitch.ly
+;;;; drum-"hack". See input/tricks/drums.ly and ly/drumpitch.ly
 ;;;; 2001/03/25 Rune Zedeler <rune@zedeler.dk>
 
 ;;;; changed eval to ly-eval for guile 1.4/1.4.1 compatibility --jcn
index ecef13045457a4565bd03330f06661c7e11bb6bd..8f456711cb70803794da56b5d55e83edc7f9f188 100644 (file)
        )
        ))
   
-(define (filter-list pred? list)
-  "return that part of LIST for which PRED is true."
-  (if (null? list) '()
-      (let* (
-            (rest  (filter-list pred? (cdr list)))
-            )
-       (if (pred?  (car list))
-           (cons (car list)  rest)
-           rest
-           )
-       )
-      )
-  )
-
 ;;;;;;;;; TODO TODO . (should not use filtering?)
 ;; this is bad, since we generate garbage every font-lookup.
 ;; otoh, if the qualifiers is narrow enough , we don't generate much garbage.
index ea40dd0cf78df9a5af9f514b2daf545f86ddf3c5..ad4e1e2501fbcb171141c73f6dff487d5525981e 100644 (file)
@@ -80,7 +80,7 @@
                 (thickness . 0.48) ; in staff-space
                 (before-line-breaking-callback . ,Beam::before_line_breaking)
                 (after-line-breaking-callback . ,Beam::after_line_breaking)
-                (default-neutral-direction . 1)
+                (neutral-direction . 1)
                 (dir-function . ,beam-dir-majority)
                 (height-quants .  ,default-beam-dy-quants)
                 (vertical-position-quant-function . ,default-beam-y-quants)
                (lengths . (3.5 3.5 3.5 4.5 5.0))
                (stem-shorten . (0.5))
                ; if stem is on middle line, choose this direction.
-               (default-neutral-direction . 1)
+               (neutral-direction . 1)
                (X-offset-callbacks . (,Stem::off_callback))
                (X-extent-callback . ,Stem::dim_callback)       
                (Y-extent-callback . ,Stem::height)
                (axes 1)
                (Y-extent-callback . ,Axis_group_interface::group_extent_callback)
                (X-extent-callback . #f)
+
                (stacking-dir . -1)
                (meta . ,(grob-description "VerticalAlignment" align-interface axis-group-interface))
        ))
index a84fbdf0410cc4a9865a0fa7b343462dce031e54..352dc965412ffba4b67bfe2befb9c7fc04e9f2f5 100644 (file)
       1
       (if (< x 0) -1 1)))
 
+(define (write-me n x)
+  (display n)
+  (write x)
+  (newline)
+  x)
+
+(define (empty? x)
+  (equal? x '()))
+
+(define (!= l r)
+  (not (= l r)))
+
+(define (filter-list pred? list)
+  "return that part of LIST for which PRED is true."
+  (if (null? list) '()
+      (let* ((rest  (filter-list pred? (cdr list))))
+       (if (pred?  (car list))
+           (cons (car list)  rest)
+           rest))))
+
+(define (uniqued-alist  alist acc)
+  (if (null? alist) acc
+      (if (assoc (caar alist) acc)
+         (uniqued-alist (cdr alist) acc)
+         (uniqued-alist (cdr alist) (cons (car alist) acc)))))
+
+(define (uniq-list list)
+  (if (null? list) '()
+      (if (null? (cdr list))
+         list
+         (if (equal? (car list) (cadr list))
+             (uniq-list (cdr list))
+             (cons (car list) (uniq-list (cdr list)))))))
+
+(define (alist<? x y)
+  (string<? (symbol->string (car x))
+           (symbol->string (car y))))
+
 
 (map (lambda (x) (eval-string (ly-gulp-file x)))
      '("output-lib.scm"
index f3e53ff511c9d8eba9d4b54d6fe712ae24b83786..318e463cc75567187732acec106837453cbac77d 100644 (file)
@@ -1,7 +1,7 @@
 # bin/Makefile
 
 depth = ..
-SEXECUTABLES=convert-ly lilypond-book ly2dvi abc2ly as2text etf2ly musedata2ly pmx2ly
+SEXECUTABLES=convert-ly lilypond-book ly2dvi abc2ly as2text etf2ly musedata2ly pmx2ly mup2ly
 STEPMAKE_TEMPLATES=script help2man po
 HELP2MAN_EXECS = $(SEXECUTABLES)
 
index a92b9410cc2de064d9e047a4de8c0681f577c0a0..1018a71263fdd3f633ede4bad6f7f217b525b90b 100644 (file)
@@ -706,7 +706,7 @@ if 1:
                def regularize_assignment (match):
                        return '\n' + regularize_id (match.group (1)) + ' = '
                str = re.sub ('\$([^\t\n ]+)', regularize_dollar_reference, str)
-               str = re.sub ('\n([^ \t\n]+) = ', regularize_assignment, str)
+               str = re.sub ('\n([^ \t\n]+)[ \t]*= *', regularize_assignment, str)
                return str
        
        conversions.append (((1,3,117), conv, 'identifier names: $!foo_bar_123 -> xfooBarABC'))
@@ -812,6 +812,12 @@ if 1:
                return str
        conversions.append (((1,3,146), conv, 'semicolons removed'))
 
+if 1:
+       def conv (str):
+               str = re.sub ('default-neutral-direction', 'neutral-direction',str)
+               return str
+       conversions.append (((1,3,147), conv, 'default-neutral-direction -> neutral-direction'))
+
 ################################
 #      END OF CONVERSIONS      
 ################################
index fe178eb96d297fd18ec73098f309d08a2fc6c62d..4a67ce26e6aa132637ed234604cef61376a676be 100644 (file)
@@ -82,6 +82,7 @@ extra_init = {
        'language' : [],
        'latexheaders' : [],
        'latexpackages' :  ['geometry'],
+       'latexoptions' : [],
        'papersize' : [],
        'pagenumber' : [1],
        'textheight' : [], 
@@ -428,16 +429,19 @@ def global_latex_definition (tfiles, extra):
        s = ""
        s = s + '% generation tag\n'
 
-       paper = ''
+       options = ''
 
        if extra['papersize']:
                try:
-                       paper = '[%s]' % ly_paper_to_latexpaper[extra['papersize'][0]]
+                       options = '%s' % ly_paper_to_latexpaper[extra['papersize'][0]]
                except:
                        warning (_ ("invalid value: %s") % `extra['papersize'][0]`)
                        pass
+
+       if extra['latexoptions']:
+               options = options + ',' + extra['latexoptions'][-1]
        
-       s = s + '\\documentclass%s{article}\n' % paper
+       s = s + '\\documentclass[%s]{article}\n' % options
 
        if extra['language']:
                s = s + r'\usepackage[%s]{babel}\n' % extra['language'][-1]
@@ -463,17 +467,23 @@ def global_latex_definition (tfiles, extra):
                linewidth = 597
        else:
                linewidth = extra['linewidth'][0]
-       s = s + '\geometry{width=%spt%s,headheight=2mm,headsep=0pt,footskip=2mm,%s}\n' % (linewidth, textheight, orientation)
+       s = s + '\geometry{width=%spt%s,headheight=2mm,headsep=12pt,footskip=2mm,%s}\n' % (linewidth, textheight, orientation)
 
+       if extra['latexoptions']:
+               s = s + '\geometry{twosideshift=4mm}\n'
+               
        s = s + r'''
 \usepackage[latin1]{inputenc}
 \input{titledefs}
 \makeatletter
 \renewcommand{\@oddfoot}{\parbox{\textwidth}{\mbox{}\thefooter}}%
+\renewcommand{\@evenfoot}{\parbox{\textwidth}{\mbox{}\thefooter}}%
 '''
        
        if extra['pagenumber'] and extra['pagenumber'][-1] and extra['pagenumber'][-1] != 'no':
                s = s + r'''
+\renewcommand{\@evenhead}{\parbox{\textwidth}%
+    {\mbox{}\textbf{\thepage}\hfill\small\theheader}}
 \renewcommand{\@oddhead}{\parbox{\textwidth}%
     {\mbox{}\small\theheader\hfill\textbf{\thepage}}}
 '''
@@ -490,9 +500,11 @@ def global_latex_definition (tfiles, extra):
                first = 0
 
        s = s + r'''
-\makeatletter
-\renewcommand{\@oddfoot}{\parbox{\textwidth}{\mbox{}\makelilypondtagline}}%
-\makeatother
+% I don't see why we want to clobber the footer here
+\vfill\hfill\parbox{\textwidth}{\mbox{}\makelilypondtagline}
+%\makeatletter
+%\renewcommand{\@oddfoot}{\parbox{\textwidth}{\mbox{}\makelilypondtagline}}%
+%\makeatother
 '''
        s = s + '\\end{document}'
 
index 99e7c68cfd6608c997e454058e02b9b0cd32f9d5..97e4b58d36cd4ae20f8a86b8d22b33303d1a8473 100644 (file)
@@ -62,7 +62,7 @@ cd %n-%v &&
 ./configure --prefix=$HOME/usr && make all web
 ) >> %n-%v/log.txt 2>&1 &&
 rm -f %n &&
-ln -s %n%-%v %n
+ln -s %n-%v %n
 '''
 
 
@@ -447,8 +447,9 @@ if 1:
 
        progress (_ ("building %s...") % latest)
        os.chdir (build_root)
-       if build (latest) and previous and remove_previous_p:
-               system ('rm -rf %s' % os.path.join (build_root, previous))
+       if build (latest):
+               if previous and remove_previous_p:
+                       system ('rm -rf %s' % os.path.join (build_root, previous))
        else:
                if notify:
                        system ('(date; uname -a) | mail -s "%s failed" %s' % (program_name, notify))