]> git.donarmstrong.com Git - lilypond.git/commitdiff
patch::: 1.3.121.jcn2
authorJan Nieuwenhuizen <janneke@gnu.org>
Tue, 9 Jan 2001 14:54:20 +0000 (15:54 +0100)
committerJan Nieuwenhuizen <janneke@gnu.org>
Tue, 9 Jan 2001 14:54:20 +0000 (15:54 +0100)
1.3.121.jcn2
============

* Renamed last instances of musical_*pitch to pitch.

* Bugfix: actually read pitch value in \pitch #(make-pitch ...)

* Bugfix(?): always allow explicit duration entry.

* Fixed .po charsets for upcoming msgfmt release (Bruno Haible).

* Some doco updates and fixes.

24 files changed:
CHANGES
Documentation/user/bugs.itexi
Documentation/user/convert-ly.itexi
Documentation/user/development.itexi
Documentation/user/features.tely
Documentation/user/invoking.itexi
Documentation/user/lilypond-book.tely
Documentation/user/lilypond.tely
Documentation/user/moreinfo.itexi
Documentation/user/properties.itely
Documentation/user/refman.itely
Documentation/user/tutorial.itely
VERSION
input/test/explicit.ly [new file with mode: 0644]
lily/duration.cc
lily/my-lily-lexer.cc
lily/parser.yy
po/de.po
po/it.po
po/nl.po
scm/backend-documentation-lib.scm
scm/documentation-lib.scm
scm/translator-property-description.scm
scripts/convert-ly.py

diff --git a/CHANGES b/CHANGES
index f8477c1b1d1c041b7fe7d4d033eba310859bef7e..a7f39239901f8ae047085ea4e1f2246126c8f85a 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -1,3 +1,16 @@
+1.3.121.jcn2
+============
+
+* Renamed last instances of musical_*pitch to pitch.
+
+* Bugfix: actually read pitch value in \pitch #(make-pitch ...)
+
+* Bugfix(?): always allow explicit duration entry.
+
+* Fixed .po charsets for upcoming msgfmt release (Bruno Haible).
+
+* Some doco updates and fixes.
+
 1.3.121.jcn1
 ============
 
 1.3.121.jcn1
 ============
 
index d9ba1abeeb0b026e35c0649b06a9465f13c97c48..8a7585a346563b1c2c3a016ce5a85ef79a520848 100644 (file)
@@ -1,5 +1,5 @@
-@node Reporting Bugs, , , Top
-@section Bug reports
+@node Reporting Bugs
+@chapter Bug reports
 
 LilyPond development moves quickly, so if you have a problem, it is
 wise to check if it has been fixed in a newer release.  If you think
 
 LilyPond development moves quickly, so if you have a problem, it is
 wise to check if it has been fixed in a newer release.  If you think
index 5c413c622764a9883554b771e010ea85ef45ba29..1684b02dc414fea5d56cee514270663d1e5bb135 100644 (file)
@@ -1,4 +1,4 @@
-@node convert-ly, , ,Top
+@node convert-ly
 @chapter convert-ly
 @code{convert-ly} sequentially applies different
 lilypond-conversions to upgrade a Lilypond input file.  It uses
 @chapter convert-ly
 @code{convert-ly} sequentially applies different
 lilypond-conversions to upgrade a Lilypond input file.  It uses
index fa6b0dfb17f459702f54a95bc67e51abf6dfd8af..907fbeb4ac6d6de2fae7814a0c65447cd9d5dda6 100644 (file)
@@ -1,4 +1,5 @@
-@node Internals, , , top
+@node Internals
+@chapter Internals
 
 @menu
 * Conversion stages::              Lilypond is a multi-pass program.
 
 @menu
 * Conversion stages::              Lilypond is a multi-pass program.
@@ -10,8 +11,8 @@
 * Molecules::                       Molecules are stand-alone descriptions of output
 @end menu
 
 * Molecules::                       Molecules are stand-alone descriptions of output
 @end menu
 
-
-@node Conversion stages, , , Internals
+@node Conversion stages
+@section Conversion stages
 
 When translating the input to notation, there are number of distinct
 phases.  We list them here:
 
 When translating the input to notation, there are number of distinct
 phases.  We list them here:
@@ -60,7 +61,7 @@ are output, line by line.
 @end table
 
 
 @end table
 
 
-@node Grobs, , , Internals
+@node Grobs
 @section Grobs
 
 This section is about Grobs (short for Graphical Objects), which are
 @section Grobs
 
 This section is about Grobs (short for Graphical Objects), which are
@@ -90,7 +91,8 @@ how grobs work.
 * Pointer substitution::
 @end menu
 
 * Pointer substitution::
 @end menu
 
-@node What is a grob?, , , Grobs
+@node What is a grob?
+@subsection What is a grob?
 
 In music notation, lots of symbols are related in some way.  You can
 think of music notation as a graph where nodes are formed by the
 
 In music notation, lots of symbols are related in some way.  You can
 think of music notation as a graph where nodes are formed by the
@@ -146,7 +148,8 @@ dimensions, line breaks, etc.  are calculated. Finally,   the printing
 description in the form of Molecules (@ref{Molecules})  is extracted from
 the network. These are then dumped into the output file
 
 description in the form of Molecules (@ref{Molecules})  is extracted from
 the network. These are then dumped into the output file
 
-@node Callbacks, , , Grobs
+@node Callbacks
+@subsection Callbacks
 
 Offsets of grobs are relative to a parent reference point. Most
 positions are not known when an object is created, so these are
 
 Offsets of grobs are relative to a parent reference point. Most
 positions are not known when an object is created, so these are
@@ -196,7 +199,8 @@ means: "empty in this direction". If you fill in a pair, that pair
 hard-codes the extent in that coordinate.
 
 
 hard-codes the extent in that coordinate.
 
 
-@node Setting grob properties, , , Grobs
+@node Setting grob properties
+@subsection Setting grob properties
 
 Grob properties are stored as GUILE association lists, with symbols as
 keys.   From C++, element properties can be accessed using the functions
 
 Grob properties are stored as GUILE association lists, with symbols as
 keys.   From C++, element properties can be accessed using the functions
@@ -281,7 +285,7 @@ This shifts all elements that have a @code{text} property one staff
 space to the left. This mechanism is rather clumsy to use, but it allows
 you tweak any setting of any grob.
 
 space to the left. This mechanism is rather clumsy to use, but it allows
 you tweak any setting of any grob.
 
-@node Items and Spanners, , , Grobs
+@node Items and Spanners
 @unnumberedsubsec Items and Spanners
 
 Grobs can also be distinguished in their role in the horizontal spacing.
 @unnumberedsubsec Items and Spanners
 
 Grobs can also be distinguished in their role in the horizontal spacing.
@@ -308,7 +312,7 @@ the outcome of the visibility-lambda. This is a function taking a
 direction (-1, 0 or 1) and returns a cons of booleans, signifying wether
 this grob should be transparent and invisible.
 
 direction (-1, 0 or 1) and returns a cons of booleans, signifying wether
 this grob should be transparent and invisible.
 
-@node Pointer substitution, , , Grobs
+@node Pointer substitution
 @unnumberedsubsec Pointer substitution
 
 
 @unnumberedsubsec Pointer substitution
 
 
@@ -318,13 +322,17 @@ complications. When a  spanner crosses a line-break, then the spanner is
 the grob is made. A substitution process redirects all grob-reference
 so that spanner grob will only reference other grobs in the same line.
 
 the grob is made. A substitution process redirects all grob-reference
 so that spanner grob will only reference other grobs in the same line.
 
-@node Engraver, , , Internals
+@node Engraver
+@section Engraver
 
 
-@node Music_iterator, , , Internals
+@node Music_iterator
+@section Music_iterator
 
 
-@node Music, , , Internals
+@node Music
+@section Music
 
 
-@node Molecules, , , Internals
+@node Molecules
+@section Molecules
 
 The objective of any typesetting system is to put ink on paper in the
 right places. For LilyPond, this final stage is left to the TeX and the
 
 The objective of any typesetting system is to put ink on paper in the
 right places. For LilyPond, this final stage is left to the TeX and the
@@ -363,7 +371,7 @@ Molecule.
 
 
 
 
 
 
-@node Development, , , top
+@node Development
 @chapter Development
 
 @menu
 @chapter Development
 
 @menu
@@ -372,7 +380,7 @@ Molecule.
 * Localisation::
 @end menu
 
 * Localisation::
 @end menu
 
-@node CodingStyle, , , Development
+@node CodingStyle
 @section CodingStyle - standards while programming for GNU LilyPond
 
 As a general rule, you should always try to continue computations, even
 @section CodingStyle - standards while programming for GNU LilyPond
 
 As a general rule, you should always try to continue computations, even
@@ -601,8 +609,8 @@ files, doing a release.
 
 Use them.
 
 
 Use them.
 
