]> git.donarmstrong.com Git - lilypond.git/commitdiff
Merge branch 'lilypond/translation'
authorJean-Charles Malahieude <lilyfan@orange.fr>
Sun, 26 Dec 2010 19:44:37 +0000 (20:44 +0100)
committerJean-Charles Malahieude <lilyfan@orange.fr>
Sun, 26 Dec 2010 19:44:37 +0000 (20:44 +0100)
39 files changed:
Documentation/contributor/administration.itexi
Documentation/contributor/introduction.itexi
Documentation/contributor/quick-start.itexi
Documentation/contributor/source-code.itexi
Documentation/de/notation/rhythms.itely
Documentation/es/notation/rhythms.itely
Documentation/fr/notation/rhythms.itely
Documentation/notation/ancient.itely
Documentation/notation/expressive.itely
Documentation/notation/keyboards.itely
Documentation/notation/rhythms.itely
Documentation/notation/text.itely
Documentation/snippets/new/dynamics-text-spanner-postfix.ly
Documentation/web/news-front.itexi
VERSION
input/regression/multiple-time-sig-settings.ly
input/regression/music-function-post-event.ly [new file with mode: 0644]
input/regression/skiptypesetting-multimeasurerest.ly
input/regression/time-signature-settings-by-staff.ly [new file with mode: 0644]
lily/beaming-pattern.cc
lily/break-substitution.cc
lily/constrained-breaking.cc
lily/duration.cc
lily/figured-bass-engraver.cc
lily/font-metric.cc
lily/include/constrained-breaking.hh
lily/lily-guile.cc
lily/lookup.cc
lily/midi-item.cc
lily/page-breaking.cc
lily/page-layout-problem.cc
lily/page-spacing.cc
lily/pango-font.cc
lily/parser.yy
lily/pitch.cc
ly/music-functions-init.ly
python/convertrules.py
scm/time-signature-settings.scm
scm/translation-functions.scm

index 15a6612c117cda8336b0123f06727b968c474786..8dbc9eb68ffbdb1f5fa99ab897ab7613ee1e59c2 100644 (file)
@@ -277,7 +277,7 @@ We often receive reports of typos and minor text updates to the
 documentation. It would be great if somebody could create
 properly-formatted patches for these corrections.
 
-Technical requirements: ability to run @ref{Lilybuntu}.
+Technical requirements: ability to run @ref{Lilydev}.
 
 @item LSR editor:
 LSR contains many useful examples of lilypond, but some snippets
@@ -294,7 +294,7 @@ chapters 1 and 2 (or be willing to read the docs to find out).
 often find them in Ponds of Lilies) and new feature implementors.
 
 Technical requirements: development environment (such as
-@ref{Lilybuntu}), ability to read+write scheme and/or C++ code.
+@ref{Lilydev}), ability to read+write scheme and/or C++ code.
 
 @end itemize
 
@@ -831,7 +831,7 @@ discuss giving them push access.  Unsolicited requests from
 contributors for access will almost always be turned down.
 
 
-@subsubheading Creating the @strong{Lilybuntu} respin
+@subsubheading Creating the @strong{Lilydev} respin
 
 @enumerate
 
index c104cee17551acb2790d8a512c9bb84a1d5e63ec..cf7e2b7978f432bc6fdd844231e9eb01157f8be1 100644 (file)
@@ -97,8 +97,8 @@ the developers' mailing list here:
 @uref{http://lists.gnu.org/mailman/listinfo/lilypond-devel}.
 
 @warning{Contributors on Windows or MacOS X wishing to compile
-code or documentation are strongly advised to use lilybuntu, as
-discussed in @ref{Quick start}.}
+code or documentation are strongly advised to use our Ubuntu
+LilyPond Developer Remix, as discussed in @ref{Quick start}.}
 
 
 @node Mentors
index 18ef51379cba99cd941d74804bf215b3c30d3d4b..9a370e24ac2a32fc2edb15ce47b3880b7608f59f 100644 (file)
@@ -11,7 +11,8 @@ difficulty to compile it on MacOS X.  We have therefore made a
 @q{remix} of Ubuntu which includes all necessary dependencies to
 compile both LilyPond and the documentation.  This can be run
 inside a virtual machine without disturbing your main operating
-system.
+system.  The full name is @qq{Ubuntu LilyPond Developer Remix},
+but we refer to it as @qq{lilydev} for short.
 
 @advanced{experienced developers may prefer to use their own
 development environment.  It may be instructive to skim over these
@@ -19,25 +20,25 @@ instructions, but be aware that this chapter is intended for
 helpful users who may have never created a patch before.}
 
 @menu
-* Lilybuntu::
+* Lilydev::
 * Using lily-git::
-* Compiling with lilybuntu::
+* Compiling with lilydev::
 * Now start work!::
 @end menu
 
-@node Lilybuntu
-@section Lilybuntu
+@node Lilydev
+@section Lilydev
 
 text.
 
 @menu
-* Installing lilybuntu::
-* Configuring lilybuntu in virtualbox::
-* Using lilybuntu::
+* Installing lilydev::
+* Configuring lilydev in virtualbox::
+* Using lilydev::
 @end menu
 
-@node Installing lilybuntu
-@subsection Installing lilybuntu
+@node Installing lilydev
+@subsection Installing lilydev
 
 @enumerate
 @item
@@ -50,33 +51,39 @@ Any virtualization tool can be used, but we recommend VirtualBox:
 @end example
 
 In virtualization terminology, your main operating system is the
-@qq{host}, while lilybuntu is the @qq{guest}.
+@qq{host}, while lilydev is the @qq{guest}.
 
 @item
-Download the @file{lilybuntu2.iso} disk image: (approximately 1
-GB)
+Download the Ubuntu LilyPond Developer Remix disk image:
+(approximately 1 GB)
 
 @example
