From: Han-Wen Nienhuys <hanwen@xs4all.nl>
Date: Tue, 28 Mar 2000 10:20:35 +0000 (+0200)
Subject: release: 1.3.40
X-Git-Tag: release/1.3.40
X-Git-Url: https://git.donarmstrong.com/?a=commitdiff_plain;h=160441415ece6ea402f7af59087293d8d16c29f2;p=lilypond.git

release: 1.3.40

===========

* buildscripts/mf-to-table.py: feta dep files are now opened with write
  binary option.  This avoids carriage return linefeed problems and
  windows while not affecting unix.

* Documentation/hacking.texi: Fixed a texinfo syntax error

* stepmake/bin/package-zip32.sh: Fixed or Removed some legacy, 1.2.x,
  directory paths.

* Documentation/ntweb/index.texi: Fixed broken links, added 1.3.39 links.

1.3.39.h
---

diff --git a/CHANGES b/CHANGES
index 6fefc94895..7e58070ff2 100644
--- a/CHANGES
+++ b/CHANGES
@@ -1,57 +1,52 @@
---- ../lilypond-1.3.39.jcn2/CHANGES	Mon Mar 27 16:27:33 2000
-++ b/CHANGES	Tue Mar 28 01:50:52 2000
-@@ -1,3 +1,11 @@
-1.3.39.jcn3
+1.3.39.jbr1
 ===========
 
-* buildscripts/make-cygwin-cross.sh: Use rx-1.5 instead of regex (Jeffrey).
+* buildscripts/mf-to-table.py: feta dep files are now opened with write
+  binary option.  This avoids carriage return linefeed problems and
+  windows while not affecting unix.
 
-* scm/lily.scm: Fixed check for Windows: by default don't use scm regex.
+* Documentation/hacking.texi: Fixed a texinfo syntax error
+
+* stepmake/bin/package-zip32.sh: Fixed or Removed some legacy, 1.2.x,
+  directory paths.
 
+* Documentation/ntweb/index.texi: Fixed broken links, added 1.3.39 links.
 
- 1.3.39.jcn2
- ===========
- --- ../lilypond-1.3.39.jcn1/CHANGES	Fri Mar 24 17:40:59 2000
-++ b/CHANGES	Mon Mar 27 16:27:33 2000
-@@ -1,4 +1,15 @@
--2000-03-24    <janneke@gnu.org>
-1.3.39.jcn2
+1.3.39.hwn1
 ===========
 
-* Documentation/ntweb/guile-1.3.4-gnu-windows.patch: Significantly smaller
-  patch for guile.
+* Glossary updates by Christian Mondrup.
 
-* buildscripts/make-cygwin-cross.sh: Compile native package GNU regex,
-which should fix Windows problems with guile.  Also added input directory
-to zip file.
+* Bugfix: use generic properties in lyrics too. This fixes the
+\property textStyle for lyrics.
 
-* stepmake/aclocal.m4: Added decent checking for version of guile, and 
-  fixed warning message.
- 
- * lily/lexer.ll (My_lily_lexer): Bugfix: lookup chordmodifiers in the
- 	chord-modifier table (not in the pitch list).--- ../lilypond-1.3.39/CHANGES	Fri Mar 24 08:51:45 2000
-++ b/CHANGES	Sun Mar 26 15:36:41 2000
-@@ -1,3 +1,17 @@
-1.3.39.jbr1
-===========
+* Score_element::preset_extent(), used by \property
+XXXVerticalExtent, so hard code the size of a vertical group. 
 
-* buildscripts/mf-to-table.py: feta dep files are now opened with write 
-  binary option.  This avoids carriage return linefeed problems and 
-  windows while not affecting unix.
+* Don't fix up reference points for originals of broken
+spanners. Fixes spurious "orphaned score-element" warnings.
 
-* Documentation/hacking.texi: Fixed a texinfo syntax error
+2000-03-24    <janneke@gnu.org>
 
-* stepmake/bin/package-zip32.sh: Fixed or Removed some legacy, 1.2.x, 
-  directory paths.
+* buildscripts/make-cygwin-cross.sh: Use rx-1.5 instead of regex (Jeffrey).
 
-* Documentation/ntweb/index.texi: Fixed broken links, added 1.3.39 links.
+* scm/lily.scm: Fixed check for Windows: by default don't use scm regex.
 
- 1.3.38.hwn2
- ===========
- 2000-03-24    <janneke@gnu.org>
+* Documentation/ntweb/guile-1.3.4-gnu-windows.patch: Significantly smaller
+patch for guile.
+
+* buildscripts/make-cygwin-cross.sh: Compile native package GNU regex,
+which should fix Windows problems with guile.  Also added input directory
+to zip file.
+
+* stepmake/aclocal.m4: Added decent checking for version of guile, and 
+fixed warning message.
 
 * lily/lexer.ll (My_lily_lexer): Bugfix: lookup chordmodifiers in the
-	chord-modifier table (not in the pitch list).
+chord-modifier table (not in the pitch list).
+
+1.3.39
+======
 
 1.3.38.hwn2
 ===========
diff --git a/Documentation/user/glossary.tely b/Documentation/user/glossary.tely
index e7cf139d21..c7de116fcc 100644
--- a/Documentation/user/glossary.tely
+++ b/Documentation/user/glossary.tely
@@ -1,4 +1,4 @@
-
+\input ruled
 \input texinfo
 @setfilename glossary.info
 
@@ -67,8 +67,8 @@ accidental.
   gis1_"sharp" s s2
   gisis1_"db. sharp" s s2
   ges1_"flat" s s2
-  geses1_"db. flat" s s2
-  g!1_"natural"
+  geses1_"db. flat" s s2 
+  g!1_"natural" s2
 }
 @end mudela
 
@@ -140,8 +140,8 @@ the duration of the long a. is proportionate to that of the main note.
 @
 
 @mudela[13pt,eps]
