]> git.donarmstrong.com Git - lilypond.git/commitdiff
release: 1.3.145 release/1.3.145
authorHan-Wen Nienhuys <hanwen@xs4all.nl>
Sun, 1 Apr 2001 13:26:59 +0000 (15:26 +0200)
committerHan-Wen Nienhuys <hanwen@xs4all.nl>
Sun, 1 Apr 2001 13:26:59 +0000 (15:26 +0200)
============

* Build fixes for icon, this fixes 'rpm' target.  Tried to reinclude
in rpm using (.png and) .xpm, but latest LinuxPPC release's rpm
(3.0.6) Icon: tag handling is broken.

* Fixes for update-lily script.

* Bugfixes: refman, changed Ascii to ASCII.

* Fixed ascii art output.  Started some doco on different output formats.

* Fixed scheme font lookup to handle new font lists with wildcards.

* Fixes to point-and-click doco (Thanks, Laura Conrad).

* Bugfixes: changed several (eval to (ly-eval for guile 1.4/1.4.x
compatibility.

* Fixes to buildscripts/clean-fonts.sh.

1.3.144.h

152 files changed:
CHANGES
Documentation/GNUmakefile
Documentation/misc/index.texi [deleted file]
Documentation/ntweb/GNUmakefile [deleted file]
Documentation/ntweb/angels.ly [deleted file]
Documentation/ntweb/guile-1.4-gnu-windows.patch [deleted file]
Documentation/ntweb/index.texi [deleted file]
Documentation/ntweb/lilypond-manpages.patch [deleted file]
Documentation/pictures/out/lilypond-icon.xpm [new file with mode: 0644]
Documentation/regression-test.tely
Documentation/topdocs/FAQ.texi
Documentation/topdocs/INSTALL.texi
Documentation/topdocs/README.texi
Documentation/topdocs/index.tely
Documentation/user/glossary.tely
Documentation/user/refman.itely
Documentation/user/tutorial.itely
FAQ.txt
INSTALL.txt
README.txt
VERSION
aclocal.m4
configure
configure.in
flower/dstream.cc [deleted file]
flower/file-path.cc
flower/flower-debug.cc [deleted file]
flower/include/dstream.hh [deleted file]
flower/include/flower-debug.hh [deleted file]
flower/include/interval.hh
flower/include/interval.tcc
input/GNUmakefile
input/ascii-art/asciscript5.ly [deleted file]
input/bugs/crescendo-squash.ly [deleted file]
input/bugs/dynamic-collide.ly
input/bugs/dynamic-switch.ly
input/bugs/mb.ly [deleted file]
input/bugs/minimal.ly
input/bugs/multiply.ly
input/bugs/pc-core.ly [deleted file]
input/bugs/pc-direction.ly
input/bugs/repeat.ly
input/bugs/sbug.ly [new file with mode: 0644]
input/bugs/script-dir.ly
input/bugs/script.ly
input/bugs/st.ly [deleted file]
input/bugs/stem-through-beam.ly [deleted file]
input/bugs/triplet.ly [deleted file]
input/les-nereides.ly
input/regression/dynamics-unbound-hairpin.ly [new file with mode: 0644]
input/regression/key-signature-scordatura.ly [new file with mode: 0644]
input/test/add-text-script.ly [new file with mode: 0644]
input/test/beam-count.ly [new file with mode: 0644]
input/test/beam-dir-function.ly [new file with mode: 0644]
input/test/beam-neutral-direction.ly [new file with mode: 0644]
input/test/beam-position.ly [new file with mode: 0644]
input/test/beam-rest.ly [new file with mode: 0644]
input/test/beam-slope.ly
input/test/boxed-molecule.ly [new file with mode: 0644]
input/test/crescendo-text.ly [new file with mode: 0644]
input/test/drarn-slurs.ly [new file with mode: 0644]
input/test/drums.ly [new file with mode: 0644]
input/test/embedded-postscript.ly [new file with mode: 0644]
input/test/embedded-tex.ly [new file with mode: 0644]
input/test/fill-a4.ly
input/test/follow-thread.ly [new file with mode: 0644]
input/test/improv.ly [new file with mode: 0644]
input/test/metronome.ly [new file with mode: 0644]
input/test/mmrest-collision.ly [new file with mode: 0644]
input/test/move-notehead.ly [new file with mode: 0644]
input/test/move-specific-text.ly [new file with mode: 0644]
input/test/no-bar-lines.ly [new file with mode: 0644]
input/test/no-staff.ly [new file with mode: 0644]
input/test/ottava.ly [new file with mode: 0644]
input/test/part-combine.ly [new file with mode: 0644]
input/test/partial-blank.ly [new file with mode: 0644]
input/test/reverse-music.ly [new file with mode: 0644]
input/test/slur-attachment-override.ly [new file with mode: 0644]
input/test/slur-attachment.ly [new file with mode: 0644]
input/test/slur-ugly.ly [new file with mode: 0644]
input/test/smart-transpose.ly [new file with mode: 0644]
input/test/staff-container.ly [new file with mode: 0644]
input/test/two-key.ly [new file with mode: 0644]
input/test/vertical-extent.ly
input/tricks/GNUmakefile [deleted file]
input/tricks/add-text-script.ly [deleted file]
input/tricks/beam-count.ly [deleted file]
input/tricks/beam-dir-function.ly [deleted file]
input/tricks/beam-neutral-direction.ly [deleted file]
input/tricks/beam-position.ly [deleted file]
input/tricks/beam-rest.ly [deleted file]
input/tricks/beam-slope.ly [deleted file]
input/tricks/boxed-molecule.ly [deleted file]
input/tricks/crescendo-text.ly [deleted file]
input/tricks/drarn-slurs.ly [deleted file]
input/tricks/drums.ly [deleted file]
input/tricks/embedded-postscript.ly [deleted file]
input/tricks/embedded-tex.ly [deleted file]
input/tricks/follow-thread.ly [deleted file]
input/tricks/improv.ly [deleted file]
input/tricks/metronome.ly [deleted file]
input/tricks/mmrest-collision.ly [deleted file]
input/tricks/move-notehead.ly [deleted file]
input/tricks/move-specific-text.ly [deleted file]
input/tricks/no-bar-lines.ly [deleted file]
input/tricks/no-staff.ly [deleted file]
input/tricks/ottava.ly [deleted file]
input/tricks/part-combine.ly [deleted file]
input/tricks/partial-blank.ly [deleted file]
input/tricks/reverse-music.ly [deleted file]
input/tricks/slur-attachment-override.ly [deleted file]
input/tricks/slur-attachment.ly [deleted file]
input/tricks/slur-ugly.ly [deleted file]
input/tricks/smart-transpose.ly [deleted file]
input/tricks/staff-container.ly [deleted file]
input/trip.ly
input/tutorial/ly2dvi.ly [deleted file]
lily/all-font-metrics.cc
lily/axis-group-engraver.cc
lily/bezier.cc
lily/clef-engraver.cc
lily/command-request.cc
lily/custos-engraver.cc
lily/debug.cc [deleted file]
lily/dynamic-engraver.cc
lily/hyphen-spanner.cc
lily/include/command-request.hh
lily/include/debug.hh
lily/include/key-item.hh
lily/key-engraver.cc
lily/key-item.cc
lily/lexer.ll
lily/local-key-engraver.cc
lily/main.cc
lily/multi-measure-rest-engraver.cc
lily/my-lily-parser.cc
lily/note-heads-engraver.cc
lily/parser.yy
lily/slur-bezier-bow.cc
lily/tie.cc
ly/declarations-as.ly [deleted file]
ly/engraver.ly
ly/init-as.ly [deleted file]
make/ly.make
make/out/lilypond.lsm
make/out/lilypond.spec
scm/grob-description.scm
scm/translator-description.scm
scm/translator-property-description.scm
scripts/convert-ly.py
scripts/update-lily.py
stepmake/aclocal.m4

diff --git a/CHANGES b/CHANGES
index ea7da3060108cb5085c9d656f5497a33778ef1d3..9d10d4a5a6b9b547c5a6a74ccdcaae105e45f3fa 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -1,6 +1,3 @@
---- ../lilypond-1.3.144.jcn3/CHANGES   Thu Mar 29 15:57:17 2001
-++ b/CHANGES   Fri Mar 30 12:30:41 2001
-@@ -1,3 +1,12 @@
 1.3.144.jcn4
 ============
 
@@ -10,46 +7,84 @@ in rpm using (.png and) .xpm, but latest LinuxPPC release's rpm
 
 * Fixes for update-lily script.
 
- 1.3.144.jcn3
- ============
- --- ../lilypond-1.3.144/CHANGES       Wed Mar 28 01:27:11 2001
-++ b/CHANGES   Thu Mar 29 21:17:09 2001
-@@ -1,3 +1,8 @@
-1.3.144.mb1
-============
+* Bugfixes: refman, changed Ascii to ASCII.
 
-* Fix ps specials to work together with \usepackage[french]{babel}
+* Fixed ascii art output.  Started some doco on different output formats.
 
- 1.3.143.jcn3
- ============
- 1.3.144.jcn3
-============
+* Fixed scheme font lookup to handle new font lists with wildcards.
 
-* Bugfixes: refman, changed Ascii to ASCII.
+* Fixes to point-and-click doco (Thanks, Laura Conrad).
+
+* Bugfixes: changed several (eval to (ly-eval for guile 1.4/1.4.x
+compatibility.
+
+* Fixes to buildscripts/clean-fonts.sh.
 
-1.3.144.jcn2
+1.3.144.hwn1
 ============
 
-* Fixed ascii art output.  Started some doco on different output formats.
+* Tutorial updates
 
-* Fixed scheme font lookup to handle new font lists with wildcards.
+* Change interaction between clef-engraver and positioned items: do
+not use acknowledge/announce () to get position relative to c0, but
+use centralCPosition directly after grob creation.
 
-* Bugfix: all-font-metrics.cc: don't assume that from each afm there's a tfm;
-only try to find/make tfm when producing tex output.
+Side-effect: Pitch_squash_engraver now puts notes on position in
+staff, not on specific pitch.
 
-1.3.144.jcn1
-============
+* Bugfixes: yet more create_grobs () -> process_music() reverts.
 
-* Fixes to point-and-click doco (Thanks, Laura Conrad).
+* Tutorial updates
 
-* Bugfixes: changed several (eval to (ly-eval for guile 1.3.4/1.4
-compatibility.
+* Don't give unbound spanner warnings for isolated dynamics on space
+rests.
 
-* Fixes to buildscripts/clean-fonts.sh.
+* cleaned up debug stuff.
+
+* cleaned up INSTALL document.
 
-1.3.143.jcn3
+* Key_change_req::do_equal_b(), keychange merge.
+
+* per octave key signatures. See
+input/regression/key-signature-scordatura.ly
+
+* moved tricks/ directory into test/.
+
+* Rename {Staff,Lyrics,etc}VerticalExtent and friends into
+VerticalExtent. Use predefined props to prevent inheritance.
+
+* Multi_measure_rest_engraver now uses whichBar property to detect
+barlines.  Hence, no need to keep Bar_engraver and
+Multi_measure_rest_engraver together.
+
+* Revised syntax for multiplied durations. Multiplied durations must
+now directly follow the number +dots. example:
+
+       c4*3/4 -\f (                    % valid
+       c4-\f ( *3/4                    % invalid
+
+* Halt configure if kpathsea not found. 
+
+* Small refman fixes.
+
+* Prevent tie - dot collisions.
+
+* Bugfix: don't crash if hyphen spanner bounds are empty.
+
+* Spanish glossary, courtesy David Gonzalez.
+
+* Bugfix: all-font-metrics.cc: only lookup .tfm and check checksum if
+the AFM file has a CheckSum field.
+
+
+1.3.144.mb1
 ============
 
+* Fix ps specials to work together with \usepackage[french]{babel}
+
+1.3.144
+=======
+
 * LilyPond-mode: show what's going on (font building) in *view* buffer.
 
 * Added environment settings to ly2dvi and lilypond-book.
index 3a21d70c30803dbf34b97cf9396c1277b77b7418..d4b99a936ad9fe19b2d60c52fa930e49861c12e6 100644 (file)
@@ -1,7 +1,7 @@
 depth = ..
 
 NAME = documentation
-SUBDIRS=user bibliography pictures topdocs ntweb misc
+SUBDIRS=user bibliography pictures topdocs misc
 STEPMAKE_TEMPLATES=documentation texinfo tex
 LOCALSTEPMAKE_TEMPLATES=lilypond ly
 
diff --git a/Documentation/misc/index.texi b/Documentation/misc/index.texi
deleted file mode 100644 (file)
index 15ea234..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
-\input texinfo @c -*-texinfo-*-
-@setfilename index.info
-@settitle index
-
-@node Top, , , (dir)
-@top
-
-Miscellaneous texts
-@itemize @bullet
-@item @uref{CHANGES-0.0.txt, Change logs from 0.0 till 0.1 }
-@item @uref{CHANGES-0.1.txt, Change logs from 0.1 till 1.0 }
-@item @uref{CHANGES-1.0.txt, Change logs from 1.0 till 1.1 }
-@item @uref{CHANGES-1.1.txt, Change logs from 1.1 till 1.2 }
-@item @uref{NEWS-1.2.txt, summary of changes from 1.1 till 1.2 }
-@item @uref{ANNOUNCE-0.1.txt, Announcement of 0.1 (includes summary of
-changes)}
-@item @uref{ANNOUNCE-1.0.txt, Announcement of 1.0 (includes summary of
-changes)}
-@item @uref{ANNOUNCE-1.2.txt, Announcement of 1.2 (includes summary of changes)}
-
-@item @uref{AIMS.txt} Why LilyPond?
-@item @uref{interview.txt} Answers to the Brave GNU world standard questions
-@end itemize
-
diff --git a/Documentation/ntweb/GNUmakefile b/Documentation/ntweb/GNUmakefile
deleted file mode 100644 (file)
index fbcdfc7..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-depth = ../..
-
-STEPMAKE_TEMPLATES=documentation texinfo
-TO_TOP_FILES=$(addprefix $(outdir)/, $(README_TOP_FILES))
-PLAIN_FILES=angels.ly $(wildcard *.patch)
-
-EXTRA_DIST_FILES = $(PLAIN_FILES)
-
-
-include $(depth)/make/stepmake.make 
-
-default: local-doc dist-plain
-
-$(outdir)/%.texi: %.texi
-       m4 -DTOPLEVEL_VERSION=$(TOPLEVEL_VERSION) < $< > $@ 
-
-dist-plain: 
-       cp $(PLAIN_FILES) $(outdir)
-
-local-WWW:
-
diff --git a/Documentation/ntweb/angels.ly b/Documentation/ntweb/angels.ly
deleted file mode 100644 (file)
index 40a9893..0000000
+++ /dev/null
@@ -1,109 +0,0 @@
-\header{\r
-filename =      "angles.ly";\r
-title =         "Angels We Have Heard on High";\r
-description =   "Christmas Carol.";\r
-\r
-composer =      "French Carol, 1854";\r
-enteredby =     "Jeffrey B. Reed";\r
-copyright =     "public domain";\r
-}\r
-\r
-global = \notes {\r
-       \time 2/2;\r
-       \key f \major;\r
-       \tempo 2=60;\r
-       \clef treble;\r
-}\r
-\r
-\version "1.3.110";\r
-% \include "paper16.ly"\r
-\r
-flute1 = \notes \relative c'' \context Voice = flute {\r
-       \property Staff.instrument = "flute"\r
-\r
-       a'4 a a c   | \r
-       c4. bes8 a2 |\r
-       a4 g a c    |\r
-\r
-       a4. g8 f2   |\r
-       a4 a a c    |\r
-       c4. bes8 a2 |\r
-\r
-       a4 g a c                |\r
-       a4. g8 f2               |\r
-       c'2( [ d8 c8 bes8  a8 ] |\r
-\r
-       bes2 [ c8 bes8 a8 g8 ]  |\r
-       a2 [ bes8 a8 g8 f8 ]    | \r
-       )g4. c,8 c2             |\r
-\r
-       f4 g a bes     |\r
-       a2 g2          |\r
-       c2( [ d8 c8 bes8  a8 ] |\r
-\r
-       bes2 [ c8 bes8 a8 g8 ]  |\r
-       a2 [ bes8 a8 g8 f8 ]    | \r
-       )g4. c,8 c2             |\r
-\r
-       f4 g a bes     |\r
-       a2( )g2        |\r
-       f1            \bar "|."; \r
-}\r
-\r
-flute2 = \notes \relative c'' \context Voice = flute {\r
-       \property Staff.instrument = "flute"\r
-       \r
-       f4 f e e  | \r
-       g4 e f2   |\r
-       f4 e f f  |\r
-\r
-       f4 e f2   |\r
-       f4 f e e  |\r
-       f4 g f2   |\r
-\r
-       f4 e f f  |\r
-       f4 e f2   |\r
-       f4 ( [a8 g8 ] f2( |\r
-\r
-       )f4 [g8 f8] e2(  |\r
-       )e4 [f8 e8] d2   |\r
-       )c4.c8 c2        |\r
-\r
-       c4 e f f  |\r
-       f2 e2     |\r
-       f4 ( [a8 g8 ] f2( |\r
-\r
-       )f4 [g8 f8] e2(  |\r
-       )e4 [f8 e8] d2   |\r
-       )c4.c8 c2        |\r
-\r
-       c4 e f f  |\r
-       f2( )e2   | \r
-       c1        |\r
-}\r
-\r
-flute1_staff = \context Staff = flute1_group <\r
-       \global\r
-       \flute1\r
->\r
-\r
-flute2_staff = \context Staff = flute2_group <\r
-       \global\r
-       \flute2\r
->\r
-\r
-flutes = \context StaffGroup <\r
-       \flute1_staff\r
-       \flute2_staff\r
->\r
-       \r
-\r
-\score{\r
-        <\r
-                  \flutes\r
-       >\r
-       \paper{}\r
-       \midi{ \r
-               \tempo 2 = 60 ;\r
-       }\r
-}\r
diff --git a/Documentation/ntweb/guile-1.4-gnu-windows.patch b/Documentation/ntweb/guile-1.4-gnu-windows.patch
deleted file mode 100644 (file)
index 4dd55d3..0000000
+++ /dev/null
@@ -1,85 +0,0 @@
-diff -urN ../guile-1.4/ChangeLog ./ChangeLog
---- ../guile-1.4/ChangeLog     Fri Jun  2 15:17:01 2000
-+++ ./ChangeLog        Mon Jun  5 15:18:32 2000
-@@ -1,3 +1,12 @@
-+2000-06-05    <janneke@gnu.org>
-+ 
-+      * guile-config/cross-guile-config.in: Simple shell script to
-+      take over guile-config's functionality for cross-compilation.
-+      It will be installed as ${target}-guile-config.
-+ 
-+      * guile-config/Makefile.am: Provide for cross-guile-config.in
-+      and its targets.
-+ 
- 2000-06-21  Mikael Djurfeldt  <mdj@thalamus.nada.kth.se>
-       * Guile 1.4 released.
-diff -urN ../guile-1.4/configure.in ./configure.in
---- ../guile-1.4/configure.in  Fri Jun  2 08:44:27 2000
-+++ ./configure.in     Mon Jun  5 15:13:58 2000
-@@ -21,6 +21,7 @@
- dnl  Boston, MA 02111-1307, USA.
- AC_INIT(Makefile.in)
-+AC_CANONICAL_SYSTEM
- . $srcdir/GUILE-VERSION
- AM_INIT_AUTOMAKE($PACKAGE, $VERSION, no-define)
- AM_MAINTAINER_MODE
-diff -urN ../guile-1.4/guile-config/Makefile.am ./guile-config/Makefile.am
---- ../guile-1.4/guile-config/Makefile.am      Wed Jan 12 22:42:41 2000
-+++ ./guile-config/Makefile.am Mon Jun  5 15:17:37 2000
-@@ -20,9 +20,9 @@
- ##   to the Free Software Foundation, Inc., 59 Temple Place, Suite
- ##   330, Boston, MA 02111-1307 USA
--bin_SCRIPTS=guile-config
--CLEANFILES=guile-config
--EXTRA_DIST=guile-config.in guile.m4
-+bin_SCRIPTS=guile-config @target@-guile-config
-+CLEANFILES=guile-config @target@-guile-config
-+EXTRA_DIST=guile-config.in guile.m4 cross-guile-config.in
- ## FIXME: in the future there will be direct automake support for
- ## doing this.  When that happens, switch over.
-@@ -39,6 +39,21 @@
-           -e s:@-GUILE_VERSION-@:${GUILE_VERSION}:
-       chmod +x guile-config.tmp
-       mv guile-config.tmp guile-config
-+
-+LDFLAGS=@LDFLAGS@
-+CFLAGS=@CFLAGS@
-+CPPFLAGS=@CPPFLAGS@
-+ 
-+@target@-guile-config: cross-guile-config.in
-+      rm -f $<.tmp
-+      sed < ${srcdir}/$< > $<.tmp \
-+          -e s:@-SHELL-@:${SHELL}: \
-+          -e s:@-GUILE_VERSION-@:${GUILE_VERSION}:\
-+          -e s:@-PREFIX-@:${prefix}: \
-+          -e "s:@-CPPFLAGS-@:${CPPFLAGS}:" \
-+          -e "s:@-LDFLAGS-@:${LDFLAGS}:"
-+      chmod +x $<.tmp
-+      mv $<.tmp $@
- ## Get rid of any copies of the configuration script under the old
- ## name, so people don't end up running ancient copies of it.
-diff -urN ../guile-1.4/guile-config/cross-guile-config.in ./guile-config/cross-guile-config.in
---- ../guile-1.4/guile-config/cross-guile-config.in    Thu Jan  1 01:00:00 1970
-+++ ./guile-config/cross-guile-config.in       Mon Jun  5 15:13:58 2000
-@@ -0,0 +1,16 @@
-+#!@-SHELL-@
-+# target-guile-config.in
-+case $1 in
-+      --version)
-+              echo "@-GUILE_VERSION-@"
-+              exit 0
-+              ;;
-+      compile)
-+              echo "@-CPPFLAGS-@ -I @-PREFIX-@/include/guile"
-+              exit 0
-+              ;;
-+      link)
-+              echo "-L @-PREFIX-@/lib -lguile @-LDFLAGS-@"
-+              exit 0
-+              ;;
-+esac
diff --git a/Documentation/ntweb/index.texi b/Documentation/ntweb/index.texi
deleted file mode 100644 (file)
index 6266ce8..0000000
+++ /dev/null
@@ -1,245 +0,0 @@
-\input texinfo @c -*-texinfo-*-
-@setfilename index.info
-@settitle LilyPond Windows NT 4-0/95 Distribution
-
-@node Top, Introduction, (dir), (dir)
-@comment  node-name,  next,  previous,  up
-@top LilyPond Windows NT 4.0/95 Distribution
-
-@menu
-* Introduction::                
-* News::                        
-* Bugs::                        
-* Required Packages::           
-* Download::                    
-* Installation::                
-* Running LilyPond::            
-* LilyPond Resources::          
-@end menu
-
-This page documents the NT port of LilyPond.  It reflects  the latest
-version of lilypond that was ported.
-
-@node Introduction, News, Top, Top
-@comment  node-name,  next,  previous,  up
-@section Introduction
-
-This page is dedicated to the distribution of precompiled and
-preformatted LilyPond binaries for Windows NT 4.0 .  This package is
-covered under the GNU General Public License and all of the source is
-available on the official
-@uref{http://www.cs.ruu.nl/people/hanwen/lilypond/index.html,LilyPond
-Homepage}.  A full set of
-@uref{http://www.cs.ruu.nl/people/hanwen/lilypond/Documentation/out-www/index.html,documentation}
-in various formats is also available.
-
-
-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.
-
-@node News, Bugs, Introduction, Top
-@comment  node-name,  next,  previous,  up
-@section News
-
-@table @samp
- @item BUG FIXES
-  @itemize @bullet
-   @item
-        The Windows NT 4.0/95 precompiled preformatted release 1.3.42 is
-        available.  
-  @end itemize
-@end table
-
-@table @samp
- @item NOTES
-  @itemize @bullet  
-   @item  We have had preliminary reports that the Windows 95
-        installation works on Windows 98.  Many thanks to Christian
-        Mondrup. 
-
-   @item  Please use the Add/Remove program control panel entry to
-        unistall your current version of Lilypond before you attempt to
-       install this one.
-
-   @item  If you are upgrading from a previous version of lilypond you will most
-       likely need to flush your font cache.  I generally just toss
-       @file{D:\localtexmf\fonts\tfm\public\ehrhardt} and
-       @file{D:\localtexmf\fonts\pk\ljfour\public\ehrhardt} in the Recyle
-       Bin. Your local font directory may be different, please refer to your
-       local installation of @code{TeX}.
-
-   @item  The FAT16, FAT32, and NTFS file system problems have been
-       corrected.  I have tested various installations that are known
-       to be operational.  
-  @end itemize 
-@end table
-  
-The installer was created with
-@uref{http://www.gentee.com/,CreateInstall}.  This is a shareware
-application that has capabilities close to the high dollar installers
-@strong{InstallShield}, @strong{Install Vise}, and @strong{WiseInstaller}.
-@strong{CreateInstall} does cost $38 to register which is probably going to
-be frowned upon, but I was unable to find a freeware install builder
-that was suitable.  The self extracting distribution currently:
-
-@itemize @bullet
- @item  Installs the lilypond distribution on any valid file system.
- @item  Optionally creates a @emph{Lilypond} shortcut group on your start
-      menu with the following shortcuts.
-  @itemize @bullet
-   @item  @strong{lilyshell}
-   @item  @strong{uninstall}
-  @end itemize
- @item  Allows unistall through the Add/Remove Program interface on the
-      control panel.
- @item  The @strong{lilyshell} uses the /E and /K switches to extend the
-      environment size and initialize the shell environment.
- @item  It has the look and feel of a real Windows installer
-@end itemize
-
-The @strong{lilyshell} shortcut initializes the environment so you can
-generate music from a MSDOS prompt with commands like:
-
-@itemize @bullet
-    @item ly2dvi
-    @item convert-mudela
-    @item mudela-book
-    @item lilypond
-    @item midi2ly
-@end itemize
-
-This release has been tested on Windows NT 4.0sp3 and Windows 95 and
-found to be operational.  If you have any troubles and or comments
-please do not hesitate to drop me a line 
-@uref{mailto:daboys@@austin.rr.com,Jeffrey B. Reed}.
-
-@node Bugs, Required Packages, News, Top
-@comment  node-name,  next,  previous,  up
-@section Bugs
-
-@itemize @bullet
-
-  @item  Using any text that contains '@{@}' for the value of the any
-       valid mudela @strong{header} construct will cause @strong{ly2dvi} to
-       fail.  A work around for the @strong{latexheaders} construct is to
-       create a @strong{TeX} file and set @strong{latexheaders} to "\input
-       foo.tex". 
-@end itemize
-
-@node Required Packages, Download, Bugs, Top
-@comment  node-name,  next,  previous,  up
-@section Required Packages
-
-LilyPond uses the @code{TeX} package as its rendering engine. @code{TeX}
-represents the state-of-the-art in computer typesetting. It is used to
-generate documentation, article, and book quality output. It is an
-assume tool to have in your toolbox.
-
-LilyPond uses a @code{Python} script named @code{ly2dvi} to render a
-professional quality music score. @code{Python} is an interpreted,
-interactive, object-oriented programming language.  It is often
-compared to @code{Tcl}, @code{Perl}, @code{Scheme} or @code{Java}.
-
-Gsview is used to display and print the music scores created by
-LilyPond.
-
-@itemize @bullet
-    @item 
-        @uref{http://www.miktex.de/,MiKTeX}. Versions
-        1.10b, 1.11, and 1.20b are known to work.
-    @item 
-        @uref{http://www.python.org,Python}. Version 1.5.1 and
-       possibly 1.5 work.
-    @item 
-        @uref{http://www.cs.wisc.edu/~ghost/gsview/index.html,gsview}. 
-       Version 5.10 is known to work.
-@end itemize
-
-@node Download, Installation, Required Packages, Top
-@comment  node-name,  next,  previous,  up
-@section Download
-
-@itemize @bullet
-    @item Windows 95
-        @uref{lilypond-TOPLEVEL_VERSION-95.exe,lilypond-TOPLEVEL_VERSION-95}
-    @item Windows NT 4.0
-        @uref{lilypond-TOPLEVEL_VERSION-nt.exe,lilypond-TOPLEVEL_VERSION-nt}
-    @item Windows 95 (Latest Stable Release)
-        @uref{lilypond-1.2.0.jbr1-95.exe,lilypond-1.2.0-95}
-    @item Windows NT 4.0 (Latest Stable Release)
-        @uref{lilypond-1.2.0-nt.jbr1.exe,lilypond-1.2.0-nt}
-@end itemize
-
-@node Installation, Running LilyPond, Download, Top
-@comment  node-name,  next,  previous,  up
-@section Installation
-
-@itemize @bullet
-  @item Download the distribution. See @ref{Download}.
-  @item run downloaded executable.  
-  @item  The first installation of LilyPond also requires these
-        additional steps:
-     @table @samp
-       @item LaTeX geometry package
-       @itemize @bullet
-         @item 
-          @uref{ftp://ctan.tug.org/tex-archive/macros/latex/contrib/supported/geometry.zip,download} the zip file to @code{\Temp}.
-         @item Extract the zip file into the LaTeX package area of
-             @code{MiKTeX}. This will be @strong{@emph{MiKTeX-dir}\tex\latex}
-         @item From a Command Prompt change directory into geometry
-             directory that was just extracted.
-         @item In the geometry directory type @strong{latex geometry.ins}
-       @end itemize 
-       @item Miscellaneous fonts
-       @itemize @bullet
-         @item In your favorite editor create a file named
-             @code{cmbx14.mf}. Add the following lines:  
-             @strong{design_size=14.4; }  
-             @strong{input b-cmbx;}
-         @item From a Command Prompt copy cmbx14.mf to the public font
-             area of MiKTeX:  
-             @strong{copy cmbx14.mf @emph{MiKTeX-dir}\fonts\source\public\cm\base}
-        @end itemize
-       @item NOTE 
-       MiKTeX-1.11 localtexmf configurations should use
-        @strong{@emph{localtexmf-dir}} in place of @strong{@emph{MiKTeX-dir}}.
-      @end table  
- instructions below
-@end itemize
-
-@node Running LilyPond, LilyPond Resources, Installation, Top
-@comment  node-name,  next,  previous,  up
-@section Running LilyPond
-
-@itemize @bullet
-  @item Take a look at @uref{angels.ly,angels.ly}
-  @item Save angels.ly to your local disk
-  @item Select the @strong{lilyshell} shortcut from the @emph{Lilypond} group  
-  @item  From a LilyPond Command Prompt run:  @*
-  @example
-   % @strong{ly2dvi angels.ly} 
-   % @strong{dvips angels.dvi}
-   % @strong{start angels.ps}
-  @end example
-@end itemize
-
-@node LilyPond Resources,  , Running LilyPond, Top
-@comment  node-name,  next,  previous,  up
-@section LilyPond Resources
-
-@itemize @bullet
-  @item 
-        @uref{http://www.cs.ruu.nl/people/hanwen/lilypond/index.html,LilyPond Homepage}
-  @item 
-        @uref{ftp://ftp.cs.uu.nl/pub/GNU/LilyPond/,LilyPond Ftp Site}
-  @item 
-        @uref{http://www.mail-archive.com/help-gnu-music@@gnu.org,gnu-music-discuss mail archive}
-  @item Please feel free to mail us at @uref{mailto:gnu-music-discuss@@gnu.org,gnu-music-discuss}
-@end itemize
-
-@html
-<!- banner_id ->
-@end html
-
-@bye
diff --git a/Documentation/ntweb/lilypond-manpages.patch b/Documentation/ntweb/lilypond-manpages.patch
deleted file mode 100644 (file)
index 9e204a7..0000000
+++ /dev/null
@@ -1,453 +0,0 @@
-diff --exclude-from=niet -urN ../lilypond-1.3.38/lily/out/lilypond.1 ./lily/out/lilypond.1
---- ../lilypond-1.3.38/lily/out/lilypond.1     Thu Jan  1 01:00:00 1970
-+++ ./lily/out/lilypond.1      Wed Mar 22 15:51:39 2000
-@@ -0,0 +1,88 @@
-+.\" DO NOT MODIFY THIS FILE!  It was generated by help2man 1.012.
-+.TH LILYPOND "1" "March 2000" "GNU LilyPond 1.3.38.jcn1" FSF
-+.SH NAME
-+LilyPond \- manual page for LilyPond 1.3.38.jcn1
-+.SH SYNOPSIS
-+.B LilyPond
-+[\fIOPTION\fR]... [\fIFILE\fR]...
-+.SH DESCRIPTION
-+GNU LilyPond 1.3.38.jcn1
-+.PP
-+Typeset music and or play MIDI from FILE
-+.PP
-+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.
-+.SH OPTIONS
-+.TP
-+\fB\-d\fR,--debug
-+enable debugging output
-+.TP
-+\fB\-f\fR,--output-format=EXT
-+use output format EXT
-+.TP
-+\fB\-h\fR,--help
-+this help
-+.TP
-+\fB\-I\fR,--include=DIR
-+add DIR to search path
-+.TP
-+\fB\-i\fR,--init=FILE
-+use FILE as init file
-+.TP
-+\fB\-M\fR,--dependencies
-+write Makefile dependencies for every input file
-+.TP
-+\fB\-m\fR,--no-paper
-+produce MIDI output only
-+.TP
-+\fB\-o\fR,--output=BASENAME
-+write output to BASENAME[-x].extension
-+.TP
-+\fB\-Q\fR,--find-old-relative
-+show all changes in relative syntax
-+.TP
-+\fB\-s\fR,--safe
-+inhibit file output naming and exporting
-+.TP
-+\fB\-T\fR,--no-timestamps
-+don't timestamp the output
-+.TP
-+\fB\-t\fR,--test
-+switch on experimental features
-+.TP
-+\fB\-V\fR,--ignore-version
-+ignore mudela version
-+.TP
-+\fB\-v\fR,--version
-+print version number
-+.TP
-+\fB\-w\fR,--warranty
-+show warranty and copyright
-+.PP
-+This binary was compiled with the following options: 
-+datadir: `/home/fred/usr/share/lilypond'
-+localedir: `/home/fred/usr/share/locale'
-+.PP
-+Oldest supported input version: 1.3.4
-+.SH "REPORTING BUGS"
-+Report bugs to bug-gnu-music@gnu.org
-+.SH "SEE ALSO"
-+The full documentation for
-+.B LilyPond
-+is maintained as a Texinfo manual.  If the
-+.B info
-+and
-+.B LilyPond
-+programs are properly installed at your site, the command
-+.IP
-+.B info LilyPond
-+.PP
-+should give you access to the complete manual.
-+.PP
-+This is free software.  It is covered by the GNU General Public License,
-+and you are welcome to change it and/or distribute copies of it under
-+certain conditions.  Invoke as `lilypond --warranty' for more information.
-+.SH COPYRIGHT
-+Copyright \(co 1996--2000 byHan-Wen Nienhuys <hanwen@cs.uu.nl>
-+Jan Nieuwenhuizen <janneke@gnu.org>
-diff --exclude-from=niet -urN ../lilypond-1.3.38/midi2ly/out/midi2ly.1 ./midi2ly/out/midi2ly.1
---- ../lilypond-1.3.38/midi2ly/out/midi2ly.1   Thu Jan  1 01:00:00 1970
-+++ ./midi2ly/out/midi2ly.1    Wed Mar 22 15:51:45 2000
-@@ -0,0 +1,74 @@
-+.\" DO NOT MODIFY THIS FILE!  It was generated by help2man 1.012.
-+.TH MIDI2LY "1" "March 2000" "midi2ly 1.3.38.jcn1" FSF
-+.SH NAME
-+midi2ly \- manual page for midi2ly 1.3.38.jcn1
-+.SH SYNOPSIS
-+.B midi2ly
-+[\fIOPTION\fR]... [\fIFILE\fR]
-+.SH DESCRIPTION
-+.PP
-+Translate MIDI-file to mudela
-+.SH OPTIONS
-+.TP
-+\fB\-b\fR,--no-quantify
-+write exact durations, e.g.: a4*385/384
-+.TP
-+\fB\-d\fR,--debug
-+enable debugging output
-+.TP
-+\fB\-h\fR,--help
-+this help
-+.TP
-+\fB\-k\fR,--key=ACC[:MINOR]
-+set key: ACC +sharps/-flats; :1 minor
-+.TP
-+\fB\-n\fR,--no-silly
-+don't output tuplets or double dots, smallest is 32
-+.TP
-+\fB\-o\fR,--output=FILE
-+set FILE as default output
-+.TP
-+\fB\-p\fR,--no-tuplets
-+don't output tuplets
-+.TP
-+\fB\-q\fR,--quiet
-+be quiet
-+.TP
-+\fB\-s\fR,--smallest=DUR
-+set smallest duration
-+.TP
-+\fB\-T\fR,--no-timestamps
-+don't timestamp the output
-+.TP
-+\fB\-V\fR,--version
-+print version number
-+.TP
-+\fB\-v\fR,--verbose
-+be verbose
-+.TP
-+\fB\-w\fR,--warranty
-+show warranty and copyright
-+.TP
-+\fB\-x\fR,--no-double-dots
-+assume no double dotted notes
-+.SH "REPORTING BUGS"
-+Report bugs to bug-gnu-music@gnu.org
-+.SH "SEE ALSO"
-+The full documentation for
-+.B midi2ly
-+is maintained as a Texinfo manual.  If the
-+.B info
-+and
-+.B midi2ly
-+programs are properly installed at your site, the command
-+.IP
-+.B info midi2ly
-+.PP
-+should give you access to the complete manual.
-+.PP
-+This is free software.  It is covered by the GNU General Public License,
-+and you are welcome to change it and/or distribute copies of it under
-+certain conditions.  Invoke as `midi2ly --warranty' for more information.
-+.SH COPYRIGHT
-+Copyright \(co 1996--2000 byHan-Wen Nienhuys <hanwen@cs.uu.nl>
-+Jan Nieuwenhuizen <janneke@gnu.org>
-diff --exclude-from=niet -urN ../lilypond-1.3.38/midi2ly/out/version.hh ./midi2ly/out/version.hh
---- ../lilypond-1.3.38/midi2ly/out/version.hh  Thu Jan  1 01:00:00 1970
-+++ ./midi2ly/out/version.hh   Wed Mar 22 15:51:41 2000
-@@ -0,0 +1,5 @@
-+/* automatically generated */#define PACKAGE_NAME "LilyPond"
-+#define MAJOR_VERSION "1"
-+#define MINOR_VERSION "3"
-+#define PATCH_LEVEL "38"
-+#define MY_PATCH_LEVEL "jcn1"
-diff --exclude-from=niet -urN ../lilypond-1.3.38/scripts/out/abc2ly.1 ./scripts/out/abc2ly.1
---- ../lilypond-1.3.38/scripts/out/abc2ly.1    Thu Jan  1 01:00:00 1970
-+++ ./scripts/out/abc2ly.1     Wed Mar 22 15:50:27 2000
-@@ -0,0 +1,32 @@
-+.\" DO NOT MODIFY THIS FILE!  It was generated by help2man 1.012.
-+.TH ABC2LY "1" "March 2000" "GNU lilypond 1.3.38" FSF
-+.SH NAME
-+abc2ly \- manual page for abc2ly 1.3.38
-+.SH SYNOPSIS
-+.B abc2ly
-+[\fIOPTION\fR]...\fI ABC-FILE\fR
-+.SH DESCRIPTION
-+
-+Convert ABC to Mudela.
-+.SH OPTIONS
-+.TP
-+\fB\-h\fR, \fB\-\-help\fR
-+this help
-+.TP
-+\fB\-o\fR, \fB\-\-output\fR=\fIFILE\fR
-+set output filename to FILE
-+.TP
-+\fB\-v\fR, \fB\-\-version\fR
-+version information
-+.SH "SEE ALSO"
-+The full documentation for
-+.B abc2ly
-+is maintained as a Texinfo manual.  If the
-+.B info
-+and
-+.B abc2ly
-+programs are properly installed at your site, the command
-+.IP
-+.B info abc2ly
-+.PP
-+should give you access to the complete manual.
-diff --exclude-from=niet -urN ../lilypond-1.3.38/scripts/out/as2text.1 ./scripts/out/as2text.1
---- ../lilypond-1.3.38/scripts/out/as2text.1   Thu Jan  1 01:00:00 1970
-+++ ./scripts/out/as2text.1    Wed Mar 22 15:50:31 2000
-@@ -0,0 +1,32 @@
-+.\" DO NOT MODIFY THIS FILE!  It was generated by help2man 1.012.
-+.TH AS2TEXT "1" "March 2000" "as2text - LilyPond version 1.3.38" FSF
-+.SH NAME
-+as2text \- manual page for as2text - LilyPond version 1.3.38
-+.SH SYNOPSIS
-+.B as2text
-+[\fIOPTION\fR]...\fI AS-FILE\fR
-+.SH DESCRIPTION
-+as2text - LilyPond version 1.3.38
-+Convert AsciiScript to text.
-+.SH OPTIONS
-+.TP
-+\fB\-h\fR,--help
-+this help
-+.TP
-+\fB\-o\fR,--output=FILE
-+set output file
-+.TP
-+\fB\-v\fR,--version
-+show version
-+.SH "SEE ALSO"
-+The full documentation for
-+.B as2text
-+is maintained as a Texinfo manual.  If the
-+.B info
-+and
-+.B as2text
-+programs are properly installed at your site, the command
-+.IP
-+.B info as2text
-+.PP
-+should give you access to the complete manual.
-diff --exclude-from=niet -urN ../lilypond-1.3.38/scripts/out/convert-mudela.1 ./scripts/out/convert-mudela.1
---- ../lilypond-1.3.38/scripts/out/convert-mudela.1    Thu Jan  1 01:00:00 1970
-+++ ./scripts/out/convert-mudela.1     Wed Mar 22 15:50:23 2000
-@@ -0,0 +1,49 @@
-+.\" DO NOT MODIFY THIS FILE!  It was generated by help2man 1.012.
-+.TH CONVERT-MUDELA "1" "March 2000" "GNU LilyPond 1.3.38" FSF
-+.SH NAME
-+convert-mudela \- manual page for convert-mudela 1.3.38
-+.SH SYNOPSIS
-+.B convert-mudela
-+[\fIOPTION\fR]... [\fIFILE\fR]... 
-+.SH DESCRIPTION
-+.PP
-+Try to convert to newer mudela-versions.  The version number of the
-+input is guessed by default from \version directive
-+.SH OPTIONS
-+.TP
-+\fB\-h\fR, \fB\-\-help\fR
-+print this help
-+.TP
-+\fB\-e\fR, \fB\-\-edit\fR
-+in place edit
-+.TP
-+\fB\-f\fR, \fB\-\-from\fR=\fIVERSION\fR
-+start from version
-+.TP
-+\fB\-s\fR, \fB\-\-show\-rules\fR
-+print all rules.
-+.TP
-+\fB\-t\fR, \fB\-\-to\fR=\fIVERSION\fR
-+target version
-+.TP
-+\fB\-\-version\fR
-+print program version
-+.SH "REPORTING BUGS"
-+Report bugs to bugs-gnu-music@gnu.org
-+.SH "SEE ALSO"
-+The full documentation for
-+.B convert-mudela
-+is maintained as a Texinfo manual.  If the
-+.B info
-+and
-+.B convert-mudela
-+programs are properly installed at your site, the command
-+.IP
-+.B info convert-mudela
-+.PP
-+should give you access to the complete manual.
-+.PP
-+This is free software.  It is covered by the GNU General Public
-+License, and you are welcome to change it and/or distribute copies of
-+it under certain conditions.  invoke as `convert-mudela --warranty' for more
-+information.
-diff --exclude-from=niet -urN ../lilypond-1.3.38/scripts/out/ly2dvi.1 ./scripts/out/ly2dvi.1
---- ../lilypond-1.3.38/scripts/out/ly2dvi.1    Thu Jan  1 01:00:00 1970
-+++ ./scripts/out/ly2dvi.1     Wed Mar 22 15:50:25 2000
-@@ -0,0 +1,76 @@
-+.\" DO NOT MODIFY THIS FILE!  It was generated by help2man 1.012.
-+.TH LY2DVI "1" "March 2000" "GNU lilypond 1.3.38" FSF
-+.SH NAME
-+ly2dvi \- manual page for ly2dvi 1.3.38
-+.SH SYNOPSIS
-+.B ly2dvi
-+[\fIOPTION\fR]... [\fIFILE\fR]...
-+.SH DESCRIPTION
-+.PP
-+Generate dvi file from mudela or lilypond output
-+.SH OPTIONS
-+.TP
-+\fB\-D\fR,--debug
-+increase verbosity
-+.TP
-+\fB\-F\fR,--headers=
-+name of additional LaTeX headers file
-+.TP
-+\fB\-H\fR,--Height=
-+set paper height (points) (see manual page)
-+.TP
-+\fB\-I\fR,--include=DIR
-+add DIR to LilyPond's search path
-+.TP
-+\fB\-K\fR,--keeplilypond
-+keep lilypond output files
-+.TP
-+\fB\-L\fR,--landscape
-+set landscape orientation
-+.TP
-+\fB\-N\fR,--nonumber
-+switch off page numbering
-+.TP
-+\fB\-O\fR,--orientation=
-+set orientation (obsolete - use \fB\-L\fR instead)
-+.TP
-+\fB\-P\fR,--postscript
-+generate postscript file
-+.TP
-+\fB\-W\fR,--Width=
-+set paper width (points) (see manual page)
-+.TP
-+\fB\-M\fR,--dependencies
-+tell lilypond make a dependencies file
-+.TP
-+\fB\-h\fR,--help
-+this help text
-+.TP
-+\fB\-k\fR,--keeply2dvi
-+keep ly2dvi output files
-+.TP
-+\fB\-l\fR,--language=
-+give LaTeX language (babel)
-+.TP
-+\fB\-o\fR,--output=
-+set output directory
-+.TP
-+\fB\-p\fR,--papersize=
-+give LaTeX papersize (eg. a4)
-+.TP
-+\fB\-s\fR,--separate
-+run all files separately through LaTeX
-+.PP
-+files may be (a mix of) input to or output from lilypond(1)
-+.SH "SEE ALSO"
-+The full documentation for
-+.B ly2dvi
-+is maintained as a Texinfo manual.  If the
-+.B info
-+and
-+.B ly2dvi
-+programs are properly installed at your site, the command
-+.IP
-+.B info ly2dvi
-+.PP
-+should give you access to the complete manual.
-diff --exclude-from=niet -urN ../lilypond-1.3.38/scripts/out/mudela-book.1 ./scripts/out/mudela-book.1
---- ../lilypond-1.3.38/scripts/out/mudela-book.1       Thu Jan  1 01:00:00 1970
-+++ ./scripts/out/mudela-book.1        Wed Mar 22 15:50:24 2000
-@@ -0,0 +1,65 @@
-+.\" DO NOT MODIFY THIS FILE!  It was generated by help2man 1.012.
-+.TH MUDELA-BOOK "1" "March 2000" "GNU LilyPond 1.3.38" FSF
-+.SH NAME
-+mudela-book \- manual page for mudela-book 1.3.38
-+.SH SYNOPSIS
-+.B mudela-book
-+[\fIoptions\fR]\fI FILE\fR
-+.SH DESCRIPTION
-+.PP
-+Generate hybrid LaTeX input from Latex + mudela
-+Options:
-+.TP
-+\fB\-\-default\-mudela\-fontsize\fR=\fIDIM\fR
-+default fontsize for music.  DIM is assumed to in points
-+.TP
-+\fB\-f\fR,--format=EXT
-+set format.  EXT is one of texi and latex.
-+.TP
-+\fB\-h\fR,--help
-+print help
-+.TP
-+\fB\-I\fR,--include=DIR
-+include path
-+.TP
-+\fB\-\-init\fR
-+mudela-book initfile
-+.TP
-+\fB\-\-force\-verbatim\fR
-+make all mudela verbatim
-+.TP
-+\fB\-M\fR,--dependencies
-+write dependencies
-+.TP
-+\fB\-n\fR,--no-lily
-+don't run lilypond
-+.TP
-+\fB\-\-no\-pictures\fR
-+don't generate pictures
-+.TP
-+\fB\-o\fR,--outname=FILE
-+prefix for filenames
-+.TP
-+\fB\-v\fR,--version
-+print version information
-+.TP
-+\fB\-\-dep\-prefix\fR=\fIPREF\fR
-+prepend PREF before each \fB\-M\fR dependency
-+.PP
-+Warning all output is written in the CURRENT directory
-+.SH "REPORTING BUGS"
-+Report bugs to bug-gnu-music@gnu.org.
-+Written by Tom Cato Amundsen <tomcato@xoommail.com> and
-+Han-Wen Nienhuys <hanwen@cs.uu.nl>
-+.SH "SEE ALSO"
-+The full documentation for
-+.B mudela-book
-+is maintained as a Texinfo manual.  If the
-+.B info
-+and
-+.B mudela-book
-+programs are properly installed at your site, the command
-+.IP
-+.B info mudela-book
-+.PP
-+should give you access to the complete manual.
diff --git a/Documentation/pictures/out/lilypond-icon.xpm b/Documentation/pictures/out/lilypond-icon.xpm
new file mode 100644 (file)
index 0000000..0ad7f75
--- /dev/null
@@ -0,0 +1,141 @@
+/* XPM */
+static char *noname[] = {
+/* width height ncolors chars_per_pixel */
+"50 71 63 2",
+/* colors */
+"`` c #666664",
+"`a c #F2F2F4",
+"`b c #5E5E5C",
+"`c c #EAEAEC",
+"`d c #565654",
+"`e c #E2E2E4",
+"`f c #4E4E4C",
+"`g c #DADADC",
+"`h c #464644",
+"`i c #D2D2D4",
+"`j c #3E3E3C",
+"`k c #CACACC",
+"`l c #363634",
+"`m c #C2C2C4",
+"`n c #2E2E2C",
+"`o c #BABABC",
+"`p c #262624",
+"`q c #B2B2B4",
+"`r c #1E1E1C",
+"`s c #AAAAAC",
+"`t c #161614",
+"`u c #A2A2A4",
+"`v c #0E0E0C",
+"`w c #9A9A9C",
+"`x c #060604",
+"`y c #929294",
+"`z c #8A8A8C",
+"a` c #828284",
+"aa c #7A7A7C",
+"ab c #727274",
+"ac c #6A6A6C",
+"ad c #626264",
+"ae c #5A5A5C",
+"af c #525254",
+"ag c #4A4A4C",
+"ah c #424244",
+"ai c #3A3A3C",
+"aj c #323234",
+"ak c #2A2A2C",
+"al c #FEFEFC",
+"am c #222224",
+"an c #F6F6F4",
+"ao c #1A1A1C",
+"ap c #EEEEEC",
+"aq c #121214",
+"ar c #E6E6E4",
+"as c #0A0A0C",
+"at c #DEDEDC",
+"au c #D6D6D4",
+"av c #CECECC",
+"aw c #C6C6C4",
+"ax c #BEBEBC",
+"ay c #B6B6B4",
+"az c #AEAEAC",
+"b` c #A6A6A4",
+"ba c #9E9E9C",
+"bb c #969694",
+"bc c #8E8E8C",
+"bd c #868684",
+"be c #7E7E7C",
+"bf c #767674",
+"bg c #6E6E6C",
+"bh c #FAFAFC",
+/* pixels */
+"alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal",
+"alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal",
+"alalbhbhalalbhalalbhalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal",
+"alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal",
+"alalalbhbhalalbhalalalalalalalalalalalalalalalalalal`o`ya``s`wbhalalalalalalalalalalalalalalalalalal",
+"bhalalalalalbhalalalalalalalalalalalalalalalalalal`a`malalalap`obb`malalalalal`cax`galalalalalalalal",
+"alalalalalalalalalalalalalalalalalalalalalalalalalbcalbhalalalalalax`ialalal`gauav`u`ealalalalalalal",
+"alalalalalalalbhalalalalalalalalalalalalalalalalawar`ialalalalalalalaxapalalbaacat`i`oalalalalalalal",
+"alalbhalalalalbhalalalalalalalalalalalalalalalalazal`sbhalalalalalalalayalbh`eba`iapavalalalalalalal",
+"albhalbhalalalalalalalalalalalalalalalalalalalal`oatalb``aalalalalalal`oanazazanbhayalalalalalalalal",
+"alalalalalalalalalalalalalalalalalalalalalalanawal`salalbaalalalalalalalazaa`cav`oalalalalalalalalal",
+"alalalalalalalalalalalalalalalalalalalalalapawalalaranal`i`qalalalalalalbeayazbcbcalalalalalalalalal",
+"alalalalalalalalalalalalalalalalalalalalal`g`oapalalalalal`yalalalalal`gbbabbhapalalalalalalalalalal",
+"alalalalalalalalalalalalalalalalalalalalalal`sanalalalalalbdalalalalalbc`obbalalalalalalalalalalalal",
+"alalalalalalalalalalalalalalalalalalalalalapaaanalalalalal`qatan`ealax`sbbazalalalalalalalalalalalal",
+"alalalalalalalalalalalalalalalalalalalalal`kab`oalalalalalau`uaw`salbb`ua`bcalalalalalalalalalalalal",
+"alalalalalalalalalalalalalalalalalalalalalayalalalalalalan`ea`axax`oba`oazaxaralalalalalalalalalalal",
+"alalalalalalalalalalapbhalalalalalalalalalaybhalalalalan`s`sazav`gaz`qbdalalazalalalalalalalalalalal",
+"alalalalalalalalalalax`u`aalalalalalalalalaraw`o`c`c`aaxaw`g`kav`sayb`ayalal`m`calalalalalalalalalal",
+"alalalalalalalalalalal`c`sbhalalalalalalalalalal`c`jb`albh`yavapazay`w`ialalalay`aalalalalalalalalal",
+"alalalalalalalalalalalalar`qbhalalalalalalalalalal`v`sav`abcaubbaw`u`salalalalalayapalalalalalalalal",
+"alalalalalalalalalalalalal`i`kalalalalalalalalalal`l`way`uau`cazazazbc`q`ialalalal`galalalalalalalal",
+"alalalalalalalalalalalalalalaw`galalalalalalan`i`m`hbe`q`oap`w`m`uax`ialax`salalalalalalalalalalalal",
+"alalalalalalalalalalalalalalal`oatalalalbh`kbaadagad```oav`i`mb`ba`ualalal`i`oalalalalalalalalalalal",
+"alalalalalalalalalalalalalalalanaz`aalanaz`nag`ian`w`k`iar`waw`o`o`ialalalalau`ialalalalalalalalalal",
+"alalalalalalalalalalalalalalalalapba`c`zakac`aalau`calapaz`gbabb`qbhalalalalal`ualalalalalalalalalal",
+"alalalalalalalalalalalalalalalalal`ibdambd`c`aalalalal`a`yax`kb``u`aalalalalal`e`kalalalalalalalalal",
+"alalalalalalalalalalalalalalalalarbcajbf`q`kalalalalal`w`c`sbc`k`e`kalalalalalal`salalalalalalalalal",
+"alalalalalalalalalalalalalalalalawaoaibbaw`kalalalalapbaaw`gb`baalaualalalalalal`salalalalalalalalal",
+"alalalalalalalalalalalalalalal`cbgaq`y`q`o`ialalalal`wbh`sba`g`oalaralalalalalal`ualalalalalalalalal",
+"alalalalalalalbhbhalalalalalalar`v`lbfazap`qapalal`gaz`k`e`y`u`galbhalalalalalalb`alalalalalalalalal",
+"alalalalalalalalalalalalalalalbb`x`l`qayalap`u`aala`al`u`q`ebebhalbhalalalalalalb`alalalalalalalalal",
+"alalalalalalalalalalalalalalal`gao`hayazalalapb``kax`iaubeaybaalalalalalalalalalbaalalalalalalalalal",
+"alalalalalalalalalalalalalalalalbdahba`galalalatbcalbb`maxbeatalalalalalalalalalbaalalalalalalalalal",
+"alalalalalalalalalalalalalalalalau`jb``calbhalal`k`oaw`zapbfalalalalanalalalalal`salalalalalalalalal",
+"alalalalalalalalalalalalalalalal`aad`malalbbalalal`o`kbb`y`ialalalal`walalalalal`qalalalalalalalalal",
+"alalalalalalalalalalalalalalalalalbebaalapbfalalalbhbb`c`dalalalalalagalalalalap`oalalalalalalalalal",
+"alalalalalalalalalalalalalalalalalbb`ialalajalalalalap`w`walalalalaxaaalalalal`qalalalalalalalalalal",
+"alalalalalalalalalalalalalalalalalazalalalbf`aalalalalbaayanalalalbg`ealalalbh`qalalalalalalalalalal",
+"alalalalalalalalalalalalalalalalalaxalalalbebhalalal`c`s`saxalalal``alalalalaybhalalalalalalalalalal",
+"alalalalalalalalalalalalalalalalal`oalalal`ealalalalbb`eaw`uawalalawalbhalataualalalalalalalalalalal",
+"alalalalalalalalalalalalalalalalalanalalalalalalalal`wb`alayb``malalal`sal`oalalalalalalalalalalalal",
+"alalalalalalalalalalalalalalalalalalalal`galalalal`q`g`wauaraz`yalalaxapalbhalalalalalalalalalalalal",
+"alalalalbhalalalalbhalalalalbhbhalalbhal`salalalal`waw`kay`kapb`al`k`galalalbhbhbhbhbhalalalalalalal",
+"albhbhalbhalalalalbhalalalalalbhalalal`i`malalbhar`sbdal`q`oalalal`walalbhalalalalalbhalalalalalalal",
+"bhalalalalalalalalalalalbhalalal`ialalanavalalalbcalbbat`g`qalbhar`qalalalalalalalalalbhbhbhbhbhbhal",
+"alalalalbhbhbhalalbhbhalalalal`mbealbhalawalalalbd`iat`oaratalal`yalbhalalalalalalalalalalalalalbhal",
+"alalbhalalalalbhalalalalbhbhal`najalal`aarbhal`s`eazalazazalal`cb`alalalbhbhbhbhbhalalalalalalalalal",
+"bhalbhalalalalbhalalalalalalbbas`naralalalalal`yalazarauayalalbaa`albhalalalalalbhalalalalalalalbhal",
+"alalalalalalalalalalbhalal`aaq`r`hbdalalalalaraz`m`aazan`mal`ebd`jalalalalalalalalbhbhbhbhbhbhalalal",
+"alalbhbhbhalalbhbhalalalalaa`vah`d`d`calbhalbaal`qal`o`obhalbhbd`ray`i`gbhalalalalalalalalalbhalbhal",
+"bhalalalalbhalalalalbhalal`v`t`lah```ualalalbaan`q`cavaxalalatbeai`hauaw`waz`kav`ialalalalalalalalal",
+"bhalalalalbhalalalalal`aap`x`tahafbb`ybdalavat`sbh`sal`qalal`c`qafam`faab`axauav`i`s`oaualalbhalbhal",
+"alalalalalalalanaxax`s`q`gasao`pbebabb`ubd`walb`al`oavapalalbhaybeagaq`n`sauaw`i`iapat`kayauapalalal",
+"bhbhbhalalav`kazarauayay`sad`r`facae`mazaubgb``sbh`m`oalalalalavbbaeai`j`oav`g`oatau`c`g`a`eb`azanal",
+"alalalat`o`e`mavayavauarawayaq`lbf`yb``e`zap`yawbd`qayalalalap`ibcad`j`jbb`i`gapal`cal`iatau`gar`o`c",
+"alal`eavalbh`g`g`g`ialanaral`b`vabbd`u`ibd`e`ual`o`ea`bbbdbcb`arb````la``uap`i`cavapalarav`catav`c`q",
+"al`eavar`aanar`gavatayavaranatasae`wbcawax`iaval`calalalalalalaybcaf`hbb`garan`g`c`g`i`eatauatau`oap",
+"al`s`a`carau`capanal`gapanbhal`s`ragbc`e`k`walalalalalalal`cap`oa`bfbgarauauan`g`i`e`c`c`a`g`cauatal",
+"al`e`qay`s`i`eanarau`matau`cauau`s`ta`bd`sawalbhalalbhalapatav`s`f`baxalanat`aananan`eawat`max`aalal",
+"bhalbhawavbh`aavar`e`gawawau`k`i`c`i`h`d`y`ealalbhalalalalapauaxb`avan`carbhan`gau`aan`iax`ebhalalal",
+"alalalalan`uawawal`g`e`e`oatavat`q`ganbb`babbhalalap`ubbb`bb`z`u`gaparbhbhalanaw`iavax`cbhalalalbhal",
+"albhalbhalalbhanax`oaw`m`i`m`m`kbhalalalap`obaavalbhan`aan`aalalalalapaxawaw`oapanbhalalalalalalbhal",
+"alalalalalalalalalalananbhanbhalalalalalalalan`gb``qawavaxau`m`o`o`s`eananalalalalalalalalalalalalal",
+"alalalalalalbhbhbhalalalalalalalalbhalbhalalalalalalbhbhanbhalalalalalalalalalalalalalalalbhalalalal",
+"albhalalalbhalalalalalalalalbhbhbhalalalbhalbhalalalalalalalbhalalalalalalalalalbhalalalbhalalalbhal",
+"alalbhbhalalalalalbhalbhalalalalalalalalbhalalbhalalalalbhalalalbhalalbhbhbhalalbhbhbhalalbhalalbhal",
+"albhalalalalalalbhalbhalbhalalalalbhalalalalbhalalalalalalalalbhalbhalalalalbhalalal`aalalalbhalalal",
+"alalalalbhbhbhalalalalalalalalbhalbhalalalalalbhbhbhbhalalbhalalalbhalalalalalap`qbb`salalalalalbhal",
+"alalalbhalalalalalalalalbhbhbhalalalbhalbhalalalalalalalbhalalalalalalalalalalae`uav`calalalbhalalal",
+"bhbhalalalalalbhalbhalalalalalalalalbhalalbhalalalalbhalalalbhalalbhbhbhalalalalalaralalalalbhalbhal"
+};
index 1f9b51238b03e881f93f93068a1de5dbd3ce3964..6965c068a9fee4fb4bbf4113313db5a76db01b97 100644 (file)
@@ -68,7 +68,7 @@ and documenting bugfixes.
 
 @lilypondfile[printfilename]{dynamics-broken-hairpin.ly}
 
-
+@lilypondfile[printfilename]{dynamics-unbound-hairpin.ly}
 
 @section Chord names
 
@@ -241,6 +241,8 @@ and documenting bugfixes.
 
 @lilypondfile[printfilename]{keys.ly}
 
+@lilypondfile[printfilename]{key-signature-scordatura.ly}
+
 @section Hacks and Features
 
 @lilypondfile[printfilename]{generic-output-property.ly}
index 97d93cb6142b5f1ae676e8ea24ddb3c82bd12d12..257fccc37dfebd553c6b4eaea636468fda06fed5 100644 (file)
@@ -58,25 +58,6 @@ yourself:
  
 @end example 
 
-@subsection Is there an emacs mode?
-
-Yes.  It is included with the source archive as
-@file{lilypond-mode.el} and @file{lilypond-font-lock.el}.  If you have
-an RPM, it is in @file{/usr/share/doc/lilypond-X/}.  You have to install
-it yourself.
-
-Add this to your ~/.emacs or ~/.emacs.el:
-@example 
-    (load-library "lilypond-mode.el")
-    (setq auto-mode-alist
-      (cons '("\\.ly$" . LilyPond-mode) auto-mode-alist))
-    (add-hook 'LilyPond-mode-hook (lambda () (turn-on-font-lock)))
-@end example
-
-If you have the latest LilyPond-1.3.x Debian package, LilyPond-mode
-is automatically loaded, so you need not modify your ~/.emacs file.
-
-
 @subsection I downloaded the windows32 port, and it doesn't match the website!
 
 The website is usually made from the latest snapshots.  Binary releases,
index 53966d411bf1434ec2018b8916c0d00055d8a0cb..340221e64228fb67db2d63afbcaeb47a95a0fdc9 100644 (file)
@@ -13,140 +13,140 @@ You can get the latest version of LilyPond at
 @uref{ftp://ftp.cs.uu.nl/pub/GNU/LilyPond/,
 ftp://ftp.cs.uu.nl/pub/GNU/LilyPond/}.
 
+There are three options for downloading sources.
+
+@itemize
+@item if you don't have any version, then you can  download
+ the entire @file{.tar.gz} file.
+
+@item if you have an unpacked source   tree of a previous version, you
+may use the diffs .
+
 
 @emph{If you upgrade by patching do remember to rerun autoconf after
 applying the patch}.
 
-If you do not want to download the entire archive for each version, the
-safest method for upgrading is to use @file{xdelta}, see
-@uref{ftp://ftp.xcf.berkeley.edu/pub/xdelta/}.
+
+@item if you have the @code{.tar.gz} file of a previous release, you can
+use
+@uref{ftp://ftp.xcf.berkeley.edu/pub/xdelta/, xdelta}.
+ This is much safer than using normal diffs, and is the recommended way.
 
 The following command produces @file{lilypond-1.3.122.tar.gz} from
-@file{lilypond-1.3.121} identical (up to compression dates) to the .122 on
-the FTP site.
+@file{lilypond-1.3.121} identical (up to compression dates) to the .122
+on the FTP site.
 @example
   xdelta patch lilypond-1.3.121-1.3.122.xd lilypond-1.3.121.tar.gz
 @end example
+@end itemize
 
-@section Prerequisites
-
-For compilation you need:
-
-@itemize @bullet
-@item A GNU system: GNU LilyPond is known to run on these GNU systems: Linux
-    (PPC, intel), FreeBSD, AIX, NeXTStep, IRIX, Digital Unix and
-    Solaris.
+@section Build requirements
 
-@item Lots of disk space: LilyPond takes between 30 and 100 mb to
-compile if you use debugging information.  If you are short on
-disk-space run configure with @code{--disable-debugging}.
+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
+@uref{http://appel.lilypond.org/lilypond/gnu-windows/, Jan's windows
+page}.
 
-@item
-Although we recommend to use Unix, LilyPond is known to run on Windows
-NT/95/98 as well.  See Section Windows NT/95,es.
+You need the following packages to compile Lilypond.
 
-@item A reasonable C++ compiler:  EGCS 1.1, GCC 2.95.2 or newer. Check out @uref{ftp://ftp.gnu.org/gnu/gcc/}.
+@itemize
+@item A reasonably new C++ compiler:  EGCS 1.1, GCC 2.95.2 or
+newer. Check out @uref{ftp://ftp.gnu.org/gnu/gcc/, the gcc site}.
 
 @item  Python 1.5,
-Check out @uref{ftp://ftp.python.org} or
-@uref{ftp://ftp.cwi.nl/pub/python}.
+Check out @uref{http://www.python.org, the python website}.
 
 @item  GUILE 1.3.4 or newer,  check out
-@uref{http://www.gnu.org/software/guile/guile.html,http://www.gnu.org/software/guile/guile.html}.
+@uref{http://www.gnu.org/software/guile/guile.html,the GUILE webpage}.
 Version 1.4 is recommended for better performance.
 
 @item GNU Make. 
 Check out
-@uref{ftp://ftp.gnu.org/gnu/make/,ftp://ftp.gnu.org/gnu/make/}.
+@uref{ftp://ftp.gnu.org/gnu/make/, the GNU
+make FTP directory}.
 
 @item Flex (version 2.5.4a or newer). 
-Check out @uref{ftp://ftp.gnu.org/pub/gnu/non-gnu/flex/,ftp://ftp.gnu.org/pub/gnu/non-gnu/flex/}.
+Check out @uref{http://www.gnu.org/software/flex/,the Flex webpage}.
 
 @item Bison (version 1.25 or newer).
-Check out @uref{ftp://ftp.gnu.org/gnu/bison/,ftp://ftp.gnu.org/gnu/bison/}.
+Check out @uref{http://www.gnu.org/software/bison/,the bison  webpage}
+
+@item TeX.
 
-@item 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.
+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.
 
-@item Texinfo (version 4.0 or newer). 
-Check out @uref{ftp://ftp.gnu.org/gnu/texinfo/,ftp://ftp.gnu.org/gnu/texinfo/}.
-Most documentation is in texinfo.
+@item Texinfo (version 4.0 or newer).
+The documentation of lily is written in texinfo.  Check out
+@uref{ftp://ftp.gnu.org/gnu/texinfo/,the texinfo FTP directory}.
 
 @item The geometry package for LaTeX is needed to use ly2dvi.  
-Available at 
-@uref{ftp://ftp.ctan.org/tex-archive/macros/latex/contrib/supported/geometry,ftp://ftp.ctan.org/tex-archive/macros/latex/contrib/supported/geometry}
-or at mirror site @uref{ftp://ftp.dante.de,ftp://ftp.dante.de}
+It is available at
+@uref{ftp://ftp.ctan.org/tex-archive/macros/latex/contrib/supported/geometry,the
+FTP directory for @code{geometry}}. This package is normally included
+with the @TeX{} distribution.
 
 @item MetaPost, needed for generating PostScript fonts. Please
 note that tetex-0.4pl8 (included with Red Hat 5.x) does not include
 @file{mfplain.mp}, which is needed for producing the scalable font
 files.
 
-If you do not want to use PostScript output, edit @file{mf/GNUmakefile},
-removing the line saying @code{PFA_FILES=}
+If you don't have MetaPost and don't want to use PostScript output, then
+edit @file{mf/GNUmakefile}, removing the line saying @code{PFA_FILES=}.
 
 @item kpathsea, a library for searching (TeX) files.  @code{kpathsea} is
 usually included with your installation of TeX. 
 
 @end itemize
 
-@section Running
+@section Running requirements
 
 GNU LilyPond does use a lot of resources. For operation you need the
 following software
 
 @itemize @bullet
 @item TeX.
-@item A PostScript printer and/or viewer (such as Ghostscript) is strongly
-    recommended.  Xdvi will show all embedded PostScript too if you have
-    Ghostscript installed.
-@item  GUILE 1.3.4, or newer.  Check out @uref{http://www.gnu.org/programs/guile.html,http://www.gnu.org/software/guile/}
+@item Xdvi and ghostscript
+@item GUILE 1.3.4, or newer.  Check out
+@uref{http://www.gnu.org/software/guile.html,the GUILE webpage}
 @end itemize
 
 For running LilyPond successfully you have to help TeX and MetaFont find
 various files.  The recommended way of doing so is adjusting the
 environment variables in the start-up scripts of your shell. Appropriate
-Csh and sh scripts are left in @file{buildscripts/out/lilypond-profile}
-and @file{buildscripts/out/lilypond-login} after compilation.
-
-The empty path component represents TeX and MetaFont's default search
-paths.  Scripts with the proper paths for the bourne and C-shell
-respectively are generated in @file{buildscripts/out/lilypond-profile}
-and @file{buildscripts/out/lilypond-login} during compilation.
+Csh and bourne sh scripts are left in
+@file{buildscripts/out/lilypond-profile} and
+@file{buildscripts/out/lilypond-login} after compilation.
 
 LilyPond is a big and slow program.  A fast CPU and plenty of RAM is
 recommended for comfortable use.
 
-@section Website
-
-The website is the most convenient form to use for reading the
-documentation on-line documentation. It is made by entering
+@section Website requirements
 
+The documentation comes in the form of a website. You can view this
+website on the internet, but you can also build it locally. This process
+requires a successful compile of lilypond. The website is built 
+by issuing
 @example 
 
   make web-doc
  
 @end example 
-This does require a functioning LilyPond.  The executable doesn't have
-to be installed, though.
 
-If you want to auto-generate Lily's website, you'll need some additional
-conversion tools.
+Building the website requires  some additional tools: 
 
 @itemize @bullet
-@item xpmtoppm (from the netpbm package: the Portable Bitmap Utilities) (For Red Hat Linux
-            users: it is included within the package libgr-progs).
+@item xpmtoppm (from the netpbm package: the Portable Bitmap Utilities).
        The original is at
-@uref{ftp://ftp.x.org/contrib/utilities/netpbm-1mar1994.p1.tar.gz,ftp://ftp.x.org/contrib/utilities/netpbm-1mar1994.p1.tar.gz}
+@uref{ftp://ftp.x.org/contrib/utilities/netpbm-1mar1994.p1.tar.gz,the
+netpbm FTP site}
 
-@item pnmtopng (also in libgr-progs for Red Hat). The original is
+@item pnmtopng. The original is
 at
-@uref{ftp://swrinde.nde.swri.edu/pub/png/applications/pnmtopng-2.37.2.tar.gz,ftp://swrinde.nde.swri.edu/pub/png/applications/pnmtopng-2.37.2.tar.gz}.i
-
-The version of @file{pnmtopng} that is distributed with Red Hat 5.1 and
-5.2 contains a bug: pnmtopng is dynamically linked to the wrong
-version of libpng.
+@uref{ftp://swrinde.nde.swri.edu/pub/png/applications/pnmtopng-2.37.2.tar.gz,in
+the pnmtopng FTP site}.
 
 @item @uref{http://www.lri.fr/~filliatr/ftp/bibtex2html/, Bibtex2html}, or
 @uref{http://www.uni-koblenz.de/ag-ki/ftp/bib2html/, Bib2html}.
@@ -162,107 +162,68 @@ see our hypertextified bibliography.
 
 @section Configuring and compiling
 
-to install GNU LilyPond, simply type:
+to install GNU LilyPond, type:
 @example 
        gunzip -c lilypond-x.y.z | tar xf -
        cd lilypond-x.y.z
-       ./configure             # fill in your standard prefix with --prefix
+       ./configure             # run with --help to see appropriate options
        make
        make install
+        sh buildscripts/clean-fonts.sh      
 @end example 
 
-This will install a number of files, something close to:
-
-@example 
-       /usr/local/man/man1/midi2ly.1
-       /usr/local/man/man1/abc2ly.1
-       /usr/local/man/man1/etf2ly.1
-       /usr/local/man/man1/convert-ly.1
-       /usr/local/man/man1/lilypond-book.1
-       /usr/local/man/man1/lilypond.1
-       /usr/local/bin/lilypond
-       /usr/local/bin/midi2ly
-       /usr/local/bin/convert-ly
-       /usr/local/bin/lilypond-book
-       /usr/local/bin/abc2ly
-       /usr/local/bin/pmx2ly
-       /usr/local/bin/musedata2ly
-       /usr/local/bin/etf2ly
-       /usr/local/share/lilypond/*
-       /usr/local/share/locale/@{....@}/LC_MESSAGES/lilypond.mo
-@end example 
+If you are doing an upgrade, you should remove all @file{feta}
+@code{.pk} and @file{.tfm} files.  A script has been provided to do the
+work for you, see @file{buildscripts/clean-fonts.sh}.
 
 
-The above assumes that you are root and have the GNU development
-tools, and your make is GNU make.  If this is not the case, you can
-adjust your environment variables to your taste:
-
+If you are not root, you should choose a @code{--prefix} argument that
+points into your home directory, eg.
 @example 
 
-       export CPPFLAGS="-I /home/me/my_include -DWEIRD_FOOBAR" 
-       ./configure
+       ./configure --prefix=$HOME/usr
  
 @end example 
 
-@code{CPPFLAGS} are the preprocessor flags. 
+In this case, you have to insert the contents of
+@code{buildscripts/out/lilypond-login} or
+@code{buildscripts/out/lilypond-profile} into your start up scripts by
+hand.
 
-The configure script is Cygnus configure, and it will accept
-@code{--help}. If you are not root, you will probably have to make it
-with a different @code{--prefix} option.  Our favourite location is
 
+
+@section Configuring for multiple platforms
+
+If you want to build multiple versions of LilyPond with different
+configuration settings, you can use the @code{--enable-config=CONF}
+option of configure.  You should use @samp{make conf=CONF} to generate
+the output in @file{out-CONF}.  Example: suppose I want to build with
+and without profiling.  Then I'd use the following for the normal build,
 @example 
 
-       ./configure --prefix=$HOME/usr
+      ./configure --prefix=~ --enable-checking
+      make
+      make install
 @end example 
 
-In this case, you will have to set up MFINPUTS, and TEXINPUTS accordingly.
-
-Since GNU LilyPond currently is beta, you are advised to also use
+and for the profiling version, I specify a different configuration.
 
 @example 
 
-       --enable-debugging
-       --enable-checking
-@end example 
-
-Options to configure include:
+      ./configure --prefix=~ --enable-profiling --enable-config=prof --disable-checking
+      make conf=prof
+      make conf=prof install
 
-@table @samp
-@item @code{--enable-printing}
-    Enable debugging print routines (lilypond @code{-D} option)
-@item @code{--enable-optimise}
-    Set maximum optimisation: compile with @code{-O2}.  This can be
-unreliable on some compiler/platform combinations (eg, DEC Alpha and PPC)
-@item @code{--enable-profiling}
-    Compile with support for profiling.
-@item @code{--enable-config=CONF}
-    Output to different configuration files.  Enables different binary
-    builds alongside eachother, eg, multi-configuration (debugging,
-    profiling), or multi-platform builds.  Use `make conf=CONF' to
-    build for a specific configuration.
-@end table
+@end example 
 
-All options are documented in the @file{configure} help
-The option @code{--enable-optimise} is recommended for Real Life usage.
 
-If you do
 
-@example 
 
-       make all
-@end example 
 
-everything will be compiled, but nothing will be installed.  The
-resulting binaries can be found in the subdirectories @file{out/} (which
-contain all files generated during compilation).
 
 
 @section Emacs mode
 
-
 An emacs mode for LilyPond is included with the source archive as
 @file{lilypond-mode.el} and @file{lilypond-font-lock.el}.  If you have
 an RPM, it is in @file{/usr/share/doc/lilypond-X/}.  You have to install
@@ -276,61 +237,18 @@ Add this to your ~/.emacs or ~/.emacs.el:
     (add-hook 'LilyPond-mode-hook (lambda () (turn-on-font-lock)))
 @end example
 
-If you have the latest LilyPond-1.3.x Debian package, LilyPond-mode
-is automatically loaded, so you need not modify your ~/.emacs file.
-
-
-@section Configuring for multiple platforms
-
-If you want to build multiple versions of LilyPond with different
-configuration settings, you can use the @code{--enable-config=CONF}
-option.  You should use @samp{make conf=CONF} to generate the output in
-@file{out-CONF}.  Example: suppose I want to build with and without
-profiling.  Then I'd use the following for the normal build,
-
-@example 
-
-      ./configure --prefix=~ --disable-optimise --enable-checking
-      make
-      make install
-      
-@end example 
-
-and for the profiling version, I specify a different configuration.
-
-@example 
-
-      ./configure --prefix=~ --enable-profiling --enable-config=prof --enable-optimise --disable-checking
-      make conf=prof
-      make conf=prof install
-
-@end example 
-
-
-@section Installing
-
-if you have done a successful @code{make}, then a simple
-
-@example 
-
-       make install
-@end example 
-
-should do the trick.
-
-If you are doing an upgrade, please remember to remove obsolete
-@file{.pk} and @file{.tfm} files of the fonts.  A script has been
-provided to do the work for you, see @file{bin/clean-fonts.sh}.
+If you have the latest LilyPond-1.3.x Debian package, LilyPond-mode is
+automatically loaded, so you need not modify your @code{~/.emacs} file.
 
 
 @section Red Hat Linux
 
-Red Hat Linux users can compile an RPM.  A spec file is in
-@file{make/out/lilypond.spec}; it is distributed along with the
-sources.
+Red Hat 7.0 i386 RPMS are available from
+@uref{ftp://ftp.cs.uu.nl/pub/GNU/LilyPond/RedHat/}.
 
-You can make the rpm by issuing
+You can also compile them yourself.  A spec file is in
+@file{make/out/lilypond.spec}. This file is distributed along with the
+sources.  You can make the rpm by issuing
 @example 
 
        rpm -tb lilypond-x.y.z.tar.gz
@@ -338,20 +256,12 @@ You can make the rpm by issuing
  
 @end example 
 
-Precompiled Red Hat 7.0 i386 RPMS are available from
-@uref{ftp://ftp.cs.uu.nl/pub/GNU/LilyPond/RedHat/}.
+For running on a Red Hat system you need these packages: guile, tetex,
+tetex-dvips, libstdc++, python, ghostscript.
 
-For compilation on a Red Hat system you need these packages,
-in addition to the those needed for running:
-@itemize @bullet
-@item glibc-devel
-@item libstdc++-devel
-@item guile-devel
-@item flex
-@item bison
-@item texinfo
-@item tetex-devel
-@end itemize
+For compilation on a Red Hat system you need these packages, in addition
+to the those needed for running: glibc-devel, gcc-c++, libstdc++-devel,
+guile-devel, flex, bison, texinfo, tetex-devel, groff, libgr-progs.
 
 @section SuSE
 
@@ -360,6 +270,10 @@ in addition to the those needed for running:
 Install @code{tetex}, @code{te_mpost}, @code{te_kpath}.
 
 
+@section Mandrake
+
+[TODO]
+
 @section Debian GNU/Linux
 
 A Debian package is also available.  You may install it easily by using
@@ -444,80 +358,15 @@ interfere with your build, you may want to do this before the build too:
 @end example
 
 
-@section Windows NT/95
-
-Separate instructions on building for W32 are available; See the files
-in @file{Documentation/ntweb/}, included with the sources.
 
 @section Problems
 
 For help and questions use @email{help-gnu-music@@gnu.org} and
 @email{gnu-music-discuss@@gnu.org}.  Please consult the faq before
-mailing your problems.
-
-If you find bugs, please send bug reports to
+mailing your problems.  If you find bugs, please send bug reports to
 @email{bug-gnu-music@@gnu.org}.
 
-Bugs that are LilyPond's fault are listed in our TODO list on the
-web, or demonstrated in @file{input/bugs/}.
-
-Bugs that are not LilyPond's fault are documented here.
-
-
-@unnumbered LinuxPPC Bugs:
-
-@itemize @bullet
-@item egcs-1.1.2-12c (stock LinuxPPC R5) has a serious bug, upgrade to 
-fixed in egcs-1.1.2-12f or gcc-2.95-0a, @uref{ftp://dev.linuxppc.org/users/fsirl/R5/RPMS/ppc/}
-
-@item egcs-1.0.2 (LinuxPPC R4):
-all compiling with @code{-O2} is suspect, in particular guile-1.3, and
-Lily herself will break.
-@end itemize
-
-
-
-@unnumbered Linux-i386
-
-@itemize @bullet
-@item SuSE6.2 and similar platforms (glibc 2.1, libstdc++ 2.9.0)
-
-Lily will crash during parsing (which suggests a C++ library
-incompatibility).  Precise cause, precise platform description or
-solution are not known.
-
-Note that this only happens on some computers with the said platform.
-
-@item libg++ 2.7
-
-LilyPond occasionally crashes while parsing the initialisation files.
-This is a very obscure bug, and usually entering the commandline
-differently "fixes" it.
-
-@example
-       lilypond input.ly 
-@end  example
-
-and
-@example
-       lilypond -I. ./input.ly 
-@end example
-makes a difference
-
-Typical stacktrace:
-@example
-       SIGSEGV
-       __libc_malloc (bytes=16384)
-       ?? ()
-       yyFlexLexer::yy_create_buffer ()
-       Includable_lexer::new_input (this=0x8209a00, s=@{strh_ = @{
-@end example
-
-This behaviour has been observed with machines that have old libg++
-versions (LinuxPPC feb '98, Red Hat 4.x).  
-@end itemize
-
-
+Bugs that are not fault of LilyPond are documented here.
 
 
 @unnumbered Solaris:
index 5c0af13b71a101030df496b32511e663acf99b99..c10fa8db2add931b92c8877d76242eac1cf040cf 100644 (file)
@@ -26,7 +26,8 @@ problem with it, upgrade to the latest 1.3.x release.
 @section Requirements
 
 For the compilation and running of LilyPond you need some additional
-packages.  Please refer to the installation instructions.
+packages.  Please refer to the installation instructions in
+@file{INSTALL.txt}.
 
 NOTE: If you downloaded a binary (.rpm or a W95/NT .zip file),
 you don't have to compile LilyPond.
@@ -38,50 +39,47 @@ in the toplevel directory, as INSTALL.txt
 
 @section Documentation
 
-The real documentation is the directory Documentation/
-
-If you want to read the documentation online, these are options:
+The documentation is available online at
+@uref{http://www.cs.uu.nl/~hanwen/lilypond/index.html}.  You can also
+build it locally. This does require a working LilyPond binary.  The
+following formats are supported:
 @itemize @bullet
 
-@item  use HTML. Refer to INSTALL.txt for information
+@item HTML. Refer to INSTALL.txt for information
 on how to make the HTML documentation.
 
-@item  use HTML. Point your browser to
-@uref{http://www.cs.uu.nl/~hanwen/lilypond/index.html}.
-@item use @file{.dvi},  for the tutorial and reference manual. Do
-
+@item @file{.dvi},  for the tutorial and reference manual. Do
 @example 
-  make -C Documentation/user/ dvi 
-@end example 
 
-You need a working LilyPond binary to create the DVI and HTML sources.
+ make -C Documentation/user/ dvi 
 
-@item  use ASCII. Do
-using @example 
-       make doc
 @end example 
+The printable documentation is left in @file{Documentation/user/out/}.
+
+@item paper. Create the .dvi documentation, and print it with dvips.
 
 @end itemize
 
 
 @section Comments
 
-LilyPond is a long way from finished and polished.  We do appreciate
-criticism, comments, bugreports, patches, etc., but please,
-@example 
+LilyPond is a long way from finished and polished, so we please send
+your criticism, comments, bugreports, patches, etc., to the mailing
+list.  and @emph{not} to us personally.
 
-          Please send your e-mail to one of the MAILING LISTS
-@end example 
-
-and @emph{not} to us personally. We have the following mailing lists:
+We have the following mailing lists:
 
 @itemize @bullet
 @item @uref{http://mail.gnu.org/mailman/listinfo/info-gnu-music,info-gnu-music@@gnu.org}
 is a low-volume list for information on the GNU Music project.
     This list is moderated; ask 
     @email{drl@@gnu.org, David R. Linn} or
-    @email{hanwen@@cs.uu.nl, Han-Wen} to send announcements for this list.
+    @email{hanwen@@cs.uu.nl, Han-Wen} to send announcements for this
+list.
+@item
+@uref{http://mail.gnu.org/mailman/listinfo/gnu-music-discuss,gnu-music-discuss@@gnu.org}
+  For general discussions concerning LilyPond.
+
 @item @uref{http://mail.gnu.org/mailman/listinfo/help-gnu-music,help-gnu-music@@gnu.org}
     For help with using LilyPond.
 @item @uref{http://mail.gnu.org/mailman/listinfo/bug-gnu-music,bug-gnu-music@@gnu.org}
@@ -96,9 +94,6 @@ If you have received this file as part of a DOS/Window32 distribution
 source package, since it might contain more documentation
 @uref{ftp://ftp.cs.uu.nl/pub/GNU/LilyPond/}
 
-If you decide to build LilyPond from source, please read the INSTALL.txt
-document first, especially the Windows NT/95 section.
-
 @section Caveats
 
 If you have installed a previous version, be sure to remove old font
index 3a0d9429d1c15c43ac16584d2fc25b6839d5481a..3b319027701ff34f3e7dba924847aa6e787e71f6 100644 (file)
@@ -1,4 +1,4 @@
-\input texinfo @c -*-texinfo-*-
+i\input texinfo @c -*-texinfo-*-
 @setfilename index.info
 @settitle LilyPond homepage
 
@@ -10,9 +10,6 @@
 <img src="Documentation/pictures/out-www/lelie-logo.png" alt="[logo]">
 @end html
 
-@c @unnumberedsec LilyPond -- The GNU Project Music Typesetter
-
-@c something breaks on 3.12 f
 
 @unnumberedsec What is LilyPond?
 
@@ -29,21 +26,19 @@ The input to LilyPond is plain text. So, you can use your favorite text
 editor to enter it, you can put it in mail or embed it in an article like
 this:
 
-@quotation
+
 @lilypond[fragment,verbatim]
 \relative c'' { \key c \minor; r8 c16 b c8 g as c16 b c8 d | g,4 }
 @end lilypond 
-@end quotation
 
 The output looks very good: the font and the layout algorithms were
 inspired by engraved music, so you can expect that same clear and
 elegant look from your LilyPond output.  And if you don't like the
 looks, you can tweak almost everything.
 
-The program also has limited MIDI functionality: you can write MIDI files with
-lilypond, and we have a simple MIDI to lilypond conversion tool,
-@file{midi2ly}. Conversion tools for PMX, MUP, ABC, Finale and Musedata are
-also included.
+The program also has limited MIDI functionality: you can write MIDI
+files with lilypond. You can also import files in PMX, MUP, MIDI, ABC,
+Finale and Musedata format.
 
 LilyPond is free software. It is licensed under GNU General Public
 License, so you can use, modify and redistribute the program with
index d10a4d3a53d82ca2a8c4e11cd1da53b2af7478bb..604aa0f67a6ca978209d2d27c2f05be3c2c84407 100644 (file)
@@ -7,8 +7,16 @@
 @c @evenheading @thispage @| @| 
 @c @oddheading @| @| @thispage @|
 
-@itemize 
+@ignore
+ glossary by Christian Mondrup
+
+ spanish by David González <dgonzal@quanta.net.py> 
+
+@end ignore
 
+
+@itemize 
+@item ES - Spanish
 @item I - Italian 
 @item F - French 
 @item D - German 
@@ -38,15 +46,16 @@ A reference is indicated by @ar{} followed by the term in @strong{boldface}.
 @table @strong
 
 @item A
-I: la, F: la,  D: A, a, NL: a, DK: a, S: a, N: a.
+ES: la
+: la, F: la,  D: A, a, NL: a, DK: a, S: a, N: a.
 
 @item accent
-I: accento, F: accent, D: Akzent, NL: accent, DK: accent, S: accent, N: 
+ES: acento, I: accento, F: accent, D: Akzent, NL: accent, DK: accent, S: accent, N: 
 
 The stress of one tone over others.
 
 @item accidental
-I: alterazione, accidente, F: alt@'eration accidentelle, D: Vorzeichen,
+ES: alteración, I: alterazione, accidente, F: alt@'eration accidentelle, D: Vorzeichen,
 Versetzungszeichen, NL: voorteken, DK: l@o{}st fortegn, S: tillf@"alligt 
 f@"ortecken, N:
 
@@ -71,15 +80,15 @@ accidental.
   g!1_"natural" s2
 }
 @end lilypond
-@item accelerando 
-I: accelerando, F: accelerando, en acc@'el@'erant, D: accelerando, Schneller,
+@item accelerando
+ES: acelerando, I: accelerando, F: accelerando, en acc@'el@'erant, D: accelerando, Schneller,
 NL: accelerando, DK: accelerando, S: accelerando, N:
 
 Still faster tempo.
 
 
 @item adagio
-I: adagio, F: adagio, lent, D: Adagio, Langsam, NL: adagio, DK: adagio, S:
+ES: adagio, I: adagio, F: adagio, lent, D: Adagio, Langsam, NL: adagio, DK: adagio, S:
 adagio, N: adagio.
 
 It. comfortable, easy. 1. Slow tempo, slower - especially in even meter - than
@@ -88,14 +97,14 @@ movement in slow tempo, esepecially the scond (slow) movement of
 @w{@ar{}@strong{sonata}s}, symphonies etc.
 
 @item allegro
-I: allegro, F: allegro, D: Allegro, Schnell, Fr@"ohlich, Lustig, NL: allegro,
+ES: allegro, I: allegro, F: allegro, D: Allegro, Schnell, Fr@"ohlich, Lustig, NL: allegro,
 DK: allegro, S: allegro, N: allegro.
 
 It. cheerful. Quick tempo. Also used as a title for pieces in a quick tempo,
 especially the first and last movements of a @w{@ar{}@strong{sonata}}.
 
 @item alto
-I: contralto, F: alto, D: Alt, NL: alt, DK: alt, S: alt, N: alt.
+ES: alto, I: contralto, F: alto, D: Alt, NL: alt, DK: alt, S: alt, N: alt.
 
 A female voice of low range (@emph{contralto}). Originally the alto was a high
 male voice (hence the name) which by the use of falsetto reached the height of
@@ -103,7 +112,7 @@ the female voice. This type of voice is also known as @w{@ar{}@strong{counter
 tenor}}.
 
 @item alto clef
-I: chiave di contralto, F: clef d'ut troisi@`eme ligne, D: Altschl@"ussel,
+ES: clave de do en tercera, I: chiave di contralto, F: clef d'ut troisi@`eme ligne, D: Altschl@"ussel,
 Bratschenschl@"ussel, NL: alt sleutel, DK: altn@o{}gle, S: altklav, N:
 
 C clef setting central C on the middle line of the staff 
@@ -122,13 +131,13 @@ a1 b c d e f g a }
 @end lilypond
 
 @item andante
-I: andante, F: andante, D: Andante, NL: andante, DK: andante, S: andante,
+ES: andante, I: andante, F: andante, D: Andante, NL: andante, DK: andante, S: andante,
 N: andante. 
 
 walking tempo/character
 
-@item appoggiatura 
-I: appoggiatura, F: appogiature, (port de voix), D: Vorschlag, NL: voorslag,
+@item appoggiatura
+ES: apoyatura, I: appoggiatura, F: appogiature, (port de voix), D: Vorschlag, NL: voorslag,
 DK: forslag, S: f@"orslag, N:
 
 Ornamental note, usually a second, that is melodically connected with the main
@@ -178,7 +187,7 @@ An appoggiatura may have more notes preceding the main note.
 @end lilypond
 
 @item arpeggio
-I: arpeggio, F: arp@`ege, D: Arpeggio, Akkordbrechungen, gebrochener
+ES: arpegio, I: arpeggio, F: arp@`ege, D: Arpeggio, Akkordbrechungen, gebrochener
 Akkord, NL: gebroken akoord, DK: arpeggio, akkordbrydning, S: arpeggio, N:
 
 @
@@ -204,13 +213,13 @@ Akkord, NL: gebroken akoord, DK: arpeggio, akkordbrydning, S: arpeggio, N:
 @end lilypond
 
 @item ascending interval
-I: intervallo ascendente, F: intervalle ascendant, D: steigendes Intervall,
+ES: Intervalo ascendente, I: intervallo ascendente, F: intervalle ascendant, D: steigendes Intervall,
 NL: stijgend interval, DK:@w{ }stigende interval, S: stigande intervall, N:
 
 A distance between a starting lower note and a higher ending note.
 
 @item augmented interval
-I: intervallo aumentato, F: intervalle augment@'e, D: @"uberm@"a@ss{}iges
+ES: intervalo aumentado, I: intervallo aumentato, F: intervalle augment@'e, D: @"uberm@"a@ss{}iges
 Intervall, NL: overmatig interval, DK: forst@o{}rret interval, S:
 @"overstigande intervall, N:
 
@@ -226,26 +235,27 @@ straightedge ruler and T-square, which attempts to emulate
 engraving. This required more skill than did engraving.
 
 @item B
-I: si, F: si,  D: H, h, NL: b, DK: h, S: h, N: h.
+ES: si, I: si, F: si,  D: H, h, NL: b, DK: h, S: h, N: h.
 
 @item backfall; forefall 
 @w{@ar{}@strong{appoggiatura}}
 
 @item bar line
-I: stanghetta, barra (di divisione), F: barre (de mesure), D: Taktstrich, NL:
+ES: , I: stanghetta, barra (di divisione), F: barre (de mesure), D: Taktstrich, NL:
 maatstreep, DK: taktstreg, S: taktstreck, N:
 
 @item bar
-@w{@ar{}@strong{measure}}
+ES: compás, @w{@ar{}@strong{measure}}
 
 @item baritone
-I: baritono, F: bariton, D: Bariton, NL: bariton, DK: baryton, S: baryton, N:
+ES: barítono, I: baritono, F: bariton, D: Bariton, NL: bariton, DK: baryton, S: baryton, N:
 baryton.
 
 The male voice intermediate between the @w{@ar{}@strong{bass}} and the
 @w{@ar{}@strong{tenor}}.
 
 @item baritone clef
+ES:  clave de fa en tercera
 I: chiave di baritono, F: clef de ut cinqui@`eme ligne, clef de troisi@`eme
 ligne, D: Barytonschl@"ussel, NL: baritonsleutel, DK: barytonn@o{}gle, S:
 barytonklav, N: .
@@ -254,7 +264,7 @@ C or F clef setting central C on the upper staff line. @w{@ar{}@strong{c clef}}
 @w{@ar{}@strong{f clef}}
 
 @item bass clef
-I: chiave di basso, F: cl@'e de fa quatri@`eme ligne, D: Bass-Schl@"ussel, NL:
+ES: clave de fa en cuarta, I: chiave di basso, F: cl@'e de fa quatri@`eme ligne, D: Bass-Schl@"ussel, NL:
 bassleutel, DK: basn@o{}gle, S: basklav, N:
 
 A clef setting with central C on the first top ledger line. @w{@ar{}@strong{f
@@ -286,7 +296,7 @@ beams determine the note value of the connected notes.
 @end lilypond
 
 @item beat
-I: tempi, F: temps, D: Taktschlag, Zeit (im Takt), NL: tel, DK: (takt)slag, S:
+ES: tiempo, I: tempi, F: temps, D: Taktschlag, Zeit (im Takt), NL: tel, DK: (takt)slag, S:
 taktslag, N:
 
 Note value used for counting, most often half-, fourth- and eighth notes. The
@@ -307,6 +317,7 @@ start of the music.
 @w{@ar{}@strong{tie}}
 
 @item brace
+ES:  llave, corchete
 I: graffa, F: accolade, D: Klammer, Klavierklammer, Akkolade, Chorklammer, NL:
 accolade, teksthaak, DK: klamme, S: klammer, N:
 
@@ -328,7 +339,7 @@ orchestral or choral score.
 @end lilypond
 
 @item brass
-I: ottoni, D: Blechbl@"aser, NL: koper (blazers), F: cuivres,
+ES: metales, I: ottoni, D: Blechbl@"aser, NL: koper (blazers), F: cuivres,
 DK: messingbl@ae{}sere, S: brassinstrument, m@"assingsinstrument, N:
 
 A family of blown musical instruments made of brass all using a cup formed
@@ -343,7 +354,7 @@ vejrtr@ae{}kningstegn, S: andningstecken, N: .
 Indication of where to breathe in vocal and wind instrument parts.
 
 @item breve
-I: breve, F: br@`eve, D: Brevis, NL: brevis, DK: brevis, S: brevis, N:
+ES: breve, I: breve, F: br@`eve, D: Brevis, NL: brevis, DK: brevis, S: brevis, N:
 
 @w{@ar{}@strong{Note value}} twice as long as a whole note. Mainly used
 in pre-1650 music.
@@ -356,10 +367,10 @@ in pre-1650 music.
 @end lilypond
 
 @item C
-I: do, F: ut,  D: C, c, NL: c, DK: c, S: c, N: c
+ES: do, I: do, F: ut,  D: C, c, NL: c, DK: c, S: c, N: c
 
 @item C clef
-I: chiave di do, F: cl@'e d'ut, D: C-Schl@"ussel, NL: C-sleutel, DK:
+ES: Clave de do, I: chiave di do, F: cl@'e d'ut, D: C-Schl@"ussel, NL: C-sleutel, DK:
 c-n@o{}gle, S: c-klav, N:
 
 Clef symbol indicating the position of the central C. Used on all note
@@ -384,13 +395,13 @@ lines.
 }
 @end lilypond
 
-@item cadence 
-I: cadenza, F: cadence, D: Kadenz, NL: cadens, DK: kadence, S: kadens, N: .
+@item cadence
+ES: cadencia, I: cadenza, F: cadence, D: Kadenz, NL: cadens, DK: kadence, S: kadens, N: .
 
 @w{@ar{}@strong{harmonic cadence}} @w{@ar{}@strong{functional harmony}}
 
 @item cadenza
-I: cadenza, F: cadence, D: Kadenz, NL: cadens, DK: kadence, S: kadens, N: .
+ES: cadenza, I: cadenza, F: cadence, D: Kadenz, NL: cadens, DK: kadence, S: kadens, N: .
 
 An extended, improvisatory style section inserted near the end of
 movement. The purpose of a cadenza is to give the singer or player a chance to
@@ -399,12 +410,12 @@ the middle of the 19'th century, however, most cadences have been written down
 by the composer.
 
 @item canon
-I: canone, F: canon, D: Kanon, NL: canon, DK: kanon, S: kanon, N: .
+ES: canon, I: canone, F: canon, D: Kanon, NL: canon, DK: kanon, S: kanon, N: .
 
 @w{@ar{}@strong{counterpoint}}
 
 @item cent
-I: cent, F: cent, D: Cent, NL: cent, DK: cent, S: cent, N: .
+ES: cent, I: cent, F: cent, D: Cent, NL: cent, DK: cent, S: cent, N: .
 
 Logarithmic unit of measurement. 1 cent is 1/1200 of an octave (1/100 of an
 equally tempered @w{@ar{}@strong{semitone}}) @w{@ar{}@strong{equal temperament}}
@@ -413,7 +424,7 @@ equally tempered @w{@ar{}@strong{semitone}}) @w{@ar{}@strong{equal temperament}}
 @w{@ar{}@strong{middle C}}
 
 @item chord
-I: accordo, F: accord, D: Akkord, NL: akkoord, DK: akkord, S: ackord, N: .
+ES: acorde, I: accordo, F: accord, D: Akkord, NL: akkoord, DK: akkord, S: ackord, N: .
 
 Three or more tones sounding simultaneously. In traditional European music the
 base chord is a @emph{triad} consisting of 2 thirds. @emph{Major} (major +
@@ -442,7 +453,7 @@ chords are denoted open chords
 @end lilypond
 
 @item chromatic scale
-I: scala cromatica, F: gamme chromatique, D: Chromatische Tonleiter, NL:
+ES: escala cromática, I: scala cromatica, F: gamme chromatique, D: Chromatische Tonleiter, NL:
 chromatische toonladder, DK: kromatisk skala, S: kromatisk skala, N: .
 
 A scale consisting of all 11 @w{@ar{}@strong{semitone}}s.
@@ -455,19 +466,19 @@ A scale consisting of all 11 @w{@ar{}@strong{semitone}}s.
 @end lilypond
 
 @item chromaticism
-I: cromatismo, F: chromatisme, D: Chromatik, NL: chromatiek, DK: kromatik, S:
+ES: cromatismo, I: cromatismo, F: chromatisme, D: Chromatik, NL: chromatiek, DK: kromatik, S:
 kromatik, N:
 
 Use of tones extraneous to a @w{@ar{}@strong{diatonic scale}} (minor, major).
 
-@item church mode; ecclesiastical mode 
-I: modo ecclesiastico, F: mode eccl@'esiastique, D: Kirchentonart, NL:
+@item church mode; ecclesiastical mode ES: modo eclesiástico, I: modo
+ecclesiastico, F: mode eccl@'esiastique, D: Kirchentonart, NL:
 kerktoonladder, DK: kirketoneart, S: kyrkotonart, N:
 
 @w{@ar{}@strong{diatonic scale}}
 
 @item clef
-I: chiave, F: cl@'e, clef, D: Schl@"ussel, Schl@"ussel, Notenschl@"ussel, NL:
+ES: clave, I: chiave, F: cl@'e, clef, D: Schl@"ussel, Schl@"ussel, Notenschl@"ussel, NL:
 sleutel, DK: n@o{}gle, S: klav, N:
 
 @w{@ar{}@strong{c clef}} @w{@ar{}@strong{f clef}} @w{@ar{}@strong{g clef}}
@@ -482,7 +493,7 @@ derived from some other tuning method. @w{@ar{}@strong{temperament}}
 @w{@ar{}@strong{meter}}
 
 @item compound interval
-I: intervallo composto, F: intervalle compos@'e, D: Weites Intervall(?), NL:
+ES: intervalo compuesto, I: intervallo composto, F: intervalle compos@'e, D: Weites Intervall(?), NL:
 samengesteld interval, DK: sammensat interval, S: sammansatt intervall, N: .
 
 Intervals larger than an octave
@@ -497,7 +508,7 @@ komplement@"arintervall (?), N:
 @w{@ar{}@strong{inverted interval}}
 
 @item conjunct movement
-I: moto congiunto, F: mouvement conjoint, D: schrittweise/stufenweise
+ES: movimiento conjunto, I: moto congiunto, F: mouvement conjoint, D: schrittweise/stufenweise
 Bewegung, NL: , DK: trinvis bev@ae{}gelse, S: stegvis r@"orelse, N:
 
 Melody moving in the narrow steps of the scale;
@@ -509,19 +520,19 @@ Melody moving in the narrow steps of the scale;
 \notes\relative c'' { g4 g g a | b2 a | g4 b a a | g1 \bar "||"; }
 @end lilypond
 
-@item consonance 
-I: consonanza, F: consonance, D: Konsonanz, NL: consonant, DK: konsonans, S:
+@item consonance
+ES: consonancia, I: consonanza, F: consonance, D: Konsonanz, NL: consonant, DK: konsonans, S:
 konsonans, N:
 
 @w{@ar{}@strong{harmony}}
 
 @item contralto
-I: contralto, F: contralto, D: Alt, NL: contralto, DK: alt, S: alt, N:
+ES: contralto, I: contralto, F: contralto, D: Alt, NL: contralto, DK: alt, S: alt, N:
 
 @w{@ar{}@strong{alto}}
 
-@item counterpoint 
-I: contrappunto, F: contrepoint, D: Kontrapunkt, NL: contrapunt, DK:
+@item counterpoint
+ES: contrapunto, I: contrappunto, F: contrepoint, D: Kontrapunkt, NL: contrapunt, DK:
 kontrapunkt, S: kontrapunkt, N: .
 
 From latin @emph{punctus contra punctum}, note against note. The combination
@@ -572,7 +583,7 @@ composition methods.
 @end lilypond
 
 @item counter tenor
-I: controtenore, F: contre-tenor, D: Kontratenor, NL: contratenor, DK:
+ES: contratenor, I: controtenore, F: contre-tenor, D: Kontratenor, NL: contratenor, DK:
 kontratenor, S: kontratenor, counter tenor, N: kontratenor
 
 @w{@ar{}@strong{contralto}}
@@ -585,7 +596,7 @@ methods were superior and could well be adopted by music typesetters. This
 required more skill than engraving.
 
 @item crescendo
-I: crescendo, F: crescendo, D: Crescendo, Lauter, NL: crescendo, DK:
+ES: crescendo, I: crescendo, F: crescendo, D: Crescendo, Lauter, NL: crescendo, DK:
 crescendo, S: crescendo, N:@w{ }crescendo.
 
 Increasing volume. Indicated by a rightwards opening horizontal wedge or the
@@ -599,24 +610,24 @@ abbreviation "cresc.".
 @end lilypond
 
 @item cue-notes
-I: notine, F: petites notes pr@'ec@'edent l'entr@'ee d'in instrument,
+ES: notas guia, I: notine, F: petites notes pr@'ec@'edent l'entr@'ee d'in instrument,
 r@'eplique, D: Stichnoten, NL: stichnoten, DK: stiknoder, S: inprickningar, N:
 
 In a separate part notes belonging to another part with the purpose of hinting
 when to start playing.  Usually printed in a smaller type.
 
 @item D
-I: re, F: r@'e, D: D, d, NL: d, DK: d, S: d, N: d
+ES: Re, I: re, F: r@'e, D: D, d, NL: d, DK: d, S: d, N: d
 
-@item da capo 
-I: da capo, F: da capo, depuis le commencement, D: da capo, von Anfang, NL: da
+@item da capo
+ES: da capo, I: da capo, F: da capo, depuis le commencement, D: da capo, von Anfang, NL: da
 capo, DK: da capo, S: da capo, N: .
 
 The term indicates repetition of the piece from the beginning to the end or to
 a certain place marked @emph{fine}. Mostly abbreviated D.C.
 
 @item dal segno
-I: dal segno, F: dal segno, depuis le signe, D: dal segno, NL: dal segno, DK:
+ES: dal segno, I: dal segno, F: dal segno, depuis le signe, D: dal segno, NL: dal segno, DK:
 dal segno, S: dal segno, N: .
 
 abbreviated d.s. Repetition, not from the beginning, but from another place
@@ -631,7 +642,7 @@ frequently near the beginning marked by a sign:
 @end lilypond
 
 @item decrescendo
-I: decrescendo, D: Decrescendo, Leiser, NL: decrescendo, DK: decrescendo, S:
+ES: decrescendo, I: decrescendo, D: Decrescendo, Leiser, NL: decrescendo, DK: decrescendo, S:
 decrescendo, N: decrescendo
 
 Decreasing tone volume. Indicated by a leftwards opening horizontal wedge  
@@ -645,14 +656,14 @@ or the abbreviation "decresc.".
 @end lilypond
 
 @item descending interval
-I: intervallo discendente, F: intervalle descendant, D: fallendes Intervall,
+ES: intervalo descendente, I: intervallo discendente, F: intervalle descendant, D: fallendes Intervall,
 absteigendes Intervall, NL: dalend interval, DK:@w{ }faldende interval, S:
 fallande intervall, N:
 
 An distance between a starting higher note and a lower ending note.
 
 @item diatonic scale
-I: scala diatonica, F: gamme diatonique, D: diatonische Tonleiter, NL:
+ES: escala diatónica, I: scala diatonica, F: gamme diatonique, D: diatonische Tonleiter, NL:
 diatonische toonladder, DK: diatonisk skala, S: diatonisk skala, N:
 
 A scale consisting of 5 @w{@ar{}@strong{whole tones}} and 2
@@ -830,20 +841,20 @@ harmonic minor scale type an augmented second (A) occurs between the 6th and
 @end lilypond
 
 @item diminished interval
-I: intervallo diminuito, F: intervalle diminu@'e, D: vermindertes Intervall,
+ES: intervalo disminuído, I: intervallo diminuito, F: intervalle diminu@'e, D: vermindertes Intervall,
 NL: verminderd interval, DK: formindsket interval, S: f@"orminskat
 intervall, N: .
 
 @w{@ar{}@strong{interval}}
 
 @item diminuendo
-I: diminuendo, F: diminuendo, D: Diminuendo, NL: diminuendo, DK: diminuendo,
+ES: diminuendo, I: diminuendo, F: diminuendo, D: Diminuendo, NL: diminuendo, DK: diminuendo,
 S:@w{ }diminuendo, N:@w{ }diminuendo.
 
 @w{@ar{}@strong{decrescendo}}
 
 @item disjunct movement
-I: moto disgiunto, F: mouvement disjoint, D:
+ES: movimiendo disjunto, I: moto disgiunto, F: mouvement disjoint, D:
 sprunghafte Bewegung, NL: , DK: springende bev@ae{}gelse, S: hoppande
 r@"orelse, N:
 
@@ -861,6 +872,7 @@ scale. Opposite of @ar{}@strong{conjunct movement}.
 @end lilypond
 
 @item dissonant interval; dissonance
+ES: intervalo disonante, disonancias,
 I: intervallo dissonante, dissonanza, F: dissonance, D: Dissonanz, NL:
 dissonant interval; dissonant, DK: dissonerende interval, dissonans, S:
 dissonans, N: .
@@ -875,38 +887,38 @@ dominantnoneakkord, S: dominantnonackord, N: .
 @w{@ar{}@strong{chord}} @w{@ar{}@strong{functional harmony}}
 
 @item dominant seventh chord
-I: accordo di settima di dominante, F: accord de septi@`eme dominante, D:
+ES: acorde de séptima de dominante, I: accordo di settima di dominante, F: accord de septi@`eme dominante, D:
 Dominantseptakkord, NL: dominant septiem akkoord, DK: dominantseptimakkord, S:
 dominantseptimackord, N:
 
 @w{@w{@ar{}@strong{chord}} @ar{}@strong{functional harmony}}
 
 @item dominant
-I: dominante, F: dominante, D: Dominante, NL: dominant, DK: dominant, S:
+ES: dominante, I: dominante, F: dominante, D: Dominante, NL: dominant, DK: dominant, S:
 dominant, N: .
 
 The fifth @w{@ar{}@strong{scale degree}} @w{@ar{}@strong{functional harmony}}
 
 @item dorian mode
-I: modo dorico, F: mode dorien, D: Dorischer Kirchenton, NL: dorische
+ES: modo dórico, I: modo dorico, F: mode dorien, D: Dorischer Kirchenton, NL: dorische
 toonladder, dorischer Kirchenton, DK: dorisk skala, S: dorisk tonart, N:
 
 @w{@ar{}@strong{diatonic scale}}
 
 @item dot (augmentation dot)
-I: punto (di valore), F: point, D: Punkt (Verl@"angerungspunkt), NL: punt, DK:
+ES: puntillo, I: punto (di valore), F: point, D: Punkt (Verl@"angerungspunkt), NL: punt, DK:
 punkt, S: punkt, N:
 
 @w{@ar{}@strong{dotted note}}
 
 @item dotted note
-I: nota puntata, F: note point@'ee, D: punktierte Note, NL: gepuncteerde noot,
+ES: nota con puntillo, I: nota puntata, F: note point@'ee, D: punktierte Note, NL: gepuncteerde noot,
 DK: punkteret node, S: punkterad not, N:
 
 @w{@ar{}@strong{note value}}
 
 @item double appoggiatura
-I: appoggiatura doppia, F: appoggiature double, D: doppelter Vorschlag, NL:
+ES: apoyatura doble, I: appoggiatura doppia, F: appoggiature double, D: doppelter Vorschlag, NL:
 dubbele voorslag, DK: dobbelt forslag, S: dubbelslag, N:
 
 @w{@ar{}@strong{appoggiatura}}
@@ -918,44 +930,44 @@ dobbeltstreg, S: dubbelstreck, N: .
 Indicates the end of a section within a movement.
 
 @item double dotted note
-I: nota doppiamente puntata, F: note doublement point@'ee, D:
+ES: nota con dos puntillos, I: nota doppiamente puntata, F: note doublement point@'ee, D:
 doppel-punktierte Note, NL: dubbelgepuncteerde noot, DK:
 dob@-belt@-punk@-te@-ret node, S: dub@-bel@-punk@-te@-rad not, N: .
 
 @w{@ar{}@strong{note value}}
 
 @item double flat
-
+ES: doble bemol, 
 I: doppio bemolle, F: double b@'emol, D: Doppel-B, NL: dubbelmol, 
 DK:@w{ }dob@-belt-b, S: dubbelbe, N: .
 
 @w{@ar{}@strong{accidental}}
 
 @item double sharp
-I: doppio diesis, F: double di@`ese,  D: Doppelkreuz, NL: dubbelkruis, 
+ES: doble sostenido, I: doppio diesis, F: double di@`ese,  D: Doppelkreuz, NL: dubbelkruis, 
 DK:@w{ }dob@-belt@-kryds, S: dubbelkors, N: .
 
 @w{@ar{}@strong{accidental}}
 
 @item double trill
-I: doppio trillo, F: trille double, D: Doppeltriller, NL: dubbele triller, DK:
+ES: trino doble, I: doppio trillo, F: trille double, D: Doppeltriller, NL: dubbele triller, DK:
 dobbelttrille, S: dubbeldrill, N: .
 
 A simultaneous trill on two notes, usually in the distance of a third.
 
 @item duple meter
-I: tempo binario, F: temps binaire, D: zweiteiliger Takt, NL: tweedelige
+ES: tiempo binario, I: tempo binario, F: temps binaire, D: zweiteiliger Takt, NL: tweedelige
 maatsoort, DK: todelt takt, S: tv@aa{}takt, N: .
 
 @w{@ar{}@strong{meter}}
 
 @item duplet
-I: duina, F: duolet, D: Duole, NL: duool, DK: duol, S: duol, N: .
+ES: dosillo, I: duina, F: duolet, D: Duole, NL: duool, DK: duol, S: duol, N: .
 
 @w{@ar{}@strong{note value}}
 
 @item duration
-I: durata, F: dur@'ee, D: Dauer, L@"ange, NL: duur, lengte, DK: varighed, S:
+ES: duración, I: durata, F: dur@'ee, D: Dauer, L@"ange, NL: duur, lengte, DK: varighed, S:
 tonl@"angd, N: .
 
 @w{@ar{}@strong{note value}}
@@ -964,22 +976,22 @@ tonl@"angd, N: .
 @w{@ar{}@strong{syntonic comma}}
 
 @item E
-I: mi, F: mi, D: E, e, NL: e, DK: e, S: e, N: e.
+ES: mi, I: mi, F: mi, D: E, e, NL: e, DK: e, S: e, N: e.
 
 @item eighth note
-I: croma, F: croche, UK: quaver, D: Achtel, Achtelnote, NL: achtste noot, DK:
+ES: corchea, I: croma, F: croche, UK: quaver, D: Achtel, Achtelnote, NL: achtste noot, DK:
 ottendedelsnode, S: @aa{}ttondelsnot, N: .
 
 @w{@ar{}@strong{note value}}
 
 @item eighth rest
-I: pausa di croma, F: demi-soupir, UK: quaver rest, D: Achtelpause, NL:
+ES: silencio de corchea, I: pausa di croma, F: demi-soupir, UK: quaver rest, D: Achtelpause, NL:
 achtste rust, DK:@w{ }ottendedelspause, S: @aa{}ttonddelspaus, N: .
 
 @w{@ar{}@strong{note value}}
 
 @item engraving
-I: incisione, F: gravure, D: Notenstechen, NL: steken, DK: nodestik, S:
+ES: Grabar, I: incisione, F: gravure, D: Notenstechen, NL: steken, DK: nodestik, S:
 nottryck, N: .
 
 Engraving means incising or etching a metal plate for
@@ -990,7 +1002,7 @@ The traditional process of music printing is done through cutting in a
 plate of metal. Now also the term for the art of music typesetting.
 
 @item enharmonic
-I: enarmonico, F: enharmonique, D: enharmonisch, NL: enharmonisch, DK:
+ES: enharmónico, I: enarmonico, F: enharmonique, D: enharmonisch, NL: enharmonisch, DK:
 enharmonisk, S: enharmonisk, N: .
 
 Two notes, intervals, or scales are enharmonic if they have different names
@@ -1024,10 +1036,10 @@ Performance indications concerning 1. volume, dynamics (for example
 @w{@ar{}@strong{andante}}, @w{@ar{}@strong{allegro}})
  
 @item F
-I: fa, F: fa, D: F, f, NL: f, DK: f, S: f, N: f.
+ES: fa, I: fa, F: fa, D: F, f, NL: f, DK: f, S: f, N: f.
 
 @item F clef
-I: chiave di fa, F: cl@'e de fa, D: F-Schl@"ussel, NL: F-sleutel, DK:
+ES: Clave de Fa, I: chiave di fa, F: cl@'e de fa, D: F-Schl@"ussel, NL: F-sleutel, DK:
 F-n@o{}gle, S: f-klav, N: .
 
 The position between the dots of the key symbol is the line of the F below
@@ -1065,7 +1077,7 @@ octave lower (for example on double bass @w{@ar{}@strong{strings}}).
 @end lilypond
 
 @item fermata
-I: corona, F: pause, D: Fermate, NL: fermate, DK: fermat, S: fermat, N: .
+ES: Calderón, I: corona, F: pause, D: Fermate, NL: fermate, DK: fermat, S: fermat, N: .
 
 Prolonged note or rest of indefinite duration.
 
@@ -1077,21 +1089,22 @@ a4 b c2^\fermata \bar "|."; }
 @end lilypond
 
 @item fifth
-I: quinta, F: quinte, D: Quinte, NL: kwint, DK: kvint, S: kvint, N:
+ES: quinta, I: quinta, F: quinte, D: Quinte, NL: kwint, DK: kvint, S: kvint, N:
 kvint.
 
 @w{@ar{}@strong{interval}}
 
 @item figured bass
-@w{@ar{}@strong{thorough bass}}
+ES: bajo cifrado, @w{@ar{}@strong{thorough bass}}
 
 @item fingering
-I: diteggiatura, F: doigt@'e, D: Fingersatz, NL: vingerzetting, DK:
+ES: digitación, I: diteggiatura, F: doigt@'e, D: Fingersatz, NL: vingerzetting, DK:
 fingers@ae{}tning, S: fingers@"attning, N: .
 
 The methodical use of fingers in the playing of instruments.
 
 @item flag; pennant 
+ES: corchete, 
 I: coda (uncinata), bandiera, F: crochet, D: Fahne, F@"ahnchen, NL: vlaggetje,
 DK: fane, S: flagga, N: .
 
@@ -1111,7 +1124,7 @@ a quarter note. The number of flags determines the @w{@ar{}@strong{note value}}.
 @end lilypond
 
 @item flat
-I: bemolle, F: b@'emol, D: B, b, NL: mol, DK: b, S: bef@"ortecken, N: .
+ES: bemol, I: bemolle, F: b@'emol, D: B, b, NL: mol, DK: b, S: bef@"ortecken, N: .
 
 @w{@ar{}@strong{accidental}}
 
@@ -1119,23 +1132,23 @@ I: bemolle, F: b@'emol, D: B, b, NL: mol, DK: b, S: bef@"ortecken, N: .
 @w{@ar{}@strong{appoggiatura}}
 
 @item forte
-I: forte, F: forte, D: forte, Laut, NL: forte, DK: forte, S: forte, N: .
+ES: forte, I: forte, F: forte, D: forte, Laut, NL: forte, DK: forte, S: forte, N: .
 
 Loud, abbreviated @b{f}, @emph{fortissimo} (@b{ff}) very loud,
 @emph{mezzoforte} (@b{mf}) medium loud.
 
 @item fourth
-I: quarta, F: quarte, D: Quarte, NL: kwart, DK: kvart, S: kvart, N: .
+ES: cuarta, I: quarta, F: quarte, D: Quarte, NL: kwart, DK: kvart, S: kvart, N: .
 
 @w{@ar{}@strong{interval}}
 
-@item fugue 
-I: fuga, F: fugue, D: Fuge, NL: fuga, DK: fuga, S: fuga, N: .
+@item fugue
+ES: fuga, I: fuga, F: fugue, D: Fuge, NL: fuga, DK: fuga, S: fuga, N: .
 
 @w{@ar{}@strong{counterpoint}}
 
 @item functional harmony
-I: armonia funzionale, F: @'etude des functions, D: Funktionslehre, NL: , DK:
+ES: armonía funcional, I: armonia funzionale, F: @'etude des functions, D: Funktionslehre, NL: , DK:
 funktionsanalyse, funktionsharmonik, S: funktionsl@"ara, N:
 
 A system of harmonic analysis. It is based on the idea that, in a given key,
@@ -1159,10 +1172,10 @@ of the base chords.
 @end lilypond
 
 @item G
-I: sol, F: sol, D: G, g, NL: g, DK: g, S: g, N: g.
+ES: sol, I: sol, F: sol, D: G, g, NL: g, DK: g, S: g, N: g.
 
 @item G clef
-I: chiave di sol, F: cl@'e de sol, D: G-Schl@"ussel, Violinschl@"ussel, NL:
+ES: Clave de sol, I: chiave di sol, F: cl@'e de sol, D: G-Schl@"ussel, Violinschl@"ussel, NL:
 G-sleutel, DK: g-n@o{}gle, S: g-klav, N: .
 
 A clef symbol indicating the G above central C. Used on the first and second
@@ -1197,7 +1210,7 @@ that).
 @end lilypond
 
 @item glissando
-I: glissando, F: glissando, D: Glissando, NL: glissando, DK: glissando, S:
+ES: glissando, I: glissando, F: glissando, D: Glissando, NL: glissando, DK: glissando, S:
 glissando, N: glissando.
 
 Letting the pitch  slide fluently from one note to the other
@@ -1218,13 +1231,13 @@ S: ackolad, b@"ojd klammer, N: .
 A combination of two staffs with a brace.  Usually used for piano music.
 
 @item grave
-I: grave, F: grave, D: grave, langsam, traurig, NL: grave, ernstig, DK: grave, S: grave, N:
+ES: grave, I: grave, F: grave, D: grave, langsam, traurig, NL: grave, ernstig, DK: grave, S: grave, N:
 .
 
 Slow, solemn.
 
 @item half note
-I: minima, F: blanche, UK: minim, D: Halbe, halbe Note, NL: halve noot, DK:
+ES: blanca, I: minima, F: blanche, UK: minim, D: Halbe, halbe Note, NL: halve noot, DK:
 halvnode, S: halvnot, N: .
 
 @w{@ar{}@strong{note value}}
@@ -1236,7 +1249,7 @@ rust, DK: halvnodespause, S: halvpaus, N: .
 @w{@ar{}@strong{note value}}
 
 @item harmonic cadence
-I: cadenza (armonica), F: cadence harmonique, D: Schlusskadenz, NL:
+ES: cadencia (armónica), I: cadenza (armonica), F: cadence harmonique, D: Schlusskadenz, NL:
 harmonische cadens, DK: harmonisk kadence, S: (harmonisk) kadens, N: .
 
 Sequence of chords that terminate a musical phrase or
@@ -1260,7 +1273,7 @@ section. @ar{}@w{}@strong{functional harmony}
 @end lilypond
 
 @item harmony
-I: armonia, F: harmonie, D: Harmonie, Zusammenklang, NL: harmonie, DK:
+ES: armonía    , I: armonia, F: harmonie, D: Harmonie, Zusammenklang, NL: harmonie, DK:
 samklang, S: samklang, N:
 
 Tones sounding simultaneously. Two note harmonies fall into the cathegories
@@ -1301,14 +1314,14 @@ Dissonances:
 Three note harmony @w{@ar{}@strong{chord}}
 
 @item homophony
-I: omofonia, F: homophonie, D: Homophonie, NL: homofonie, DK: homofoni, S:
+ES: homofonía, I: omofonia, F: homophonie, D: Homophonie, NL: homofonie, DK: homofoni, S:
 homofoni, N: .
 
 Music in which one voice leads melodically followed by the other voices more
 or less in the same rhythm. In contrast to @w{@ar{}@strong{polyphony}}.
 
 @item interval
-I: intervallo, F: intervalle, D: Intervall, NL: interval, DK: interval, S:
+ES: intervalo, I: intervallo, F: intervalle, D: Intervall, NL: interval, DK: interval, S:
 intervall, N: .
 
 Difference in pitch between two notes. Intervals may be perfect, minor, major,
@@ -1381,7 +1394,7 @@ forms an octave.
 @end lilypond
 
 @item inverted interval
-I: intervallo rivolto, F: intervalle renvers@'e, D: umgekerhtes Intervall, NL:
+ES: intervalo invertido, I: intervallo rivolto, F: intervalle renvers@'e, D: umgekerhtes Intervall, NL:
 interval inversie, DK: omvendingsinterval, S: intervallets omv@"andning, N: .
 
 The difference between an interval and an octave.
@@ -1406,14 +1419,14 @@ Tuning system in which the notes are obtained by adding and subtracting
 @w{natural} fifths and thirds. @w{@ar{}@strong{temperament}}
 
 @item key
-I: tonalit@`a, F: tonalit@'e, D: Tonart, NL: toonsoort, DK: toneart, S:
+ES: tonalidad, I: tonalit@`a, F: tonalit@'e, D: Tonart, NL: toonsoort, DK: toneart, S:
 tonart, N: .
 
 According to the 12 tones of the @w{@ar{}@strong{chromatic scale}} there are 12
 keys, one on c, one on c-sharp etc. @w{@ar{}@strong{key signature}}
 
 @item key signature
-I: armatura di chiave, F: armure, armature [de la cl@'e], D: Vorzeichen,
+ES: armadura de clave, I: armatura di chiave, F: armure, armature [de la cl@'e], D: Vorzeichen,
 Tonart, NL: @w{ }toon@-soort (voortekens), DK: faste fortegn, 
 S: tonartssignatur, N: .
 
@@ -1421,14 +1434,14 @@ The sharps or flats appearing at the beginning of each staff indicating the
 key of the music. @w{@ar{}@strong{accidental}}
 
 @item largo
-I: largo, F: largo, D: Largo, Langsam, Breit, NL: largo, DK: largo, S: largo,
+ES: largo, I: largo, F: largo, D: Largo, Langsam, Breit, NL: largo, DK: largo, S: largo,
 N: largo
 
 Very slow in tempo, usually combined with great
 expressiveness. @emph{Larghetto} less slow than largo.
 
 @item leading note
-I: sensibile, F: note sensible, D: Leitton, NL: leidtoon, DK: ledetone, S:
+ES: sensible, I: sensibile, F: note sensible, D: Leitton, NL: leidtoon, DK: ledetone, S:
 ledton, N: .
 
 The seventh @w{@ar{}@strong{scale degree}}, a @w{@ar{}@strong{semitone}} below
@@ -1437,7 +1450,7 @@ upwards) to the tonic scale degree.
 
 @item ledger line; leger line
 
-I: tagli addizionali, F: ligne suppl@'ementaire, D: Hilfslinie, NL:
+ES: líneas adicionales, I: tagli addizionali, F: ligne suppl@'ementaire, D: Hilfslinie, NL:
 hulplijntje, DK: hj@ae{}lpelinie, S: hj@"alplinje, N: .
 
 A ledger line is an extension of the staff.
@@ -1450,7 +1463,7 @@ A ledger line is an extension of the staff.
 @end lilypond
 
 @item legato
-I: legato, F: legato, li@'e, D: legato, NL: legato, DK: legato, S: legato, N:
+ES: ligado, I: legato, F: legato, li@'e, D: legato, NL: legato, DK: legato, S: legato, N:
 .
 
 To be performed without any perceptible interruption between the notes (a)
@@ -1477,25 +1490,26 @@ unlike @emph{leggiero} or @emph{non-legato} (b), @emph{portato} (c) and
 @w{@ar{}@strong{slur}} @w{@ar{}@strong{legato}}
 
 @item lilypond
+ES: estanque de lilas, 
 I: stagno del giglio, F: @'etang de lis, UK: lily pond, D: Seerosenteich, NL:
 le@-lie@-vij@-ver, DK: liliedam, S: liljedamm, N: .
 
 A pond with  lilies floating in it, also the name of a music typesetter.
 
 @item line
-I: linea, F: ligne, D: Linie, Notenlinie, NL: lijn, DK: nodelinie, S:
+ES: línea, I: linea, F: ligne, D: Linie, Notenlinie, NL: lijn, DK: nodelinie, S:
 notlinje, N: .
 
 @w{@ar{}@strong{staff}}
 
-@item long appoggiatura 
-I: appoggiatura lunga, F: appoggiature longue, D: langer Vorschlag, DK: langt
+@item long appoggiatura
+ES: apoyatura larga, I: appoggiatura lunga, F: appoggiature longue, D: langer Vorschlag, DK: langt
 forslag, S: l@aa{}ngt f@"orslag, N: .
 
 @w{@ar{}@strong{appoggiatura}}
 
 @item longa
-I: longa, F: longa, D: Longa, NL: longa, DK: longa, S: longa, N: longa
+ES: longa, I: longa, F: longa, D: Longa, NL: longa, DK: longa, S: longa, N: longa
 
 note value: double length of @w{@ar{}@strong{brevis}}. @w{@ar{}@strong{note value}}
 
@@ -1510,13 +1524,13 @@ note value: double length of @w{@ar{}@strong{brevis}}. @w{@ar{}@strong{note valu
 @end lilypond
 
 @item major interval
-I: intervallo maggiore, F: intervalle majeur, D: gro@ss{}es Intervall, NL:
+ES: intervalo mayor, I: intervallo maggiore, F: intervalle majeur, D: gro@ss{}es Intervall, NL:
 groot interval, DK: stort interval, S: stort intervall, N: .
 
 @w{@ar{}@strong{interval}}
 
 @item major
-I: maggiore, F: [mode] majeur, D: Dur, NL: majeur, DK: dur, S: dur, N: dur.
+ES: mayor, I: maggiore, F: [mode] majeur, D: Dur, NL: majeur, DK: dur, S: dur, N: dur.
 
 @w{@ar{}@strong{diatonic scale}}
 
@@ -1530,7 +1544,7 @@ by 16 @w{@ar{}@strong{cent}}s. Due to the non-circular character of this
 tuning keyboard instruments for performance of pre-1650 music.
 
 @item measure, bar
-I: misura, battuta, F: mesure, D: Takt, NL: maat, DK: takt, S: takt, N: takt.
+ES: compás, I: misura, battuta, F: mesure, D: Takt, NL: maat, DK: takt, S: takt, N: takt.
 
 A group of @w{@ar{}@strong{beat}}s (units of musical time) the first of which
 bears an accent. Such groups in numbers of two or more recur consistently
@@ -1538,7 +1552,7 @@ throughout the composition and are marked from each other by
 bar-lines. @w{@ar{}@strong{meter}}
 
 @item mediant
-I: mediante, modale, F: m@'ediante, NL: mediant, D: Mediant, DK: mediant, S:
+ES: mediante, I: mediante, modale, F: m@'ediante, NL: mediant, D: Mediant, DK: mediant, S:
 mediant, N: .
 
 1. The third @b{scale degree}. 2. A @w{@ar{}@strong{chord}} having its base tone
@@ -1551,7 +1565,7 @@ harmony}} @w{@ar{}@strong{relative key}}.
 @w{@ar{}@strong{cadenza}}
 
 @item meter, time
-I: tempo, metro, F: m@`etre, D: Taktart, Metrum, NL: maatsoort, DK: taktart,
+ES: compás, I: tempo, metro, F: m@`etre, D: Taktart, Metrum, NL: maatsoort, DK: taktart,
 S: taktart, N: .
 
 The basic scheme of @ar{}@w{}@strong{note value}s and @ar{}@w{}@strong{accent}s
@@ -1588,28 +1602,28 @@ one speaks of @emph{duple} (2/2, 2/4, 2/8), @emph{triple} (3/2, 3/4, 3/8) or
 @end lilypond
 
 @item metronome
-I: metronomo, F: m@'etronome, D: Metronom, NL: metronoom, 
+ES: metrónomo, I: metronomo, F: m@'etronome, D: Metronom, NL: metronoom, 
 DK:@w{ }me@-tro@-nom, S:@w{ }me@-tro@-nom, N: metronom.
 
 Device indicating the exact tempo of a piece. @w{@ar{}@strong{metronomic
 indication}}
 
 @item metronomic indication
-I: indicazione metronomica, F: indication m@'etronomique, D: Metronomangabe,
+ES: indicación metronómica, I: indicazione metronomica, F: indication m@'etronomique, D: Metronomangabe,
 NL: metronoom aanduiding, DK: metronomtal, S: metronomangivelse, N: .
 
 Exact tempo indication (in beats per minute).  Also denoted by
 M.M. (M@"alzel's Metronom) 
 
 @item mezzo-soprano
-I: mezzo-soprano, F: mezzo-soprano, D: Mezzosopran, NL: mezzosopraan, DK:
+ES: mezzo soprano, I: mezzo-soprano, F: mezzo-soprano, D: Mezzosopran, NL: mezzosopraan, DK:
 mezzosopran, S: mezzosopran, N: mezzosopran.
 
 The female voice between @w{@ar{}@strong{soprano}} and
 @w{@ar{}@strong{contralto}}.
 
 @item middle C
-I: do centrale, F: do central, D: eingestrichenes c, NL: centrale c, DK:
+ES: do central, I: do centrale, F: do central, D: eingestrichenes c, NL: centrale c, DK:
 enstreget c, S: ettstruket c, N:
 
 First C below the 440 Hz A.
@@ -1627,23 +1641,23 @@ First C below the 440 Hz A.
 @end lilypond
 
 @item minor interval
-I: intervallo minore, F: intervalle mineur, D: kleines Intervall, NL: klein
+ES: intervalo mayor, I: intervallo minore, F: intervalle mineur, D: kleines Intervall, NL: klein
 interval, DK: lille interval, S: litet intervall, N: .
 
 @w{@ar{}@strong{interval}}
 
 @item minor
-I: minore, F: mode mineur, D: Moll, NL: mineur, DK: mol, S: moll, N: .
+ES: menor, I: minore, F: mode mineur, D: Moll, NL: mineur, DK: mol, S: moll, N: .
 
 @w{@ar{}@strong{diatonic scale}}
 
 @item mode
-I: modo, F: mode, D: Modus, NL: modus, DK: skala, S: modus, skala, N: .
+ES: modo, I: modo, F: mode, D: Modus, NL: modus, DK: skala, S: modus, skala, N: .
 
 @w{@ar{}@strong{church mode}} @w{@ar{}@strong{diatonic scale}}
 
 @item modulation
-I: modulazione, F: modulation, D: Modulation, NL: modulatie, DK: modulation,
+ES: modulación, I: modulazione, F: modulation, D: Modulation, NL: modulatie, DK: modulation,
 S: modulering, N: .
 
 Moving from one @w{@ar{}@strong{key}} to another. For example the second
@@ -1658,6 +1672,7 @@ I: mordente, F: mordant, D: Mordent, NL: mordent, DK: mordent, S: mordent, N:
 @w{@ar{}@strong{ornament}}
 
 @item motive; motif
+ES: tema, 
 I: inciso, F: incise, D: Motiv, NL: motief, DK: motiv, S: motiv, N: .
 
 The briefest intelligible and self-contained fragment of a musical theme or
@@ -1679,14 +1694,14 @@ subject.
 @end lilypond
 
 @item movement
-I: movimento, F: mouvement, D: Satz, NL: deel, DK: sats, S: sats, N: .
+ES: movimiento, I: movimento, F: mouvement, D: Satz, NL: deel, DK: sats, S: sats, N: .
 
 Greater musical works like @w{@ar{}@strong{symphony}} and
 @w{@ar{}@strong{sonata}} most often consist of several - more or less -
 independant pieces called movements.
 
 @item multibar rest
-I: pausa multipla, F: pause multiple, NL: meermaats rust, D:
+ES: compases de espera, I: pausa multipla, F: pause multiple, NL: meermaats rust, D:
 mehrtaktige Pause, DK: flertaktspause, S: flertaktspaus, N: .
 
 @
@@ -1702,7 +1717,7 @@ a1 }
 @w{@ar{}@strong{diatonic scale}}
 
 @item natural sign
-I: bequadro, F: b@'ecarre, D: Aufl@"osungszeichen, NL: herstellingsteken, 
+ES: becuadro, I: bequadro, F: b@'ecarre, D: Aufl@"osungszeichen, NL: herstellingsteken, 
 DK:@w{ }op@-l@o{}sningstegn, S: @aa{}terst@"allningstecken, N: .
 
 @w{@ar{}@strong{accidental}}
@@ -1711,7 +1726,7 @@ DK:@w{ }op@-l@o{}sningstegn, S: @aa{}terst@"allningstecken, N: .
 @w{@ar{}@strong{appoggiatura}}
 
 @item ninth
-I: nona, F: neuvi@`eme, D: None, NL: noon, DK: none, S: nona, N: .
+ ES: novena, I: nona, F: neuvi@`eme, D: None, NL: noon, DK: none, S: nona, N: .
 
 @w{@ar{}@strong{interval}}
 
@@ -1719,7 +1734,7 @@ I: nona, F: neuvi@`eme, D: None, NL: noon, DK: none, S: nona, N: .
 @w{@ar{}@strong{legato}}
 
 @item note
-I: nota, F: note, D: Note, NL: noot, DK: node, S: not, N: ,
+ES: nota, I: nota, F: note, D: Note, NL: noot, DK: node, S: not, N: ,
 
 Notes are signs by means of which music is fixed in writing. The term is also
 used for the sound indicated by a note, and even for the key of the piano
@@ -1728,7 +1743,7 @@ and @w{@ar{}@strong{note}} is strongly recommended. Briefly, one sees a note,
 and hears a tone.
 
 @item note head
-I: testa, testina, capocchia, F: t@^ete de la note, D: Notenkopf, NL:
+ES: oval, I: testa, testina, capocchia, F: t@^ete de la note, D: Notenkopf, NL:
 nootballetje, DK: nodehovede, S: nothuvud, N: .
 
 A head like sign which indicates pitch by its position on a
@@ -1739,7 +1754,7 @@ instruments (often having no defined pitch) the note head may indicate the
 instrument.
 
 @item note value
-I: valore, durata, F: dur@'ee, valeur (d'une note), D: Notenwert, NL:
+ES: valor, I: valore, durata, F: dur@'ee, valeur (d'une note), D: Notenwert, NL:
 nootwaarde, DK nodev@ae{}rdi, S: notv@"arde, N: .
 
 Note values (durations) are measured as fractions, normally 1/2, of the next
@@ -1811,11 +1826,12 @@ frequently used.
 @w{@ar{}@strong{g clef}} @w{@ar{}@strong{f clef}}
 
 @item octave
-I: ottava, F: octave, D: Oktave, NL: octaaf, DK: oktav, S: oktav, N: .
+ES: octava, I: ottava, F: octave, D: Oktave, NL: octaaf, DK: oktav, S: oktav, N: .
 
 @w{@ar{}@strong{interval}}
 
 @item ornament; embellishment; accessory
+ES: adorno, 
 I: abbellimento, fioriture, F: agr@'ement, ornement, D: Verzierung, Ornament,
 NL: versiering, DK: forsiring, S: ornament, N: .
 
@@ -1869,21 +1885,21 @@ Other frequently used ornaments are the @emph{turn}, the @emph{mordent} and the
 @w{@ar{}@strong{appoggiatura}}
 
 @item ossia
-I: ossia, F: ossia, D: Ossia, NL: alternatief, DK: ossia, S: ossia, N: .
+ES: ossia, I: ossia, F: ossia, D: Ossia, NL: alternatief, DK: ossia, S: ossia, N: .
 
 Ossia (otherwise) marks an alternative. It is an added staff or piano
 score, usually only a few measures long, which presents another version
 of the music, for example for small hands.
 
 @item part
-I: voce, parte, F: partie, D: Stimme, NL: partij, DK: stemme, S: st@"amma, N: .
+ES: parte, I: voce, parte, F: partie, D: Stimme, NL: partij, DK: stemme, S: st@"amma, N: .
 
 1. In instrumental or choral music the music for the single instrument
 or voice. 2. in contrapuntal music @w{@ar{}@strong{counterpoint}} the single
 melodic line of the contrapuntal web.
 
 @item percussion
-I: percussioni, F: percussion, D: Schlagzeug, NL: slagwerk, DK: slagt@o{}j, S:
+ES: percusión, I: percussioni, F: percussion, D: Schlagzeug, NL: slagwerk, DK: slagt@o{}j, S:
 slagverk, N: .
 
 A family of musical instruments which are played on by striking or
@@ -1893,42 +1909,42 @@ tambourine, cymbals, chinese gong (tam-tam), triangle, celesta, glockenspiel
 and xylophone.
 
 @item perfect interval
-
+ES: intervalo justo, 
 I: intervallo giusto, F: intervalle juste, D: reines Intervall, NL: rein
 interval, DK: rent interval, S: rent intervall, N: .
 
 @w{@ar{}@strong{interval}}
 
 @item phrase
-I: frase, F: phrase, D: Phrase, NL: frase, zin, DK: frase, S: fras, N: .
+ES: frase, I: frase, F: phrase, D: Phrase, NL: frase, zin, DK: frase, S: fras, N: .
 
 A natural division of the melodic line, comparable to a sentence of speech.
 
 @item phrasing
-I: fraseggio, F: phras@'e, D: Phrasierung, NL: frasering, DK: frasering, S:
+ES: fraseo, I: fraseggio, F: phras@'e, D: Phrasierung, NL: frasering, DK: frasering, S:
 fra@-se@-ring, N: .
 
 The clear rendering in musical performance of the @w{@ar{}@strong{phrase}}s of
 the melody. Phrasing may be indicated by a @w{@ar{}@strong{slur}}.
 
-@item piano 
-I: piano, F: piano, D: piano, leise, NL: piano, DK: piano, S: piano, N: .
+@item piano
+ES: piano, I: piano, F: piano, D: piano, leise, NL: piano, DK: piano, S: piano, N: .
 
 @emph{piano} (@b{p}) soft, @emph{pianissimo} (@b{pp}) very soft,
 @emph{mezzopiano} (@b{mp}) medium soft.
 
 @item pitch
-I: altezza, F: hauteur, D: Tonh@"ohe, NL: toonhoogte, DK: toneh@o{}jde, S:
+ES: altura, I: altezza, F: hauteur, D: Tonh@"ohe, NL: toonhoogte, DK: toneh@o{}jde, S:
 tonh@"ojd, N: .
 
 @item pizzicato
-I: pizzicato, F: pizzicato, D: pizzicato, NL: pizzicato, getokkeld, DK:
+ES: pizzicato, I: pizzicato, F: pizzicato, D: pizzicato, NL: pizzicato, getokkeld, DK:
 pizzicato, S: pizzicato.
 
 Play by plucking the strings.
 
 @item polyphony
-I: polifonia, F: polyphonie, D: Polyphonie, NL: polyfonie, DK: polyfoni, S:
+ES: polifonía, I: polifonia, F: polyphonie, D: Polyphonie, NL: polyfonie, DK: polyfoni, S:
 polyfoni, N: .
 
 Music written in a combination of several simultaneous voices (parts) of a
@@ -1938,13 +1954,14 @@ more or less pronounced individuality. @w{@ar{}@strong{counterpoint}}
 @w{@ar{}@strong{legato}}
 
 @item presto
-I: presto, F: presto, D: Presto, Sehr schnell, NL: presto, Sehr schnell, DK:
+ES: presto, I: presto, F: presto, D: Presto, Sehr schnell, NL: presto, Sehr schnell, DK:
 presto, S: presto, N: .
 
 Very quick, i.e. quicker than @w{@ar{}@strong{allegro}}. @emph{prestissimo}
 denotes the highest possible degree of speed.
 
 @item Pythagorean comma
+ES: coma pitagórico, 
 I: comma pitagorico, F: comma pythagoricien, D: Pythagor@"aisches Komma, NL:
 komma van Pythagoras, DK: pythagor@ae{}isk komma, S: pytagoreiskt komma, N: .
 
@@ -1954,37 +1971,37 @@ obtained by adding 7 octaves. The difference between those two pitches is
 called the Pythagorean comma.
 
 @item quadruplet
-I: quartina, F: quartolet, D: Quartole, NL: kwartool, DK: kvartol, S: kvartol,
+ES: cuatrillo, I: quartina, F: quartolet, D: Quartole, NL: kwartool, DK: kvartol, S: kvartol,
 N: .
 
 @w{@ar{}@strong{note value}}
 
 @item quarter note
-I: semiminima, nera, F: noire, UK: crotchet, D: Viertel, Viertelnote, NL:
+ES: negra, I: semiminima, nera, F: noire, UK: crotchet, D: Viertel, Viertelnote, NL:
 kwartnoot, DK: fjerdedelsnode, S: fj@"ardedelsnot, N:
 
 @w{@ar{}@strong{note value}}
 
 @item quarter rest
-I: pausa di semiminima, F: soupir, UK: crotchet rest, D: Viertelpause, NL:
+ES: silencio de negra, I: pausa di semiminima, F: soupir, UK: crotchet rest, D: Viertelpause, NL:
 kwart rust, DK:@w{ }fjerdedelspause, S: fj@"ardedelspaus, N: .
 
 @w{@ar{}@strong{note value}}
 
 @item quintuplet
-I: quintina, F: quintuplet, D: Quintole, NL: kwintool, DK: kvintol, S:
+ES: quintillo, I: quintina, F: quintuplet, D: Quintole, NL: kwintool, DK: kvintol, S:
 kvintol, N: .
 
 @w{@ar{}@strong{note value}}
 
 @item rallentando
-I: rallentando, F: rallentando, D: rallentando, langsamer, NL: rallentando, DK:
+ES: rallentando, I: rallentando, F: rallentando, D: rallentando, langsamer, NL: rallentando, DK:
 rallentando, S: rallentando, N: rallentando.
 
 Abbreviation "rall.". @w{@ar{}@strong{ritardando}}
 
 @item relative key
-I: tonalit@`a relativa, F: tonalit@'e relative, D: Paralleltonart, DK:
+ES: relativa, I: tonalit@`a relativa, F: tonalit@'e relative, D: Paralleltonart, DK:
 paralleltoneart, S: parallelltonart, N: .
 
 @w{@ar{}@strong{Major}} and @w{@ar{}@strong{minor}} @w{@ar{}@strong{key}} with
@@ -2006,7 +2023,7 @@ the same @w{@ar{}@strong{signature}}.
 @end lilypond
 
 @item repeat
-I: ritornello, F: barre de reprise, D: Wiederholung, NL: herhaling, DK:
+ES: barra de repetición, I: ritornello, F: barre de reprise, D: Wiederholung, NL: herhaling, DK:
 gen@-ta@-gel@-se, S: repris, N: .
 
 @
@@ -2020,12 +2037,12 @@ gen@-ta@-gel@-se, S: repris, N: .
 @end lilypond
 
 @item rest
-I: pausa, F: silence, D: Pause, NL: rust, DK: pause, S: paus, N: .
+ES: silencio, I: pausa, F: silence, D: Pause, NL: rust, DK: pause, S: paus, N: .
 
 @w{@ar{}@strong{note value}}
 
 @item rhythm
-I: ritmo, F: rythme, D: Rhythmus, NL: ritme, DK: rytme, S: rytm, N: .
+ES: ritmo, I: ritmo, F: rythme, D: Rhythmus, NL: ritme, DK: rytme, S: rytm, N: .
 
 (a) metrical rhythm in which every time value is a multiple or fraction of a
 fixed unit of time, called @w{@ar{}@strong{beat}}, and in which the normal
@@ -2037,24 +2054,24 @@ different measures. (c) Free rhythm, i.e. the use of temporal values having no
 common metrical unit (beat).
 
 @item ritardando
-I: ritardando, F: ritardando, D: Ritardando, Langsamer, NL: ritardando, DK:
+ES: retardando, I: ritardando, F: ritardando, D: Ritardando, Langsamer, NL: ritardando, DK:
 ritardando, S: ritardando, N: .
 
 Gradually slackening in speed. Mostly abbreviated to rit. or ritard. 
 
 @item ritenuto
-I: ritenuto, F: ritenuto, D: Ritenuto, NL: ritenuto, DK: ritenuto, S:
+ES: ritenuto, I: ritenuto, F: ritenuto, D: Ritenuto, NL: ritenuto, DK: ritenuto, S:
 ritenuto, N: .
 
 Immediate reduction of speed.
 
 @item scale
-I: scala, F: gamme, D: Tonleiter, NL: toonladder, DK: Skala, S: skala, N: .
+ES: escala, I: scala, F: gamme, D: Tonleiter, NL: toonladder, DK: Skala, S: skala, N: .
 
 @w{@ar{}@strong{diatonic scale}}
 
 @item scale degree
-I: grado della scala, F: degr@'e [de la gamme], D: Tonleiterstufe, NL: trap
+ES: grados de la escala, I: grado della scala, F: degr@'e [de la gamme], D: Tonleiterstufe, NL: trap
 [van de toonladder], DK: skalatrin, S: skalsteg (?), N: .
 
 Names and symbols used in harmonic analysis to denote tones of the scale as
@@ -2080,7 +2097,7 @@ sub@-do@-mi@-nant (S) and V = dominant (D).
 @w{@ar{}@strong{functional harmony}}
 
 @item score
-I: partitura, F: partition, D: Partitur, NL: partituur, DK: partitur, S:
+ES: partitura, I: partitura, F: partition, D: Partitur, NL: partituur, DK: partitur, S:
 partitur, N: .
 
 A copy of orchestral, choral or chamber music showing what each instrument is
@@ -2088,7 +2105,7 @@ to play, each voice to sing, having each part arranged one underneath the
 other on different @w{@ar{}@strong{stave}}s.
 
 @item second
-I: secunda, F: seconde, D: Sekunde, NL: secunde, DK: sekund, S: sekund, N: .
+ES: segunda, I: secunda, F: seconde, D: Sekunde, NL: secunde, DK: sekund, S: sekund, N: .
 
 The @w{@ar{}@strong{interval}} between two neigbouring tones of a scale. A
 @w{@ar{}@strong{diatonic scale}} consists of alternating
@@ -2096,7 +2113,7 @@ The @w{@ar{}@strong{interval}} between two neigbouring tones of a scale. A
 of a se@-cond depends on the scale degrees in question.
 
 @item semitone
-I: semitono, F: demi-ton, D: Halbton, NL: halve toon, DK: halvtone, S:
+ES: semitono, I: semitono, F: demi-ton, D: Halbton, NL: halve toon, DK: halvtone, S:
 halvton, N: .
 
 The @w{@ar{}@strong{interval}} of a minor second. The (usually) smallest
@@ -2113,7 +2130,7 @@ semitones. @w{@ar{}@strong{interval}} @w{@ar{}@strong{chromatic scale}}
 @end lilypond
 
 @item seventh
-I: settima, F: septi@`eme, D: Septime, NL: septiem, DK: septim, S: septim, N: .
+ES: séptima, I: settima, F: septi@`eme, D: Septime, NL: septiem, DK: septim, S: septim, N: .
 
 @w{@ar{}@strong{interval}}
 
@@ -2124,7 +2141,7 @@ I: sestina, F: sextolet, D: Sextole, NL: sextool, DK: sekstol, S: sextol, N:
 @w{@ar{}@strong{note value}}
 
 @item sharp
-I: diesis, F: di@`ese, D: Kreuz, NL: kruis, DK: kryds, S: korsf@"ortecken, N: .
+ES: sostenido, I: diesis, F: di@`ese, D: Kreuz, NL: kruis, DK: kryds, S: korsf@"ortecken, N: .
 
 @w{@ar{}@strong{accidental}}
 
@@ -2132,25 +2149,26 @@ I: diesis, F: di@`ese, D: Kreuz, NL: kruis, DK: kryds, S: korsf@"ortecken, N: .
 @w{@ar{}@strong{appoggiatura}}
 
 @item sixteenth note
-I: semicroma, F: double croche, UK: semiquaver, D: Sechzehntel,
+ES: semicorchea, I: semicroma, F: double croche, UK: semiquaver, D: Sechzehntel,
 Sechzehntelnote, NL:@w{ }zes@-ti@-ende noot, DK: sekstendedelsnode, S:
 sextondelsnot, N: .
 
 @w{@ar{}@strong{note value}}
 
 @item sixteenth rest
-I: pausa di semicroma, F: quart de soupir, UK: semiquaver rest, D:
+ES: silencia de semicorchea, I: pausa di semicroma, F: quart de soupir, UK: semiquaver rest, D:
 Sechzehntelpause, NL: zestiende rust, DK: sekstendedelspause, S:
 sextondelspaus, N: .
 
 @w{@ar{}@strong{note value}}
 
 @item sixth
-I: sesta, F: sixte, D: Sexte, NL: sext, DK: sekst, S: sext, N: .
+ES: sexta, I: sesta, F: sixte, D: Sexte, NL: sext, DK: sekst, S: sext, N: .
 
 @w{@ar{}@strong{interval}}
 
 @item sixty-fourth note
+ES: semifusa, 
 I: semibiscroma, F: quadruple croche, UK: hemidemisemiquaver, D:
 Vierundsechzigstel, Vierundsechzigstelnote, NL: vierenzestigste noot, DK:
 fi@-re@-og@-tred@-sinds@-ty@-ven@-de@-dels@-no@-de, S:
@@ -2159,6 +2177,7 @@ sextiofj@"ardedelsnot, N: .
 @w{@ar{}@strong{note value}}
 
 @item sixty-fourth rest
+ES: silencia de semifusa, 
 I: pausa di semibiscroma, F: seizi@`eme de soupir, UK: hemidemisemiquaver
 rest, D: Vierundsechzigstelpause, NL: vierenzestigste rust, DK:
 fi@-re@-og@-tred@-sinds@-ty@-ven@-de@-dels@-pau@-se, S:
@@ -2167,7 +2186,7 @@ sextiofj@"ardedelspaus, N: .
 @w{@ar{}@strong{note value}}
 
 @item slur
-I: legatura (di portamento or espressiva), F: liaison, coul@'e, D: Bogen,
+ES: ligadura, I: legatura (di portamento or espressiva), F: liaison, coul@'e, D: Bogen,
 Bindebogen, Legatobogen, Phrasierungsbogen, NL: binding, bindingsboog, 
 DK:@w{ }legatobue, fraseringsbue, S: b@aa{}ge, N: .
 
@@ -2185,14 +2204,14 @@ General term for systems of designating the degrees of the
 (@emph{ti})). @w{@ar{}@strong{scale degree}}.
 
 @item sonata
-I: sonata, F: sonate, D: Sonate, NL: sonate, DK: sonate, S: sonat, N: .
+ES: sonata, I: sonata, F: sonate, D: Sonate, NL: sonate, DK: sonate, S: sonat, N: .
 
 In its present-day meaning a sonata denotes an instrumental composition for
 piano or for some other instrument with piano accompaniment, which consists of
 three or four independant pieces, called movements.
 
 @item sonata form
-I: forma sonata, F: [en] forme de sonate, D: Sonatenform, NL: hoofdvorm,
+ES: forma sonata, I: forma sonata, F: [en] forme de sonate, D: Sonatenform, NL: hoofdvorm,
 sonatevorm, DK: sonateform, S: sonatform, N: .
 
 A form used frequently for single movements of the @w{@ar{}@strong{sonata}},
@@ -2210,12 +2229,12 @@ two. The second theme is in another key, normally in the key of the
 tonic is @w{@ar{}@strong{minor}}.
 
 @item soprano
-I: soprano, F: soprano, D: Sopran, NL: sopraan, DK: sopran, S: sopran, N: .
+ES: soprano, I: soprano, F: soprano, D: Sopran, NL: sopraan, DK: sopran, S: sopran, N: .
 
 The highest female voice.
 
 @item staccato
-I: staccato, F: staccato, piqu@'e, d@'etach@'e, D: staccato, NL: staccato, DK:
+ES: staccato, I: staccato, F: staccato, piqu@'e, d@'etach@'e, D: staccato, NL: staccato, DK:
 staccato, S: staccato, N:
 
 Playing the note(s) short. Staccato is indicated by a dot above or below the
@@ -2233,7 +2252,7 @@ notehead.
 @end lilypond
 
 @item staff
-I: pentagramma, rigo (musicale), F: port@'ee, D: Notensystem, NL: (noten)balk;
+ES: pentagrama, I: pentagramma, rigo (musicale), F: port@'ee, D: Notensystem, NL: (noten)balk;
 partij, DK: nodesystem, S: notsystem, N: .
 
 pl. staves or staffs. A series of (normally 5) horizontal lines upon and
@@ -2242,7 +2261,7 @@ with a @w{@ar{}@strong{clef}}) their pitch. Staffs for
 @w{@ar{}@strong{percussion}} instruments may have fewer lines.
 
 @item stem
-I: gamba, F: queue, D: Hals, Notenhals, Stiel, NL: stok, DK: hals, S: skaft,
+ES: plica, I: gamba, F: queue, D: Hals, Notenhals, Stiel, NL: stok, DK: hals, S: skaft,
 N: .
 
 Vertical line above or below a @w{@ar{}@strong{note head}} shorter than a whole
@@ -2264,58 +2283,58 @@ note. @w{@ar{}@strong{beam}}
 @end lilypond
 
 @item strings
-I: archi, F: cordes, D: Streicher, NL: strijkers, DK: strygere, S:
+ES: arcos, cuerdas, I: archi, F: cordes, D: Streicher, NL: strijkers, DK: strygere, S:
 str@aa{}kar, N: .
 
 A family of stringed musical instruments played with a bow. Strings commonly
 used in a symphony orchestra are violin, viola, violoncello and double bass.
 
 @item strong beat
-I: tempo forte, F: temps fort, D: betonter Taktteil oder -schlag, NL: thesis,
+ES: tiempo fuerte, I: tempo forte, F: temps fort, D: betonter Taktteil oder -schlag, NL: thesis,
 D: betonet taktslag, S: betonat taktslag, N: .
 
 @w{@ar{}@strong{beat}} @w{@ar{}@strong{accent}} @w{@ar{}@strong{measure}}
 @w{@ar{}@strong{rhythm}}
 
 @item subdominant
-I: sottodominante, F: sous-dominante, D: Subdominante, NL: subdominant, DK:
+ES: subdominante, I: sottodominante, F: sous-dominante, D: Subdominante, NL: subdominant, DK:
 subdominant, S: subdominant, N: .
 
 The fourth @w{@ar{}@strong{scale degree}}. @w{@ar{}@strong{functional
 harmony}}
 
 @item submediant
-I: sopratonica, F: sous-m@'ediante, D: Submediant, NL: submediant, DK:
+ES: superdominante, I: sopratonica, F: sous-m@'ediante, D: Submediant, NL: submediant, DK:
 Submediant, S: submediant, N: .
 
 The sixth @w{@ar{}@strong{scale degree}}.
 
 @item subtonic
-I: sottotonica, F: sous-tonique, D: Subtonika, NL: subtonica, DK: Subtonika, S:
+ES: sensible, I: sottotonica, F: sous-tonique, D: Subtonika, NL: subtonica, DK: Subtonika, S:
 subtonika, N: .
 
 The seventh @w{@ar{}@strong{scale degree}}
 
 @item superdominant
-I: sopradominante, F: sus-dominante, D: Superdominant, NL: superdominant, DK:
+ES: superdominante, I: sopradominante, F: sus-dominante, D: Superdominant, NL: superdominant, DK:
 superdominant, S: superdominant, N: .
 
 The sixth @w{@ar{}@strong{scale degree}} 
 
 @item supertonic
-I: sopratonica, F: sus-tonique, D: Supertonika, NL: supertonica, DK:
+ES: supertónica, I: sopratonica, F: sus-tonique, D: Supertonika, NL: supertonica, DK:
 supertonika, S: supertonika, N: .
 
 The second @w{@ar{}@strong{scale degree}}.
 
 @item symphony
-I: sinfonia, F: symphonie, D: Sinfonie, NL: symfonie, DK: symfoni, S: symfoni,
+ES: sinfonía, I: sinfonia, F: symphonie, D: Sinfonie, NL: symfonie, DK: symfoni, S: symfoni,
 N: .
 
 A symphony may be defined as a @w{@ar{}@strong{sonata}} for orchestra.
 
 @item syncopation
-I: sincope, F: syncope, D: Synkope, NL: syncope, DK: synkope, S: synkop, N: .
+ES: sincopado, I: sincope, F: syncope, D: Synkope, NL: syncope, DK: synkope, S: synkop, N: .
 
 Any deliberate upsetting of the normal pulse of @w{@ar{}@strong{meter}},
 @w{@ar{}@strong{accent}} and @w{@ar{}@strong{rhythm}}. Our system of musical
@@ -2353,7 +2372,7 @@ The collection of staves @w{@ar{}@strong{staff}}, two or more, as used for the
 writing down of keyboard, chamber, choral or orchestral music.
 
 @item temperament
-I: temperamento, F: temp@'erament, D: Stimmung, Temperatur, NL: temperament,
+ES: temperamento, I: temperamento, F: temp@'erament, D: Stimmung, Temperatur, NL: temperament,
 DK: temperatur, S: temperatur, N: .
 
 Systems of tuning in which the intervals deviate from the accoustically pure
@@ -2361,7 +2380,7 @@ intervals. @w{@ar{}@strong{meantone temperament}} @w{@ar{}@strong{equal
 temperament}}
 
 @item tempo indication
-I: indicazione di tempo, F: indication de temps, D: Zeitma@ss{},
+ES: indicación de tempo, I: indicazione di tempo, F: indication de temps, D: Zeitma@ss{},
 Tempobezeichnung, NL: tempo aanduiding, DK: tempobetegelse, S:
 tempobeteckning, N: .
 
@@ -2371,22 +2390,22 @@ slowest to the quickest, as is indicated by tempo marks as
 @w{@ar{}@strong{allegro}} and @w{@ar{}@strong{presto}}.
 
 @item tenor
-I: tenore, F: t@'enor, D: Tenor, NL: tenor, DK: tenor, S: tenor, N: .
+ES: tenor, I: tenore, F: t@'enor, D: Tenor, NL: tenor, DK: tenor, S: tenor, N: .
 
 The highest voice of men (apart from @w{@ar{}@strong{counter tenor}})
  
 @item tenth
-I: decima, F: dixi@`eme, D: Dezime, NL: deciem, DK: decim, S: decima, N: .
+ES: décima, I: decima, F: dixi@`eme, D: Dezime, NL: deciem, DK: decim, S: decima, N: .
 
 @w{@ar{}@strong{note value}}
 
 @item third
-I: terza, F: tierce, D: Terz, NL: terts, DK: terts, S: ters, N: .
+ES: tercera, I: terza, F: tierce, D: Terz, NL: terts, DK: terts, S: ters, N: .
 
 @w{@ar{}@strong{interval}}
 
 @item thirty-second note
-
+ES: fusa, 
 I: biscroma, F: triple croche, UK: demisemiquaver, D:
 Zweiunddrei@ss{}igstel, Zweiunddrei@ss{}igstelnote, NL: twee-endertig@-ste
 noot, DK: toogtredivtedelsnode, S: trettiotv@aa{}ondelsnot, N: .
@@ -2394,7 +2413,7 @@ noot, DK: toogtredivtedelsnode, S: trettiotv@aa{}ondelsnot, N: .
 @w{@ar{}@strong{note value}}
 
 @item thirty-second rest
-
+ES: silencio de fusa, 
 I: pausa di biscroma, F: huiti@`eme de soupir, UK: demisemiquaver rest, D:
 Zweiunddrei@ss{}igstel@-pause, NL: 32e rust, DK: toogtredivtedelspause, S:
 trettiotv@aa{}ondelspaus, N: .
@@ -2402,6 +2421,7 @@ trettiotv@aa{}ondelspaus, N: .
 @w{@ar{}@strong{note value}}
 
 @item thorough bass; figured bass
+ES: bajo cifrado, 
 I: basso continuo, basso numerato, F: basse chiffr@'ee, D: Generalbass,
 bezifferter Bass, NL: basso continuo, DK:@w{ }generalbas, S: generalbas, N: .
 
@@ -2442,6 +2462,7 @@ with figures designating the chief @w{@ar{}@strong{interval}}s and
 @end lilypond
 
 @item tie; bind
+ES: ligadura de prolongación, 
 I: legatura (di valore), F: liaison, D: Haltebogen, NL: overbinding, DK:
 bindebue, S: bindeb@aa{}ge, @"overbindning, N: .
 
@@ -2458,6 +2479,7 @@ uniting them into a single sound equal to the combined durations.
 
 @item time signature
 
+ES: cifra indicadora de compás, 
 I: segni di tempo, F: chiffrage (chiffres indicateurs), signe de valeur,  D:
 Taktangabe, Angabe der Taktart, NL: maatsoort, DK: taktangivelse, S:
 taktartssignatur, N: .
@@ -2465,19 +2487,19 @@ taktartssignatur, N: .
 @w{@ar{}@strong{meter}}
 
 @item tone
-I: suono, F: ton, D: Ton, NL: toon, DK: tone, S: ton, N: .
+ES: sonido, I: suono, F: ton, D: Ton, NL: toon, DK: tone, S: ton, N: .
 
 A sound of definite pitch and duration, as distinct from @emph{noise}. Tone is
 a primary building material of music. Music from the 20th century may be based
 on non tone related sounds.
 
 @item tonic
-I: tonica, F: tonique, D: Tonika, NL: tonica, DK: tonika, S: tonika, N: .
+ES: tonica, I: tonica, F: tonique, D: Tonika, NL: tonica, DK: tonika, S: tonika, N: .
 
 The first @w{@ar{}@strong{scale degree}}@w{@ar{}@strong{functional harmony}}
 
 @item transposition
-I: trasposizione, F: transposition, D: Transposition, NL: transpositie, DK:
+ES: transposición, I: trasposizione, F: transposition, D: Transposition, NL: transpositie, DK:
 transposition, S: transponering, N: .
 
 Shifting a melody up or down in pitch, while keeping the same relative pitches.
@@ -2497,14 +2519,14 @@ Shifting a melody up or down in pitch, while keeping the same relative pitches.
 @end lilypond
 
 @item treble clef
-I: chiave di violino, F: cl@'e de sol, D: Violinschl@"ussel,
+ES: clave de sol, I: chiave di violino, F: cl@'e de sol, D: Violinschl@"ussel,
 Sopranschl@"ussel, NL: viool sleutel, DK:@w{ }diskantn@o{}gle, S: diskantklav,
 N: .
 
 @w{@ar{}@strong{G clef}}
 
 @item tremolo
-I: tremolo, F: tr@'emolo, D: Tremolo, NL: tremolo, DK: tremolo, S: tremolo, N:
+ES: tremolo, I: tremolo, F: tr@'emolo, D: Tremolo, NL: tremolo, DK: tremolo, S: tremolo, N:
 .
 
 On stringed instruments (@w{@ar{}@strong{strings}}) the quick reiteration of
@@ -2527,47 +2549,49 @@ a @w{@ar{}@strong{chord}}, usually in the distance of a third
 @end lilypond
 
 @item triad
-I: triade, F: triade, accord parfait, accord de trois sons, D: Dreiklang, NL:
+ES: tríada, I: triade, F: triade, accord parfait, accord de trois sons, D: Dreiklang, NL:
 drieklank, DK: treklang, S: treklang, N:
 
 @w{@ar{}@strong{chord}}
 
 @item trill; shake
+ES: trino, 
 I: trillo, F: trille, tremblement, battement (cadence), D: Triller, NL:
 triller, DK:@w{ }trille, S:@w{ }drill, N:@w{ }.
 
 @w{@ar{}@strong{ornament}}
 
 @item triple meter
-I: tempo ternario, F: mesure ternaire, D: dreiteiliger Takt, NL: driedelige
+ES: compás compuesto , I: tempo ternario, F: mesure ternaire, D: dreiteiliger Takt, NL: driedelige
 maatsoort, DK: tredelt takt, S: tretakt, N: .
 
 @w{@ar{}@strong{meter}}
 
 @item triplet
-I: terzina, F: triolet,  D: Triole, NL: triool, DK: triol, S: triol, N: .
+ES: tresillo, I: terzina, F: triolet,  D: Triole, NL: triool, DK: triol, S: triol, N: .
 
 @w{@ar{}@strong{note value}}
 
 @item tritone
-I: tritono, F: triton, D: Tritonus, NL: tritoon, DK: tritonus, S: tritonus, N:
+ES: trítono, I: tritono, F: triton, D: Tritonus, NL: tritoon, DK: tritonus, S: tritonus, N:
 .
 
 @w{@ar{}@strong{interval}}
 
 @item tuning fork
-I: diapason, corista, F: diapason, D: Stimmgabel, NL: stemvork, DK:
+ES: diapasón, I: diapason, corista, F: diapason, D: Stimmgabel, NL: stemvork, DK:
 stemmegaffel, S: st@"amgaffel, N: .
 
 A two-pronged piece of steel used to indicate absolute pitch. Tuning forks
 give the international pitch for the tone @emph{a} (440 vibrations per second.)
  
 @item turn; gruppetto
+ES: grupo, 
 I: gruppetto, F: grupetto, D: Doppelschlag, NL: dubbelslag, DK: dobbeltslag,
 S: dubbelslag, N: .
 
 @item unison
-I: unisono, F: unisson, D: Unison, unisono, NL: unisono, DK: unison, S:
+ES: unísono, I: unisono, F: unisson, D: Unison, unisono, NL: unisono, DK: unison, S:
 unison, N: .
 
 Playing of the same notes or the same melody by various instruments (voices)
@@ -2575,7 +2599,7 @@ or by the whole orchestra (choir), either at exactly the same pitch or in a
 different octave.
 
 @item upbeat
-I: anacrusi, F: anacrouse, D: Auftakt, NL: opmaat, DK: optakt, S:
+ES: entrada anacrúsica, I: anacrusi, F: anacrouse, D: Auftakt, NL: opmaat, DK: optakt, S:
 upptakt, N:
 
 Initial note(s) of a melody occurring before the first bar
@@ -2592,7 +2616,7 @@ line. @w{@ar{}@strong{measure}} @w{@ar{}@strong{meter}}
 @end lilypond
 
 @item voice
-I: voce, F: voix, D: Stimme, NL: stem, DK: stemme, S: st@"amma, N: ,
+ES: voz, I: voce, F: voix, D: Stimme, NL: stem, DK: stemme, S: st@"amma, N: ,
 
 1. Human voices: @w{@ar{}@strong{soprano}}, @w{@ar{}@strong{mezzo-soprano}},
 @w{@ar{}@strong{contralto}}, @w{@ar{}@strong{tenor}},
@@ -2600,25 +2624,25 @@ I: voce, F: voix, D: Stimme, NL: stem, DK: stemme, S: st@"amma, N: ,
 of a polyphonic composition.
 
 @item weak beat
-I: tempo debole, arsi, F: temps faible, D: unbetonter Taktteil oder -schlag,
+ES: tiempo débil, I: tempo debole, arsi, F: temps faible, D: unbetonter Taktteil oder -schlag,
 NL: arsis, DK: ubetonet taktslag, S: obetonat taktslag, N: .
 
 @w{@ar{}@strong{beat}} @w{@ar{}@strong{measure}} @w{@ar{}@strong{rhythm}}
 
 @item whole note
-I: semibreve, F: ronde, UK: semibreve, D: Ganze, Ganze Note, NL: hele noot,
+ES: redonda, I: semibreve, F: ronde, UK: semibreve, D: Ganze, Ganze Note, NL: hele noot,
 DK: helnode, S: helnot, N: .
 
 @w{@ar{}@strong{note value}}
 
 @item whole rest
-I: pausa di semibreve, F: pause, UK: semibreve rest, D: Ganze Pause, NL: hele
+ES: silencio de redonda, I: pausa di semibreve, F: pause, UK: semibreve rest, D: Ganze Pause, NL: hele
 rust, DK: helnodespause, S: helpaus, N: .
 
 @w{@ar{}@strong{note value}}
 
 @item whole tone
-I: tono intero, F: ton entier, D: Ganzton, NL: hele toon, DK: heltone, S:
+ES: tono, I: tono intero, F: ton entier, D: Ganzton, NL: hele toon, DK: heltone, S:
 helton, N: .
 
 The @w{@ar{}@strong{interval}} of a major second. The interval between two
@@ -2626,7 +2650,7 @@ tones on the piano keyboard with exactly one key between them - including
 black and white keys - is a whole tone.
 
 @item woodwind
-I: legni, F: le bois, D: Holzbl@"aser, NL: houtblazers, DK tr@ae{}bl@ae{}sere,
+ES: maderas, I: legni, F: le bois, D: Holzbl@"aser, NL: houtblazers, DK tr@ae{}bl@ae{}sere,
 S: tr@"abl@aa{}sare, N: .
 
 A family of blown wooden musical instruments. Today some of these instruments
@@ -2784,3 +2808,4 @@ Oxford Advanced Learner's Dictionary of Current English, Third Edition 1974.
 @end table
 
 @bye
+
index f55767c73e5c92c0bba2c0e045e7c5f2efbe18ed..dc98e0196ca1eef55002a6ecb18b20e08d2d88c7 100644 (file)
@@ -19,7 +19,7 @@
 @chapter Reference Manual
 
 This document describes GNU LilyPond and its input format. The last
-revision of this document was for LilyPond 1.3.141.
+revision of this document was made for LilyPond 1.3.145.
 
 
 @menu
@@ -62,7 +62,7 @@ by `music compiler' or `music to notation compiler'.
 
 LilyPond is linked to GUILE, GNU's Scheme library for extension. The
 Scheme library provides the glue that holds together the low-level
-routines and separate modules general, which are C++.
+routines and separate modules which are written in C++.
 
 When lilypond is run to typeset sheet music, the following happens:
 @itemize @bullet
@@ -71,13 +71,14 @@ When lilypond is run to typeset sheet music, the following happens:
 then the user @file{ly} file is read.
 @item interpretation: the music in the file is processed ``in playing
 order'', i.e. the order that  you  use to read sheet music, or the
-order in which notes are played.
+order in which notes are played. The result of this step is a typesetting
+specification.
 
 @item typesetting:
-in this step, the results of the interpretation, a typesetting
-specification, is solved.
+The typesetting specification is solved: positions and formatting is
+calculated.
 
-@item the visible results ("virtual ink") is written to the output file.
+@item the visible results ("virtual ink") are written to the output file.
 @end itemize
 
 During these stages different types of data play the the main role:
@@ -117,7 +118,6 @@ brevity we omit obligotary lint such as @code{\score} blocks and
 * Tuplets::                     
 * Rests::                       
 * Skip::                        
-* Note mode::                   
 @end menu
 
 @c .  {Pitches}
@@ -216,18 +216,16 @@ The syntax for a verbose duration specification is
 @example
  \duration @var{scmduration}
 @end example
-Here, @var{scmduration} is a Scheme object of type Duration. See
+Here, @var{scmduration} is a Scheme object of type @code{Duration}. See
 @ref{Duration} for more information.
 
 
 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, use identifiers.
-
-@quotation
+longer than a whole note you must use identifiers.
 
 @example 
-c'\longa c'\breve  
+ c'\breve  
 c'1 c'2 c'4 c'8 c'16 c'32 c'64 c'64 
 r\longa r\breve  
 r1 r2 r4 r8 r16 r32 r64 r64 
@@ -237,7 +235,7 @@ r1 r2 r4 r8 r16 r32 r64 r64
 @lilypond[]
 \score {
   \notes \relative c'' {
-    a\longa a\breve  \autoBeamOff
+  \breve  \autoBeamOff
     a1 a2 a4 a8 a16 a32 a64 a64 
     r\longa r\breve  
     r1 r2 r4 r8 r16 r32 r64 r64 
@@ -253,11 +251,15 @@ r1 r2 r4 r8 r16 r32 r64 r64
   }
 }
 @end lilypond
-@end quotation
 
-As you can see, the longa is not printed. To get a longa note head, you
-have to use a mensural note heads. This is done accomplished by setting
-the @code{style} property of the NoteHead grob to @code{mensural}.
+ To get a longa note head, you have to use a mensural note heads. This
+is done accomplished by setting the @code{style} property of the
+NoteHead grob to @code{mensural}.
+
+@lilypond[fragment,singleline,verbatim]
+ \property Voice.NoteHead \set #'style = #'mensural
+ a'\longa
+@end lilypond
 
 If the duration is omitted then it is set to the previous duration
 entered.  At the start of parsing a quarter note is assumed.  The
@@ -282,12 +284,12 @@ notes or rests produced.
 A note specification has the form
 
 @example
-  @var{pitch}[@var{octavespec}][!][?][@var{duration}]
+  @var{pitch}[!][?][@var{duration}]
 @end example
 
-LilyPond will determine what accidentals to typeset depending on the key
-and context. The alteration refers to what note is heard, not to whether
-an accidental is printed.  A reminder accidental
+The alteration refers to what note is heard, not to whether an
+accidental is printed. This is done depending on the key and context.
+A reminder accidental
 @cindex reminder accidental
 @cindex @code{?}
 can be forced by adding an exclamation mark @code{!} after the pitch.  A
@@ -312,7 +314,7 @@ note head that includes a note name.  It is used in some publications by
 Hal-Leonard Inc.  music publishers.
 
 @lilypond[singleline,verbatim]
-\include "paper26.ly"
+\include "paper23.ly"
 \score {
         \notes { c'2 e'4 f' | g'1 }
         \paper { \translator { \EasyNotation } } 
@@ -340,9 +342,9 @@ the @code{-f ps} option of lilypond will produce the desired result.
 
 A tie connects two adjacent note heads of the same pitch.  When used
 with chords, it connects all of the note heads whose pitches match.
-Ties are indicated using the tilde symbol `@code{~}'.
-If you try to tie together chords which have no common pitches, a
-warning message will appear and no ties will be created.
+Ties are indicated using the tilde symbol `@code{~}'.  If you try to tie
+together chords which have no common pitches then no ties will be
+created.
 
 @lilypond[fragment,verbatim,center]
   e' ~ e' <c' e' g'> ~ <c' e' g'>
@@ -357,12 +359,16 @@ ties:
 @end lilypond
 
 In its meaning a tie is just a way of extending a note duration, similar
-to the augmentation dot: the following example are three ways of notating
+to the augmentation dot: the following example are two ways of notating
 exactly the same concept.
+@c
 @lilypond[fragment, singleline]
 c'2 c'4 ~ c'4
 @end lilypond
 
+
+Ties are printed through the @code{Tie} grob.
+
 @refbugs
 
 At present, the tie is implemented as a separate thing, temporally
@@ -371,7 +377,7 @@ between tied notes, dotted notes and plain notes.
 
 Tieing only a subset of the note heads of a chord is not supported in a
 simple way.  It can be achieved by moving the tie-engraver into Thread
-context and turning off ties per Thread.
+context and turning on an off ties per Thread.
 
 
 @node Tuplets
@@ -409,12 +415,24 @@ of tuplets.
 \times 2/3 { c''8 c c c c c }
 @end lilypond
 
+The format of the number is determined by the property
+@code{tupletNumberFormatFunction}. The default prints only the
+denominator, but if you set it to the Scheme function
+@code{fraction-tuplet-formatter} will print @var{num}:@var{den} instead.
+
+@cindex @code{tupletNumberFormatFunction}
+@cindex tuplet formatting 
+
+Tuplet brackets are printed as @code{TupletBracket} grobs
+
+
 @c .  {Rests}
 @node  Rests
 @subsection Rests
 @cindex Rests
 
-Rests are entered like notes, with note name `@code{r}'.
+Rests are entered like notes, with note name `@code{r}'. The grob is
+@code{Rest}.
 
 
 @c .  {Skip}
@@ -435,29 +453,6 @@ printed.  The shorthand is only available in Note and Chord mode.
 
 
 
-@node Note mode
-@subsection Note mode
-
-
-
-@cindex note mode
-@cindex @code{\notes}
-
-Note mode is the lexical mode generally used for inputting notes. The
-syntax is
-@example
-\notes @var{expr}
-@end example
-
-This instructs the tokenizer to interpret @var{expr} in note mode.  If a
-a sequence of alfabetical characters, like @code{foobar}, LilyPond first
-checks if @code{foobar} is a pitch name.  If it is not a pitch name,
-then it is treated as a string.
-
-Numbers and dots indicate durations, so you can enter floating point
-numbers in this mode.
-
-
 @node Staff notation
 @section Staff notation
 
@@ -506,6 +501,8 @@ semitones that should be added to the pitch given in the subsequent
 
 This command sets context property @code{Staff.keySignature}.
 
+The printed signature is a @code{KeySignature} grob.
+
 @cindex @code{keySignature}
 
 @c .  {Clef}
@@ -524,6 +521,8 @@ Shortcut for
   \property Staff.clefOctavation = @var{extra pitch of clefname}
 @end example
 
+Any change in these properties creates a clef (a @code{Clef} grob).
+
 Supported clef-names include 
 
 @itemize @bullet
@@ -588,7 +587,9 @@ Internally, this is a shortcut for doing
      \property Score.timeSignatureFraction = #'(@var{numerator} . @var{denominator})
 @end example
 
-[TODO: discuss options for layout]
+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.
 
 @c .   {Partial}
 @subsection Partial
@@ -661,7 +662,7 @@ documentation.
 @cindex repeatCommands
 @cindex defaultBarType
 
-Bar lines are created by the @code{Bar_line_engraver}. That engraver examines
+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
@@ -672,6 +673,7 @@ override default measure bars.
 @code{\bar ; }.  These settings take precedence over automatic @code{whichBar}
 settings. 
 
+@code{Bar_engraver} creates @code{BarLine} grobs.
 
 @c .   {Polyphony}
 @node Polyphony
@@ -705,7 +707,7 @@ in @code{NoteColumn}).
          \shiftOnn \stemUp ais
        }
        \context Voice=four {
-         \shiftOnnn \stemUp fis-2
+         \shiftOnnn \stemUp fis
        }
   >
 @end lilypond
@@ -721,7 +723,6 @@ correct manner.
   \context Voice = VC { \voiceTwo fis4~  fis4 f ~ f  } >
 @end lilypond
 
-
 LilyPond also vertically shifts rests that are opposite of a stem. 
 
 @lilypond[singleline,verbatim]
@@ -746,8 +747,6 @@ handles a few situations. When it can not cope, you are advised to use
 @code{force-hshift} of the NoteColumn grob and @code{staff-position} of
 the Rest grob to override typesetting decisions.
 
-[TODO: doc merge-differently-dotted]
-
 @node Beaming
 @section Beaming
 
@@ -885,9 +884,11 @@ control the number of beams through the properties
 @end lilypond
 @cindex @code{stemRightBeamCount}
 
-The beam symbol can be tweaked through @code{Voice.Beam}'s
-grob-properties @code{height} and @code{staff-position},
-in staff-spaces.
+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.
+
+[TODO: check: halfspaces?]
 
 Set @code{height} to zero, to get horizontal beams:
 
@@ -935,9 +936,6 @@ 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}:
 
-Maybe reinclude other slur features and move back to tricks?  Esp. the
-second example, how to fix, can be very helpful.
-
 @lilypond[fragment,relative,verbatim]
   \property Voice.Slur \set #'direction = #1
   \property Voice.Stem \set #'length = #5.5
@@ -1038,7 +1036,8 @@ output with 76 quarter notes per minute.
 @refbugs
   
 The tempo setting is not printed, but is currently only used in the MIDI
-output.
+output. You can trick lily into producing a metronome mark,
+though. Details   are in @ref{Text markup}.
   
 
 
@@ -1170,6 +1169,7 @@ 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
 
@@ -1298,8 +1298,8 @@ also be implemented.
 
 @cindex @code{\glissando}
 
-A glissando line can be requested by attaching a @code{\glissando} to a
-note:
+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'
@@ -1386,6 +1386,10 @@ is an example how to do it:
 @end lilypond
 
 
+Dynamics are grobs of @code{Voice.DynamicText} and
+@code{Voice.Hairpin}. They are put together on
+@code{Voice.DynamicLineSpanner} to align them vertically.
+
 
 @c .  {Repeats}
 @node Repeats
@@ -1460,10 +1464,8 @@ With alternative endings:
   \alternative { {d'2 d'} {f' f} }
 @end lilypond
 
-Folded repeats look like this:@footnote{Folded repeats offer little
-more over simultaneous music.  However, it is to be expected that
-more functionality -- especially for the MIDI backend -- will be
-implemented at some point in the future.}
+Folded repeats look like this:
+
 
 @lilypond[fragment,verbatim]
   c'1
@@ -1497,6 +1499,10 @@ after 1.4.
 It is possible to nest @code{\repeat}, although it probably is only
 meaningful for unfolded repeats.
 
+Folded repeats offer little more over simultaneous music.  However, it
+is to be expected that more functionality -- especially for the MIDI
+backend -- will be implemented at some point in the future.
+
 @node Manual repeat commands
 @subsection Manual repeat commands
 
@@ -1526,6 +1532,8 @@ command can be
 @end lilypond
 
 
+Repeats brackets are @code{Staff.VoltaBracket} grobs.
+
 @node Tremolo repeats
 @subsection Tremolo repeats
 @cindex tremolo beams
@@ -1543,6 +1551,9 @@ style.
 }
 @end lilypond
 
+Tremolo beams are @code{Voice.Beam} grobs. Single stem tremolos are
+@code{Voice.StemTremolo}.
+
 @refbugs
 
 
@@ -1587,9 +1598,12 @@ printed once, and then the pattern is replaced with a special sign.
 }
 @end lilypond
 
+The signs are represented by these grobs: @code{Voice.RepeatSlash} and
+@code{Voice.PercentRepeat} and @code{Voice.DoublePercentRepeat}.
+
 @refbugs
 
-You can not nest percent repeats, filling in the first measure with
+You can not nest percent repeats, e.g. filling in the first measure with
 slashes, and repeating that measure with percents.
 
 @node Rhythmic music
@@ -1744,12 +1758,13 @@ to the chords in both staffs, and set
   >  
 @end lilypond
 
-This command creates @code{Arpeggio} grobs. 
+This command creates @code{Voice.Arpeggio} grobs.  Cross staff arpeggios
+are @code{PianoStaff.Arpeggio}.
 
 @refbugs
 
- It is not possible to mix
-connected arpeggios and unconnected arpeggios at the same time.
+It is not possible to mix connected arpeggios and unconnected arpeggios
+at the same time.
 
 
 @c .    {VoiceFollower}
@@ -1778,6 +1793,7 @@ can be printed automatically. This is enabled if the property
   >  
 @end lilypond
 
+The associated grob is @code{Voice.VoiceFollower}.
 
 @c . {Lyrics}
 @node Lyrics
@@ -1847,6 +1863,8 @@ interpreted as melismata. Lyric syllables must be interpreted within a
        share the so -- ftware; }
 @end lilypond
 
+The Lyric syllables are @code{LyricsVoice.LyricSyllable} grobs.
+
 @cindex extender
 @cindex lyric extender
 @cindex melisma
@@ -1855,6 +1873,8 @@ As you can see, extender lines are entered as @code{__}.  This will
 create an extender, a line that extends over the entire duration of the
 lyric.  This line will run all the way to the start of the next lyric,
 so you may want to shorten it by using a blank lyric (using @code{_}).
+The grob for this symbol is @code{LyricsVoice.LyricExtender}.
+
 
 @cindex hyphen
 
@@ -1863,6 +1883,7 @@ 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}.
 
 @cindex Lyric hyphen
 
@@ -4446,8 +4467,7 @@ A mode switch is entered as a compound music expressions
 In each of these cases, these expressions do not add anything to the
 meaning of their arguments.  They are just a way to indicate that the
 arguments should be parsed in indicated mode.  The modes are treated in
-more detail in the @ref{Note entry}, @ref{Lyrics} and
-@ref{Chords}.
+more detail in @ref{Lyrics} and @ref{Chords}.
 
 You may nest different input modes.
 
index d6e7a59342a1d2626a046e6c5fa0fd183d5c91bd..4f14ac7c4028604264f740f2c3fab077c107234d 100644 (file)
@@ -2157,23 +2157,8 @@ Music (TM), have a look at the @ref{Mutopia project}.
 
 this should be on mutopia website.
 
-Ja, inderdaad: OOK on mutopia website.
-
-This helps people to generate .ps from .ly in general, create booklets
-etc, use dependencies.  Figure out where to include this.  Refman?
-
-
-Zie makefile rm lily-* discussies op gmd.
-
-
-
 ]
 
-@c UGH UGH: emacs' texinfo-all-menus-update also parses inside @ignore
-@c blocks.
-
-@c @no de Pre-cooked makefile
-@c @s ection Pre-cooked makefile
 
 @c waar deze info?  is uiteindelijk wel handig, schat ik.
 [TODO: cut blabla]
diff --git a/FAQ.txt b/FAQ.txt
index 41feee5f3b31e44d928d3e8e7a58b6de190286b8..0db39587759c29974f4a20c4bd1edf0271b306ad 100644 (file)
--- a/FAQ.txt
+++ b/FAQ.txt
@@ -44,22 +44,6 @@ yourself:
          autoconf
          configure
 
-Is there an emacs mode?
------------------------
-
-   Yes.  It is included with the source archive as `lilypond-mode.el'
-and `lilypond-font-lock.el'.  If you have an RPM, it is in
-`/usr/share/doc/lilypond-X/'.  You have to install it yourself.
-
-   Add this to your ~/.emacs or ~/.emacs.el:
-         (load-library "lilypond-mode.el")
-         (setq auto-mode-alist
-           (cons '("\\.ly$" . LilyPond-mode) auto-mode-alist))
-         (add-hook 'LilyPond-mode-hook (lambda () (turn-on-font-lock)))
-
-   If you have the latest LilyPond-1.3.x Debian package, LilyPond-mode
-is automatically loaded, so you need not modify your ~/.emacs file.
-
 I downloaded the windows32 port, and it doesn't match the website!
 ------------------------------------------------------------------
 
index b4eeade2943ced984d92e78f6beda2dca60386d7..97f4d4d3593a786d17891dd1c8adaadc5caff4f2 100644 (file)
@@ -10,138 +10,123 @@ Obtaining
 ftp://ftp.cs.uu.nl/pub/GNU/LilyPond/
 (ftp://ftp.cs.uu.nl/pub/GNU/LilyPond/).
 
-   _If you upgrade by patching do remember to rerun autoconf after
-applying the patch_.
+   There are three options for downloading sources.
 
-   If you do not want to download the entire archive for each version,
-the safest method for upgrading is to use `xdelta', see
-`ftp://ftp.xcf.berkeley.edu/pub/xdelta/'.
+   * if you don't have any version, then you can  download  the entire
+     `.tar.gz' file.
 
-   The following command produces `lilypond-1.3.122.tar.gz' from
-`lilypond-1.3.121' identical (up to compression dates) to the .122 on
-the FTP site.
-       xdelta patch lilypond-1.3.121-1.3.122.xd lilypond-1.3.121.tar.gz
+   * if you have an unpacked source   tree of a previous version, you
+     may use the diffs .
 
-Prerequisites
-=============
+     _If you upgrade by patching do remember to rerun autoconf after
+     applying the patch_.
+
+   * if you have the `.tar.gz' file of a previous release, you can use
+     xdelta (ftp://ftp.xcf.berkeley.edu/pub/xdelta/).   This is much
+     safer than using normal diffs, and is the recommended way.
 
-   For compilation you need:
+     The following command produces `lilypond-1.3.122.tar.gz' from
+     `lilypond-1.3.121' identical (up to compression dates) to the .122
+     on the FTP site.
+            xdelta patch lilypond-1.3.121-1.3.122.xd lilypond-1.3.121.tar.gz
 
-   * A GNU system: GNU LilyPond is known to run on these GNU systems:
-     Linux     (PPC, intel), FreeBSD, AIX, NeXTStep, IRIX, Digital Unix
-     and     Solaris.
+Build requirements
+==================
 
-   * Lots of disk space: LilyPond takes between 30 and 100 mb to
-     compile if you use debugging information.  If you are short on
-     disk-space run configure with `--disable-debugging'.
+   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
+(http://appel.lilypond.org/lilypond/gnu-windows/).
 
-   * Although we recommend to use Unix, LilyPond is known to run on
-     Windows NT/95/98 as well.  See Section Windows NT/95,es.
+   You need the following packages to compile Lilypond.
 
-   * A reasonable C++ compiler:  EGCS 1.1, GCC 2.95.2 or newer. Check
-     out `ftp://ftp.gnu.org/gnu/gcc/'.
+   * A reasonably new C++ compiler:  EGCS 1.1, GCC 2.95.2 or newer.
+     Check out the gcc site (ftp://ftp.gnu.org/gnu/gcc/).
 
-   * Python 1.5, Check out `ftp://ftp.python.org' or
-     `ftp://ftp.cwi.nl/pub/python'.
+   * Python 1.5, Check out the python website (http://www.python.org).
 
-   * GUILE 1.3.4 or newer,  check out
-     http://www.gnu.org/software/guile/guile.html
+   * GUILE 1.3.4 or newer,  check out the GUILE webpage
      (http://www.gnu.org/software/guile/guile.html).  Version 1.4 is
      recommended for better performance.
 
-   * GNU Make.  Check out ftp://ftp.gnu.org/gnu/make/
+   * GNU Make.  Check out the GNU make FTP directory
      (ftp://ftp.gnu.org/gnu/make/).
 
-   * Flex (version 2.5.4a or newer).  Check out
-     ftp://ftp.gnu.org/pub/gnu/non-gnu/flex/
-     (ftp://ftp.gnu.org/pub/gnu/non-gnu/flex/).
+   * Flex (version 2.5.4a or newer).  Check out the Flex webpage
+     (http://www.gnu.org/software/flex/).
 
-   * Bison (version 1.25 or newer).  Check out
-     ftp://ftp.gnu.org/gnu/bison/ (ftp://ftp.gnu.org/gnu/bison/).
+   * Bison (version 1.25 or newer).  Check out the bison webpage
+     (http://www.gnu.org/software/bison/)
 
-   * 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.
 
-   * Texinfo (version 4.0 or newer).  Check out
-     ftp://ftp.gnu.org/gnu/texinfo/ (ftp://ftp.gnu.org/gnu/texinfo/).
-     Most documentation is in texinfo.
+     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.
 
-   * The geometry package for LaTeX is needed to use ly2dvi.  Available
-     at
-     ftp://ftp.ctan.org/tex-archive/macros/latex/contrib/supported/geometry
-     (ftp://ftp.ctan.org/tex-archive/macros/latex/contrib/supported/geometry)
-     or at mirror site ftp://ftp.dante.de (ftp://ftp.dante.de)
+   * Texinfo (version 4.0 or newer).  The documentation of lily is
+     written in texinfo.  Check out the texinfo FTP directory
+     (ftp://ftp.gnu.org/gnu/texinfo/).
+
+   * The geometry package for LaTeX is needed to use ly2dvi.  It is
+     available at the FTP directory for `geometry'
+     (ftp://ftp.ctan.org/tex-archive/macros/latex/contrib/supported/geometry).
+     This package is normally included with the TeX distribution.
 
    * MetaPost, needed for generating PostScript fonts. Please note that
      tetex-0.4pl8 (included with Red Hat 5.x) does not include
      `mfplain.mp', which is needed for producing the scalable font
      files.
 
-     If you do not want to use PostScript output, edit `mf/GNUmakefile',
-     removing the line saying `PFA_FILES='
+     If you don't have MetaPost and don't want to use PostScript
+     output, then edit `mf/GNUmakefile', removing the line saying
+     `PFA_FILES='.
 
    * kpathsea, a library for searching (TeX) files.  `kpathsea' is
      usually included with your installation of TeX.
 
 
-Running
-=======
+Running requirements
+====================
 
    GNU LilyPond does use a lot of resources. For operation you need the
 following software
 
    * TeX.
 
-   * A PostScript printer and/or viewer (such as Ghostscript) is
-     strongly     recommended.  Xdvi will show all embedded PostScript
-     too if you have     Ghostscript installed.
+   * Xdvi and ghostscript
 
-   * GUILE 1.3.4, or newer.  Check out
-     http://www.gnu.org/software/guile/
-     (http://www.gnu.org/programs/guile.html)
+   * GUILE 1.3.4, or newer.  Check out the GUILE webpage
+     (http://www.gnu.org/software/guile.html)
 
    For running LilyPond successfully you have to help TeX and MetaFont
 find various files.  The recommended way of doing so is adjusting the
 environment variables in the start-up scripts of your shell. Appropriate
-Csh and sh scripts are left in `buildscripts/out/lilypond-profile' and
+Csh and bourne sh scripts are left in
+`buildscripts/out/lilypond-profile' and
 `buildscripts/out/lilypond-login' after compilation.
 
-   The empty path component represents TeX and MetaFont's default search
-paths.  Scripts with the proper paths for the bourne and C-shell
-respectively are generated in `buildscripts/out/lilypond-profile' and
-`buildscripts/out/lilypond-login' during compilation.
-
    LilyPond is a big and slow program.  A fast CPU and plenty of RAM is
 recommended for comfortable use.
 
-Website
-=======
-
-   The website is the most convenient form to use for reading the
-documentation on-line documentation. It is made by entering
+Website requirements
+====================
 
+   The documentation comes in the form of a website. You can view this
+website on the internet, but you can also build it locally. This process
+requires a successful compile of lilypond. The website is built by
+issuing
 
        make web-doc
-   This does require a functioning LilyPond.  The executable doesn't
-have to be installed, though.
 
-   If you want to auto-generate Lily's website, you'll need some
-additional conversion tools.
+   Building the website requires  some additional tools:
 
-   * xpmtoppm (from the netpbm package: the Portable Bitmap Utilities)
-     (For Red Hat Linux             users: it is included within the
-     package libgr-progs).     The original is at
-     ftp://ftp.x.org/contrib/utilities/netpbm-1mar1994.p1.tar.gz
+   * xpmtoppm (from the netpbm package: the Portable Bitmap Utilities).
+     The original is at the netpbm FTP site
      (ftp://ftp.x.org/contrib/utilities/netpbm-1mar1994.p1.tar.gz)
 
-   * pnmtopng (also in libgr-progs for Red Hat). The original is at
-     ftp://swrinde.nde.swri.edu/pub/png/applications/pnmtopng-2.37.2.tar.gz
-     (ftp://swrinde.nde.swri.edu/pub/png/applications/pnmtopng-2.37.2.tar.gz).i
-
-     The version of `pnmtopng' that is distributed with Red Hat 5.1 and
-     5.2 contains a bug: pnmtopng is dynamically linked to the wrong
-     version of libpng.
+   * pnmtopng. The original is at in the pnmtopng FTP site
+     (ftp://swrinde.nde.swri.edu/pub/png/applications/pnmtopng-2.37.2.tar.gz).
 
    * Bibtex2html (http://www.lri.fr/~filliatr/ftp/bibtex2html/), or
      Bib2html (http://www.uni-koblenz.de/ag-ki/ftp/bib2html/).
@@ -158,88 +143,46 @@ additional conversion tools.
 Configuring and compiling
 =========================
 
-   to install GNU LilyPond, simply type:
+   to install GNU LilyPond, type:
        gunzip -c lilypond-x.y.z | tar xf -
        cd lilypond-x.y.z
-       ./configure             # fill in your standard prefix with --prefix
+       ./configure             # run with --help to see appropriate options
        make
        make install
+             sh buildscripts/clean-fonts.sh
 
-   This will install a number of files, something close to:
-
-       /usr/local/man/man1/midi2ly.1
-       /usr/local/man/man1/abc2ly.1
-       /usr/local/man/man1/etf2ly.1
-       /usr/local/man/man1/convert-ly.1
-       /usr/local/man/man1/lilypond-book.1
-       /usr/local/man/man1/lilypond.1
-       /usr/local/bin/lilypond
-       /usr/local/bin/midi2ly
-       /usr/local/bin/convert-ly
-       /usr/local/bin/lilypond-book
-       /usr/local/bin/abc2ly
-       /usr/local/bin/pmx2ly
-       /usr/local/bin/musedata2ly
-       /usr/local/bin/etf2ly
-       /usr/local/share/lilypond/*
-       /usr/local/share/locale/{....}/LC_MESSAGES/lilypond.mo
-
-   The above assumes that you are root and have the GNU development
-tools, and your make is GNU make.  If this is not the case, you can
-adjust your environment variables to your taste:
-
-
-       export CPPFLAGS="-I /home/me/my_include -DWEIRD_FOOBAR"
-       ./configure
-
-   `CPPFLAGS' are the preprocessor flags.
-
-   The configure script is Cygnus configure, and it will accept
-`--help'. If you are not root, you will probably have to make it with a
-different `--prefix' option.  Our favourite location is
+   If you are doing an upgrade, you should remove all `feta' `.pk' and
+`.tfm' files.  A script has been provided to do the work for you, see
+`buildscripts/clean-fonts.sh'.
 
+   If you are not root, you should choose a `--prefix' argument that
+points into your home directory, eg.
 
        ./configure --prefix=$HOME/usr
 
-   In this case, you will have to set up MFINPUTS, and TEXINPUTS
-accordingly.
-
-   Since GNU LilyPond currently is beta, you are advised to also use
-
-
-       --enable-debugging
-       --enable-checking
-
-   Options to configure include:
-
-``--enable-printing''
-     Enable debugging print routines (lilypond `-D' option)
-
-``--enable-optimise''
-     Set maximum optimisation: compile with `-O2'.  This can be
-     unreliable on some compiler/platform combinations (eg, DEC Alpha
-     and PPC)
-
-``--enable-profiling''
-     Compile with support for profiling.
+   In this case, you have to insert the contents of
+`buildscripts/out/lilypond-login' or
+`buildscripts/out/lilypond-profile' into your start up scripts by hand.
 
-``--enable-config=CONF''
-     Output to different configuration files.  Enables different binary
-        builds alongside eachother, eg, multi-configuration (debugging,
-        profiling), or multi-platform builds.  Use `make conf=CONF' to
-        build for a specific configuration.
+Configuring for multiple platforms
+==================================
 
-   All options are documented in the `configure' help The option
-`--enable-optimise' is recommended for Real Life usage.
+   If you want to build multiple versions of LilyPond with different
+configuration settings, you can use the `--enable-config=CONF' option
+of configure.  You should use `make conf=CONF' to generate the output
+in `out-CONF'.  Example: suppose I want to build with and without
+profiling.  Then I'd use the following for the normal build,
 
-   If you do
+           ./configure --prefix=~ --enable-checking
+           make
+           make install
 
+   and for the profiling version, I specify a different configuration.
 
-       make all
 
-   everything will be compiled, but nothing will be installed.  The
-resulting binaries can be found in the subdirectories `out/' (which
-contain all files generated during compilation).
+           ./configure --prefix=~ --enable-profiling --enable-config=prof --disable-checking
+           make conf=prof
+           make conf=prof install
 
 Emacs mode
 ==========
@@ -255,72 +198,28 @@ is in `/usr/share/doc/lilypond-X/'.  You have to install it yourself.
          (add-hook 'LilyPond-mode-hook (lambda () (turn-on-font-lock)))
 
    If you have the latest LilyPond-1.3.x Debian package, LilyPond-mode
-is automatically loaded, so you need not modify your ~/.emacs file.
-
-Configuring for multiple platforms
-==================================
-
-   If you want to build multiple versions of LilyPond with different
-configuration settings, you can use the `--enable-config=CONF' option.
-You should use `make conf=CONF' to generate the output in `out-CONF'.
-Example: suppose I want to build with and without profiling.  Then I'd
-use the following for the normal build,
-
-
-           ./configure --prefix=~ --disable-optimise --enable-checking
-           make
-           make install
-
-   and for the profiling version, I specify a different configuration.
-
-
-           ./configure --prefix=~ --enable-profiling --enable-config=prof --enable-optimise --disable-checking
-           make conf=prof
-           make conf=prof install
-
-Installing
-==========
-
-   if you have done a successful `make', then a simple
-
-
-       make install
-
-   should do the trick.
-
-   If you are doing an upgrade, please remember to remove obsolete
-`.pk' and `.tfm' files of the fonts.  A script has been provided to do
-the work for you, see `bin/clean-fonts.sh'.
+is automatically loaded, so you need not modify your `~/.emacs' file.
 
 Red Hat Linux
 =============
 
-   Red Hat Linux users can compile an RPM.  A spec file is in
-`make/out/lilypond.spec'; it is distributed along with the sources.
+   Red Hat 7.0 i386 RPMS are available from
+`ftp://ftp.cs.uu.nl/pub/GNU/LilyPond/RedHat/'.
 
-   You can make the rpm by issuing
+   You can also compile them yourself.  A spec file is in
+`make/out/lilypond.spec'. This file is distributed along with the
+sources.  You can make the rpm by issuing
 
        rpm -tb lilypond-x.y.z.tar.gz
        rpm -i /usr/src/redhat/RPMS/i386/lilypond-x.y.z
 
-   Precompiled Red Hat 7.0 i386 RPMS are available from
-`ftp://ftp.cs.uu.nl/pub/GNU/LilyPond/RedHat/'.
+   For running on a Red Hat system you need these packages: guile,
+tetex, tetex-dvips, libstdc++, python, ghostscript.
 
    For compilation on a Red Hat system you need these packages, in
-addition to the those needed for running:
-   * glibc-devel
-
-   * libstdc++-devel
-
-   * guile-devel
-
-   * flex
-
-   * bison
-
-   * texinfo
-
-   * tetex-devel
+addition to the those needed for running: glibc-devel, gcc-c++,
+libstdc++-devel, guile-devel, flex, bison, texinfo, tetex-devel, groff,
+libgr-progs.
 
 SuSE
 ====
@@ -329,6 +228,11 @@ SuSE
 
    Install `tetex', `te_mpost', `te_kpath'.
 
+Mandrake
+========
+
+   [TODO]
+
 Debian GNU/Linux
 ================
 
@@ -412,69 +316,15 @@ interfere with your build, you may want to do this before the build too:
 
        dpkg --purge lilypond lilypond1.3
 
-Windows NT/95
-=============
-
-   Separate instructions on building for W32 are available; See the
-files in `Documentation/ntweb/', included with the sources.
-
 Problems
 ========
 
    For help and questions use <help-gnu-music@gnu.org> and
 <gnu-music-discuss@gnu.org>.  Please consult the faq before mailing
-your problems.
-
-   If you find bugs, please send bug reports to <bug-gnu-music@gnu.org>.
-
-   Bugs that are LilyPond's fault are listed in our TODO list on the
-web, or demonstrated in `input/bugs/'.
-
-   Bugs that are not LilyPond's fault are documented here.
-
-LinuxPPC Bugs:
-**************
-
-   * egcs-1.1.2-12c (stock LinuxPPC R5) has a serious bug, upgrade to
-     fixed in egcs-1.1.2-12f or gcc-2.95-0a,
-     `ftp://dev.linuxppc.org/users/fsirl/R5/RPMS/ppc/'
-
-   * egcs-1.0.2 (LinuxPPC R4): all compiling with `-O2' is suspect, in
-     particular guile-1.3, and Lily herself will break.
-
-Linux-i386
-**********
-
-   * SuSE6.2 and similar platforms (glibc 2.1, libstdc++ 2.9.0)
-
-     Lily will crash during parsing (which suggests a C++ library
-     incompatibility).  Precise cause, precise platform description or
-     solution are not known.
-
-     Note that this only happens on some computers with the said
-     platform.
-
-   * libg++ 2.7
-
-     LilyPond occasionally crashes while parsing the initialisation
-     files.  This is a very obscure bug, and usually entering the
-     commandline differently "fixes" it.
-
-               lilypond input.ly
-
-     and
-               lilypond -I. ./input.ly
-     makes a difference
-
-     Typical stacktrace:
-               SIGSEGV
-               __libc_malloc (bytes=16384)
-               ?? ()
-               yyFlexLexer::yy_create_buffer ()
-               Includable_lexer::new_input (this=0x8209a00, s={strh_ = {
+your problems.  If you find bugs, please send bug reports to
+<bug-gnu-music@gnu.org>.
 
-     This behaviour has been observed with machines that have old libg++
-     versions (LinuxPPC feb '98, Red Hat 4.x).
+   Bugs that are not fault of LilyPond are documented here.
 
 Solaris:
 ********
index c07974d42cf537de68757b2bd993bac75164002e..738fbcd200fc7b18b235e204418b37b5723ed7e0 100644 (file)
@@ -24,7 +24,8 @@ Requirements
 ============
 
    For the compilation and running of LilyPond you need some additional
-packages.  Please refer to the installation instructions.
+packages.  Please refer to the installation instructions in
+`INSTALL.txt'.
 
    NOTE: If you downloaded a binary (.rpm or a W95/NT .zip file), you
 don't have to compile LilyPond.
@@ -38,35 +39,29 @@ are in the toplevel directory, as INSTALL.txt
 Documentation
 =============
 
-   The real documentation is the directory Documentation/
+   The documentation is available online at
+`http://www.cs.uu.nl/~hanwen/lilypond/index.html'.  You can also build
+it locally. This does require a working LilyPond binary.  The following
+formats are supported:
+   * HTML. Refer to INSTALL.txt for information on how to make the HTML
+     documentation.
 
-   If you want to read the documentation online, these are options:
-   * use HTML. Refer to INSTALL.txt for information on how to make the
-     HTML documentation.
+   * `.dvi',  for the tutorial and reference manual. Do
 
-   * use HTML. Point your browser to
-     `http://www.cs.uu.nl/~hanwen/lilypond/index.html'.
+           make -C Documentation/user/ dvi
+     The printable documentation is left in `Documentation/user/out/'.
 
-   * use `.dvi',  for the tutorial and reference manual. Do
-
-            make -C Documentation/user/ dvi
-
-     You need a working LilyPond binary to create the DVI and HTML
-     sources.
-
-   * use ASCII. Do using
-               make doc
+   * paper. Create the .dvi documentation, and print it with dvips.
 
 
 Comments
 ========
 
-   LilyPond is a long way from finished and polished.  We do appreciate
-criticism, comments, bugreports, patches, etc., but please,
+   LilyPond is a long way from finished and polished, so we please send
+your criticism, comments, bugreports, patches, etc., to the mailing
+list.  and _not_ to us personally.
 
-          Please send your e-mail to one of the MAILING LISTS
-
-   and _not_ to us personally. We have the following mailing lists:
+   We have the following mailing lists:
 
    * info-gnu-music@gnu.org
      (http://mail.gnu.org/mailman/listinfo/info-gnu-music) is a
@@ -74,6 +69,10 @@ criticism, comments, bugreports, patches, etc., but please,
      This list is moderated; ask     David R. Linn <drl@gnu.org> or
      Han-Wen <hanwen@cs.uu.nl> to send announcements for this list.
 
+   * gnu-music-discuss@gnu.org
+     (http://mail.gnu.org/mailman/listinfo/gnu-music-discuss)   For
+     general discussions concerning LilyPond.
+
    * help-gnu-music@gnu.org
      (http://mail.gnu.org/mailman/listinfo/help-gnu-music)     For help
      with using LilyPond.
@@ -90,9 +89,6 @@ Windows 32
 package, since it might contain more documentation
 `ftp://ftp.cs.uu.nl/pub/GNU/LilyPond/'
 
-   If you decide to build LilyPond from source, please read the
-INSTALL.txt document first, especially the Windows NT/95 section.
-
 Caveats
 =======
 
diff --git a/VERSION b/VERSION
index cd920cd45584941ce1f6aea59b6c5b929d8c7323..c2c931e21bd9cd177e9b3413f895ed84f1814fb2 100644 (file)
--- a/VERSION
+++ b/VERSION
@@ -1,8 +1,8 @@
 PACKAGE_NAME=LilyPond
 MAJOR_VERSION=1
 MINOR_VERSION=3
-PATCH_LEVEL=144
-MY_PATCH_LEVEL=jcn6
+PATCH_LEVEL=145
+MY_PATCH_LEVEL=
 
 # use the above to send patches: MY_PATCH_LEVEL is always empty for a
 # released version.
index b5684b86ada85f9c6747714eb952b96282e42eed..8f08ec9a813ac0a50f8cad10e5ec7d7c3d0f8ba7 100644 (file)
@@ -1,3 +1,5 @@
+dnl WARNING WARNING WARNING WARNING
+dnl do not edit! this is aclocal.m4, generated from stepmake/aclocal.m4
 dnl aclocal.m4   -*-shell-script-*-
 dnl StepMake subroutines for configure.in
 
@@ -15,12 +17,11 @@ AC_DEFUN(AC_STEPMAKE_BIBTEX2HTML, [
 
 AC_DEFUN(AC_STEPMAKE_COMPILE, [
     # -O is necessary to get inlining
-    OPTIMIZE=""
     CFLAGS=${CFLAGS:-""}
     CXXFLAGS=${CXXFLAGS:-$CFLAGS}
     LDFLAGS=${LDFLAGS:-""}
     checking_b=yes
-    optimise_b=no
+    optimise_b=yes
     profile_b=no
     debug_b=yes
 
@@ -32,19 +33,10 @@ AC_DEFUN(AC_STEPMAKE_COMPILE, [
     [  --enable-debugging      compile with debugging info.  Default: on],
     [debug_b=$enableval])
 
-    AC_ARG_ENABLE(optimise,
-    [  --enable-optimise       use maximal speed optimisations.  Default: off],
-    [optimise_b=$enableval])
-    
     AC_ARG_ENABLE(profiling, 
     [  --enable-profiling      compile with gprof support.  Default: off],
     [profile_b=$enableval])
     
-    AC_ARG_ENABLE(mingw-prefix,
-    [  --enable-mingw-prefix=DIR
-                          set the mingw32 directory (standalone windows32 exes)],
-    [MINGWPREFIX=$enableval],
-    [MINGWPREFIX=no])
 
     if test "$checking_b" = no; then
        # ugh
@@ -56,9 +48,6 @@ AC_DEFUN(AC_STEPMAKE_COMPILE, [
        OPTIMIZE="-O2 -finline-functions"
     fi
 
-    if test "$optimise_b" = no; then
-       OPTIMIZE=""
-    fi
 
     if test $profile_b = yes; then
        EXTRA_LIBES="-pg"
@@ -69,11 +58,6 @@ AC_DEFUN(AC_STEPMAKE_COMPILE, [
        OPTIMIZE="$OPTIMIZE -g"
     fi
 
-    # however, C++ support in mingw32 v 0.1.4 is still flaky
-    if test x$MINGWPREFIX != xno; then 
-       ICFLAGS="-I$MINGWPREFIX/include"
-       ILDFLAGS="-$MINGWPREFIX/lib"
-    fi
 
     AC_PROG_CC
     LD='$(CC)'
@@ -434,16 +418,13 @@ AC_DEFUN(AC_STEPMAKE_KPATHSEA, [
     [  --with-kpathsea         use kpathsea lib.  Default: on],
     [kpathsea_b=$enableval])
 
-    if test $kpathsea_b = yes; then    
+    if test "$kpathsea_b" = "yes"; then        
        AC_HAVE_HEADERS(kpathsea/kpathsea.h)
        AC_CHECK_LIB(kpathsea, kpse_find_file)
-       # urg: kpse_find_tfm is a #define, how to check for this?
-       # AC_CHECK_LIB(kpathsea, kpse_find_tfm)
-       # AC_CHECK_FUNCS(kpse_find_file kpse_find_tfm,, AC_STEPMAKE_WARN(Cannot find kpathsea functions.  You may have to create TFM files manually.))
-       AC_CHECK_FUNCS(kpse_find_file,, AC_STEPMAKE_WARN(Cannot find kpathsea functions.  You may have to create TFM files manually.) kpathsea_b=no)
+       AC_CHECK_FUNCS(kpse_find_file,, AC_ERROR(Cannot find kpathsea functions.  Rerun with --without-kpathsea.) )
     fi
     AC_MSG_CHECKING(whether to use kpathsea)
-    if test $kpathsea_b = yes; then
+    if test "$kpathsea_b" = yes; then
         AC_MSG_RESULT(yes)
        KPATHSEA=1
     else
index 9ebc5b08f39e28ecf8ec4c66e2d9232f98e7f0a0..edfdbda20a9e1d4f1c5d69a69d54a028e81e89ce 100755 (executable)
--- a/configure
+++ b/configure
@@ -71,13 +71,8 @@ ac_help="$ac_help
   --enable-checking       set runtime checks (assert calls).  Default: on"
 ac_help="$ac_help
   --enable-debugging      compile with debugging info.  Default: on"
-ac_help="$ac_help
-  --enable-optimise       use maximal speed optimisations.  Default: off"
 ac_help="$ac_help
   --enable-profiling      compile with gprof support.  Default: off"
-ac_help="$ac_help
-  --enable-mingw-prefix=DIR
-                          set the mingw32 directory (standalone windows32 exes)"
 ac_help="$ac_help
   --with-localedir=LOCALE use LOCALE as locale dir.  Default:
                             PREFIX/share/locale "
@@ -631,12 +626,12 @@ fi
     fi
 
     echo $ac_n "checking Package""... $ac_c" 1>&6
-echo "configure:635: checking Package" >&5
+echo "configure:630: checking Package" >&5
     if test "x$PACKAGE" = "xSTEPMAKE"; then
        echo "$ac_t""Stepmake package!" 1>&6
 
        echo $ac_n "checking builddir""... $ac_c" 1>&6
-echo "configure:640: checking builddir" >&5
+echo "configure:635: checking builddir" >&5
        if test "$srcdir" = "."; then
            builddir=.
        else
@@ -674,7 +669,7 @@ ac_configure=$ac_aux_dir/configure # This should be Cygnus configure.
         echo "$ac_t""$PACKAGE" 1>&6
 
        echo $ac_n "checking builddir""... $ac_c" 1>&6
-echo "configure:678: checking builddir" >&5
+echo "configure:673: checking builddir" >&5
        if test "$srcdir" = "."; then
            builddir=.
            srcdir_build=no
@@ -694,7 +689,7 @@ echo "configure:678: checking builddir" >&5
        fi
 
        echo $ac_n "checking for stepmake""... $ac_c" 1>&6
-echo "configure:698: checking for stepmake" >&5
+echo "configure:693: checking for stepmake" >&5
        # Check for installed stepmake
        if test -d $stepmake; then
            echo "$ac_t""$stepmake" 1>&6
@@ -815,7 +810,7 @@ else { echo "configure: error: can not run $ac_config_sub" 1>&2; exit 1; }
 fi
 
 echo $ac_n "checking host system type""... $ac_c" 1>&6
-echo "configure:819: checking host system type" >&5
+echo "configure:814: checking host system type" >&5
 
 host_alias=$host
 case "$host_alias" in
@@ -840,7 +835,7 @@ do
 # Extract the first word of "$ac_prog", so it can be a program name with args.
 set dummy $ac_prog; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:844: checking for $ac_word" >&5
+echo "configure:839: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_MAKE'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -875,7 +870,7 @@ do
 # Extract the first word of "$ac_prog", so it can be a program name with args.
 set dummy $ac_prog; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:879: checking for $ac_word" >&5
+echo "configure:874: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_FIND'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -912,7 +907,7 @@ do
 # Extract the first word of "$ac_prog", so it can be a program name with args.
 set dummy $ac_prog; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:916: checking for $ac_word" >&5
+echo "configure:911: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_TAR'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -947,7 +942,7 @@ test -n "$TAR" || TAR="error"
        # Extract the first word of "bash", so it can be a program name with args.
 set dummy bash; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:951: checking for $ac_word" >&5
+echo "configure:946: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_path_BASH'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -987,7 +982,7 @@ fi
        # Extract the first word of "bash", so it can be a program name with args.
 set dummy bash; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:991: checking for $ac_word" >&5
+echo "configure:986: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_path_SHELL'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -1024,7 +1019,7 @@ fi
        # Extract the first word of "bash", so it can be a program name with args.
 set dummy bash; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1028: checking for $ac_word" >&5
+echo "configure:1023: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_path_BASH'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -1065,7 +1060,7 @@ fi
     # Extract the first word of "${PYTHON:-python}", so it can be a program name with args.
 set dummy ${PYTHON:-python}; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1069: checking for $ac_word" >&5
+echo "configure:1064: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_path_PYTHON'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -1209,12 +1204,11 @@ subdirs="stepmake"
 # Uncomment the configuration options your package needs.
 
     # -O is necessary to get inlining
-    OPTIMIZE=""
     CFLAGS=${CFLAGS:-""}
     CXXFLAGS=${CXXFLAGS:-$CFLAGS}
     LDFLAGS=${LDFLAGS:-""}
     checking_b=yes
-    optimise_b=no
+    optimise_b=yes
     profile_b=no
     debug_b=yes
 
@@ -1232,13 +1226,6 @@ if test "${enable_debugging+set}" = set; then
 fi
 
 
-    # Check whether --enable-optimise or --disable-optimise was given.
-if test "${enable_optimise+set}" = set; then
-  enableval="$enable_optimise"
-  optimise_b=$enableval
-fi
-
-    
     # Check whether --enable-profiling or --disable-profiling was given.
 if test "${enable_profiling+set}" = set; then
   enableval="$enable_profiling"
@@ -1246,14 +1233,6 @@ if test "${enable_profiling+set}" = set; then
 fi
 
     
-    # Check whether --enable-mingw-prefix or --disable-mingw-prefix was given.
-if test "${enable_mingw_prefix+set}" = set; then
-  enableval="$enable_mingw_prefix"
-  MINGWPREFIX=$enableval
-else
-  MINGWPREFIX=no
-fi
-
 
     if test "$checking_b" = no; then
        # ugh
@@ -1268,9 +1247,6 @@ EOF
        OPTIMIZE="-O2 -finline-functions"
     fi
 
-    if test "$optimise_b" = no; then
-       OPTIMIZE=""
-    fi
 
     if test $profile_b = yes; then
        EXTRA_LIBES="-pg"
@@ -1281,16 +1257,11 @@ EOF
        OPTIMIZE="$OPTIMIZE -g"
     fi
 
-    # however, C++ support in mingw32 v 0.1.4 is still flaky
-    if test x$MINGWPREFIX != xno; then 
-       ICFLAGS="-I$MINGWPREFIX/include"
-       ILDFLAGS="-$MINGWPREFIX/lib"
-    fi
 
     # Extract the first word of "gcc", so it can be a program name with args.
 set dummy gcc; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1294: checking for $ac_word" >&5
+echo "configure:1265: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -1320,7 +1291,7 @@ if test -z "$CC"; then
   # Extract the first word of "cc", so it can be a program name with args.
 set dummy cc; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1324: checking for $ac_word" >&5
+echo "configure:1295: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -1371,7 +1342,7 @@ fi
       # Extract the first word of "cl", so it can be a program name with args.
 set dummy cl; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1375: checking for $ac_word" >&5
+echo "configure:1346: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -1403,7 +1374,7 @@ fi
 fi
 
 echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works""... $ac_c" 1>&6
-echo "configure:1407: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5
+echo "configure:1378: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5
 
 ac_ext=c
 # CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
@@ -1414,12 +1385,12 @@ cross_compiling=$ac_cv_prog_cc_cross
 
 cat > conftest.$ac_ext << EOF
 
-#line 1418 "configure"
+#line 1389 "configure"
 #include "confdefs.h"
 
 main(){return(0);}
 EOF
-if { (eval echo configure:1423: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:1394: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   ac_cv_prog_cc_works=yes
   # If we can't run a trivial program, we are probably using a cross compiler.
   if (./conftest; exit) 2>/dev/null; then
@@ -1445,12 +1416,12 @@ if test $ac_cv_prog_cc_works = no; then
   { echo "configure: error: installation or configuration problem: C compiler cannot create executables." 1>&2; exit 1; }
 fi
 echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler""... $ac_c" 1>&6
-echo "configure:1449: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5
+echo "configure:1420: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5
 echo "$ac_t""$ac_cv_prog_cc_cross" 1>&6
 cross_compiling=$ac_cv_prog_cc_cross
 
 echo $ac_n "checking whether we are using GNU C""... $ac_c" 1>&6
-echo "configure:1454: checking whether we are using GNU C" >&5
+echo "configure:1425: checking whether we are using GNU C" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_gcc'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -1459,7 +1430,7 @@ else
   yes;
 #endif
 EOF
-if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:1463: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
+if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:1434: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
   ac_cv_prog_gcc=yes
 else
   ac_cv_prog_gcc=no
@@ -1478,7 +1449,7 @@ ac_test_CFLAGS="${CFLAGS+set}"
 ac_save_CFLAGS="$CFLAGS"
 CFLAGS=
 echo $ac_n "checking whether ${CC-cc} accepts -g""... $ac_c" 1>&6
-echo "configure:1482: checking whether ${CC-cc} accepts -g" >&5
+echo "configure:1453: checking whether ${CC-cc} accepts -g" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_cc_g'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -1525,7 +1496,7 @@ fi
 
 # AC_HAVE_HEADERS(limits.h malloc.h string.h unistd.h values.h)
 echo $ac_n "checking how to run the C preprocessor""... $ac_c" 1>&6
-echo "configure:1529: checking how to run the C preprocessor" >&5
+echo "configure:1500: checking how to run the C preprocessor" >&5
 # On Suns, sometimes $CPP names a directory.
 if test -n "$CPP" && test -d "$CPP"; then
   CPP=
@@ -1540,13 +1511,13 @@ else
   # On the NeXT, cc -E runs the code through the compiler's parser,
   # not just through cpp.
   cat > conftest.$ac_ext <<EOF
-#line 1544 "configure"
+#line 1515 "configure"
 #include "confdefs.h"
 #include <assert.h>
 Syntax Error
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:1550: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:1521: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   :
@@ -1557,13 +1528,13 @@ else
   rm -rf conftest*
   CPP="${CC-cc} -E -traditional-cpp"
   cat > conftest.$ac_ext <<EOF
-#line 1561 "configure"
+#line 1532 "configure"
 #include "confdefs.h"
 #include <assert.h>
 Syntax Error
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:1567: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:1538: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   :
@@ -1574,13 +1545,13 @@ else
   rm -rf conftest*
   CPP="${CC-cc} -nologo -E"
   cat > conftest.$ac_ext <<EOF
-#line 1578 "configure"
+#line 1549 "configure"
 #include "confdefs.h"
 #include <assert.h>
 Syntax Error
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:1584: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:1555: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   :
@@ -1608,17 +1579,17 @@ for ac_hdr in assert.h sys/stat.h
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:1612: checking for $ac_hdr" >&5
+echo "configure:1583: checking for $ac_hdr" >&5
 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 1617 "configure"
+#line 1588 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:1622: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:1593: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -1645,12 +1616,12 @@ fi
 done
 
 echo $ac_n "checking whether stat file-mode macros are broken""... $ac_c" 1>&6
-echo "configure:1649: checking whether stat file-mode macros are broken" >&5
+echo "configure:1620: checking whether stat file-mode macros are broken" >&5
 if eval "test \"`echo '$''{'ac_cv_header_stat_broken'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 1654 "configure"
+#line 1625 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #include <sys/stat.h>
@@ -1701,16 +1672,14 @@ EOF
 fi
 
 
-if test "$optimise_b" = yes; then
-    DEFINES="$DEFINES -DSTRING_UTILS_INLINED"
-    cat >> confdefs.h <<\EOF
+DEFINES="$DEFINES -DSTRING_UTILS_INLINED"
+cat >> confdefs.h <<\EOF
 #define STRINGS_UTILS_INLINED 1
 EOF
 
-fi
 
 echo $ac_n "checking how to run the C++ preprocessor""... $ac_c" 1>&6
-echo "configure:1714: checking how to run the C++ preprocessor" >&5
+echo "configure:1683: checking how to run the C++ preprocessor" >&5
 if test -z "$CXXCPP"; then
 if eval "test \"`echo '$''{'ac_cv_prog_CXXCPP'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -1723,12 +1692,12 @@ ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftes
 cross_compiling=$ac_cv_prog_cxx_cross
   CXXCPP="${CXX-g++} -E"
   cat > conftest.$ac_ext <<EOF
-#line 1727 "configure"
+#line 1696 "configure"
 #include "confdefs.h"
 #include <stdlib.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:1732: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:1701: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   :
@@ -1765,7 +1734,7 @@ do
 # Extract the first word of "$ac_prog", so it can be a program name with args.
 set dummy $ac_prog; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1769: checking for $ac_word" >&5
+echo "configure:1738: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_CXX'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -1797,7 +1766,7 @@ test -n "$CXX" || CXX="gcc"
 
 
 echo $ac_n "checking whether the C++ compiler ($CXX $CXXFLAGS $LDFLAGS) works""... $ac_c" 1>&6
-echo "configure:1801: checking whether the C++ compiler ($CXX $CXXFLAGS $LDFLAGS) works" >&5
+echo "configure:1770: checking whether the C++ compiler ($CXX $CXXFLAGS $LDFLAGS) works" >&5
 
 ac_ext=C
 # CXXFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
@@ -1808,12 +1777,12 @@ cross_compiling=$ac_cv_prog_cxx_cross
 
 cat > conftest.$ac_ext << EOF
 
-#line 1812 "configure"
+#line 1781 "configure"
 #include "confdefs.h"
 
 int main(){return(0);}
 EOF
-if { (eval echo configure:1817: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:1786: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   ac_cv_prog_cxx_works=yes
   # If we can't run a trivial program, we are probably using a cross compiler.
   if (./conftest; exit) 2>/dev/null; then
@@ -1839,12 +1808,12 @@ if test $ac_cv_prog_cxx_works = no; then
   { echo "configure: error: installation or configuration problem: C++ compiler cannot create executables." 1>&2; exit 1; }
 fi
 echo $ac_n "checking whether the C++ compiler ($CXX $CXXFLAGS $LDFLAGS) is a cross-compiler""... $ac_c" 1>&6
-echo "configure:1843: checking whether the C++ compiler ($CXX $CXXFLAGS $LDFLAGS) is a cross-compiler" >&5
+echo "configure:1812: checking whether the C++ compiler ($CXX $CXXFLAGS $LDFLAGS) is a cross-compiler" >&5
 echo "$ac_t""$ac_cv_prog_cxx_cross" 1>&6
 cross_compiling=$ac_cv_prog_cxx_cross
 
 echo $ac_n "checking whether we are using GNU C++""... $ac_c" 1>&6
-echo "configure:1848: checking whether we are using GNU C++" >&5
+echo "configure:1817: checking whether we are using GNU C++" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_gxx'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -1853,7 +1822,7 @@ else
   yes;
 #endif
 EOF
-if { ac_try='${CXX-g++} -E conftest.C'; { (eval echo configure:1857: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
+if { ac_try='${CXX-g++} -E conftest.C'; { (eval echo configure:1826: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
   ac_cv_prog_gxx=yes
 else
   ac_cv_prog_gxx=no
@@ -1872,7 +1841,7 @@ ac_test_CXXFLAGS="${CXXFLAGS+set}"
 ac_save_CXXFLAGS="$CXXFLAGS"
 CXXFLAGS=
 echo $ac_n "checking whether ${CXX-g++} accepts -g""... $ac_c" 1>&6
-echo "configure:1876: checking whether ${CXX-g++} accepts -g" >&5
+echo "configure:1845: checking whether ${CXX-g++} accepts -g" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_cxx_g'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -1906,17 +1875,17 @@ fi
 
     ac_safe=`echo "FlexLexer.h" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for FlexLexer.h""... $ac_c" 1>&6
-echo "configure:1910: checking for FlexLexer.h" >&5
+echo "configure:1879: checking for FlexLexer.h" >&5
 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 1915 "configure"
+#line 1884 "configure"
 #include "confdefs.h"
 #include <FlexLexer.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:1920: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:1889: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -1967,12 +1936,12 @@ fi
 
 
     echo $ac_n "checking whether explicit instantiation is needed""... $ac_c" 1>&6
-echo "configure:1971: checking whether explicit instantiation is needed" >&5
+echo "configure:1940: checking whether explicit instantiation is needed" >&5
 if eval "test \"`echo '$''{'lily_cv_need_explicit_instantiation'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 1976 "configure"
+#line 1945 "configure"
 #include "confdefs.h"
 
     template <class T> struct foo { static int baz; };
@@ -1982,7 +1951,7 @@ int main() {
  return foo<int>::baz; 
 ; return 0; }
 EOF
-if { (eval echo configure:1986: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:1955: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   lily_cv_need_explicit_instantiation=no
 else
@@ -2009,7 +1978,7 @@ do
 # Extract the first word of "$ac_prog", so it can be a program name with args.
 set dummy $ac_prog; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2013: checking for $ac_word" >&5
+echo "configure:1982: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_YACC'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -2052,7 +2021,7 @@ do
 # Extract the first word of "$ac_prog", so it can be a program name with args.
 set dummy $ac_prog; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2056: checking for $ac_word" >&5
+echo "configure:2025: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_BISON'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -2087,7 +2056,7 @@ do
 # Extract the first word of "$ac_prog", so it can be a program name with args.
 set dummy $ac_prog; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2091: checking for $ac_word" >&5
+echo "configure:2060: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_FLEX'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -2155,7 +2124,7 @@ do
 # Extract the first word of "$ac_prog", so it can be a program name with args.
 set dummy $ac_prog; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2159: checking for $ac_word" >&5
+echo "configure:2128: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_AR'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -2188,7 +2157,7 @@ test -n "$AR" || AR="error"
     # Extract the first word of "ranlib", so it can be a program name with args.
 set dummy ranlib; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2192: checking for $ac_word" >&5
+echo "configure:2161: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_RANLIB'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -2219,7 +2188,6 @@ fi
     
     
 
-# AC_STEPMAKE_LIBTOOL
 
     lang=English
     ALL_LINGUAS="en nl"
@@ -2244,7 +2212,7 @@ fi
 
 
     echo $ac_n "checking language""... $ac_c" 1>&6
-echo "configure:2248: checking language" >&5    
+echo "configure:2216: checking language" >&5    
     case "$language" in
       En* | en* | Am* | am* | US* | us*)
            lang=English;;
@@ -2280,7 +2248,7 @@ EOF
 
 
     echo $ac_n "checking for gettext in -lintl""... $ac_c" 1>&6
-echo "configure:2284: checking for gettext in -lintl" >&5
+echo "configure:2252: checking for gettext in -lintl" >&5
 ac_lib_var=`echo intl'_'gettext | sed 'y%./+-%__p_%'`
 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -2288,7 +2256,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lintl  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 2292 "configure"
+#line 2260 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 #ifdef __cplusplus
@@ -2302,7 +2270,7 @@ int main() {
 gettext()
 ; return 0; }
 EOF
-if { (eval echo configure:2306: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2274: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -2332,12 +2300,12 @@ fi
     for ac_func in gettext
 do
 echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:2336: checking for $ac_func" >&5
+echo "configure:2304: checking for $ac_func" >&5
 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 2341 "configure"
+#line 2309 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -2363,7 +2331,7 @@ $ac_func();
 
 ; return 0; }
 EOF
-if { (eval echo configure:2367: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2335: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_$ac_func=yes"
 else
@@ -2395,7 +2363,7 @@ do
 # Extract the first word of "$ac_prog", so it can be a program name with args.
 set dummy $ac_prog; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2399: checking for $ac_word" >&5
+echo "configure:2367: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_MSGFMT'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -2426,7 +2394,7 @@ done
 test -n "$MSGFMT" || MSGFMT="\$(SHELL) \$(step-bindir)/fake-msgfmt.sh "
 
     echo $ac_n "checking whether msgfmt accepts -o""... $ac_c" 1>&6
-echo "configure:2430: checking whether msgfmt accepts -o" >&5
+echo "configure:2398: checking whether msgfmt accepts -o" >&5
     msgfmt_output="`msgfmt -o bla 2>&1 | grep usage`"
     if test "$msgfmt_output" = ""; then
        echo "$ac_t""yes" 1>&6
@@ -2454,7 +2422,7 @@ do
 # Extract the first word of "$ac_prog", so it can be a program name with args.
 set dummy $ac_prog; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2458: checking for $ac_word" >&5
+echo "configure:2426: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_METAFONT'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -2490,7 +2458,7 @@ do
 # Extract the first word of "$ac_prog", so it can be a program name with args.
 set dummy $ac_prog; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2494: checking for $ac_word" >&5
+echo "configure:2462: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_MFONT'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -2528,7 +2496,7 @@ do
 # Extract the first word of "$ac_prog", so it can be a program name with args.
 set dummy $ac_prog; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2532: checking for $ac_word" >&5
+echo "configure:2500: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_METAPOST'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -2564,7 +2532,7 @@ do
 # Extract the first word of "$ac_prog", so it can be a program name with args.
 set dummy $ac_prog; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2568: checking for $ac_word" >&5
+echo "configure:2536: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_MPOST'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -2603,7 +2571,7 @@ do
 # Extract the first word of "$ac_prog", so it can be a program name with args.
 set dummy $ac_prog; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2607: checking for $ac_word" >&5
+echo "configure:2575: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_INIMETAFONT'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -2639,7 +2607,7 @@ do
 # Extract the first word of "$ac_prog", so it can be a program name with args.
 set dummy $ac_prog; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2643: checking for $ac_word" >&5
+echo "configure:2611: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_INIMFONT'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -2677,7 +2645,7 @@ do
 # Extract the first word of "$ac_prog", so it can be a program name with args.
 set dummy $ac_prog; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2681: checking for $ac_word" >&5
+echo "configure:2649: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_INIMETAPOST'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -2713,7 +2681,7 @@ do
 # Extract the first word of "$ac_prog", so it can be a program name with args.
 set dummy $ac_prog; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2717: checking for $ac_word" >&5
+echo "configure:2685: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_INIMPOST'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -2747,7 +2715,7 @@ test -n "$INIMPOST" || INIMPOST="-echo no inimp or inimpost"
     fi
 
     echo $ac_n "checking for working metafont mode""... $ac_c" 1>&6
-echo "configure:2751: checking for working metafont mode" >&5
+echo "configure:2719: checking for working metafont mode" >&5
     modelist='ljfour lj4 lj3 lj2 ljet laserjet'
     for MFMODE in $modelist; do
        $METAFONT "\mode:=$MFMODE; mode_setup; end." > /dev/null 2>&1
@@ -2758,7 +2726,7 @@ echo "configure:2751: checking for working metafont mode" >&5
     echo "$ac_t""$MFMODE" 1>&6
 
     echo $ac_n "checking for mfplain.mp""... $ac_c" 1>&6
-echo "configure:2762: checking for mfplain.mp" >&5
+echo "configure:2730: checking for mfplain.mp" >&5
     #
     # For now let people define these in their environments
     #
@@ -2766,7 +2734,7 @@ echo "configure:2762: checking for mfplain.mp" >&5
     echo "$ac_t""$MFPLAIN_MP" 1>&6
 
     echo $ac_n "checking for inimetapost flags""... $ac_c" 1>&6
-echo "configure:2770: checking for inimetapost flags" >&5
+echo "configure:2738: checking for inimetapost flags" >&5
     if test  ${INIMETAPOST} = "inimp" ; then
        : ${INIMETAPOST_FLAGS=''}
     else
@@ -2799,7 +2767,7 @@ do
 # Extract the first word of "$ac_prog", so it can be a program name with args.
 set dummy $ac_prog; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2803: checking for $ac_word" >&5
+echo "configure:2771: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_KPSEWHICH'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -2830,7 +2798,7 @@ done
 test -n "$KPSEWHICH" || KPSEWHICH="no"
 
     echo $ac_n "checking for tfm path""... $ac_c" 1>&6
-echo "configure:2834: checking for tfm path" >&5
+echo "configure:2802: checking for tfm path" >&5
 
     TFM_FONTS="cmr msam"
 
@@ -2858,13 +2826,13 @@ echo "configure:2834: checking for tfm path" >&5
 
     ## First, let's just see if we can find Guile at all.
     echo $ac_n "checking "for guile-config"""... $ac_c" 1>&6
-echo "configure:2862: checking "for guile-config"" >&5
+echo "configure:2830: checking "for guile-config"" >&5
     for guile_config in guile-config $target-guile-config $build-guile-config; do
        echo "$ac_t"""$guile_config"" 1>&6
        if ! $guile_config --version > /dev/null 2>&1 ; then
            echo "configure: warning: "cannot execute $guile_config"" 1>&2
            echo $ac_n "checking "if we are cross compiling"""... $ac_c" 1>&6
-echo "configure:2868: checking "if we are cross compiling"" >&5
+echo "configure:2836: checking "if we are cross compiling"" >&5
            guile_config=error
        else
            break
@@ -2875,7 +2843,7 @@ echo "configure:2868: checking "if we are cross compiling"" >&5
        exit 1
     fi
     echo $ac_n "checking "Guile version"""... $ac_c" 1>&6
-echo "configure:2879: checking "Guile version"" >&5
+echo "configure:2847: checking "Guile version"" >&5
     need_guile_version="1.3.4"
     need_guile_version_numeric=100304
     guile_version=`$guile_config --version 2>&1 | awk '{print $NF}'`
@@ -2894,7 +2862,7 @@ else {last =0}}
     
 ## The GUILE_FLAGS macro.
   echo $ac_n "checking for Guile""... $ac_c" 1>&6
-echo "configure:2898: checking for Guile" >&5
+echo "configure:2866: checking for Guile" >&5
   if ! $guile_config link > /dev/null ; then
       echo "$ac_t"""cannot execute $guile_config"" 1>&6
       { echo "configure: error: "cannot find guile-config; is Guile installed?"" 1>&2; exit 1; }
@@ -2909,7 +2877,7 @@ echo "configure:2898: checking for Guile" >&5
     # Extract the first word of "guile", so it can be a program name with args.
 set dummy guile; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2913: checking for $ac_word" >&5
+echo "configure:2881: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_path_GUILE'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -2954,22 +2922,22 @@ if test "${with_kpathsea+set}" = set; then
 fi
 
 
-    if test $kpathsea_b = yes; then    
+    if test "$kpathsea_b" = "yes"; then        
        for ac_hdr in kpathsea/kpathsea.h
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:2963: checking for $ac_hdr" >&5
+echo "configure:2931: checking for $ac_hdr" >&5
 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 2968 "configure"
+#line 2936 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:2973: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:2941: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -2996,7 +2964,7 @@ fi
 done
 
        echo $ac_n "checking for kpse_find_file in -lkpathsea""... $ac_c" 1>&6
-echo "configure:3000: checking for kpse_find_file in -lkpathsea" >&5
+echo "configure:2968: checking for kpse_find_file in -lkpathsea" >&5
 ac_lib_var=`echo kpathsea'_'kpse_find_file | sed 'y%./+-%__p_%'`
 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -3004,7 +2972,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lkpathsea  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 3008 "configure"
+#line 2976 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 #ifdef __cplusplus
@@ -3018,7 +2986,7 @@ int main() {
 kpse_find_file()
 ; return 0; }
 EOF
-if { (eval echo configure:3022: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2990: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -3045,18 +3013,15 @@ else
   echo "$ac_t""no" 1>&6
 fi
 
-       # urg: kpse_find_tfm is a #define, how to check for this?
-       # AC_CHECK_LIB(kpathsea, kpse_find_tfm)
-       # AC_CHECK_FUNCS(kpse_find_file kpse_find_tfm,, AC_STEPMAKE_WARN(Cannot find kpathsea functions.  You may have to create TFM files manually.))
        for ac_func in kpse_find_file
 do
 echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:3055: checking for $ac_func" >&5
+echo "configure:3020: checking for $ac_func" >&5
 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 3060 "configure"
+#line 3025 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -3082,7 +3047,7 @@ $ac_func();
 
 ; return 0; }
 EOF
-if { (eval echo configure:3086: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3051: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_$ac_func=yes"
 else
@@ -3103,16 +3068,14 @@ EOF
  
 else
   echo "$ac_t""no" 1>&6
-echo "configure: warning: Cannot find kpathsea functions.  You may have to create TFM files manually." 1>&2
-    warn_b=yes
- kpathsea_b=no
+{ echo "configure: error: Cannot find kpathsea functions.  Rerun with --without-kpathsea." 1>&2; exit 1; } 
 fi
 done
 
     fi
     echo $ac_n "checking whether to use kpathsea""... $ac_c" 1>&6
-echo "configure:3115: checking whether to use kpathsea" >&5
-    if test $kpathsea_b = yes; then
+echo "configure:3078: checking whether to use kpathsea" >&5
+    if test "$kpathsea_b" = yes; then
         echo "$ac_t""yes" 1>&6
        KPATHSEA=1
     else
@@ -3132,7 +3095,7 @@ do
 # Extract the first word of "$ac_prog", so it can be a program name with args.
 set dummy $ac_prog; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:3136: checking for $ac_word" >&5
+echo "configure:3099: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_BIBTEX2HTML'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -3173,7 +3136,7 @@ test -n "$BIBTEX2HTML" || BIBTEX2HTML="error"
 
 
 echo $ac_n "checking for 8-bit clean memcmp""... $ac_c" 1>&6
-echo "configure:3177: checking for 8-bit clean memcmp" >&5
+echo "configure:3140: checking for 8-bit clean memcmp" >&5
 if eval "test \"`echo '$''{'ac_cv_func_memcmp_clean'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -3181,7 +3144,7 @@ else
   ac_cv_func_memcmp_clean=no
 else
   cat > conftest.$ac_ext <<EOF
-#line 3185 "configure"
+#line 3148 "configure"
 #include "confdefs.h"
 #ifdef __cplusplus
 extern "C" void exit(int);
@@ -3194,7 +3157,7 @@ main()
 }
 
 EOF
-if { (eval echo configure:3198: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:3161: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
 then
   ac_cv_func_memcmp_clean=yes
 else
@@ -3212,12 +3175,12 @@ echo "$ac_t""$ac_cv_func_memcmp_clean" 1>&6
 test $ac_cv_func_memcmp_clean = no && LIBOBJS="$LIBOBJS memcmp.${ac_objext}"
 
 echo $ac_n "checking for vprintf""... $ac_c" 1>&6
-echo "configure:3216: checking for vprintf" >&5
+echo "configure:3179: checking for vprintf" >&5
 if eval "test \"`echo '$''{'ac_cv_func_vprintf'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 3221 "configure"
+#line 3184 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char vprintf(); below.  */
@@ -3243,7 +3206,7 @@ vprintf();
 
 ; return 0; }
 EOF
-if { (eval echo configure:3247: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3210: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_vprintf=yes"
 else
@@ -3267,12 +3230,12 @@ fi
 
 if test "$ac_cv_func_vprintf" != yes; then
 echo $ac_n "checking for _doprnt""... $ac_c" 1>&6
-echo "configure:3271: checking for _doprnt" >&5
+echo "configure:3234: checking for _doprnt" >&5
 if eval "test \"`echo '$''{'ac_cv_func__doprnt'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 3276 "configure"
+#line 3239 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char _doprnt(); below.  */
@@ -3298,7 +3261,7 @@ _doprnt();
 
 ; return 0; }
 EOF
-if { (eval echo configure:3302: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3265: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func__doprnt=yes"
 else
@@ -3325,12 +3288,12 @@ fi
 for ac_func in memmem snprintf vsnprintf gettext isinf
 do
 echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:3329: checking for $ac_func" >&5
+echo "configure:3292: checking for $ac_func" >&5
 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 3334 "configure"
+#line 3297 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -3356,7 +3319,7 @@ $ac_func();
 
 ; return 0; }
 EOF
-if { (eval echo configure:3360: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3323: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_$ac_func=yes"
 else
@@ -3395,7 +3358,7 @@ do
 # Extract the first word of "$ac_prog", so it can be a program name with args.
 set dummy $ac_prog; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:3399: checking for $ac_word" >&5
+echo "configure:3362: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_MAKEINFO'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -3428,7 +3391,7 @@ test -n "$MAKEINFO" || MAKEINFO="error"
 # Extract the first word of "perl", so it can be a program name with args.
 set dummy perl; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:3432: checking for $ac_word" >&5
+echo "configure:3395: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_path_PERL'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
index 0e1e59b99c1639f5dc6c1cf3ea3994ac3a07e408..f223e91291e79eecbf8baa567d337b274161b097 100644 (file)
@@ -17,17 +17,14 @@ AC_STEPMAKE_COMPILE
 AC_HAVE_HEADERS(assert.h sys/stat.h)
 AC_HEADER_STAT
 
-if test "$optimise_b" = yes; then
-    DEFINES="$DEFINES -DSTRING_UTILS_INLINED"
-    AC_DEFINE(STRINGS_UTILS_INLINED)
-fi
+DEFINES="$DEFINES -DSTRING_UTILS_INLINED"
+AC_DEFINE(STRINGS_UTILS_INLINED)
 
 AC_STEPMAKE_CXX
 AC_STEPMAKE_GXX
 AC_STEPMAKE_CXXTEMPLATE
 AC_STEPMAKE_LEXYACC
 AC_STEPMAKE_LIB
-# AC_STEPMAKE_LIBTOOL
 AC_STEPMAKE_LOCALE
 AC_STEPMAKE_GETTEXT
 AC_STEPMAKE_MSGFMT
diff --git a/flower/dstream.cc b/flower/dstream.cc
deleted file mode 100644 (file)
index c157fe5..0000000
+++ /dev/null
@@ -1,209 +0,0 @@
-/*
-  dstream.cc -- implement Dstream
-
-  source file of the Flower Library
-
-  (c) 1996, 1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-*/
-#include <fstream.h>
-#include "dstream.hh"
-#include "dictionary-iter.hh"
-#include "dictionary.hh"
-#include "text-db.hh"
-#include "string-convert.hh"
-#include "rational.hh"
-
-/// amount of indentation for each level.
-const int INDTAB = 2;
-
-/*
-  should use Regexp library.
-  */
-static String
-strip_pretty (String pretty_str)
-{
-  int i = pretty_str.index_i ('(');
-  if (i>=0)
-    pretty_str = pretty_str.left_str (i);
-
-  int l = pretty_str.index_last_i (' '); // strip until last ' '
-  if (l>=0)
-    pretty_str = pretty_str.nomid_str (0,l+1);
-  return pretty_str;
-}
-
-static String
-strip_member (String pret)
-{
-  int l=pret.index_last_i (':')-1;
-  if (l>=0)
-    pret = pret.left_str (l);
-  return pret;
-}
-
-Dstream&
-Dstream::identify_as (String name)
-{
-  if (!os_l_)
-    return *this;
-
-  String mem (strip_pretty (name));
-  String cl (strip_member (mem));
-  String idx = cl;
-
-  if (silent_dict_p_->elem_b (mem))
-    idx  = mem;
-  else if (silent_dict_p_->elem_b (cl))
-    idx = cl;
-  else
-    {
- (*silent_dict_p_)[idx] = default_silence_b_;
-    }
-  local_silence_b_ = (*silent_dict_p_)[idx];
-  if (current_classname_str_ != idx && !local_silence_b_)
-    {
-      current_classname_str_=idx;
-      if (! (*silent_dict_p_)["Dstream"])
-       *os_l_ << "[" << current_classname_str_ << ":]"; // messy.
-    }
-  return *this;
-}
-
-bool
-Dstream::silent_b (String s) const
-{
-  if (!silent_dict_p_)
-    return 0;
-  
-  if (!silent_dict_p_->elem_b (s))
-    return false;
-  return (*silent_dict_p_)[s];
-}
-
-Dstream &
-Dstream::operator<< (void const *v_l)
-{
-  output (String_convert::pointer_str (v_l));
-  return *this;
-}
-
-Dstream &
-Dstream::operator << (String s)
-{
-  output (s);
-  return *this;
-}
-
-Dstream &
-Dstream::operator << (const char * s)
-{
-  output (String (s));
-  return *this;
-}
-
-Dstream &
-Dstream::operator << (char c)
-{
-  output (to_str (c));
-  return *this;
-}
-
-Dstream&
-Dstream::operator << (Real r)
-{
-  output (to_str (r));
-  return *this;
-}
-Dstream &
-Dstream::operator << (Rational c)
-{
-  output (c.str ());
-  return *this;
-}
-Dstream &
-Dstream::operator << (int i)
-{
-  output (to_str (i));
-  return *this;
-}
-  
-void
-Dstream::output (String s)
-{
-  if (local_silence_b_|| !os_l_)
-    return ;
-
-  for (char const *cp = s.ch_C (); *cp; cp++)
-    switch (*cp)
-      {
-      case '{':
-      case '[':
-      case '(': indent_level_i_ += INDTAB;
-       *os_l_ << *cp;
-       break;
-
-      case ')':
-      case ']':
-      case '}':
-       indent_level_i_ -= INDTAB;
-       *os_l_ << *cp           ;
-
-       assert (indent_level_i_>=0) ;
-       break;
-
-      case '\n':
-       *os_l_ << '\n' << to_str (' ', indent_level_i_) << flush;
-       break;
-      default:
-       *os_l_ << *cp;
-       break;
-      }
-  return ;
-}
-
-
-Dstream::Dstream (ostream *r, char const * cfg_nm)
-{
-  os_l_ = r;
-  silent_dict_p_ = new Dictionary<bool>;
-  default_silence_b_ = false;
-  indent_level_i_ = 0;
-  if (!os_l_)
-    return;
-
-  char const * fn =cfg_nm ? cfg_nm : ".dstreamrc";
-  {
-    ifstream ifs (fn); // can 't open
-    if (!ifs)
-      return;
-  }
-
-  Text_db cfg (fn);
-  while (!cfg.eof_b ()){
-    Text_record  r (cfg++);
-    if (r.size () != 2)
-      {
-       r.message (_ ("not enough fields in Dstream init"));
-       continue;
-      }
- (*silent_dict_p_)[r[0]] = r[1] == "1";
-  }
-
-  if ((*silent_dict_p_).elem_b ("Dstream_default_silence"))
-    default_silence_b_ = (*silent_dict_p_)["Dstream_default_silence"];
-}
-
-
-Dstream::~Dstream ()
-{
-  delete silent_dict_p_;
-  assert (!indent_level_i_) ;
-}
-
-void
-Dstream::clear_silence ()
-{
-  delete silent_dict_p_;
-  silent_dict_p_ = 0;
-}
-
index b078fbc3b6631064bbf5e39fa32465bc0082df9d..b7ea0370d8357c1a88b0ee5ab4c268bf63c74a5d 100644 (file)
@@ -11,7 +11,7 @@
 #endif
 
 #include "file-path.hh"
-#include "flower-debug.hh"
+
 
 #ifndef PATHSEP
 #define PATHSEP ':'
@@ -106,7 +106,6 @@ File_path::parse_path (String p)
 String
 File_path::find (String nm) const
 {
-  DEBUG_OUT << "looking for" << nm << ": ";
   if (!nm.length_i () || (nm == "-") )
     return nm;
   for (int i=0; i < size (); i++)
@@ -119,7 +118,6 @@ File_path::find (String nm) const
 
       path += nm;
 
-      DEBUG_OUT << path << "? ";
 
 #if 0
       /*
@@ -144,12 +142,10 @@ File_path::find (String nm) const
       FILE *f = fopen (path.ch_C (), "r"); // ugh!
       if (f)
        {
-         DEBUG_OUT << "found\n";
          fclose (f);
          return path;
        }
     }
-  DEBUG_OUT << '\n';
   return "";
 }
 
diff --git a/flower/flower-debug.cc b/flower/flower-debug.cc
deleted file mode 100644 (file)
index b2fa199..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-#include <fstream.h>
-#include "flower-debug.hh"
-#include "dstream.hh"
-
-Dstream *flower_dstream  = 0;
-
diff --git a/flower/include/dstream.hh b/flower/include/dstream.hh
deleted file mode 100644 (file)
index 92111fb..0000000
+++ /dev/null
@@ -1,69 +0,0 @@
-/*
-  dstream.hh -- declare Dstream
-
-  source file of the Flower Library
-
-  (c)  1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-*/
-
-#ifndef DSTREAM_HH
-#define DSTREAM_HH
-
-#include "string.hh"
-
-
-const char eol= '\n';
-
-/**  Debug stream. 
-   a class for providing debug output of nested structures,
-   with indents according to \{\} ()[].
-
-   One can turn on and off specific messages using the Assoc silent.
-   This can be done automatically:
-
-   #define DEBUG  dstream_.identify_as (__PRETTY_FUNCTION__) 
-
-   DEBUG << "a message\n";
-   
-   Init for the class names which should be silent can be given in a rc file. 
-   
-   TODO:
-   make a baseclass for indentable streams.
-
-   JUNKME
-  */
-class Dstream
-{
-  ostream *os_l_;
-  int indent_level_i_;
-  bool local_silence_b_;
-  bool default_silence_b_;
-  String current_classname_str_;
-  void output (String s);
-  Dictionary<bool> *silent_dict_p_;
-  
-public:
-  void clear_silence ();
-  bool silent_b (String) const;
-    
-  /**
-     if rcfile == 0, then do not read any rc file.
-  */
-  Dstream (ostream *r, char const * rcfile);
-  virtual ~Dstream ();
-  Dstream &identify_as (String s);
-
-
-  Dstream &operator << (String);
-  Dstream &operator << (Real);
-  Dstream &operator << (int);  
-  Dstream &operator << (Rational);
-  Dstream &operator << (char);  
-  /**
-     Output memory locations.
-  */
-  Dstream &operator << (void const *);
-  Dstream &operator << (char const *);
-};
-#endif
-
diff --git a/flower/include/flower-debug.hh b/flower/include/flower-debug.hh
deleted file mode 100644 (file)
index 26bff02..0000000
+++ /dev/null
@@ -1,26 +0,0 @@
-/*
-  flower-debug.hh -- declare global constants relating to debug dumps
-
-  source file of the Flower Library
-
-  (c)  1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-*/
-
-
-#ifndef FLOWER_DEBUG_HH
-#define FLOWER_DEBUG_HH
-
-#include "dstream.hh"
-
-extern Dstream *flower_dstream;
-
-#ifdef NPRINT
-#define        DEBUG_OUT if (0) *flower_dstream
-#else
-#define DEBUG_OUT if (flower_dstream) \
-       flower_dstream->identify_as (__PRETTY_FUNCTION__)
-#endif
-
-void set_debug (Dstream *ds);
-
-#endif // FLOWER_DEBUG_HH
index 69b14e891fad747b80d60bf6cb8b263a840dea46..5a1d3c49af90579f95c01de586f5b757a96d9a19 100644 (file)
@@ -78,7 +78,7 @@ struct Interval_t : public Drul_array<T> {
     return ((1.0 - x) * Real (elem (LEFT))  + (x + 1.0) * Real (elem (RIGHT))) * 0.5;
   }
   String str () const;    
-  void print () const;
+
   bool elem_b (T r);
   void negate () {
     T r = -elem (LEFT);
index ab7ab1410e22f26670ba95e0a455242fa6ccb138..c78b476a91a4cc361845ca0ec801e5acd95431b6 100644 (file)
 #include <math.h>
 #include "interval.hh"
 #include "string.hh"
-#include "flower-debug.hh"
 
-template<class T>
-void
-Interval_t<T>::print () const
-{
-  if (flower_dstream)
-    *flower_dstream << str ();
-}
 
 template<class T>
 int
index b3ceba7c44dece5e15266ea2d08bd152a58217ac..cdf61c3f954bce2b482c4f6cc7671fabc7ff7e22 100644 (file)
@@ -2,7 +2,7 @@
 
 depth = ..
 
-SUBDIRS=bugs tricks test regression tutorial no-notation ascii-art
+SUBDIRS=bugs test regression tutorial no-notation ascii-art
 
 examples=trip  star-spangled-banner paddy scarlatti-test
 flexamples=
diff --git a/input/ascii-art/asciscript5.ly b/input/ascii-art/asciscript5.ly
deleted file mode 100644 (file)
index e69de29..0000000
diff --git a/input/bugs/crescendo-squash.ly b/input/bugs/crescendo-squash.ly
deleted file mode 100644 (file)
index b143968..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-
-
- % < becomes | 
-\score {\notes { \context Staff < f''1
-   { s4 \< \! s4 } > }
-
-  \paper { linewidth = -1.;  }
-  }
-
index e9aee2cefc989e24f44010397197b7bed5879d69..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 (file)
@@ -1,157 +0,0 @@
-
-% dynamics should not collide with staff
-% dynamics (of two voices) should not collide with eachother
-% strange stem through beam bug in bar 8 on viola staff
-% 1-staff-high brace should collapse
-
-\header {
-texidoc="Template for part-combining orchestral scores";
-}
-
-
-End = { \skip 1*8; }
-
-violaI = \notes\relative c'' {
-  c1 \break c c c c\break
-       g4\p\< r r r8 g(|
-       )c,4 r r r8 c|
-       [\!f8\sf(\>as f as][f g d)\!g]|
-               r [es'\p(c)es] r [d(bes)d]|
-
-
-}
-violaII = \notes\relative c'' {
-  c1 c c c c
-       g4\p\< r r r8 g(|
-       )c,4 r r r8 c|
-       [\!f8\sf(\>as f as][f g d)\!g]|
-       r [c\p(g)c] r [bes(g)bes]|
-}
-
-
-violoncello = \notes\relative c {
-  c4\< c c c 
-  \!c1\pp c c c
-       \property Voice.crescendoText = #"cresc."
-       \property Voice.crescendoSpanner = #'dashed-line
-  [g8\p\<(bes' g bes][d bes g)d~]|
-  [d8(a' fis a][d a fis)d]|
-  [\!f!8\sf\>(as f as][f g d)g]|
-  %75
-  \!c,4\p r d r|
-}
-
-contrabasso = \notes\relative c {
-  d8\< d d d  d d d d 
-  \!c1\ff c c c
-       \property Voice.crescendoText = #"cresc."
-       \property Voice.crescendoSpanner = #'dashed-line
-  g4\p\< r r r8 g(|
-  )c4 r r r8 c(|
-  \!)b1\sf|
-  c4\p r d r|
-}
-
-violeStaff =  \notes \context Staff = viole <
- \context Voice=oneViole <
-               \property Staff.instrument = #"Viola"
-               \property Staff.instr = #"Vla."
-
- \End
- >
- \context Voice=twoViole <
-               \property Staff.instrument = #"Viola II"
-               \property Staff.instr = #"Vla. II"
- \End
- >
-  \context Voice=oneViole \partcombine Voice
-    \context Thread=oneViole \violaI
-    \context Thread=twoViole \violaII
->
-
-staffCombinePianoStaffProperties = {
-       \property PianoStaff.devNullThread = #'()
-       \property PianoStaff.soloADue = ##t
-       \property PianoStaff.soloText = #""
-       \property PianoStaff.soloIIText = #""
-       % This is non-conventional, but currently it is
-       % the only way to tell the difference.
-       \property PianoStaff.aDueText = #"\\`a2"
-       \property PianoStaff.splitInterval = #'(1 . 0)
-       \property PianoStaff.changeMoment = #`(,(make-moment 1 1) . ,(make-moment 1 1))
-}
-
-
-\score {
-  <
-  \context StaffGroup <
-  \violeStaff
-
-  \context PianoStaff = bassi_group \notes <
-    \staffCombinePianoStaffProperties
-    \context Staff=oneBassi < \clef bass;
-               \property Staff.instrument = #'(lines
-                 "Violoncello" "    e" "Contrabasso")
-
-               \property Staff.instr = #"Vc."
-               \End >
-    \context Staff=twoBassi < \clef bass;
-               \property Staff.instrument = #"Contrabasso"
-               \property Staff.instr = #"Cb."
-
-    \End >
-  
-    \context Staff=oneBassi \partcombine Staff
-      \context Voice=oneBassi { \violoncello }
-      \context Voice=twoBassi { \contrabasso }
- >
->
- >
-  \paper {
-    % \paperSixteen
-    linewidth = 80 * \staffspace;
-    textheight = 200 * \staffspace;
-    \translator{
-      \ThreadContext
-      \consists "Rest_engraver";
-      
-      % Set value for engraver at thread level,
-      % to override the default that is set in ScoreContext
-      % for added engraver at Voice level
-      devNullThread = #'()
-    }
-    \translator{
-      \VoiceContext
-      \remove "Rest_engraver";    
-
-      % The staff combine (bassi part) needs a
-      % thread_devnull_engraver here.
-      % Instead of maintaining two separate hierarchies,
-      % we switch add it, but switch it off immideately.
-      % The staff combine parts switch it on.
-      % devNullThread = #'never
-      \consists "Thread_devnull_engraver";
-    }
-    \translator{
-      \HaraKiriStaffContext
-      \consists "Mark_engraver";
-    }
-    \translator {
-      \OrchestralScoreContext
-      skipBars = ##t
-      soloText = #"I."
-      soloIIText = #"II."
-      % By default, turn off the Thread_devnull_engraver
-      % at Voice level
-      devNullThread = #'never
-
-      % Hmm
-      currentBarNumber = #218
-      BarNumber \override #'padding = #3
-      RestCollision \override #'maximum-rest-count = #1
-      marginScriptHorizontalAlignment = #1
-      TimeSignature \override #'style = #'C
-    }
-  }
-}
-
index 1365e5ea99475a2da07c12453ca912b7dac303e4..c392f4d4cb126438bd65ffab5d94ead3c0ce1730 100644 (file)
@@ -1,4 +1,5 @@
 
+% what's the problem?
 \score{
        \context Staff <
                \context Voice=one \skip 1;
diff --git a/input/bugs/mb.ly b/input/bugs/mb.ly
deleted file mode 100644 (file)
index e1fd2d7..0000000
+++ /dev/null
@@ -1,38 +0,0 @@
-
-% mb.ly: midi-bug
-% midi notes get stuck
-
-%{
-From: Mats Bengtsson <mats.bengtsson@s3.kth.se>
-Subject: Re: request simple .ly showing MIDI tie bug 
-To: Jan Nieuwenhuizen <janneke@gnu.org>
-Date: Mon, 26 Feb 2001 23:18:06 +0100
-
-I was lucky enough to find a short snippet which triggered
-the bug (a few bars from David Lattermanns typesetting of
-the Dvorak Bagatelles. I spent the Sunday upgrading them
-to 1.3.131). I hope it simplifies the bug search.
-%}
-
-\score{
-  \notes \relative c{
-    \time 2/4;
-    \clef bass;
-    \property Staff.midiInstrument = "harmonica"
-    <
-      \context Voice=ua {
-        \stemDown
-       e4 a, | b2 |
-      }
-      \context Voice=ub {
-        \stemUp
-       e2 ~ | e4 dis |
-      }
-    >
-    R2*5 |
-    c'2
-  }
-\paper{}
-\midi{\tempo 4 = 140;}
-}
-
index 489cbd14e875adc2b0c195f2d86239740e6a2ca1..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 (file)
@@ -1,12 +0,0 @@
-% minimal what?
-% dumps core
-
-
-\score {
-  \sequential {\clef bass ; }
-  \paper {
-%    \translator { \context Score_engraver ; \name "Score";  }
-    \translator { \type "Score_engraver"; \name "Score";  }
-       linewidth = 30 * \staffspace;
-  } 
-}
index 85c02dc5c816451f71ce4e6f9de11c3296492581..6d611c48827ad1349b9dc06564f1c1291f53ab22 100644 (file)
@@ -1,8 +1,14 @@
+
+
+
 % ugh: strange order of things, this:
 %    a16 * 1/2 (
 % must be 
 %    a16 ( * 1/2
 
+%{
+?? is this a bug? --hwn
+%}
 
 \score { 
   \context Voice \notes\relative c {
diff --git a/input/bugs/pc-core.ly b/input/bugs/pc-core.ly
deleted file mode 100644 (file)
index 9160fe4..0000000
+++ /dev/null
@@ -1,95 +0,0 @@
-
-% on their own staff, voices should be stemboth (not up/down)
-
-End = { \skip 1*8; }
-
-violoncello = \notes\relative c' {
-   c8 c c c    c8 c c c\break
-}
-
-contrabasso = \notes\relative c {
-   c4 c8 c    c8 c c c\break
-}
-
-staffCombinePianoStaffProperties = {
-       \property PianoStaff.devNullThread = #'()
-       \property PianoStaff.soloADue = ##t
-       \property PianoStaff.soloText = #""
-       \property PianoStaff.soloIIText = #""
-       % This is non-conventional, but currently it is
-       % the only way to tell the difference.
-       \property PianoStaff.aDueText = #"\\`a2"
-       \property PianoStaff.splitInterval = #'(1 . 0)
-       \property PianoStaff.changeMoment = #`(,(make-moment 1 1) . ,(make-moment 1 1))
-}
-
-
-\score {
-  <
-  \context PianoStaff = bassi_group \notes <
-    \staffCombinePianoStaffProperties
-    \context Staff=oneBassi < \clef bass;
-               \property Staff.instrument = #'(lines
-                 "Violoncello" "    e" "Contrabasso")
-
-               \property Staff.instr = #"Vc."
-               \End >
-    \context Staff=twoBassi < \clef bass;
-               \property Staff.instrument = #"Contrabasso"
-               \property Staff.instr = #"Cb."
-
-    \End >
-  
-    \context Staff=oneBassi \partcombine Staff
-      \context Voice=oneBassi { \violoncello }
-      \context Voice=twoBassi { \contrabasso }
- >
->
-  \paper {
-    % \paperSixteen
-    linewidth = 80 * \staffspace;
-    textheight = 200 * \staffspace;
-    \translator{
-      \ThreadContext
-      \consists "Rest_engraver";
-      
-      % Set value for engraver at thread level,
-      % to override the default that is set in ScoreContext
-      % for added engraver at Voice level
-      devNullThread = #'()
-    }
-    \translator{
-      \VoiceContext
-      \remove "Rest_engraver";    
-
-      % The staff combine (bassi part) needs a
-      % thread_devnull_engraver here.
-      % Instead of maintaining two separate hierarchies,
-      % we switch add it, but switch it off immideately.
-      % The staff combine parts switch it on.
-      % devNullThread = #'never
-      \consists "Thread_devnull_engraver";
-    }
-    \translator{
-      \HaraKiriStaffContext
-      \consists "Mark_engraver";
-    }
-    \translator {
-      \OrchestralScoreContext
-      skipBars = ##t
-      soloText = #"I."
-      soloIIText = #"II."
-      % By default, turn off the Thread_devnull_engraver
-      % at Voice level
-      devNullThread = #'never
-
-      % Hmm
-      currentBarNumber = #218
-      BarNumber \override #'padding = #3
-      RestCollision \override #'maximum-rest-count = #1
-      marginScriptHorizontalAlignment = #1
-      TimeSignature \override #'style = #'C
-    }
-  }
-}
-
index b6e9b2ec4a70485aaf3c129e9721588fb77b088e..aa1327175d409cd756c5e1568591756b955d7d81 100644 (file)
@@ -1,6 +1,9 @@
 
 % move to regtest once it works?
 
+
+% still not workign ? --hwn.
+
 \header {
 texidoc="
 On their own staff, staffcombined voices should be stemboth (not up/down);
index dde3c8e74aae37736963232bce18b5c1b30851e4..9a9835f806c8c6e272e26762300b79953a676827 100644 (file)
@@ -1,3 +1,3 @@
 
-
+% should start with |:
 \score { \context Staff \notes \repeat volta 3 c1 \alternative { d1 e1 }} 
diff --git a/input/bugs/sbug.ly b/input/bugs/sbug.ly
new file mode 100644 (file)
index 0000000..fae779b
--- /dev/null
@@ -0,0 +1,8 @@
+%  the \stopped collides with the
+%beam.
+
+
+% stopped disappeared ?? 
+\score { \notes {
+\clef "G"; \stemUp [a''8^\stopped a''8_\stopped]
+}}
index d8d35df3887f9f7f2cde62c8ef0a4d679fbb9c99..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 (file)
@@ -1,5 +0,0 @@
-\score {
-  \context Voice \notes\relative c'' {
-    a-. c-.
-  }
-}
index 1f60ff08ffa5d953235c821179f6da60e8ca470d..8b137891791fe96927ad78e64b0aad7bded08bdc 100644 (file)
@@ -1,9 +1 @@
 
-
-%  the \stopped collides with the
-%beam.
-
-
-\score { \notes {
-\clef "G"; \stemUp [a''8^\stopped a''8^\stopped]
-}}
diff --git a/input/bugs/st.ly b/input/bugs/st.ly
deleted file mode 100644 (file)
index 3f5f292..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-
-\score { \notes { c'''-. c-. }}
diff --git a/input/bugs/stem-through-beam.ly b/input/bugs/stem-through-beam.ly
deleted file mode 100644 (file)
index 5f24905..0000000
+++ /dev/null
@@ -1,80 +0,0 @@
-
-% strange bug with stems through beams in second beam
-       
-End = { \skip 1*8; }
-
-violaii = \notes\relative c' {
-       [\!f8\sf(\>as f as][f g d)\!g]|
-}
-
-violai=\notes\relative c' {
-       [\!f8\sf(\>as f as][f g d)\!g]|
-}
-
-violeStaff =  \notes \context Staff = viole <
- \context Voice=oneViola <
-               \property Staff.instrument = #"Viola"
-               \property Staff.instr = #"Vla."
-
- \End
- >
- \context Voice=twoViola <
-               \property Staff.instrument = #"Viola II"
-               \property Staff.instr = #"Vla. II"
- \End
- >
-  \context Voice=oneViola \partcombine Voice
-    \context Thread=oneViola \violai
-    \context Thread=twoViola \violaii
->
-
-\score {
-  \violeStaff
-  \paper {
-    % \paperSixteen
-    linewidth = 80 * \staffspace;
-    textheight = 200 * \staffspace;
-    \translator{
-      \ThreadContext
-      \consists "Rest_engraver";
-      % Set value for engraver at thread level,
-      % to override the default that is set in ScoreContext
-      % for added engraver at Voice level
-      devNullThread = #'()
-    }
-    \translator{
-      \VoiceContext
-      \remove "Rest_engraver";    
-
-      % The staff combine (bassi part) needs a
-      % thread_devnull_engraver here.
-      % Instead of maintaining two separate hierarchies,
-      % we switch add it, but switch it off immideately.
-      % The staff combine parts switch it on.
-      % devNullThread = #'never
-      \consists "Thread_devnull_engraver";
-    }
-    \translator{
-      \HaraKiriStaffContext
-      \consists "Mark_engraver";
-    }
-    \translator {
-      \OrchestralScoreContext
-      skipBars = ##t
-
-      % By default, turn off the Thread_devnull_engraver
-      % at Voice level
-      devNullThread = #'never
-      soloText = #"I."
-      soloIIText = #"II."
-
-      % Hmm
-      currentBarNumber = #218
-      BarNumber \override #'padding = #3
-      RestCollision \override #'maximum-rest-count = #1
-      marginScriptHorizontalAlignment = #1
-      TimeSignature \override #'style = #'C
-    }
-  }
-}
-
diff --git a/input/bugs/triplet.ly b/input/bugs/triplet.ly
deleted file mode 100644 (file)
index 7e1855d..0000000
+++ /dev/null
@@ -1,30 +0,0 @@
-
-%
-% huh? wat gaat er nu fout in os-score.ly, hier issie okede?
-%
-global = {
-  \time 2/4;
-  \skip 2*4; \bar "|.";
-}
-Key = \notes \key as \major;
-
-\score {
-    <
-    \global
-    \context StaffGroup = timpani <
-      \context Staff = timpani <
-    \Key
-    \notes\relative c {
-    \times 2/3 { f4 f f }
-    \times 4/5 { as8 as as as as }
-    R1
-  }
-  > >
-  >
-  \paper {
-    linewidth = -1.;
-    \translator {
-      \HaraKiriStaffContext
-    }
-  }
-}
index 2bae5fe9008e1ca8ccb5588b8229325ec02b9fd7..638e98d6fd3dce78806b802f9302f987d66c3982 100644 (file)
@@ -441,7 +441,7 @@ lowerDynamics =  \context Dynamics=lower \notes{
            \consists "Output_property_engraver";
            Generic_property_list = #generic-voice-properties
            \consists "Property_engraver";
-           DynamicsMinimumVerticalExtent = #(cons -3 -3)
+           MinimumVerticalExtent = #(cons -3 -3)
            VerticalAlignment \override #'threshold = #'(9 . 9) 
 
            startSustain = #"Ped."
diff --git a/input/regression/dynamics-unbound-hairpin.ly b/input/regression/dynamics-unbound-hairpin.ly
new file mode 100644 (file)
index 0000000..f7b1e99
--- /dev/null
@@ -0,0 +1,11 @@
+
+\header {
+texidoc = "Crescendi may start off-notes. In that case, they should  not collapse into flat lines.";
+}
+
+\score { \notes { \context  Voice { 
+  < f''1 { s4 s4 \< \! s4 \> \! s4 } >
+}}
+
+\paper { linewidth = -1. ;}
+}
diff --git a/input/regression/key-signature-scordatura.ly b/input/regression/key-signature-scordatura.ly
new file mode 100644 (file)
index 0000000..cdc0e96
--- /dev/null
@@ -0,0 +1,15 @@
+
+\header { texidoc = "Key signatures can be set per pitch
+individually. This can be done bby setting @code{Staff.keySignature}
+directly.";
+
+}
+\score { \notes
+\relative c'
+\context Staff {
+  \property Staff.keySignature = #'(((1 .  2) . 1) ((0 . 3) . -1))
+  f8 a c e
+  \property Staff.keySignature = #'(((1 .  2) . -1) ((0 . 4) . 2))
+  e a, g a
+}
+}
diff --git a/input/test/add-text-script.ly b/input/test/add-text-script.ly
new file mode 100644 (file)
index 0000000..43ef4c6
--- /dev/null
@@ -0,0 +1,35 @@
+\header {
+texidoc= "Using make-music, you can add
+various stuff to notes. Here is an example
+how to add an extra fingering. 
+
+In general, first do a display of the music you want ot
+create, then write a function that will build the structure for you.";
+} 
+
+#(define (make-script x) 
+     (let* (  (m (ly-make-music "Text_script_req"))
+     )
+     
+     (ly-set-mus-property m 'text-type 'finger)
+     (ly-set-mus-property m 'text x)
+     m
+     ))
+     
+#(define (add-script m x)
+  (if (equal? (ly-music-name m) "Request_chord")
+    (ly-set-mus-property m 'elements
+      (cons (make-script x) (ly-get-mus-property m 'elements)))
+
+    (let* ( (es (ly-get-mus-property m 'elements))
+            (e (ly-get-mus-property m 'element)) )
+     (map (lambda (y) (add-script y x)) es)
+     (if (music? e)
+       (add-script e x))
+    )
+  )
+  m
+)
+
+\score {  \apply #(lambda (x) (add-script x "6") (display x) x ) \notes { c4-3 } }
+
diff --git a/input/test/beam-count.ly b/input/test/beam-count.ly
new file mode 100644 (file)
index 0000000..8258679
--- /dev/null
@@ -0,0 +1,21 @@
+
+
+fragment = \notes {
+  f'32 g a b b a g f
+
+  \property Voice.autoBeamSettings
+    \set #'(end * * * *) = #(make-moment 1 4)
+  f32 g a b b a g f
+
+  f32 g a
+  \property Voice.stemRightBeamCount = #1 b
+  \property Voice.stemLeftBeamCount = #1 b
+  a g f
+}
+
+\paper { linewidth = -1.; } 
+
+\score {
+  \notes\relative c \fragment
+  \paper { }  
+}
diff --git a/input/test/beam-dir-function.ly b/input/test/beam-dir-function.ly
new file mode 100644 (file)
index 0000000..ef044f8
--- /dev/null
@@ -0,0 +1,41 @@
+
+\header{
+texidoc="
+There are several ways to calculate the direction of a beam
+
+@table @samp
+@item majority
+number count of up or down notes
+@item mean
+mean centre distance of all notes
+@item median
+mean centre distance weighted per note
+@end table
+
+We should see:
+
+  up down down
+
+  up up down
+";
+}
+
+\score {
+  \notes \relative c'' {
+    % the default
+    %\property Voice.Beam \set #'dir-function = #beam-dir-majority
+    [d8 a]
+    \property Voice.Beam \set #'dir-function = #beam-dir-mean
+    [d a] 
+    \property Voice.Beam \set #'dir-function = #beam-dir-median
+    [d a]
+    
+    \property Voice.Beam \set #'dir-function = #beam-dir-majority
+    \time 3/8;
+    [d8 a a]
+    \property Voice.Beam \set #'dir-function = #beam-dir-mean
+    [d a a] 
+    \property Voice.Beam \set #'dir-function = #beam-dir-median
+    [d a a] 
+  }
+}
diff --git a/input/test/beam-neutral-direction.ly b/input/test/beam-neutral-direction.ly
new file mode 100644 (file)
index 0000000..41187d8
--- /dev/null
@@ -0,0 +1,14 @@
+
+
+fragment = \notes {
+  [b''8 b]
+  \property Voice.Beam \set #'default-neutral-direction = #-1
+  [b b]
+}
+
+\paper { linewidth = -1.; } 
+
+\score {
+  \notes\relative c \fragment
+  \paper { }  
+}
diff --git a/input/test/beam-position.ly b/input/test/beam-position.ly
new file mode 100644 (file)
index 0000000..19c4922
--- /dev/null
@@ -0,0 +1,14 @@
+
+
+fragment = \notes {
+  \property Voice.Beam \set #'staff-position = #2
+  \property Voice.Beam \set #'height = #-2
+  [c'8 c]
+}
+
+\paper { linewidth = -1.; } 
+
+\score {
+  \notes\relative c \fragment
+  \paper { }  
+}
diff --git a/input/test/beam-rest.ly b/input/test/beam-rest.ly
new file mode 100644 (file)
index 0000000..bcdfe5b
--- /dev/null
@@ -0,0 +1,18 @@
+
+\header{
+texidoc="
+Beams over rests.
+";
+}
+
+\score{
+        \context Staff=one \notes\relative c''{
+         r4 [r8 g a]
+         [bes8 r16 f g a]
+         [bes8 r16 \property Voice.stemLeftBeamCount = #1 f g a]
+    }
+
+    \paper{
+        linewidth =-1;
+    }
+}
index 95860f14771ea7e76d67a39f34587b9181c68321..a31582b76afd26048431df2bdb8113ff61a04451 100644 (file)
@@ -1,9 +1,14 @@
 
-\score { 
-  \context Voice \notes\relative c {
-    [c''16 b] [a b]
-       
-  }
+
+fragment = \notes {
+  \property Voice.Beam \set #'direction = #1
+  \property Voice.Beam \set #'height-hs = #0
+  [a''8 e' d c]
+}
+
+\paper { linewidth = -1.; } 
+
+\score {
+  \notes\relative c \fragment
   \paper { }  
-  \midi { }
 }
diff --git a/input/test/boxed-molecule.ly b/input/test/boxed-molecule.ly
new file mode 100644 (file)
index 0000000..1dc8cb0
--- /dev/null
@@ -0,0 +1,58 @@
+\header {
+
+texidoc = "overriding the molecule callback can also be used to draw a
+ box around arbitrary grobs.
+
+ TODO: check whether the corners are really correct.
+ ";
+}
+#(define (box-molecule xext yext)
+  (ly-make-molecule
+      (list 'filledbox (- (car xext)) (cdr xext)
+                       (- (car yext)) (cdr yext))
+      xext yext)                      
+)
+
+#(define (widen-interval iv amount)
+   (cons (- (car iv) amount)
+         (+ (cdr iv) amount))
+)
+
+#(define (make-molecule-boxer callback)
+  (define (molecule-boxer grob)
+  (let*
+   (
+    (mol    (callback grob))
+    (box-padding 0.1)
+    (x-ext (widen-interval (ly-get-molecule-extent mol 0) box-padding))
+    (y-ext (widen-interval (ly-get-molecule-extent mol 1) box-padding))
+    (rule-thick 0.1)
+    (x-rule (box-molecule (widen-interval x-ext rule-thick)
+                              (cons 0 rule-thick)))
+    (y-rule (box-molecule (cons 0 rule-thick) y-ext))
+    )
+    
+    (set! mol (ly-combine-molecule-at-edge mol 0 1 y-rule (* 0.5 box-padding)))
+    (set! mol (ly-combine-molecule-at-edge mol 0 -1  y-rule (* 0.5 box-padding)))
+    (set! mol (ly-combine-molecule-at-edge mol 1 1  x-rule 0.0))  
+    (set! mol (ly-combine-molecule-at-edge mol 1 -1 x-rule 0.0))
+    
+    mol
+ ))
+ molecule-boxer
+ )
+
+
+ \score { \notes  {
+
+ \property Voice.TextScript \override #'molecule-callback =
+   #(make-molecule-boxer Text_item::brew_molecule)
+
+   c'4^"foo"
+
+\property Voice.Stem \override #'molecule-callback =
+   #(make-molecule-boxer Stem::brew_molecule)
+
+      c''8
+   }}
diff --git a/input/test/crescendo-text.ly b/input/test/crescendo-text.ly
new file mode 100644 (file)
index 0000000..fea7996
--- /dev/null
@@ -0,0 +1,16 @@
+
+
+fragment = \notes {
+  \context Voice {
+    \property Voice.crescendoText = "cresc."
+    \property Voice.crescendoSpanner = #'dashed-line
+    a''2\mf\< a a \!a
+  }
+}
+
+\paper { linewidth = -1.; } 
+
+\score {
+  \notes\relative c \fragment
+  \paper { }  
+}
diff --git a/input/test/drarn-slurs.ly b/input/test/drarn-slurs.ly
new file mode 100644 (file)
index 0000000..663856a
--- /dev/null
@@ -0,0 +1,19 @@
+
+\header{
+texidoc="
+Slurs can be forced to always attach to note heads.
+";
+}
+
+fragment = \notes {
+  \property Voice.Slur \set #'direction = #1
+  \property Voice.Slur \set #'attachment = #'(head . head)
+  g''16()g()g()g()d'()d()d()d
+}
+
+\paper { linewidth = -1.; } 
+
+\score {
+  \notes\relative c \fragment
+  \paper { }  
+}
diff --git a/input/test/drums.ly b/input/test/drums.ly
new file mode 100644 (file)
index 0000000..ae4ac81
--- /dev/null
@@ -0,0 +1,59 @@
+% tests drum notation and midi-drums.
+% see ly/drumpitch.ly for list of instruments and paper-kits.
+%     scm/midi.scm for list of midi-drumkits.
+
+\include "drumpitch.ly";
+
+\version "1.3.142"
+
+drh = \notes { cymc4.^"crash" hhc16^"h.h." hh \repeat "unfold" 5 {hhc8 hho hhc8 hh16 hh} hhc4 r4 r2 }
+drl = \notes {\repeat "unfold" 3 {bd4 sn8 bd bd4 <bd ss>} bd8 tommh tommh bd toml toml bd tomfh16 tomfh }
+timb = \notes \repeat "unfold" 2 {timh4 ssh timl8 ssh r timh r4 ssh8 timl r4 cb8 cb}
+
+\score { \repeat "volta" 2
+ <
+  \context TwoLineStaff=timbst \notes <
+    \property Staff.instrument="timbales"
+    \clef "percussion";
+    \apply #(drums->paper 'timbales) \timb
+  >
+  \context Staff=drumst \notes <
+    \property Staff.instrument="drums"
+    \clef "percussion";
+    \apply #(drums->paper 'drums) <
+      \context Voice=voa {\stemUp \drh }
+      \context Voice=vob {\stemDown \drl }
+    >
+  >
+ >
+ \paper {
+   \translator {
+      \StaffContext
+      \consists Instrument_name_engraver;
+      Script \override #'padding = #0.5
+   }
+   \translator {
+      \StaffContext
+      \name TwoLineStaff;
+      \alias Staff;
+      \consists Instrument_name_engraver;
+      StaffSymbol \override #'line-count = #2;
+      BarLine \override #'bar-size = #2;
+   }
+   \translator {
+      \ScoreContext
+      \accepts TwoLineStaff;
+   }
+ }
+}
+
+\score { \repeat "unfold" 2
+  \context Staff \notes <
+    \property Staff.instrument="drums"
+    \timb
+    \drh
+    \drl
+  >
+  \midi{ \tempo 4=120; }
+}
+
diff --git a/input/test/embedded-postscript.ly b/input/test/embedded-postscript.ly
new file mode 100644 (file)
index 0000000..557c9ba
--- /dev/null
@@ -0,0 +1,18 @@
+\header {
+  texidoc = "By inserting the @TeX{} command \embeddedps, you can
+insert postscript directly into the output.
+
+TODO: make molecule-callback to do this. 
+  ";
+}
+
+\score {
+  \notes \relative c'' {
+    a-#"\\embeddedps{3 4 moveto 5 3 rlineto stroke}"
+    -#"\\embeddedps{ [ 0 1 ] 0 setdash 3 5 moveto 5 -3 rlineto stroke}"
+    b-#"\\embeddedps{3 4 moveto 0 0 1 2 8 4 20 3.5 rcurveto stroke}"
+    s2
+    a'1
+  }
+  \paper { linewidth = 70 * \staffspace; }
+}
diff --git a/input/test/embedded-tex.ly b/input/test/embedded-tex.ly
new file mode 100644 (file)
index 0000000..8a6e046
--- /dev/null
@@ -0,0 +1,12 @@
+
+
+fragment = \notes {
+  a''^"3 $\\times$ \\`a deux"
+}
+
+\paper { linewidth = -1.; } 
+
+\score {
+  \notes\relative c \fragment
+  \paper { }  
+}
index 504a4aa82c8c18a4bd97014694dc2f92aa988e71..1d949a51461d58c325b2b6e8a0417e01d41a533e 100644 (file)
@@ -32,7 +32,7 @@ tagline="Ligly";
                linewidth = 15.0\mm;
                \translator {
                        \StaffContext
-                       StaffMinimumVerticalExtent = #(cons 0 0)
+                       MinimumVerticalExtent = #(cons 0 0)
                }
        }
 }
diff --git a/input/test/follow-thread.ly b/input/test/follow-thread.ly
new file mode 100644 (file)
index 0000000..2771cb8
--- /dev/null
@@ -0,0 +1,30 @@
+
+\header{
+texidoc="
+Theads can be traced automagically when they switch staffs by setting
+property @code{followVoice}.
+";
+}
+
+\version "1.3.139"
+% followVoice: connect note heads with line when thread switches staff 
+
+fragment = \notes {
+  \context PianoStaff <
+    \property PianoStaff.followVoice = ##t
+    \property Voice.VoiceFollower \set #'type = #'dashed-line
+    \context Staff \context Voice {
+      c'1
+      \translator Staff=two
+      b2 a
+    }
+    \context Staff=two {\clef bass; \skip 1*2;}
+  >
+}
+
+\paper { linewidth = -1.; } 
+
+\score {
+  \notes\relative c \fragment
+  \paper { }  
+}
diff --git a/input/test/improv.ly b/input/test/improv.ly
new file mode 100644 (file)
index 0000000..ff35018
--- /dev/null
@@ -0,0 +1,46 @@
+
+improOn = \notes {\translator Voice = impro }
+improOff = \notes {\translator SquashVoice = melo }
+
+global = \notes { s1*3 \bar "|."; }
+
+\score {
+  <
+    \context ChordNames \chords {e8:m7*7 a2.:m7 bes4:m7 b1:m7 e8:m }
+    \context Staff \notes <
+      \context SquashVoice = impro { \global }
+      \context Voice = melo \transpose c'' {
+       e8 e g a a16()bes()a8 g \improOn e8
+       ~e2~e8 f4 fis8
+       ~fis2 \improOff a16()bes a8 g e
+      }
+    >
+  >
+  \paper { 
+    \translator {
+      \VoiceContext
+      \name SquashVoice;
+      \alias Voice;
+      \consists Pitch_squash_engraver;
+      \consists Local_key_engraver;
+      squashedPosition = 6;
+      NoteHead \override #'style = #'slash
+      Accidentals \override #'transparent = ##t
+    }
+    \translator {
+      \VoiceContext
+      \alias SquashVoice;
+      \consists Local_key_engraver;
+    }
+    \translator {
+      \ScoreContext
+      \accepts SquashVoice;
+    }
+    \translator {
+      \StaffContext
+      \remove Local_key_engraver;
+      \accepts SquashVoice;
+    }
+    linewidth = -1;
+  }
+}
diff --git a/input/test/metronome.ly b/input/test/metronome.ly
new file mode 100644 (file)
index 0000000..d712999
--- /dev/null
@@ -0,0 +1,30 @@
+
+
+
+% Test scm markup text and kerning
+
+% Warning
+%  
+% This is not a feature, it is a hack.  If you change anything,
+% it will probably break (that's because scm markup text is a
+% bit broken and needs fixing).  Chances are, it's already
+% broken by the time you read this.  Don't complain.
+%
+% FIXME: put in an item, and typeset by an engraver.
+
+#(define note '(rows (music "noteheads-2" ((kern . -0.1) "flags-stem"))))
+#(define eight-note `(rows ,note ((kern . -0.1) (music ((raise . 3.5) "flags-u3")))))
+#(define dotted-eight-note `(rows ,eight-note (music "dots-dot")))
+
+\score {
+  \notes\relative c'' {
+    a1^#`((rows (font-relative-size . -1)) ,dotted-eight-note " = 64")
+  }
+  \paper {
+    linewidth = -1.;
+    \translator{
+      \ScoreContext
+      TextScript \override #'font-shape = #'upright
+    }
+  }
+}
diff --git a/input/test/mmrest-collision.ly b/input/test/mmrest-collision.ly
new file mode 100644 (file)
index 0000000..0fd96e7
--- /dev/null
@@ -0,0 +1,25 @@
+
+\score {
+  \context Staff \notes <
+    \context Voice=i {
+      \property Voice.MultiMeasureRest \override #'staff-position = #3
+      R1
+    }
+    \context Voice=ii {
+      \property Voice.MultiMeasureRest \override #'staff-position = #-3
+      R1
+    }
+  >
+  \paper {
+    \translator {
+      \StaffContext
+      \remove Multi_measure_rest_engraver;
+      \remove Bar_engraver;
+    }
+    \translator {
+      \VoiceContext
+      \consists Multi_measure_rest_engraver;
+      \consists Bar_engraver;
+    }
+  }
+}
diff --git a/input/test/move-notehead.ly b/input/test/move-notehead.ly
new file mode 100644 (file)
index 0000000..87deb18
--- /dev/null
@@ -0,0 +1,14 @@
+
+
+fragment = \notes {
+    \outputproperty #(make-type-checker 'note-head-interface)
+      #'extra-offset = #'(2 . 3)
+    c''2 c
+}
+
+\paper { linewidth = -1.; } 
+
+\score {
+  \notes\relative c \fragment
+  \paper { }  
+}
diff --git a/input/test/move-specific-text.ly b/input/test/move-specific-text.ly
new file mode 100644 (file)
index 0000000..2fe4a71
--- /dev/null
@@ -0,0 +1,13 @@
+
+#(define (make-text-checker text)
+   (lambda (grob) (equal? text (ly-get-grob-property grob 'text))))
+
+\score {
+  \notes\relative c''' {
+    \property Voice.Stem \set #'direction = #1
+    \outputproperty #(make-text-checker "m.d.")
+      #'extra-offset = #'(-3.5 . -4.5)
+    a^2^"m.d."
+  }
+  \paper { linewidth = -1.; }
+}
diff --git a/input/test/no-bar-lines.ly b/input/test/no-bar-lines.ly
new file mode 100644 (file)
index 0000000..1cd7f3c
--- /dev/null
@@ -0,0 +1,16 @@
+
+\score {
+  \notes \relative c'' {
+    a b c d
+    d c b a
+  }
+  \paper {
+    linewidth = -1.;
+    \translator {
+      \StaffContext
+      whichBar = #""
+      \remove "Time_signature_engraver";
+    }
+  }
+}
+
diff --git a/input/test/no-staff.ly b/input/test/no-staff.ly
new file mode 100644 (file)
index 0000000..5385aa2
--- /dev/null
@@ -0,0 +1,14 @@
+
+\score {
+  \notes { c4 c4 c8 c8 }
+  \paper {
+    linewidth = -1.;
+    \translator {
+      \StaffContext
+      \remove Staff_symbol_engraver;
+      \consists Pitch_squash_engraver;
+      \remove Clef_engraver;
+    }
+  }
+}
+
diff --git a/input/test/ottava.ly b/input/test/ottava.ly
new file mode 100644 (file)
index 0000000..590bd73
--- /dev/null
@@ -0,0 +1,17 @@
+
+
+fragment = \notes {
+  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 " . "")
+  \property Staff.centralCPosition = #-13
+  a\spanrequest \start "text" b c a \spanrequest \stop "text"
+}
+
+\paper { linewidth = -1.; } 
+
+\score {
+  \notes\relative c \fragment
+  \paper { }  
+}
diff --git a/input/test/part-combine.ly b/input/test/part-combine.ly
new file mode 100644 (file)
index 0000000..3e04e52
--- /dev/null
@@ -0,0 +1,38 @@
+
+\header{
+texidoc="
+In orchestral scores and hymns, voices are traditionally combined onto
+one staff.  LilyPond has a part combiner, that combines or separates two
+voices according to actual rhythm and pitch.  User-defined texts such as
+``solo'' and ``@`a2'' are typeset automagically, as appropriate.
+";
+}
+
+\score{
+  \context Staff = flauti <
+    \time 4/4;
+    \context Voice=one \partcombine Voice
+    \context Thread=one \notes\relative c'' {
+      c4 d e f | b,4 d c d | r2 e4 f | c4 d e f |
+      c4 r e f | c4 r e f | c4 r a r | a a r a |
+      a2 \property Voice.soloADue = ##f a |
+    }
+    \context Thread=two \notes\relative c'' {
+      g4 b d f | r2 c4 d | a c c d | a4. b8 c4 d
+      c r e r | r2 s2 | a,4 r a r | a r r a |
+      a2 \property Voice.soloADue = ##f a |
+    }
+  >
+  \paper{
+    linewidth = 80 * \staffspace;
+    \translator{
+      \ThreadContext
+      \consists Rest_engraver;
+    }
+    \translator{
+      \VoiceContext
+      \remove Rest_engraver;
+    }
+  }
+}
+
diff --git a/input/test/partial-blank.ly b/input/test/partial-blank.ly
new file mode 100644 (file)
index 0000000..9b15bde
--- /dev/null
@@ -0,0 +1,28 @@
+
+%{  When entering half music (I.e. for students to complete by hand)
+    you need the spacing to correspond to the timing - all measures same length, etc.
+    This thing implements it by adding invisible staff with lots of fast notes.
+%}
+
+\include "paper16.ly"
+
+
+quickmeasure = \notes {[\repeat unfold 16 c''16]}
+mel = \notes \relative c' {c16 d16 e8 a4 g2 e8 d c2. g'1 e4 d c2}
+
+\score {
+\context PianoStaff \notes <
+  \context Staff = v <
+    \clef G;
+    \context Voice=melo {\mel}
+    \context Voice=invisible {
+       \property Voice.NoteHead \override #'transparent = ##t
+       \property Voice.Stem \override #'transparent = ##t
+       \property Voice.Beam \override #'transparent = ##t
+        \repeat unfold 4 \quickmeasure
+    }
+  >
+  \context Staff = empty \notes {\clef F; s1*4}
+>
+\paper {}
+}
diff --git a/input/test/reverse-music.ly b/input/test/reverse-music.ly
new file mode 100644 (file)
index 0000000..d93a8ec
--- /dev/null
@@ -0,0 +1,31 @@
+
+\header {
+texidoc="
+Simple customised music apply.
+";
+}
+
+music = \notes { c'4 d'4( e'4 f'4 }
+
+#(define (reverse-music music)
+  (let* ((elements (ly-get-mus-property music 'elements))
+         (reversed (reverse elements))
+         (span-dir (ly-get-mus-property music 'span-direction)))
+
+    (ly-set-mus-property music 'elements reversed)
+
+    (if (dir? span-dir)
+        (ly-set-mus-property music 'span-direction (- span-dir)))
+
+    (map reverse-music reversed)
+
+    music))
+
+\score {
+  \context Voice {
+    \music
+    \apply #reverse-music \music
+  }
+  \paper { linewidth = -1.; }
+}
+
diff --git a/input/test/slur-attachment-override.ly b/input/test/slur-attachment-override.ly
new file mode 100644 (file)
index 0000000..90f9118
--- /dev/null
@@ -0,0 +1,22 @@
+
+\header{
+texidoc="
+In some cases, you may want to set slur attachments by hand.
+";
+}
+
+
+fragment = \notes {
+  \property Voice.Stem \set #'direction = #1
+  \property Voice.Slur \set #'direction = #1
+  d'32( d'4 )d8..
+  \property Voice.Slur \set #'attachment = #'(stem . stem)
+  d,32( d'4 )d8..
+}
+
+\paper { linewidth = -1.; } 
+
+\score {
+  \notes\relative c \fragment
+  \paper { }  
+}
diff --git a/input/test/slur-attachment.ly b/input/test/slur-attachment.ly
new file mode 100644 (file)
index 0000000..3b1ea94
--- /dev/null
@@ -0,0 +1,18 @@
+
+
+fragment = \notes {
+  \property Voice.Slur \set #'direction = #1
+  \property Voice.Stem \set #'length = #5.5
+  g''8(g)g4
+  g4(g8)g
+  \property Voice.Slur \set #'attachment = #'(stem . stem)
+  g8(g)g4
+  g4(g8)g
+}
+
+\paper { linewidth = -1.; } 
+
+\score {
+  \notes\relative c \fragment
+  \paper { }  
+}
diff --git a/input/test/slur-ugly.ly b/input/test/slur-ugly.ly
new file mode 100644 (file)
index 0000000..5e021dd
--- /dev/null
@@ -0,0 +1,36 @@
+
+\header {
+texidoc="You can get ugly slurs, if you want.
+";
+}
+
+baseWalk = \notes \relative c {
+  d,8( a' d f a d f d a f d )a
+}
+
+\score {
+  \notes \context PianoStaff <
+    \time 6/4;
+    \context Staff=up { s1 * 6/4 }
+    \context Staff=down <
+      \clef bass;
+      \autochange Staff \context Voice \baseWalk
+    >
+  >
+  \paper {
+    linewidth = -1.;
+    \translator {
+      \VoiceContext
+      Slur \override #'beautiful = #5.0
+      Slur \override #'direction = #1
+      Stem \override #'direction = #-1
+      autoBeamSettings \override #'(end * * * *)
+        = #(make-moment 1 2)
+    }
+    \translator {
+      \PianoStaffContext
+      VerticalAlignment \override #'threshold = #'(5 . 5)
+    }
+  }
+}
+
diff --git a/input/test/smart-transpose.ly b/input/test/smart-transpose.ly
new file mode 100644 (file)
index 0000000..0517011
--- /dev/null
@@ -0,0 +1,83 @@
+
+\header {
+texidoc="
+@example
+    Here's a copy of my feature request :
+@quotation
+        Your task, if you accept it is to implement a \smarttranspose
+        command> that would translate such oddities into more natural
+        notations. Double accidentals should be removed, as well as E-sharp
+        (-> F), bC (-> B), bF (-> E), B-sharp (-> C).
+@end quotation
+
+You mean like this. (Sorry 'bout the nuked indentation.)
+@end example
+";
+}
+
+#(define  (unhair-pitch p)
+  (let* ((o (pitch-octave p))
+         (a (pitch-alteration p))
+         (n (pitch-notename p)))
+
+    (cond
+     ((and (> a 0) (or (eq? n 6) (eq? n 2)))
+      (set! a (- a 1)) (set! n (+ n 1)))
+     ((and (< a 0) (or (eq? n 0) (eq? n 3)))
+      (set! a (+ a 1)) (set! n (- n 1))))
+
+    (cond
+     ((eq? a 2)  (set! a 0) (set! n (+ n 1)))
+     ((eq? a -2) (set! a 0) (set! n (- n 1))))
+
+    (if (< n 0) (begin (set!  o (- o 1)) (set! n (+ n 7))))
+    (if (> n 7) (begin (set!  o (+ o 1)) (set! n (- n 7))))
+
+    (make-pitch o n a)))
+
+#(define (smart-transpose music pitch)
+  (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 (lambda (x) (smart-transpose x pitch)) es)))
+
+    (if (music? alts)
+        (ly-set-mus-property
+         music 'alternatives
+         (smart-transpose alts pitch)))
+
+    (if (music? body)
+        (ly-set-mus-property
+         music 'body
+         (smart-transpose body pitch)))
+
+    (if (music? e)
+        (ly-set-mus-property
+         music 'element
+         (smart-transpose e pitch)))
+
+    (if (pitch? p)
+        (begin
+          (set! p (unhair-pitch (Pitch::transpose p pitch)))
+          (ly-set-mus-property music 'pitch p)))
+
+    music))
+
+
+music = \notes \relative c' { c4 d  e f g a b  c }
+
+\score {
+  \notes \context Staff {
+    \transpose ais' \music
+    \apply #(lambda (x) (smart-transpose x (make-pitch 0 5 1)))
+      \music
+  }
+  \paper { linewidth = -1.; }
+}
+
diff --git a/input/test/staff-container.ly b/input/test/staff-container.ly
new file mode 100644 (file)
index 0000000..baa7cd2
--- /dev/null
@@ -0,0 +1,39 @@
+
+
+\header {
+
+ texidoc = "By splitting the grouping (Axis_group_engraver) and
+creation functionality into separate contexts, you can override
+interesting things. You can also drop the \consistsend feature.";
+
+}
+
+
+\score  {
+ \notes <
+       \context StaffContainer = SA { \property StaffContainer.StaffSymbol \set
+         #'staff-space = #0.8
+         \context Staff {        c4 c4 } }
+       \context StaffContainer =SB { \context Staff { d f  } }
+ >
+
+\paper {
+       \translator {
+               \ScoreContext
+               \accepts StaffContainer;
+               \denies Staff;
+       }
+       \translator {
+               \type Engraver_group_engraver;
+               \consists "Axis_group_engraver";
+               \accepts "Staff";
+               \name StaffContainer;
+
+       }
+       \translator {
+               \StaffContext
+               \remove Axis_group_engraver;
+       }
+}
+}
+
diff --git a/input/test/two-key.ly b/input/test/two-key.ly
new file mode 100644 (file)
index 0000000..4b4f203
--- /dev/null
@@ -0,0 +1,13 @@
+\header {
+
+texidoc = "If you specify two different key sigs at one point, a
+  warning is printed.";
+
+}
+
+\score { \notes
+\context Voice <
+ { \key cis \major; cis4 \key bes \major; bes4 }
+ { \key cis \major; fis4 \key es \major; g4 }  
+>
+}
index d961cbfdf34c9d6302d3c0b8e8c6235e9b3c2f90..f6bcfa949a5e4a80fc3a4c832c08b9bc58653ecf 100644 (file)
@@ -1,14 +1,21 @@
 
+\header { texidoc = "vertical extents may be overriden by
+VerticalExtent, VerticalExtent, VerticalExtent. These are
+normal property values, and are written itno the grob when the
+associated context finishes, so using it in \property works.
+
+ "; }
+\version "1.3.145";
 
 \score {
   \notes  <
     \context Staff = upper {
-      \property Staff.StaffVerticalExtent = #'(-15.0 . 0.0)
+      \property Staff.VerticalExtent = #'(-15.0 . 0.0)
       \clef alto;
       c1 \break c1 
     }
     \context Staff = lower {
-      \property Staff.StaffVerticalExtent = #'(-0.0 . 15.0)
+      \property Staff.VerticalExtent = #'(-0.0 . 15.0)
       \clef alto;
       g1 \break g1 
     }
@@ -17,6 +24,6 @@
     interscoreline = 13.0\mm;
     interscorelinefill = 0;
     \translator{\ScoreContext \remove "Bar_number_engraver";}
-    \translator{\StaffContext StaffMinimumVerticalExtent = #'(-2.0 . 2.0)}
+    \translator{\StaffContext MinimumVerticalExtent = #'(-2.0 . 2.0)}
   }
 }
diff --git a/input/tricks/GNUmakefile b/input/tricks/GNUmakefile
deleted file mode 100644 (file)
index 5587717..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-depth = ../..
-
-LOCALSTEPMAKE_TEMPLATES=mutopia
-include $(depth)/make/stepmake.make 
-
-
diff --git a/input/tricks/add-text-script.ly b/input/tricks/add-text-script.ly
deleted file mode 100644 (file)
index 43ef4c6..0000000
+++ /dev/null
@@ -1,35 +0,0 @@
-\header {
-texidoc= "Using make-music, you can add
-various stuff to notes. Here is an example
-how to add an extra fingering. 
-
-In general, first do a display of the music you want ot
-create, then write a function that will build the structure for you.";
-} 
-
-#(define (make-script x) 
-     (let* (  (m (ly-make-music "Text_script_req"))
-     )
-     
-     (ly-set-mus-property m 'text-type 'finger)
-     (ly-set-mus-property m 'text x)
-     m
-     ))
-     
-#(define (add-script m x)
-  (if (equal? (ly-music-name m) "Request_chord")
-    (ly-set-mus-property m 'elements
-      (cons (make-script x) (ly-get-mus-property m 'elements)))
-
-    (let* ( (es (ly-get-mus-property m 'elements))
-            (e (ly-get-mus-property m 'element)) )
-     (map (lambda (y) (add-script y x)) es)
-     (if (music? e)
-       (add-script e x))
-    )
-  )
-  m
-)
-
-\score {  \apply #(lambda (x) (add-script x "6") (display x) x ) \notes { c4-3 } }
-
diff --git a/input/tricks/beam-count.ly b/input/tricks/beam-count.ly
deleted file mode 100644 (file)
index 8258679..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-
-
-fragment = \notes {
-  f'32 g a b b a g f
-
-  \property Voice.autoBeamSettings
-    \set #'(end * * * *) = #(make-moment 1 4)
-  f32 g a b b a g f
-
-  f32 g a
-  \property Voice.stemRightBeamCount = #1 b
-  \property Voice.stemLeftBeamCount = #1 b
-  a g f
-}
-
-\paper { linewidth = -1.; } 
-
-\score {
-  \notes\relative c \fragment
-  \paper { }  
-}
diff --git a/input/tricks/beam-dir-function.ly b/input/tricks/beam-dir-function.ly
deleted file mode 100644 (file)
index ef044f8..0000000
+++ /dev/null
@@ -1,41 +0,0 @@
-
-\header{
-texidoc="
-There are several ways to calculate the direction of a beam
-
-@table @samp
-@item majority
-number count of up or down notes
-@item mean
-mean centre distance of all notes
-@item median
-mean centre distance weighted per note
-@end table
-
-We should see:
-
-  up down down
-
-  up up down
-";
-}
-
-\score {
-  \notes \relative c'' {
-    % the default
-    %\property Voice.Beam \set #'dir-function = #beam-dir-majority
-    [d8 a]
-    \property Voice.Beam \set #'dir-function = #beam-dir-mean
-    [d a] 
-    \property Voice.Beam \set #'dir-function = #beam-dir-median
-    [d a]
-    
-    \property Voice.Beam \set #'dir-function = #beam-dir-majority
-    \time 3/8;
-    [d8 a a]
-    \property Voice.Beam \set #'dir-function = #beam-dir-mean
-    [d a a] 
-    \property Voice.Beam \set #'dir-function = #beam-dir-median
-    [d a a] 
-  }
-}
diff --git a/input/tricks/beam-neutral-direction.ly b/input/tricks/beam-neutral-direction.ly
deleted file mode 100644 (file)
index 41187d8..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-
-
-fragment = \notes {
-  [b''8 b]
-  \property Voice.Beam \set #'default-neutral-direction = #-1
-  [b b]
-}
-
-\paper { linewidth = -1.; } 
-
-\score {
-  \notes\relative c \fragment
-  \paper { }  
-}
diff --git a/input/tricks/beam-position.ly b/input/tricks/beam-position.ly
deleted file mode 100644 (file)
index 19c4922..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-
-
-fragment = \notes {
-  \property Voice.Beam \set #'staff-position = #2
-  \property Voice.Beam \set #'height = #-2
-  [c'8 c]
-}
-
-\paper { linewidth = -1.; } 
-
-\score {
-  \notes\relative c \fragment
-  \paper { }  
-}
diff --git a/input/tricks/beam-rest.ly b/input/tricks/beam-rest.ly
deleted file mode 100644 (file)
index bcdfe5b..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-
-\header{
-texidoc="
-Beams over rests.
-";
-}
-
-\score{
-        \context Staff=one \notes\relative c''{
-         r4 [r8 g a]
-         [bes8 r16 f g a]
-         [bes8 r16 \property Voice.stemLeftBeamCount = #1 f g a]
-    }
-
-    \paper{
-        linewidth =-1;
-    }
-}
diff --git a/input/tricks/beam-slope.ly b/input/tricks/beam-slope.ly
deleted file mode 100644 (file)
index a31582b..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-
-
-fragment = \notes {
-  \property Voice.Beam \set #'direction = #1
-  \property Voice.Beam \set #'height-hs = #0
-  [a''8 e' d c]
-}
-
-\paper { linewidth = -1.; } 
-
-\score {
-  \notes\relative c \fragment
-  \paper { }  
-}
diff --git a/input/tricks/boxed-molecule.ly b/input/tricks/boxed-molecule.ly
deleted file mode 100644 (file)
index 1dc8cb0..0000000
+++ /dev/null
@@ -1,58 +0,0 @@
-\header {
-
-texidoc = "overriding the molecule callback can also be used to draw a
- box around arbitrary grobs.
-
- TODO: check whether the corners are really correct.
- ";
-}
-#(define (box-molecule xext yext)
-  (ly-make-molecule
-      (list 'filledbox (- (car xext)) (cdr xext)
-                       (- (car yext)) (cdr yext))
-      xext yext)                      
-)
-
-#(define (widen-interval iv amount)
-   (cons (- (car iv) amount)
-         (+ (cdr iv) amount))
-)
-
-#(define (make-molecule-boxer callback)
-  (define (molecule-boxer grob)
-  (let*
-   (
-    (mol    (callback grob))
-    (box-padding 0.1)
-    (x-ext (widen-interval (ly-get-molecule-extent mol 0) box-padding))
-    (y-ext (widen-interval (ly-get-molecule-extent mol 1) box-padding))
-    (rule-thick 0.1)
-    (x-rule (box-molecule (widen-interval x-ext rule-thick)
-                              (cons 0 rule-thick)))
-    (y-rule (box-molecule (cons 0 rule-thick) y-ext))
-    )
-    
-    (set! mol (ly-combine-molecule-at-edge mol 0 1 y-rule (* 0.5 box-padding)))
-    (set! mol (ly-combine-molecule-at-edge mol 0 -1  y-rule (* 0.5 box-padding)))
-    (set! mol (ly-combine-molecule-at-edge mol 1 1  x-rule 0.0))  
-    (set! mol (ly-combine-molecule-at-edge mol 1 -1 x-rule 0.0))
-    
-    mol
- ))
- molecule-boxer
- )
-
-
- \score { \notes  {
-
- \property Voice.TextScript \override #'molecule-callback =
-   #(make-molecule-boxer Text_item::brew_molecule)
-
-   c'4^"foo"
-
-\property Voice.Stem \override #'molecule-callback =
-   #(make-molecule-boxer Stem::brew_molecule)
-
-      c''8
-   }}
diff --git a/input/tricks/crescendo-text.ly b/input/tricks/crescendo-text.ly
deleted file mode 100644 (file)
index fea7996..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
-
-
-fragment = \notes {
-  \context Voice {
-    \property Voice.crescendoText = "cresc."
-    \property Voice.crescendoSpanner = #'dashed-line
-    a''2\mf\< a a \!a
-  }
-}
-
-\paper { linewidth = -1.; } 
-
-\score {
-  \notes\relative c \fragment
-  \paper { }  
-}
diff --git a/input/tricks/drarn-slurs.ly b/input/tricks/drarn-slurs.ly
deleted file mode 100644 (file)
index 663856a..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-
-\header{
-texidoc="
-Slurs can be forced to always attach to note heads.
-";
-}
-
-fragment = \notes {
-  \property Voice.Slur \set #'direction = #1
-  \property Voice.Slur \set #'attachment = #'(head . head)
-  g''16()g()g()g()d'()d()d()d
-}
-
-\paper { linewidth = -1.; } 
-
-\score {
-  \notes\relative c \fragment
-  \paper { }  
-}
diff --git a/input/tricks/drums.ly b/input/tricks/drums.ly
deleted file mode 100644 (file)
index ae4ac81..0000000
+++ /dev/null
@@ -1,59 +0,0 @@
-% tests drum notation and midi-drums.
-% see ly/drumpitch.ly for list of instruments and paper-kits.
-%     scm/midi.scm for list of midi-drumkits.
-
-\include "drumpitch.ly";
-
-\version "1.3.142"
-
-drh = \notes { cymc4.^"crash" hhc16^"h.h." hh \repeat "unfold" 5 {hhc8 hho hhc8 hh16 hh} hhc4 r4 r2 }
-drl = \notes {\repeat "unfold" 3 {bd4 sn8 bd bd4 <bd ss>} bd8 tommh tommh bd toml toml bd tomfh16 tomfh }
-timb = \notes \repeat "unfold" 2 {timh4 ssh timl8 ssh r timh r4 ssh8 timl r4 cb8 cb}
-
-\score { \repeat "volta" 2
- <
-  \context TwoLineStaff=timbst \notes <
-    \property Staff.instrument="timbales"
-    \clef "percussion";
-    \apply #(drums->paper 'timbales) \timb
-  >
-  \context Staff=drumst \notes <
-    \property Staff.instrument="drums"
-    \clef "percussion";
-    \apply #(drums->paper 'drums) <
-      \context Voice=voa {\stemUp \drh }
-      \context Voice=vob {\stemDown \drl }
-    >
-  >
- >
- \paper {
-   \translator {
-      \StaffContext
-      \consists Instrument_name_engraver;
-      Script \override #'padding = #0.5
-   }
-   \translator {
-      \StaffContext
-      \name TwoLineStaff;
-      \alias Staff;
-      \consists Instrument_name_engraver;
-      StaffSymbol \override #'line-count = #2;
-      BarLine \override #'bar-size = #2;
-   }
-   \translator {
-      \ScoreContext
-      \accepts TwoLineStaff;
-   }
- }
-}
-
-\score { \repeat "unfold" 2
-  \context Staff \notes <
-    \property Staff.instrument="drums"
-    \timb
-    \drh
-    \drl
-  >
-  \midi{ \tempo 4=120; }
-}
-
diff --git a/input/tricks/embedded-postscript.ly b/input/tricks/embedded-postscript.ly
deleted file mode 100644 (file)
index 557c9ba..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-\header {
-  texidoc = "By inserting the @TeX{} command \embeddedps, you can
-insert postscript directly into the output.
-
-TODO: make molecule-callback to do this. 
-  ";
-}
-
-\score {
-  \notes \relative c'' {
-    a-#"\\embeddedps{3 4 moveto 5 3 rlineto stroke}"
-    -#"\\embeddedps{ [ 0 1 ] 0 setdash 3 5 moveto 5 -3 rlineto stroke}"
-    b-#"\\embeddedps{3 4 moveto 0 0 1 2 8 4 20 3.5 rcurveto stroke}"
-    s2
-    a'1
-  }
-  \paper { linewidth = 70 * \staffspace; }
-}
diff --git a/input/tricks/embedded-tex.ly b/input/tricks/embedded-tex.ly
deleted file mode 100644 (file)
index 8a6e046..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-
-
-fragment = \notes {
-  a''^"3 $\\times$ \\`a deux"
-}
-
-\paper { linewidth = -1.; } 
-
-\score {
-  \notes\relative c \fragment
-  \paper { }  
-}
diff --git a/input/tricks/follow-thread.ly b/input/tricks/follow-thread.ly
deleted file mode 100644 (file)
index 2771cb8..0000000
+++ /dev/null
@@ -1,30 +0,0 @@
-
-\header{
-texidoc="
-Theads can be traced automagically when they switch staffs by setting
-property @code{followVoice}.
-";
-}
-
-\version "1.3.139"
-% followVoice: connect note heads with line when thread switches staff 
-
-fragment = \notes {
-  \context PianoStaff <
-    \property PianoStaff.followVoice = ##t
-    \property Voice.VoiceFollower \set #'type = #'dashed-line
-    \context Staff \context Voice {
-      c'1
-      \translator Staff=two
-      b2 a
-    }
-    \context Staff=two {\clef bass; \skip 1*2;}
-  >
-}
-
-\paper { linewidth = -1.; } 
-
-\score {
-  \notes\relative c \fragment
-  \paper { }  
-}
diff --git a/input/tricks/improv.ly b/input/tricks/improv.ly
deleted file mode 100644 (file)
index ff35018..0000000
+++ /dev/null
@@ -1,46 +0,0 @@
-
-improOn = \notes {\translator Voice = impro }
-improOff = \notes {\translator SquashVoice = melo }
-
-global = \notes { s1*3 \bar "|."; }
-
-\score {
-  <
-    \context ChordNames \chords {e8:m7*7 a2.:m7 bes4:m7 b1:m7 e8:m }
-    \context Staff \notes <
-      \context SquashVoice = impro { \global }
-      \context Voice = melo \transpose c'' {
-       e8 e g a a16()bes()a8 g \improOn e8
-       ~e2~e8 f4 fis8
-       ~fis2 \improOff a16()bes a8 g e
-      }
-    >
-  >
-  \paper { 
-    \translator {
-      \VoiceContext
-      \name SquashVoice;
-      \alias Voice;
-      \consists Pitch_squash_engraver;
-      \consists Local_key_engraver;
-      squashedPosition = 6;
-      NoteHead \override #'style = #'slash
-      Accidentals \override #'transparent = ##t
-    }
-    \translator {
-      \VoiceContext
-      \alias SquashVoice;
-      \consists Local_key_engraver;
-    }
-    \translator {
-      \ScoreContext
-      \accepts SquashVoice;
-    }
-    \translator {
-      \StaffContext
-      \remove Local_key_engraver;
-      \accepts SquashVoice;
-    }
-    linewidth = -1;
-  }
-}
diff --git a/input/tricks/metronome.ly b/input/tricks/metronome.ly
deleted file mode 100644 (file)
index d712999..0000000
+++ /dev/null
@@ -1,30 +0,0 @@
-
-
-
-% Test scm markup text and kerning
-
-% Warning
-%  
-% This is not a feature, it is a hack.  If you change anything,
-% it will probably break (that's because scm markup text is a
-% bit broken and needs fixing).  Chances are, it's already
-% broken by the time you read this.  Don't complain.
-%
-% FIXME: put in an item, and typeset by an engraver.
-
-#(define note '(rows (music "noteheads-2" ((kern . -0.1) "flags-stem"))))
-#(define eight-note `(rows ,note ((kern . -0.1) (music ((raise . 3.5) "flags-u3")))))
-#(define dotted-eight-note `(rows ,eight-note (music "dots-dot")))
-
-\score {
-  \notes\relative c'' {
-    a1^#`((rows (font-relative-size . -1)) ,dotted-eight-note " = 64")
-  }
-  \paper {
-    linewidth = -1.;
-    \translator{
-      \ScoreContext
-      TextScript \override #'font-shape = #'upright
-    }
-  }
-}
diff --git a/input/tricks/mmrest-collision.ly b/input/tricks/mmrest-collision.ly
deleted file mode 100644 (file)
index 0fd96e7..0000000
+++ /dev/null
@@ -1,25 +0,0 @@
-
-\score {
-  \context Staff \notes <
-    \context Voice=i {
-      \property Voice.MultiMeasureRest \override #'staff-position = #3
-      R1
-    }
-    \context Voice=ii {
-      \property Voice.MultiMeasureRest \override #'staff-position = #-3
-      R1
-    }
-  >
-  \paper {
-    \translator {
-      \StaffContext
-      \remove Multi_measure_rest_engraver;
-      \remove Bar_engraver;
-    }
-    \translator {
-      \VoiceContext
-      \consists Multi_measure_rest_engraver;
-      \consists Bar_engraver;
-    }
-  }
-}
diff --git a/input/tricks/move-notehead.ly b/input/tricks/move-notehead.ly
deleted file mode 100644 (file)
index 87deb18..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-
-
-fragment = \notes {
-    \outputproperty #(make-type-checker 'note-head-interface)
-      #'extra-offset = #'(2 . 3)
-    c''2 c
-}
-
-\paper { linewidth = -1.; } 
-
-\score {
-  \notes\relative c \fragment
-  \paper { }  
-}
diff --git a/input/tricks/move-specific-text.ly b/input/tricks/move-specific-text.ly
deleted file mode 100644 (file)
index 2fe4a71..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-
-#(define (make-text-checker text)
-   (lambda (grob) (equal? text (ly-get-grob-property grob 'text))))
-
-\score {
-  \notes\relative c''' {
-    \property Voice.Stem \set #'direction = #1
-    \outputproperty #(make-text-checker "m.d.")
-      #'extra-offset = #'(-3.5 . -4.5)
-    a^2^"m.d."
-  }
-  \paper { linewidth = -1.; }
-}
diff --git a/input/tricks/no-bar-lines.ly b/input/tricks/no-bar-lines.ly
deleted file mode 100644 (file)
index 1cd7f3c..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
-
-\score {
-  \notes \relative c'' {
-    a b c d
-    d c b a
-  }
-  \paper {
-    linewidth = -1.;
-    \translator {
-      \StaffContext
-      whichBar = #""
-      \remove "Time_signature_engraver";
-    }
-  }
-}
-
diff --git a/input/tricks/no-staff.ly b/input/tricks/no-staff.ly
deleted file mode 100644 (file)
index 5385aa2..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-
-\score {
-  \notes { c4 c4 c8 c8 }
-  \paper {
-    linewidth = -1.;
-    \translator {
-      \StaffContext
-      \remove Staff_symbol_engraver;
-      \consists Pitch_squash_engraver;
-      \remove Clef_engraver;
-    }
-  }
-}
-
diff --git a/input/tricks/ottava.ly b/input/tricks/ottava.ly
deleted file mode 100644 (file)
index 590bd73..0000000
+++ /dev/null
@@ -1,17 +0,0 @@
-
-
-fragment = \notes {
-  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 " . "")
-  \property Staff.centralCPosition = #-13
-  a\spanrequest \start "text" b c a \spanrequest \stop "text"
-}
-
-\paper { linewidth = -1.; } 
-
-\score {
-  \notes\relative c \fragment
-  \paper { }  
-}
diff --git a/input/tricks/part-combine.ly b/input/tricks/part-combine.ly
deleted file mode 100644 (file)
index 3e04e52..0000000
+++ /dev/null
@@ -1,38 +0,0 @@
-
-\header{
-texidoc="
-In orchestral scores and hymns, voices are traditionally combined onto
-one staff.  LilyPond has a part combiner, that combines or separates two
-voices according to actual rhythm and pitch.  User-defined texts such as
-``solo'' and ``@`a2'' are typeset automagically, as appropriate.
-";
-}
-
-\score{
-  \context Staff = flauti <
-    \time 4/4;
-    \context Voice=one \partcombine Voice
-    \context Thread=one \notes\relative c'' {
-      c4 d e f | b,4 d c d | r2 e4 f | c4 d e f |
-      c4 r e f | c4 r e f | c4 r a r | a a r a |
-      a2 \property Voice.soloADue = ##f a |
-    }
-    \context Thread=two \notes\relative c'' {
-      g4 b d f | r2 c4 d | a c c d | a4. b8 c4 d
-      c r e r | r2 s2 | a,4 r a r | a r r a |
-      a2 \property Voice.soloADue = ##f a |
-    }
-  >
-  \paper{
-    linewidth = 80 * \staffspace;
-    \translator{
-      \ThreadContext
-      \consists Rest_engraver;
-    }
-    \translator{
-      \VoiceContext
-      \remove Rest_engraver;
-    }
-  }
-}
-
diff --git a/input/tricks/partial-blank.ly b/input/tricks/partial-blank.ly
deleted file mode 100644 (file)
index 9b15bde..0000000
+++ /dev/null
@@ -1,28 +0,0 @@
-
-%{  When entering half music (I.e. for students to complete by hand)
-    you need the spacing to correspond to the timing - all measures same length, etc.
-    This thing implements it by adding invisible staff with lots of fast notes.
-%}
-
-\include "paper16.ly"
-
-
-quickmeasure = \notes {[\repeat unfold 16 c''16]}
-mel = \notes \relative c' {c16 d16 e8 a4 g2 e8 d c2. g'1 e4 d c2}
-
-\score {
-\context PianoStaff \notes <
-  \context Staff = v <
-    \clef G;
-    \context Voice=melo {\mel}
-    \context Voice=invisible {
-       \property Voice.NoteHead \override #'transparent = ##t
-       \property Voice.Stem \override #'transparent = ##t
-       \property Voice.Beam \override #'transparent = ##t
-        \repeat unfold 4 \quickmeasure
-    }
-  >
-  \context Staff = empty \notes {\clef F; s1*4}
->
-\paper {}
-}
diff --git a/input/tricks/reverse-music.ly b/input/tricks/reverse-music.ly
deleted file mode 100644 (file)
index d93a8ec..0000000
+++ /dev/null
@@ -1,31 +0,0 @@
-
-\header {
-texidoc="
-Simple customised music apply.
-";
-}
-
-music = \notes { c'4 d'4( e'4 f'4 }
-
-#(define (reverse-music music)
-  (let* ((elements (ly-get-mus-property music 'elements))
-         (reversed (reverse elements))
-         (span-dir (ly-get-mus-property music 'span-direction)))
-
-    (ly-set-mus-property music 'elements reversed)
-
-    (if (dir? span-dir)
-        (ly-set-mus-property music 'span-direction (- span-dir)))
-
-    (map reverse-music reversed)
-
-    music))
-
-\score {
-  \context Voice {
-    \music
-    \apply #reverse-music \music
-  }
-  \paper { linewidth = -1.; }
-}
-
diff --git a/input/tricks/slur-attachment-override.ly b/input/tricks/slur-attachment-override.ly
deleted file mode 100644 (file)
index 90f9118..0000000
+++ /dev/null
@@ -1,22 +0,0 @@
-
-\header{
-texidoc="
-In some cases, you may want to set slur attachments by hand.
-";
-}
-
-
-fragment = \notes {
-  \property Voice.Stem \set #'direction = #1
-  \property Voice.Slur \set #'direction = #1
-  d'32( d'4 )d8..
-  \property Voice.Slur \set #'attachment = #'(stem . stem)
-  d,32( d'4 )d8..
-}
-
-\paper { linewidth = -1.; } 
-
-\score {
-  \notes\relative c \fragment
-  \paper { }  
-}
diff --git a/input/tricks/slur-attachment.ly b/input/tricks/slur-attachment.ly
deleted file mode 100644 (file)
index 3b1ea94..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-
-
-fragment = \notes {
-  \property Voice.Slur \set #'direction = #1
-  \property Voice.Stem \set #'length = #5.5
-  g''8(g)g4
-  g4(g8)g
-  \property Voice.Slur \set #'attachment = #'(stem . stem)
-  g8(g)g4
-  g4(g8)g
-}
-
-\paper { linewidth = -1.; } 
-
-\score {
-  \notes\relative c \fragment
-  \paper { }  
-}
diff --git a/input/tricks/slur-ugly.ly b/input/tricks/slur-ugly.ly
deleted file mode 100644 (file)
index 5e021dd..0000000
+++ /dev/null
@@ -1,36 +0,0 @@
-
-\header {
-texidoc="You can get ugly slurs, if you want.
-";
-}
-
-baseWalk = \notes \relative c {
-  d,8( a' d f a d f d a f d )a
-}
-
-\score {
-  \notes \context PianoStaff <
-    \time 6/4;
-    \context Staff=up { s1 * 6/4 }
-    \context Staff=down <
-      \clef bass;
-      \autochange Staff \context Voice \baseWalk
-    >
-  >
-  \paper {
-    linewidth = -1.;
-    \translator {
-      \VoiceContext
-      Slur \override #'beautiful = #5.0
-      Slur \override #'direction = #1
-      Stem \override #'direction = #-1
-      autoBeamSettings \override #'(end * * * *)
-        = #(make-moment 1 2)
-    }
-    \translator {
-      \PianoStaffContext
-      VerticalAlignment \override #'threshold = #'(5 . 5)
-    }
-  }
-}
-
diff --git a/input/tricks/smart-transpose.ly b/input/tricks/smart-transpose.ly
deleted file mode 100644 (file)
index 0517011..0000000
+++ /dev/null
@@ -1,83 +0,0 @@
-
-\header {
-texidoc="
-@example
-    Here's a copy of my feature request :
-@quotation
-        Your task, if you accept it is to implement a \smarttranspose
-        command> that would translate such oddities into more natural
-        notations. Double accidentals should be removed, as well as E-sharp
-        (-> F), bC (-> B), bF (-> E), B-sharp (-> C).
-@end quotation
-
-You mean like this. (Sorry 'bout the nuked indentation.)
-@end example
-";
-}
-
-#(define  (unhair-pitch p)
-  (let* ((o (pitch-octave p))
-         (a (pitch-alteration p))
-         (n (pitch-notename p)))
-
-    (cond
-     ((and (> a 0) (or (eq? n 6) (eq? n 2)))
-      (set! a (- a 1)) (set! n (+ n 1)))
-     ((and (< a 0) (or (eq? n 0) (eq? n 3)))
-      (set! a (+ a 1)) (set! n (- n 1))))
-
-    (cond
-     ((eq? a 2)  (set! a 0) (set! n (+ n 1)))
-     ((eq? a -2) (set! a 0) (set! n (- n 1))))
-
-    (if (< n 0) (begin (set!  o (- o 1)) (set! n (+ n 7))))
-    (if (> n 7) (begin (set!  o (+ o 1)) (set! n (- n 7))))
-
-    (make-pitch o n a)))
-
-#(define (smart-transpose music pitch)
-  (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 (lambda (x) (smart-transpose x pitch)) es)))
-
-    (if (music? alts)
-        (ly-set-mus-property
-         music 'alternatives
-         (smart-transpose alts pitch)))
-
-    (if (music? body)
-        (ly-set-mus-property
-         music 'body
-         (smart-transpose body pitch)))
-
-    (if (music? e)
-        (ly-set-mus-property
-         music 'element
-         (smart-transpose e pitch)))
-
-    (if (pitch? p)
-        (begin
-          (set! p (unhair-pitch (Pitch::transpose p pitch)))
-          (ly-set-mus-property music 'pitch p)))
-
-    music))
-
-
-music = \notes \relative c' { c4 d  e f g a b  c }
-
-\score {
-  \notes \context Staff {
-    \transpose ais' \music
-    \apply #(lambda (x) (smart-transpose x (make-pitch 0 5 1)))
-      \music
-  }
-  \paper { linewidth = -1.; }
-}
-
diff --git a/input/tricks/staff-container.ly b/input/tricks/staff-container.ly
deleted file mode 100644 (file)
index baa7cd2..0000000
+++ /dev/null
@@ -1,39 +0,0 @@
-
-
-\header {
-
- texidoc = "By splitting the grouping (Axis_group_engraver) and
-creation functionality into separate contexts, you can override
-interesting things. You can also drop the \consistsend feature.";
-
-}
-
-
-\score  {
- \notes <
-       \context StaffContainer = SA { \property StaffContainer.StaffSymbol \set
-         #'staff-space = #0.8
-         \context Staff {        c4 c4 } }
-       \context StaffContainer =SB { \context Staff { d f  } }
- >
-
-\paper {
-       \translator {
-               \ScoreContext
-               \accepts StaffContainer;
-               \denies Staff;
-       }
-       \translator {
-               \type Engraver_group_engraver;
-               \consists "Axis_group_engraver";
-               \accepts "Staff";
-               \name StaffContainer;
-
-       }
-       \translator {
-               \StaffContext
-               \remove Axis_group_engraver;
-       }
-}
-}
-
index 79da706d91ef63e9754f0dba871144e0af0fb863..51583b97cf97163b8a0e6590823d92cacc645d94 100644 (file)
@@ -17,6 +17,8 @@ TODO:
 
 * lyrics.
 
+* drum, jazz, pop notation
+
 %}
 
 
diff --git a/input/tutorial/ly2dvi.ly b/input/tutorial/ly2dvi.ly
deleted file mode 100644 (file)
index e69de29..0000000
index ce1c5edb3aef2889017a376de08ce0b5c406dd07..72003d663eae05785881c332e30d09f480abe54c 100644 (file)
@@ -78,8 +78,13 @@ All_font_metrics::find_afm (String name)
       Adobe_font_metric *afm
        = dynamic_cast<Adobe_font_metric*> (unsmob_metrics (val));
 
-      if (output_format_global == "tex")
+      /*
+       only check checksums if there is one.  We take the risk that
+       some file has valid checksum 0
+      */
+      if (afm->checksum_)
        {
+         
          Tex_font_metric * tfm = find_tfm (name);
          
          /* FIXME: better warning message
index de404ca62fd1ff51944c04786308c82ee4611d48..1a68c4251fd3fbeb155ac0594e371727dfa5c1f3 100644 (file)
@@ -63,7 +63,7 @@ void
 Axis_group_engraver::finalize ()
 {
   String type = daddy_grav_l ()->type_str_ ;
-  SCM dims = get_property ((type  + "VerticalExtent").ch_C ());
+  SCM dims = get_property ("VerticalExtent");
   
   if (gh_pair_p (dims) && gh_number_p (gh_car (dims))
       && gh_number_p (gh_cdr (dims)))
@@ -72,12 +72,12 @@ Axis_group_engraver::finalize ()
       staffline_p_->set_grob_property ("extent-Y", dims);
     }
 
-  dims = get_property ((type + "MinimumVerticalExtent").ch_C ());
+  dims = get_property ("MinimumVerticalExtent");
   if (gh_pair_p (dims) && gh_number_p (gh_car (dims))
       && gh_number_p (gh_cdr (dims)))
     staffline_p_->set_grob_property ("minimum-extent-Y", dims);
 
-  dims = get_property ((type + "ExtraVerticalExtent").ch_C ());
+  dims = get_property ("ExtraVerticalExtent");
   if (gh_pair_p (dims) && gh_number_p (gh_car (dims))
       && gh_number_p (gh_cdr (dims)))
     staffline_p_->set_grob_property ("extra-extent-Y", dims);
index d4a84ef800785e74ac78b4593d8658468a2429c6..edc53318fef68fce2d5ed9b64cf8db98fb783633 100644 (file)
@@ -7,9 +7,9 @@
 */
 
 #include <math.h>
+
 #include "config.h"
 #include "warn.hh"
-
 #include "libc-extension.hh"
 #include "bezier.hh"
 #include "polynomial.hh"
index 6f527fc75e7aa0089f138687ad36e1dc23c40a36..961b6bf6c0ac503f0f0492ac32fb6a81a79c86b9 100644 (file)
 
 #include "translator-group.hh"
 #include "key-item.hh"
-#include "local-key-item.hh"
 #include "bar.hh"
-#include "note-head.hh"
 #include "staff-symbol-referencer.hh"
 #include "debug.hh"
 #include "engraver.hh"
 #include "direction.hh"
 #include "side-position-interface.hh"
 #include "item.hh"
-#include "custos.hh"
 
 /// where is c-0 in the staff?
 class Clef_engraver : public  Engraver
@@ -35,7 +32,7 @@ public:
 protected:
   virtual void stop_translation_timestep ();
   virtual void start_translation_timestep ();
-  virtual void create_grobs ();
+  virtual void process_music ();
   virtual void acknowledge_grob (Grob_info);
 
 private:
@@ -112,25 +109,14 @@ Clef_engraver::set_glyph ()
 void
 Clef_engraver::acknowledge_grob (Grob_info info)
 {
-  create_grobs ();
   Item * item =dynamic_cast <Item *> (info.elem_l_);
   if (item)
     {
       if (Bar::has_interface (info.elem_l_)
          && gh_string_p (get_property ("clefGlyph")))
        create_clef ();
-      
 
-      if (Note_head::has_interface (item)
-         || Local_key_item::has_interface (item)
-         || Custos::has_interface (item)
-         )
-       {
-         int p = int (Staff_symbol_referencer::position_f (item))
-           + gh_scm2int (get_property ("centralCPosition"));
-         Staff_symbol_referencer::set_position (item, p);
-       }
-      else if (Key_item::has_interface (item))
+      if (Key_item::has_interface (item))
        {
          /*
            Key_item adapts its formatting to make sure that the
@@ -175,7 +161,7 @@ Clef_engraver::create_clef ()
 }
 
 void
-Clef_engraver::create_grobs ()
+Clef_engraver::process_music ()
 {
   SCM glyph = get_property ("clefGlyph");
   SCM clefpos = get_property ("clefPosition");
index ea7e0a4a20cdad1578ae20cf289c636707285ec8..1b06d2f645e8d554d46d85d7cb91b88797aabe49 100644 (file)
@@ -59,10 +59,37 @@ Key_change_req::transpose (Pitch p)
   set_mus_property ("pitch-alist", newlist);
 }
 
-Break_req::Break_req ()
+
+bool
+alist_equal_p (SCM a, SCM b)
 {
+  for (SCM s = a;
+       gh_pair_p (s); s = gh_cdr (s))
+    {
+      SCM key = gh_caar (s);
+      SCM val = gh_cdar (s);
+      SCM l = scm_assoc (key, b);
+
+      if (l == SCM_BOOL_F
+         || !gh_equal_p ( gh_cdr (l), val))
+
+       return false;
+    }
+  return true;
 }
 
+bool
+Key_change_req::do_equal_b (Request const * m )const
+{
+  Key_change_req const * kc =dynamic_cast<Key_change_req const*> (m);
+
+  if(!kc)
+    return false;
+  return alist_equal_p (get_mus_property ("pitch-alist"),
+                       kc->get_mus_property ("pitch-alist"));
+}
+
+
 
 bool
 Mark_req::do_equal_b (Request const * r) const
index 075e80d79298c85c35d90c4714101753527872b8..55c8c73f36a54af08bb772a1b204e312012ca63f 100644 (file)
@@ -103,9 +103,15 @@ Custos_engraver::create_grobs ()
       for (int i = pitches_.size (); i--;)
        {
          Item *c = create_custos ();
+
+         int p = pitches_[i].steps ();
+         SCM c0 = get_property ("centralCPosition");
+         if (gh_number_p (c0))
+           p += gh_scm2int (c0);
+
          
          c->set_grob_property ("staff-position",
-                              gh_int2scm (pitches_[i].steps ()));
+                               gh_int2scm (p));
          
        }
 
diff --git a/lily/debug.cc b/lily/debug.cc
deleted file mode 100644 (file)
index 57380d6..0000000
+++ /dev/null
@@ -1,53 +0,0 @@
-/*   
-  debug.cc --  implement debugging routines
-
-  source file of the GNU LilyPond music typesetter
-  
-  (c) 1996--2001 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-  
- */
-
-#include <fstream.h>
-#include <signal.h>
-#include <stdlib.h>
-
-#include "debug.hh"
-#include "dstream.hh"
-#include "flower-debug.hh"
-#include "moment.hh"
-#include "misc.hh"
-#include "main.hh"
-
-Dstream *my_monitor=0;
-
-void
-float_handler (int)
-{
-  cerr << _ ("floating point exception") << endl;
-  assert (false);
-}
-
-void
-debug_init ()
-{
-  my_monitor = new Dstream (&cout, ".dstreamrc");
-  signal (SIGFPE, float_handler);
-}
-
-bool check_malloc_b = false;
-
-void
-set_debug (bool b)
-{
-  if (b)
-    flower_dstream = my_monitor;
-  else
-    flower_dstream = 0;
-  
-#ifdef MEMORY_PARANOID
-  if (check_malloc_b)
-    if (mcheck (0))
-      warning (_ ("can't set mem-checking!"));
-#endif
-}
-
index 1bda7ea01f73fb45f7a981e6c8fa276bc2082c77..23ae1bd02099a793af3910efdba5053dad7adcb6 100644 (file)
@@ -174,7 +174,7 @@ Dynamic_engraver::process_music ()
       script_p_->set_grob_property ("text",
                                   script_req_l_->get_mus_property ("text"));
       
-      Side_position_interface::set_direction (script_p_, LEFT);
+      Side_position_interface::set_direction (script_p_, DOWN);
 
       if (Direction d = script_req_l_->get_direction ())
        Directional_element_interface::set (line_spanner_, d);
@@ -373,10 +373,24 @@ Dynamic_engraver::typeset_all ()
 
       */
 
-      if (!finished_line_spanner_->get_bound (RIGHT)
-         && finished_line_spanner_->get_bound (LEFT))
-       finished_line_spanner_->set_bound (RIGHT, finished_line_spanner_->get_bound (LEFT));
-      
+      Grob * l = finished_line_spanner_->get_bound (LEFT );
+      Grob * r = finished_line_spanner_->get_bound (RIGHT);      
+      if (!r && l)
+       finished_line_spanner_->set_bound (RIGHT, l);
+      else if (!l && r)
+       finished_line_spanner_->set_bound (LEFT, r);
+      else if (!r && !l)
+       {
+         /*
+           This is a isolated dynamic apparently, and does not even have
+           any interesting support item.
+          */
+         Grob * cc = unsmob_grob (get_property ("currentMusicalColumn"));
+         Item * ci = dynamic_cast<Item*>(cc);
+         finished_line_spanner_->set_bound (RIGHT, ci);
+         finished_line_spanner_->set_bound (LEFT, ci);   
+       }
+       
       typeset_grob (finished_line_spanner_);
       finished_line_spanner_ = 0;
     }
index 433a107ba6ae989e1a538147260c474053b20d8b..cd676ff44a40bc0faeadcd5fa05198852b87525f 100644 (file)
@@ -37,7 +37,11 @@ Hyphen_spanner::brew_molecule (SCM smob)
   
   do
     {
-      bounds[d] = sp->get_bound (d)->extent (common, X_AXIS)[-d];
+      Interval iv = sp->get_bound (d)->extent (common, X_AXIS);
+
+      bounds[d] = iv.empty_b ()
+       ? sp->get_bound (d)->relative_coordinate (common, X_AXIS)
+       : iv[-d];
     }
   while (flip (&d) != LEFT);
   
index 2670690a3eb5f73ae07d8098ef6944699903d11e..8c4cbeeb51fb9e5928af904a09b836c6a6cb1a6d 100644 (file)
@@ -18,8 +18,6 @@
 
 class Break_req : public Request {
 public:
-
-  Break_req ();
 protected:
   VIRTUAL_COPY_CONS (Music);
 };
@@ -63,6 +61,7 @@ public:
   
 protected:
   VIRTUAL_COPY_CONS (Music);
+  bool do_equal_b (Request const * ) const;
   void transpose (Pitch  d);
 };
 
index c5928440069b3f9984305cb382549d73f112f063..956b06b54fd56919cfcfaaa4724321ddaeb64d4b 100644 (file)
@@ -6,10 +6,9 @@
 #define DEBUG_HH
 
 #include <assert.h>
-#include "dstream.hh"
+
 #include "real.hh"
 #include "lily-proto.hh"
-#include "flower-debug.hh"
 #include "warn.hh"
 
 void progress_indication (String);
index 8b32647c4e05ad61e76c3ddf76e10fdfc0c42b97..47c9bfdfe6d16f99b37e97faf91fcfe0ae0a7fd4 100644 (file)
@@ -13,7 +13,7 @@
 
 struct Key_item
 {
-  static int calculate_position (Grob*,SCM pair) ;
+
   static void set_interface (Grob*);
   static bool has_interface (Grob*);
   DECLARE_SCHEME_CALLBACK (brew_molecule, (SCM ));
index 7cfcee40b641435173f0c5fa28fa8c16b4e04f48..8dc62ea994507c898853b3cdf4cb0f76c75d568d 100644 (file)
@@ -75,11 +75,6 @@ Key_engraver::create_key (bool def)
       Staff_symbol_referencer::set_interface (item_p_);
       Key_item::set_interface (item_p_);
 
-      SCM prop = get_property ("keyOctaviation");
-      bool multi = to_boolean (prop);
-      
-      if (multi)
-       item_p_->set_grob_property ("multi-octave", gh_bool2scm (multi));
       
       announce_grob (item_p_,keyreq_l_);
     }
@@ -99,10 +94,15 @@ Key_engraver::try_music (Music * req_l)
 {
   if (Key_change_req *kc = dynamic_cast <Key_change_req *> (req_l))
     {
-      if (keyreq_l_)
-       warning (_ ("FIXME: key change merge"));
+      if (keyreq_l_ && !keyreq_l_->equal_b (kc))
+       {
+         kc->origin ()->warning (_ ("Conflicting key signatures found."));
+         keyreq_l_->origin ()->warning (_ ("This was the other key definition."));       
+         return false;
+       }
       keyreq_l_ = kc;
       read_req (keyreq_l_);
+
       return true;
     }   
   return  false;
index f1c8ec2232b5b983109072ced458a9d51e5fb7de..c87f51ed7f226298f7528d8af356faff8aead0ce 100644 (file)
@@ -26,46 +26,48 @@ const int SHARP_TOP_PITCH=4; /*  ais and bis typeset in lower octave */
 /*
   FIXME: key-item should just get a list of (position, acc), and leave
   the thinking to other parties.
- */
+
+  - TODO: put this in Scheme
+  
+  - lots of values trivially shared (key doesn't change very
+  often). Compute those once, and use that as cache for the rest.
+
+*/
 int
-Key_item::calculate_position (Grob *ki, SCM pair) 
+alteration_pos  (SCM what, int alter, int c0p)
 {
-  int p = gh_scm2int (gh_car (pair));
-  int a = gh_scm2int (gh_cdr (pair));  
-  int c0p = gh_scm2int (ki->get_grob_property ("c0-position"));
-  if (to_boolean (ki->get_grob_property ("multi-octave")))
-    {
-      return p + c0p;
-    }
-  else {
-    // Find the c in the range -4 through 2
-    int from_bottom_pos = c0p + 4;
-    from_bottom_pos = from_bottom_pos%7;
-    from_bottom_pos = (from_bottom_pos + 7)%7; // Precaution to get positive.
-    int c0 = from_bottom_pos - 4;
+  if (gh_pair_p (what))
+    return gh_scm2int (gh_car (what)) * 7 + gh_scm2int (gh_cdr (what)) + c0p;
+
+  int p = gh_scm2int (what);
+
+  // Find the c in the range -4 through 2
+  int from_bottom_pos = c0p + 4;
+  from_bottom_pos = from_bottom_pos%7;
+  from_bottom_pos = (from_bottom_pos + 7)%7; // Precaution to get positive.
+  int c0 = from_bottom_pos - 4;
 
     
-    if ((a<0 && ((p>FLAT_TOP_PITCH) || (p+c0>4)) && (p+c0>1)) 
-       ||
(a>0 && ((p>SHARP_TOP_PITCH) || (p+c0>5)) && (p+c0>2))) 
-      {
-       p -= 7; /* Typeset below c_position */
-      }
-    /* Provide for the four cases in which there's a glitch 
+  if ((alter <0 && ((p>FLAT_TOP_PITCH) || (p+c0>4)) && (p+c0>1)) 
+      ||
     (alter >0 && ((p>SHARP_TOP_PITCH) || (p+c0>5)) && (p+c0>2))) 
+    {
+      p -= 7; /* Typeset below c_position */
+    }
+  /* Provide for the four cases in which there's a glitch 
        it's a hack, but probably not worth  
        the effort of finding a nicer solution.
        --dl. */
-    if (c0==2 && a>0 && p==3)
-      p -= 7;
-    if (c0==-3 && a>0 && p==-1)
-      p += 7;
-    if (c0==-4 && a<0 && p==-1)
-      p += 7;
-    if (c0==-2 && a<0 && p==-3)
-      p += 7;
+  if (c0==2 && alter >0 && p==3)
+    p -= 7;
+  if (c0==-3 && alter>0 && p==-1)
+    p += 7;
+  if (c0==-4 && alter<0 && p==-1)
+    p += 7;
+  if (c0==-2 && alter<0 && p==-3)
+    p += 7;
     
-    return p + c0;
-  }
+  return p + c0;
 }
 
 /*
@@ -78,7 +80,6 @@ Key_item::brew_molecule (SCM smob)
 {
   Grob*me =unsmob_grob (smob);
 
-
   Real inter = Staff_symbol_referencer::staff_space (me)/2.0;
   
   SCM newas = me->get_grob_property ("new-accidentals");  
@@ -87,11 +88,15 @@ Key_item::brew_molecule (SCM smob)
     SCM lists are stacks, so we work from right to left, ending with
     the cancellation signature.
   */
+  int c0p = gh_scm2int (me->get_grob_property ("c0-position"));
   for (SCM s = newas; gh_pair_p (s); s = gh_cdr (s))
     {
-      int a = gh_scm2int (gh_cdar (s));
-      Molecule m = Font_interface::get_default_font (me)->find_by_name ("accidentals-" + to_str (a));
-      m.translate_axis (calculate_position (me, gh_car (s)) * inter, Y_AXIS);
+      SCM what = gh_caar (s);
+      int alter = gh_scm2int (gh_cdar (s));
+      int pos = alteration_pos (what, alter, c0p);
+      
+      Molecule m = Font_interface::get_default_font (me)->find_by_name ("accidentals-" + to_str (alter));
+      m.translate_axis (pos * inter, Y_AXIS);
       mol.add_at_edge (X_AXIS, LEFT, m, 0);
     }
 
@@ -99,6 +104,7 @@ Key_item::brew_molecule (SCM smob)
   if (it->break_status_dir () != RIGHT)
     {
       SCM old = me->get_grob_property ("old-accidentals");
+      
       /*
        Add half a space between  cancellation and key sig.
 
@@ -108,24 +114,25 @@ Key_item::brew_molecule (SCM smob)
       Interval y (0,0);
 
       mol.add_at_edge (X_AXIS, LEFT, Lookup::blank (Box (x,y)),0);
+
+      Molecule natural;
+      if (gh_pair_p (old))
+       natural=Font_interface::get_default_font (me)->find_by_name ("accidentals-0");
       
       for (; gh_pair_p (old); old = gh_cdr (old))
         {
-         SCM found = SCM_EOL;
-
-         /*
-           find correspondences in pitches 
-          */
-          for (SCM s = newas; gh_pair_p (s); s = gh_cdr (s))
-           if (gh_caar (s) == gh_caar (old))
-             found  = gh_car (s);
-               
-         if (found == SCM_EOL || gh_cdr (found) != gh_cdar (old))
+         SCM found = scm_assoc (gh_caar (old), newas);
+         if (found == SCM_BOOL_F
+             || gh_cdr (found) != gh_cdar (old))
            {
-              Molecule m =Font_interface::get_default_font (me)->find_by_name ("accidentals-0");
+             SCM what = gh_caar (old);
+             int alter = 0;
+             int pos = alteration_pos (what, alter, c0p);
+
+             Molecule m = natural;
+              m.translate_axis (pos* inter, Y_AXIS);
 
-              m.translate_axis (calculate_position (me, gh_car (old)) * inter, Y_AXIS);
-              mol.add_at_edge (X_AXIS, LEFT, m,0);     
+             mol.add_at_edge (X_AXIS, LEFT, m, 0);
             }
         }
     }
index 7deca514b0a9e5aebb3944ebba3e64f7ffcc3173..d8646ab67325d08da0f5a99cd8f8597dd9c3b257 100644 (file)
@@ -145,7 +145,7 @@ HYPHEN              --
 <version>\"[^"]*\";?   { /* got the include file name */
        String s (YYText ()+1);
        s = s.left_str (s.index_last_i ('"'));
-       DEBUG_OUT << "#version `" << s << "'\n";
+
        yy_pop_state ();
        if (!valid_version_b (s))
                return INVALID;
@@ -187,7 +187,7 @@ HYPHEN              --
 <incl>\"[^"]*\";?   { /* got the include file name */
        String s (YYText ()+1);
        s = s.left_str (s.index_last_i ('"'));
-       DEBUG_OUT << "#include `" << s << "'\n";
+
        new_input (s,source_global_l);
        yy_pop_state ();
 }
@@ -196,7 +196,7 @@ HYPHEN              --
        strip_trailing_white (s);
        if (s.length_i () && (s[s.length_i () - 1] == ';'))
          s = s.left_str (s.length_i () - 1);
-       DEBUG_OUT << "#include `\\" << s << "'\n";
+
        SCM sid = lookup_identifier (s);
        if (gh_string_p (sid)) {
                new_input (ly_scm2string (sid), source_global_l);
@@ -290,7 +290,7 @@ HYPHEN              --
                *yylval.string += YYText ();
        }
        \"      {
-               DEBUG_OUT << "quoted string: `" << *yylval.string << "'\n";
+
                yy_pop_state ();
 
                /* yylval is union. Must remember STRING before setting SCM*/
@@ -330,7 +330,7 @@ HYPHEN              --
                                _ ("Brace found at end of lyric. Did you forget a space?"));
                yylval.scm = ly_str02scm (s.ch_C ());
 
-               DEBUG_OUT << "lyric : `" << s << "'\n";
+
                return STRING;
        }
        . {
@@ -369,7 +369,7 @@ HYPHEN              --
 }
 
 <<EOF>> {
-       DEBUG_OUT << "<<eof>>";
+
 
        if (! close_input ()) { 
          yyterminate (); // can't move this, since it actually rets a YY_NULL
@@ -387,7 +387,7 @@ HYPHEN              --
        Real r;
        int cnv=sscanf (YYText (), "%lf", &r);
        assert (cnv == 1);
-       DEBUG_OUT  << "REAL" << r<<'\n';
+
        yylval.real = r;
        return REAL;
 }
@@ -398,12 +398,12 @@ HYPHEN            --
 }
 
 [{}]   {
-       DEBUG_OUT << "parens\n";
+
        return YYText ()[0];
 }
 [*:=]          {
        char c = YYText ()[0];
-       DEBUG_OUT << "misc char" <<c<<"\n";
+
        return c;
 }
 
index 5432fd89d015cde578e568c653718983ca9a7d98..94e7980d04701022a93763183c084a986a7acb40 100644 (file)
@@ -135,8 +135,11 @@ Local_key_engraver::create_grobs ()
                  key_item_p_ = new Item (get_property ("Accidentals"));
                  Local_key_item::set_interface (key_item_p_);
 
-
+                 
                  Staff_symbol_referencer::set_interface (key_item_p_);
+                 SCM c0 = get_property ("centralCPosition");
+                 if (gh_number_p (c0))
+                   Staff_symbol_referencer::set_position (key_item_p_, gh_scm2int (c0));
                         
                  announce_grob (key_item_p_, 0);
                }
index 75c9ea84d8be439d37006fc973fec8a1cea7a125..0c6ee806b081b4229b9f3e0e5eae177d9a28eba9 100644 (file)
@@ -400,7 +400,6 @@ sane_putenv (char const* key, char const* value)
 int
 main (int argc, char **argv)
 {
-  debug_init ();               // should be first (can see that; but Why?)
   setup_paths ();
 
   /* Prepare GUILE for heavy memory usage.  If you have plenty memory,
index 0a0ec83780d920ce1a018ad66c13333bd53e7fb1..bd66558dad2f112b65f74ea9262067533c32d4d4 100644 (file)
@@ -9,7 +9,7 @@
 #include "multi-measure-rest.hh"
 #include "paper-column.hh"
 #include "engraver-group-engraver.hh"
-#include "bar.hh"
+
 #include "staff-symbol-referencer.hh"
 #include "engraver.hh"
 #include "moment.hh"
@@ -18,9 +18,6 @@
 /**
    The name says it all: make multi measure rests 
 
-FIXME? The MM rest engraver must be able to see bar lines, so it won't
-work at Voice level. Not a problem in practice, but aesthetically pleasing? 
-
 */
 class Multi_measure_rest_engraver : public Engraver
 {
@@ -29,7 +26,6 @@ public:
   Multi_measure_rest_engraver ();
 
 protected:
-  virtual void acknowledge_grob (Grob_info i);
   virtual bool try_music (Music*);
   virtual void process_music ();
   virtual void stop_translation_timestep ();
@@ -56,18 +52,6 @@ Multi_measure_rest_engraver::Multi_measure_rest_engraver ()
   new_req_l_ = busy_span_req_l_ = stop_req_l_ =0;
 }
 
-void
-Multi_measure_rest_engraver::acknowledge_grob (Grob_info i)
-{
-  Item * item = dynamic_cast<Item*> (i.elem_l_); 
-  if (item && Bar::has_interface (item))
-    {
-      if (mmrest_p_)
-       Multi_measure_rest::add_column (mmrest_p_,item);
-      if (lastrest_p_)
-       Multi_measure_rest::add_column (lastrest_p_,item);
-    }
-}
 
 bool
 Multi_measure_rest_engraver::try_music (Music* req_l)
@@ -125,7 +109,15 @@ Multi_measure_rest_engraver::process_music ()
        = gh_scm2int (get_property ("currentBarNumber"));
     }
 
-
+  if (gh_string_p (get_property ("whichBar")))
+    {
+      Grob *cmc = unsmob_grob (get_property( "currentCommandColumn"));
+      Item *it = dynamic_cast<Item*> (cmc);
+      if (mmrest_p_)
+       add_bound_item (mmrest_p_, it);
+      if (lastrest_p_)
+       add_bound_item (lastrest_p_,it);
+    }
 }
 
 void
@@ -136,7 +128,7 @@ Multi_measure_rest_engraver::stop_translation_timestep ()
 
   if (mmrest_p_ && (now_mom () >= start_moment_) 
       && !mp
-      && (scm_ilength (mmrest_p_->get_grob_property ("columns")) >= 2))
+      && mmrest_p_->get_bound (LEFT) && mmrest_p_->get_bound (RIGHT))
     {
       typeset_grob (mmrest_p_);
       /*
@@ -148,8 +140,7 @@ Multi_measure_rest_engraver::stop_translation_timestep ()
   if (lastrest_p_)
     {
       /* sanity check */
-      if (scm_ilength (lastrest_p_->get_grob_property ("columns")) >= 2
-         && lastrest_p_->get_bound (LEFT) && lastrest_p_->get_bound (RIGHT)
+      if (lastrest_p_->get_bound (LEFT) && lastrest_p_->get_bound (RIGHT)
          && lastrest_p_->get_bound (LEFT) != lastrest_p_->get_bound (RIGHT))
        typeset_grob (lastrest_p_);
       lastrest_p_ = 0;
index 7fa6ff7d04b3157a3574c0406bdddf407c154f83..f6553c9cb5eac5b73a8e4575c0f6483bff5245cc 100644 (file)
@@ -46,7 +46,7 @@ My_lily_parser::parse_file (String init, String s)
 
   progress_indication (_ ("Parsing..."));
 
-  set_yydebug (flower_dstream &&!flower_dstream->silent_b ("Parser"));
+  set_yydebug (0);
   lexer_p_->new_input (init, source_l_);
   do_yyparse ();
 
index 2d13e7a7a87b7429762531ca63472fd350416800..87a5bff3f2d5a82fbe03c311aa907eef9b08a692 100644 (file)
@@ -30,8 +30,8 @@ public:
 protected:
   virtual void start_translation_timestep ();
   virtual bool try_music (Music *req_l) ;
-  virtual void create_grobs ();
-  virtual void acknowledge_grob (Grob_info) ;
+  virtual void process_music ();
+
   virtual void stop_translation_timestep ();
 };
 
@@ -53,18 +53,10 @@ Note_heads_engraver::try_music (Music *m)
   
 }
 
-void
-Note_heads_engraver::acknowledge_grob (Grob_info)
-{
-  //create_grobs ();
-}
 
 void
-Note_heads_engraver::create_grobs ()
+Note_heads_engraver::process_music ()
 {
-  if (note_p_arr_.size ())
-    return ;
-  
   for (int i=0; i < note_req_l_arr_.size (); i++)
     {
       Item *note_p  = new Item (get_property ("NoteHead"));
@@ -94,8 +86,13 @@ Note_heads_engraver::create_grobs ()
        }
 
       Pitch *pit =unsmob_pitch (req->get_mus_property ("pitch"));
-      note_p->set_grob_property ("staff-position",  gh_int2scm (pit->steps ()));
 
+      int pos = pit->steps ();
+      SCM c0 = get_property ("centralCPosition");
+      if (gh_number_p (c0))
+       pos += gh_scm2int (c0);
+
+      note_p->set_grob_property ("staff-position",   gh_int2scm (pos));
       if (to_boolean (get_property ("easyPlay")))
        {
          char s[2] = "a";
@@ -147,8 +144,6 @@ Note_heads_engraver::start_translation_timestep ()
       else
        e->forbid_breaks ();    // guh. Use properties!
     }
-
-  
 }
 
 
index 54d0ce94000943bfeec744dee367af01d05dc784..16e9c0ee2fe02c56babbdae02aed5c00908c7bad 100644 (file)
@@ -242,8 +242,8 @@ yylex (YYSTYPE *s,  void * v_l)
 
 %type <scm>    identifier_init 
 
-%type <scm> steno_duration optional_notemode_duration
-%type <scm> entered_notemode_duration explicit_duration
+%type <scm> steno_duration optional_notemode_duration multiplied_duration
+%type <scm>  explicit_duration
        
 %type <reqvec>  pre_requests post_requests
 %type <request> gen_text_def
@@ -755,14 +755,6 @@ Simple_music:
        }
        | property_def
        | translator_change
-       | Simple_music '*' bare_unsigned '/' bare_unsigned      {
-               $$ = $1;
-               $$->compress (Moment ($3, $5 ));
-       }
-       | Simple_music '*' bare_unsigned                 {
-               $$ = $1;
-               $$->compress (Moment ($3, 1));
-       }
        ;
 
 
@@ -1530,31 +1522,19 @@ absolute_pitch:
        ;
 
 duration_length:
-       steno_duration {
+       multiplied_duration {
                $$ = $1;
        }
        | explicit_duration {
                $$ = $1;
        }       
-       | duration_length '*' bare_unsigned {
-               $$ = unsmob_duration ($$)->compressed ( $3) .smobbed_copy ();
-       }
-       | duration_length '/' bare_unsigned {
-               $$ = unsmob_duration ($$)->compressed (Moment (1,$3)).smobbed_copy ();
-       }
-       ;
-
-entered_notemode_duration:
-       steno_duration  {
-               THIS->set_last_duration (unsmob_duration ($1));
-       }
        ;
 
 optional_notemode_duration:
        {
                $$ = THIS->default_duration_.smobbed_copy ();
        }
-       | entered_notemode_duration {
+       | multiplied_duration   {
                $$ = $1;
        }
        | explicit_duration {
@@ -1571,11 +1551,30 @@ steno_duration:
                        l =  intlog2 ($1);
 
                $$ = Duration (l, $2).smobbed_copy ();
+
+               THIS->set_last_duration (unsmob_duration ($$));
        }
        | DURATION_IDENTIFIER dots      {
                Duration *d =unsmob_duration ($1);
                Duration k (d->duration_log (),d->dot_count () + $2);
-               $$ = k.smobbed_copy ();         
+               $$ = k.smobbed_copy ();
+
+               THIS->set_last_duration (unsmob_duration ($$));
+       }
+       ;
+
+
+
+
+multiplied_duration:
+       steno_duration {
+               $$ = $1;
+       }
+       | multiplied_duration '*' bare_unsigned {
+               $$ = unsmob_duration ($$)->compressed ( $3) .smobbed_copy ();
+       }
+       | multiplied_duration '/' bare_unsigned {
+               $$ = unsmob_duration ($$)->compressed (Moment (1,$3)).smobbed_copy ();
        }
        ;
 
index d7395d2518248fe3745c49f6d5d147da2c04d912..b5f0db22d72365f7de7e5097256d545380da68e0 100644 (file)
@@ -163,9 +163,6 @@ Slur_bezier_bow::minimise_enclosed_area (Real beauty,
   for (int i=0; i < steps; i++)
     {
       Real area = enclosed_area_f ();
-      if (!i)
-       DEBUG_OUT << to_str ("Init area: %f\n", area);
-
       if (area <= beautiful)
        break;
 
@@ -186,8 +183,6 @@ Slur_bezier_bow::minimise_enclosed_area (Real beauty,
       curve_.control_[1][X_AXIS] -= da[0] * u * pct;
       curve_.control_[2][X_AXIS] -= da[1] * u * pct;
     }
-
-  //  Real area = enclosed_area_f ();
 }
 
 
index 58ef8d549b64341352e8323323185f76e3a43633..6e605ea07fc2ff045930f787955806267054418f 100644 (file)
@@ -146,15 +146,14 @@ Tie::get_control_points (SCM smob)
    */
   Real lambda = 0.5;           
   
-  if (Note_head::has_interface (me->get_bound (LEFT)))
+  if (Note_head::has_interface (l))
     left_x = l->extent (l, X_AXIS)[RIGHT] + x_gap_f;
   else
     left_x = l->extent (l, X_AXIS).linear_combination (lambda);
   
 
   Real width;
-  if (Note_head::has_interface (me->get_bound (LEFT))
-      && Note_head::has_interface (me->get_bound (RIGHT)))
+  if (Note_head::has_interface (l) && Note_head::has_interface (r))
     {
       width = 
        + r->extent (commonx,X_AXIS)[LEFT]
@@ -163,7 +162,7 @@ Tie::get_control_points (SCM smob)
     }
   else
     {
-      if (Note_head::has_interface (me->get_bound (LEFT)))
+      if (Note_head::has_interface (l))
        width = r->relative_coordinate (commonx, X_AXIS)
          - l->extent (commonx, X_AXIS)[RIGHT]
          - 2 * x_gap_f;
@@ -209,6 +208,20 @@ Tie::get_control_points (SCM smob)
 
   Real ypos = Tie::position_f (me) * staff_space/2 + dir * dy;
 
+  /*
+    Make sure we don't start on a dots
+   */
+  if (Note_head::has_interface (l) && Rhythmic_head::dots_l (l))
+    {
+      Grob* dots = Rhythmic_head::dots_l(l);
+      if(fabs (staff_space * Staff_symbol_referencer::position_f (dots) /2
+              - ypos) < 0.5)
+       {
+         ypos += 0.5 * dir ;
+       }
+    }
+
+  
   /*
     todo: prevent ending / staffline collision.
 
@@ -243,7 +256,7 @@ Tie::get_control_points (SCM smob)
 
       Real clear = staff_space * gh_scm2double (me->get_grob_property ("staffline-clearance"));
 
-       if (fabs (y) <= Staff_symbol_referencer::staff_radius (me)
+      if (fabs (y) <= Staff_symbol_referencer::staff_radius (me)
          && fabs (diff) < clear)
        {
          Real y1 = ry + clear;
@@ -251,7 +264,7 @@ Tie::get_control_points (SCM smob)
          
          newy = (fabs (y1 - y) < fabs (y2 - y)) ? y1 : y2;
          
-         //      newy = ry - 0.5 * staff_space * sign (diff) ;
+         // newy = ry - 0.5 * staff_space * sign (diff) ;
 
          /*
            we don't want horizontal ties
diff --git a/ly/declarations-as.ly b/ly/declarations-as.ly
deleted file mode 100644 (file)
index e69de29..0000000
index 6536fe26bbb9d6de1ba64b29971746a696bdb4f0..5a6c0eff0f78887c7f8a04d661e180cd89c6dcc6 100644 (file)
@@ -44,6 +44,10 @@ StaffContext=\translator {
 %}
 
        \consistsend "Axis_group_engraver";
+       
+       MinimumVerticalExtent = ##f
+       ExtraVerticalExtent = ##f
+       VerticalExtent = ##f 
 
        % explicitly set instrument, so we don't get 
        % weird effects when doing instrument names for
@@ -59,6 +63,10 @@ StaffContext=\translator {
 StaffContainerContext = \translator {
        \type Engraver_group_engraver;
        \consists "Axis_group_engraver";
+       MinimumVerticalExtent = ##f
+       ExtraVerticalExtent = ##f
+       VerticalExtent = ##f 
+       
        \accepts Staff;
        \name StaffContainer;
 }
@@ -92,6 +100,9 @@ RhythmicStaffContext=\translator{
        \consists "Output_property_engraver";   
 
        Generic_property_list = #generic-staff-properties
+       MinimumVerticalExtent = ##f
+       ExtraVerticalExtent = ##f
+       VerticalExtent = ##f 
 
        \consists "Pitch_squash_engraver";
        \consists "Separating_line_group_engraver";     
@@ -276,8 +287,9 @@ StaffGroupContext = \translator {
 LyricsVoiceContext= \translator{
        \type "Engraver_group_engraver";
        \consistsend "Axis_group_engraver";
-       LyricsVoiceMinimumVerticalExtent = #(cons -1.2 1.2)
-
+       MinimumVerticalExtent = #(cons -1.2 1.2)
+       ExtraVerticalExtent = ##f
+       VerticalExtent = ##f 
        \name LyricsVoice ;
        \consists "Separating_line_group_engraver";
        \consists "Lyric_engraver";
@@ -291,6 +303,12 @@ NoteNamesContext = \translator {
        \type "Engraver_group_engraver";
        \name NoteNames;
        \consistsend "Axis_group_engraver";
+
+       MinimumVerticalExtent = ##f
+       ExtraVerticalExtent = ##f
+       VerticalExtent = ##f 
+
+       
        \consists "Note_name_engraver";
        \consists "Separating_line_group_engraver";
 }
@@ -302,6 +320,9 @@ LyricsContext = \translator {
        Generic_property_list = #generic-lyrics-properties
        \consists "Property_engraver";
        \consistsend "Axis_group_engraver";
+       MinimumVerticalExtent = ##f
+       ExtraVerticalExtent = ##f
+       VerticalExtent = ##f 
        
        \accepts "LyricsVoice";
 }
@@ -319,6 +340,9 @@ ChordNamesContext = \translator {
        \consists "Chord_name_engraver";
        \consists "Skip_req_swallow_translator";
        \consistsend "Axis_group_engraver";
+       MinimumVerticalExtent = ##f
+       ExtraVerticalExtent = ##f
+       VerticalExtent = ##f 
 
        VerticalAxisGroup \override #'invisible-staff = ##t
        }
diff --git a/ly/init-as.ly b/ly/init-as.ly
deleted file mode 100644 (file)
index e69de29..0000000
index 3e8824f8100484c3de91581180db3646f6f3e70c..8355a3dc659c1b5daf74d396d50723a283f65f0e 100644 (file)
@@ -62,8 +62,7 @@ mutopia-examples=$(name) $(parts)
 #
 $(outdir)/%-book.ps: $(outdir)/%.ps
        psbook $< $<.tmp
-#      pstops '2:0L(11.45in,0.25in)+1L(11.45in,5.6in)' $<.tmp $@
-       pstops  '2:0L@.7(21cm,0)+1L@.7(21cm,14.85cm)' $<.tmp $@
+       pstops '2:0L(11.45in,0.25in)+1L(11.45in,5.6in)' $<.tmp $@
 
 #
 # Catch-all target: type `make foo' to make out/foo.ps,
index c38907f0d8ea78e8528cb34746d00256f6d21c06..500da4417e3c2c82b82812a679eb2b9cc60bb92a 100644 (file)
@@ -1,15 +1,15 @@
 Begin3
 Title: LilyPond
-Version: 1.3.144
-Entered-date: 28MAR01
+Version: 1.3.145
+Entered-date: 01APR01
 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.144.tar.gz 
+       1000k lilypond-1.3.145.tar.gz 
 Original-site: ftp.cs.uu.nl /pub/GNU/LilyPond/development/
-       1000k lilypond-1.3.144.tar.gz 
+       1000k lilypond-1.3.145.tar.gz 
 Copying-policy: GPL
 End
index 450a63de56adeae12025492873368136bd16b116..3dbcd146d7c6dad56325a68ecfde542650290d1b 100644 (file)
@@ -1,17 +1,20 @@
 %define info yes
 
 Name: lilypond
-Version: 1.3.144
+Version: 1.3.145
 Release: 1
 License: GPL
 Group: Applications/Publishing
-Source0: ftp.cs.uu.nl:/pub/GNU/LilyPond/development/lilypond-1.3.144.tar.gz
+Source0: ftp.cs.uu.nl:/pub/GNU/LilyPond/development/lilypond-1.3.145.tar.gz
+# music notation software for.. ?
 Summary: A program for printing sheet music.
 URL: http://www.cs.uu.nl/~hanwen/lilypond
-# Icon: lilypond-icon.gif
+# rpm: 4.0: broken for -ta builds: rpm doesn't look in tarball for xpm
+# Icon: lilypond-icon.xpm
 BuildRoot: /tmp/lilypond-install
 Prereq: tetex
 
+# use keywords: music notation software
 %description
 LilyPond is a music typesetter.  It produces beautiful
 sheet music using a high level description file as input.  LilyPond is
@@ -50,7 +53,7 @@ make all
 # even if documentation fails to build
 
 make -C Documentation  || true
-make htmldoc || true
+make web || true
 
 %install
 
@@ -80,10 +83,8 @@ cp buildscripts/out/lilypond-login $RPM_BUILD_ROOT%{_prefix}/../etc/profile.d/li
 #%install documentation
 #line 63: second %install
 # again, make sure that main package installs even if doco fails
-mkdir -p htmldocs/out
-tar -C htmldocs -xzf out/htmldoc.tar.gz || true
-mkdir -p out/examples/
-tar -cf - input/  | tar -C out/examples/ -xf- || true
+mkdir -p web/out
+tar -C web -xzf out/web.tar.gz || true
 
 %ifos cygwin
 # urg, this symlink doesn't come through on cygwin
@@ -154,6 +155,4 @@ fi
 # this gets too messy...
 # %doc input/*.ly
 # verbatim include of input: list the directory without issuing a %dir 
-%doc htmldocs/
-%doc out/examples/
-%doc mutopia/
+%doc web/
index e2bfae830534ac89a530f4991f0bfe26b9b2402e..ea40dd0cf78df9a5af9f514b2daf545f86ddf3c5 100644 (file)
                (meta . ,(grob-description "SustainPedal" sustain-pedal-interface side-position-interface font-interface))
        ))
 
-       ; should split in 3
+       ;; TODO: should split in 3
        (SystemStartDelimiter . (
                (molecule-callback . ,System_start_delimiter::brew_molecule)
                (after-line-breaking-callback . ,System_start_delimiter::after_line_breaking)
-               ;; ugh, in practice, brace has height of 4.1 staff-spaces
-               (brace-collapse-height . 4.1)
+               ;; really 4.0, but 5 to be on safe side.
+               (brace-collapse-height . 5.0)
                (bracket-collapse-height . 1)
                (thickness . 1.6)
                (arch-height . 1.5)
                (break-align-symbol . Time_signature)
                (visibility-lambda . ,all-visible)
                (breakable . #t)
+               (style . C)
                 (font-family . number)
                 (meta . ,(grob-description "TimeSignature" time-signature-interface  font-interface))
        ))
index ac11ab645fb8e50e501881d1969c4a1ab5558142..7edf9e0455f6b8cebca78babbb9991834afce334 100644 (file)
@@ -52,7 +52,7 @@ the beam engraver for overriding beaming."
      "Axis_group_engraver"
      "Group all objects created in this context in a VerticalAxisGroup spanner."
      '(VerticalAxisGroup)
-     '(CONTEXTNAMEVerticalExtent CONTEXTNAMEMinimumVerticalExtent CONTEXTNAMExtraVerticalExtent)
+     '(VerticalExtent MinimumVerticalExtent ExtraVerticalExtent)
      ))
 
    (cons
@@ -348,15 +348,7 @@ If omitted, then dots appear on top of the notes.
      ""
      '(KeySignature
        )
-     '(
-      
-      keySignature
-      keyOctaviation
-      explicitKeySignatureVisibility
-      createKeyOnClefChange
-      keyAccidentalOrder
-      keySignature
-      )))
+     '( keySignature explicitKeySignatureVisibility createKeyOnClefChange keyAccidentalOrder keySignature )))
 
    (cons 'Lyric_engraver
         (engraver-description
@@ -416,7 +408,7 @@ If omitted, then dots appear on top of the notes.
 measurePosition and currentBarNumber to determine what number to print over the MultiMeasureRest
    "
      '(MultiMeasureRest)
-     '(
+     '(currentBarNumber currentCommandColumn measurePosition
       )))
 
    (cons
index 4751d5ef7b1336614453efd321af002f8c003686..8f91636ac366cd51c8fe663bac28667802e8da3f 100644 (file)
 
 
 
-(translator-property-description 'CONTEXTNAMEMinimumVerticalExtent number-pair? "minimum vertical extent, same format as CONTEXTNAMEVerticalExtent [fixme, naming]")
-(translator-property-description 'CONTEXTNAMEVerticalExtent number-pair? "hard coded vertical extent.
+(translator-property-description 'MinimumVerticalExtent number-pair?
+                                "minimum vertical extent, same format as VerticalExtent")
+
+(translator-property-description 'VerticalExtent number-pair?
+                                "hard coded vertical extent.
 The format is a pair of dimensions, for example, this sets the sizes
 of a staff to 10 (5+5) staffspaces high.
 
 @example
-property Staff.StaffVerticalExtent = #(-5.0 . 5.0)
+property Staff.VerticalExtent = #(-5.0 . 5.0)
 @end example
 
- [fixme, naming]")
-(translator-property-description 'CONTEXTNAMExtraVerticalExtent number-pair? "extra vertical extent, same format
-CONTEXTNAMEMinimumVerticalExtent [fixme, naming]")
+VerticalExtent, MinimumVerticalExtent and ExtraVerticalExtent are
+predefined in all relevant contexts to @code{#f}, so they will not
+inherit values.
+
+Note that these VerticalExtents can only operate on vertical groups,
+and therefore only work in contexts which contain an
+@code{Axis_group_engraver}.
+")
+
+(translator-property-description 'ExtraVerticalExtent
+                                number-pair? "extra vertical extent, same format as  MinimumVerticalExtent")
+
 (translator-property-description 'Generic_property_list list? "description of the conversion.
 
 Defines names and types for generic properties. These are properties
@@ -190,14 +202,10 @@ remembered for the duration of a measure.
 Alist that defines in what order  alterations should be printed.
 The format is (NAME . ALTER), where NAME is from 0 .. 6 and ALTER from  -1, 1.
 ")
-(translator-property-description 'keyOctaviation boolean? "")
-(translator-property-description 'keySignature list? "The current key signature. This is an alist containing (NAME . ALTER) pairs, where NAME is from 0.. 6 and ALTER from -2,-1,0,1,2 ")
+(translator-property-description 'keySignature list? "The current key signature. This is an alist containing (NAME . ALTER) or ((OCTAVE . NAME) . ALTER) pairs, where NAME is from 0.. 6 and ALTER from -2,-1,0,1,2 ")
 
 (translator-property-description 'localKeySignature list? "the key
-signature at this point in the measure.  The format is an alist with
-entries of the form (NAME . ALTER) 
-or ((OCTAVE . NAME)  . ALTER), 
-where NAME is from 0.. 6 and ALTER from -2,-1,0,1,2" 
+signature at this point in the measure.  The format is the same as for keySignature. "
 ) 
 
 (translator-property-description 'measureLength moment? "Length of one
index 583d7f5f9e90559e3ac64e91b4737e460128ca59..d35e379b41e1bdb257d2fe8df4065dc3b591ebb1 100644 (file)
@@ -525,10 +525,8 @@ if 1:
 
 
 
-################ TODO: lots of other syntax change should be done here as well
-
-
 
+# TODO: lots of other syntax change should be done here as well
 if 1:
        def conv (str):
                str = re.sub ('basicCollisionProperties', 'NoteCollision', str)
@@ -623,7 +621,7 @@ if 1:
        conversions.append (((1,3,97), conv, 'ChordName -> ChordNames'))
 
 
-## TODO: add lots of these
+# TODO: add lots of these
        
 if 1:
        def conv (str):
@@ -782,8 +780,21 @@ if 1:
        conversions.append (((1,3,144), conv, 'Chorda -> Corda'))
 
 
-############################
-       
+if 1:
+       def conv (str):
+               str = re.sub ('([A-Za-z]+)MinimumVerticalExtent', 'MinimumV@rticalExtent', str)
+               str = re.sub ('([A-Za-z]+)ExtraVerticalExtent', 'ExtraV@rticalExtent', str)
+               str = re.sub ('([A-Za-z]+)VerticalExtent', 'VerticalExtent', str)
+               str = re.sub ('ExtraV@rticalExtent', 'ExtraVerticalExtent', str)
+               str = re.sub ('MinimumV@rticalExtent', 'MinimumVerticalExtent', str)            
+               return str
+
+       conversions.append (((1,3,145), conv,
+       'ContextNameXxxxVerticalExtent -> XxxxVerticalExtent'))
+
+################################
+#      END OF CONVERSIONS      
+################################
 
 def get_conversions (from_version, to_version):
        def version_b (v, f = from_version, t = to_version):
index 99e7c68cfd6608c997e454058e02b9b0cd32f9d5..b683bab2ffb51ff01811757e112e413d6046a7cd 100644 (file)
@@ -50,10 +50,8 @@ patch_dir = build_root + '/patches'
 notify = 0
 
 build_command = '''
-set -x
 cd %b &&
 [ -d %n-%v ] && exit 1 || true;
-mkdir -p %n-%v
 (
 tar xzf %r/%t &&
 rm -f building &&
@@ -245,7 +243,7 @@ option_definitions = [
         ),
        ('', 'h', 'help', _ ("this help")),
         ('', 'k', 'keep', _ ("keep all output, and name the directory %s") % temp_dir),
-        ('EMAIL', 'n', 'notify', _ ("upon failure notify EMAIL[,EMAIL]")),
+        ('EMAIL', 'n', 'notify', _ ("upon failure notify EMAIL[,EMAIL]"),
        ('', 'r', 'remove-previous', _ ("remove previous build")),
        ('', 'V', 'verbose', _ ("verbose")),
        ('', 'v', 'version', _ ("print version number")),
@@ -447,11 +445,11 @@ if 1:
 
        progress (_ ("building %s...") % latest)
        os.chdir (build_root)
-       if build (latest) and previous and remove_previous_p:
+       if build (latest) 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))
+                       system ('(date; uname -a) | mail -s "%s failed" %s' % (program_name, notify)
                sys.exit (1)
                
        os.chdir (original_dir)
index b5684b86ada85f9c6747714eb952b96282e42eed..77057078832c992f3d72e4afb008e883ed0736e1 100644 (file)
@@ -15,12 +15,11 @@ AC_DEFUN(AC_STEPMAKE_BIBTEX2HTML, [
 
 AC_DEFUN(AC_STEPMAKE_COMPILE, [
     # -O is necessary to get inlining
-    OPTIMIZE=""
     CFLAGS=${CFLAGS:-""}
     CXXFLAGS=${CXXFLAGS:-$CFLAGS}
     LDFLAGS=${LDFLAGS:-""}
     checking_b=yes
-    optimise_b=no
+    optimise_b=yes
     profile_b=no
     debug_b=yes
 
@@ -32,19 +31,10 @@ AC_DEFUN(AC_STEPMAKE_COMPILE, [
     [  --enable-debugging      compile with debugging info.  Default: on],
     [debug_b=$enableval])
 
-    AC_ARG_ENABLE(optimise,
-    [  --enable-optimise       use maximal speed optimisations.  Default: off],
-    [optimise_b=$enableval])
-    
     AC_ARG_ENABLE(profiling, 
     [  --enable-profiling      compile with gprof support.  Default: off],
     [profile_b=$enableval])
     
-    AC_ARG_ENABLE(mingw-prefix,
-    [  --enable-mingw-prefix=DIR
-                          set the mingw32 directory (standalone windows32 exes)],
-    [MINGWPREFIX=$enableval],
-    [MINGWPREFIX=no])
 
     if test "$checking_b" = no; then
        # ugh
@@ -56,9 +46,6 @@ AC_DEFUN(AC_STEPMAKE_COMPILE, [
        OPTIMIZE="-O2 -finline-functions"
     fi
 
-    if test "$optimise_b" = no; then
-       OPTIMIZE=""
-    fi
 
     if test $profile_b = yes; then
        EXTRA_LIBES="-pg"
@@ -69,11 +56,6 @@ AC_DEFUN(AC_STEPMAKE_COMPILE, [
        OPTIMIZE="$OPTIMIZE -g"
     fi
 
-    # however, C++ support in mingw32 v 0.1.4 is still flaky
-    if test x$MINGWPREFIX != xno; then 
-       ICFLAGS="-I$MINGWPREFIX/include"
-       ILDFLAGS="-$MINGWPREFIX/lib"
-    fi
 
     AC_PROG_CC
     LD='$(CC)'
@@ -434,16 +416,13 @@ AC_DEFUN(AC_STEPMAKE_KPATHSEA, [
     [  --with-kpathsea         use kpathsea lib.  Default: on],
     [kpathsea_b=$enableval])
 
-    if test $kpathsea_b = yes; then    
+    if test "$kpathsea_b" = "yes"; then        
        AC_HAVE_HEADERS(kpathsea/kpathsea.h)
        AC_CHECK_LIB(kpathsea, kpse_find_file)
-       # urg: kpse_find_tfm is a #define, how to check for this?
-       # AC_CHECK_LIB(kpathsea, kpse_find_tfm)
-       # AC_CHECK_FUNCS(kpse_find_file kpse_find_tfm,, AC_STEPMAKE_WARN(Cannot find kpathsea functions.  You may have to create TFM files manually.))
-       AC_CHECK_FUNCS(kpse_find_file,, AC_STEPMAKE_WARN(Cannot find kpathsea functions.  You may have to create TFM files manually.) kpathsea_b=no)
+       AC_CHECK_FUNCS(kpse_find_file,, AC_ERROR(Cannot find kpathsea functions.  Rerun with --without-kpathsea.) )
     fi
     AC_MSG_CHECKING(whether to use kpathsea)
-    if test $kpathsea_b = yes; then
+    if test "$kpathsea_b" = yes; then
         AC_MSG_RESULT(yes)
        KPATHSEA=1
     else