-@uref{http://files.lilynet.net/lilybuntu2.iso}
+@uref{http://files.lilynet.net/ubuntu-lilydev-remix-1.0.iso}
 @end example
 
-@advanced{There is a md5sum available:
-@uref{http://files.lilynet.net/lilybuntu2.iso.md5}}
+@advanced{Some users might want these files, but if you don't
+recognize what they are, then you don't want them:
+@uref{http://files.lilynet.net/ubuntu-lilydev-remix-1.0.iso.md5}
+@uref{http://files.lilynet.net/ubuntu-lilydev-remix-1.0.iso.torrent}
+}
 
 @item
-Install @file{lilybuntu2.iso} as the @qq{guest} operating system
-on your virtualized system.
-
-@itemize
+Create a new @qq{virtual machine} inside your virtualization
+software.
 
-@item
 If possible, use at least 700 MB of RAM (1GB would be better) for
 the virtual machine, and use @qq{dynamically expanding storage}
 for the virtual hard drive.  A complete compile of everything
 (code, docs, regression tests) can reach 10 GB.
 
 @item
-When @file{lilybuntu2.iso} boots, it shows an ISOLINUX
+Install @file{lilydev2.iso} as the @qq{guest} operating system
+on your virtualized system.
+
+@enumerate
+
+@item
+When @file{lilydev2.iso} boots, it shows an ISOLINUX
 @code{boot:} prompt.  Type:
 
 @example
@@ -91,12 +98,12 @@ At the @qq{Prepare disk space} stage, do not be afraid to select
 @item
 When prompted to remove the installation CD, go to
 @clicksequence{Devices @click{} CD/DVD Devices} and de-select
-@file{lilybuntu2.iso}.
+@file{lilydev2.iso}.
 
-@end itemize
+@end enumerate
 
 @advanced{
-The latest version of lilybuntu is based on Ubuntu 10.04.1; if you
+The latest version of lilydev is based on Ubuntu 10.04.1; if you
 encounter any difficulties installing it, search for one of the
 many tutorials for installing that particular version of Ubuntu as
 a guest operating system.
@@ -106,23 +113,25 @@ a guest operating system.
 Do any extra configuration for your virtualization software.
 
 There are additional instructions for VirtualBox in
-@ref{Configuring lilybuntu in virtualbox}.
+@ref{Configuring lilydev in virtualbox}.
 
 If you use other virtualization software, then follow the normal
 procedures for your virtualization software with Ubuntu as the
 client.
 
-@advanced{not all hardware is supported in all virtualization
-tools.  In particular, some contributors have reported problems
-with USB devices.  If you would like to investigate further, then
-look for help for your virtualization tool using your normal OS as
-the @qq{host} and Ubuntu as the @qq{client}.}
-
 @end enumerate
 
+@knownissues
+
+Not all hardware is supported in all virtualization tools.  In
+particular, some contributors have reported problems with USB
+devices.  If you would like to investigate further, then look for
+help for your virtualization tool using your normal OS as the
+@qq{host} and Ubuntu as the @qq{client}.
+
 
-@node Configuring lilybuntu in virtualbox
-@subsection Configuring lilybuntu in virtualbox
+@node Configuring lilydev in virtualbox
+@subsection Configuring lilydev in virtualbox
 
 VirtualBox has extra @qq{guest additions} which can make the
 virtualization easier to use (full-screen, easy file sharing
@@ -143,8 +152,12 @@ Double-click on the @file{autorun.sh} file, then select @qq{Run in
 Terminal}, and enter your password when prompted.
 
 @item
-Once the script is finished, restart Ubuntu to complete the
-installation.
+Once the script is finished, @qq{eject} the virtual CD, and then
+go to @clicksequence{Devices @click{} CD/DVD Devices} and
+de-select @file{VBoxGuestAdditions.iso}.
+
+@item
+Restart Ubuntu to complete the installation.
 
 @advanced{If you do any kernel upgrades, you may need to re-run
 these VBOXADDITIONS instructions.}
@@ -164,15 +177,15 @@ your main operating system and ubuntu.  This is distinct from the
 networked share folders in Windows.  Consult external
 documentation for this step.
 
-TODO: maybe we should just nuke this point?  is it easier to do
-networked file sharing in osx, linux, etc, thus making the
-virtualbox "shared folders" not useful?
+Some longtime contributors have reported that @q{shared folders}
+are rarely useful and not worth the fuss, particularly since files
+can be shared over a network instead.
 
 @end itemize
 
 
-@node Using lilybuntu
-@subsection Using lilybuntu
+@node Using lilydev
+@subsection Using lilydev
 
 If you are not familiar with Linux, it may be beneficial to read a
 couple of @qq{introduction to Ubuntu} webpages.
@@ -187,12 +200,20 @@ Software Center}.
 
 @item
 The rest of this manual assumes that you are using the
-command-line; go to @clicksequence{Applications @click{}
-Accessories @click{} Terminal}.
+command-line; double-click on the @q{Terminal} icon on the
+desktop.
 
 @item
 Pasting into a terminal is done with @code{Ctrl+Shift+v}.
 
+@item
+The @qq{Places} top-menu has shortcuts to a graphical
+@qq{navigator} like Windows Explorer or the MacOS X Finder.
+
+@item
+Right-click allows you to edit a file with gedit.  We recommend
+using gedit.
+
 @item
 Some contributors have recommended: (pdf available for free)
 
@@ -203,8 +224,6 @@ Some contributors have recommended: (pdf available for free)
 @end itemize
 
 
-@c if you change this node name, you'll need to change the @ref in
-@c web/ and/or included/, along with all the translations.
 @node Using lily-git
 @section Using lily-git
 
@@ -220,17 +239,15 @@ share changes to the lilypond source code.
 @unnumberedsubsec Install and configuration of @command{lily-git.tcl}
 
 @warning{The rest of this manual assumes that you are using the
-command-line; go to @clicksequence{Applications @click{}
-Accessories @click{} Terminal}.}
+command-line; double-click on the @q{Terminal} icon on the
+desktop.}
 
 @enumerate
 @item
-@code{lily-git.tcl} has already been installed for you.  Simply type
-(or copy&paste):
+Type (or copy&paste) into the Terminal:
 
 @example
-cd
-wish lily-git.tcl
+lily-git.tcl
 @end example
 
 @item
@@ -248,66 +265,12 @@ files.
 
 @end enumerate
 
-You should now progress to @ref{Compiling with lilybuntu}.
+You should now progress to @ref{Compiling with lilydev}.
 
 @warning{Throughout the rest of this manual, most command-line
 input should be entered from @file{~/lilypond-git/}.  This is
 referred to as the @emph{top source directory}.}
 
-
-@subsubheading Other operating systems
-
-@enumerate
-@item
-If you haven't already, download and install Git.
-
-@itemize
-
-@item
-Lilybuntu users: git has already been installed for you.
-
-@item Windows users: download the @code{.exe} file labeled
-@qq{Full installer for official Git} from:
-
-@example
-@uref{http://code.google.com/p/msysgit/downloads/list}
-@end example
-
-@item Other operating systems: either install @command{git} with
-your package manager, or download it from the @qq{Binaries}
-section of:
-
-@example
-@uref{http://git-scm.com/download}
-@end example
-
-@end itemize
-
-
-@item
-Download the @command{lily-git.tcl} script from:
-
-@c don't change the cgit link below to gitweb; gitweb uses
-@c long filenames like "scripts_auxiliar_lily-git.tcl"
-
-@example
-@uref{http://git.sv.gnu.org/cgit/lilypond.git/plain/scripts/auxiliar/lily-git.tcl}
-@end example
-
-@item
-To run the program from the command line, navigate to the
-directory containing @command{lily-git.tcl} and enter:
-
-@example
-wish lily-git.tcl
-@end example
-
-@item
-Go read the lilybuntu instructions, starting from the @qq{get
-source} step.
-
-@end enumerate
-
 @advanced{the @qq{Get source} button does not fetch the entire
 history of the git repository, so utilities like @command{gitk}
 will only be able to display the most recent additions.  As you
@@ -423,18 +386,20 @@ current state of the remote repository (at @code{git.sv.gnu.org}).
 
 
 
-@node Compiling with lilybuntu
-@section Compiling with lilybuntu
+@node Compiling with lilydev
+@section Compiling with lilydev
 
-Lilybuntu is our @q{remix} of Ubuntu which contains all the
+Lilydev is our @q{remix} of Ubuntu which contains all the
 necessary dependencies to do lilypond development; for more
-information, see @rcontrib{Lilybuntu}.
+information, see @rcontrib{Lilydev}.
 
 @subsubheading Preparing the build
 
 To prepare the build directory, enter (or copy&paste) the below
 text.  This should take less than a minute.
 
+@c we heavily recommend the out-of-tree build; do not change this!
+
 @example
 cd ~/lilypond-git/
 sh autogen.sh --noconfigure
@@ -443,9 +408,6 @@ cd build/
 ../configure
 @end example
 
-@advanced{this is called an @qq{out-of-tree} build; we heavily
-recommend this build method.}
-
 @subsubheading Building @code{lilypond}
 
 Compiling lilypond will likely take between 5 and 30 minutes,
@@ -494,7 +456,7 @@ this chapter.
 @node Now start work!
 @section Now start work!
 
-Lilybuntu users may now skip to the chapter which is aimed at
+Lilydev users may now skip to the chapter which is aimed at
 their intended contributions:
 
 @itemize
index 65ac35e3b6b68e20aa5df9b5670c8b522c115264..4c45e9c8eefaf9cc5ecbdbbdcb1e2c3e80269f95 100644 (file)
@@ -11,6 +11,7 @@ Advanced contributors will find this material quite useful,
 particularly if they are working on major new features.
 
 @menu
+* Manually installing lily-git.tcl::
 * Starting with Git::
 * Basic Git procedures::
 * Advanced Git procedures::
@@ -20,6 +21,91 @@ particularly if they are working on major new features.
 @end menu
 
 
+@node Manually installing lily-git.tcl
+@section Manually installing lily-git.tcl
+
+We have created an easy-to-use GUI to simplify git for new
+contributors.  If you are comfortable with the command-line, then
+skip ahead to @ref{Starting with Git}.
+
+@warning{These instructions are only for people who are @emph{not}
+using @ref{Lilydev}.}
+
+@c there's some duplication in this section with stuff covered in
+@c Quick Start, but moving it into a macro inside included/ would
+@c be getting a bit icky.  -gp
+
+@enumerate
+@item
+If you haven't already, download and install Git.
+
+@itemize
+
+@item Windows users: download the @code{.exe} file labeled
+@qq{Full installer for official Git} from:
+
+@example
+@uref{http://code.google.com/p/msysgit/downloads/list}
+@end example
+
+@item Other operating systems: either install @command{git} with
+your package manager, or download it from the @qq{Binaries}
+section of:
+
+@example
+@uref{http://git-scm.com/download}
+@end example
+
+@end itemize
+
+
+@item
+Download the @command{lily-git.tcl} script from:
+
+@c don't change the cgit link below to gitweb; gitweb uses
+@c long filenames like "scripts_auxiliar_lily-git.tcl"
+
+@example
+@uref{http://git.sv.gnu.org/cgit/lilypond.git/plain/scripts/auxiliar/lily-git.tcl}
+@end example
+
+@item
+To run the program from the command line, navigate to the
+directory containing @command{lily-git.tcl} and enter:
+
+@example
+wish lily-git.tcl
+@end example
+
+@item
+Click on the @qq{Get source} button.
+
+This will create a directory called @file{lilypond-git/} within
+your home directory, and will download the source code into that
+directory (around 55Mb).  When the process is finished, the
+@qq{Command output} window will display @qq{Done}, and the button
+label will change to say @qq{Update source}.
+
+@item
+Navigate to the @file{lilypond-git/} directory to view the source
+files.
+
+@end enumerate
+
+@warning{Throughout the rest of this manual, most command-line
+input should be entered from @file{~/lilypond-git/}.  This is
+referred to as the @emph{top source directory}.}
+
+Further instructions are in @ref{Daily use of lily-git.tcl}.
+
+@advanced{the @qq{Get source} button does not fetch the entire
+history of the git repository, so utilities like @command{gitk}
+will only be able to display the most recent additions.  As you
+continue to work with @command{lily-git.tcl}, the @qq{Update
+source} button will take any new additions and add it to whatever
+is currently in your repository's history.}
+
+
 @node Starting with Git
 @section Starting with Git
 
index 5dec8ca8c253b1518dae246da4b42cd5d712c728..b1ea1362ae09c251af10947edd087b130bdaef2c 100644 (file)
@@ -7,7 +7,7 @@
     Guide, node Updating translation committishes.
 @end ignore
 
-@c \version "2.13.36"
+@c \version "2.13.44"
 
 @c Translators: Till Paala
 
@@ -1104,7 +1104,6 @@ werden.
 \score {
   \relative c' {
     \overrideTimeSignatureSettings
-      #'Score
       #'(4 . 4)  % time signature fraction
       #'(1 . 4)  % base moment fraction
       #'(3 1)    % beatStructure
@@ -1141,14 +1140,13 @@ Standard zurückgesetzt werden:
   \relative c' {
     \repeat unfold 8 { c8 } |
     \overrideTimeSignatureSettings
-      #'Score                         % context
       #'(4 . 4)                       % timeSignatureFraction
       #'(1 . 4)                       % baseMomentFraction
       #'(3 1)                         % beatStructure
       #'((end . (((1 . 8) . (3 1))))) % beamExceptions
     \time 4/4
     \repeat unfold 8 { c8 } |
-    \revertTimeSignatureSettings #'Score #'(4 . 4)
+    \revertTimeSignatureSettings #'(4 . 4)
     \time 4/4
     \repeat unfold 8 { c8 } |
   }
index 38f53b13400b8b1c2d9d73eab43c414268fd2b29..6378b7ecec7f5388e58df7c1fa9a7ed2ef179c5d 100644 (file)
@@ -7,7 +7,7 @@
     Guide, node Updating translation committishes..
 @end ignore
 
-@c \version "2.13.36"
+@c \version "2.13.44"
 
 @node Duraciones
 @section Duraciones
@@ -1096,7 +1096,6 @@ existentes se pueden cambiar, o pueden añadirse valores nuevos:
 \score {
   \relative c' {
     \overrideTimeSignatureSettings
-      #'Score    % context
       #'(4 . 4)  % timeSignatureFraction
       #'(1 . 4)  % baseMomentFraction
       #'(3 1)    % beatStructure
@@ -1146,14 +1145,13 @@ compás se pueden restaurar a los valores originales:
   \relative c' {
     \repeat unfold 8 { c8 } |
     \overrideTimeSignatureSettings
-      #'Score                         % context
       #'(4 . 4)                       % timeSignatureFraction
       #'(1 . 4)                       % baseMomentFraction
       #'(3 1)                         % beatStructure
       #'((end . (((1 . 8) . (3 1))))) % beamExceptions
     \time 4/4
     \repeat unfold 8 { c8 } |
-    \revertTimeSignatureSettings #'Score #'(4 . 4)
+    \revertTimeSignatureSettings #'(4 . 4)
     \time 4/4
     \repeat unfold 8 { c8 } |
   }
index 943d57200c86f8e34e9596b8c8728e414f4aa19e..b87ae753afedc7c361c08aef92637e7bab040af5 100644 (file)
@@ -7,7 +7,7 @@
     Guide, node Updating translation committishes..
 @end ignore
 
-@c \version "2.13.36"
+@c \version "2.13.44"
 
 @c Translators: Frédéric Chiasson, Jean-Charles Malahieude
 @c Translation checkers: Valentin Villenave, Jean-Charles Malahieude,
@@ -1101,7 +1101,6 @@ pouvez les modifier de la manière suivante@tie{}:
 \score {
   \relative c' {
     \overrideTimeSignatureSettings
-      #'Score    % context
       #'(4 . 4)  % timeSignatureFraction
       #'(1 . 4)  % baseMomentFraction
       #'(3 1)    % beatStructure
@@ -1139,14 +1138,13 @@ métrique@tie{}:
   \relative c' {
     \repeat unfold 8 { c8 } |
     \overrideTimeSignatureSettings
-      #'Score                         % context
       #'(4 . 4)                       % timeSignatureFraction
       #'(1 . 4)                       % baseMomentFraction
       #'(3 1)                         % beatStructure
       #'((end . (((1 . 8) . (3 1))))) % beamExceptions
     \time 4/4
     \repeat unfold 8 c8 |
-    \revertTimeSignatureSettings #'Score #'(4 . 4)
+    \revertTimeSignatureSettings #'(4 . 4)
     \time 4/4
     \repeat unfold 8 { c8 } |
   }
index 787d3031777862ee93e788a1b8eab368f8b61ad2..2e30dbd46a1103d77ec3ad507166f1a8fb4ef465 100644 (file)
@@ -962,13 +962,15 @@ to the following
 }
 @end lilypond
 
+@seealso
+Music Glossary:
+@rglos{ligature}.
 
-@c @seealso
-@c TODO: nothing here yet ...
-
+Notation Reference:
+@ref{Gregorian square neume ligatures},
+@ref{Ligatures}.
 
 @knownissues
-
 Horizontal spacing of ligatures is poor.
 
 
@@ -991,9 +993,15 @@ proper note heads, so there is no need to explicitly set the note
 head style.  Still, the note head style can be set, e.g., to
 @code{vaticana_punctum} to produce punctum neumes.  Similarly, the
 @code{Mensural_ligature_engraver} automatically assembles
-mensural ligatures.  See @ref{Ligatures}, for how ligature
-engravers work.
+mensural ligatures.
 
+@seealso
+Music Glossary:
+@rglos{ligature}.
+
+Notation Reference:
+@ref{White mensural ligatures},
+@ref{Ligatures}.
 
 @node Gregorian chant contexts
 @unnumberedsubsubsec Gregorian chant contexts
@@ -1166,6 +1174,9 @@ hufnagel style combined do/fa clef
 
 
 @seealso
+Music Glossary:
+@rglos{clef}.
+
 Notation Reference:
 @ref{Clef}.
 
@@ -1212,10 +1223,15 @@ The style for accidentals and key signatures is controlled by the
 
 
 @seealso
+Music Glossary:
+@rglos{accidental},
+@rglos{key signature}.
+
 Notation Reference:
-@ref{Pitches}, @ref{Accidentals}, and @ref{Automatic accidentals}, give a
-general introduction of the use of accidentals.  @ref{Key signature}, gives
-a general introduction of the use of key signatures.
+@ref{Pitches},
+@ref{Accidentals},
+@ref{Automatic accidentals},
+@ref{Key signature}.
 
 Internals Reference:
 @rinternals{KeySignature}.
@@ -1295,6 +1311,17 @@ Therefore, @file{gregorian.ly} also defines @code{\virgula} and
 @code{\finalis}.
 @endpredefined
 
+@seealso
+Music Glossary:
+@rglos{caesura},
+@rglos{divisio}.
+
+Notation Reference:
+@ref{Breath marks}.
+
+Installed Files:
+@file{gregorian.ly}.
+
 
 @node Gregorian articulation signs
 @unnumberedsubsubsec Gregorian articulation signs
@@ -1323,6 +1350,10 @@ Vaticana} style are provided.
 @end lilypond
 
 
+@seealso
+Notation Reference:
+@ref{Articulations and ornamentations}.
+
 Snippets:
 @rlsr{Ancient notation}.
 
@@ -1336,7 +1367,6 @@ Internals Reference:
 
 
 @knownissues
-
 Some articulations are vertically placed too closely to the
 corresponding note heads.
 
@@ -2307,20 +2337,26 @@ to a head, but not both to the same head.
 
 @funindex \pes
 @funindex \flexa
+
 Two adjacent heads can be tied together with the @code{\pes} and
 @code{\flexa} infix commands for a rising and falling line of melody,
 respectively.
 
 @funindex \augmentum
+
 Use the unary music function @code{\augmentum} to add augmentum dots.
 
+@seealso
+Music Glossary:
+@rglos{ligature}.
 
-@c @seealso
-@c TODO: nothing here yet ...
+Notation Reference:
+@ref{Gregorian square neume ligatures},
+@ref{White mensural ligatures},
+@ref{Ligatures}.
 
 
 @knownissues
-
 When an @code{\augmentum} dot appears at the end of the last staff
 within a ligature, it is sometimes vertically placed wrong.  As a
 workaround, add an additional skip note (e.g., @code{s8}) as last note
index f2fee1c5de8ffee95ee838aaa25932784c948691..295cf49ad0c48ff2a0c645a5b4a95e0dc97df968 100644 (file)
@@ -357,6 +357,22 @@ c2 b4 a
 g1\espressivo
 @end lilypond
 
+@funindex \cresc
+@funindex cresc
+@funindex \decresc
+@funindex decresc
+@funindex \dim
+@funindex dim
+Textual crescendo marks begin with @code{\cresc}.
+Textual decrescendos begin with @code{\decresc} or @code{\dim}.
+Extender lines are engraved as required.
+
+@lilypond[verbatim,quote,relative=2]
+g8\cresc a b c b c d e\mf |
+f8\decresc e d c e\> d c b |
+a1\dim ~ |
+a2. r4\! |
+@end lilypond
 
 @funindex \crescTextCresc
 @funindex crescTextCresc
@@ -371,24 +387,19 @@ g1\espressivo
 @funindex \dimHairpin
 @funindex dimHairpin
 
-Crescendos and decrescendos can be engraved as textual markings
-instead of hairpins.  Dashed lines are printed to indicate their
-extent.  The built-in commands @code{\crescTextCresc},
-@code{\dimTextDecresc}, @code{\dimTextDecr}, and @code{\dimTextDim}
-will tell LilyPond to use such textual marks instead of hairpins
-for all subsequent @code{\<} and @code{\>} commands.  The corresponding
-@code{\crescHairpin} and @code{\dimHairpin} commands will revert
-to hairpins again:
-
+Textual marks for dynamic changes can also replace hairpins:
 @lilypond[verbatim,quote,relative=2]
 \crescTextCresc
-c2\< d | e f\!
+c4\< d e f\! |
 \dimTextDecresc
-e2\> d | c b\!
+g4\> e d c\! |
+\dimTextDecr
+e4\> d c b\! |
+\dimTextDim
+d4\> c b a\! |
 \crescHairpin
-c2\< d | e f\!
 \dimHairpin
-e2\> d\!
+c4\< d\! e\> d\! |
 @end lilypond
 
 
@@ -410,6 +421,29 @@ Vertical positioning of dynamics is handled by
 @funindex \dynamicNeutral
 @funindex dynamicNeutral
 
+A @code{Dynamics} context is available to engrave dynamics on
+their own horizontal line.  Use spacer rests to indicate timing.
+(Notes in a @code{Dynamics} context will also take up
+musical time, but will not be engraved.)
+The @code{Dynamics} context can usefully contain some other
+items such as text scripts, text spanners, and piano pedal marks.
+
+@lilypond[verbatim,quote]
+<<
+  \new Staff \relative c' {
+    c2 d4 e |
+    c4 e e,2 |
+    g'4 a g a |
+    c1 |
+  }
+  \new Dynamics {
+    s1\< |
+    s1\f |
+    s2\dim s2-"rit." |
+    s1\p |
+  }
+>>
+@end lilypond
 
 @predefined
 @code{\dynamicUp},
@@ -470,7 +504,8 @@ Snippets:
 Internals Reference:
 @rinternals{DynamicText},
 @rinternals{Hairpin},
-@rinternals{DynamicLineSpanner}.
+@rinternals{DynamicLineSpanner},
+@rinternals{Dynamics}.
 
 
 @node New dynamic marks
index 7735ef89e8a5dac8380b5ede198c779ac935604f..c93abe76b0b7a2141b2478537090f4d31ae03d00 100644 (file)
@@ -51,6 +51,10 @@ keyboard instruments.
 @cindex staves, keyed instruments
 @cindex keyboard instrument staves
 @cindex keyed instrument staves
+@cindex keyboard music, centering dynamics
+@cindex dynamics, centered in keyboard music
+@cindex piano music, centering dynamics
+@cindex centered dynamics in piano music
 
 @funindex PianoStaff
 
@@ -76,6 +80,11 @@ number of voices may change regularly; this is described in
 @item Keyboard music can be written in parallel, as described in
 @ref{Writing music in parallel}.
 
+@item Dynamics may be placed in a @code{Dynamics} context,
+between the two @code{Staff} contexts
+to align the dynamic marks on a horizontal line
+centered between the staves; see @ref{Dynamics}.
+
 @item Fingerings are indicated with @ref{Fingering instructions}.
 
 @item Organ pedal indications are inserted as articulations, see
@@ -128,21 +137,6 @@ Internals Reference:
 Snippets:
 @rlsr{Keyboards}.
 
-
-@knownissues
-
-@cindex keyboard music, centering dynamics
-@cindex dynamics, centered in keyboard music
-@cindex piano music, centering dynamics
-@cindex centered dynamics in piano music
-@funindex staff-padding
-
-Dynamics are not automatically centered, but workarounds do exist.  One
-option is the @q{piano centered dynamics} template under
-@rlearning{Piano templates}; another option is to increase the
-@code{staff-padding} of dynamics as discussed in @rlearning{Moving
-objects}.
-
 @node Changing staff manually
 @unnumberedsubsubsec Changing staff manually
 
@@ -514,6 +508,8 @@ The placement of the pedal commands matches the physical movement of the
 sustain pedal during piano performance.  Pedalling to the final bar line
 is indicated by omitting the final pedal off command.
 
+Pedal indications may be placed in a @code{Dynamics} context,
+which aligns them on a horizontal line.
 
 @seealso
 Notation Reference:
index e463b9fcc6d25a29929fec690f481a60b225cf13..0f33fe343eb1b18e14d109183902c09676eb62ad 100644 (file)
@@ -7,7 +7,7 @@
     Guide, node Updating translation committishes..
 @end ignore
 
-@c \version "2.13.36"
+@c \version "2.13.44"
 
 @node Rhythms
 @section Rhythms
@@ -1056,25 +1056,23 @@ be changed, or new default values can be added:
 
 @lilypond[quote,verbatim]
 \score {
-  \relative c' {
-    \overrideTimeSignatureSettings
-      #'Score    % context
-      #'(4 . 4)  % timeSignatureFraction
-      #'(1 . 4)  % baseMomentFraction
-      #'(3 1)    % beatStructure
-      #'()       % beamExceptions
-    \time 4/4
-    \repeat unfold 8 { c8 } |
+  \new Staff {
+    \relative c' {
+      \overrideTimeSignatureSettings
+        #'(4 . 4)  % timeSignatureFraction
+        #'(1 . 4)  % baseMomentFraction
+        #'(3 1)    % beatStructure
+        #'()       % beamExceptions
+      \time 4/4
+      \repeat unfold 8 { c8 } |
+    }
   }
 }
 @end lilypond
 
-@code{\overrideTimeSignatureSettings} takes five arguments:
+@code{\overrideTimeSignatureSettings} takes four arguments:
 
 @enumerate
-@item
-@code{@var{context}}, a Scheme symbol that describes the context
-to which the default setting will apply.
 
 @item
 @code{@var{timeSignatureFraction}}, a Scheme pair describing the
@@ -1094,6 +1092,38 @@ for the time signature that go beyond ending at every beat, as
 described in @ref{Setting automatic beam behavior}.
 @end enumerate
 
+The context containing @code{\overrideTimeSignatureSettings} must
+be instantiated before the @code{\overrideTimeSignatureSettings}
+call is executed.  That means it must either be explicitly
+instantiated or there must be music in the context before the
+@code{\overrideTimeSignatureSettings} call:
+
+@lilypond[quote,verbatim]
+\score {
+  \relative c' {
+    % This call will fail because the context isn't yet instantiated
+    \overrideTimeSignatureSettings
+      #'(4 . 4)  % timeSignatureFraction
+      #'(1 . 4)  % baseMomentFraction
+      #'(3 1)    % beatStructure
+      #'()       % beamExceptions
+    \time 4/4
+    c8^\markup {"Beamed (2 2)"}
+    \repeat unfold 7 { c8 } |
+    % This call will succeed
+    \overrideTimeSignatureSettings
+      #'(4 . 4)  % timeSignatureFraction
+      #'(1 . 4)  % baseMomentFraction
+      #'(3 1)    % beatStructure
+      #'()       % beamExceptions
+    \time 4/4
+    c8^\markup {"Beamed (3 1)"}
+    \repeat unfold 7 { c8 } |
+  }
+}
+@end lilypond
+
+
 @cindex time signature properties, restoring default values
 @cindex restoring default properties for time signatures
 @funindex \revertTimeSignatureSettings
@@ -1106,20 +1136,61 @@ to the original values:
   \relative c' {
     \repeat unfold 8 { c8 } |
     \overrideTimeSignatureSettings
-      #'Score                         % context
-      #'(4 . 4)                       % timeSignatureFraction
-      #'(1 . 4)                       % baseMomentFraction
-      #'(3 1)                         % beatStructure
-      #'((end . (((1 . 8) . (3 1))))) % beamExceptions
+      #'(4 . 4)  % timeSignatureFraction
+      #'(1 . 4)  % baseMomentFraction
+      #'(3 1)    % beatStructure
+      #'()       % beamExceptions
     \time 4/4
     \repeat unfold 8 { c8 } |
-    \revertTimeSignatureSettings #'Score #'(4 . 4)
+    \revertTimeSignatureSettings #'(4 . 4)
     \time 4/4
     \repeat unfold 8 { c8 } |
   }
 }
 @end lilypond
 
+Different values of default time signature properties can be established
+for different staves by moving the @code{Timing_translator} and the
+@code{Default_bar_line_engraver} from the @code{Score} context to the
+@code{Staff} context.
+
+@lilypond[quote, verbatim]
+\score {
+  \new StaffGroup <<
+     \new Staff {
+        \overrideTimeSignatureSettings
+          #'(4 . 4)  % timeSignatureFraction
+          #'(1 . 4)  % baseMomentFraction
+          #'(3 1)    % beatStructure
+          #'()       % beamExceptions
+        \time 4/4
+        \repeat unfold 8 {c''8}
+     }
+     \new Staff {
+        \overrideTimeSignatureSettings
+          #'(4 . 4)  % timeSignatureFraction
+          #'(1 . 4)  % baseMomentFraction
+          #'(1 3)    % beatStructure
+          #'()       % beamExceptions
+        \time 4/4
+        \repeat unfold 8 {c''8}
+     }
+  >>
+  \layout {
+    \context {
+      \Score
+      \remove "Timing_translator"
+      \remove "Default_bar_line_engraver"
+    }
+    \context {
+      \Staff
+      \consists "Timing_translator"
+      \consists "Default_bar_line_engraver"
+    }
+  }
+}
+@end lilypond
+
 @predefined
 @code{\numericTimeSignature},
 @code{\defaultTimeSignature}.
@@ -1179,9 +1250,8 @@ Metronome marks may also be printed as a range of two numbers:
 
 @lilypond[verbatim,quote,relative=1]
 \tempo 4 = 40 ~ 46
-c4. ees8
-fis g aes c,
-b1
+c4. e8 a4 g
+b,2 d4 r
 @end lilypond
 
 Tempo indications with text can be used instead:
index f7aa545f0fd0eb91ca303bb42a42465774d62c54..d9f82d886fbd9f8a8f8ec7f17e8ed311387d350a 100644 (file)
@@ -167,9 +167,6 @@ e,\stopTextSpan
 
 The line style, as well as the text string, can be defined as an
 object property.  This syntax is described in @ref{Line styles}.
-Text spanners are part of the @code{Dynamics} context; see
-@rinternals{Dynamics}.
-
 
 @funindex \textSpannerUp
 @funindex textSpannerUp
@@ -206,8 +203,7 @@ Snippets:
 @rlsr{Expressive marks}.
 
 Internals Reference:
-@rinternals{TextSpanner},
-@rinternals{Dynamics}.
+@rinternals{TextSpanner}.
 
 
 @node Text marks
index 81d33a7e1342666ac1cdbadf161b4ed74ebc8c20..fff0e7170a6738a17525653ab05e20b170422e2b 100644 (file)
@@ -2,11 +2,9 @@
 
 \header {
   lsrtags = "expressive-marks, tweaks-and-overrides"
-  texidoc = "The \cresc, \dim and \decresc spanners can now be redefined as
-postfix operators and produce one text spanner.  Defining custom spanners is
-also easy.  Hairpin and text crescendi can be easily mixed. \< and \> produce
-hairpins by default, \cresc etc. produce text spanners by default.
-"
+  texidoc = "Custom text spanners can be defined and used with hairpin
+  and text crescendos.  @code{\<} and @code{\>} produce hairpins by
+  default, @code{\cresc} etc. produce text spanners by default."
   doctitle = "Dynamics text spanner postfix"
 }
 
@@ -16,22 +14,6 @@ crpoco =
              'span-direction START
              'span-type 'text
              'span-text "cresc. poco a poco")
-% Redefine the existing \cresc, \dim and \decresc commands to use postfix syntax
-cresc =
-#(make-music 'CrescendoEvent
-             'span-direction START
-             'span-type 'text
-             'span-text "cresc.")
-dim =
-#(make-music 'DecrescendoEvent
-             'span-direction START
-             'span-type 'text
-             'span-text "dim.")
-decresc =
-#(make-music 'DecrescendoEvent
-             'span-direction START
-             'span-type 'text
-             'span-text "decresc.")
 
 \relative c' {
   c4\cresc d4 e4 f4 |
index 295cefab4c6af5f8ccaed86071fae19c92f10e64..61a0ce4b196720979de4a479a51bf5a2916d4eff 100644 (file)
@@ -8,6 +8,23 @@
 
 @c used for news about the upcoming release; see CG 10.2
 
+@newsItem
+@subsubheading Beta test three of 2.14 -- LilyPond 2.13.44 released! @emph{Dec 25, 2010}
+
+LilyPond 2.13.44 is out; this is the third beta test of the
+upcoming 2.14 stable release.  Users are invited to experiment
+with this version.  New features since 2.12.3 are listed in the
+@qq{Changes} manual on the website section about
+@ref{Development}.
+
+There is still one Critical problem with this release: in one
+case, the vertical spacing is much too compressed.  If you decide
+to test this version, do not be surprised to discover problems;
+just send us polite @ref{Bug reports}.
+
+@newsEnd
+
+
 @newsItem
 @subsubheading Beta test two of 2.14 -- LilyPond 2.13.43 released! @emph{Dec 14, 2010}
 
diff --git a/VERSION b/VERSION
index 28ea17ddba8f4f9961018aa283bce2fc04cf8081..8d250c8f27228c90c257e346da30eb464c793792 100644 (file)
--- a/VERSION
+++ b/VERSION
@@ -1,7 +1,7 @@
 PACKAGE_NAME=LilyPond
 MAJOR_VERSION=2
 MINOR_VERSION=13
-PATCH_LEVEL=44
+PATCH_LEVEL=45
 MY_PATCH_LEVEL=
 VERSION_STABLE=2.12.3
-VERSION_DEVEL=2.13.43
+VERSION_DEVEL=2.13.44
index 9a91b5417ccc8ba094323543519c0a42b7952f62..8eac48ba25ee3171a8e1f2989a358195a6e5fc29 100644 (file)
@@ -1,4 +1,4 @@
-\version "2.13.33"
+\version "2.13.44"
 
 \header {
   texidoc = "
@@ -8,27 +8,27 @@ by the markups.
 "
 }
 
-\relative c' {
-  \overrideTimeSignatureSettings
-      #'Score
+\new Staff{
+  \relative c' {
+    \overrideTimeSignatureSettings
       #'(4 . 4)  % time signature fraction
       #'(1 . 4)  % base moment fraction
       #'(1 1 1 1)    % beatStructure
       #'()       % beamExceptions
-  \overrideTimeSignatureSettings
-      #'Score
+    \overrideTimeSignatureSettings
       #'(3 . 4)  % time signature fraction
       #'(1 . 4)  % base moment fraction
       #'(1 1 1)    % beatStructure
       #'()       % beamExceptions
-  \time 4/4
-  c8^\markup {"Beam by 1/4"} c c c c c c c |
-  \time 3/4
-  c8^\markup {"Beam by 1/4"} c c c c c |
-  \revertTimeSignatureSettings #'Score #'(4 . 4)
-  \revertTimeSignatureSettings #'Score #'(3 . 4)
-  \time 4/4
-  c8^\markup {"Beam by 1/2"} c c c c c c c |
-  \time 3/4
-  c8^\markup {"Beam by 3/4"} c c c c c |
+    \time 4/4
+    c8^\markup {"Beam by 1/4"} c c c c c c c |
+    \time 3/4
+    c8^\markup {"Beam by 1/4"} c c c c c |
+    \revertTimeSignatureSettings #'(4 . 4)
+    \revertTimeSignatureSettings #'(3 . 4)
+    \time 4/4
+    c8^\markup {"Beam by 1/2"} c c c c c c c |
+    \time 3/4
+    c8^\markup {"Beam by 3/4"} c c c c c |
+  }
 }
diff --git a/input/regression/music-function-post-event.ly b/input/regression/music-function-post-event.ly
new file mode 100644 (file)
index 0000000..673142e
--- /dev/null
@@ -0,0 +1,22 @@
+\version "2.13.44"
+
+\header
+{
+
+  texidoc = "Music functions may be attached to notes;
+in this case they must be introduced by a direction
+indicator.  If a non-neutral direction is given (i.e.
+anything else than a dash), then the 'direction property
+of the resulting object is set accordingly."
+
+}
+
+dynScript =
+#(define-music-function (parser location text) (string?)
+   (make-dynamic-script text))
+
+\relative c' {
+  c1-\dynScript "pp"
+  c^\dynScript "fp"
+  c_\dynScript "spz"
+}
index ce2cd6290e0a1cc1f7d83bc5555a25b07199b6ed..3c87f104032b1dcc84915dd1652552be5aa82ac0 100644 (file)
@@ -7,7 +7,6 @@ When @code{skipTypesetting} is set during a @code{skipBars}-induced
 "
 }
 
-\version "2.13.36"
 <<
   {
     \time 3/4
diff --git a/input/regression/time-signature-settings-by-staff.ly b/input/regression/time-signature-settings-by-staff.ly
new file mode 100644 (file)
index 0000000..b7db16b
--- /dev/null
@@ -0,0 +1,45 @@
+\version "2.13.44"
+
+\header {
+  texidoc = "
+Default values for time signature settings can vary by staff if the
+@code{Timing_translator} and @code{Default_bar_line_engraver} are
+moved from @code{Score} to @code{Staff}.  In this case, the upper staff
+should be beamed 3/4, 1/4.  The lower staff should be beamed 1/4, 3/4.
+"
+}
+
+\score {
+  \new StaffGroup <<
+     \new Staff {
+        \overrideTimeSignatureSettings
+          #'(4 . 4)  % timeSignatureFraction
+          #'(1 . 4)  % baseMomentFraction
+          #'(3 1)    % beatStructure
+          #'()       % beamExceptions
+        \time 4/4
+        \repeat unfold 8 {c''8}
+     }
+     \new Staff {
+        \overrideTimeSignatureSettings
+          #'(4 . 4)  % timeSignatureFraction
+          #'(1 . 4)  % baseMomentFraction
+          #'(1 3)    % beatStructure
+          #'()       % beamExceptions
+        \time 4/4
+        \repeat unfold 8 {c''8}
+     }
+  >>
+  \layout {
+    \context {
+      \Score
+      \remove "Timing_translator"
+      \remove "Default_bar_line_engraver"
+    }
+    \context {
+      \Staff
+      \consists "Timing_translator"
+      \consists "Default_bar_line_engraver"
+    }
+  }
+}
index 7567caa700744a3b72dd23b479d230ecd7ca57ac..d58424cb5a2f989d5334e65cdf0ea1ff1387db44 100644 (file)
@@ -189,7 +189,7 @@ Beaming_pattern::find_rhythmic_importance (Beaming_options const &options)
              // in an 8th-note triplet with a quarter-note beat, 1/3 of a beat should be
              // more important than 1/2.
              if (infos_[i].rhythmic_importance_ >= 0)
-               infos_[i].rhythmic_importance_ = (dt / options.base_moment_).den ();
+               infos_[i].rhythmic_importance_ = (int) (dt / options.base_moment_).den ();
 
              i++;
            }
index cbc88255f33aac0af32b6b89f0e20ec2053ffaf5..3d89f18710749d445c3b13aa84dd2f13191ee867 100644 (file)
@@ -295,8 +295,8 @@ struct Substitution_entry
       }
     else
       {
-       left_ = sr[LEFT];
-       right_ = sr[RIGHT];
+       left_ = (short) sr[LEFT];
+       right_ = (short) sr[RIGHT];
       }
   }
   Substitution_entry ()
index 29c00e1b0334c1b6fd1946e125310f51cbcc93f6..ec8ce472fa8f110ceaf25434a528b7e6208aa5ce 100644 (file)
@@ -589,6 +589,18 @@ Line_details::tallness () const
   return tallness_;
 }
 