-\property Voice.textEmptyDimension = ##t
-
+\emptyText
+%\property Voice.textEmptyDimension = ##t
 \property Voice.textStyle = "large"
 \notes\relative c'' {
 \key d;
@@ -178,8 +178,8 @@ An appoggiatura may have more notes preceding the main note.
 @end mudela
 
 @item arpeggio
-I: arpeggio, F: arp@`ege, D: Arpeggio, Akkordbrechungen, gebrochener Akkord,
-NL: gebroken akoord, DK: arpeggio, akkordbrydning, S: arpeggio, N:
+I: arpeggio, F: arp@`ege, D: Arpeggio, Akkordbrechungen, gebrochener
+Akkord, NL: gebroken akoord, DK: arpeggio, akkordbrydning, S: arpeggio, N:
 
 @
 
@@ -325,7 +325,8 @@ orchestral or choral score.
 @
 
 @mudela[13pt,eps] 
-\context StaffGroup < 
+%\context StaffGroup < 
+\context ChoirStaff < 
   \property StaffGroup.minVerticalAlign = 12
   \notes\relative c'' { \clef treble; g4 e c2 }
   \notes\relative c { \clef bass; c1 \bar "|."; } > 
@@ -373,17 +374,20 @@ lines.
 
 @mudela[13pt,eps] 
 \property Score.barNonAuto = ##t
-\property Lyrics.textStyle = "large"
-\property Voice.clefStyle = "fullSizeChanges"
+\property Staff.clefStyle = #"fullSizeChanges"
+\property Staff.textStyle = #"large"
+\property Lyrics.textStyle = #"large"
 \addlyrics
 \notes\relative c' { 
-  \clef "C1"; c1 s s
-  \clef "C2"; c s s
-  \clef "C3"; c s s
-  \clef "C4"; c s s
-  \clef "C5"; c s
+  \clef soprano; c1 s s
+  \clef mezzosoprano; c s s
+  \clef alto; c s s
+  \clef tenor; c s s
+  \clef baritone; c s
+}
+\context Lyrics \lyrics { 
+  Soprano Mezzosoprano Alto Tenor Baritone 
 }
-\context Lyrics \lyrics { Soprano Mezzosoprano Alto Tenor Baritone }
 @end mudela
 
 @item cadence 
@@ -430,6 +434,7 @@ chords are denoted open chords
 
 @mudela[13pt,eps] 
 \property Score.barNonAuto = ##t
+\property Voice.textNonEmpty = ##t
 \property Voice.textStyle = "large"
 \time 4/4;
 \notes\relative c'' {
@@ -438,7 +443,7 @@ chords are denoted open chords
   <g_"dimished" bes des>
   <g_"augmented~" b dis>
   <g_"seventh-chord~" b d f>
-  <g_"ninth-chord" b d f a>
+  <g_"ninth-chord" b d f a> s s2
 }
 @end mudela
 
@@ -687,7 +692,7 @@ also to some extent in newer jazz music.
 \addlyrics
 \notes\relative c' { 
   d1
- \property Voice.textScriptPadding = #-10
+  \property Voice.textScriptPadding = #-10
   e^"~~ S"
   f g a 
   \property Voice.textScriptPadding = #-4
@@ -821,7 +826,7 @@ harmonic minor scale type an augmented second (A) occurs between the 6th and
   b^"~~ S" c d e fis 
   \property Voice.textScriptPadding = #0
   gis^"~~ S" a g! 
-  \property Voice.textScriptPadding = "-1"
+  \property Voice.textScriptPadding = #-1
   f!^"~~ S" e d 
   \property Voice.textScriptPadding = #-4
   c^"~~ S" b a
@@ -1038,18 +1043,21 @@ octave lower (for example on double bass @w{@ar{}@strong{strings}}).
 
 @
 
-@ignore
-@mud ela[13pt,eps] 
+@c @ignore
+@mudela[13pt,eps] 
 \property Score.barNonAuto = ##t 
-\property Voice.clefStyle = "fullSizeChanges"
+\property Staff.clefStyle = #"fullSizeChanges"
 \property Lyrics.textStyle = "large"
 \addlyrics
 \notes\relative c { 
-  \clef "F3";
+%  \clef "F3";
+  \clef varbaritone;
   f1 s
-  \clef "F4";
+%  \clef "F4";
+  \clef bass;
   f1 s
-  \clef "F5";
+%  \clef "F5";
+  \clef subbass;
   f1 s
   \clef "F^8";
   f'1 s s
@@ -1064,7 +1072,7 @@ octave lower (for example on double bass @w{@ar{}@strong{strings}}).
   "octaved down" 
 }
 @end mudela
-@end ignore
+@c @end ignore
 
 @item fermata
 I: corona, F: pause, D: Fermate, NL: fermate, DK: fermat, S: fermat, N: .
@@ -1178,14 +1186,18 @@ that).
 
 @mudela[13pt,eps] 
 \property Score.barNonAuto = ##t 
+\property Staff.clefStyle = #"fullSizeChanges"
 \property Lyrics.textStyle = "large"