-@node Making patches, , , Development
-
+@node Making patches
+@section Making patches
 
 @unnumberedsec  Track and distribute your code changes
 
 
 @unnumberedsec  Track and distribute your code changes
 
@@ -701,11 +709,8 @@ and don't forget to make automatically generated files:
  
 @end example 
 
  
 @end example 
 
-@node Localisation, , , Development
-
-@chapter Localisation - User messages in LilyPond
-
-@section Introduction
+@node Localisation
+@section Localisation - User messages in LilyPond
 
 This document provides some guidelines for uniformising user messages.
 In the absence of other standards, we'll be using these rules when coding
 
 This document provides some guidelines for uniformising user messages.
 In the absence of other standards, we'll be using these rules when coding
@@ -715,7 +720,7 @@ guidelines in the future.
 Not-preferred messages are marked with @code{+}.  By convention,
 agrammatical examples are marked with @code{*}.
 
 Not-preferred messages are marked with @code{+}.  By convention,
 agrammatical examples are marked with @code{*}.
 
-@section Guidelines
+@subsection Guidelines
 
 @itemize @bullet
 
 
 @itemize @bullet
 
index 118ed956a253477e828368d6be14001879df7cd0..694729a70a4181aeefec419581e17beedde2db23 100644 (file)
@@ -21,6 +21,16 @@ yes: \property Staff.VoltaBracket = #'((meta .  ((interfaces . ()))))
 @end ignore
 
 
 @end ignore
 
 
+@macro keyindex {word}
+@cindex \word\
+
+@end macro
+
+@macro indexcode {word}
+@cindex \word\
+
+@end macro
+
 
 
 @node Top
 
 
 @node Top
@@ -39,41 +49,78 @@ yes: \property Staff.VoltaBracket = #'((meta .  ((interfaces . ()))))
 * Output property::                Output property
 * Embedded TeX::                   Embedded TeX
 * Embedded PostScript::            Embedded PostScript
 * Output property::                Output property
 * Embedded TeX::                   Embedded TeX
 * Embedded PostScript::            Embedded PostScript
+* Index::                          Checking Feature index
 @end menu
 
 @end menu
 
-@ignore
-Testin'' a b c...
-@lilypond[fragment,relative,verbatim,center]
-  a'' b c
-@end lilypond
-@end ignore
-
 @node Arpeggio
 @section Arpeggio
 @node Arpeggio
 @section Arpeggio
+@cindex argepeggio
+
+@cindex broken arpeggio
+@c @cindex ``doorlopend'' argpeggio
+
+You can specify an arpeggio sign on a chord by issuing an
+@c duh
+@c @code{\arpeggio}@indexcode{\arpeggio} request:
+@code{\arpeggio} request:
+@cindex @code{\arpeggio}
 
 
-@lilypond[fragment,relative,verbatim,center]
+@quotation
+@lilypond[fragment,relative,verbatim]
   \context Voice <c'\arpeggio e g c>
 @end lilypond
   \context Voice <c'\arpeggio e g c>
 @end lilypond
+@end quotation
+
+Typesetting of simultanious chords with arpeggios can be controlled with
+the property @code{PianoStaff.connectArpeggios} @footnote{ FIXME:
+connectArpeggios.  Can't find the English terms for two kinds of
+arpeggio (Dutch: gebroken arpeggio vs doorlopend arpeggio).}  By
+default, LilyPond prints broken arpeggios; when set to true, one
+extended arpeggio sign is printed.
 
 
-@lilypond[fragment,relative,verbatim,center]
+@quotation
+@lilypond[fragment,relative,verbatim]
   \context PianoStaff <
     \property PianoStaff.connectArpeggios = ##t
     \context Staff \context Voice <c''\arpeggio e g c>
     \context Staff=other \context Voice <c,\arpeggio e g>
   >  
 @end lilypond
   \context PianoStaff <
     \property PianoStaff.connectArpeggios = ##t
     \context Staff \context Voice <c''\arpeggio e g c>
     \context Staff=other \context Voice <c,\arpeggio e g>
   >  
 @end lilypond
-
+@end quotation
 
 @node Glissando
 @section Glissando
 
 @node Glissando
 @section Glissando
+@cindex glissando
+
+A glissando line can be requested by issuing a
+@c duh
+@c @code{\glissando}@indexcode{\glissando} request:
+@code{\glissando} request:
+@cindex @code{\glissando}
 
 
 
 
-@lilypond[fragment,relative,verbatim,center]
+@quotation
+@lilypond[fragment,relative,verbatim]
   c'' \glissando c'
 @end lilypond
   c'' \glissando c'
 @end lilypond
+@end quotation
+
+Printing of the additional text @code{"gliss."} is currently not
+supported.
+
 
 @subsection Follow Thread
 
 @subsection Follow Thread