+Real
+Line_details::spring_length (Line_details const &next_line) const
+{
+  // space_ measures the spring which goes from the bottom refpoint
+  // of this to the top refpoint of next_line. We want to return
+  // the stretchable space between the bottom of this's extent to
+  // the top of next_line's extent.
+  Real refpoint_dist = tallness_ + refpoint_extent_[DOWN] - next_line.refpoint_extent_[UP];
+  Real space = next_line.title_ ? title_space_ : space_;
+  return max (0.0, space - refpoint_dist);
+}
+
 Line_shape::Line_shape (Interval begin, Interval rest)
 {
   begin_ = begin;
index 814bf6e159db3ee1b8d37444dc69e3fdb5f31232..627ede23da764e43d1f507531ab31f07d4d4dd0b 100644 (file)
@@ -61,8 +61,8 @@ Duration::Duration (Rational r, bool scale)
         satisfies the left inequality and is within a factor of 2 of
         satistying the right one. Therefore either k = k' or k = k'+1 */
 
-      int p = r.num ();
-      int q = r.den ();
+      int p = (int) r.num ();
+      int q = (int) r.den ();
       int k = intlog2 (q) - intlog2 (p);
       if (shift_left(p, k) < q)
        k++;
index b4c92f8862060ac3c8270f9b76672b3f6f107c20..711537ec413967e2db56c2ea4cb87d36877991b3 100644 (file)
@@ -182,7 +182,7 @@ Figured_bass_engraver::stop_translation_timestep ()
 
 IMPLEMENT_TRANSLATOR_LISTENER (Figured_bass_engraver, rest);
 void
-Figured_bass_engraver::listen_rest (Stream_event *ev)
+Figured_bass_engraver::listen_rest (Stream_event *)
 {
   have_rest_ = true;
 }
index b2ff830696a315cd36e5bc1bd8fc25e6a7bcc998..28bf90a0b671d23100337a91f8c625ff5179aa3c 100644 (file)
@@ -79,7 +79,7 @@ Font_metric::count () const
 }
 
 Box