-\property Voice.clefStyle = "fullSizeChanges"
 \addlyrics
 \notes\relative c'' { 
-  \clef "G1"; g1 s s s s
-  \clef "G2"; g s s s 
-  \clef "G^8"; g' s s s 
-  \clef "G_8"; g,, s s
+  \clef french; 
+  g1 s s s s
+  \clef treble; 
+  g s s s
+  \clef "G^8"; 
+  g' s s s 
+  \clef "G_8"; 
+  g,, s s
 }
 \context Lyrics \lyrics { 
   "french violin clef" 
@@ -1502,7 +1514,10 @@ note value: double length of @w{@ar{}@strong{brevis}}. @w{@ar{}@strong{note valu
 
 @mudela[13pt,eps] 
 \property Score.barNonAuto = ##t 
-\notes\relative c'' { g\longa } 
+\notes\relative c'' { 
+  \property Voice.noteHeadStyle = "mensural"
+  g\longa 
+} 
 @end mudela
 
 @item major interval
@@ -1614,11 +1629,11 @@ First C below the 440 Hz A.
 
 @mudela[13pt,eps] 
 \property Score.barNonAuto = ##t 
-\property Voice.clefStyle = "fullSizeChanges"
+\property Staff.clefStyle = #"fullSizeChanges"
 \notes\relative c' { 
-  \clef "F"; c1 s
-  \clef "C3"; c s
-  \clef "G2"; c s
+  \clef bass; c1 s
+  \clef alto; c s
+  \clef treble; c s
 } 
 @end mudela
 
@@ -1717,7 +1732,7 @@ I: nona, F: neuvi@`eme, D: None, NL: noon, DK: none, S: nona, N: .
 @item note
 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
+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
 which produces the sound. However, a clear distinction between the terms tone
 and @w{@ar{}@strong{note}} is strongly recommended. Briefly, one sees a note,
@@ -1749,7 +1764,9 @@ but sometimes (mostly in pre baroque music) the double length note value
 \property Voice.textStyle = "large"
 \property Score.barNonAuto = ##t
 \notes\relative c'' { 
+  \property Voice.noteHeadStyle = "mensural"
   g\longa_"longa" g\breve_"breve" 
+  \property Voice.noteHeadStyle = ""
   g1_"1/1" g2_"1/2" g4_"1/4" s16 g8_"1/8" s16
   g16_"1/16" s16 g32_"1/32" s16 g64_"1/64" s32 }
 @end mudela
@@ -1798,6 +1815,9 @@ frequently used.
   g8 g g g g4 \bar "||";}
 @end mudela
 
+@
+
+
 @item octave sign
 @w{@ar{}@strong{g clef}} @w{@ar{}@strong{f clef}}
 
@@ -1816,8 +1836,6 @@ middle of the 19th century and onwards the trill is performed with the main
 note first while in the music from the preceding baroque and classic periods
 the upper note is played first.
 
-@
-
 @mudela[13pt,eps]
 <
   \context Staff = sa {
@@ -2623,8 +2641,140 @@ A family of blown wooden musical instruments. Today some of these instruments
 are actually made from metal. The woodwind instruments commonly used in a
 symphony orchestra are flute, oboe, clarinet, saxophone and bassoon.
 
+@end table
+
+@page
+
+@table @strong
+@item DURATION NAMES, NOTES AND RESTS
+@end table
+
+@multitable @columnfractions .111 .111 .111 .111 .111 .111 .111 .111 .111 
+
+@item @tab @strong{UK} @tab @strong{I} @tab @strong{F} @tab @strong{D} @tab
+@strong{NL} @tab @strong{DK} @tab @strong{S} @tab @strong{N}
+
+@item
+
+@item @strong{longa} @tab longa @tab longa @tab Longa @tab longa @tab longa
+@tab longa @tab longa @tab longa
+
+@item
+
+@item @strong{breve} @tab breve @tab breve @tab br@`eve @tab Brevis @tab
+brevis @tab brevis @tab brevis @tab brevis
+
+@item
+
+@item @strong{whole} @tab semi@-breve @tab semi@-breve @tab ronde @tab 
+Ganze @tab hele @tab hel @tab hel @tab
+
+@item
+
+@item @strong{half} @tab minim @tab minima @tab blanche @tab Halbe @tab 
+halve @tab halv @tab halv @tab 
+
+@item
+
+@item @strong{quarter} @tab crotchet @tab semi@-minima @tab noire @tab  
+Viertel @tab kwart @tab fjerde@-del @tab fj@"arde@-del @tab 
+
+@item
+
+@item @strong{eighth} @tab quaver @tab croma @tab croche @tab Achtel @tab 
+achtste @tab ottende@-del @tab @aa{}tton@-del @tab 
+
+@item
+
+@item @strong{sixteenth} @tab semi@-quaver @tab semi@-croma @tab double croche
+@tab Sech@-zehntel @tab zes@-ti@-ende @tab seks@-tende@-del @tab sexton@-del
+@tab
+
+@item
+
+@item @strong{thirty-second} @tab demi@-semi@-quaver @tab bis@-croma @tab
+triple croche @tab Zwei@-und@-drei@-@ss{}ig@-stel @tab 32e @tab
+toog@-tredivte-del @tab trettio@-tv@aa{}on@-del @tab
+
+@item
+
+@item @strong{sixty-fourth} @tab hemi@-demi@-semi@-quaver @tab
+semi@-bis@-croma @tab qua@-druple croche @tab Vier@-und@-sechzig@-stel @tab
+vier@-en@-zestig@-ste @tab fireog@-tred@-sinds@-ty@-ven@-de@-del @tab
+sextio@-fj@"arde@-del @tab
+
+@end multitable
+@c @item @tab @tab @tab @tab @tab @tab @tab @tab 
+
+@page
+
+@table @strong
+@item PITCH NAMES
+@end table
+
+@multitable @columnfractions .125 .125 .125 .125 .125 .125 .125 .125 
+
+@item @tab @strong{I} @tab @strong{F} @tab @strong{D} @tab
+@strong{NL} @tab @strong{DK} @tab @strong{S} @tab @strong{N}
+
+@item
+
+@item @strong{c} @tab do @tab ut @tab C @tab c @tab c @tab c @tab c
+
+@item
+
+@item @strong{c-sharp} @tab do diesis @tab ut di@`ese @tab Cis @tab cis @tab
+cis @tab cis @tab cis
+
+@item
+
+@item @strong{d-flat} @tab re bemolle @tab r@'e b@'emol @tab Des @tab des @tab
+des @tab des @tab des
+
+@item
+
+@item @strong{d} @tab re @tab r@'e @tab D @tab d @tab d @tab d @tab d
+
+@item
+
+@item @strong{e} @tab mi @tab mi @tab E @tab e @tab e @tab e @tab e
+
+@item
+
+@item @strong{f} @tab fa @tab fa @tab F @tab f @tab f @tab f @tab f
+
+@item
+
+@item @strong{g} @tab sol @tab sol @tab G @tab g @tab g @tab g @tab g
+
+@item
+
+@item @strong{a-flat} @tab la bemolle @tab la b@'emol @tab As @tab as @tab as
+@tab as @tab as
+
+@item
+
+@item @strong{a} @tab la @tab la @tab A @tab a @tab a @tab a @tab a
+
+@item
+
+@item @strong{a-sharp} @tab la diesis @tab la di@`ese @tab Ais @tab ais @tab
+ais @tab ais @tab ais
+
+@item
+
+@item @strong{b-flat} @tab si bemolle @tab si b@'emol @tab B @tab bes @tab b
+@tab b @tab b
+
+@item
+
+@item @strong{b} @tab si @tab si @tab H @tab b @tab h @tab h @tab h
+
+@end multitable
 @
 
+@table @strong
+
 @item ---------------------
 
 @
diff --git a/Documentation/user/properties.itely b/Documentation/user/properties.itely
index ecfcfd0c50..36dbac92da 100644
--- a/Documentation/user/properties.itely
+++ b/Documentation/user/properties.itely
@@ -13,6 +13,18 @@ generic properties. These are properties than can be plugged into the
 backend directly. See the init file @file{generic-property.scm} for
 details.  For internal use only.
 
+
+@item @code{XXXVerticalExtent}@indexcode{groupVerticalExtent}
+@propertytype{Interval: a cons of numbers}
+
+   Hard code the size of the vertical group in context XXX, example
+@example
+  \property Staff.StaffVerticalExtent = #(-5.0 . 5.0)
+@end example
+  The value is a cons of real numbers, that measure the extent in
+staff spaces
+   
+
 @cindex properties!Lyrics
 
 @table @samp
diff --git a/VERSION b/VERSION
index 7559638f8d..9f46e71982 100644
--- a/VERSION
+++ b/VERSION
@@ -1,8 +1,8 @@
 PACKAGE_NAME=LilyPond
 MAJOR_VERSION=1
 MINOR_VERSION=3
-PATCH_LEVEL=39
-MY_PATCH_LEVEL=jcn3
+PATCH_LEVEL=40
+MY_PATCH_LEVEL=
 
 # use the above to send patches: MY_PATCH_LEVEL is always empty for a
 # released version.
diff --git a/buildscripts/make-cygwin-cross.sh b/buildscripts/make-cygwin-cross.sh
index 4247223ac9..4e02957799 100644
--- a/buildscripts/make-cygwin-cross.sh
+++ b/buildscripts/make-cygwin-cross.sh
@@ -27,7 +27,7 @@
 #
 #          bin-crtdll-2000-02-03.tar.gz  (mingw only)
 #
-#  * regex-0.12.tar.gz
+#  * rx-1.5.tar.gz
 #
 #  * guile-1.3.4.tar.gz
 #
@@ -107,12 +107,6 @@ rpm_patch='patchm.ring.diff'
 native_configure='--target=$TARGET_ARCH --build=$TARGET_ARCH --host=$HOST --oldincludedir=$PREFIX/include --prefix=$NATIVE_PREFIX/$package --program-suffix='
 native_config_site='$PREFIX/share/native-config.site'
 
-# urg: avoid making doc dir
-regex_make='subdirs=test'
-regex_before_install='ar -ru libregex.a regex.o \; mkdir -p $PREFIX/{include,lib} \; cp ../$package/regex.h $PREFIX/include \; cp libregex.a $PREFIX/lib'
-regex_install='subdirs=test'
-regex_before_zip='mkdir -p $install_prefix/{include,lib} \; cp ../$package/regex.h $install_prefix/include \; cp libregex.a $install_prefix/lib'
-
 rx_install='prefix=$PREFIX'
 
 guile_patch='guile-1.3.4-gnu-windows.patch'
@@ -149,7 +143,6 @@ lilypond-$lilypond_version
 "
 
 not_yet_needed="
-regex-0.12
 rpm-3.04
 "
 
diff --git a/configure b/configure
index 5721504ad7..c17460b7f1 100755
--- a/configure
+++ b/configure
@@ -2678,23 +2678,28 @@ echo "configure:2672: checking "if we are cross compiling"" >&5
 	{ echo "configure: error: "cannot find guile-config; is Guile installed?"" 1>&2; exit 1; }
 	exit 1
     fi
-    if $guile_config --version 2>&1 | grep -q 'version 1\.012'; then
+    echo $ac_n "checking "Guile version"""... $ac_c" 1>&6
+echo "configure:2683: checking "Guile version"" >&5
+    need_guile_version="1.3.4"
+    guile_version=`expr "\`$guile_config --version 2>&1\`" : ".*\($need_guile_version\).*"`
+    echo "$ac_t"""$guile_version"" 1>&6
+    if test "$guile_version" != "$need_guile_version"; then
         
-    echo "configure: warning: Guile version 1.3 or better needed" 1>&2
+    echo "configure: warning: "Guile version "$need_guile_version" or newer is needed"" 1>&2
     warn_b=yes
 
     fi
     
 ## The GUILE_FLAGS macro.
   echo $ac_n "checking for Guile""... $ac_c" 1>&6
-echo "configure:2691: checking for Guile" >&5
+echo "configure:2696: 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; }
       exit 1
   fi
-  GUILE_CFLAGS="`guile-config compile`"
-  GUILE_LDFLAGS="`guile-config link`"
+  GUILE_CFLAGS="`$guile_config compile`"
+  GUILE_LDFLAGS="`$guile_config link`"
   
   
   echo "$ac_t""yes" 1>&6
@@ -2702,7 +2707,7 @@ echo "configure:2691: 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:2706: checking for $ac_word" >&5
+echo "configure:2711: 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
@@ -2740,7 +2745,7 @@ fi
 
 
 echo $ac_n "checking for 8-bit clean memcmp""... $ac_c" 1>&6
-echo "configure:2744: checking for 8-bit clean memcmp" >&5
+echo "configure:2749: 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
@@ -2748,7 +2753,7 @@ else
   ac_cv_func_memcmp_clean=no
 else
   cat > conftest.$ac_ext <<EOF
-#line 2752 "configure"
+#line 2757 "configure"
 #include "confdefs.h"
 #ifdef __cplusplus
 extern "C" void exit(int);
@@ -2761,7 +2766,7 @@ main()
 }
 
 EOF
-if { (eval echo configure:2765: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:2770: \"$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
@@ -2779,12 +2784,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:2783: checking for vprintf" >&5
+echo "configure:2788: 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 2788 "configure"
+#line 2793 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char vprintf(); below.  */
@@ -2810,7 +2815,7 @@ vprintf();
 
 ; return 0; }
 EOF
-if { (eval echo configure:2814: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2819: \"$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
@@ -2834,12 +2839,12 @@ fi
 
 if test "$ac_cv_func_vprintf" != yes; then
 echo $ac_n "checking for _doprnt""... $ac_c" 1>&6
-echo "configure:2838: checking for _doprnt" >&5
+echo "configure:2843: 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 2843 "configure"
+#line 2848 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char _doprnt(); below.  */
@@ -2865,7 +2870,7 @@ _doprnt();
 
 ; return 0; }
 EOF
-if { (eval echo configure:2869: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2874: \"$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
@@ -2892,12 +2897,12 @@ fi
 for ac_func in memmem snprintf vsnprintf gettext
 do
 echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:2896: checking for $ac_func" >&5
+echo "configure:2901: 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 2901 "configure"
+#line 2906 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -2923,7 +2928,7 @@ $ac_func();
 
 ; return 0; }
 EOF
-if { (eval echo configure:2927: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2932: \"$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
@@ -2962,7 +2967,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:2966: checking for $ac_word" >&5
+echo "configure:2971: 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
@@ -2995,7 +3000,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:2999: checking for $ac_word" >&5
+echo "configure:3004: 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
diff --git a/input/star-spangled-banner.ly b/input/star-spangled-banner.ly
index 14c789e621..e25e162a3d 100644
--- a/input/star-spangled-banner.ly
+++ b/input/star-spangled-banner.ly
@@ -114,7 +114,7 @@ textxx = \lyrics {
 }}
 
 
-beginmatter = \notes {\time 3/4; \key D;  s4 | }
+beginmatter = \notes {\time 3/4; \key d;  s4 | }
 			
 
 automaticLyrics = \notes \context GrandStaff < 
diff --git a/input/test/asciscript5.ly b/input/test/asciscript5.ly
new file mode 100644
index 0000000000..cdc0727eb1
--- /dev/null
+++ b/input/test/asciscript5.ly
@@ -0,0 +1,16 @@
+\include "paper-as5.ly"
+
+\score {
+	\notes\relative c''{
+		\time 4/4;
+		g1 a b c 
+		g2 a b c
+		g4 a b c
+	}
+	\paper {
+		\paper_as_five
+    		\translator { \StaffContext barSize = #5 }
+	}
+
+}
+
diff --git a/input/test/lyrics.ly b/input/test/lyrics.ly
new file mode 100644
index 0000000000..89146f1c4e
--- /dev/null
+++ b/input/test/lyrics.ly
@@ -0,0 +1,66 @@
+\version "1.3.5";
+
+$somewhat_long = \lyrics{
+	\property Lyrics . textStyle = "roman" 
+	AaaaaaA2
+	BbbbbbB2
+	CcccccC2 
+	DdddddD2
+	EeeeeeE2
+	FfffffF2
+}
+
+$rather_long = \lyrics{
+	\property Lyrics . textStyle = "roman" 
+	LLLLoooonggggg2 
+	Syyllllaaabbble2 
+	LLLLoooonggggg2 
+	Syyllllllaaabbble2
+	LLLLoooonggggg2 
+	Syyyylllaaabbble2
+}
+
+$quite_long = \lyrics{
+	\property Lyrics . textStyle = "roman"
+	LLLLLLLLLooooongggggggg2 
+	Syyyyyyyyyyyyylllllllaaaaaabbble2 
+	LLLLLLLLLooooongggggggg2 
+	Syyyyyyyyyyyyylllllllaaaaaabbble2
+	LLLLLLLLLooooongggggggg2 
+	Syyyyyyyyyyyyylllllllaaaaaabbble2
+}
+
+$somewhat_long_lyrics_staff = \context Lyrics = somewhat <
+	\$somewhat_long
+>
+
+$rather_long_lyrics_staff = \context Lyrics = rather <
+	\$rather_long
+>
+
+$quite_long_lyrics_staff = \context Lyrics = quite <
+	\$quite_long
+>
+
+melody = \notes
+\transpose c'{
+	c4 e4 g4 e4  c4 e4 g4 e4  c4 e4 g4 e4  c4 e4 g4 e4
+	c4 e4 g4 e4  c4 e4 g4 e4  c4 e4 g4 e4  c4 e4 g4 e4
+}
+
+$melodic_staff = \context Staff = mel <
+	\melody
+>
+
+\score
+{
+	<
+		\$melodic_staff
+		\$somewhat_long_lyrics_staff	
+%		\$rather_long_lyrics_staff	
+		\$quite_long_lyrics_staff	
+	>
+	\paper{
+%		castingalgorithm = \Wordwrap;	
+	}
+}
diff --git a/input/test/test-as5.ly b/input/test/test-as5.ly
deleted file mode 100644
index cdc0727eb1..0000000000
--- a/input/test/test-as5.ly
+++ /dev/null
@@ -1,16 +0,0 @@
-\include "paper-as5.ly"
-
-\score {
-	\notes\relative c''{
-		\time 4/4;
-		g1 a b c 
-		g2 a b c
-		g4 a b c
-	}
-	\paper {
-		\paper_as_five
-    		\translator { \StaffContext barSize = #5 }
-	}
-
-}
-
diff --git a/input/test/test-lyrics.ly b/input/test/test-lyrics.ly
deleted file mode 100644
index 89146f1c4e..0000000000
--- a/input/test/test-lyrics.ly
+++ /dev/null
@@ -1,66 +0,0 @@
-\version "1.3.5";
-
-$somewhat_long = \lyrics{
-	\property Lyrics . textStyle = "roman" 
-	AaaaaaA2
-	BbbbbbB2
-	CcccccC2 
-	DdddddD2
-	EeeeeeE2
-	FfffffF2
-}
-
-$rather_long = \lyrics{
-	\property Lyrics . textStyle = "roman" 
-	LLLLoooonggggg2 
-	Syyllllaaabbble2 
-	LLLLoooonggggg2 
-	Syyllllllaaabbble2
-	LLLLoooonggggg2 
-	Syyyylllaaabbble2
-}
-
-$quite_long = \lyrics{
-	\property Lyrics . textStyle = "roman"
-	LLLLLLLLLooooongggggggg2 
-	Syyyyyyyyyyyyylllllllaaaaaabbble2 
-	LLLLLLLLLooooongggggggg2 
-	Syyyyyyyyyyyyylllllllaaaaaabbble2
-	LLLLLLLLLooooongggggggg2 
-	Syyyyyyyyyyyyylllllllaaaaaabbble2
-}
-
-$somewhat_long_lyrics_staff = \context Lyrics = somewhat <
-	\$somewhat_long
->
-
-$rather_long_lyrics_staff = \context Lyrics = rather <
-	\$rather_long
->
-
-$quite_long_lyrics_staff = \context Lyrics = quite <
-	\$quite_long
->
-
-melody = \notes
-\transpose c'{
-	c4 e4 g4 e4  c4 e4 g4 e4  c4 e4 g4 e4  c4 e4 g4 e4
-	c4 e4 g4 e4  c4 e4 g4 e4  c4 e4 g4 e4  c4 e4 g4 e4
-}
-
-$melodic_staff = \context Staff = mel <
-	\melody
->
-
-\score
-{
-	<
-		\$melodic_staff
-		\$somewhat_long_lyrics_staff	
-%		\$rather_long_lyrics_staff	
-		\$quite_long_lyrics_staff	
-	>
-	\paper{
-%		castingalgorithm = \Wordwrap;	
-	}
-}
diff --git a/input/test/vertical-extent.ly b/input/test/vertical-extent.ly
new file mode 100644
index 0000000000..b944b43fe2
--- /dev/null
+++ b/input/test/vertical-extent.ly
@@ -0,0 +1,7 @@
+
+\score {
+\notes \context Staff {
+  \property Staff.StaffVerticalExtent = #'(-15.0 . 15.0)
+  c1 \break c1 
+}
+}
diff --git a/lily/axis-group-engraver.cc b/lily/axis-group-engraver.cc
index 69ea5fee61..d6f881d6fc 100644
--- a/lily/axis-group-engraver.cc
+++ b/lily/axis-group-engraver.cc
@@ -10,6 +10,8 @@
 #include "spanner.hh"
 #include "paper-column.hh"
 #include "axis-group-interface.hh"
+#include "dimension-cache.hh"
+#include "engraver-group-engraver.hh"
 
 Axis_group_engraver::Axis_group_engraver ()
 {
@@ -35,6 +37,16 @@ Axis_group_engraver::get_spanner_p () const
 void
 Axis_group_engraver::do_removal_processing ()
 {
+  String name   = daddy_grav_l ()->type_str_ + "VerticalExtent";
+  SCM dims = get_property (name);
+  
+  if (gh_pair_p (dims) && gh_number_p (gh_car (dims))
+      && gh_number_p (gh_cdr (dims)))
+    {
+      staffline_p_->dim_cache_[Y_AXIS]->set_extent_callback (&Score_element::preset_extent);
+      staffline_p_->set_elt_property ("extent-Y", dims);
+    }
+  
   staffline_p_->set_bound(RIGHT,get_staff_info().command_pcol_l ());
   typeset_element (staffline_p_);
   staffline_p_ = 0;
diff --git a/lily/axis-group-interface.cc b/lily/axis-group-interface.cc
index f15c84ca5c..8cdb9ef67a 100644
--- a/lily/axis-group-interface.cc
+++ b/lily/axis-group-interface.cc
@@ -98,8 +98,8 @@ Axis_group_interface::set_axes (Axis a1, Axis a2)
   if (a1 != Y_AXIS && a2 != Y_AXIS)
     elt_l_->set_empty (Y_AXIS);
   
-  elt_l_->dim_cache_[a1]->set_callback (Axis_group_interface::group_extent_callback);
-  elt_l_->dim_cache_[a2]->set_callback (Axis_group_interface::group_extent_callback);
+  elt_l_->dim_cache_[a1]->set_extent_callback (Axis_group_interface::group_extent_callback);
+  elt_l_->dim_cache_[a2]->set_extent_callback (Axis_group_interface::group_extent_callback);
 }
 
 Link_array<Score_element> 
diff --git a/lily/dimension-cache.cc b/lily/dimension-cache.cc
index eb6f7c24a9..ad4c630c0a 100644
--- a/lily/dimension-cache.cc
+++ b/lily/dimension-cache.cc
@@ -136,7 +136,7 @@ Dimension_cache::get_dim () const
 }
 
 void
-Dimension_cache::set_callback (Dim_cache_callback c)
+Dimension_cache::set_extent_callback (Dim_cache_callback c)
 {
   extent_callback_l_ =c;
 }
diff --git a/lily/extender-spanner.cc b/lily/extender-spanner.cc
index dd9e1a9bdd..5f0a9d2dae 100644
--- a/lily/extender-spanner.cc
+++ b/lily/extender-spanner.cc
@@ -24,7 +24,7 @@ Extender_spanner::Extender_spanner ()
   : Spanner ()
 {
   dx_f_drul_[LEFT] = dx_f_drul_[RIGHT] = 0.0;
-  dim_cache_[Y_AXIS]->set_callback (Dimension_cache::point_dimension_callback);
+  dim_cache_[Y_AXIS]->set_extent_callback (Dimension_cache::point_dimension_callback);
 }
 
 
diff --git a/lily/hyphen-spanner.cc b/lily/hyphen-spanner.cc
index 5f41e23d53..d1429698a3 100644
--- a/lily/hyphen-spanner.cc
+++ b/lily/hyphen-spanner.cc
@@ -27,7 +27,7 @@ Hyphen_spanner::Hyphen_spanner ()
 {
   dx_f_drul_[LEFT] = dx_f_drul_[RIGHT] = 0.0;
 
-  dim_cache_[Y_AXIS]->set_callback (Dimension_cache::point_dimension_callback);
+  dim_cache_[Y_AXIS]->set_extent_callback (Dimension_cache::point_dimension_callback);
 }
 
 Molecule 
diff --git a/lily/include/dimension-cache.hh b/lily/include/dimension-cache.hh
index e110041d0b..f40337564c 100644
--- a/lily/include/dimension-cache.hh
+++ b/lily/include/dimension-cache.hh
@@ -45,7 +45,7 @@ public:
   static Interval point_dimension_callback (Dimension_cache const* );
   Axis axis () const;
   Real get_offset () const;
-  void set_callback (Dim_cache_callback);
+  void set_extent_callback (Dim_cache_callback);
   Dimension_cache * parent_l_;
 
   Score_element *element_l () const { return elt_l_; }
diff --git a/lily/include/score-element.hh b/lily/include/score-element.hh
index 51893560cc..f181878735 100644
--- a/lily/include/score-element.hh
+++ b/lily/include/score-element.hh
@@ -126,6 +126,8 @@ public:
   void add_dependency (Score_element*);    
   virtual Line_of_score * line_l () const;
   bool linked_b () const;
+
+
   VIRTUAL_COPY_CONS(Score_element);
  
   /**
@@ -150,6 +152,9 @@ public:
   /// do calculations before determining horizontal spacing
   virtual void before_line_breaking ();
 
+  static Interval preset_extent (Dimension_cache const*);
+  static Interval molecule_extent (Dimension_cache const*);
+
 protected:
 
   /**
@@ -158,8 +163,7 @@ protected:
   virtual ~Score_element ();
   
   virtual void output_processing ();
-  static Interval molecule_extent (Dimension_cache const*);
-
+  
   /// do printing of derived info.
   virtual void do_print () const;
   /// generate the molecule    
diff --git a/lily/paper-score.cc b/lily/paper-score.cc
index 7da9928364..247b5fecad 100644
--- a/lily/paper-score.cc
+++ b/lily/paper-score.cc
@@ -187,7 +187,6 @@ Paper_score::process ()
   */
   line_l_->output_lines ();
 
-
   SCM font_names = ly_quote_scm (all_fonts_global_p->font_descriptions ());
   gh_set_cdr_x (before_output,
 		gh_cons  (gh_list (ly_symbol2scm ("define-fonts"),
@@ -243,7 +242,7 @@ Paper_score::fixup_refpoints ()
 	{
 	  Score_element * se = unsmob_element (e);
 	  se->fixup_refpoint ();
-
+	      
 	  if (!dynamic_cast<Line_of_score*> (se) && !se->parent_l (Y_AXIS))
 	    {
 	      programming_error ("No parent!");
diff --git a/lily/score-element.cc b/lily/score-element.cc
index 49de87c742..342270343c 100644
--- a/lily/score-element.cc
+++ b/lily/score-element.cc
@@ -27,7 +27,6 @@
 #include "dimension-cache.hh"
 #include "side-position-interface.hh"
 #include "item.hh"
-
 /*
 TODO:
 
@@ -44,8 +43,8 @@ Score_element::Score_element()
   // junkme.
   used_b_ = false;
 
-  dim_cache_[X_AXIS]->set_callback (molecule_extent);
-  dim_cache_[Y_AXIS]->set_callback (molecule_extent); 
+  dim_cache_[X_AXIS]->set_extent_callback (molecule_extent);
+  dim_cache_[Y_AXIS]->set_extent_callback (molecule_extent); 
   used_b_ = false;
   pscore_l_=0;
   lookup_l_ =0;
@@ -135,11 +134,31 @@ Score_element::set_elt_property (String k, SCM v)
 }
 
 Interval
-Score_element::molecule_extent(Dimension_cache const *c)
+Score_element::molecule_extent (Dimension_cache const *c)
 {
   Score_element *s = dynamic_cast<Score_element*>(c->element_l());
   Molecule m = s->do_brew_molecule();
-  return   m.extent()[c->axis ()];
+  return m.extent()[c->axis ()];
+}
+
+Interval
+Score_element::preset_extent (Dimension_cache const *c)
+{
+  Score_element *s = dynamic_cast<Score_element*>(c->element_l());
+  SCM ext = s->get_elt_property ((c->axis () == X_AXIS)
+				 ? "extent-X"
+				 : "extent-Y");
+  
+  if (gh_pair_p (ext))
+    {
+      Real l = gh_scm2double (gh_car (ext));
+      Real r = gh_scm2double (gh_cdr (ext));
+      l *= s->paper_l ()->get_var ("staffspace");
+      r *= s->paper_l ()->get_var ("staffspace");
+      return Interval (l, r);
+    }
+  
+  return Interval ();
 }
 
 
@@ -555,7 +574,7 @@ Score_element::fixup_refpoint ()
       if (!parent)
 	continue;
       
-      if (parent->line_l () != line_l ())
+      if (parent->line_l () != line_l () && line_l ())
 	{
 	  Score_element * newparent = parent->find_broken_piece (line_l ());
 	  set_parent (newparent, ax);
diff --git a/lily/span-bar.cc b/lily/span-bar.cc
index d16081928e..ac458ad177 100644
--- a/lily/span-bar.cc
+++ b/lily/span-bar.cc
@@ -152,7 +152,7 @@ Span_bar::get_bar_size () const
 Span_bar::Span_bar ()
 {
   group (this).set_interface ();
-  dim_cache_[X_AXIS]->set_callback (width_callback);
-  dim_cache_[Y_AXIS]->set_callback (height_callback);  
+  dim_cache_[X_AXIS]->set_extent_callback (width_callback);
+  dim_cache_[Y_AXIS]->set_extent_callback (height_callback);  
 }
 
diff --git a/lily/volta-spanner.cc b/lily/volta-spanner.cc
index 79c1829824..b9467fb081 100644
--- a/lily/volta-spanner.cc
+++ b/lily/volta-spanner.cc
@@ -24,12 +24,15 @@
 
 Volta_spanner::Volta_spanner ()
 {
-  //dim_cache_ [Y_AXIS]->set_callback (dim_callback);
   set_elt_property ("bars", SCM_EOL);
   side_position (this).set_axis (Y_AXIS);
   directional_element (this).set (UP);
 }
 
+
+/*
+  this is too complicated. Yet another version of side-positioning,
+  badly implemented.  */
 Molecule 
 Volta_spanner::do_brew_molecule () const
 {
diff --git a/ly/engraver.ly b/ly/engraver.ly
index 4d867868af..571ca885ed 100644
--- a/ly/engraver.ly
+++ b/ly/engraver.ly
@@ -255,7 +255,7 @@ LyricsContext = \translator {
 	\type "Engraver_group_engraver";
 	\name Lyrics;
 	\consists Vertical_align_engraver;%need this for getting folded repeats right.
-
+	Generic_property_list = #generic-lyrics-properties
 	\consists "Property_engraver";
 	\consistsend "Axis_group_engraver";
 	
diff --git a/make/out/lilypond.lsm b/make/out/lilypond.lsm
index 6b9e6c6727..43244df65b 100644
--- a/make/out/lilypond.lsm
+++ b/make/out/lilypond.lsm
@@ -1,15 +1,15 @@
 Begin3
 Title: LilyPond
-Version: 1.3.39
-Entered-date: 24MAR00
+Version: 1.3.40
+Entered-date: 28MAR00
 Description: 
 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.39.tar.gz 
+	1000k lilypond-1.3.40.tar.gz 
 Original-site: ftp.cs.uu.nl /pub/GNU/LilyPond/development/
-	1000k lilypond-1.3.39.tar.gz 
+	1000k lilypond-1.3.40.tar.gz 
 Copying-policy: GPL
 End
diff --git a/make/out/lilypond.spec b/make/out/lilypond.spec
index 16ed188309..33e8cda142 100644
--- a/make/out/lilypond.spec
+++ b/make/out/lilypond.spec
@@ -1,9 +1,9 @@
 Name: lilypond
-Version: 1.3.39
+Version: 1.3.40
 Release: 1
 Copyright: GPL
 Group: Applications/Publishing
-Source0: ftp.cs.uu.nl:/pub/GNU/LilyPond/development/lilypond-1.3.39.tar.gz
+Source0: ftp.cs.uu.nl:/pub/GNU/LilyPond/development/lilypond-1.3.40.tar.gz
 Summary: A program for printing sheet music.
 URL: http://www.cs.uu.nl/~hanwen/lilypond
 # get Packager from (undocumented?) ~/.rpmmacros!
diff --git a/mutopia/J.S.Bach/Solo-Cello-Suites/menuetto-cello.ly b/mutopia/J.S.Bach/Solo-Cello-Suites/menuetto-cello.ly
index ccc68f781f..7b4de133ec 100644
--- a/mutopia/J.S.Bach/Solo-Cello-Suites/menuetto-cello.ly
+++ b/mutopia/J.S.Bach/Solo-Cello-Suites/menuetto-cello.ly
@@ -64,7 +64,7 @@ menuetto_i_cello_staff = \context Staff <
 
 menuetto_ii_cello_global = \notes{
 	\time 3/4;
-	\key D;
+	\key d;
 	\clef bass;
 	\repeat "volta" 2 {
 		\skip 2.*8;
diff --git a/mutopia/J.S.Bach/Solo-Cello-Suites/menuetto-viola.ly b/mutopia/J.S.Bach/Solo-Cello-Suites/menuetto-viola.ly
index c7bd0c0930..48f12f5270 100644
--- a/mutopia/J.S.Bach/Solo-Cello-Suites/menuetto-viola.ly
+++ b/mutopia/J.S.Bach/Solo-Cello-Suites/menuetto-viola.ly
@@ -64,7 +64,7 @@ menuetto_i_viola_staff = \context Staff <
 
 menuetto_ii_viola_global = \notes{
 	\time 3/4;
-	\key D;
+	\key d;
 	\clef alto;
 	\repeat "volta" 2 {
 		\skip 2.*8;
diff --git a/mutopia/J.S.Bach/wtk1-fugue2.ly b/mutopia/J.S.Bach/wtk1-fugue2.ly
index 67f94fec7f..74133ef99d 100644
--- a/mutopia/J.S.Bach/wtk1-fugue2.ly
+++ b/mutopia/J.S.Bach/wtk1-fugue2.ly
@@ -164,14 +164,14 @@ bassdux = \context Voice=three \notes \relative c' {
  
     \notes \context PianoStaff < 
 	\context Staff = treble <
-	    \key C \minor;
+	    \key c \minor;
 	    \dux
 	    { \comes \bar "|."; }
 	      \time 4/4;
 	      \property Score.timeSignatureStyle = "C"
 	  >
 	\context Staff = bass <
-	    \key C \minor;
+	    \key c \minor;
 	    \bassdux
 	>
     >
diff --git a/scm/generic-property.scm b/scm/generic-property.scm
index 358e1f3a71..554408caff 100644
--- a/scm/generic-property.scm
+++ b/scm/generic-property.scm
@@ -177,6 +177,14 @@
 	))
 )
 
+
+
+
+
+;;;;;;;;;;
+;; don't forget to add these to the Generic_property_list property in
+;; engraver.ly
+
 (define generic-voice-properties
   (list
    generic-stem-properties
@@ -225,5 +233,4 @@
 (define generic-lyrics-properties
   (list generic-text-properties
   )
-  
 )