-@lilypond[fragment,relative,verbatim,center]
+@cindex follow thread
+@cindex staff switching
+@cindex cross staff
+
+@c Documented here because it looks like a glissando.
+A glissando-like line can be printed to connect notes whenever a thread
+switches to another staff.  This is enabled if the property
+@code{PianoStaff.followThread}@indexcode{followThread} is set to true:
+
+@quotation
+@lilypond[fragment,relative,verbatim]
   \context PianoStaff <
     \property PianoStaff.followThread = ##t
     \context Staff \context Voice {
   \context PianoStaff <
     \property PianoStaff.followThread = ##t
     \context Staff \context Voice {
@@ -84,30 +131,54 @@ Testin'' a b c...
     \context Staff=two {\clef bass; \skip 1*2;}
   >  
 @end lilypond
     \context Staff=two {\clef bass; \skip 1*2;}
   >  
 @end lilypond
+@end quotation
 
 @node Manual beam settings
 @section Manual beam settings
 
 @node Manual beam settings
 @section Manual beam settings
+@cindex beams
+@cindex beam settings
+@cindex manual beams
 
 
+In some cases it may be necessary to override LilyPond's automatic
+beaming algorithm.  For example, the auto beamer will not beam over
+rests, so if you want that, specify the begin and end point manually
+using @code{[}@indexcode{[} and @code{]}@indexcode{]}:
 
 
-Beams over rests...
-
-@lilypond[fragment,relative,verbatim,center]
+@quotation
+@lilypond[fragment,relative,verbatim]
   \context Staff {
     r4 [r8 g'' a]
   }
 @end lilypond
   \context Staff {
     r4 [r8 g'' a]
   }
 @end lilypond
+@end quotation
 
 
+Similarly, for beams over bar lines:
 
 
-Control number of beams...
+@quotation
+@lilypond[fragment,relative,verbatim]
+  \context Staff {
+    a''8 r a2 r8 [a a]
+  }
+@end lilypond
+@end quotation
+
+If you have specific wishes for the number of beams, you can fully
+control the number of beams through the properties
+@code{Voice.stemLeftBeamCount}@indexcode{stemLeftBeamCount};
 
 
-@lilypond[fragment,relative,verbatim,center]
+@quotation
+@lilypond[fragment,relative,verbatim]
   \context Staff {
     [f'8 r16 f g a]
     [f8 r16 \property Voice.stemLeftBeamCount = #1 f g a]
   }
 @end lilypond
   \context Staff {
     [f'8 r16 f g a]
     [f8 r16 \property Voice.stemLeftBeamCount = #1 f g a]
   }
 @end lilypond
+@end quotation
 
 
-@lilypond[fragment,relative,verbatim,center]
+and @code{Voice.stemRightBeamCount}@indexcode{stemRightBeamCount}:
+@quotation
+@lilypond[fragment,relative,verbatim]
   f'32 g a b b a g f
 
   \property Voice.autoBeamSettings
   f'32 g a b b a g f
 
   \property Voice.autoBeamSettings
@@ -119,42 +190,57 @@ Control number of beams...
   \property Voice.stemLeftBeamCount = #1 b
   a g f
 @end lilypond
   \property Voice.stemLeftBeamCount = #1 b
   a g f
 @end lilypond
+@end quotation
 
 
-Don't extend to middle line esp. for grace
+Conventionally, stems extend to the middle staff line, and thus so do
+beams.  The extending of the stems can be controlled through 
+@code{Voice.Stem}'s grob-property
+@code{no-stem-extend}@indexcode{no-stem-extend}:
 
 
-@lilypond[fragment,relative,verbatim,center]
+@quotation
+@lilypond[fragment,relative,verbatim]
   \grace a'8 a4
   \property Voice.Stem \set #'no-stem-extend = ##t
   \grace a'8 a4
   \property Voice.Stem \set #'no-stem-extend = ##t
-  \grace g8 g4
+  \grace g8 g4 [g8 g]
 @end lilypond
 @end lilypond
-  
-Beam slope (height)
+@end quotation
 
 
-Horizontal beam
+The beam symbol can be tweaked through @code{Voice.Beam}'s
+grob-properties @code{height-hs} and @code{y-position-hs}.
 
 
-@lilypond[fragment,relative,verbatim,center]
+Set @code{height-hs} to zero, to get horizontal beams:
+
+@quotation
+@lilypond[fragment,relative,verbatim]
   \property Voice.Beam \set #'direction = #1
   \property Voice.Beam \set #'height-hs = #0
   [a''8 e' d c]
 @end lilypond
   \property Voice.Beam \set #'direction = #1
   \property Voice.Beam \set #'height-hs = #0
   [a''8 e' d c]
 @end lilypond
+@end quotation
 
 
-beam start-y beam-height
+Both are in half spaces.  Here's how you'd specify a weird looking beam
+that instead of beaing horizontal, falls two staff spaces (ie, four half
+spaces):
 
 
-Weird beam
-@lilypond[fragment,relative,verbatim,center]
+@quotation
+@lilypond[fragment,relative,verbatim]
   \property Voice.Beam \set #'y-position-hs = #4
   \property Voice.Beam \set #'height-hs = #-4
   [c'8 c] 
 @end lilypond
   \property Voice.Beam \set #'y-position-hs = #4
   \property Voice.Beam \set #'height-hs = #-4
   [c'8 c] 
 @end lilypond
+@end quotation
 
 
+The direction of a perfectly centred beams can be
+controlled through @code{Voice.Beam}'s grob-property
+@code{default-neutral-direction}@indexcode{default-neutral-direction}
 
 
-Like stem...
-
-@lilypond[fragment,relative,verbatim,center]
+@quotation
+@lilypond[fragment,relative,verbatim]
   [b''8 b]
   \property Voice.Beam \set #'default-neutral-direction = #-1
   [b b]
 @end lilypond
   [b''8 b]
   \property Voice.Beam \set #'default-neutral-direction = #-1
   [b b]
 @end lilypond
+@end quotation
 
 There are several ways to calculate the direction of a beam.
 
 
 There are several ways to calculate the direction of a beam.
 
@@ -175,17 +261,21 @@ mean centre distance of all notes
 mean centre distance weighted per note
 @end table
 
 mean centre distance weighted per note
 @end table
 
-You can spot the difference of these settings quite easily from these simple examples:
+You can spot the differences of these settings from these simple
+examples:
 
 
-@lilypond[fragment,relative,verbatim,center]
+@quotation
+@lilypond[fragment,relative,verbatim]
   [d''8 a]
   \property Voice.Beam \set #'dir-function = #beam-dir-mean
   [d a] 
   \property Voice.Beam \set #'dir-function = #beam-dir-median
   [d a]
 @end lilypond
   [d''8 a]
   \property Voice.Beam \set #'dir-function = #beam-dir-mean
   [d a] 
   \property Voice.Beam \set #'dir-function = #beam-dir-median
   [d a]
 @end lilypond
-    
-@lilypond[fragment,relative,verbatim,center]
+@end quotation
+
+@quotation    
+@lilypond[fragment,relative,verbatim]
   \time 3/8;
   [d''8 a a]
   \property Voice.Beam \set #'dir-function = #beam-dir-mean
   \time 3/8;
   [d''8 a a]
   \property Voice.Beam \set #'dir-function = #beam-dir-mean
@@ -193,13 +283,25 @@ You can spot the difference of these settings quite easily from these simple exa
   \property Voice.Beam \set #'dir-function = #beam-dir-median
   [d a a] 
 @end lilypond
   \property Voice.Beam \set #'dir-function = #beam-dir-median
   [d a a] 
 @end lilypond
+@end quotation
+
+These beam direction functions are defined in @file{scm/beam.scm}.  If
+your favourite algorithm isn't one of these, you can hook up your own.
+
 
 
 @node Slur attachments
 @section Slur attachments
 
 
 
 @node Slur attachments
 @section Slur attachments
 
-Override attachments...
-@lilypond[fragment,relative,verbatim,center]
+The ending of a slur should whenever possible be attached to a note
+head.  Only in some instances where beams are involved, LilyPond may
+attach a slur to a stem end.  In some cases, you may want to override
+LilyPond's decision, eg to attach the slur to the stem end.  This can be
+done through @code{Voice.Slur}'s grob-property @code{attachment}:
+@c FIXME: make @ref{} to backend doco
+
+@quotation
+@lilypond[fragment,relative,verbatim]
   \property Voice.Slur \set #'direction = #1
   \property Voice.Stem \set #'length = #5.5
   g''8(g)g4
   \property Voice.Slur \set #'direction = #1
   \property Voice.Stem \set #'length = #5.5
   g''8(g)g4
@@ -208,26 +310,22 @@ Override attachments...
   g8(g)g4
   g4(g8)g
 @end lilypond
   g8(g)g4
   g4(g8)g
 @end lilypond
+*@end quotation
 
 
-
-Test Before, after
-
-@c Ugh, ugh @multitable is broken in texinfo-4.0
-@c Fixed in 4.0.jcn3
-@c We'll have to postpone this before/after representation until
-@c jcn3 is rolled into texinfo...
+Trying Before | After example...
+@c Fix rolled into 4.0a prerelease
 
 @multitable @columnfractions .40 .40
 @item
 @noindent
 
 @multitable @columnfractions .40 .40
 @item
 @noindent
-@lilypond[fragment,relative,verbatim,center]
+@lilypond[fragment,relative,verbatim]
 \property Voice.Slur
   \set #'direction = #1
 g''8(g)g4
 g4(g8)g
 @end lilypond
 @tab
 \property Voice.Slur
   \set #'direction = #1
 g''8(g)g4
 g4(g8)g
 @end lilypond
 @tab
-@lilypond[fragment,relative,verbatim,center]
+@lilypond[fragment,relative,verbatim]
 \property Voice.Slur
   \set #'direction = #1
 \property Voice.Stem
 \property Voice.Slur
   \set #'direction = #1
 \property Voice.Stem
@@ -239,26 +337,41 @@ g4(g8)g
 @end lilypond
 @end multitable
 
 @end lilypond
 @end multitable
 
-        
-Ophee slurs...
-@lilypond[fragment,relative,verbatim,center]
+
+Similarly, slurs can be attached to note heads even when beams are
+involved (aka Ophee slurs):
+
+@quotation
+@lilypond[fragment,relative,verbatim]
   \property Voice.Slur \set #'direction = #1
   \property Voice.Slur \set #'attachment = #'(head . head)
   g''16()g()g()g()d'()d()d()d
 @end lilypond
   \property Voice.Slur \set #'direction = #1
   \property Voice.Slur \set #'attachment = #'(head . head)
   g''16()g()g()g()d'()d()d()d
 @end lilypond
+@end quotation
 
 
+If a slur would strike through a stem or beam, LilyPond will move the
+slur away vertically (upward or downward).  In some cases, this may
+cause ugly slurs that you may want to correct:
 
 
-Steep slur correct...
-@lilypond[fragment,relative,verbatim,center]
+@quotation
+@lilypond[fragment,relative,verbatim]
   \property Voice.Stem \set #'direction = #1
   \property Voice.Slur \set #'direction = #1
   d'32( d'4 )d8..
   \property Voice.Slur \set #'attachment = #'(stem . stem)
   d,32( d'4 )d8..
 @end lilypond
   \property Voice.Stem \set #'direction = #1
   \property Voice.Slur \set #'direction = #1
   d'32( d'4 )d8..
   \property Voice.Slur \set #'attachment = #'(stem . stem)
   d,32( d'4 )d8..
 @end lilypond
+@end quotation
 
 
-Ugly slurs...
-@lilypond[verbatim,center]
+LilyPond will increase the curvature of a slur trying to stay free of
+note heads and stems.  However, if the curvature would increase too much,
+the slur will be reverted to its default shape.  This decision is based
+on @code{Voice.Slur}'s grob-property @code{beautiful} value.  In some
+cases, you may find ugly slurs beautiful, and tell LilyPond so by
+increasing the @code{beautiful} value:
+
+@quotation
+@lilypond[verbatim]
 \score {
   \notes \context PianoStaff <
     \time 6/4;
 \score {
   \notes \context PianoStaff <
     \time 6/4;
@@ -288,13 +401,14 @@ Ugly slurs...
   }
 }
 @end lilypond
   }
 }
 @end lilypond
+@end quotation
 
 
 @node Text spanner
 @section Text spanner
 
 Have crescendo set a text spanner iso hairpin
 
 
 @node Text spanner
 @section Text spanner
 
 Have crescendo set a text spanner iso hairpin
-@lilypond[fragment,relative,verbatim,center]
+@lilypond[fragment,relative,verbatim]
   \context Voice {
     \property Voice.crescendoText = "cresc."
     \property Voice.crescendoSpanner = #'dashed-line
   \context Voice {
     \property Voice.crescendoText = "cresc."
     \property Voice.crescendoSpanner = #'dashed-line
@@ -304,7 +418,7 @@ Have crescendo set a text spanner iso hairpin
 
 @subsection Ottava
 
 
 @subsection Ottava
 
-@lilypond[fragment,relative,verbatim,center]
+@lilypond[fragment,relative,verbatim]
   a'''' b c a
   \property Voice.TextSpanner \set #'type = #'dotted-line
   \property Voice.TextSpanner \set #'edge-height = #'(0 . 1.5)
   a'''' b c a
   \property Voice.TextSpanner \set #'type = #'dotted-line
   \property Voice.TextSpanner \set #'edge-height = #'(0 . 1.5)
@@ -319,7 +433,7 @@ Have crescendo set a text spanner iso hairpin
 @section Engraver hacking
 
 No time signature, no barlines... 
 @section Engraver hacking
 
 No time signature, no barlines... 
-@lilypond[verbatim,center]
+@lilypond[verbatim]
 \score {
   \notes \relative c'' {
     a b c d
 \score {
   \notes \relative c'' {
     a b c d
@@ -337,7 +451,7 @@ No time signature, no barlines...
 @end lilypond
 
 No staff, no clef, squash pitches
 @end lilypond
 
 No staff, no clef, squash pitches
-@lilypond[verbatim,center]
+@lilypond[verbatim]
 \score {
   \notes { c4 c4 c8 c8 }
   \paper {
 \score {
   \notes { c4 c4 c8 c8 }
   \paper {
@@ -356,7 +470,7 @@ No staff, no clef, squash pitches
 @node Part combiner
 @section Part combiner
 
 @node Part combiner
 @section Part combiner
 
-@lilypond[verbatim,center]
+@lilypond[verbatim]
 \score{
   \context Staff = flauti <
     \time 4/4;
 \score{
   \context Staff = flauti <
     \time 4/4;
@@ -394,7 +508,9 @@ No staff, no clef, squash pitches
 
 Metrome hack...
 
 
 Metrome hack...
 
-@lilypond[verbatim,center]
+
+
+@lilypond[verbatim]
 #(define note '(rows (music "noteheads-2" ((kern . -0.1) "flags-stem"))))
 #(define eight-note `(rows ,note ((kern . -0.1) (music ((raise . 3.5) "flags-u3")))))
 #(define dotted-eight-note `(rows ,eight-note (music "dots-dot")))
 #(define note '(rows (music "noteheads-2" ((kern . -0.1) "flags-stem"))))
 #(define eight-note `(rows ,note ((kern . -0.1) (music ((raise . 3.5) "flags-u3")))))
 #(define dotted-eight-note `(rows ,eight-note (music "dots-dot")))
@@ -417,14 +533,14 @@ Metrome hack...
 @node Output property
 @section Output property
 
 @node Output property
 @section Output property
 
-@lilypond[fragment,relative,verbatim,center]
+@lilypond[fragment,relative,verbatim]
     \outputproperty #(make-type-checker 'note-head-interface) 
       #'extra-offset = #'(2 . 3)
     c''2 c
 @end lilypond
 
 Don't move the finger 2, only text "m.d." ...
     \outputproperty #(make-type-checker 'note-head-interface) 
       #'extra-offset = #'(2 . 3)
     c''2 c
 @end lilypond
 
 Don't move the finger 2, only text "m.d." ...
-@lilypond[verbatim,center]
+@lilypond[verbatim]
 #(define (make-text-checker text)
    (lambda (grob) (equal? text (ly-get-elt-property grob 'text))))
 
 #(define (make-text-checker text)
    (lambda (grob) (equal? text (ly-get-elt-property grob 'text))))
 
@@ -446,7 +562,7 @@ Don't move the finger 2, only text "m.d." ...
 @node Apply hacking
 @section Apply hacking
 
 @node Apply hacking
 @section Apply hacking
 
-@lilypond[verbatim,center]
+@lilypond[verbatim]
 music = \notes { c'4 d'4( e'4 f'4 }
 
 #(define (reverse-music music)
 music = \notes { c'4 d'4( e'4 f'4 }
 
 #(define (reverse-music music)
@@ -501,7 +617,7 @@ on Lily, I'd be very rich :)
 @end example
 
 
 @end example
 
 
-@lilypond[verbatim,center]
+@lilypond[verbatim]
 #(define  (unhair-pitch p)
   (let* ((o (pitch-octave p))
          (a (pitch-alteration p))
 #(define  (unhair-pitch p)
   (let* ((o (pitch-octave p))
          (a (pitch-alteration p))
@@ -572,7 +688,7 @@ music = \notes \relative c' { c4 d  e f g a b  c }
 
 @node Embedded TeX
 @section Embedded TeX
 
 @node Embedded TeX
 @section Embedded TeX
-@lilypond[fragment,relative,verbatim,center]
+@lilypond[fragment,relative,verbatim]
   a''^"3 $\\times$ \\`a deux"
 @end lilypond
 
   a''^"3 $\\times$ \\`a deux"
 @end lilypond
 
@@ -583,7 +699,7 @@ Arbitrary lines and curves not supported...
 
 [TODO:] Make a direct postscript command?
 
 
 [TODO:] Make a direct postscript command?
 
-@lilypond[verbatim,center]
+@lilypond[verbatim]
 \score {
   \notes \relative c'' {
     a-#"\\embeddedps{3 4 moveto 5 3 rlineto stroke}"
 \score {
   \notes \relative c'' {
     a-#"\\embeddedps{3 4 moveto 5 3 rlineto stroke}"
@@ -596,6 +712,13 @@ Arbitrary lines and curves not supported...
 }
 @end lilypond
 
 }
 @end lilypond
 
+
+@node Index
+@section Checking Feature index
+
+@printindex cp
+
+
 @bye
 
 
 @bye
 
 
index 13a40742be7b8bdb54cd8937a4135832007e3efe..60f456010f3296ec5872a0e025d46a94a079e82c 100644 (file)
@@ -1,5 +1,4 @@
-
-@node Invoking LilyPond, , , Top
+@node Invoking LilyPond
 @chapter Invoking LilyPond
 @cindex Invoking LilyPond
 
 @chapter Invoking LilyPond
 @cindex Invoking LilyPond
 
index 125303f3ef3c803353eda79cecd1699b8486116e..fdcb19b52edbd88d87baae5216cce15fdbdd7024 100644 (file)
@@ -72,7 +72,7 @@ translation approved by the Free Software Foundation.
 @end tex
 
 @contents
 @end tex
 
 @contents
-@node Top, , , (dir)
+@node Top
 @top
 
 
 @top
 
 
index e2d9cfbd08702b896520914749cc55094de06a5e..20c2d91e7032f604290e62480e1feddc9d5b2221 100644 (file)
@@ -85,9 +85,12 @@ than the names being similar :-)"
 
 @end ignore
 
 
 @end ignore
 
-@node Top, , , (dir)
-@chapter GNU LilyPond --- The music typesetter
+@ifnottex
+@node Top
+@top
+@end ifnottex
 
 
+@chapter GNU LilyPond --- The music typesetter
 
 LilyPond produces sheet music from input files.  This document describes
 how to use LilyPond.
 
 LilyPond produces sheet music from input files.  This document describes
 how to use LilyPond.
@@ -105,11 +108,10 @@ this and other documentation.
 * Invoking LilyPond::              Operation.
 * Reporting Bugs::                 Where to report bugs.
 * Reference Manual::               Reference Manual.
 * Invoking LilyPond::              Operation.
 * Reporting Bugs::                 Where to report bugs.
 * Reference Manual::               Reference Manual.
-@c Move to Reference Manual?
+* Internals::                      Internals
 * Internals:(lilypond-internals).  Auto generated detailed documentation.
 * Internals:(lilypond-internals).  Auto generated detailed documentation.
-* convert-ly::                     Upgrading input files.
-* Internals::
 * Development::                    Some hints on developing for LilyPond.
 * Development::                    Some hints on developing for LilyPond.
+* convert-ly::                     Upgrading input files.
 * Index::                          Unified index.
 @end menu
 
 * Index::                          Unified index.
 @end menu
 
@@ -138,7 +140,7 @@ this and other documentation.
 
 @include development.itexi
 
 
 @include development.itexi
 
-@node Index, , , Top
+@node Index
 @unnumbered Index
 
 @printindex cp
 @unnumbered Index
 
 @printindex cp
index ff5b7353d60217803dccd582a7064908ebbbbdf4..4c9459fb5a54bfbea0b1c1a4215e27adad8f1242 100644 (file)
@@ -1,3 +1,3 @@
-@node More information, , , Top
+@node More information
 @section Resources
 
 @section Resources
 
index 1594b6eade45ab895a7379bd0d6a21e551997626..102577880d5aebfa08dff96f4f49b67e6aabc467 100644 (file)
@@ -1,4 +1,5 @@
-@node Properties, , , Reference Manual
+@node Properties
+@section Properties
 
 Properties are Scheme values. Most of them are in the generated documentation, but some MIDI properties are not. Here is their documentation
 
 
 Properties are Scheme values. Most of them are in the generated documentation, but some MIDI properties are not. Here is their documentation
 
index 65ef03d061294751f7e70af0bc9882e7ec25b501..b463a79c61af15188a163a3708552514facf3ccf 100644 (file)
@@ -6,7 +6,8 @@
 @c - Add some words about Guile.  /MB
 @c - Fix indexing (keyindex) so it doesn't add line breaks  /MB
 
 @c - Add some words about Guile.  /MB
 @c - Fix indexing (keyindex) so it doesn't add line breaks  /MB
 
-@node Reference Manual, ,  , Top
+@c ugh: because of @include, we need to fill in these nodes
+@node Reference Manual
 @chapter Reference Manual
 
 @menu
 @chapter Reference Manual
 
 @menu
@@ -47,7 +48,7 @@
 
 
 
 
 
 
-@node Overview, , , Reference Manual
+@node Overview
 @section Overview
 
 This document@footnote{This document has been revised for LilyPond 1.2.}
 @section Overview
 
 This document@footnote{This document has been revised for LilyPond 1.2.}
@@ -68,7 +69,7 @@ can enter and edit them in manageable chunks.
 
 
 
 
 
 
-@node Top level, , , Reference Manual
+@node Top level
 @section Top level
 
 @cindex top level
 @section Top level
 
 @cindex top level
@@ -108,8 +109,8 @@ metre, arranger, piece and tagline.
 
 It is customary to put the @code{\header} at the top of the file.
 
 
 It is customary to put the @code{\header} at the top of the file.
 
-
-@node Pitch names, , ,  Reference Manual
+@node Pitch names
+@section Pitch names
 
 Note names and chord modifiers can be customised for nationalities.
 languages and conventions.  The syntax is as follows.
 
 Note names and chord modifiers can be customised for nationalities.
 languages and conventions.  The syntax is as follows.
@@ -133,7 +134,7 @@ forbidden after top level assignments.
 
 
 
 
 
 
-@node Lexical conventions, , ,  Reference Manual
+@node Lexical conventions
 @section Lexical conventions
 
 @cindex lexical conventions
 @section Lexical conventions
 
 @cindex lexical conventions
@@ -266,10 +267,9 @@ This is used to detect invalid input, and to aid
 @code{convert-ly}, a tool that automatically upgrades input files.
 
 
 @code{convert-ly}, a tool that automatically upgrades input files.
 
 
-
-@cindex other languages
-
-@node Other languages, , ,  Reference Manual
+@node Other languages
+@section Other languages
+@cindex Other languages
 
 Note name definitions have been provided in various languages. 
 Simply include the language specific init file.  For example:
 
 Note name definitions have been provided in various languages. 
 Simply include the language specific init file.  For example:
@@ -290,11 +290,11 @@ catalan.ly     do  re  mi  fa  sol la  sib si  -d/-s       -b
 Pitch names can be redefined using the @code{\pitchnames} command, see
 @ref{Pitch names}.
 
 Pitch names can be redefined using the @code{\pitchnames} command, see
 @ref{Pitch names}.
 
-@cindex Lexical Modes
-
+@node Lexical modes
+@section Lexical modes
+@cindex Lexical modes
 @cindex modes
 
 @cindex modes
 
-@node Lexical modes, , ,  Reference Manual
 
 To simplify entering notes, lyrics, and chords, @emph{Lilypond} has three
 special input modes on top of the default mode.  In each mode, words
 
 To simplify entering notes, lyrics, and chords, @emph{Lilypond} has three
 special input modes on top of the default mode.  In each mode, words
@@ -382,7 +382,7 @@ _ _ _ _         % 4 words, each one a space
 
 [todo: include short table showign differences] 
 
 
 [todo: include short table showign differences] 
 
-@node Types, , ,  Reference Manual
+@node Types
 @section Types
 
 @cindex  Identifiers
 @section Types
 
 @cindex  Identifiers
@@ -467,7 +467,7 @@ copied.  For this reason, an identifier reference must always be the
 @end example
 
 
 @end example
 
 
-@node Music expressions, , ,  Reference Manual
+@node Music expressions
 @section Music expressions
 
 @cindex music expressions
 @section Music expressions
 
 @cindex music expressions
@@ -494,7 +494,7 @@ discussed in subsection @ref{Compound music expressions}.
 
 
 
 
 
 
-@node Atomic music expressions, , ,  Reference Manual
+@node Atomic music expressions
 @section Atomic music expressions
 
 
 @section Atomic music expressions
 
 
@@ -536,9 +536,9 @@ In Note, Chord, and Lyrics mode, durations may be designated by
 numbers and dots.  
 
 
 numbers and dots.  
 
 
-@node Note specification, , ,  Reference Manual
-
-@cindex note specification
+@node Note specification
+@section Note specification
+@cindex Note specification
 
 @cindex pitches
 
 
 @cindex pitches
 
@@ -813,7 +813,8 @@ Prints a mark over or under the staff.  You must add
 @code{Mark_engraver}@indexcode{Mark_engraver} to the Score context for
 this to work.
 
 @code{Mark_engraver}@indexcode{Mark_engraver} to the Score context for
 this to work.
 
-@node barlines, , ,  Reference Manual
+@node barlines
+@section barlines
 
 @example
   \bar@keyindex{bar} @var{bartype};
 
 @example
   \bar@keyindex{bar} @var{bartype};
@@ -918,10 +919,10 @@ notes printed.  It works in Note Mode or Lyrics Mode.  In Note mode,
 this has the same effect as the space rest `@code{s}'.
 
 
 this has the same effect as the space rest `@code{s}'.
 
 
+@node Manual beams
+@section Manual beams
 @cindex beams
 
 @cindex beams
 
-@node Manual beams, , ,  Reference Manual
-
 A beam is specified by surrounding the beamed notes with brackets
 `@code{[}@indexcode{[}' and `@code{]}@indexcode{]}'.  
 
 A beam is specified by surrounding the beamed notes with brackets
 `@code{[}@indexcode{[}' and `@code{]}@indexcode{]}'.  
 
@@ -1177,11 +1178,10 @@ You can attach a (general) span request to a note using
 The slur syntax with parentheses is a shorthand for this.
 
 
 The slur syntax with parentheses is a shorthand for this.
 
 
-
+@node stem tremolo
+@section stem tremolo
 @cindex tremolo marks
 
 @cindex tremolo marks
 
-@node stem tremolo, , ,  Reference Manual
-
 Tremolo marks can be printed on a single note by adding
 `@code{:}[@var{length}]' after the note.  The length must be at
 least 8.  A @var{length} value of 8 gives one line across
 Tremolo marks can be printed on a single note by adding
 `@code{:}[@var{length}]' after the note.  The length must be at
 least 8.  A @var{length} value of 8 gives one line across
@@ -1195,7 +1195,7 @@ no last value.
 
 
 
 
 
 
-@node Compound music expressions, , ,  Reference Manual
+@node Compound music expressions
 @section Compound music expressions
 
 @cindex compound music expressions
 @section Compound music expressions
 
 @cindex compound music expressions
@@ -1305,9 +1305,10 @@ a Voice context:
 
 
 
 
 
 
-@cindex relative pitch specification
 
 
-@node relative, , , Reference Manual
+@node relative
+@section relative
+@cindex relative pitch specification
 
 It is easy to get confused by octave changing marks and accidentally
 putting a pitch in the wrong octave.  A much better way of entering a
 
 It is easy to get confused by octave changing marks and accidentally
 putting a pitch in the wrong octave.  A much better way of entering a
@@ -1546,9 +1547,10 @@ error, since there will be no main note to attach the grace notes to.
 
 
 
 
 
 
+@node Repeats
+@section Repeats
 @cindex repeats
 
 @cindex repeats
 
-@node Repeats, , , Reference Manual
 
 In order to specify repeats, use the @code{\repeat}@keyindex{repeat}
 keyword.  Since repeats look and sound differently when played or
 
 In order to specify repeats, use the @code{\repeat}@keyindex{repeat}
 keyword.  Since repeats look and sound differently when played or
@@ -1665,9 +1667,10 @@ bars will not.
 
 
 
 
 
 
-@cindex transposition of pitches
 
 
-@node transpose, , , Reference Manual
+@node transpose
+@section transpose
+@cindex transposition of pitches
 
 A music expression can be transposed with
 @code{\transpose}@keyindex{transpose}.  The syntax is
 
 A music expression can be transposed with
 @code{\transpose}@keyindex{transpose}.  The syntax is
@@ -1763,7 +1766,7 @@ lyrics for @var{musicexpr2}.
 
 
 
 
 
 
-@node Ambiguities, , ,  Reference Manual
+@node Ambiguities
 @section Ambiguities
 
 @cindex ambiguities
 @section Ambiguities
 
 @cindex ambiguities
@@ -1813,11 +1816,12 @@ foo = -6
 
 
 
 
 
 
-@node Notation conversion specifics, , ,  Reference Manual
+@node Notation conversion specifics
 @section Notation conversion specifics
 
 
 @section Notation conversion specifics
 
 
-@node Automatic Beaming, , ,  Reference Manual
+@node Automatic Beaming
+@section Automatic Beaming
 @cindex automatic beam generation
 @cindex autobeam
 
 @cindex automatic beam generation
 @cindex autobeam
 
@@ -1825,7 +1829,7 @@ foo = -6
 
 By default, LilyPond will generate beams automatically.  This feature
 can be disabled by setting the
 
 By default, LilyPond will generate beams automatically.  This feature
 can be disabled by setting the
-@code{Voice.beamAuto}@indexcode{Voice.beamAuto} property to @code{#f}.
+@code{Voice.beamAuto}@indexcode{Voice.beamAuto} property to false.
 It can be overridden for specific cases by specifying explicit beams.
 
 
 It can be overridden for specific cases by specifying explicit beams.
 
 
@@ -1866,7 +1870,8 @@ For example, to specify beam endings for beams that contain 32nd notes,
 you would use @code{(end * * 1 32)}.
 
 
 you would use @code{(end * * 1 32)}.
 
 
-@node Chord Names, , ,  Reference Manual
+@node Chord Names
+@section Chord Names
 @cindex chord names
 @cindex chords
 
 @cindex chord names
 @cindex chords
 
@@ -1895,7 +1900,7 @@ scheme = \notes {
 
 
 You can make the chord changes stand out more by setting property
 
 
 You can make the chord changes stand out more by setting property
-@code{ChordNames.chordChanges} to @code{#t}.  This will only display
+@code{ChordNames.chordChanges} to true.  This will only display
 chord names when there's a change in the chords scheme, but always
 display the chord name after a line break:
 
 chord names when there's a change in the chords scheme, but always
 display the chord name after a line break:
 
@@ -2079,11 +2084,12 @@ scheme = \chords {
 @end quotation
 
 
 @end quotation
 
 
+@node lyricprint
+@section lyricprint
 @cindex lyrics
 
 @cindex printing!lyrics
 
 @cindex lyrics
 
 @cindex printing!lyrics
 
-@node lyricprint, , ,  Reference Manual
 
 Lyric syllables must be interpreted within a @code{Lyrics} context
 
 
 Lyric syllables must be interpreted within a @code{Lyrics} context
 
@@ -2163,7 +2169,7 @@ For example:
 
 
 
 
 
 
-@node Notation Contexts, , ,  Reference Manual
+@node Notation Contexts
 @section Notation Contexts
 
 @cindex notation contexts
 @section Notation Contexts
 
 @cindex notation contexts
@@ -2321,7 +2327,8 @@ called @emph{performers}.
 
 @mbinclude properties.itely
 
 
 @mbinclude properties.itely
 
-@node Page layout, , ,  Reference Manual
+@node Page layout
+@section Page layout
 
 @subsection Paper block
 
 
 @subsection Paper block
 
@@ -2391,7 +2398,11 @@ The paper block has some variables you may want to use or change:
   
   @item @code{linewidth}@indexcode{linewidth}  
     Sets the width of the lines.  If set to -1.0, a single
   
   @item @code{linewidth}@indexcode{linewidth}  
     Sets the width of the lines.  If set to -1.0, a single
-    unjustified line is produced.
+    unjustified line is produced.  If you use this variable, you
+    probably want to define it in staff spaces, ie
+    @example
+        linewidth = 30 * \staffspace;
+    @end example
 
   @item @code{textheight}@indexcode{textheight}  
     Sets the total height of the music on each page. Only used by
 
   @item @code{textheight}@indexcode{textheight}  
     Sets the total height of the music on each page. Only used by
@@ -2486,7 +2497,8 @@ The file "paper16.ly" will now include a file named @file{a4.ly}, which
 will set the paper variables @code{hsize} and @code{vsize} (used by
 @code{ly2dvi})
 
 will set the paper variables @code{hsize} and @code{vsize} (used by
 @code{ly2dvi})
 
-@node contextdefs, , ,  Reference Manual
+@node contextdefs
+@section contextdefs
 
 @cindex context definition
 @cindex translator definition
 
 @cindex context definition
 @cindex translator definition
@@ -2660,7 +2672,7 @@ translator:
 @end quotation
 
       
 @end quotation
 
       
-@node Sound output, , ,  Reference Manual
+@node Sound output
 @section Sound output
 
 The MIDI block is analogous to the paper block, but it is somewhat
 @section Sound output
 
 The MIDI block is analogous to the paper block, but it is somewhat
@@ -2686,7 +2698,8 @@ The contexts for MIDI output are defined in @file{ly/performer.ly}.
 
 @cindex MIDI instrument names
 
 
 @cindex MIDI instrument names
 
-@node midilist, , , Reference Manual
+@node midilist
+@section midilist
 
 The MIDI instrument name is set by the
 @code{Staff.midiInstrument}@indexcode{Staff.midiInstrument} property or,
 
 The MIDI instrument name is set by the
 @code{Staff.midiInstrument}@indexcode{Staff.midiInstrument} property or,
@@ -2748,7 +2761,7 @@ piano.
 
 
 
 
 
 
-@node Pre-defined Identifiers, , ,  Reference Manual
+@node Pre-defined Identifiers
 
 @section Pre-defined Identifiers
 
 
 @section Pre-defined Identifiers
 
@@ -2780,7 +2793,7 @@ set different shift values.
     Allow stems, beams, and slurs to point either upwards or
     downwards, decided automatically by LilyPond.
 
     Allow stems, beams, and slurs to point either upwards or
     downwards, decided automatically by LilyPond.
 
-  @item @code{\stemdown}@keyindex{stemdown}  
+  @item @code{\stemDown}@keyindex{stemDown}  
     Force stems, beams, and slurs to point down.
 
   @item @code{\stemUp}@keyindex{stemUp}  
     Force stems, beams, and slurs to point down.
 
   @item @code{\stemUp}@keyindex{stemUp}  
index 27a95c4a1a52365293ff1dc3f48ad79e580d7169..489c11463193588e31bad13c537c02214060ddc1 100644 (file)
@@ -1,6 +1,7 @@
 @c -*-texinfo-*-
 
 @c -*-texinfo-*-
 
-@node Tutorial, , , Top
+@c ugh: because of @include, we need to fill in these nodes?
+@node Tutorial
 @chapter Tutorial
 
 @menu
 @chapter Tutorial
 
 @menu
@@ -11,7 +12,7 @@
 * end of tutorial::                The end
 @end menu
 
 * end of tutorial::                The end
 @end menu
 
-@node Introduction,  , , Tutorial
+@node Introduction
 @section Introduction
 
   
 @section Introduction
 
   
@@ -30,7 +31,7 @@ subdirectory @file{input/tutorial/}.  It is recommended that you
 experiment with writing Lilypond input yourself, to get a feel for
 how LilyPond behaves.
 
 experiment with writing Lilypond input yourself, to get a feel for
 how LilyPond behaves.
 
-@node The first tune,  , , Tutorial
+@node The first tune
 @section The first tune
 
 
 @section The first tune
 
 
@@ -336,7 +337,7 @@ symbols and their placement is @emph{generated} from a high-level musical
 description.  In other words,  LilyPond would be best
 described by `music compiler' or `music to notation compiler'.
 
 description.  In other words,  LilyPond would be best
 described by `music compiler' or `music to notation compiler'.
 
-@node Lyrics and chords, , , Tutorial
+@node Lyrics and chords
 @section Lyrics and chords
 
 In this section we show how to typeset a song of unknown
 @section Lyrics and chords
 
 In this section we show how to typeset a song of unknown
@@ -699,7 +700,7 @@ will be set in two lines.
 @end example 
 End the score block.
 
 @end example 
 End the score block.
 
-@node Piano music, , , Tutorial
+@node Piano music
 @section Piano music
 
 Our third subject is a piece of piano music.  The fragment in the input
 @section Piano music
 
 Our third subject is a piece of piano music.  The fragment in the input
@@ -975,7 +976,7 @@ parts.
 
 [TODO: demonstrate Hara-Kiri with scores and  part extraction.]
 
 
 [TODO: demonstrate Hara-Kiri with scores and  part extraction.]
 
-@node  end of tutorial, , , Tutorial
+@node  end of tutorial
 @section The end        
          
 That's all folks.  From here, you can either try fiddling with input
 @section The end        
          
 That's all folks.  From here, you can either try fiddling with input
diff --git a/VERSION b/VERSION
index 61b3ce31f505e676bc950232690006f487801431..481a6c85af0def3ac1bd95e8adfcb50eb51e51ad 100644 (file)
--- a/VERSION
+++ b/VERSION
@@ -2,7 +2,7 @@ PACKAGE_NAME=LilyPond
 MAJOR_VERSION=1
 MINOR_VERSION=3
 PATCH_LEVEL=121
 MAJOR_VERSION=1
 MINOR_VERSION=3
 PATCH_LEVEL=121
-MY_PATCH_LEVEL=jcn1
+MY_PATCH_LEVEL=jcn2
 
 # use the above to send patches: MY_PATCH_LEVEL is always empty for a
 # released version.
 
 # use the above to send patches: MY_PATCH_LEVEL is always empty for a
 # released version.
diff --git a/input/test/explicit.ly b/input/test/explicit.ly
new file mode 100644 (file)
index 0000000..83ffd57
--- /dev/null
@@ -0,0 +1,10 @@
+\header{
+texidoc="Explicit pitches and durations.";
+}
+\score {
+  \notes {
+    \pitch #(make-pitch 0 0 0) \duration #(make-duration 1 0)
+    \pitch #(make-pitch 1 1 1) \duration #(make-duration 2 0)
+
+  }
+}
\ No newline at end of file
index cc44db4def30e2b34e4309be643ca6d4bbd79be5..9ea1ec5e20bcb903cb4b355d9b979d587674564b 100644 (file)
@@ -129,7 +129,6 @@ Duration::less_p (SCM p1, SCM p2)
     return SCM_BOOL_F;
 }
 
     return SCM_BOOL_F;
 }
 
-
 static SCM
 make_duration (SCM l, SCM d)
 {
 static SCM
 make_duration (SCM l, SCM d)
 {
index 5424b0fa72450c3807a33a473df25d907ae7bcef..763c9e90db31db77dca1734640a5b18034bc61ea 100644 (file)
@@ -56,7 +56,7 @@ static Keyword_ent the_key_tab[]={
   {"lyrics", LYRICS},
   {"key", KEY},
   {"mark", MARK},
   {"lyrics", LYRICS},
   {"key", KEY},
   {"mark", MARK},
-  {"musicalpitch", MUSICAL_PITCH},
+  {"pitch", PITCH},
   {"time", TIME_T},
   {"times", TIMES},
   {"midi", MIDI},
   {"time", TIME_T},
   {"times", TIMES},
   {"midi", MIDI},
index 7366cea832ac4a2b83c15d93a3e1cb75d51d3c55..bbfaf2438a0e1bbb40796afc234d53a2a2a9cb89 100644 (file)
@@ -170,7 +170,7 @@ yylex (YYSTYPE *s,  void * v_l)
 %token MEASURES
 %token MIDI
 %token MM_T
 %token MEASURES
 %token MIDI
 %token MM_T
-%token MUSICAL_PITCH
+%token PITCH
 %token NAME
 %token PITCHNAMES
 %token NOTES
 %token NAME
 %token PITCHNAMES
 %token NOTES
@@ -245,8 +245,8 @@ yylex (YYSTYPE *s,  void * v_l)
        
 %type <reqvec>  pre_requests post_requests
 %type <request> gen_text_def
        
 %type <reqvec>  pre_requests post_requests
 %type <request> gen_text_def
-%type <scm>   steno_musical_pitch musical_pitch absolute_musical_pitch
-%type <scm>   steno_tonic_pitch
+%type <scm>   steno_pitch pitch absolute_pitch
+%type <scm>   explicit_pitch steno_tonic_pitch
 
 %type <scm>    chord_additions chord_subtractions chord_notes chord_step
 %type <music>  chord
 
 %type <scm>    chord_additions chord_subtractions chord_notes chord_step
 %type <music>  chord
@@ -820,7 +820,7 @@ Composite_music:
        | Repeated_music                { $$ = $1; }
        | Simultaneous_music            { $$ = $1; }
        | Sequential_music              { $$ = $1; }
        | Repeated_music                { $$ = $1; }
        | Simultaneous_music            { $$ = $1; }
        | Sequential_music              { $$ = $1; }
-       | TRANSPOSE musical_pitch Music {
+       | TRANSPOSE pitch Music {
                $$ = new Transposed_music (SCM_EOL);
                Music *p = $3;
                Pitch pit = *unsmob_pitch ($2);
                $$ = new Transposed_music (SCM_EOL);
                Music *p = $3;
                Pitch pit = *unsmob_pitch ($2);
@@ -874,7 +874,7 @@ Composite_music:
        ;
 
 relative_music:
        ;
 
 relative_music:
-       RELATIVE absolute_musical_pitch Music {
+       RELATIVE absolute_pitch Music {
                Music * p = $3;
                Pitch pit = *unsmob_pitch ($2);
                $$ = new Relative_octave_music (SCM_EOL);
                Music * p = $3;
                Pitch pit = *unsmob_pitch ($2);
                $$ = new Relative_octave_music (SCM_EOL);
@@ -1297,7 +1297,7 @@ sub_quotes:
        }
        ;
 
        }
        ;
 
-steno_musical_pitch:
+steno_pitch:
        NOTENAME_PITCH  {
                $$ = $1;
        }
        NOTENAME_PITCH  {
                $$ = $1;
        }
@@ -1337,15 +1337,22 @@ steno_tonic_pitch:
        }
        ;
 
        }
        ;
 
-musical_pitch:
-       steno_musical_pitch {
+pitch:
+       steno_pitch {
                $$ = $1;
        }
                $$ = $1;
        }
-       | MUSICAL_PITCH embedded_scm {
-               if (!unsmob_pitch ($2))
+       | explicit_pitch {
+               $$ = $1;
+       }
+       ;
+
+explicit_pitch:
+       PITCH embedded_scm {
+               $$ = $2;
+               if (!unsmob_pitch ($2)) {
                        THIS->parser_error (_f ("Expecting musical-pitch value", 3));
                        THIS->parser_error (_f ("Expecting musical-pitch value", 3));
-                Pitch m;
-               $$ = m.smobbed_copy ();
+                        $$ = Pitch ().smobbed_copy ();
+               }
        }
        ;
 
        }
        ;
 
@@ -1483,8 +1490,8 @@ pre_requests:
        }
        ;
 
        }
        ;
 
-absolute_musical_pitch:
-       steno_musical_pitch     {
+absolute_pitch:
+       steno_pitch     {
                $$ = $1;
        }
        ;
                $$ = $1;
        }
        ;
@@ -1493,6 +1500,9 @@ duration_length:
        steno_duration {
                $$ = $1;
        }
        steno_duration {
                $$ = $1;
        }
+       | explicit_duration {
+               $$ = $1;
+       }       
        | duration_length '*' bare_unsigned {
                $$ = unsmob_duration ($$)->compressed ( $3) .smobbed_copy ();
        }
        | duration_length '*' bare_unsigned {
                $$ = unsmob_duration ($$)->compressed ( $3) .smobbed_copy ();
        }
@@ -1514,6 +1524,9 @@ optional_notemode_duration:
        | entered_notemode_duration {
                $$ = $1;
        }
        | entered_notemode_duration {
                $$ = $1;
        }
+       | explicit_duration {
+               $$ = $1;
+       }       
        ;
 
 steno_duration:
        ;
 
 steno_duration:
@@ -1556,7 +1569,7 @@ tremolo_type:
 
 
 simple_element:
 
 
 simple_element:
-       musical_pitch exclamations questions optional_notemode_duration {
+       pitch exclamations questions optional_notemode_duration {
                if (!THIS->lexer_p_->note_state_b ())
                        THIS->parser_error (_ ("Have to be in Note mode for notes"));
 
                if (!THIS->lexer_p_->note_state_b ())
                        THIS->parser_error (_ ("Have to be in Note mode for notes"));
 
index dc7d3ddaf930a2b02799d0186b06969af0aab8d0..3c1a256a873fcd1cee0864e8a0c1f9579650891b 100644 (file)
--- a/po/de.po
+++ b/po/de.po
@@ -10,7 +10,7 @@ msgstr ""
 "Last-Translator: Erwin Dieterich <bamse@gmx.de>\n"
 "Language-Team: LANGUAGE <de@li.org>\n"
 "MIME-Version: 1.0\n"
 "Last-Translator: Erwin Dieterich <bamse@gmx.de>\n"
 "Language-Team: LANGUAGE <de@li.org>\n"
 "MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=CHARSET\n"
+"Content-Type: text/plain; charset=ISO-8859-1\n"
 "Content-Transfer-Encoding: ENCODING\n"
 
 #: data-file.cc:54
 "Content-Transfer-Encoding: ENCODING\n"
 
 #: data-file.cc:54
index a083e18a439cd254f90b7b437ed99ee3de7a12e6..cc09a30495033f8b58ea9c424327b591ed252f8a 100644 (file)
--- a/po/it.po
+++ b/po/it.po
@@ -6,7 +6,7 @@
 msgid ""
 msgstr ""
 "POT-Creation-Date: 2000-12-17 15:35+0100\n"
 msgid ""
 msgstr ""
 "POT-Creation-Date: 2000-12-17 15:35+0100\n"
-"Content-Type: text/plain; charset=\n"
+"Content-Type: text/plain; charset=ISO-8859-1\n"
 "Date: 1998-05-30 00:17:12+0200\n"
 "From:  <jantien@xs4all.nl>\n"
 "Xgettext-Options: --c++ --default-domain=lilypond --join "
 "Date: 1998-05-30 00:17:12+0200\n"
 "From:  <jantien@xs4all.nl>\n"
 "Xgettext-Options: --c++ --default-domain=lilypond --join "
index 266852ac97b62b42b9bf1c1763f03ba5427a8e7a..10482e6c3a8753cbd2dc1d1047774b4e347956f3 100644 (file)
--- a/po/nl.po
+++ b/po/nl.po
@@ -7,6 +7,7 @@
 # the TP robot wants them like this (I hope).
 # Of course, Han-Wen <hanwen@cs.uu.nl> also was FIRST AUTHOR.
 #
 # the TP robot wants them like this (I hope).
 # Of course, Han-Wen <hanwen@cs.uu.nl> also was FIRST AUTHOR.
 #
+#, fuzzy
 msgid ""
 msgstr ""
 "Project-Id-Version: lilypond 1.3.59\n"
 msgid ""
 msgstr ""
 "Project-Id-Version: lilypond 1.3.59\n"
@@ -15,7 +16,7 @@ msgstr ""
 "Last-Translator: Jan Nieuwenhuizen <janneke@gnu.org>\n"
 "Language-Team: Dutch <nl@li.org>\n"
 "MIME-Version: 1.0\n"
 "Last-Translator: Jan Nieuwenhuizen <janneke@gnu.org>\n"
 "Language-Team: Dutch <nl@li.org>\n"
 "MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=8859-1\n"
+"Content-Type: text/plain; charset=ISO-8859-1\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Date: 1998-05-26 11:26:28+0200\n"
 "From:  <janneke@gnu.org>\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Date: 1998-05-26 11:26:28+0200\n"
 "From:  <janneke@gnu.org>\n"
index d33d70bca3582f655a438cac6ed1c05069ff4f24..a1246d342db3327b47a911f3ec644d6b7d20e970 100644 (file)
 ;; guile> (load "backend-documentation-lib.scm")
 ;; For some reason, this can't be generated when lilypond is loaded;
 ;; the regexp stuff behaves weird.
 ;; guile> (load "backend-documentation-lib.scm")
 ;; For some reason, this can't be generated when lilypond is loaded;
 ;; the regexp stuff behaves weird.
-(define (list-interface-names) '("general-grob-interface" "general-grob-interface" "beam-interface" "clef-interface" "axis-group-interface" "note-column-interface" "stem-interface" "slur-interface" "side-position-interface" "accidentals-interface" "line-of-score-interface" "note-head-interface" "note-name-interface" "rhythmic-head-interface" "rest-interface" "tuplet-bracket-interface" "align-interface" "aligned-interface" "align-interface" "break-aligned-interface" "chord-name-interface" "time-signature-interface" "bar-line-interface" "hairpin-interface" "arpeggio-interface" "note-collision-interface" "custos-interface" "dot-interface" "font-interface" "text-interface" "dot-column-interface" "dynamic-interface" "finger-interface" "separation-spanner-interface" "text-script-interface" "grace-alignment-interface" "hara-kiri-group-interface" "line-spanner-interface" "lyric-hyphen-interface" "key-signature-interface" "lyric-extender-interface" "lyric-syllable-interface" "mark-interface" "multi-measure-rest-interface" "font-interface" "paper-column-interface" "spaceable-element-interface" "rest-collision-interface" "script-interface" "script-column-interface" "spacing-spanner-interface" "staff-symbol-interface" "stem-tremolo-interface" "separation-item-interface" "sustain-pedal-interface" "system-start-delimiter-interface" "text-spanner-interface" "tie-interface" "tie-column-interface" "volta-bracket-interface"))
+(define (list-interface-names) '("general-grob-interface" "beam-interface" "clef-interface" "axis-group-interface" "note-column-interface" "stem-interface" "slur-interface" "side-position-interface" "accidentals-interface" "line-of-score-interface" "note-head-interface" "note-name-interface" "rhythmic-head-interface" "rest-interface" "tuplet-bracket-interface" "align-interface" "aligned-interface" "break-aligned-interface" "chord-name-interface" "time-signature-interface" "bar-line-interface" "hairpin-interface" "arpeggio-interface" "note-collision-interface" "custos-interface" "dot-interface" "font-interface" "text-interface" "dot-column-interface" "dynamic-interface" "finger-interface" "separation-spanner-interface" "text-script-interface" "grace-alignment-interface" "hara-kiri-group-interface" "line-spanner-interface" "lyric-hyphen-interface" "key-signature-interface" "lyric-extender-interface" "lyric-syllable-interface" "mark-interface" "multi-measure-rest-interface" "paper-column-interface" "spaceable-element-interface" "rest-collision-interface" "script-interface" "script-column-interface" "spacing-spanner-interface" "span-bar-interface" "staff-symbol-interface" "stem-tremolo-interface" "separation-item-interface" "sustain-pedal-interface" "system-start-delimiter-interface" "text-spanner-interface" "tie-interface" "tie-column-interface" "volta-bracket-interface"))
 
 (eval-string (ly-gulp-file "interface-description.scm"))
 
 
 (eval-string (ly-gulp-file "interface-description.scm"))
 
index 317fc486db79a01e0e907d07942226376a08aed3..30dcec73c77b7d158eb74dacbc5a09e65cccdcca 100644 (file)
@@ -50,7 +50,7 @@
    "\n@html"
    "\n<hr>"
    "\n@end html"
    "\n@html"
    "\n<hr>"
    "\n@end html"
-   "\n@node " name ",,,"))
+   "\n@node " name))
 
 (define texi-section-alist
   '(
 
 (define texi-section-alist
   '(
@@ -125,7 +125,7 @@ Add a ref if REF is set
    ;; prepend GNU for dir, must be unique
    "\n* GNU " name " (" file-name ").           " name "."
    "\n@end direntry"
    ;; prepend GNU for dir, must be unique
    "\n* GNU " name " (" file-name ").           " name "."
    "\n@end direntry"
-   (node "Top") top
+   (node "Top") ",(lilypond)Development,," top
    "\n@top"
    (texi-section 1 name #f)
    (texi-menu items-alist)
    "\n@top"
    (texi-section 1 name #f)
    (texi-menu items-alist)
index 4c5b2199ca013bab0c6cb3e69401558a01d3b386..b7683b72ee38946abee5a79f06fc2e2a8b0e4e5f 100644 (file)
@@ -168,7 +168,7 @@ the start of the music.
 (translator-property-description 'melismaBusy boolean? "Signifies
 whether a melisma is active. This can be used to signal melismas on
 top of those automatically detected. ")
 (translator-property-description 'melismaBusy boolean? "Signifies
 whether a melisma is active. This can be used to signal melismas on
 top of those automatically detected. ")
-(translator-property-description 'melismaEngraverBusy boolean? "See @ref{melismaBusy}. This is set automatically.")
+(translator-property-description 'melismaEngraverBusy boolean? "See @ref{(lilypond)melismaBusy}. This is set automatically.")
 (translator-property-description 'midiInstrument string? "Name of the
 MIDI instrument to use ")
 (translator-property-description 'noAutoBeaming boolean? "If set to true then beams are not generated automatically.
 (translator-property-description 'midiInstrument string? "Name of the
 MIDI instrument to use ")
 (translator-property-description 'noAutoBeaming boolean? "If set to true then beams are not generated automatically.
index 34bf1af183b32a83b80c088904cc2632603caad7..738258dd684daa7697bfd7ff5cfff37fe49b3eab 100644 (file)
@@ -632,9 +632,10 @@ if 1:
 if 1:
        def conv (str):
                str = re.sub ('drarnChords', 'chordChanges', str)
 if 1:
        def conv (str):
                str = re.sub ('drarnChords', 'chordChanges', str)
+               str = re.sub ('\\musicalpitch', '\\pitch', str)
                return str
        
                return str
        
-       conversions.append (((1,3,122), conv, 'drarnChords -> chordChanges'))
+       conversions.append (((1,3,122), conv, 'drarnChords -> chordChanges, \\musicalpitch -> \\pitch'))
 
 
 ############################
 
 
 ############################