-Font_metric::get_indexed_char_dimensions (size_t k) const
+Font_metric::get_indexed_char_dimensions (size_t) const
 {
   return Box (Interval (0, 0), Interval (0, 0));
 }
index 4bfdde23fa598adf0c38e1e37590d1a281050bce..216ecc881f73dc0d9ac20e459437fb7d78ff4950 100644 (file)
@@ -112,6 +112,7 @@ struct Line_details {
   Line_details (Prob *pb, Output_def *paper);
   Real full_height () const;
   Real tallness () const;
+  Real spring_length (Line_details const &next_line) const;
 };
 
 /*
index fea8836250486100480bb20aa99adf45f07f40ab..95610af236c505ebd58f806797a22f68fa8561ba 100644 (file)
@@ -661,7 +661,7 @@ SCM
 parse_symbol_list (char const *symbols)
 {
   while (isspace (*symbols))
-    *symbols++;
+    symbols++;
   string s = symbols;
   replace_all (&s, '\n', ' ');
   replace_all (&s, '\t', ' ');
index 207dd06bf444e242740ae7dc5ac11cada8afad2d..6457c0caa5ef968c5fd807ec259d4a695c1197ee 100644 (file)
@@ -401,7 +401,7 @@ Lookup::slur (Bezier curve, Real curvethick, Real linethick,
               Bezier back_dash, curve_dash;
               Real seg_length = (back_segment.control_[3] - 
                                  back_segment.control_[0]).length ();
-              int pattern_count = seg_length / dash_period;
+              int pattern_count = (int) (seg_length / dash_period);
               Real pattern_length = 1.0 / (pattern_count + dash_fraction);
               Real start_t, end_t;
               for (int p = 0; p <= pattern_count; p++)
index 263c978d07dbc2eba440f0d2e9119842b0f0311b..547b67a5f0e3c0a11f5655cd32be8ae83568ce30 100644 (file)
@@ -87,7 +87,7 @@ Midi_instrument::to_string () const
   SCM program = scm_call_1 (proc, ly_symbol2scm (audio_->str_.c_str ()));
   found = (program != SCM_BOOL_F);
   if (found)
-    program_byte = scm_to_int (program);
+    program_byte = (Byte) scm_to_int (program);
   else
     warning (_f ("no such MIDI instrument: `%s'", audio_->str_.c_str ()));
 
index 3272e02eefbb3471efab3be5e04a8ed28a11683f..993bfa459256c51c10fa57cb03678a018b103983 100644 (file)
@@ -229,12 +229,16 @@ Page_breaking::systems_per_page () const
 int
 Page_breaking::max_systems_per_page () const
 {
+  if (systems_per_page_)
+    return systems_per_page_;
   return max_systems_per_page_;
 }
 
 int
 Page_breaking::min_systems_per_page () const
 {
+  if (systems_per_page_)
+    return systems_per_page_;
   return min_systems_per_page_;
 }
 
@@ -957,30 +961,32 @@ Page_breaking::min_page_count (vsize configuration, vsize first_page_num)
 
   for (vsize i = 0; i < cached_line_details_.size (); i++)
     {
+      Line_details const &cur = cached_line_details_[i];
+      Line_details const *const prev = (i > 0) ? &cached_line_details_[i-1] : 0;
       Real ext_len;
       if (cur_rod_height > 0)
-       ext_len = cached_line_details_[i].tallness_;
+       ext_len = cur.tallness_;
       else
-       ext_len = cached_line_details_[i].full_height();
+       ext_len = cur.full_height();
 
+      Real spring_len = (i > 0) ? prev->spring_length (cur) : 0;
       Real next_rod_height = cur_rod_height + ext_len;
-      Real next_spring_height = cur_spring_height + cached_line_details_[i].space_;
+      Real next_spring_height = cur_spring_height + spring_len;
       Real next_height = next_rod_height + (ragged () ? next_spring_height : 0)
-       + min_whitespace_at_bottom_of_page (cached_line_details_[i]);
-      int next_line_count = line_count + cached_line_details_[i].compressed_nontitle_lines_count_;
+       + min_whitespace_at_bottom_of_page (cur);
+      int next_line_count = line_count + cur.compressed_nontitle_lines_count_;
 
       if ((!too_few_lines (line_count) && (next_height > cur_page_height && cur_rod_height > 0))
          || too_many_lines (next_line_count)
-         || (i > 0
-             && cached_line_details_[i-1].page_permission_ == ly_symbol2scm ("force")))
+         || (prev && prev->page_permission_ == ly_symbol2scm ("force")))
        {
-         line_count = cached_line_details_[i].compressed_nontitle_lines_count_;
-         cur_rod_height = cached_line_details_[i].full_height();
-         cur_spring_height = cached_line_details_[i].space_;
+         line_count = cur.compressed_nontitle_lines_count_;
+         cur_rod_height = cur.full_height();
+         cur_spring_height = 0;
          page_starter = i;
 
          cur_page_height = page_height (first_page_num + ret, false);
-         cur_page_height -= min_whitespace_at_top_of_page (cached_line_details_[i]);
+         cur_page_height -= min_whitespace_at_top_of_page (cur);
 
          ret++;
        }
@@ -1182,7 +1188,7 @@ Page_breaking::space_systems_with_fixed_number_per_page (vsize configuration,
       res.penalty_ += cached_line_details_[line-1].page_penalty_;
       if (system_count_on_this_page != systems_per_page_)
        {
-         res.penalty_ += TERRIBLE_SPACING_PENALTY;
+         res.penalty_ += abs (system_count_on_this_page - systems_per_page_) * TERRIBLE_SPACING_PENALTY;
          res.system_count_status_ |= ((system_count_on_this_page < systems_per_page_))
            ? SYSTEM_COUNT_TOO_FEW : SYSTEM_COUNT_TOO_MANY;
        }
index e9a00093d9ded28f757b45d8a339d852beda27d3..673278f69c6fc9490ab118d406610531064b6d9e 100644 (file)
@@ -312,13 +312,18 @@ Page_layout_problem::solve_rod_spring_problem (bool ragged)
     {
       Real overflow = spacer.configuration_length (spacer.force ())
                      - page_height_;
-      warning (_f ("couldn't fit music on page: overflow is %f",
-                   overflow));
-      warning (_ ("compressing music to fit"));
-      vsize space_count = solution_.size ();
-      Real spacing_increment = overflow / (space_count - 2);
-      for (vsize i = 2; i < space_count; i++)
-       solution_[i] -= (i-1) * spacing_increment;
+      if (ragged && overflow < 1e-6)
+       warning (_ ("couldn't fit music on page: ragged-spacing was requested, but page was compressed"));
+      else
+       {
+         warning (_f ("couldn't fit music on page: overflow is %f",
+                      overflow));
+         warning (_ ("compressing music to fit"));
+         vsize space_count = solution_.size ();
+         Real spacing_increment = overflow / (space_count - 2);
+         for (vsize i = 2; i < space_count; i++)
+           solution_[i] -= (i-1) * spacing_increment;
+       }
     }
 }
 
index 76ef484b14daf04c23f9e424b203ed186f935c2a..4e987e6998f49cc13875ba1de3e971cc7db13a34 100644 (file)
@@ -50,6 +50,8 @@ Page_spacing::append_system (const Line_details &line)
   if (rod_height_)
     {
       rod_height_ += line.tallness_;
+      spring_len_ += last_line_.spring_length (line);
+
     }
   else
     {
@@ -57,14 +59,6 @@ Page_spacing::append_system (const Line_details &line)
       first_line_ = line;
     }
 
-  // line.space_ measures the spring which goes from the bottom refpoint
-  // of one system to the top refpoint of the next. spring_len_ measures
-  // how much of that is stretchable.
-  Real refpoint_dist = last_line_.tallness_
-    + last_line_.refpoint_extent_[DOWN]
-    - line.refpoint_extent_[UP];
-  Real space = line.title_ ? last_line_.title_space_ : last_line_.space_;
-  spring_len_ += max (0.0, space - refpoint_dist);
   inverse_spring_k_ += line.inverse_hooke_;
 
   last_line_ = line;
@@ -75,18 +69,15 @@ Page_spacing::append_system (const Line_details &line)
 void
 Page_spacing::prepend_system (const Line_details &line)
 {
-  if (!rod_height_)
+  if (rod_height_)
+    spring_len_ += line.spring_length (first_line_);
+  else
     last_line_ = line;
 
   rod_height_ -= first_line_.full_height ();
   rod_height_ += first_line_.tallness_;
   rod_height_ += line.full_height();
 
-  Real refpoint_dist = line.tallness_
-    + line.refpoint_extent_[DOWN]
-    - first_line_.refpoint_extent_[UP];
-  Real space = first_line_.title_ ? line.title_space_ : line.space_;
-  spring_len_ += max (0.0, space - refpoint_dist);
   inverse_spring_k_ += line.inverse_hooke_;
 
   first_line_ = line;
index 21ab85ab667052697d8038e1aea8a59f5f792f14..480dd8c465d77563a7eb8f7e60e292ffa4740f84 100644 (file)
@@ -300,7 +300,7 @@ Pango_font::physical_font_tab () const
 extern bool music_strings_to_paths;
 
 Stencil
-Pango_font::text_stencil (Output_def *state,
+Pango_font::text_stencil (Output_def * /* state */,
                          string str, bool music_string) const
 {
   /*
index 94dacc5d3eebc2491fc96bd34c68eee5b658ece5..92c21c7194a7dc8c1002b6659dcecf6c3cf7da66 100644 (file)
@@ -1706,8 +1706,12 @@ post_event:
        direction_less_event {
                $$ = $1;
        }
-       | '-' music_function_event {
+       | script_dir music_function_event {
                $$ = run_music_function (PARSER, $2);
+               if ($1)
+               {
+                       unsmob_music ($$)->set_property ("direction", scm_from_int ($1));
+               }
        }
        | HYPHEN {
                if (!PARSER->lexer_->is_lyric_state ())
index e9872fdf8eb09ba8e9bb534b52644583b7ef2744..e9dd522351d202a809d6235ab6f415e138be3c1a 100644 (file)
@@ -56,7 +56,7 @@ Pitch::compare (Pitch const &m1, Pitch const &m2)
   if (n)
     return n;
   if (a)
-    return a;
+    return a > (Rational)0;
   
   return 0;
 }
index bd7e60e691066a330497dd92a1976a724d485b81..9d66ee72ed03a5a1568d9ae6ee30b766422645ce 100644 (file)
@@ -462,17 +462,17 @@ ottava =
 
 overrideTimeSignatureSettings =
 #(define-music-function
-   (parser location context time-signature base-moment beat-structure beam-exceptions)
-   (symbol? pair? pair? cheap-list? cheap-list?)
+   (parser location time-signature base-moment beat-structure beam-exceptions)
+   (pair? pair? cheap-list? cheap-list?)
 
-   (_i "Override @code{timeSignatureSettings} in @var{context}
+   (_i "Override @code{timeSignatureSettings}
 for time signatures of @var{time-signature} to have settings
 of @var{base-moment}, @var{beat-structure}, and @var{beam-exceptions}.")
 
    ;; TODO -- add warning if largest value of grouping is
    ;;      greater than time-signature.
   (let ((setting (make-setting base-moment beat-structure beam-exceptions)))
-    (override-time-signature-setting time-signature setting context)))
+    (override-time-signature-setting time-signature setting)))
 
 overrideProperty =
 #(define-music-function (parser location name property value)
@@ -739,12 +739,12 @@ resetRelativeOctave =
 
 revertTimeSignatureSettings =
 #(define-music-function
-   (parser location context time-signature)
-   (symbol? pair?)
+   (parser location time-signature)
+   (pair?)
 
-   (_i "Revert @code{timeSignatureSettings} in @var{context}
+   (_i "Revert @code{timeSignatureSettings}
 for time signatures of @var{time-signature}.")
-     (revert-time-signature-setting time-signature context))
+   (revert-time-signature-setting time-signature))
 
 rightHandFinger =
 #(define-music-function (parser location finger) (number-or-string?)
index be132ac5e3db3c7b269b330634317b93fa81a97f..e17095c3884f4fea0c1c053a303c2bdc99f62bf1 100644 (file)
@@ -3122,6 +3122,12 @@ def conv(str):
        stderr_write (UPDATE_MANUALLY);
     return str
 
+@rule ((2, 13, 44),
+    _ ("Remove context from overrideTimeSignatureSettings and revertTimeSignatureSettings."))
+def conv(str):
+    str = re.sub (r"\\(override|revert)TimeSignatureSettings(\s+[^#]*)(#[^#]*)#", r"\\\1TimeSignatureSettings\2#", str)
+    return str
+
 
 # Guidelines to write rules (please keep this at the end of this file)
 #
index 42bf5bfd41ee163ec17e74132d43b75c1ac695fd..c5792d9b80e9c9adc3648bf11efd58f26bc9a3e2 100644 (file)
@@ -281,7 +281,7 @@ a fresh copy of the list-head is made."
           property
           (revert-member current-value setting)))))
 
-(define-public (override-time-signature-setting time-signature setting . rest)
+(define-public (override-time-signature-setting time-signature setting)
   "Override the time signature settings for the context in @var{rest},
 with the new setting alist @var{setting}. "
     (context-spec-music
@@ -291,17 +291,9 @@ with the new setting alist @var{setting}. "
                       'timeSignatureSettings
                       time-signature
                       setting)))
-      (if (and (pair? rest) (symbol? (car rest)))
-          (car rest)
-          'Voice)))
+      'Timing))
 
-(define-public (score-override-time-signature-setting
-                 time-signature setting)
-  (override-time-signature-setting
-    time-signature setting 'Score))
-
-(define-public (revert-time-signature-setting
-                  time-signature . rest)
+(define-public (revert-time-signature-setting time-signature)
   (context-spec-music
     (make-apply-context
       (lambda (c)
@@ -309,6 +301,4 @@ with the new setting alist @var{setting}. "
           c
           'timeSignatureSettings
           time-signature)))
-    (if (and (pair? rest) (symbol? (car rest)))
-        (car rest)
-        'Voice)))
+    'Timing))
index c6eefac9f5e0843380819351cbb54ec25440c4be..b559a771376a677900f96bf4f627f474c46adebb 100644 (file)
@@ -407,6 +407,9 @@ chords.  Returns a placement-list."
     (let ((this-fret (calc-fret (ly:event-property note 'pitch)
                                 string
                                 tuning)))
+       (if (< this-fret 0)
+           (ly:warning (_ "Negative fret for pitch ~a on string ~a")
+                                       (note-pitch note) string))
        (set! string-fret-fingering-tuples
              (cons (list string
                          this-fret