From a478e5ad057eaf795f915e2b31293e947364d41d Mon Sep 17 00:00:00 2001 From: Jan Nieuwenhuizen Date: Tue, 9 Jan 2001 15:54:20 +0100 Subject: [PATCH] patch::: 1.3.121.jcn2 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. --- CHANGES | 13 ++ Documentation/user/bugs.itexi | 4 +- Documentation/user/convert-ly.itexi | 2 +- Documentation/user/development.itexi | 51 ++--- Documentation/user/features.tely | 253 ++++++++++++++++++------ Documentation/user/invoking.itexi | 3 +- Documentation/user/lilypond-book.tely | 2 +- Documentation/user/lilypond.tely | 14 +- Documentation/user/moreinfo.itexi | 2 +- Documentation/user/properties.itely | 3 +- Documentation/user/refman.itely | 105 +++++----- Documentation/user/tutorial.itely | 13 +- VERSION | 2 +- input/test/explicit.ly | 10 + lily/duration.cc | 1 - lily/my-lily-lexer.cc | 2 +- lily/parser.yy | 43 ++-- po/de.po | 2 +- po/it.po | 2 +- po/nl.po | 3 +- scm/backend-documentation-lib.scm | 2 +- scm/documentation-lib.scm | 4 +- scm/translator-property-description.scm | 2 +- scripts/convert-ly.py | 3 +- 24 files changed, 361 insertions(+), 180 deletions(-) create mode 100644 input/test/explicit.ly diff --git a/CHANGES b/CHANGES index f8477c1b1d..a7f3923990 100644 --- 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 ============ diff --git a/Documentation/user/bugs.itexi b/Documentation/user/bugs.itexi index d9ba1abeeb..8a7585a346 100644 --- a/Documentation/user/bugs.itexi +++ b/Documentation/user/bugs.itexi @@ -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 diff --git a/Documentation/user/convert-ly.itexi b/Documentation/user/convert-ly.itexi index 5c413c6227..1684b02dc4 100644 --- a/Documentation/user/convert-ly.itexi +++ b/Documentation/user/convert-ly.itexi @@ -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 diff --git a/Documentation/user/development.itexi b/Documentation/user/development.itexi index fa6b0dfb17..907fbeb4ac 100644 --- a/Documentation/user/development.itexi +++ b/Documentation/user/development.itexi @@ -1,4 +1,5 @@ -@node Internals, , , top +@node Internals +@chapter Internals @menu * Conversion stages:: Lilypond is a multi-pass program. @@ -10,8 +11,8 @@ * 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: @@ -60,7 +61,7 @@ are output, line by line. @end table -@node Grobs, , , Internals +@node Grobs @section Grobs This section is about Grobs (short for Graphical Objects), which are @@ -90,7 +91,8 @@ how grobs work. * 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 @@ -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 -@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 @@ -196,7 +199,8 @@ means: "empty in this direction". If you fill in a pair, that pair 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 @@ -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. -@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. @@ -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. -@node Pointer substitution, , , Grobs +@node 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. -@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 @@ -363,7 +371,7 @@ Molecule. -@node Development, , , top +@node Development @chapter Development @menu @@ -372,7 +380,7 @@ Molecule. * 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 @@ -601,8 +609,8 @@ files, doing a release. Use them. -@node Making patches, , , Development - +@node Making patches +@section Making patches @unnumberedsec Track and distribute your code changes @@ -701,11 +709,8 @@ and don't forget to make automatically generated files: @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 @@ -715,7 +720,7 @@ guidelines in the future. Not-preferred messages are marked with @code{+}. By convention, agrammatical examples are marked with @code{*}. -@section Guidelines +@subsection Guidelines @itemize @bullet diff --git a/Documentation/user/features.tely b/Documentation/user/features.tely index 118ed956a2..694729a70a 100644 --- a/Documentation/user/features.tely +++ b/Documentation/user/features.tely @@ -21,6 +21,16 @@ yes: \property Staff.VoltaBracket = #'((meta . ((interfaces . ())))) @end ignore +@macro keyindex {word} +@cindex \word\ + +@end macro + +@macro indexcode {word} +@cindex \word\ + +@end macro + @node Top @@ -39,41 +49,78 @@ yes: \property Staff.VoltaBracket = #'((meta . ((interfaces . ())))) * Output property:: Output property * Embedded TeX:: Embedded TeX * Embedded PostScript:: Embedded PostScript +* Index:: Checking Feature index @end menu -@ignore -Testin'' a b c... -@lilypond[fragment,relative,verbatim,center] - a'' b c -@end lilypond -@end ignore - @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 @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 \context Staff=other \context Voice > @end lilypond - +@end quotation @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 +@end quotation + +Printing of the additional text @code{"gliss."} is currently not +supported. + @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 { @@ -84,30 +131,54 @@ Testin'' a b c... \context Staff=two {\clef bass; \skip 1*2;} > @end lilypond +@end quotation @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 +@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 +@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 @@ -119,42 +190,57 @@ Control number of beams... \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 g8 g4 + \grace g8 g4 [g8 g] @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 +@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 +@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 +@end quotation 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 -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 - -@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 @@ -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 +@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 -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 @@ -208,26 +310,22 @@ Override attachments... 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 -@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 -@lilypond[fragment,relative,verbatim,center] +@lilypond[fragment,relative,verbatim] \property Voice.Slur \set #'direction = #1 \property Voice.Stem @@ -239,26 +337,41 @@ g4(g8)g @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 +@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 +@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; @@ -288,13 +401,14 @@ Ugly slurs... } } @end lilypond +@end quotation @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 @@ -304,7 +418,7 @@ Have crescendo set a text spanner iso hairpin @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) @@ -319,7 +433,7 @@ Have crescendo set a text spanner iso hairpin @section Engraver hacking No time signature, no barlines... -@lilypond[verbatim,center] +@lilypond[verbatim] \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 -@lilypond[verbatim,center] +@lilypond[verbatim] \score { \notes { c4 c4 c8 c8 } \paper { @@ -356,7 +470,7 @@ No staff, no clef, squash pitches @node Part combiner @section Part combiner -@lilypond[verbatim,center] +@lilypond[verbatim] \score{ \context Staff = flauti < \time 4/4; @@ -394,7 +508,9 @@ No staff, no clef, squash pitches 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"))) @@ -417,14 +533,14 @@ Metrome hack... @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." ... -@lilypond[verbatim,center] +@lilypond[verbatim] #(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 -@lilypond[verbatim,center] +@lilypond[verbatim] 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 -@lilypond[verbatim,center] +@lilypond[verbatim] #(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 -@lilypond[fragment,relative,verbatim,center] +@lilypond[fragment,relative,verbatim] a''^"3 $\\times$ \\`a deux" @end lilypond @@ -583,7 +699,7 @@ Arbitrary lines and curves not supported... [TODO:] Make a direct postscript command? -@lilypond[verbatim,center] +@lilypond[verbatim] \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 + +@node Index +@section Checking Feature index + +@printindex cp + + @bye diff --git a/Documentation/user/invoking.itexi b/Documentation/user/invoking.itexi index 13a40742be..60f456010f 100644 --- a/Documentation/user/invoking.itexi +++ b/Documentation/user/invoking.itexi @@ -1,5 +1,4 @@ - -@node Invoking LilyPond, , , Top +@node Invoking LilyPond @chapter Invoking LilyPond @cindex Invoking LilyPond diff --git a/Documentation/user/lilypond-book.tely b/Documentation/user/lilypond-book.tely index 125303f3ef..fdcb19b52e 100644 --- a/Documentation/user/lilypond-book.tely +++ b/Documentation/user/lilypond-book.tely @@ -72,7 +72,7 @@ translation approved by the Free Software Foundation. @end tex @contents -@node Top, , , (dir) +@node Top @top diff --git a/Documentation/user/lilypond.tely b/Documentation/user/lilypond.tely index e2d9cfbd08..20c2d91e70 100644 --- a/Documentation/user/lilypond.tely +++ b/Documentation/user/lilypond.tely @@ -85,9 +85,12 @@ than the names being similar :-)" @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. @@ -105,11 +108,10 @@ this and other documentation. * 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. -* convert-ly:: Upgrading input files. -* Internals:: * Development:: Some hints on developing for LilyPond. +* convert-ly:: Upgrading input files. * Index:: Unified index. @end menu @@ -138,7 +140,7 @@ this and other documentation. @include development.itexi -@node Index, , , Top +@node Index @unnumbered Index @printindex cp diff --git a/Documentation/user/moreinfo.itexi b/Documentation/user/moreinfo.itexi index ff5b7353d6..4c9459fb5a 100644 --- a/Documentation/user/moreinfo.itexi +++ b/Documentation/user/moreinfo.itexi @@ -1,3 +1,3 @@ -@node More information, , , Top +@node More information @section Resources diff --git a/Documentation/user/properties.itely b/Documentation/user/properties.itely index 1594b6eade..102577880d 100644 --- a/Documentation/user/properties.itely +++ b/Documentation/user/properties.itely @@ -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 diff --git a/Documentation/user/refman.itely b/Documentation/user/refman.itely index 65ef03d061..b463a79c61 100644 --- a/Documentation/user/refman.itely +++ b/Documentation/user/refman.itely @@ -6,7 +6,8 @@ @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 @@ -47,7 +48,7 @@ -@node Overview, , , Reference Manual +@node Overview @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 @@ -108,8 +109,8 @@ metre, arranger, piece and tagline. 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. @@ -133,7 +134,7 @@ forbidden after top level assignments. -@node Lexical conventions, , , Reference Manual +@node 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. - -@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: @@ -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}. -@cindex Lexical Modes - +@node Lexical modes +@section Lexical modes +@cindex Lexical 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 @@ -382,7 +382,7 @@ _ _ _ _ % 4 words, each one a space [todo: include short table showign differences] -@node Types, , , Reference Manual +@node Types @section Types @cindex Identifiers @@ -467,7 +467,7 @@ copied. For this reason, an identifier reference must always be the @end example -@node Music expressions, , , Reference Manual +@node 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 @@ -536,9 +536,9 @@ In Note, Chord, and Lyrics mode, durations may be designated by numbers and dots. -@node Note specification, , , Reference Manual - -@cindex note specification +@node Note specification +@section Note specification +@cindex Note specification @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. -@node barlines, , , Reference Manual +@node barlines +@section barlines @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}'. +@node Manual beams +@section Manual beams @cindex beams -@node Manual beams, , , Reference Manual - 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. - +@node stem tremolo +@section stem tremolo @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 @@ -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 @@ -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 @@ -1546,9 +1547,10 @@ error, since there will be no main note to attach the grace notes to. +@node Repeats +@section 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 @@ -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 @@ -1763,7 +1766,7 @@ lyrics for @var{musicexpr2}. -@node Ambiguities, , , Reference Manual +@node 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 -@node Automatic Beaming, , , Reference Manual +@node Automatic Beaming +@section Automatic Beaming @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 -@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. @@ -1866,7 +1870,8 @@ For example, to specify beam endings for beams that contain 32nd notes, you would use @code{(end * * 1 32)}. -@node Chord Names, , , Reference Manual +@node Chord Names +@section Chord Names @cindex chord names @cindex chords @@ -1895,7 +1900,7 @@ scheme = \notes { 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: @@ -2079,11 +2084,12 @@ scheme = \chords { @end quotation +@node lyricprint +@section lyricprint @cindex lyrics @cindex printing!lyrics -@node lyricprint, , , Reference Manual 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 @@ -2321,7 +2327,8 @@ called @emph{performers}. @mbinclude properties.itely -@node Page layout, , , Reference Manual +@node Page layout +@section Page layout @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 - 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 @@ -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}) -@node contextdefs, , , Reference Manual +@node contextdefs +@section contextdefs @cindex context definition @cindex translator definition @@ -2660,7 +2672,7 @@ translator: @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 @@ -2686,7 +2698,8 @@ The contexts for MIDI output are defined in @file{ly/performer.ly}. @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, @@ -2748,7 +2761,7 @@ piano. -@node Pre-defined Identifiers, , , Reference Manual +@node 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. - @item @code{\stemdown}@keyindex{stemdown} + @item @code{\stemDown}@keyindex{stemDown} Force stems, beams, and slurs to point down. @item @code{\stemUp}@keyindex{stemUp} diff --git a/Documentation/user/tutorial.itely b/Documentation/user/tutorial.itely index 27a95c4a1a..489c114631 100644 --- a/Documentation/user/tutorial.itely +++ b/Documentation/user/tutorial.itely @@ -1,6 +1,7 @@ @c -*-texinfo-*- -@node Tutorial, , , Top +@c ugh: because of @include, we need to fill in these nodes? +@node Tutorial @chapter Tutorial @menu @@ -11,7 +12,7 @@ * end of tutorial:: The end @end menu -@node Introduction, , , Tutorial +@node 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. -@node The first tune, , , Tutorial +@node 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'. -@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 @@ -699,7 +700,7 @@ will be set in two lines. @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 @@ -975,7 +976,7 @@ parts. [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 diff --git a/VERSION b/VERSION index 61b3ce31f5..481a6c85af 100644 --- a/VERSION +++ b/VERSION @@ -2,7 +2,7 @@ PACKAGE_NAME=LilyPond 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. diff --git a/input/test/explicit.ly b/input/test/explicit.ly new file mode 100644 index 0000000000..83ffd57083 --- /dev/null +++ b/input/test/explicit.ly @@ -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 diff --git a/lily/duration.cc b/lily/duration.cc index cc44db4def..9ea1ec5e20 100644 --- a/lily/duration.cc +++ b/lily/duration.cc @@ -129,7 +129,6 @@ Duration::less_p (SCM p1, SCM p2) return SCM_BOOL_F; } - static SCM make_duration (SCM l, SCM d) { diff --git a/lily/my-lily-lexer.cc b/lily/my-lily-lexer.cc index 5424b0fa72..763c9e90db 100644 --- a/lily/my-lily-lexer.cc +++ b/lily/my-lily-lexer.cc @@ -56,7 +56,7 @@ static Keyword_ent the_key_tab[]={ {"lyrics", LYRICS}, {"key", KEY}, {"mark", MARK}, - {"musicalpitch", MUSICAL_PITCH}, + {"pitch", PITCH}, {"time", TIME_T}, {"times", TIMES}, {"midi", MIDI}, diff --git a/lily/parser.yy b/lily/parser.yy index 7366cea832..bbfaf2438a 100644 --- a/lily/parser.yy +++ b/lily/parser.yy @@ -170,7 +170,7 @@ yylex (YYSTYPE *s, void * v_l) %token MEASURES %token MIDI %token MM_T -%token MUSICAL_PITCH +%token PITCH %token NAME %token PITCHNAMES %token NOTES @@ -245,8 +245,8 @@ yylex (YYSTYPE *s, void * v_l) %type pre_requests post_requests %type gen_text_def -%type steno_musical_pitch musical_pitch absolute_musical_pitch -%type steno_tonic_pitch +%type steno_pitch pitch absolute_pitch +%type explicit_pitch steno_tonic_pitch %type chord_additions chord_subtractions chord_notes chord_step %type chord @@ -820,7 +820,7 @@ Composite_music: | 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); @@ -874,7 +874,7 @@ Composite_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); @@ -1297,7 +1297,7 @@ sub_quotes: } ; -steno_musical_pitch: +steno_pitch: NOTENAME_PITCH { $$ = $1; } @@ -1337,15 +1337,22 @@ steno_tonic_pitch: } ; -musical_pitch: - steno_musical_pitch { +pitch: + steno_pitch { $$ = $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)); - 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; } ; @@ -1493,6 +1500,9 @@ duration_length: steno_duration { $$ = $1; } + | explicit_duration { + $$ = $1; + } | duration_length '*' bare_unsigned { $$ = unsmob_duration ($$)->compressed ( $3) .smobbed_copy (); } @@ -1514,6 +1524,9 @@ optional_notemode_duration: | entered_notemode_duration { $$ = $1; } + | explicit_duration { + $$ = $1; + } ; steno_duration: @@ -1556,7 +1569,7 @@ tremolo_type: 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")); diff --git a/po/de.po b/po/de.po index dc7d3ddaf9..3c1a256a87 100644 --- a/po/de.po +++ b/po/de.po @@ -10,7 +10,7 @@ msgstr "" "Last-Translator: Erwin Dieterich \n" "Language-Team: LANGUAGE \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 diff --git a/po/it.po b/po/it.po index a083e18a43..cc09a30495 100644 --- a/po/it.po +++ b/po/it.po @@ -6,7 +6,7 @@ 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: \n" "Xgettext-Options: --c++ --default-domain=lilypond --join " diff --git a/po/nl.po b/po/nl.po index 266852ac97..10482e6c3a 100644 --- 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 also was FIRST AUTHOR. # +#, fuzzy msgid "" msgstr "" "Project-Id-Version: lilypond 1.3.59\n" @@ -15,7 +16,7 @@ msgstr "" "Last-Translator: Jan Nieuwenhuizen \n" "Language-Team: Dutch \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: \n" diff --git a/scm/backend-documentation-lib.scm b/scm/backend-documentation-lib.scm index d33d70bca3..a1246d342d 100644 --- a/scm/backend-documentation-lib.scm +++ b/scm/backend-documentation-lib.scm @@ -164,7 +164,7 @@ ;; 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")) diff --git a/scm/documentation-lib.scm b/scm/documentation-lib.scm index 317fc486db..30dcec73c7 100644 --- a/scm/documentation-lib.scm +++ b/scm/documentation-lib.scm @@ -50,7 +50,7 @@ "\n@html" "\n
" "\n@end html" - "\n@node " name ",,,")) + "\n@node " name)) (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" - (node "Top") top + (node "Top") ",(lilypond)Development,," top "\n@top" (texi-section 1 name #f) (texi-menu items-alist) diff --git a/scm/translator-property-description.scm b/scm/translator-property-description.scm index 4c5b2199ca..b7683b72ee 100644 --- a/scm/translator-property-description.scm +++ b/scm/translator-property-description.scm @@ -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 '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. diff --git a/scripts/convert-ly.py b/scripts/convert-ly.py index 34bf1af183..738258dd68 100644 --- a/scripts/convert-ly.py +++ b/scripts/convert-ly.py @@ -632,9 +632,10 @@ if 1: if 1: def conv (str): str = re.sub ('drarnChords', 'chordChanges', str) + str = re.sub ('\\musicalpitch', '\\pitch', str) return str - conversions.append (((1,3,122), conv, 'drarnChords -> chordChanges')) + conversions.append (((1,3,122), conv, 'drarnChords -> chordChanges, \\musicalpitch -> \\pitch')) ############################ -- 2.39.5