]> git.donarmstrong.com Git - lilypond.git/commitdiff
Merge branch 'master' into lilypond/translation
authorFrancisco Vila <francisco.vila@hispalinux.es>
Sat, 29 Jan 2011 16:24:51 +0000 (17:24 +0100)
committerFrancisco Vila <francisco.vila@hispalinux.es>
Sat, 29 Jan 2011 16:24:51 +0000 (17:24 +0100)
327 files changed:
Documentation/changes.tely
Documentation/contributor/issues.itexi
Documentation/contributor/programming-work.itexi
Documentation/contributor/quick-start.itexi
Documentation/contributor/regressions.itexi
Documentation/contributor/source-code.itexi
Documentation/es/notation/vocal.itely
Documentation/ja/web.texi
Documentation/ja/web/manuals.itexi
Documentation/notation/spacing.itely
Documentation/notation/staff.itely
Documentation/notation/vocal.itely
Documentation/snippets/accordion-discant-symbols.ly
Documentation/snippets/adding-a-figured-bass-above-or-below-the-notes.ly
Documentation/snippets/adding-ambitus-per-voice.ly
Documentation/snippets/adding-an-extra-staff-at-a-line-break.ly
Documentation/snippets/adding-an-extra-staff.ly
Documentation/snippets/adding-bar-lines-to-chordnames-context.ly
Documentation/snippets/adding-beams,-slurs,-ties-etc.-when-using-tuplet-and-non-tuplet-rhythms.ly
Documentation/snippets/adding-drum-parts.ly
Documentation/snippets/adding-fingerings-to-tablatures.ly
Documentation/snippets/adding-orchestral-cues-to-a-vocal-score.ly
Documentation/snippets/adding-parentheses-around-an-expressive-mark-or-chordal-note.ly
Documentation/snippets/adding-the-current-date-to-a-score.ly
Documentation/snippets/adding-volta-brackets-to-additional-staves.ly
Documentation/snippets/additional-voices-to-avoid-collisions.ly
Documentation/snippets/adjusting-grace-note-spacing.ly
Documentation/snippets/adjusting-lyrics-vertical-spacing.ly
Documentation/snippets/adjusting-the-shape-of-falls-and-doits.ly
Documentation/snippets/aligning-and-centering-instrument-names.ly
Documentation/snippets/aligning-bar-numbers.ly
Documentation/snippets/aligning-marks-with-various-notation-objects.ly
Documentation/snippets/allowing-fingerings-to-be-printed-inside-the-staff.ly
Documentation/snippets/altering-the-length-of-beamed-stems.ly
Documentation/snippets/ambitus-with-multiple-voices.ly
Documentation/snippets/analysis-brackets-above-the-staff.ly
Documentation/snippets/ancient-fonts.ly
Documentation/snippets/ancient-notation-template----modern-transcription-of-gregorian-music.ly
Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly
Documentation/snippets/ancient-time-signatures.ly
Documentation/snippets/applying-note-head-styles-depending-on-the-step-of-the-scale.ly
Documentation/snippets/arabic-improvisation.ly
Documentation/snippets/asymmetric-slurs.ly
Documentation/snippets/automatic-beam-subdivisions.ly
Documentation/snippets/avoiding-collisions-with-chord-fingerings.ly
Documentation/snippets/beam-endings-in-score-context.ly
Documentation/snippets/beam-grouping-in-7-8-time.ly
Documentation/snippets/beams-across-line-breaks.ly
Documentation/snippets/blanking-staff-lines-using-the--whiteout-command.ly
Documentation/snippets/broken-crescendo-hairpin.ly
Documentation/snippets/caesura-railtracks-with-fermata.ly
Documentation/snippets/center-text-below-hairpin-dynamics.ly
Documentation/snippets/changing--flageolet-mark-size.ly
Documentation/snippets/changing-a-single-notes-size-in-a-chord.ly
Documentation/snippets/changing-beam-knee-gap.ly
Documentation/snippets/changing-chord-separator.ly
Documentation/snippets/changing-form-of-multi-measure-rests.ly
Documentation/snippets/changing-fret-orientations.ly
Documentation/snippets/changing-midi-output-to-one-channel-per-voice.ly
Documentation/snippets/changing-partcombine-texts.ly
Documentation/snippets/changing-text-and-spanner-styles-for-text-dynamics.ly
Documentation/snippets/changing-the-ambitus-gap.ly
Documentation/snippets/changing-the-appearance-of-a-slur-from-solid-to-dotted-or-dashed.ly
Documentation/snippets/changing-the-breath-mark-symbol.ly
Documentation/snippets/changing-the-chord-names-to-german-or-semi-german-notation.ly
Documentation/snippets/changing-the-number-of-augmentation-dots-per-note.ly
Documentation/snippets/changing-the-positions-of-figured-bass-alterations.ly
Documentation/snippets/changing-the-size-of-woodwind-diagrams.ly
Documentation/snippets/changing-the-tempo-without-a-metronome-mark.ly
Documentation/snippets/changing-the-text-for-sustain-markings.ly
Documentation/snippets/changing-the-time-signature-without-affecting-the-beaming.ly
Documentation/snippets/changing-the-tuplet-number.ly
Documentation/snippets/changing-time-signatures-inside-a-polymetric-section-using--scaledurations.ly
Documentation/snippets/chant-or-psalms-notation.ly
Documentation/snippets/chord-name-exceptions.ly
Documentation/snippets/chord-name-major7.ly
Documentation/snippets/chordchanges-for-fretboards.ly
Documentation/snippets/clip-systems.ly
Documentation/snippets/clusters.ly
Documentation/snippets/combining-dynamics-with-markup-texts.ly
Documentation/snippets/combining-two-parts-on-the-same-staff.ly
Documentation/snippets/compound-time-signatures.ly
Documentation/snippets/conducting-signs,-measure-grouping-signs.ly
Documentation/snippets/contemporary-glissando.ly
Documentation/snippets/controlling-spanner-visibility-after-a-line-break.ly
Documentation/snippets/controlling-the-placement-of-chord-fingerings.ly
Documentation/snippets/controlling-the-vertical-ordering-of-scripts.ly
Documentation/snippets/controlling-tuplet-bracket-visibility.ly
Documentation/snippets/creating-a-delayed-turn.ly
Documentation/snippets/creating-a-sequence-of-notes-on-various-pitches.ly
Documentation/snippets/creating-arpeggios-across-notes-in-different-voices.ly
Documentation/snippets/creating-blank-staves.ly
Documentation/snippets/creating-cross-staff-arpeggios-in-a-piano-staff.ly
Documentation/snippets/creating-cross-staff-arpeggios-in-other-contexts.ly
Documentation/snippets/creating-metronome-marks-in-markup-mode.ly
Documentation/snippets/creating-real-parenthesized-dynamics.ly
Documentation/snippets/creating-simultaneous-rehearsal-marks.ly
Documentation/snippets/creating-slurs-across-voices.ly
Documentation/snippets/creating-text-spanners.ly
Documentation/snippets/cross-staff-tremolos.ly
Documentation/snippets/custodes.ly
Documentation/snippets/customizing-fretboard-fret-diagrams.ly
Documentation/snippets/customizing-markup-fret-diagrams.ly
Documentation/snippets/default-direction-of-stems-on-the-center-line-of-the-staff.ly
Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly
Documentation/snippets/defining-predefined-fretboards-for-other-instruments.ly
Documentation/snippets/display-bracket-with-only-one-staff-in-a-system.ly
Documentation/snippets/displaying-complex-chords.ly
Documentation/snippets/displaying-grob-ancestry.ly
Documentation/snippets/dodecaphonic-style-accidentals-for-each-note-including-naturals.ly
Documentation/snippets/dynamics-custom-text-spanner-postfix.ly
Documentation/snippets/dynamics-text-spanner-postfix.ly
Documentation/snippets/embedding-native-postscript-in-a--markup-block.ly
Documentation/snippets/engravers-one-by-one.ly
Documentation/snippets/engraving-ties-manually.ly
Documentation/snippets/entering-several-tuplets-using-only-one--times-command.ly
Documentation/snippets/faking-a-hammer-in-tablatures.ly
Documentation/snippets/fingering-symbols-for-wind-instruments.ly
Documentation/snippets/fingerings,-string-indications,-and-right-hand-fingerings.ly
Documentation/snippets/flamenco-notation.ly
Documentation/snippets/flat-flags-and-beam-nibs.ly
Documentation/snippets/forcing-horizontal-shift-of-notes.ly
Documentation/snippets/forcing-hyphens-to-be-shown.ly
Documentation/snippets/fretboards-alternate-tables.ly
Documentation/snippets/generating-random-notes.ly
Documentation/snippets/graphical-and-text-woodwind-diagrams.ly
Documentation/snippets/grid-lines--changing-their-appearance.ly
Documentation/snippets/grid-lines--emphasizing-rhythms-and-notes-synchronization.ly
Documentation/snippets/grouping-beats.ly
Documentation/snippets/guitar-slides.ly
Documentation/snippets/guitar-strum-rhythms.ly
Documentation/snippets/hairpins-with-different-line-styles.ly
Documentation/snippets/hiding-accidentals-on-tied-notes-at-the-start-of-a-new-system.ly
Documentation/snippets/hiding-the-extender-line-for-text-dynamics.ly
Documentation/snippets/hymn-template.ly
Documentation/snippets/incipit.ly
Documentation/snippets/indicating-cross-staff-chords-with-arpeggio-bracket.ly
Documentation/snippets/inserting-a-caesura.ly
Documentation/snippets/isolated-percent-repeats.ly
Documentation/snippets/jazz-combo-template.ly
Documentation/snippets/keep-change-clefs-full-sized.ly
Documentation/snippets/letter-tablature-formatting.ly
Documentation/snippets/line-arrows.ly
Documentation/snippets/lyrics-alignment.ly
Documentation/snippets/lyrics-old-spacing-settings.ly [new file with mode: 0644]
Documentation/snippets/makam-example.ly
Documentation/snippets/making-slurs-with-complex-dash-structure.ly
Documentation/snippets/making-some-staff-lines-thicker-than-the-others.ly
Documentation/snippets/measure-counter.ly
Documentation/snippets/mensurstriche-layout-bar-lines-between-the-staves.ly
Documentation/snippets/modern-tab-text-clef.ly
Documentation/snippets/modifying-default-values-for-articulation-shorthand-notation.ly
Documentation/snippets/moving-dotted-notes-in-polyphony.ly
Documentation/snippets/moving-slur-positions-vertically.ly
Documentation/snippets/multi-measure-rest-markup.ly
Documentation/snippets/nesting-staves.ly
Documentation/snippets/new/lyrics-old-spacing-settings.ly [new file with mode: 0644]
Documentation/snippets/new/vocal-ensemble-template-with-automatic-piano-reduction.ly [new file with mode: 0644]
Documentation/snippets/new/vocal-ensemble-template.ly [new file with mode: 0644]
Documentation/snippets/new/vocal-headword.ly [new file with mode: 0644]
Documentation/snippets/non-default-tuplet-numbers.ly
Documentation/snippets/non-traditional-key-signatures.ly
Documentation/snippets/numbers-as-easy-note-heads.ly
Documentation/snippets/orchestra,-choir-and-piano-template.ly
Documentation/snippets/ottava-text.ly
Documentation/snippets/partcombine-and-autobeamoff.ly
Documentation/snippets/percent-repeat-count-visibility.ly
Documentation/snippets/percent-repeat-counter.ly
Documentation/snippets/permitting-line-breaks-within-beamed-tuplets.ly
Documentation/snippets/piano-template-simple.ly
Documentation/snippets/piano-template-with-centered-dynamics.ly
Documentation/snippets/piano-template-with-centered-lyrics.ly
Documentation/snippets/piano-template-with-melody-and-lyrics.ly
Documentation/snippets/placement-of-right-hand-fingerings.ly
Documentation/snippets/polyphony-in-tablature.ly
Documentation/snippets/positioning-arpeggios.ly
Documentation/snippets/positioning-grace-note-beams-at-the-height-of-normal-note-beams.ly
Documentation/snippets/positioning-grace-notes-with-floating-space.ly
Documentation/snippets/positioning-multi-measure-rests.ly
Documentation/snippets/positioning-text-markups-inside-slurs.ly
Documentation/snippets/preventing-extra-naturals-from-being-automatically-added.ly
Documentation/snippets/preventing-natural-signs-from-being-printed-when-the-key-signature-changes.ly
Documentation/snippets/printing-a-repeat-sign-at-the-beginning-of-a-piece.ly
Documentation/snippets/printing-bar-numbers-at-regular-intervals.ly
Documentation/snippets/printing-bar-numbers-inside-boxes-or-circles.ly
Documentation/snippets/printing-hairpins-using-al-niente-notation.ly
Documentation/snippets/printing-marks-at-the-end-of-a-line.ly
Documentation/snippets/printing-marks-on-every-staff.ly
Documentation/snippets/printing-metronome-and-rehearsal-marks-below-the-staff.ly
Documentation/snippets/printing-note-names-with-and-without-an-octave-marker.ly
Documentation/snippets/printing-the-bar-number-for-the-first-measure.ly
Documentation/snippets/quoting-another-voice-with-transposition.ly
Documentation/snippets/quoting-another-voice.ly
Documentation/snippets/recorder-fingering-chart.ly
Documentation/snippets/redefining-grace-note-global-defaults.ly
Documentation/snippets/removing-bar-numbers-from-a-score.ly
Documentation/snippets/removing-connecting-bar-lines-on-staffgroup,-pianostaff,-or-grandstaff.ly
Documentation/snippets/removing-the-first-empty-line.ly
Documentation/snippets/rest-styles.ly
Documentation/snippets/reverting-default-beam-endings.ly
Documentation/snippets/setting-hairpin-behavior-at-bar-lines.ly
Documentation/snippets/setting-system-separators.ly
Documentation/snippets/setting-the-double-repeat-default-for-volte.ly
Documentation/snippets/setting-the-minimum-length-of-hairpins.ly
Documentation/snippets/shortening-volta-brackets.ly
Documentation/snippets/showing-chords-at-changes.ly
Documentation/snippets/simple-lead-sheet.ly
Documentation/snippets/single-staff-template-with-notes,-lyrics,-and-chords.ly
Documentation/snippets/single-staff-template-with-notes,-lyrics,-chords-and-frets.ly
Documentation/snippets/single-staff-template-with-notes-and-chords.ly
Documentation/snippets/single-staff-template-with-notes-and-lyrics.ly
Documentation/snippets/single-staff-template-with-only-notes.ly
Documentation/snippets/snap-pizzicato-bartok-pizzicato.ly
Documentation/snippets/stand-alone-two-column-markup.ly
Documentation/snippets/stem-and-beam-behavior-in-tablature.ly
Documentation/snippets/string-quartet-template-simple.ly
Documentation/snippets/string-quartet-template-with-separate-parts.ly
Documentation/snippets/subdividing-beams.ly
Documentation/snippets/time-signature-printing-only-the-numerator-as-a-number-instead-of-the-fraction.ly
Documentation/snippets/transcription-of-ancient-music-with-incipit.ly
Documentation/snippets/transposing-pitches-with-minimum-accidentals-smart-transpose.ly
Documentation/snippets/tweaking-clef-properties.ly
Documentation/snippets/tweaking-grace-layout-within-music.ly
Documentation/snippets/use-square-bracket-at-the-start-of-a-staff-group.ly
Documentation/snippets/using-alternative-flag-styles.ly
Documentation/snippets/using-arpeggiobracket-to-make-divisi-more-visible.ly
Documentation/snippets/using-double-slurs-for-legato-chords.ly
Documentation/snippets/using-grace-note-slashes-with-normal-heads.ly
Documentation/snippets/using-ly-grob-object-to-access-grobs-with--tweak.ly
Documentation/snippets/using-the-whiteout-property.ly
Documentation/snippets/using-ties-with-arpeggios.ly
Documentation/snippets/vertically-aligned-dynamics-and-textscripts.ly
Documentation/snippets/vertically-aligning-dynamics-across-multiple-notes.ly
Documentation/snippets/vertically-aligning-ossias-and-lyrics.ly
Documentation/snippets/vertically-centering-paired-figured-bass-extenders.ly
Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly
Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly
Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly
Documentation/snippets/vocal-ensemble-template.ly
Documentation/snippets/vocal-headword.ly [new file with mode: 0644]
Documentation/snippets/vocal-music.snippet-list
Documentation/snippets/volta-below-chords.ly
Documentation/snippets/woodwind-diagrams-key-lists.ly
Documentation/snippets/woodwind-diagrams-listing.ly
Documentation/web/news-front.itexi
VERSION
flower/include/virtual-methods.hh
flower/rtti.cc [deleted file]
input/regression/AAA-intro-regression.tely [changed mode: 0644->0755]
input/regression/ambitus.ly
input/regression/baerenreiter-sarabande.ly
input/regression/chord-names-in-grand-staff.ly [new file with mode: 0644]
input/regression/compound-time-signatures.ly [new file with mode: 0644]
input/regression/instrument-name-groups.ly [new file with mode: 0644]
input/regression/lyrics-aligned-above-stay-close-to-staff.ly [new file with mode: 0644]
input/regression/markup-lines-identifier.ly [new file with mode: 0644]
input/regression/mozart-hrn-3.ly
input/regression/page-spacing.ly
input/regression/page-top-space.ly
input/regression/staff-tabstaff-spacing.ly [new file with mode: 0644]
lily/ambitus-engraver.cc
lily/audio-item.cc
lily/general-scheme.cc
lily/include/lily-guile.hh
lily/include/mensural-ligature.hh
lily/include/page-spacing-result.hh
lily/ligature-bracket-engraver.cc
lily/lily-guile.cc
lily/mensural-ligature-engraver.cc
lily/mensural-ligature.cc
lily/open-type-font.cc
lily/optimal-page-breaking.cc
lily/page-spacing-result.cc
lily/parser.yy
ly/engraver-init.ly
ly/music-functions-init.ly
make/website.make
mf/parmesan-custodes.mf
mf/parmesan-noteheads.mf
python/midi.c
scm/backend-library.scm
scm/chord-entry.scm
scm/chord-generic-names.scm
scm/chord-ignatzek-names.scm
scm/chord-name.scm
scm/clip-region.scm
scm/define-context-properties.scm
scm/define-grob-properties.scm
scm/define-grobs.scm
scm/define-music-display-methods.scm
scm/define-note-names.scm
scm/define-stencil-commands.scm
scm/define-woodwind-diagrams.scm
scm/display-lily.scm
scm/display-woodwind-diagrams.scm
scm/documentation-lib.scm
scm/encoding.scm
scm/flag-styles.scm
scm/font.scm
scm/framework-ps.scm
scm/fret-diagrams.scm
scm/harp-pedals.scm
scm/lily-library.scm
scm/lily-sort.scm
scm/lily.scm
scm/markup.scm
scm/midi.scm
scm/music-functions.scm
scm/output-lib.scm
scm/output-ps.scm
scm/output-svg.scm
scm/paper.scm
scm/parser-clef.scm
scm/parser-ly-from-scheme.scm
scm/part-combiner.scm
scm/predefined-fretboards.scm
scm/ps-to-png.scm
scm/song-util.scm
scm/stencil.scm
scm/time-signature-settings.scm
scm/titling.scm
scm/to-xml.scm
scm/translation-functions.scm
scripts/build/create-weblinks-itexi.py
scripts/build/website_post.py
scripts/midi2ly.py
scripts/musicxml2ly.py

index 635984362fd40e6a85f41de5ccdc6e9959d5f000..c5ddc51b6314bbe6fbe47f10cc4efe5fc2e4579d 100644 (file)
@@ -66,6 +66,26 @@ which scares away people.
 
 @end ignore
 
+@item
+Compound time signatures are now supported by the @code{\compoundMeter} command,
+which can be used instead of @code{\time}:
+@lilypond
+\relative c'' {
+  \compoundMeter #'(3 1 8)
+  c8 c c c
+  \compoundMeter #'((2 8) (5 8))
+  c8 c c c c c c
+  \compoundMeter #'((1 2 3 8) (1 4) (3 8))
+  c8 c c c c c c4 c8 c c
+}
+@end lilypond
+
+@item
+Lyrics above a staff must have their @code{staff-affinity} set to
+@code{DOWN} or must have their @code{alignAboveContext} property
+set in order to be properly aligned.  For more information, see
+@ruser{Placing lyrics vertically}.
+
 @item
 @code{stringTunings} property values have changed from a list of
 semitones above middle C to a list of LilyPond pitch values.
index ab46939fb31d0c69e6d159209fca994be4f5e823..09c62552b77d392214cc2ed19fd3882c4ac3c4a9 100644 (file)
@@ -12,7 +12,6 @@ miscellaneous development tasks.
 * Issue classification::
 * Adding issues to the tracker::
 * Summary of project status::
-* Finding the cause of a regression::
 @end menu
 
 
@@ -50,9 +49,7 @@ you sort your folders alphabetically.
 @enumerate
 
 @item
-Skim through every section of this chapter, @ref{Issues}.  Read in
-detail any sections called @qq{Bug Squad...}, or any page linked
-from @ref{Bug Squad checklists}.
+Read every section of this chapter, @ref{Issues}.
 
 @item
 If you do not have one already, create a gmail account and send
@@ -546,6 +543,37 @@ be downgraded from Priority-Critical by one of the programmers.
 
 Issues that only affect specific operating systems.
 
+@subheading Patch (optional)
+
+@itemize
+
+@item
+Patch-new: the patch has not been checked for @qq{obvious}
+mistakes.  When in doubt, use this tag.
+
+@item
+Patch-review: the patch has no @qq{obvious} mistakes (as checked
+by the Patch Meister), and is ready for review from main
+developers.
+
+Developers with git push ability can use this category, skipping
+over @code{patch-new}.
+
+@item
+Patch-needs_work: a developer has some concerns about the patch.
+This does not necessarily mean that the patch must be changed; in
+some cases, the developer's concerns can be resolved simply by
+discussion the situation or providing notation examples.
+
+If the patch is updated, the category should be changed to
+@code{patch-new} (for normal contributors) or @code{patch-new}
+(for developers who are very confident about their patch).
+
+@item
+Patch-abandoned: the author has not responded to review comments
+for a few months.
+
+@end itemize
 
 @subheading Other items (optional)
 
@@ -582,9 +610,6 @@ recategorised or marked invalid.
 In particular, anything that breaks a regression test is a
 regression.
 
-@item
-Patch: a patch to fix an issue is attached.
-
 @item
 Frog: the fix is believed to be suitable for a new contributor
 (does not require a great deal of knowledge about LilyPond).  The
@@ -723,24 +748,29 @@ was sent to multiple mailing lists (such as both @code{bugs} and
 email should contain a link to the issue you just added.
 
 
-
 @node Summary of project status
 @section Summary of project status
 
-The best overview of our current status is given by the grid view:
+@subsubheading Project overview
+
+Grid view provides the best overview:
 
 @example
 @uref{http://code.google.com/p/lilypond/issues/list?mode=grid&y=Priority&x=Type&cells=ids}
 @end example
 
-Also of interest might be the issues hindering future development:
+@subsubheading Hindering development
+
+These issues stop or slow development work:
 
 @example
 @uref{http://code.google.com/p/lilypond/issues/list?can=2&q=label:Maintainability&mode=grid&y=Priority&x=Type&cells=ids}
 @end example
 
-Finally, issues tagged with @code{Frog} indicates a task suitable
-for a relatively new contributor.  The time given is a quick
+@subsubheading Easy tasks
+
+Issues tagged with @code{Frog} indicates a task suitable for a
+relatively new contributor.  The time given is a quick
 (inaccurate) estimate of the time required for somebody who is
 familiar with material in this manual, but does not know anything
 else about LilyPond development.
@@ -749,147 +779,13 @@ else about LilyPond development.
 @uref{http://code.google.com/p/lilypond/issues/list?can=2&q=label:Frog&mode=grid&y=Priority&x=Type&cells=ids}
 @end example
 
+@subsubheading Patches to review
 
-@node Finding the cause of a regression
-@section Finding the cause of a regression
-
-@warning{This is not a @qq{simple} task; it requires a fair amount
-of technical knowledge.}
-
-Git has special functionality to help tracking down the exact
-commit which causes a problem.  See the git manual page for
-@code{git bisect}.  This is a job that non-programmers can do,
-although it requires familiarity with git, ability to compile
-LilyPond, and generally a fair amount of technical knowledge.  A
-brief summary is given below, but you may need to consult other
-documentation for in-depth explanations.
-
-Even if you are not familiar with git or are not able to compile
-LilyPond you can still help to narrow down the cause of a
-regression simply by downloading the binary releases of different
-LilyPond versions and testing them for the regression.  Knowing
-which version of LilyPond first exhibited the regression is
-helpful to a developer as it shortens the @code{git bisect}
-procedure.
-
-Once a problematic commit is identified, the programmers' job is
-much easier.  In fact, for most regression bugs, the majority of
-the time is spent simply finding the problematic commit.
-
-More information is in @ref{Regression tests}.
-
-@subheading git bisect setup
-
-We need to set up the bisect for each problem we want to
-investigate.
-
-Suppose we have an input file which compiled in version 2.13.32,
-but fails in version 2.13.38 and above.
-
-@enumerate
-@item
-Begin the process:
-
-@example
-git bisect start
-@end example
-
-@item
-Give it the earliest known bad tag:
-
-@example
-git bisect bad release/2.13.38-1
-@end example
-
-(you can see tags with: @code{git tag} )
-
-@item
-Give it the latest known good tag:
-
-@example
-git bisect good release/2.13.32-1
-@end example
-
-You should now see something like:
-@example
-Bisecting: 195 revisions left to test after this (roughly 8 steps)
-[b17e2f3d7a5853a30f7d5a3cdc6b5079e77a3d2a] Web: Announcement
-update for the new @qq{LilyPond Report}.
-@end example
-
-@end enumerate
-
-@subheading git bisect actual
-
-@enumerate
-
-@item
-Compile the source:
-
-@example
-make
-@end example
-
-@item
-Test your input file:
-
-@example
-out/bin/lilypond test.ly
-@end example
-
-@item
-Test results?
-
-@itemize
-@item
-Does it crash, or is the output bad?  If so:
+Patches which have no @qq{obvious} problems:
 
 @example
-git bisect bad
+@uref{http://code.google.com/p/lilypond/issues/list?can=2&q=label:patch-review}
 @end example
 
-@item
-Does your input file produce good output?  If so:
 
-@example
-git bisect good
-@end example
 
-@end itemize
-
-@item
-Once the exact problem commit has been identified, git will inform
-you with a message like:
-
-@example
-6d28aebbaaab1be9961a00bf15a1ef93acb91e30 is the first bad commit
-%%% ... blah blah blah ...
-@end example
-
-If there is still a range of commits, then git will automatically
-select a new version for you to test.  Go to step #1.
-
-@end enumerate
-
-@subheading Recommendation: use two terminal windows
-
-@itemize
-@item
-One window is open to the @code{build/} directory, and alternates
-between these commands:
-
-@example
-make
-out/bin/lilypond test.ly
-@end example
-
-@item
-One window is open to the top source directory, and alternates
-between these commands:
-
-@example
-git bisect good
-git bisect bad
-@end example
-
-@end itemize
index 1e0c37fbd28e6f22bca9531b871b80580de21977..6f3bbb824a6b4e505b57d51d1dea693069b55d21 100644 (file)
@@ -1310,7 +1310,7 @@ get help from a Linux or OSX developer to do the make tests.
 In order to avoid breaking LilyPond, it is important to verify that
 the regression tests succeed, and that no unwanted changes are
 introduced into the output.  This process is described in
-@ref{Identifying code regressions}.
+@ref{Regtest comparison}.
 
 @subheading Typical developer's edit/compile/test cycle
 
index e0ea3f6554590272b232c0d8fa35f1bb6199080d..6da1913bda3fcf263a62d6520993e64d750e8ca7 100644 (file)
@@ -59,19 +59,19 @@ Download the Ubuntu LilyPond Developer Remix disk image:
 (approximately 1 GB)
 
 @example
-@uref{http://files.lilynet.net/ubuntu-lilydev-remix-1.0.iso}
+@uref{http://files.lilynet.net/ubuntu-lilydev-remix-1.1.iso}
 @end example
 
 @advanced{Some users might want these files, but if you don't
 recognize what they are, then you don't want them:
 @*
-@uref{http://files.lilynet.net/ubuntu-lilydev-remix-1.0.iso.md5}
-@*
-@uref{http://files.lilynet.net/ubuntu-lilydev-remix-1.0.iso.torrent}
+@uref{http://files.lilynet.net/ubuntu-lilydev-remix-1.1.iso.md5}
+@c @*
+@c @uref{http://files.lilynet.net/ubuntu-lilydev-remix-1.0.iso.torrent}
 }
 
 @item
-Create a new @qq{virtual machine} inside your virtualization
+Create a music new @qq{virtual machine} inside your virtualization
 software.
 
 If possible, use at least 700 MB of RAM (1GB would be better) for
@@ -86,7 +86,7 @@ on your virtualized system.
 @enumerate
 
 @item
-When @file{lilydev2.iso} boots, it shows an ISOLINUX
+When @file{lilydev.iso} boots, it shows an ISOLINUX
 @code{boot:} prompt.  Type:
 
 @example
index 2695f1cfc92c3a76c474de713b811bc3b8738d71..e2216f1a0bbc9c0052f30d80726882c9a4d91006 100644 (file)
@@ -6,7 +6,8 @@
 * Introduction to regression tests::
 * Precompiled regression tests::
 * Compiling regression tests::
-* Identifying code regressions::
+* Regtest comparison::
+* Finding the cause of a regression::
 * Memory and coverage tests::
 * MusicXML tests::
 @end menu
@@ -173,8 +174,8 @@ than building the source code, as described in
 @ref{Requirements for building documentation}.
 
 
-@node Identifying code regressions
-@section Identifying code regressions
+@node Regtest comparison
+@section Regtest comparison
 
 Before modified code is committed to master, a regression test
 comparison must be completed to ensure that the changes have
@@ -262,6 +263,148 @@ automatic regression comparison again.
 @end enumerate
 
 
+@node Finding the cause of a regression
+@section Finding the cause of a regression
+
+Git has special functionality to help tracking down the exact
+commit which causes a problem.  See the git manual page for
+@code{git bisect}.  This is a job that non-programmers can do,
+although it requires familiarity with git, ability to compile
+LilyPond, and generally a fair amount of technical knowledge.  A
+brief summary is given below, but you may need to consult other
+documentation for in-depth explanations.
+
+Even if you are not familiar with git or are not able to compile
+LilyPond you can still help to narrow down the cause of a
+regression simply by downloading the binary releases of different
+LilyPond versions and testing them for the regression.  Knowing
+which version of LilyPond first exhibited the regression is
+helpful to a developer as it shortens the @code{git bisect}
+procedure.
+
+Once a problematic commit is identified, the programmers' job is
+much easier.  In fact, for most regression bugs, the majority of
+the time is spent simply finding the problematic commit.
+
+More information is in @ref{Regression tests}.
+
+@subheading git bisect setup
+
+We need to set up the bisect for each problem we want to
+investigate.
+
+Suppose we have an input file which compiled in version 2.13.32,
+but fails in version 2.13.38 and above.
+
+@enumerate
+@item
+Begin the process:
+
+@example
+git bisect start
+@end example
+
+@item
+Give it the earliest known bad tag:
+
+@example
+git bisect bad release/2.13.38-1
+@end example
+
+(you can see tags with: @code{git tag} )
+
+@item
+Give it the latest known good tag:
+
+@example
+git bisect good release/2.13.32-1
+@end example
+
+You should now see something like:
+@example
+Bisecting: 195 revisions left to test after this (roughly 8 steps)
+[b17e2f3d7a5853a30f7d5a3cdc6b5079e77a3d2a] Web: Announcement
+update for the new @qq{LilyPond Report}.
+@end example
+
+@end enumerate
+
+@subheading git bisect actual
+
+@enumerate
+
+@item
+Compile the source:
+
+@example
+make
+@end example
+
+@item
+Test your input file:
+
+@example
+out/bin/lilypond test.ly
+@end example
+
+@item
+Test results?
+
+@itemize
+@item
+Does it crash, or is the output bad?  If so:
+
+@example
+git bisect bad
+@end example
+
+@item
+Does your input file produce good output?  If so:
+
+@example
+git bisect good
+@end example
+
+@end itemize
+
+@item
+Once the exact problem commit has been identified, git will inform
+you with a message like:
+
+@example
+6d28aebbaaab1be9961a00bf15a1ef93acb91e30 is the first bad commit
+%%% ... blah blah blah ...
+@end example
+
+If there is still a range of commits, then git will automatically
+select a new version for you to test.  Go to step #1.
+
+@end enumerate
+
+@subheading Recommendation: use two terminal windows
+
+@itemize
+@item
+One window is open to the @code{build/} directory, and alternates
+between these commands:
+
+@example
+make
+out/bin/lilypond test.ly
+@end example
+
+@item
+One window is open to the top source directory, and alternates
+between these commands:
+
+@example
+git bisect good
+git bisect bad
+@end example
+
+@end itemize
+
+
 @node Memory and coverage tests
 @section Memory and coverage tests
 
index 13e3b18be8e1362a7132486b569b004677cb5445..c952506ccc0b76011c2b0f7af252345d8a4ec2c9 100644 (file)
@@ -1017,6 +1017,11 @@ After prompting for your Google email address and password, the
 patch set will be posted to Rietveld, and you will be given a URL
 for your patch.
 
+@warning{Some installations of git-cl fail when uploading a patch
+set that includes a .scm file.  When this happens, it can
+generally be fixed by editing the file @file{/etc/mime.types}.
+Add a line to this file containing @code{text/x-script.scheme scm}.}
+
 @subsubheading Announcing your patch set
 
 You should then announce the patch by logging into the code review
index 57da2a72029921926a29c644a5c09e5244335b13..b833178bfe54a7e17e42862354f1ce1f51bb1855 100644 (file)
@@ -14,7 +14,7 @@
 @section Música vocal
 @translationof Vocal music
 
-@c TODO: inspirational headword
+@lilypondfile[quote]{vocal-headword.ly}
 
 Esta sección explica cómo tipografiar música vocal, y cómo asegurarse
 de que la letra se alinea con las notas de su melodía correspondiente.
index 7227805417f4d720c76f9722567f09e097bb592d..1990180f012237e82a3d35c7e43e4d121d0daf7e 100644 (file)
 Copyright @copyright{} 2009--2011 by the authors.
 
 @quotation
-GNU フリー文書利用許諾契約書バージョン 1.1 
-またはフリー ソフトウェア財団によって発行されたその後のバージョンの@c
-約定に従う限り、@c
-このドキュメントを複製、変更する許可を与えます。@c
-変更不可部分はありません。@c
-この利用許諾契約書のコピーは
-``GNU フリー文書利用許諾契約書'' という章に含まれています。
+GNU フリー文書利用許諾契約書バージョン 1.1 またはフリー ソフトウェア財団によって
+発行されたその後のバージョンの約定に従う限り、このドキュメントを複製、変更する
+許可を与えます。
+変更不可部分はありません。
+この利用許諾契約書のコピーは ``GNU フリー文書利用許諾契約書'' という章に含まれて
+います。
 @end quotation
 @end copying
 
 
+
+@c Info files are no longer installed in a subdirectory, images are
+@c expected to be found in lilypond/ subdirectory.
+@dircategory GNU LilyPond --- 楽譜譜刻プログラム
+@direntry
+* LilyPond 学習マニュアル: (lilypond-learning).        ここから始めてください。
+* 音楽用語集: (music-glossary).                        非英語圏のユーザ向け。
+* LilyPond: (lilypond-notation).                       LilyPond 記譜法リファレンス。
+* LilyPond コード断片集: (lilypond-snippets).          ちょっとしたテクニック、@c
+TIPS、それに例。
+* LilyPond 内部リファレンス: (lilypond-internals).     調整するための定義。
+* LilyPond アプリケーション使用方法: (lilypond-usage). アプリケーションを@c
+インスールして、実行する方法。
+* LilyPond Web サイト: (lilypond-web).                 新しい Web サイトのプレビュー。
+* lilypond: (lilypond-usage)lilypond を実行する.       LilyPond を呼び出す。
+* abc2ly: (lilypond-usage)abc2ly を呼び出す.           ABC をインポートする。
+* convert-ly: (lilypond-usage)convert-ly でファイルを更新する. 古い LilyPond バージョン。
+* etf2ly: (lilypond-usage)etf2ly を呼び出す.           Finale をインポートする。
+* lilypond-book: (lilypond-usage)lilypond-book.        文章と楽譜を統合する。
+* midi2ly: (lilypond-usage)midi2ly を呼び出す.         MIDI をインポートする。
+* musicxml2ly: (lilypond-usage)musicxml2ly を呼び出す. MusicXML をインポートする。
+@end direntry
+
+
 @c TITLE PAGE
 @ifnottex
 @node Top
@@ -65,8 +88,8 @@ GNU フリー文書利用許諾契約書バージョン 1.1
 
 @titlepage
 @title LilyPond
-@subtitle The music typesetter
-@titlefont{General Information}
+@subtitle 楽譜譜刻プログラム
+@titlefont{全般的な情報}
 @author LilyPond 開発チーム
 
 @vskip 0pt plus 1filll
@@ -99,7 +122,10 @@ LilyPond バージョン @version{} 用
 LilyPond は、可能な限り高品位な楽譜を生み出すことを目的とする、@c
 オープン ソースの楽譜作成プログラムです。@c
 このフリー ソフトウェアは、伝統的な彫版の楽譜の美しさを@c
-コンピュータ プリントアウトで実現します。
+コンピュータ プリントアウトで実現します。@c
+LilyPond はフリーソフトウェアであり、@uref{http://gnu.org,GNU プロジェクト}
+の一部です。
+
 
 @divClass{align-right}
 @ref{導入部} を読んで、LilyPond をもっと知ってください!
@@ -152,10 +178,10 @@ LilyPond は、可能な限り高品位な楽譜を生み出すことを目的
 
 @divClass{hide}
 @menu
-* 導入部::     Start here to creating sheet music.
-* ダウンロード::         Get LilyPond.
-* マニュアル::          Read The Fine Manuals (RTFM).
-* Community::        Contact other users.
+* 導入部::               ここから始めて、楽譜を作ってください。
+* ダウンロード::         LilyPond の入手方法。
+* マニュアル::           マニュアルを読んでください。
+* Community::            他のユーザとの交流。
 @end menu
 @divEnd
 
@@ -181,26 +207,6 @@ Distributions will want to install lilypond.info in postinstall, doing:
 @c    LilyPond  program.
 @end ignore
 
-@c Info files are no longer installed in a subdirectory, images are
-@c expected to be found in lilypond/ subdirectory.
-@dircategory GNU LilyPond --- 楽譜譜刻プログラム
-@direntry
-* LilyPond Learning Manual: (lilypond-learning).  Start here.
-* Music Glossary: (music-glossary).               For non-English users.
-* LilyPond: (lilypond-notation).                           LilyPond Notation Reference.
-* LilyPond Snippets: (lilypond-snippets).         Short tricks, tips, and examples.
-* LilyPond Internals Reference: (lilypond-internals).  Definitions for tweaking.
-* LilyPond Application Usage: (lilypond-application). Installing and running applications.
-* LilyPond Website: (lilypond-general).    Preview of new website.
-* abc2ly: (lilypond-application)Invoking abc2ly.      Importing ABC.
-* convert-ly: (lilypond-application)Updating files with convert-ly. Older LilyPond versions.
-* etf2ly: (lilypond-application)Invoking etf2ly.      Importing Finale.
-* lilypond-book: (lilypond-application)LilyPond-book. Integrating text and music.
-* midi2ly: (lilypond-application)Invoking midi2ly.    Importing MIDI.
-* musicxml2ly: (lilypond-application)Invoking musicxml2ly.  Importing MusicXML.
-@end direntry
-
-
 @c FIXME: this still doesn't solve the broken links in pdf and big
 @c        html; we'll need a bunch of @iftext and stuff in here. -gp
 @c ****************** SPECIAL MACROS FOR WEB MANUAL ************
@@ -214,7 +220,7 @@ Distributions will want to install lilypond.info in postinstall, doing:
 
 @macro docLinkSplit{name,base,webLink}
 @ifclear web_version
-  @uref{../\base\/index.html, \name\ (split HTML)}
+  @uref{../\base\/index.html, \name\ (ページ毎に分割された HTML)}
 @end ifclear
 @ifset web_version
   \webLink\
@@ -223,7 +229,7 @@ Distributions will want to install lilypond.info in postinstall, doing:
 
 @macro docLinkBig{name,base,webLink}
 @ifclear web_version
-  @uref{../\base\-big-page.html, \name\ (big HTML)}
+  @uref{../\base\-big-page.html, \name\ (1 つの大きな HTML)}
 @end ifclear
 @ifset web_version
   \webLink\
@@ -246,15 +252,15 @@ Distributions will want to install lilypond.info in postinstall, doing:
 
 @item @docLinkSplit{\name\,\base\,\split\} @minus{}
   このマニュアルはいくつもの HTML ページに分割されています。
-  @*@ @ @emph{(small download for each page)}
+  @*@ @ @emph{(ページ毎の小さなダウンロード)}
 
 @item @docLinkBig{\name\,\base\,\big\} @minus{}
   このマニュアルは 1 つの巨大な HTML ページです。
-  @*@ @ @emph{(large single download, \bigsize\)}
+  @*@ @ @emph{(大きな単一のダウンロード, \bigsize\)}
 
 @item @docLinkPdf{\name\,\base\,\pdf\} @minus{}
   日本語では PDF 形式での提供はありません。
-  @*@ @ @emph{(large single download, \pdfsize\)}
+  @*@ @ @emph{(大きな単一のダウンロード, \pdfsize\)}
 
 @end itemize
 
@@ -273,6 +279,33 @@ Distributions will want to install lilypond.info in postinstall, doing:
 @end macro
 
 
+@ifhtml
+@macro contactUsAbout{topic}
+
+@divClass{heading-center}
+@divClass{contactBox}
+If you are aware of any other \topic\ which could be listed here,
+please let us know by following the instructions on
+@ref{Bug reports}.
+
+@divEnd
+@divEnd
+
+@end macro
+@end ifhtml
+
+@ifnothtml
+@macro contactUsAbout{topic}
+@cartouche
+If you are aware of any other \topic\ which could be listed here,
+please let us know by following the instructions on
+@ref{Bug reports}.
+
+@end cartouche
+
+@end macro
+@end ifnothtml
+
 @include web/introduction.itexi
 @include web/download.itexi
 @include web/manuals.itexi
index 0979e058f44c66f7c8c0187908155f1e7a3b2cff..fa12a3528c07694a12c7c9854a4d27f4d9e15278 100644 (file)
@@ -1,6 +1,6 @@
 @c -*- coding: utf-8; mode: texinfo; documentlanguage: ja -*-
 @ignore
-    Translation of GIT committish: 9a65042d49324f2e3dff18c4b0858def81232eea
+    Translation of GIT committish: 42ae342ba877dc8f26cabb5cc3937a6d3cdb4066
 
     When revising a translation, copy the HEAD committish of the
     version that you are working on.  For details, see the Contributors'
 @unnumbered マニュアル
 @translationof Manuals
 
+@macro details{reference}
+@spanClass{detail}
+(@ref{\reference\, \reference\} の詳細)
+@spanEnd
+@end macro
+
 @divClass{heading-center}
 @ifclear web_version
   @heading LilyPond @version 用のドキュメント
 @end ifclear
 @ifset web_version
   @heading LilyPond @versionStable 用のドキュメント
-  @heading Manuals for LilyPond @versionStable
 @end ifset
 
 @divEnd
 
-@c TODO: do we want these links to be in larger text / bold ?   CSS.
+@divClass{link-headings}
 
-@c if you change this page, also change All.
 @divClass{column-center-top}
 @subheading 導入部
 
 
 @item @ref{テキスト入力}:
 LilyPond は @strong{テキスト ベース} の楽譜作成プログラムです。@c
\81\93ã\81®ã\82³ã\83³ã\82»ã\83\97ã\83\88ã\81«é¦´æ\9f\93ã\81¿ã\81\8cç\84¡ã\81\84ã\81®ã\81§ã\81\82ã\82\8cã\81°ã\80\81ä»\8aã\81\99ã\81\90このドキュメントを読んでください!
\81¾ã\81\9aæ\9c\80å\88\9dã\81«このドキュメントを読んでください!
 
-@item @ref{学習}:
+@item @ifWebLinks{@manualStableLearningSplitNoName,@rlearningnamed{Top,学習}}
 @qq{必読} のやさしい LilyPond 入門書です。
+@details{学習}
 
-@item @ref{用語集}:
+@item @ifWebLinks{@manualStableGlossarySplitNoName,@rglosnamed{Top,用語集}}
 @emph{(副読本)}
 音楽用語についての説明と、
 英語の音楽用語に馴染みの無いユーザのための訳語を提供します。
+@details{用語集}
 
-@item @ref{エッセー}:
+@item @ifWebLinks{@manualStableEssaySplitNoName,@ressaynamed{Top,Essay}}
 @emph{(副読本)}
-譜刻プロセスについての背景と、19 世紀の楽譜の審美性。
+コンピュータによる譜刻についての背景。
+@details{エッセー}
 
 @end itemize
 
@@ -57,16 +64,17 @@ LilyPond は @strong{テキスト ベース} の楽譜作成プログラムで
 
 @itemize
 
-@item @ref{記譜法}:
-このドキュメントの主要部です:
-楽譜作成についての詳しい情報を提供します。
+@item @ifWebLinks{@manualStableNotationSplitNoName,@rusernamed{Top,記譜法}}
+構文リファレンス。
+@details{記譜法}
 
-@item @ref{使用方法}:
\83\97ã\83­ã\82°ã\83©ã\83 ã\81®å®\9fé\9a\9bã\81¨ã\80\81ã\82ªã\83\9aã\83¬ã\83¼ã\82·ã\83§ã\83³ ã\82·ã\82¹ã\83\86ã\83 ç\89¹æ\9c\89ã\81®å\95\8fé¡\8cã\81«ã\81¤ã\81\84ã\81¦@c
-議論します。
+@item @ifWebLinks{@manualStableUsageSplitNoName,@rprogramnamed{Top,使用方法}}
\81\93ã\81®ã\83\97ã\83­ã\82°ã\83©ã\83 ã\81®å®\9fè¡\8cæ\96¹æ³\95ã\80\82
+@details{使用方法}
 
-@item @ref{コード断片集}:
-ちょっとしたトリック、秘訣、例。
+@item @ifWebLinks{@manualStableSnippetsSplitNoName,@rlsrnamed{Top,Snippets}}
+ちょっとしたトリック、秘訣。
+@details{コード断片集}
 
 @end itemize
 
@@ -79,16 +87,23 @@ LilyPond は @strong{テキスト ベース} の楽譜作成プログラムで
 @itemize
 
 @item @ref{FAQ}:
-FAQ の回答へのリンク。
+頻繁に質問されること。
+
+@item @ref{Top, Web}:
+このドキュメント。
+@details{Web}
 
-@item @ref{変更点}:
-最新のメジャー バージョンから変更された点。
+@item @ifWebLinks{@manualStableChangesSplitNoName,@rchangesnamed{Top,Changes}}
+変更点。
+@details{変更点}
 
-@item @ref{拡張}:
-LilyPond での思いつきの調整をプログラミングします。
+@item @ifWebLinks{@manualStableExtendingSplitNoName,@rextendnamed{Top,Extending}}
+変則的な調整。
+@details{拡張}
 
-@item @ref{内部リファレンス}:
-調整を行うために必要となる、LilyPond の内部構造についての情報。
+@item @ifWebLinks{@manualStableInternalsSplitNoName,@rinternalsnamed{Top,Internals}}
+調整のためのリファレンス。
+@details{内部リファレンス}
 
 @end itemize
 
@@ -104,7 +119,7 @@ LilyPond での思いつきの調整をプログラミングします。
 非英語圏の読者のための翻訳状況。
 
 @item @ref{すべて}:
\82¯ã\82¤ã\83\83ã\82¯ ã\83ªã\83³ã\82¯ã\80\81ã\83\80ã\82¦ã\83³ã\83­ã\83¼ã\83\89å\8f¯è\83½ã\81ªã\83\9eã\83\8bã\83¥ã\82¢ã\83«ã\80\81ã\81\9dã\82\8cã\81«古いマニュアル。
\83\80ã\82¦ã\83³ã\83­ã\83¼ã\83\89å\8f¯è\83½ã\81ªã\83\90ã\83¼ã\82¸ã\83§ã\83³ã\81¨古いマニュアル。
 
 @item @ref{Development}:
 開発バージョンのためのマニュアル。
@@ -120,20 +135,20 @@ LilyPond での思いつきの調整をプログラミングします。
 
 @divClass{hide}
 @menu
-* 学習::           学習
-* 用語集::         用語集
-* エッセー::       エッセー
-* 記譜法::         リファレンス
-* 使用方法::       使用方法
-* コード断片集::   コード断片集
-* Web::            Web
-* FAQ::            FAQ
-* 変更点::         ニュース
+* 学習::            学習
+* 用語集::          用語集
+* エッセー::        エッセー
+* 記譜法::          リファレンス
+* 使用方法::        使用方法
+* コード断片集::    コード断片集
+* FAQ::             FAQ
+* Web::             Web
+* 変更点::          ニュース
 * 拡張::           プログラミング
 * 内部リファレンス::内部リファレンス
 * 翻訳済み::        翻訳
 * すべて::          すべてのマニュアル
-* FDL::            ライセンス
+* FDL::             ライセンス
 @end menu
 
 @divEnd
@@ -165,47 +180,12 @@ LilyPond での思いつきの調整をプログラミングします。
 
 @docLinks{学習, learning,
   @rlearningnamed{Top,学習},
-  @manualStableLearningSplit-ja,
-  @manualStableLearningBig-ja, 1.5 MB,
-  @manualStableLearningPdf-ja, 3 MB}
+  @manualStableLearningSplit,
+  @manualStableLearningBig, 1.5 MB,
+  @manualStableLearningPdf, 3 MB}
 
 @divEnd
 
-@ignore
-@subheading お読みください
-
-@itemize
-
-@item @rlearningnamed{Top,学習マニュアル}:
-マニュアルをこのページと同じフォーマットで読むことができます。
-
-@end itemize
-
-@subheading すべてのフォーマット
-
-@divClass{keep-bullets}
-@itemize
-
-@item @uref{../learning/index.html, 学習マニュアル (分割 HTML)}:
-このマニュアルはいくつもの HTML ページに分割されています。@c
-@emph{(ページごとの小さなダウンロード)}
-
-@item @uref{../learning-big-page.html, 学習マニュアル (大きな HTML)}:
-このマニュアルは 1 つの巨大な HTML ページです。@c
-@emph{(約 10? Mb の大きなダウンロード)}
-
-@c @item @uref{../learning.pdf, learning.pdf}:
-@item learning.pdf:
-日本語では PDF 形式での提供はありません。
-
-@c TODO: should make links to info?
-@c @item @uref{../TODO, learning.info}:
-@c GNU info format for documentation.  link broken.
-
-@end itemize
-@divEnd
-@divEnd
-@end ignore
 
 @node 用語集
 @unnumberedsec 用語集
@@ -225,48 +205,11 @@ LilyPond での思いつきの調整をプログラミングします。
 
 @docLinks{音楽用語集, music-glossary,
   @rglosnamed{Top,音楽用語集},
-  @manualStableGlossarySplit-ja,
-  @manualStableGlossaryBig-ja, 1 MB,
-  @manualStableGlossaryPdf-ja, 1.5 MB}
-
-@divEnd
-
-
-@ignore
-@divClass{column-right-bottom}
-@subheading お読みください
-
-@itemize
-
-@item @rglosnamed{Top,音楽用語集}:
-マニュアルをこのページと同じフォーマットで読むことができます。
-
-@end itemize
-
-@subheading すべてのフォーマット
-
-@divClass{keep-bullets}
-@itemize
-
-@item @uref{../music-glossary/index.html, 音楽用語集 (分割 HTML)}:
-このマニュアルはいくつもの HTML ページに分割されています。@c
-@emph{(ページごとの小さなダウンロード)}
-
-@item @uref{../music-glossary-big-page.html, 音楽用語集 (大きな HTML)}:
-このマニュアルは 1 つの巨大な HTML ページです。@c
-@emph{(約 10? Mb の大きなダウンロード)}
+  @manualStableGlossarySplit,
+  @manualStableGlossaryBig, 1 MB,
+  @manualStableGlossaryPdf, 1.5 MB}
 
-@c @item @uref{../music-glossary.pdf, glossary.pdf}:
-@item glossary.pdf:
-日本語では PDF 形式での提供はありません。
-
-@c @item @uref{../TODO, glossary.info}:
-@c GNU info format for documentation.  TODO, link broken.
-
-@end itemize
 @divEnd
-@divEnd
-@end ignore
 
 
 @node エッセー
@@ -289,48 +232,11 @@ LilyPond の譜刻テクニックの例を挙げます。@c
 
 @docLinks{エッセー, essay,
   @ressaynamed{Top,エッセー},
-  @manualStableEssaySplit-ja,
-  @manualStableEssayBig-ja, 2 MB,
-  @manualStableEssayPdf-ja, 2.5 MB}
-
-@divEnd
-
-
-@ignore
-@divClass{column-right-bottom}
-@subheading お読みください
-
-@itemize
-
-@item @ressaynamed{Top,エッセー}:
-マニュアルをこのページと同じフォーマットで読むことができます。
-
-@end itemize
-
-@subheading すべてのフォーマット
-
-@divClass{keep-bullets}
-@itemize
-
-@item @uref{../essay/index.html, エッセー (分割 HTML)}:
-このマニュアルはいくつもの HTML ページに分割されています。@c
-@emph{(ページごとの小さなダウンロード)}
-
-@item @uref{../essay-big-page.html, エッセー (大きな HTML)}:
-このマニュアルは 1 つの巨大な HTML ページです。@c
-@emph{(約 ?? Mb の大きなダウンロード)}
-
-@c @item @uref{../essay.pdf, essay.pdf}:
-@item essay.pdf:
-日本語では PDF 形式での提供はありません。
-
-@c @item @uref{../TODO, essay.info}:
-@c GNU info format for documentation.  TODO, link broken.
+  @manualStableEssaySplit,
+  @manualStableEssayBig, 2 MB,
+  @manualStableEssayPdf, 2.5 MB}
 
-@end itemize
-@divEnd
 @divEnd
-@end ignore
 
 
 @node 記譜法
@@ -354,49 +260,13 @@ LilyPond の譜刻テクニックの例を挙げます。@c
 
 @docLinks{記譜法, notation,
   @rusernamed{Top,記譜法},
-  @manualStableNotationSplit-ja,
-  @manualStableNotationBig-ja, 7 MB,
-  @manualStableNotationPdf-ja, 18 MB}
+  @manualStableNotationSplit,
+  @manualStableNotationBig, 7 MB,
+  @manualStableNotationPdf, 18 MB}
 
 @divEnd
 
 
-@ignore
-@divClass{column-right-bottom}
-@subheading お読みください
-
-@itemize
-
-@item @rusernamed{Top,記譜法リファレンス}:
-マニュアルをこのページと同じフォーマットで読むことができます。
-
-@end itemize
-
-@subheading すべてのフォーマット
-
-@divClass{keep-bullets}
-@itemize
-
-@item @uref{../notation/index.html, 記譜法リファレンス (分割 HTML)}:
-このマニュアルはいくつもの HTML ページに分割されています。@c
-@emph{(ページごとの小さなダウンロード)}
-
-@item @uref{../notation-big-page.html, 記譜法リファレンス (大きな HTML)}:
-このマニュアルは 1 つの巨大な HTML ページです。@c
-@emph{(約 10? Mb の大きなダウンロード)}
-
-@c @item @uref{../notation.pdf, notation.pdf}:
-@item notation.pdf:
-日本語では PDF 形式での提供はありません。
-
-@c @item @uref{../TODO, notation.info}:
-@c GNU info format for documentation.  TODO, link broken.
-
-@end itemize
-@divEnd
-@divEnd
-@end ignore
-
 @node 使用方法
 @unnumberedsec 使用方法
 @translationof Usage
@@ -414,48 +284,13 @@ LilyPond 記譜法を他のプログラムと統合する方法について説
 
 @docLinks{使用方法, usage,
   @rprogramnamed{Top,使用方法},
-  @manualStableUsageSplit-ja,
-  @manualStableUsageBig-ja, 300 KB,
-  @manualStableUsagePdf-ja, 400 KB}
+  @manualStableUsageSplit,
+  @manualStableUsageBig, 300 KB,
+  @manualStableUsagePdf, 400 KB}
 
 @divEnd
 
 
-@ignore
-@subheading お読みください
-
-@itemize
-
-@item @rprogramnamed{Top,使用方法}:
-マニュアルをこのページと同じフォーマットで読むことができます。
-
-@end itemize
-
-@subheading すべてのフォーマット
-
-@divClass{keep-bullets}
-@itemize
-
-@item @uref{../usage/index.html, 使用方法 (分割 HTML)}:
-このマニュアルはいくつもの HTML ページに分割されています。@c
-@emph{(ページごとの小さなダウンロード)}
-
-@item @uref{../usage-big-page.html, 使用方法 (大きな HTML)}:
-このマニュアルは 1 つの巨大な HTML ページです。@c
-@emph{(約 10? Mb の大きなダウンロード)}
-
-@c @item @uref{../usage.pdf, usage.pdf}:
-@item usage.pdf:
-日本語では PDF 形式での提供はありません。
-
-@c @item @uref{../TODO, lilypond-usage.info}:
-@c GNU info format for documentation.  TODO, link broken.
-
-@end itemize
-@divEnd
-@divEnd
-@end ignore
-
 @node コード断片集
 @unnumberedsec コード断片集
 @translationof Snippets
@@ -482,69 +317,9 @@ LSR は LilyPond の安定版で実行することを前提としているため
 
 @docLinks{コード断片集, snippets,
   @rlsrnamed{Top,コード断片集},
-  @manualStableSnippetsSplit-ja,
-  @manualStableSnippetsBig-ja, 2.5 MB,
-  @manualStableSnippetsPdf-ja, 8 MB}
-
-@divEnd
-
-
-@ignore
-@subheading お読みください
-
-@itemize
-
-@item @rlsrnamed{Top,コード断片集}:
-マニュアルをこのページと同じフォーマットで読むことができます。
-
-@end itemize
-
-@subheading すべてのフォーマット
-
-@divClass{keep-bullets}
-@itemize
-
-@item @uref{../snippets/index.html, コード断片集 (分割 HTML)}:
-このマニュアルはいくつもの HTML ページに分割されています。@c
-@emph{(ページごとの小さなダウンロード)}
-
-@item @uref{../snippets-big-page.html, 断片集 (大きな HTML)}:
-このマニュアルは 1 つの巨大な HTML ページです。@c
-@emph{(約 10? Mb の大きなダウンロード)}
-
-@c @item @uref{../snippets.pdf, snippets.pdf}:
-@item snippets.pdf:
-日本語では PDF 形式での提供はありません。
-
-@c @item @uref{../TODO, snippets.info}:
-@c GNU info format for documentation.  TODO, link broken.
-
-@end itemize
-@divEnd
-@divEnd
-@end ignore
-
-
-@node Web
-@unnumberedsec Web
-@translationof Web
-
-@divClass{column-left-top}
-@subheading Web
-
-本書は LilyPond についての全般的な情報を提供します。@c
-さらに、さまざまなコミュニティ フォーラム、バグ レポート、@c
-それに開発についての情報も含んでいます。
-
-@divEnd
-
-@divClass{column-right-bottom}
-
-@docLinks{Web, web,
-  @ref{Top,,,,Web},
-  @manualStableWebSplit-ja,
-  @manualStableWebBig-ja, 1 MB,
-  @manualStableWebPdf-ja, 2 MB}
+  @manualStableSnippetsSplit,
+  @manualStableSnippetsBig, 2.5 MB,
+  @manualStableSnippetsPdf, 8 MB}
 
 @divEnd
 
@@ -554,18 +329,16 @@ LSR は LilyPond の安定版で実行することを前提としているため
 @translationof FAQ
 
 @divClass{column-center-top}
-@subheading 使用前の質問
+@subheading 使い始めの質問
 
 @subsubheading グラフィカルなキャンバス、メニュー、それにツールバーはどこに@c
 あるのですか?
-@c Where are the graphical canvas, menus, and toolbars?
 
 LilyPond は、ユーザが音楽をテキストで書くソフトウェアです。@c
 @ref{テキスト入力} を読んでください。
 
 
 @subsubheading ドキュメントがたくさんあります!すべて読む必要があるのですか!?
-@c There's a lot of documentation!  Do I need to read it?
 
 読む必要があるのは @ref{学習, 学習マニュアル} です。@c
 他のドキュメントで読む必要があるのは、@c
@@ -573,7 +346,6 @@ LilyPond は、ユーザが音楽をテキストで書くソフトウェアで
 
 
 @subsubheading それでもまだ、読むものがたくさんあります!そこまでする価値のあるソフトウェアなのですか?
-@c That's still a lot of reading!  Is it worth it?
 
 あなた自身で決めてください。@c
 LilyPond を使う理由については、@ref{導入部} に書かれています。
@@ -585,86 +357,80 @@ LilyPond を使う理由については、@ref{導入部} に書かれていま
 @c Usage questions
 
 @subsubheading 何かがうまくいっていません!どうやって直せば良いのですか?
-@c Something isn't working!  How do I fix it?
 
-修正方法については、@rprogram{トラブルシューティング (すべてをバラバラにする)} で説明されています。
-@c @rprogram{Troubleshooting}.
+修正方法については、@rprogram{トラブルシュート} で説明されています。
 
 
 @subsubheading 何故、構文が変更されるのですか?
-@c Why do you change the syntax?
 
 そのことについては、@rprogram{何故構文は変更されるのか?} で説明されています。
-@c @rprogram{Why does the syntax change?}.
 
 @divEnd
 
 
-@node 変更点
-@unnumberedsec 変更点
-@translationof Changes
+@node Web
+@unnumberedsec Web
+@translationof Web
 
 @divClass{column-left-top}
-@subheading 変更点
-@c Changes
+@subheading Web
 
-本書は、LilyPond の前の安定バージョンからの、@c
-重要な変更点と新しい機能についての要約です。
+本書は LilyPond についての全般的な情報を提供します。@c
+さらに、さまざまなコミュニティ フォーラム、バグ レポート、@c
+それに開発についての情報も含んでいます。
 
 @divEnd
 
 @divClass{column-right-bottom}
+@subheading お読みください
 
-@docLinks{変更点, changes,
-  @rchangesnamed{Top,変更点},
-  @manualStableChangesSplit-ja,
-  @manualStableChangesBig-ja, 6 KB,
-  @manualStableChangesPdf-ja, 200 KB}
+@subsubheading 最新のマニュアル
 
+@divClass{keep-bullets}
+@itemize
+@ref{Top,Web}
+@end itemize
+@divEnd
 
-@ignore
-@subheading お読みください
+@subsubheading @versionDevel の Web マニュアル
 
-@itemize
+@docLinksBare{Web, web,
+  @ref{Top,Web},
+  @manualDevelWebSplit,
+  @manualDevelWebBig, 1 MB,
+  @manualDevelWebPdf, 2 MB}
 
-@item @rchangesnamed{Top,変更点}:
-マニュアルをこのページと同じフォーマットで読むことができます。
+@divEnd
 
-@end itemize
 
-@subheading すべてのフォーマット
+@node 変更点
+@unnumberedsec 変更点
+@translationof Changes
 
-@divClass{keep-bullets}
-@itemize
+@divClass{column-left-top}
+@subheading 変更点
 
-@item @uref{../changes/index.html, 変更点 (分割 HTML)}:
-このマニュアルはいくつもの HTML ページに分割されています。@c
-@emph{(ページごとの小さなダウンロード)}
+本書は、LilyPond の前の安定バージョンからの、@c
+重要な変更点と新しい機能についての要約です。
 
-@item @uref{../changes-big-page.html, Changes (大きな HTML)}:
-このマニュアルは 1 つの巨大な HTML ページです。@c
-@emph{(約 10? Mb の大きなダウンロード)}
+@divEnd
 
-@c @item @uref{../changes.pdf, changes.pdf}:
-@item changes.pdf:
-日本語では PDF 形式での提供はありません。
+@divClass{column-right-bottom}
 
-@c @item @uref{../TODO, changes.info}:
-@c GNU info format for documentation.  TODO, link broken.
+@docLinks{変更点, changes,
+  @rchangesnamed{Top,変更点},
+  @manualStableChangesSplit,
+  @manualStableChangesBig, 6 KB,
+  @manualStableChangesPdf, 200 KB}
 
-@end itemize
-@divEnd
 @divEnd
-@end ignore
-
 
 @node 拡張
 @unnumberedsec 拡張
-@translationof Extend
+@translationof Extending
 
 @divClass{column-left-top}
 @subheading LilyPond の拡張
-@c Extend LilyPond
 
 本書は、LilyPond を拡張する方法について説明しています。
 
@@ -674,45 +440,11 @@ LilyPond を使う理由については、@ref{導入部} に書かれていま
 
 @docLinks{拡張, extend,
   @rextendnamed{Top,拡張},
-  @manualStableExtendingSplit-ja,
-  @manualStableExtendingBig-ja, 200 KB,
-  @manualStableExtendingPdf-ja, 400 KB}
-
-
-@ignore
-@subheading お読みください
-
-@itemize
+  @manualStableExtendingSplit,
+  @manualStableExtendingBig, 200 KB,
+  @manualStableExtendingPdf, 400 KB}
 
-@item @rextendnamed{Top,拡張}: 
-マニュアルをこのページと同じフォーマットで読むことができます。
-
-@end itemize
-
-@subheading すべてのフォーマット
-
-@divClass{keep-bullets}
-@itemize
-
-@item @uref{../extending/index.html, 拡張 (分割 HTML)}:
-このマニュアルはいくつもの HTML ページに分割されています。@c
-@emph{(ページごとの小さなダウンロード)}
-
-@item @uref{../extending-big-page.html, 拡張 (大きな HTML)}:
-このマニュアルは 1 つの巨大な HTML ページです。@c
-@emph{(約 10? Mb の大きなダウンロード)}
-
-@c @item @uref{../extending.pdf, extending.pdf}:
-@item extending.pdf:
-日本語では PDF 形式での提供はありません。
-
-@c @item @uref{../TODO, extending.info}:
-@c GNU info format for documentation.  TODO, link broken.
-
-@end itemize
-@divEnd
 @divEnd
-@end ignore
 
 
 @node 内部リファレンス
@@ -721,7 +453,6 @@ LilyPond を使う理由については、@ref{導入部} に書かれていま
 
 @divClass{column-left-top}
 @subheading 内部リファレンス
-@c Internals reference
 
 本書は、LilyPond のクラス、オブジェクト、それに関数を@c
 それぞれすべて詳細に、かつ具体的にドキュメント化した@c
@@ -744,45 +475,12 @@ HTML ドキュメントでは、それらサブセクションにはクリック
 
 @docLinks{内部リファレンス, internals,
   @rinternalsnamed{Top,内部リファレンス},
-  @manualStableInternalsSplit-ja,
-  @manualStableInternalsBig-ja, 2.5 MB,
-  @manualStableInternalsPdf-ja, 2.8 MB}
-
-
-@ignore
-@subheading お読みください
-
-@itemize
+  @manualStableInternalsSplit,
+  @manualStableInternalsBig, 2.5 MB,
+  @manualStableInternalsPdf, 2.8 MB}
 
-@item @rinternalsnamed{Top,内部リファレンス}: 
-マニュアルをこのページと同じフォーマットで読むことができます。
 
-@end itemize
-
-@subheading すべてのフォーマット
-
-@divClass{keep-bullets}
-@itemize
-
-@item @uref{../internals/index.html, 内部リファレンス (分割 HTML)}:
-このマニュアルはいくつもの HTML ページに分割されています。@c
-@emph{(ページごとの小さなダウンロード)}
-
-@item @uref{../internals-big-page.html, 内部リファレンス (大きな HTML)}:
-このマニュアルは 1 つの巨大な HTML ページです。@c
-@emph{(約 10? Mb の大きなダウンロード)}
-
-@c @item @uref{../internals.pdf, internals.pdf}:
-@item internals.pdf:
-日本語では PDF 形式での提供はありません。
-
-@c @item @uref{../TODO, internals.info}:
-@c GNU info format for documentation.  TODO, link broken.
-
-@end itemize
-@divEnd
 @divEnd
-@end ignore
 
 
 @node 翻訳済み
@@ -801,147 +499,28 @@ HTML ドキュメントでは、それらサブセクションにはクリック
 @unnumberedsec すべて
 @translationof All
 
-@divClass{heading-center}
-@heading ドキュメント クイック リンク
-@c Documentation quick links
-
-他の形式でのマニュアルへのリンクは、@ref{マニュアル} にあります。
-
-@divEnd
-
-@c this should match the (main) manual page.
-@divClass{column-center-top}
-@subheading 導入部
-@c Introduction
-
-@itemize
-
-@c no colon : needed in this section
-@item @ifWebLinks{@manualStableLearningSplit-ja,@rlearningnamed{Top,学習}}
-@qq{必読} のやさしい LilyPond 入門書です。
-
-@item @ifWebLinks{@manualStableGlossarySplit-ja,@rglosnamed{Top,音楽用語集}}
-@emph{(副読本)}
-これは音楽用語集について説明し、@c
-英語の音楽用語に馴染みの無いユーザに訳語を提供します。
-
-@item @ifWebLinks{@manualStableEssaySplit-ja,@ressaynamed{Top,エッセー}}
-@emph{(副読本)}
-楽譜譜刻プロセスと 19 世紀の楽譜譜刻の審美性についてのバックグラウンド情報です。
-
-
-@ignore
-@item @rlearningnamed{Top,学習}:
-@qq{必読} のやさしい LilyPond 入門書です。
-
-@item @rglosnamed{Top,用語集}:
-@emph{(副読本)}
-これは音楽用語集について説明し、@c
-英語の音楽用語に馴染みの無いユーザに訳語を提供します。
-
-@item @ressaynamed{Top,エッセー}:
-@emph{(副読本)}
-楽譜譜刻プロセスと 19 世紀の楽譜譜刻の審美性についてのバックグラウンド情報です。
-@end ignore
-
-@end itemize
-
-@divEnd
-
 @divClass{column-left-top}
-@subheading 常用するマニュアル
-@c Regular use
-
-@itemize
-
-@item @ifWebLinks{@manualStableNotationSplit-ja,@rusernamed{Top,記譜法}}
-このドキュメントの主要部です: 楽譜作成についての詳しい情報を提供します。
-
-@item @ifWebLinks{@manualStableUsageSplit-ja,@rprogramnamed{Top,使用方法}}
-プログラムの実際と、オペレーション システム特有の問題について議論します。
-
-@item @ifWebLinks{@manualStableSnippetsSplit-ja,@rlsrnamed{Top,コード断片集}}
-ちょっとしたトリック、秘訣、例。
-
-
-@ignore
-@item @rusernamed{Top,記譜法}:
-このドキュメントの主要部です: 楽譜作成についての詳しい情報を提供します。
-
-@item @rprogramnamed{Top,使用方法}:
-プログラムの実際と、オペレーション システム特有の問題について議論します。
-
-@item @rlsrnamed{Top,コード断片集}:
-ちょっとしたトリック、秘訣、例。
-@end ignore
-
-@end itemize
-
-@divEnd
-
-
-@divClass{column-right-top}
-@subheading 常用外のマニュアル
-@c Infrequent Use
-
-@itemize
-
-@item @ref{FAQ}:
-FAQ の回答へのリンク
-
-@item @ifWebLinks{@manualStableChangesSplit-ja,@rchangesnamed{Top,変更点}}
-最新のメジャー バージョンから変更された点。 
-
-@item @ifWebLinks{@manualStableExtendingSplit-ja,@rextendnamed{Top,拡張}}
-LilyPond での思いつきの調整をプログラミングします。
-
-@item @ifWebLinks{@manualStableInternalsSplit-ja,@rinternalsnamed{Top,内部リファレンス}}
-調整を行うために必要となる、LilyPond の内部構造についての情報。
-
-
-@ignore
-@item @rchangesnamed{Top,変更点}:
-最新のメジャー バージョンから変更された点。 
-
-@item @rextendnamed{Top,拡張}:
-LilyPond での思いつきの調整をプログラミングします。
-
-@item @rinternalsnamed{Top,内部リファレンス}:
-調整を行うために必要となる、LilyPond の内部構造についての情報。
-@end ignore
-
-@end itemize
-
-@divEnd
-
-
-@divClass{column-center-bottom}
 @subheading ダウンロード可能なバージョン
-@c Downloadable versions
-
-@help{compare tarball vs. zip size, ask about windows users
-dealing with tarballs (both gz and bz2), etc.}
 
-@help{on second thought, wait until the new doc build.  write an
-apology here for no tarballs}
+@ifclear web_version
+ダウンロード可能な .tar.gz ファイルは @uref{http://lilypond.org} でのみ入手可能です。
+@end ifclear
+@ifset web_version
 
 @divClass{keep-bullets}
 @itemize
 
-@item html-split zip
-
-@item html-big zip
-
-@item pdf zip
-
-@item info zip maybe?!?!
+@item @doctarballStable
 
 @end itemize
 
 @divEnd
+@end ifset
 
+@divEnd
+
+@divClass{column-right-bottom}
 @subheading 以前の安定バージョン
-@c Previous stable versions
 
 @divClass{keep-bullets}
 @itemize
@@ -955,7 +534,23 @@ LilyPond 2.10 ドキュメント}
 @item @uref{http://lilypond.org/doc/v2.8/Documentation/,
 LilyPond 2.8 ドキュメント}
 
-@help anybody want to write this stuff?
+@item @uref{http://lilypond.org/doc/v2.6/Documentation/,
+LilyPond 2.6 ドキュメント}
+
+@item @uref{http://lilypond.org/doc/v2.4/Documentation/,
+LilyPond 2.4 ドキュメント}
+
+@item @uref{http://lilypond.org/doc/v2.2/Documentation/,
+LilyPond 2.2 ドキュメント}
+
+@item @uref{http://lilypond.org/doc/v2.0/Documentation/,
+LilyPond 2.0 ドキュメント}
+
+@item @uref{http://lilypond.org/doc/v1.8/Documentation/,
+LilyPond 1.8 ドキュメント}
+
+@item @uref{http://lilypond.org/doc/v1.6/Documentation/,
+LilyPond 1.6 ドキュメント}
 
 @end itemize
 
@@ -969,7 +564,6 @@ LilyPond 2.8 ドキュメント}
 
 @divClass{column-center-top}
 @subheading ドキュメント ライセンス
-@c Documentation license
 
 GNU LilyPond のドキュメントは、@c
 GNU Free Documentation License に基づいて公開されています。@c
@@ -987,4 +581,3 @@ GNU Free Documentation License に基づいて公開されています。@c
 @include fdl.itexi
 
 @divEnd
-
index 6789b40548d3c941ea0a46dcf6ba63897dfc236d..93f1087278ed5b4aece3b2bc63d5dbe9fc3a7d24 100644 (file)
@@ -1864,9 +1864,8 @@ labelContext =
 @end lilypond
 
 Each of the vertical spacing grob properties (except
-@code{staff-affinity}) is stored as an alist (association list),
-and each uses the same alist structure as the @code{\paper}
-spacing variables discussed in
+@code{staff-affinity}) uses the same alist structure
+as the @code{\paper} spacing variables discussed in
 @ref{Flexible vertical spacing \paper variables}.  Specific methods
 for modifying alists are discussed in @ref{Modifying alists}.
 Grob properties should be adjusted with an @code{\override} inside
@@ -1919,19 +1918,25 @@ in @rinternals{Contexts}.
 
 @table @code
 @item staff-staff-spacing
-The distance between the current staff and the staff just below it
-in the same system, even if one or more non-staff lines (such as
-@code{Lyrics}) are placed between the two staves.  Does not apply
-to the bottom staff of a system.  This replaces any settings
-inherited from the @code{StaffGrouper} grob of the containing
-staff-group, if there is one.  If this is unset, and there are no
-@code{StaffGrouper} properties to inherit, the
-@code{default-staff-staff-spacing} property is used.
+
+Used to determine the distance between the current staff and the
+staff just below it in the same system, even if one or more
+non-staff lines (such as @code{Lyrics}) are placed between the two
+staves.  Does not apply to the bottom staff of a system.
+
+Initially, the @code{staff-staff-spacing} of a
+@code{VerticalAxisGroup} is a Scheme function that applies the
+properties of the @code{StaffGrouper} if the staff is part of a
+group, or the @code{default-staff-staff-spacing} of the staff
+otherwise.  This allows staves to be spaced differently when they
+are grouped.  For uniform spacing regardless of grouping, this
+function may be replaced by a flexible-spacing alist, using the
+complete-redefinition form of override shown above.
 
 @item default-staff-staff-spacing
-The settings to use for @code{staff-staff-spacing} when it is
-unset.  This applies to ungrouped staves and to grouped staves
-that do not inherit settings from the @code{StaffGrouper} grob.
+A flexible-spacing alist defining the @code{staff-staff-spacing} used for
+ungrouped staves, unless @code{staff-staff-spacing} has been explicitly
+set with an @code{\override}.
 
 @item staff-affinity
 The direction of the staff to use for spacing the current
@@ -1985,9 +1990,8 @@ example, to require a minimum amount of padding between a
 @item staff-staff-spacing
 The distance between consecutive staves within the current
 staff-group.  The @code{staff-staff-spacing} property of an
-individual staff's @code{VerticalAxisGroup} grob will be used
-instead for any staves in the staff-group that have it set.  Also
-see @code{default-staff-staff-spacing}.
+individual staff's @code{VerticalAxisGroup} grob can be
+overriden with different spacing settings for that staff.
 
 @item staffgroup-staff-spacing
 The distance between the last staff of the current staff-group and
@@ -1995,9 +1999,8 @@ the staff just below it in the same system, even if one or more
 non-staff lines (such as @code{Lyrics}) exist between the two
 staves.  Does not apply to the bottom staff of a system.  The
 @code{staff-staff-spacing} property of an individual staff's
-@code{VerticalAxisGroup} grob will be used instead for any staves
-in the staff-group that have it set.  Also see
-@code{default-staff-staff-spacing}.
+@code{VerticalAxisGroup} grob can be overriden with different
+spacing settings for that staff.
 @end table
 
 @seealso
@@ -2024,6 +2027,7 @@ staves:
 @itemize
 @item @code{VerticalAxisGroup} properties:
 @itemize
+@item @code{default-staff-staff-spacing}
 @item @code{staff-staff-spacing}
 @end itemize
 @end itemize
@@ -2034,21 +2038,24 @@ These grob properties are described individually above; see
 Additional properties are involved for staves that are part of a
 staff-group; see @ref{Spacing of grouped staves}.
 
-The following example shows how the @code{staff-staff-spacing}
-property can affect the spacing of ungrouped staves:
+The following example shows how the @code{default-staff-staff-spacing}
+property can affect the spacing of ungrouped staves.
+The same overrides applied to @code{staff-staff-spacing} would
+have the same effect, but would also apply in cases where the staves
+are combined in a group or groups.
 
 @lilypond[verbatim,quote,staffsize=16]
 \layout {
   \context {
     \Staff
-    \override VerticalAxisGroup #'staff-staff-spacing =
+    \override VerticalAxisGroup #'default-staff-staff-spacing =
       #'((basic-distance . 8)
          (minimum-distance . 7)
          (padding . 1))
   }
 }
 
-\new StaffGroup <<
+<<
   % The very low note here needs more room than 'basic-distance
   % can provide, so the distance between this staff and the next
   % is determined by 'padding.
@@ -2063,7 +2070,7 @@ property can affect the spacing of ungrouped staves:
   % By setting 'padding to a negative value, staves can be made to
   % collide.  The lowest acceptable value for 'basic-distance is 0.
   \new Staff \with {
-    \override VerticalAxisGroup #'staff-staff-spacing =
+    \override VerticalAxisGroup #'default-staff-staff-spacing =
       #'((basic-distance . 3.5)
          (padding . -10))
   } { \clef bass g2 r | }
@@ -2100,7 +2107,6 @@ staff-groups:
 @item @code{VerticalAxisGroup} properties:
 @itemize
 @item @code{staff-staff-spacing}
-@item @code{default-staff-staff-spacing}
 @end itemize
 @item @code{StaffGrouper} properties:
 @itemize
index 01861c2a1470f5be0709edb9749b0077ace8377d..5d718aa1fd2fc8ad40aa512e416dcb4667e2150d 100644 (file)
@@ -857,7 +857,8 @@ format cue notes are also described.
 @cindex instrument names, short
 
 Instrument names can be printed on the left side of staves in the
-@code{Staff} and @code{PianoStaff} contexts.  The value of
+@code{Staff}, @code{PianoStaff}, @code{StaffGroup}, @code{GrandStaff}
+and @code{ChoirStaff} contexts.  The value of
 @code{instrumentName} is used for the first staff, and the value
 of @code{shortInstrumentName} is used for all succeeding staves.
 
@@ -935,7 +936,7 @@ these settings, see @ref{\paper variables for shifts and indents}.
 @cindex instrument names, adding to other contexts
 
 To add instrument names to other contexts (such as
-@code{GrandStaff}, @code{ChoirStaff}, or @code{StaffGroup}),
+@code{ChordNames} or @code{FiguredBass}),
 @code{Instrument_name_engraver} must be added to that context.
 For details, see @ref{Modifying context plug-ins}.
 
index d54bb08122a5985fb049d685b9d89aa72e70ec83..6597cd00dfbe1912eb3750295a6ee286faed3f8e 100644 (file)
@@ -12,7 +12,7 @@
 @node Vocal music
 @section Vocal music
 
-@c TODO: inspirational headword
+@lilypondfile[quote]{vocal-headword.ly}
 
 This section explains how to typeset vocal music, and make sure
 that the lyrics will be aligned with the notes of their melody.
@@ -43,7 +43,6 @@ This section discusses issues common to most types of vocal music.
 * Manual syllable durations::
 * Multiple syllables to one note::
 * Multiple notes to one syllable::
-* Skipping notes::
 * Extenders and hyphens::
 @end menu
 
@@ -747,8 +746,7 @@ to be added to the melisma.
 
 It is possible to have ties, slurs and manual beams in the melody
 without their indicating melismata.  To do this, set
-@code{melismaBusyProperties} and indicate the melismata with single
-underscores in the lyrics, one underscore for each extra note:
+@code{melismaBusyProperties}:
 
 @lilypond[relative=1,verbatim,quote]
 <<
@@ -756,19 +754,42 @@ underscores in the lyrics, one underscore for each extra note:
     \time 3/4
     \set melismaBusyProperties = #'()
     c4 d ( e )
-    g8 [ f ] f4( e)
-    d e ~ e
+    g8 [ f ] f4 ~ f
   }
   \new Lyrics \lyricsto "melody" {
-    Ky -- _ _ _ _ ri -- _ _ e __ _
+    Ky -- ri -- e e -- le -- i -- son
   }
 >>
 @end lilypond
 
 Other settings for @code{melismaBusyProperties} can be used to
-include or exclude ties, slurs, and beams from the automatic
-detection of melismata; see @code{melismaBusyProperties} in
-@rinternals{Tunable context properties}.
+selectively include or exclude ties, slurs, and beams from the
+automatic detection of melismata; see @code{melismaBusyProperties}
+in @rinternals{Tunable context properties}.
+
+Alternatively, if all melismata indications are to be ignored,
+@code{ignoreMelismata} may be set true;
+see @ref{Stanzas with different rhythms}.
+
+If a melisma is required during a passage in which
+@code{melismaBusyProperties} is active, it may be indicated by
+placing a single underscore in the lyrics for each note which
+should be included in the melisma:
+
+@lilypond[relative=1,verbatim,quote]
+<<
+  \new Voice = "melody" {
+    \time 3/4
+    \set melismaBusyProperties = #'()
+    c4 d ( e )
+    g8 [ f ] ~ f4 ~ f
+  }
+  \new Lyrics \lyricsto "melody" {
+    Ky -- ri -- _ e __ _ _ _
+  }
+>>
+@end lilypond
+
 
 @predefined
 
@@ -787,7 +808,8 @@ Learning Manual:
 Notation Reference:
 @ref{Aligning lyrics to a melody},
 @ref{Automatic syllable durations},
-@ref{Setting automatic beam behavior}.
+@ref{Setting automatic beam behavior},
+@ref{Stanzas with different rhythms}.
 
 Internals Reference:
 @rinternals{Tunable context properties}.
@@ -797,25 +819,6 @@ Internals Reference:
 Extender lines under melismata are not created automatically; they
 must be inserted manually with a double underscore.
 
-@node Skipping notes
-@unnumberedsubsubsec Skipping notes
-
-Making a lyric line run slower than the melody can be achieved by
-inserting @code{\skip}s into the lyrics.  For every @code{\skip},
-the text will be delayed by another note.  The @code{\skip} command
-must be followed by a valid duration, but this is ignored when
-@code{\skip} is used in lyrics which derive their durations from the
-notes in an associated melody through @code{\addlyrics} or
-@code{\lyricsto}.
-
-@lilypond[verbatim,ragged-right,quote]
-\relative c' { c c g' }
-\addlyrics {
-  twin -- \skip 4
-  kle
-}
-@end lilypond
-
 
 @node Extenders and hyphens
 @unnumberedsubsubsec Extenders and hyphens
@@ -987,8 +990,9 @@ context:
 @end lilypond
 
 Lyrics may be positioned above the staff using one of
-two methods.  The simplest is to use the same syntax as
-above and explicitly specify the position of the lyrics:
+two methods.  The simplest (and preferred) method
+is to use the same syntax as above and explicitly
+specify the position of the lyrics:
 
 @lilypond[quote,verbatim]
 \score {
@@ -1016,7 +1020,10 @@ follows:
 @lilypond[quote,verbatim]
 \score {
   <<
-    \new Lyrics = "lyrics"
+    \new Lyrics = "lyrics" \with {
+      % lyrics above a staff should have this override
+      \override VerticalAxisGroup #'staff-affinity = #DOWN
+    }
     \new Staff {
       \new Voice = "melody" {
         \relative c'' { c4 c c c }
@@ -1044,7 +1051,10 @@ is an example of the second method:
       }
     }
     \new Lyrics = "sopranos"
-    \new Lyrics = "contraltos"
+    \new Lyrics = "contraltos" \with {
+      % lyrics above a staff should have this override
+      \override VerticalAxisGroup #'staff-affinity = #DOWN
+    }
     \new Staff {
       \new Voice = "contraltos" {
         \relative c'' { a4 a a a }
@@ -1068,6 +1078,10 @@ Other combinations of lyrics and staves may be generated by
 elaborating these examples, or by examining the
 @rlearning{Vocal ensembles} templates in the Learning Manual.
 
+@snippets
+@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+{lyrics-old-spacing-settings.ly}
+
 @seealso
 Learning Manual:
 @rlearning{Vocal ensembles}.
@@ -1247,24 +1261,9 @@ simply enter all the words:
 }
 @end lilypond
 
-@cindex lyric skip
-@funindex \skip
-
 When the words to a repeated volta section are different, the words
-to each repeat must be entered in separate @code{Lyrics} contexts.
-Earlier unrepeated sections must be skipped in the second and
-subsequent repeats.  The easiest way to skip several notes is to
-use @code{\repeat unfold} around the @code{\skip} command.
-
-Note: do not use an underscore, @code{_}, to skip notes in this
-particular case.  As this syntax indicates a melisma, it will cause
-the preceding syllable to be left-aligned.
-
-@warning{The @code{@bs{}skip} command must be followed by a number,
-but this number is ignored in lyrics which derive their durations
-from the notes in an associated melody through @code{\addlyrics} or
-@code{\lyricsto}.  Each @code{@bs{}skip} skips a single note of any
-value, irrespective of the value of the following number.}
+to each repeat must be entered in separate @code{Lyrics} contexts,
+correctly nested in parallel sections:
 
 @lilypond[verbatim,quote]
 \score {
@@ -1277,69 +1276,55 @@ value, irrespective of the value of the following number.}
         }
       }
     }
-    \new Lyrics {
-      \lyricsto "melody" {
-        Not re -- peat -- ed.
-        The first time words.
-      }
-    }
-    \new Lyrics {
-      \lyricsto "melody" {
-        % skip 4 notes of any duration
-        \repeat unfold 4 { \skip 1 }
-        Sec -- ond time words.
-      }
+    \new Lyrics \lyricsto "melody" {
+      Not re -- peat -- ed.
+      <<
+       { The first time words. }
+       \new Lyrics {
+         \set associatedVoice = "melody"
+         Sec -- ond time words.
+       }
+      >>
     }
   >>
 }
 @end lilypond
 
-@cindex lyrics, repeating with a temporary voice
+More verses may be added in a similar way:
 
-An alternative way, which avoids skips and having to count notes,
-is to use a temporary voice for the repeated section.  This may be
-preferable if the earlier sections are still subject to change.  A
-temporary voice can be inserted anywhere in the main music stream
-in parallel with it, as shown below, but it may be necessary to
-keep the main voice alive in complex scores when using this
-technique; see @ref{Keeping contexts alive}.
-
-@lilypond[verbatim,quote,ragged-right]
+@lilypond[verbatim,quote]
 \score {
   <<
     \new Staff {
       \new Voice = "singleVoice" {
-        \relative c'' { a4 a a a }
-        \new Voice = "repeatVoice" {
-          \relative c'' \repeat volta 3 { b4 b b b }
-        }
-        \relative c'' { c4 c c c }
-      }
-    }
-    \new Lyrics <<
-      \lyricsto "singleVoice" {
-        Not re -- peat -- ed.
-        The end sec -- tion.
-      }
-      \lyricsto "repeatVoice" {
-        The first time words.
-      }
-    >>
-    \new Lyrics {
-      \lyricsto "repeatVoice" {
-        Sec -- ond time words.
+        \relative c'' {
+         a4 a a a
+         \repeat volta 3 { b4 b b b }
+          c4 c c c
+       }
       }
     }
-    \new Lyrics {
-      \lyricsto "repeatVoice" {
-        The third time words.
-      }
+    \new Lyrics \lyricsto "singleVoice" {
+      Not re -- peat -- ed.
+      <<
+        { The first time words.        }
+       \new Lyrics {
+         \set associatedVoice = "singleVoice"
+         Sec -- ond time words.
+       }
+       \new Lyrics {
+         \set associatedVoice = "singleVoice"
+         The third time words.
+       }
+      >>
+      The end sec -- tion.
     }
   >>
 }
 @end lilypond
 
-@c TODO lowering a common line of lyrics
+
+@c TODO positioning a common line of lyrics
 
 @subheading Repeats with alternative endings
 
@@ -1374,10 +1359,24 @@ same structure can be used for both the lyrics and music.
 }
 @end lilypond
 
+@funindex \skip
+@cindex skipping notes in lyrics
+@cindex lyrics, skipping notes
+
 But when the repeated section has different words, a repeat
 construct cannot be used around the words and @code{\skip} commands
-have to be inserted manually as described in the previous section to
-skip over the notes in the alternative sections which do not apply.
+have to be inserted manually to skip over the notes in the
+alternative sections which do not apply.
+
+Note: do not use an underscore, @code{_}, to skip notes -- an
+underscore indicates a melisma, causing the preceding syllable
+to be left-aligned.
+
+@warning{The @code{@bs{}skip} command must be followed by a number,
+but this number is ignored in lyrics which derive their durations
+from the notes in an associated melody through @code{\addlyrics} or
+@code{\lyricsto}.  Each @code{@bs{}skip} skips a single note of any
+value, irrespective of the value of the following number.}
 
 @lilypond[verbatim,quote,ragged-right]
 \score {
index e41aadc9bec847cc8d4e335263deaf350ae6625f..a635246f7797517bc927bc9f2637acd74925ce6b 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "keyboards"
 
-%% Translation of GIT committish: a874fda3641c9e02f61be5c41b215b8304b8ed00
+%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
   texidoces = "
 Los símbolos específicos de acordeón discanto se escriben mediante
 @code{\\markup}.  Se puede trucar la colocación vertical de los
index 362e5b8df33d60a42c1769ade1a94ed69dcba50f..b18718aa222dfc53139e91e245272f5cc97d401d 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "chords, ancient-notation, contexts-and-engravers"
 
-%% Translation of GIT committish: a874fda3641c9e02f61be5c41b215b8304b8ed00
+%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
   texidoces = "
 
 Al escribir un bajo cifrado, podemos situar las cifras encima o debajo
index 9c0507133b905b7ae74777ed3a14bde0032d1bfe..dc91d09ff8ef91044deef805f519a43481423f71 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "pitches, staff-notation, vocal-music"
 
-%% Translation of GIT committish: a874fda3641c9e02f61be5c41b215b8304b8ed00
+%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
   doctitlees = "Añadir un ámbito por voz"
   texidoces = "
 Se puede añadir un ámbito por cada voz. En este caso, el ámbito se
index 999c6616ec30a2a9afad84dab4d4538108313dd2..f6af56416e3ead60ca768ce555fbd7aac279e516 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "staff-notation, contexts-and-engravers, breaks"
 
-%% Translation of GIT committish: a874fda3641c9e02f61be5c41b215b8304b8ed00
+%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
   texidoces = "
 Al añadir un pentagrama nuevo en un salto de línea, por desgracia
 se añade un espacio adicional al final de la línea antes del salto
index 9e44ab462ca01225a0f1b9e7c2eb19f0098e8a0c..167a9fb38c4a098a5ccf9f6b699e186093f57ff6 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "staff-notation, contexts-and-engravers"
 
-%% Translation of GIT committish: a874fda3641c9e02f61be5c41b215b8304b8ed00
+%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
   texidoces = "
 Se puede añadir (posiblemente de forma temporal) un pentagrama
 nuevo una vez que la pieza ha comenzado.
index 6c481e933c31d1bd56c7e6d61669dc957e0e983b..c282b10a4aa12716c4e91e4d043b323434d8c6cc 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "chords"
 
-%% Translation of GIT committish: a874fda3641c9e02f61be5c41b215b8304b8ed00
+%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
   texidoces = "
 Para añadir indicaciones de línea divisoria dentro del contexto de
 los nombres de acorde @code{ChordNames}, incluya el grabador
index 1d04ebd39c7f94584cfa68b4a34226549b752497..18ec03c3a11eaf974604e446a20f9bff3476daa5 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "rhythms, expressive-marks"
 
-%% Translation of GIT committish: a874fda3641c9e02f61be5c41b215b8304b8ed00
+%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
   texidoces = "
 La sintaxis de LilyPond puede implicar muchas colocaciones poco
 comunes para los paréntesis, corchetes, etc, que a veces se tienen
index c06a9ac2ff650a95b5e8dba5e3cc8351f262cc36..cc6a0b50818b631fc9e1f140be71e45ee29f2f15 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "rhythms, percussion"
 
-%% Translation of GIT committish: a874fda3641c9e02f61be5c41b215b8304b8ed00
+%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
   texidoces = "
 Mediante la utilización de las potentes herramientas preconfiguradas
 como la función @code{\\drummode} y el contexto @code{DrumStaff}, la
index 7eb0a09d2de066cd654d3ea4391eff12b62dbc7f..8b8133ef6866ac98e96e949ec541f01cf58eda70 100644 (file)
@@ -5,7 +5,7 @@
 \version "2.13.36"
 
 \header {
-%% Translation of GIT committish: a874fda3641c9e02f61be5c41b215b8304b8ed00
+%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
   texidoces = "
 Para añadir digitaciones a las tablaturas, utilice una combinación de
 @code{\\markup} y @code{\\finger}.
index fe05762d997a2235688ac1da29eec24cffec8e57..51b1b62107b4fce21d4483d074ebf454ffb3f058 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "staff-notation, vocal-music"
 
-%% Translation of GIT committish: a874fda3641c9e02f61be5c41b215b8304b8ed00
+%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
 
   texidoces = "
    Este ejemplo muestra una forma de simplificar la adición de muchas
index c8e1934d93b0a386318bdf39f3f14cf5a5145090..fc9f278f95639b1df9437fc539cbc8246cc2717b 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "expressive-marks"
 
-%% Translation of GIT committish: a874fda3641c9e02f61be5c41b215b8304b8ed00
+%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
   texidoces = "
 La función @code{\\parenthesize} es un truco especial que encierra
 objetos entre paréntesis.  El grob asociado es @code{ParenthesesItem}.
index b0a6427790b274fe7d3f1a576bbceb4905501b3b..813fca905802abac53a735cebae0c1090056106d 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "text, titles"
 
-%% Translation of GIT committish: a874fda3641c9e02f61be5c41b215b8304b8ed00
+%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
   texidoces = "
 Con algo de código de Scheme, se puede añadir fácilmente la fecha
 actual a una partitura.
index 1d987266f69b64847a078bff2d4b418c1df09687..237aeec789d5a13fc42edb8a5bc699fb9e476768 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "repeats"
 
-%% Translation of GIT committish: a874fda3641c9e02f61be5c41b215b8304b8ed00
+%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
   texidoces = "
 El grabador @code{Volta_engraver} reside de forma predeterminada
 dentro del contexto de @code{Score}, y los corchetes de la repetición
index c50ae9872aa5e67a56e94e8f07296dc0caa390bd..87a814f34ff01dc8b3f55df3ae0b90a9b002f117 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "simultaneous-notes"
 
-%% Translation of GIT committish: a874fda3641c9e02f61be5c41b215b8304b8ed00
+%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
  doctitlees = "Voces adicionales para evitar colisiones"
  texidoces = "
 En ciertos casos de polifonía compleja, se necesitan voces adicionales
index 6b4c6df8ce1316e95f09dc140496414c7f426584..f2e14d7468cb88242ac480cb89d4896d965aac19 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "rhythms, tweaks-and-overrides"
 
-%% Translation of GIT committish: a874fda3641c9e02f61be5c41b215b8304b8ed00
+%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
   texidoces = "
 Se puede ajustar la separación entre las notas de adorno utilizando la
 propiedad @code{spacing-increment} de @code{Score.GraceSpacing}.
index 05d43b8a280f4ff73f3c6c074aa56a2cb6f06e21..211a224906a23122ef278f34135584cbb91b7dbf 100644 (file)
@@ -5,7 +5,7 @@
 \version "2.13.42"
 
 \header {
-%% Translation of GIT committish: a874fda3641c9e02f61be5c41b215b8304b8ed00
+%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
   texidoces = "
 Este fragmento de código muestra cómo situar la línea de base de la
 letra más cerca del pentagrama.
index b3f36fb236a11ff65b3a5b5e5205377f42d12676..855a1daf5e25e2173ebaeca4455b432e72c1cd0b 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "expressive-marks"
 
-%% Translation of GIT committish: a874fda3641c9e02f61be5c41b215b8304b8ed00
+%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
   texidoces = "
 Puede ser necesario trucar la propiedad
 @code{shortest-duration-space} para poder ajustar el tamaño de las
index 3dc10c59f452eacaa03d00eeed3a4a1d58c27575..29de71ac40a4204656c3f8c1bd2a1bd718cf6429 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "text, paper-and-layout, titles"
 
-%% Translation of GIT committish: a874fda3641c9e02f61be5c41b215b8304b8ed00
+%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
   texidoces = "
 La alineación horizontal de los nombres de instrumento se puede
 trucar modificando la propiedad @code{Staff.InstrumentName
index b59c9e119980212bfcfc91b783084877d753b5b5..a1294b7e22a1a2c22c1c5858dbc2fb438dcf038d 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "rhythms"
 
-%% Translation of GIT committish: a874fda3641c9e02f61be5c41b215b8304b8ed00
+%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
   texidoces = "
 
 Los números de compás se alinean de forma predeterminada por la
index 650201dca556012d5ea220f49d8958a2d55bd17b..5e0ed60c4d4ee6fe1831c2bfadfdae569b8881a0 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "text"
 
-%% Translation of GIT committish: a874fda3641c9e02f61be5c41b215b8304b8ed00
+%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
   texidoces = "
 Si están especificadas, las marcas de texto se pueden alinear con
 objetos de notación distintos a las líneas divisorias.  Entre estos
index 402e9e041ae71a34605103a4d98d739ef7dc03aa..3138fa75a021fed8611b3a9d17c59cac21ad9322 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "editorial-annotations, fretted-strings, spacing"
 
-%% Translation of GIT committish: a874fda3641c9e02f61be5c41b215b8304b8ed00
+%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
 
   texidoces = "
 Las cifras de digitación orientadas verticalmente se colocan de forma
index 68027ce13f45c66c18095116f77ae9f0e0c45557..81920ecab77c3d4471da5a1a0d617700f1c3fc7f 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "pitches, tweaks-and-overrides"
 
-%% Translation of GIT committish: a874fda3641c9e02f61be5c41b215b8304b8ed00
+%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
   texidoces = "
 Se puede variar la longitud de las plicas de las figuras unidas por
 una barra mediante la sobreescritura de la propiedad
index 21e753d377c1d35c8a6dce1d10ffac2913e8f7ba..6502ac9dfdb380590e96693d2eadf20f99051309 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "pitches, vocal-music"
 
-%% Translation of GIT committish: a874fda3641c9e02f61be5c41b215b8304b8ed00
+%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
   doctitlees = "Ámbitos con varias voces"
   texidoces = "
 La adición del grabador @code{Ambitus_engraver} al contexto de
index e8e94374c3164469bc2dc07cbd7c79e35db29e1c..813d4add788ec43bdad03842d113eee4c3a2495d 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "editorial-annotations, tweaks-and-overrides"
 
-%% Translation of GIT committish: a874fda3641c9e02f61be5c41b215b8304b8ed00
+%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
   texidoces = "
 De forma predeterminada se añaden corchetes de análisis sencillos
 debajo del pentagrama.  El ejemplo siguiente muestra una manera de
index d05299c9701fb0f62ffd5bb115384c16ea7f91ba..0b7353d8e3d0654e934fa06b7f1efb87beb8004b 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "ancient-notation"
 
-%% Translation of GIT committish: a874fda3641c9e02f61be5c41b215b8304b8ed00
+%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
   texidoces = "
 Aquí se muestran muchos de (¿o quizá todos?) los símbolos que
 están contemplados por la capacidad de LilyPond para la música
index f9104d4ed98759049859e09c80c92a60024586a2..88febf3d1f3f7fbe34eeea5b02a624e3b5ae986e 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "vocal-music, ancient-notation, template"
 
-%% Translation of GIT committish: a874fda3641c9e02f61be5c41b215b8304b8ed00
+%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
   texidoces = "
 Este ejemplo muestra cómo hacer una transcripción moderna de canto
 gregoriano. El canto gregoriano no tiene compás ni plicas; utiliza
index 767ae0ea66182c31a7aa5dfd79ad281c3da83d14..000fd59f5fd2731928f5af4606f68b7e7583a5a7 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "ancient-notation, template"
 
-%% Translation of GIT committish: a874fda3641c9e02f61be5c41b215b8304b8ed00
+%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
   texidoces = "
 Al transcribir música mensural, es útil un «incipit» al compienzo
 de la pieza para indicar la tonalidad y el tempo
index 5939109f650fc93e293f65ad1a0ed2aca91c0582..4de24cff064df078258d3a273d688946bc38a434 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "ancient-notation"
 
-%% Translation of GIT committish: a874fda3641c9e02f61be5c41b215b8304b8ed00
+%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
   texidoces = "
 Las indicaciones de compás también se pueden grabar en estilo antiguo.
 
index ebe5f306a86ff1860a3bcf7103bd7d1f613d462b..d237a359c91db59635357281b1ef8f10f3027dfd 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "pitches, editorial-annotations"
 
-%% Translation of GIT committish: a874fda3641c9e02f61be5c41b215b8304b8ed00
+%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
   doctitlees = "Aplicar estilos de cabeza según la nota de la escala"
   texidoces = "
 La propiedad @code{shapeNoteStyles} se puede usar para definir varios
index 53ae64c64d797018e8fdcf53f62660a1d021477a..cdfe626e5f67949ebb094203e03b66e0b62c6a42 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "world-music"
 
-%% Translation of GIT committish: a874fda3641c9e02f61be5c41b215b8304b8ed00
+%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
   texidoces = "
 Para las improvisaciones o @emph{taqasim} que son libres durante unos
 momentos, se puede omitir la indicación de compás y se puede usar
index 22d4f79c66b19f97866bd21e027e4bfda12cd292..017f04651a46ca15b48d82b7ff494c596d906428 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "expressive-marks, tweaks-and-overrides"
 
-%% Translation of GIT committish: a874fda3641c9e02f61be5c41b215b8304b8ed00
+%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
   texidoces = "
 Se puede hacer que una ligadura de expresión sea asimétrica para
 adaptarse mejor a un patrón asimétrico de notas.
index 906d64a6c7861b0aff06ce7d80b6cb658c1da725..87b44f5808c4f1a9a817da7729555da105926ddf 100644 (file)
@@ -5,7 +5,7 @@
 \version "2.13.36"
 
 \header {
-%% Translation of GIT committish: a874fda3641c9e02f61be5c41b215b8304b8ed00
+%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
   texidoces = "
 Se pueden subdividir las barras automáticamente.  Estableciendo la
 propiedad @code{subdivideBeams}, las barras se subdividen en
index c8fdacd0017159cfc308807b40246cb3083cfe1b..19d1e5b8f75fb65b5f06a1b20e4a2c26b7975313 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "rhythms, editorial-annotations, chords, tweaks-and-overrides"
 
-%% Translation of GIT committish: a874fda3641c9e02f61be5c41b215b8304b8ed00
+%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
 
   texidoces = "
 
index 836757967ed9eaab6de8c6aeb078f76a1d13b3e8..1a05b166c1e73ad452b8ea55692ab1fc7a531065 100644 (file)
@@ -5,7 +5,7 @@
 \version "2.13.36"
 
 \header {
-%% Translation of GIT committish: a874fda3641c9e02f61be5c41b215b8304b8ed00
+%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
   texidoces = "
 Las reglas de final de barra especificadas en el contexto
 @code{Score} se aplican a todos los pentagramas, pero se pueden
index d050adb42abebef982c3d5aaf5ee2f31e6314bbd..157494464fbf1278d7b4fd91400ea160be9b548d 100644 (file)
@@ -5,7 +5,7 @@
 \version "2.13.36"
 
 \header {
-%% Translation of GIT committish: a874fda3641c9e02f61be5c41b215b8304b8ed00
+%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
   texidoces = "
 No está especificada ninguna agrupación predeterminada automática
 de las barras para el compás de 7/8, de forma que si se requieren
index 37a7411b4ef01634181f396a4b61e7ae75e02013..289e0f82ae9967ceb914b9616abb46add2b1a295 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "rhythms"
 
-%% Translation of GIT committish: a874fda3641c9e02f61be5c41b215b8304b8ed00
+%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
   texidoces = "
 Normalmente están prohibidos los saltos de línea si las barras
 atraviesan las líneas divisorias.  Se puede cambiar este
index 4584f0c34dc68e91202ec3958da268a70a1de902..f4106618b45cf5bbf46929a3d6e7f984ccfe5fc9 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "editorial-annotations, text"
 
-%% Translation of GIT committish: a874fda3641c9e02f61be5c41b215b8304b8ed00
+%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
   texidoces = "
 La instrucción @code{\\whiteout} intercala un rectángulo blanco
 debajo de un elemento de marcado.  Este rectángulo blanco no tapa
index 4e83c1691ee4a22a7201fc6634d0814ddc8423ee..6516623e68dea06e835d09132be922133ca95bd6 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "expressive-marks"
 
-%% Translation of GIT committish: a874fda3641c9e02f61be5c41b215b8304b8ed00
+%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
   texidoces = "
 Para hacer invisibles partes de un regulador de crescendo, se usa
 el método de dibujar un rectángulo blanco encima de la parte
index 41214372d0fc6b91508279545a4fa72a96b3d290..27c1123ede86cfe6e0cd9f07cef0d2abcb4cc6c7 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "expressive-marks, tweaks-and-overrides"
 
-%% Translation of GIT committish: a874fda3641c9e02f61be5c41b215b8304b8ed00
+%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
   texidoces = "
 A veces se denota una «cesura» mediante una doble marca de respiración
 parecida a las vías del tren, con un calderón encima. Este fragmento
index b38bc212f63f07f03246c129ca03babe2e12b098..43fedc4d99e7340551e743c825439505776b5659 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "expressive-marks, text"
 
-%% Translation of GIT committish: a874fda3641c9e02f61be5c41b215b8304b8ed00
+%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
   texidoces = "
 Este ejemplo proporciona una función para tipografiar un regulador con
 texto por debajo, como @qq{molto} o @qq{poco}. El ejemplo ilustra
index f7062690010e3e86963ac562821830b6582a7e07..8f1fcc4020f56d6bc8dd0fa8f19d7b2ae76c340f 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "expressive-marks, unfretted-strings"
 
-%% Translation of GIT committish: a874fda3641c9e02f61be5c41b215b8304b8ed00
+%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
   texidoces = "
 Para hacer más pequeño el círculo de @code{\\flageolet} (armónico)
 utilice la siguiente función de Scheme.
index 083c69901a3167adbdee22cfad472a1334514753..d92e35412b02512173d990866e29a2f9b10a729c 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "simultaneous-notes, editorial-annotations, tweaks-and-overrides"
 
-%% Translation of GIT committish: a874fda3641c9e02f61be5c41b215b8304b8ed00
+%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
   texidoces = "
 Se pueden modificar notas individuales de un acorde con la instrucción
 @code{\\tweak}, alterando la propiedad @code{font-size}.
index 472ed4f2498663f98ef83a032a9490065de0328b..bca3f6ea9f94c30f68770870dcfa930147f0cdf8 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "rhythms"
 
-%% Translation of GIT committish: a874fda3641c9e02f61be5c41b215b8304b8ed00
+%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
   texidoces = "
 Se insertan automáticamente barras en ángulo cuando se detecta un
 intervalo muy grande entre las notas.  Se puede hacer un ajuste
index 66d3d480e931aa39a2cacf86f7a91701e18a1bac..62b81307ea78961cd9c6b422b8c813e91b467c4d 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "chords"
 
-%% Translation of GIT committish: a874fda3641c9e02f61be5c41b215b8304b8ed00
+%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
   texidoces = "
 Se puede establecer el separador entre las distintas partes del
 nombre de un acorde para que sea cualquier elemento de marcado.
index cab41fe54053fa2d85918aaee81fa5ddec76891c..853ecf0dc2bfe396bfc376c3832c86d3ff9bfd9d 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "rhythms, tweaks-and-overrides"
 
-%% Translation of GIT committish: a874fda3641c9e02f61be5c41b215b8304b8ed00
+%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
  doctitlees = "Cambiar la forma de los silencios multicompás"
  texidoces = "
 Si hay diez compases de silencio o menos, se imprime en el pentagrama
index 8d27ba3931f3939873b498b3ebd094fe8f52f74c..3c5527b5d14779c1fc8dae51d5e7a7441e6f34f8 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "fretted-strings"
 
-%% Translation of GIT committish: a874fda3641c9e02f61be5c41b215b8304b8ed00
+%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
 
   texidoces = "
 
index 2d3e0871e1052d53072c57721ebf8b362fb04cb0..6320d00a46bef662b4081e0e9543f0017e4cf52e 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "contexts-and-engravers, midi"
 
-%% Translation of GIT committish: a874fda3641c9e02f61be5c41b215b8304b8ed00
+%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
   texidoces = "
 Al producir una salida MIDI, el comportamiento predeterminado es
 que cada pentagrama representa un canal MIDI, con todas las voces
index 7c9a035b8914806efb21d5fda8d66bcb9778f4b2..bb1a99126304bc4fca754ef1c9e97b26d687a24f 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "simultaneous-notes"
 
-%% Translation of GIT committish: a874fda3641c9e02f61be5c41b215b8304b8ed00
+%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
   texidoces = "
 Al utilizar la posibilidad de combinación automática de partes, se
 puede modificar el texto que se imprime para las secciones de solo
index e8da7cfcb443155b69ffd817ebc239a13c1c8ec2..88a6afc20ce2d8274426466d4a66545afdedb641 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "expressive-marks"
 
-%% Translation of GIT committish: a874fda3641c9e02f61be5c41b215b8304b8ed00
+%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
   texidoces = "
 Se puede modificar el texto empleado para los crescendos y
 decrescendos modificando las propiedades de contexto
index 1a25d75e826a099fcf21378fd818478d6a3cd99c..f78377f5d77eda346d17c7948daff5b092309b1a 100644 (file)
@@ -4,7 +4,7 @@
 %% Note: this file works from version 2.13.36
 \version "2.13.36"
 \header {
-%% Translation of GIT committish: a874fda3641c9e02f61be5c41b215b8304b8ed00
+%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
 
   texidoces = "
 Es posible ajustar la separación en las indicaciones de tesitura.
index 07bb50ff9159a9336309de2a27f4da6aad60153b..c8c715be786c1b288bd3b9f9ec7611f60401963a 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "expressive-marks, editorial-annotations"
 
-%% Translation of GIT committish: a874fda3641c9e02f61be5c41b215b8304b8ed00
+%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
   texidoces = "
 Se puede cambiar el aspecto de las ligaduras de expresión de
 continuas a punteadas o intermitentes.
index 5c6dd2ed4aa46edffabea69a6001aa57aaa32fb3..88edb2f025f1c5f19ec1cce429d493744526ea55 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "expressive-marks"
 
-%% Translation of GIT committish: a874fda3641c9e02f61be5c41b215b8304b8ed00
+%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
   texidoces = "
 El glifo de la marca de respiración se puede ajustar
 sobreescribiendo la propiedad de texto del objeto de presentación
index bdf3750f4e02bc3fd582543b8da3282132ee5ed9..38c83c132ff5ac9f2719850996f29d643e829aa5 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "chords"
 
-%% Translation of GIT committish: a874fda3641c9e02f61be5c41b215b8304b8ed00
+%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
   texidoces = "
 La nomenclatura inglesa (predeterminada) para los acordes del cifrado
 americano se puede cambiar por la alemana (@code{\\germanChords}
index 56ae9ce6fae8322799fb794bd9fe18044db5f45c..306019b46631b341ac0701e7819c9e0996808231 100644 (file)
@@ -4,7 +4,7 @@
 %% Note: this file works from version 2.13.36
 \version "2.13.36"
 \header {
-%% Translation of GIT committish: a874fda3641c9e02f61be5c41b215b8304b8ed00
+%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
 
   texidoces = "
 Este código muestra cómo cambiar la cantidad de puntillos de una nota.
index b86c47e8f80e113036f18dfb338acbd7d115c5e4..64efa46be3ec0d7c0ba5bb5cef9da65e45970379 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "chords"
 
-%% Translation of GIT committish: a874fda3641c9e02f61be5c41b215b8304b8ed00
+%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
   texidoces = "
 Las alteraciones y los signos «más» pueden aparecer antes o
 después de los números, según el valor de las propiedades
index 75e48f51a6cb821d6f1064533fe7b3330a907806..77eb81350502694ed1cd2b7f60301bcde2a0b392 100644 (file)
@@ -5,7 +5,7 @@
 \version "2.13.36"
 
 \header {
-%%%    Translation of GIT committish: a874fda3641c9e02f61be5c41b215b8304b8ed00
+%%%    Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
 
   texidoces = "
 
index 7a02f19e99e57664eb04dde871ce1e0c7d9b9103..6a7c6d7e8dee4a6af693088ec72fa2db589dcb37 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "rhythms, tweaks-and-overrides, midi"
 
-%% Translation of GIT committish: a874fda3641c9e02f61be5c41b215b8304b8ed00
+%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
   texidoces = "
 Para cambiar el tempo en la salida MIDI sin
 imprimir nada, hacemos invisible la indicación metronómica:
index 6a193bc85dbc5c21801b61de19edd97f7462d7df..9e8451e1b2a798da93fb04b7e0f64efc9ce285ee 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "keyboards, tweaks-and-overrides"
 
-%% Translation of GIT committish: a874fda3641c9e02f61be5c41b215b8304b8ed00
+%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
   texidoces = "
 Se puede usar @code{Staff.pedalSustainStrings} para fijar el texto de
 las indicaciones de pisar pedal y levantar pedal.  Observe que las
index a14d77d477b8bc12d30cd1689acebfac12cef8b2..3ac3914f335f5990e9eb84868beb3a771a15c1b0 100644 (file)
@@ -5,7 +5,7 @@
 \version "2.13.36"
 
 \header {
-%% Translation of GIT committish: a874fda3641c9e02f61be5c41b215b8304b8ed00
+%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
   texidoces = "
 La instrucción @code{\\time} establece las propiedades
 @code{timeSignatureFraction}, @code{beatLength}, @code{beatGrouping} y
index e5275faf45821b80932797848677b8d70ee05700..18d7a749e39fba23d35763d267e269798a323e23 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "rhythms"
 
-%% Translation of GIT committish: a874fda3641c9e02f61be5c41b215b8304b8ed00
+%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
  doctitlees = "Cambiar el número del grupo especial"
  texidoces = "
 
index 8d945ed6ad72ddcc7b486b0f18c811b43bab2702..cad4011349cdffa54b30cda11535295ac95739bf 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "rhythms, contexts-and-engravers"
 
-%% Translation of GIT committish: a874fda3641c9e02f61be5c41b215b8304b8ed00
+%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
   texidoces = "
 La propiedad @code{measureLength}, junto con
 @code{measurePosition}, determina cuándo es necesario dibujar una
index bbc99a3efd2963838a65810f572fc23d4360f128..98c4e2da34761a5d0f406bdec56c9b6b3ae0bac0 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "rhythms, vocal-music, ancient-notation, contexts-and-engravers"
 
-%% Translation of GIT committish: a874fda3641c9e02f61be5c41b215b8304b8ed00
+%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
   texidoces = "
 Este tipo de notación se utiliza para el canto de los Salmos, en
 que las estrofas no siempre tienen la misma longitud.
index d01928cf3df6f6df3abbbc230a180d22c0bed6c7..8450cd52402912e10340693b103cffa31678d024 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "chords"
 
-%% Translation of GIT committish: a874fda3641c9e02f61be5c41b215b8304b8ed00
+%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
   texidoces = "
 Se puede usar la propiedad @code{chordNameExceptions} para
 almacenar una lista de notaciones espaciales para acordes
index 7ead82057b7a0777c1eb04931fe16881dfdf0df1..1cd0d1bccafc5eeba28aa10ef3f7fdab85b87939 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "chords"
 
-%% Translation of GIT committish: a874fda3641c9e02f61be5c41b215b8304b8ed00
+%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
   texidoces = "
 La presentación del acorde de séptima mayor se
 puede ajustar mediante majorSevenSymbol.
index 2cbe96cb6e38edd18c19590d0b239673815fae38..936414c8f62e936fb87ea6db98de0e0c37b6403d 100644 (file)
@@ -5,7 +5,7 @@
 \version "2.13.36"
 
 \header {
-%% Translation of GIT committish: a874fda3641c9e02f61be5c41b215b8304b8ed00
+%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
   texidoces = "
 Se puede hacer que los diagramas de posiciones se muestren sólo
 cuando el acorde cambia o al comienzo de una nueva línea.
index b8734d05be7ebeb3aba5233fbb137b8323fe6c4d..cd6df22cd8b1ac08773583d42c96a8277ab63745 100644 (file)
@@ -5,7 +5,7 @@
 \version "2.13.36"
 
 \header {
-%% Translation of GIT committish: a874fda3641c9e02f61be5c41b215b8304b8ed00
+%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
   texidoces = "
 Este código muestra cómo recortar (extraer) fragmentos a partir de una
 partitura completa.
index 62b5c3cf6d60f572f82a108013554e0f7dc59b28..50020b74342345764c8fd37aded5c11d8f1e571f 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "simultaneous-notes, chords, keyboards"
 
-%% Translation of GIT committish: a874fda3641c9e02f61be5c41b215b8304b8ed00
+%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
   texidoces = "
 Los «clusters» o racimos son un mecanismo para indicar la
 interpretación de un ámbito de notas al mismo tiempo.
index e62ddb1bd7d5c8ccd9e57193a185c6c9287e0d98..58e71773ad21d8138c6e28e1bf563c7fc2b26d7e 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "expressive-marks, text"
 
-%% Translation of GIT committish: a874fda3641c9e02f61be5c41b215b8304b8ed00
+%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
   texidoces = "
 Ciertas indicaciones dinámicas pueden llevar textos (como @qq{più
 forte} o @qq{piano subito}). Se pueden producir usando un bloque
index ba17b2c3aff0da3c18c7271d20ca373d15083bcd..b710881ed00ddb22ae60d0d4daf018587f4b847a 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "simultaneous-notes, text"
 
-%% Translation of GIT committish: a874fda3641c9e02f61be5c41b215b8304b8ed00
+%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
   texidoces = "
 
 La herramienta de combinación de partes (instrucción
index a205ad85ee47ffbd09e595563dcfd15ab3a1a9a4..0060643027934d83176da1c0178f05c695e6f6a8 100644 (file)
@@ -5,7 +5,7 @@
 \version "2.13.36"
 
 \header {
-%% Translation of GIT committish: a874fda3641c9e02f61be5c41b215b8304b8ed00
+%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
  doctitlees = "Indicaciones de compases compuestos"
  texidoces = "
 Las indicaciones de compás poco frecuentes como @qq{5/8} se pueden
index e0148be3f05a50b51950e2358b9072e86d1ed45b..a6e8abe2b55e62c54247d55f32efe5c1b6b71750 100644 (file)
@@ -5,7 +5,7 @@
 \version "2.13.36"
 
 \header {
-%% Translation of GIT committish: a874fda3641c9e02f61be5c41b215b8304b8ed00
+%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
   texidoces = "
 La agrupación de pulsos dentro de un compás está controlada por la
 propiedad de contexto @code{beatStructure}.  Hay establecidos valores
index 74f7991b739f5698eedefeb72c858461b6a87064..8ac7c6fac5f2e819ee5ea5354d7052533e2465e4 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "expressive-marks"
 
-%% Translation of GIT committish: a874fda3641c9e02f61be5c41b215b8304b8ed00
+%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
   texidoces = "
 Se puede tipografiar un gissando contemporáneo sin nota final
 utilizando una nota oculta y temporalización de cadenza.
index 5e30cc6ce184a403276058a21e403bcbaa8409ff..b38a0d537b830ffd8326321d000f4a1423cdd589 100644 (file)
@@ -5,7 +5,7 @@
 \version "2.13.36"
 
 \header {
-%% Translation of GIT committish: a874fda3641c9e02f61be5c41b215b8304b8ed00
+%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
 
   texidoces = "
 La visibilidad de los objetos de extensión que acaban en la primera
index c771ab5a8b6f9aee9416487546de099318627bc3..b300640b6be8c4a16759ceb5a6c02982844a0b75 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "editorial-annotations, chords, keyboards, fretted-strings"
 
-%% Translation of GIT committish: a874fda3641c9e02f61be5c41b215b8304b8ed00
+%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
   texidoces = "
 Se puede controlar con precisión la colocación de los números de
 digitación.  Para que se tenga en cuenta la orientación de las
index db088376d59e2b02cd8ecedafb0040fab73800f3..a223b018cfe4c14ebfbcc2d03226534f720443a6 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "expressive-marks, tweaks-and-overrides"
 
-%% Translation of GIT committish: a874fda3641c9e02f61be5c41b215b8304b8ed00
+%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
   texidoces = "
 El orden vertical que ocupan las inscripciones gráficas está
 controlado con la propiedad @code{'script-priority}. Cuanto más
index 619e0cede0c94d0a79aa30560fd2c42165d4e4bb..69bb3358c697dd123037763f6f67de3c43dfcf55 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "rhythms, tweaks-and-overrides"
 
-%% Translation of GIT committish: a874fda3641c9e02f61be5c41b215b8304b8ed00
+%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
 
   texidoces = "
 El comportamiento predeterminado de la visibilidad de los corchetes de
index 1152eeb1ad8eb78ea1b9d83494d1600418411674..b25b1f5c126b524167a175aed948a0cb34877fd5 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "expressive-marks, editorial-annotations, tweaks-and-overrides"
 
-%% Translation of GIT committish: a874fda3641c9e02f61be5c41b215b8304b8ed00
+%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
 texidoces = "
 La creación de un grupeto circular de anticipación entre dos notas,
 donde la nota inferior del grupeto utiliza una alteración, requiere
index 7385e69a57cecd6b647bb1cfe345a613e3413149..9e1fb63be2c1f0343a335d832af9bcf5ad4e5f43 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "pitches"
 
-%% Translation of GIT committish: a874fda3641c9e02f61be5c41b215b8304b8ed00
+%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
   texidoces = "
 En una música que tenga muchas apariciones de la
 misma secuencia de notas a distintas alturas, podría ser de
index 3bc6f84b67202b1a838d5ad0f6f188ca5170717b..18cf956eb9ed58df8bb98f467043dccc67b8dd75 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "expressive-marks"
 
-%% Translation of GIT committish: a874fda3641c9e02f61be5c41b215b8304b8ed00
+%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
   texidoces = "
 Se puede trazar un símbolo de arpegio entre notas de distintas
 voces que están sobre el mismo pentagrama si el grabador
index f867f8833f0eaf8f896a7b64ca94c346d6a3b29f..8ad8e81c4b955b787753d0866a164bda5653611a 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "staff-notation, editorial-annotations, contexts-and-engravers, paper-and-layout"
 
-%% Translation of GIT committish: a874fda3641c9e02f61be5c41b215b8304b8ed00
+%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
   texidoces = "
 Para crear pentagramas en blanco, genere compases vacíos y después
 elimine el grabador de números de compás @code{Bar_number_engraver}
index 8aad05ab46497236fa22589b862e533a5ba1c4af..e623d7d114c9641379963209e8e0333572873986 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "expressive-marks"
 
-%% Translation of GIT committish: a874fda3641c9e02f61be5c41b215b8304b8ed00
+%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
   texidoces = "
 Dentro de un @code{PianoStaff}, es posible hacer que un arpegio
 cruce entre los pentagramas ajustando la propiedad
index 062dc64f4c69dd544399af91c391b1b4dfbce757..1ecc0e0598d523a9305e7d66ec9b93cc8e9d9759 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "expressive-marks"
 
-%% Translation of GIT committish: a874fda3641c9e02f61be5c41b215b8304b8ed00
+%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
   texidoces = "
 Se pueden crear arpegios que se cruzan entre pentagramas dentro de
 contextos distintos a @code{GrandStaff}, @code{PianoStaff} y
index 0ef542d57e37f667d1a24c81fb987197322f98f1..209702bc8296690cf6a22408ac6d5e7001aa84b4 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "rhythms"
 
-%% Translation of GIT committish: a874fda3641c9e02f61be5c41b215b8304b8ed00
+%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
   texidoces = "
 Se pueden crear indicaciones metronómicas nuevas en modo de
 marcado, pero no cambian el tempo en la salida MIDI.
index 94605477924d95dfbb02390fb323298b917db257..b4375382c1fb893adfa485dba2955bec572d023e 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "expressive-marks, text"
 
-%% Translation of GIT committish: a874fda3641c9e02f61be5c41b215b8304b8ed00
+%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
   texidoces = "
 Aunque la manera más fácil de añadir paréntesis a una indicación
 de dinámica es utilizar un bloque @code{\\markup}, este método
index bd2b57969c0805bfbb922cfd40c282bc8614b72e..d8ad2997b25def7aec5e421cb53f49af2835351b 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "expressive-marks, text, tweaks-and-overrides"
 
-%% Translation of GIT committish: a874fda3641c9e02f61be5c41b215b8304b8ed00
+%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
   texidoces = "
 A diferencia de las inscripciones de texto, las lestras de ensayo
 no se pueden apilar en un punto concreto de la partitura: sólo se
index a49ea437485a4ba61fe8aad5d8da1cf11996093f..8097fa2ac99158a5b69b87430be131d4d982a152 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "expressive-marks, keyboards, unfretted-strings"
 
-%% Translation of GIT committish: a874fda3641c9e02f61be5c41b215b8304b8ed00
+%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
   texidoces = "
 En determinadas situaciones es necesario crear ligaduras de
 expresión entre notas que están en voces distintas.
index 37ac2aee9521e0e36850f85ba055d5b427036870..e76055a75b810eb4ce30526dbce0716e82382370 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "expressive-marks, text, tweaks-and-overrides"
 
-%% Translation of GIT committish: a874fda3641c9e02f61be5c41b215b8304b8ed00
+%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
   texidoces = "
 Las instrucciones @code{\\startTextSpan} y @code{\\stopTextSpan}
 permiten la creación de elementos de extensión textuales tan
index 8c1065e6edbad1316f9187ddf906853ad095c274..68eda7be333903c6c42861daf7dcfcf0b79ba432 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "repeats, keyboards"
 
-%% Translation of GIT committish: a874fda3641c9e02f61be5c41b215b8304b8ed00
+%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
 
   texidoces = "
 
index b8783f5cc9c567ba81beab027c573275868a7514..63bc3c8aadd71befd0f4aed2a8d020e4491e001d 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "ancient-notation, tweaks-and-overrides"
 
-%% Translation of GIT committish: a874fda3641c9e02f61be5c41b215b8304b8ed00
+%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
   texidoces = "
 Se pueden tipografiar «custos» en diferentes estilos.
 
index 6f7da4510d876c9b4203e1b21d4293e0bb1b2f91..ba420d982ffac607793fc67e183844163114f2dd 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "fretted-strings, tweaks-and-overrides"
 
-%% Translation of GIT committish: a874fda3641c9e02f61be5c41b215b8304b8ed00
+%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
   texidoces = "
 Se pueden establecer las propiedades de los diagramas de
 posiciones de acordes por medio de @code{'fret-diagram-details}.
index 4a55dc9fe2cad7f94031ed6aae6ecc001635d01f..b80148e916e97c3be85969a1d67acdbf09476d51 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "fretted-strings, tweaks-and-overrides"
 
-%% Translation of GIT committish: a874fda3641c9e02f61be5c41b215b8304b8ed00
+%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
   texidoces = "
 Se pueden establecer las propiedades de los diagramas de
 posiciones a través de @code{'fret-diagram-details}.  Para los
index 821f12ec9c99b434b3fd331395bea1c7cf493c2d..51875322d42b7400dc919665ad4ef7db14af5038 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "editorial-annotations"
 
-%% Translation of GIT committish: a874fda3641c9e02f61be5c41b215b8304b8ed00
+%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
   texidoces = "
 La dirección predeterminada de las plicas sobre la tercera línea
 del pentagrama está determinada por la propiedad
index 5a89b1c0835f77d0f80048036b4758d91e3d0d9f..2fcf1cd681fe5ef0bfdf913455dbf46381bb1260 100644 (file)
@@ -5,7 +5,7 @@
 \version "2.13.36"
 
 \header {
-%% Translation of GIT committish: a874fda3641c9e02f61be5c41b215b8304b8ed00
+%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
 
   texidoces = "
 Este ejemplo demuestra cómo se puede definir el grabador de ámbito en
index db7339653328989926ecac3a693d56e2bb99ffc5..d7aa8efb4082d98795f5ce2ae09c9bd46a91104d 100644 (file)
@@ -5,7 +5,7 @@
 \version "2.13.46"
 
 \header {
-%% Translation of GIT committish: a874fda3641c9e02f61be5c41b215b8304b8ed00
+%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
   texidoces = "
 
 Se pueden añadir diagramas de posiciones predefinidas para
index 56592bc54cf1a8658f6692c8004b01a0b8101f22..341d7093688b1e8812b5f9e10fc09eed844e1554 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "staff-notation, tweaks-and-overrides"
 
-%% Translation of GIT committish: a874fda3641c9e02f61be5c41b215b8304b8ed00
+%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
   texidoces = "
 Si hay un solo pentagrama en un de los tipos de sistema
 @code{ChoirStaff} o @code{StaffGroup}, el comportamiento
index 7d034e82f8e98d2d97b1b4a5173eca85a08c50be..bc2d48f61fb3e22310d50cd3f4708e4c295af8fc 100644 (file)
@@ -5,7 +5,7 @@
 \version "2.13.36"
 
 \header {
-%% Translation of GIT committish: a874fda3641c9e02f61be5c41b215b8304b8ed00
+%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
 
   texidoces = "
 He aquí una forma de imprimir un acorde en el que suena la misma nota
index 531505d51394e2d8b9f5547a1196e674eda8da4e..120dd2d58f00637ff9522c59ee2f65ccda8f5a23 100644 (file)
@@ -5,7 +5,7 @@
 \version "2.13.36"
 
 \header {
-%% Translation of GIT committish: a874fda3641c9e02f61be5c41b215b8304b8ed00
+%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
 
   texidoces = "
 Al trabajar con los callbacks de un grob, puede ser de mucha ayuda
index a2958bd63f9c8778b280d20a0d22b4fe0567a352..6e87757d1b5575a63b243bfe537c9112f7579dc8 100644 (file)
@@ -5,7 +5,7 @@
 \version "2.13.36"
 
 \header {
-%% Translation of GIT committish: a874fda3641c9e02f61be5c41b215b8304b8ed00
+%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
   doctitlees = "Alteraciones de estilo dodecafónico para todas las notas incluidas las naturales"
   texidoces = "
 En las obras de principios del s.XX, empezando por Schoenberg, Berg y
index 49bf9b973fc3e0b0d10dc337af9a9942c9031412..0a4f5495794a00c891fadebb58ce583e5cf12bf1 100644 (file)
@@ -5,7 +5,7 @@
 \version "2.13.36"
 
 \header {
-%% Translation of GIT committish: a874fda3641c9e02f61be5c41b215b8304b8ed00
+%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
 
   texidoces = "
 Funciones postfijas para la creación de objetos de extensión de texto
index 7b92ce04d4af93743edf952d569f7ecc76abdbfb..b7b57f96289d38aa4204f4d3029b8cd375bc2661 100644 (file)
@@ -5,7 +5,7 @@
 \version "2.13.36"
 
 \header {
-%% Translation of GIT committish: a874fda3641c9e02f61be5c41b215b8304b8ed00
+%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
 
   texidoces = "
 Los objetos de extensión \cresc, \dim y \decresc ahora se pueden
index 7a707326afc9efecfc0732410c85f6876185ffe4..a436a7506149e072202acacfdf65d646f391f43d 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "editorial-annotations, text"
 
-%% Translation of GIT committish: a874fda3641c9e02f61be5c41b215b8304b8ed00
+%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
   texidoces = "
 Se puede insertar códico PostScript directamente dentro de un
 bloque @code{\\markup}.
index 5ca925e946e1d95f1b858b3dc7ab393aedd2a560..22f388423e2e65a1673beb5f395af764a102706a 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "contexts-and-engravers"
 
-%% Translation of GIT committish: a874fda3641c9e02f61be5c41b215b8304b8ed00
+%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
   texidoces = "
 Del problema central de la notación, esto es, crear un determinado
 símbolo, se encargan los «plugins» o complementos añadidos.  Cada
index a25d0972cbbd6b42cbdb8fdee0f58032e96f1213..fa06105ff20f39853b66c09e6d654c9733200468 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "rhythms"
 
-%% Translation of GIT committish: a874fda3641c9e02f61be5c41b215b8304b8ed00
+%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
  doctitlees = "Grabado manual de las ligaduras"
  texidoces = "
 Se pueden grabar a mano las ligaduras modificando la propiedad
index 5d833f714dbb1ac442d79d26693d0ce9f9995ca6..1e51573af4fac049802014572cfafe49563f658a 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "rhythms"
 
-%% Translation of GIT committish: a874fda3641c9e02f61be5c41b215b8304b8ed00
+%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
  doctitlees = "Escribir varios grupos especiales usando una sola instrucción \\times"
  texidoces = "
 La propiedad @code{tupletSpannerDuration} establece cuánto debe durar
index 64f64b26e3c62e3b5aacdb75042a97f85e5cab90..7c7acc748fd5e935bed7ef9d4372b4c331f64f3f 100644 (file)
@@ -5,7 +5,7 @@
 \version "2.13.36"
 
 \header {
-%% Translation of GIT committish: a874fda3641c9e02f61be5c41b215b8304b8ed00
+%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
 
   texidoces = "
 Se puede simular un @qq{hammer} o ligado ascendente con ligaduras de
index b8412c51f931998c0b8a4504c5a49d5802f0620a..5086d216eb59d83ab2a3dda9208f9854f0873a00 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "winds"
 
-%% Translation of GIT committish: a874fda3641c9e02f61be5c41b215b8304b8ed00
+%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
   texidoces = "
 Se pueden conseguir símbolos especiales combinando glifos existentes,
 lo que es de utilidad para la notación de instrumentos de viento.
index cab48e82e810c4f994af78f457c143763ad8cccc..7de6cab252492133f0517d7a1ed7647ff50e1bc7 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "fretted-strings"
 
-%% Translation of GIT committish: a874fda3641c9e02f61be5c41b215b8304b8ed00
+%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
   texidoces = "
 En este ejemplo se combinan las digitaciones de la mano izquierda,
 indicaciones del número de cuerda y digitaciones de la mano
index 22b79101d9dc4898e39c25eb4b81beb6ca0087f9..67532788b610ccdc42a88d7bd2e2facb670067fc 100644 (file)
@@ -5,7 +5,7 @@
 \version "2.13.36"
 
 \header {
-%% Translation of GIT committish: a874fda3641c9e02f61be5c41b215b8304b8ed00
+%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
 
   texidoces = "
 
index 6642c399cc844f66820b1dac0774a912aaca8b30..402cb66a01fafc4f5340154b739aa4944489b4bf 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "rhythms"
 
-%% Translation of GIT committish: a874fda3641c9e02f61be5c41b215b8304b8ed00
+%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
   texidoces = "
 Son posibles tanto los corchetes rectos sobre notas sueltas como
 extremos de barra sueltos en figuras unidas, con una combinación de
index 9a1612c6f390266e1f8bb4c606b1aea78897af30..05e3cf5b4ecf1ff2fa460ed165246748913f551a 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "simultaneous-notes, tweaks-and-overrides"
 
-%% Translation of GIT committish: a874fda3641c9e02f61be5c41b215b8304b8ed00
+%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
 
  doctitlees = "Forzar el desplazamiento horizontal de las notas"
 
index c4295fffb27a29e66755a8e472da05a081215685..b12a8ff3118ccfdb3308f0dc1ee21eb2787cfeb9 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "vocal-music"
 
-%% Translation of GIT committish: a874fda3641c9e02f61be5c41b215b8304b8ed00
+%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
   texidoces = "
 
 Si LilyPond no cree que haya sitio suficiente para un guión separador
index e31682e4e9c05e8e5d6d99fa2a71a7a9ac2517ee..db5827a129c14c6613dc311e39701c0d94eee60b 100644 (file)
@@ -5,7 +5,7 @@
 \version "2.13.36"
 
 \header {
-%% Translation of GIT committish: a874fda3641c9e02f61be5c41b215b8304b8ed00
+%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
 
   texidoces = "
 Se pueden crear tablas alternativas de diagramas de posiciones.  Se
index e4e4f79d6e153138e59d818867a7b008269d048d..12052ea4beb19314e10795f2f6046a8b7345bced 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "pitches"
 
-%% Translation of GIT committish: a874fda3641c9e02f61be5c41b215b8304b8ed00
+%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
   texidoces = "
 Este fragmento de código basado en Scheme genera
 24 notas aleatorias (o tantas como se necesiten), basándose en la
index 86a7a9b4dfb3e3a6aa44c69781eeed2725d81c68..f58fe6bc655713e9e0e24f43c52ab227c9479882 100644 (file)
@@ -5,7 +5,7 @@
 \version "2.13.36"
 
 \header {
-%%%    Translation of GIT committish: a874fda3641c9e02f61be5c41b215b8304b8ed00
+%%%    Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
 
   texidoces = "
 En muchos casos, las llaves que no están en la columna central se
index 4132cb5607a7bf49238b76da7056b15c360dcecb..bd9594a015bf17e211fb8527b0aa350890129cf1 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "editorial-annotations"
 
-%% Translation of GIT committish: a874fda3641c9e02f61be5c41b215b8304b8ed00
+%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
   texidoces = "
 Se puede cambiar el aspecto de las líneas de rejilla
 sobreescribiendo algunas de sus propiedades.
index 429f2c108c0be45f9618421df8171de26207fd54..5acc45f85ee82a7bbb8c3933212b86c89dd31ce3 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "editorial-annotations"
 
-%% Translation of GIT committish: a874fda3641c9e02f61be5c41b215b8304b8ed00
+%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
   texidoces = "
 Se pueden trazar líneas verticales normales entre pentagramas para
 mostrar la relación entre notas; sin embargo, en caso de música
index 56b998715098c84c6ced2c2f7e5d126bd8cf0c6a..9db3835c3561906360158c4565cfc2a8a142cb5a 100644 (file)
@@ -5,7 +5,7 @@
 \version "2.13.36"
 
 \header {
-%% Translation of GIT committish: a874fda3641c9e02f61be5c41b215b8304b8ed00
+%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
   texidoces = "
 Los patrones de barrado se pueden alterar con la propiedad
 @code{beatGrouping}:
index 601be641153df61402dfa9297a249665162fe61c..42397186fde4de1f85a380af1ebc548c0e16b62b 100644 (file)
@@ -5,7 +5,7 @@
 \version "2.13.36"
 
 \header {
-%% Translation of GIT committish: a874fda3641c9e02f61be5c41b215b8304b8ed00
+%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
 
 
   texidoces = "
index 4bbcad2eba8a1c818c2c90296f01a1c1b30db8c7..527003fe9cb50e9454dd9f436e1b7ad5231ad765 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "rhythms, fretted-strings"
 
-%% Translation of GIT committish: a874fda3641c9e02f61be5c41b215b8304b8ed00
+%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
   texidoces = "
 Para la música de guitarra, es posible mostrar los ritmos de rasgueo,
 además de las notas de la melodía, acordes y diagramas de posiciones.
index 189bb34180f0342d4504b6ca9a3a9abe106873eb..32f80aacefaa83c9c8c90a16c74c23c7ac270a5c 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "expressive-marks, tweaks-and-overrides"
 
-%% Translation of GIT committish: a874fda3641c9e02f61be5c41b215b8304b8ed00
+%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
   texidoces = "
 Los reguladores pueden imprimirse en uno cualquiera de los estilos de
 @code{line-interface}: discontinuo, punteado, línea, trino o zig-zag.
index 22848afa7de3db101ef938c27a5bd5c769f4a596..dac12180314ecf7f010df2143597d2ad9a08699d 100644 (file)
@@ -4,7 +4,7 @@
 %% Note: this file works from version 2.13.36
 \version "2.13.36"
 \header {
-%% Translation of GIT committish: a874fda3641c9e02f61be5c41b215b8304b8ed00
+%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
 
   texidoces = "
 Aquí se muestra la manera de ocultar las alteraciones de las notas
index 7a4bc28ce0568960882d058540f39ce65b817826..58712c9127360ba570231adcbfe53a7f5e47d65a 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "expressive-marks"
 
-%% Translation of GIT committish: a874fda3641c9e02f61be5c41b215b8304b8ed00
+%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
   texidoces = "
 Los cambios de dinámica con estilo de texto (como cresc. y dim.)
 se imprimen con una línea intermitente que muestra su alcance.
index f1dd3fb4ee593bf227291491bef9b9194a29530f..2924722cc6d9ffe57959b3015061d1740bd544d1 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "vocal-music, template"
 
-%% Translation of GIT committish: a874fda3641c9e02f61be5c41b215b8304b8ed00
+%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
   texidoces = "
   Este fragmento de código muestra una forma de preparar un himno cuando
 cada línea comienza con un compás parcial.  También muestra cómo
index 511788048b2a951e077216fb353a8d0f3a5320d4..6ab5eb4bd63162cc8a0b7124bd866cbd41e0f83b 100644 (file)
@@ -5,7 +5,7 @@
 \version "2.13.36"
 
 \header {
-%% Translation of GIT committish: a874fda3641c9e02f61be5c41b215b8304b8ed00
+%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
   texidoces = "
 Los «incipit» se pueden escribir utilizando el grob del nombre del
 instruemento, pero manteniendo independientes las definiciones del
index 2b0746ce9277313ebb76ea4baf582de2d4564c81..d742b979a9336055c6014190e83f33f37ee39634 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "keyboards"
 
-%% Translation of GIT committish: a874fda3641c9e02f61be5c41b215b8304b8ed00
+%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
   texidoces = "
 Un corchete de arpegio puede indicar que se tienen que tocar con la
 misma mano notas que están en dos pentagramas distintos. Para hacerlo,
index bf43be15b2dc68250fcad91b983b1ceca4e49ca8..960d4aaf544a0831b1d08fca0591532d4e6ba408 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "expressive-marks, tweaks-and-overrides"
 
-%% Translation of GIT committish: a874fda3641c9e02f61be5c41b215b8304b8ed00
+%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
   texidoces = "
 Las marcas de cesura se pueden crear sobreescribiendo la propiedad
 @code{'text} del objeto @code{BreathingSign}.  También está disponible
index 0b91c01455cad08fb22f8b10ba8ace5307d17b07..43f11ea2b1f92b12d4e3016299e21608ef892ebd 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "repeats"
 
-%% Translation of GIT committish: a874fda3641c9e02f61be5c41b215b8304b8ed00
+%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
   texidoces = "
 También se pueden imprimir símbolos de porcentaje sueltos.
 
index 544696b5c1cc8105c0613ac1f33eb042cf141ee4..a6b60b4a719a52889aa2698ba6544bb7d1a4df10 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "keyboards, percussion, fretted-strings, template"
 
-%% Translation of GIT committish: a874fda3641c9e02f61be5c41b215b8304b8ed00
+%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
   texidoces = "
 Ésta es una plantilla bastante avanzada, para un conjunto de
 jazz. Observe que la notación de todos los instrumentos está en
index a82316870c817b47a6dc2336325f81ece62ea1dc..f56fb286c7a6e78eef8f4c3aef9546d7276a1775 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "pitches, tweaks-and-overrides"
 
-%% Translation of GIT committish: a874fda3641c9e02f61be5c41b215b8304b8ed00
+%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
   texidoces = "
 Cuando se produce un cambio de clave, el símbolo de clave se imprime a
 un tamaño menor que la clave inicial.  Esto se puede ajustar con
index 9814e87740a3b5f5be1d8ef5414e07a3d53de7b3..f377549cc7747e36b8d75253e6243b7181335039 100644 (file)
@@ -5,7 +5,7 @@
 \version "2.13.36"
 
 \header {
-%% Translation of GIT committish: a874fda3641c9e02f61be5c41b215b8304b8ed00
+%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
   texidoces = "
 La tablatura se puede formatear utilizando letras en lugar de números.
 
index 51b64d525eba9bcea92c1af792d2fff92ca3b516..b2ed665299b5ae1246d083bf561ee6f7ded3d473 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "expressive-marks, tweaks-and-overrides"
 
-%% Translation of GIT committish: a874fda3641c9e02f61be5c41b215b8304b8ed00
+%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
   texidoces = "
 Se pueden aplicar puntas de flecha a los elementos de extensión de
 texto y de línea (como el Glissando).
index 1feb27139cbb09605ca83c457eff7751ab279202..a0e56cbef91ad59bdbf8bb50c5e8d21ca5ce6cf2 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "text, vocal-music"
 
-%% Translation of GIT committish: a874fda3641c9e02f61be5c41b215b8304b8ed00
+%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
   texidoces = "
 La alineación horizontal de la letra se puede ajustar sobreescribiendo
 la propiedad @code{self-alignment-X} del objeto @code{LyricText}.
diff --git a/Documentation/snippets/lyrics-old-spacing-settings.ly b/Documentation/snippets/lyrics-old-spacing-settings.ly
new file mode 100644 (file)
index 0000000..5ac6929
--- /dev/null
@@ -0,0 +1,101 @@
+% Do not edit this file; it is automatically
+% generated from Documentation/snippets/new
+% This file is in the public domain.
+%% Note: this file works from version 2.13.47
+\version "2.13.47"
+
+\header {
+  lsrtags = "vocal-music"
+
+  doctitle = "Obtaining 2.12 lyrics spacing in newer versions"
+
+  texidoc = "
+The vertical spacing engine changed for version 2.14.  This can
+cause lyrics to be spaced differently.  It is possible to set
+properties for @code{Lyric} and @code{Staff} contexts to get the
+spacing engine to behave as it did in version 2.12.
+"
+} % begin verbatim
+
+
+global = {
+  \key d \major
+  \time 3/4
+}
+
+sopMusic = \relative c' {
+  % VERSE ONE
+  fis4 fis fis | \break
+  fis4. e8 e4
+}
+
+altoMusic = \relative c' {
+  % VERSE ONE
+  d4 d d |
+  d4. b8 b4 |
+}
+
+tenorMusic = \relative c' {
+  a4 a a |
+  b4. g8 g4 |
+}
+
+bassMusic = \relative c {
+  d4 d d |
+  g,4. g8 g4 |
+}
+
+words = \lyricmode {
+  Great is Thy faith- ful- ness,
+}
+
+\score {
+  \new ChoirStaff <<
+    \new Lyrics = sopranos
+    \new Staff = women <<
+      \new Voice = "sopranos" {
+        \voiceOne
+        \global \sopMusic
+      }
+      \new Voice = "altos" {
+        \voiceTwo
+        \global \altoMusic
+      }
+    >>
+    \new Lyrics = "altos"
+    \new Lyrics = "tenors"
+    \new Staff = men <<
+      \clef bass
+      \new Voice = "tenors" {
+        \voiceOne
+        \global \tenorMusic
+      }
+      \new Voice = "basses" {
+        \voiceTwo  \global \bassMusic
+      }
+    >>
+    \new Lyrics = basses
+    \context Lyrics = sopranos \lyricsto sopranos \words
+    \context Lyrics = altos \lyricsto altos \words
+    \context Lyrics = tenors \lyricsto tenors \words
+    \context Lyrics = basses \lyricsto basses \words
+  >>
+  \layout {
+    \context {
+      \Lyrics
+      \override VerticalAxisGroup #'staff-affinity = ##f
+      \override VerticalAxisGroup #'staff-staff-spacing =
+        #'((basic-distance . 0)
+          (minimum-distance . 2)
+          (padding . 2))
+    }
+    \context {
+      \Staff
+      \override VerticalAxisGroup #'staff-staff-spacing =
+        #'((basic-distance . 0)
+          (minimum-distance . 2)
+          (padding . 2))
+    }
+  }
+}
+
index 0fa77932f2fd3fb7152a29488b503cbabdfbefcb..ea08dbebd2825460fec7f2d9954eaf42700c20f4 100644 (file)
@@ -5,7 +5,7 @@
 \version "2.13.36"
 
 \header {
-%% Translation of GIT committish: a874fda3641c9e02f61be5c41b215b8304b8ed00
+%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
   texidoces = "
 El «Makam» es un tipo de melodía de Turquía que
 utiliza alteraciones microtonales de 1/9 de tono.  Consulte el
index 62e694462afb67eb91198179f770cfad0a4da43c..7e59906d8e14069edb1f802803f8001a4a6db254 100644 (file)
@@ -5,7 +5,7 @@
 \version "2.13.36"
 
 \header {
-%% Translation of GIT committish: a874fda3641c9e02f61be5c41b215b8304b8ed00
+%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
   texidoces = "
 
 Las ligaduras de expresión se pueden construir con patrones de
index 1d5f5b9363d5f7a085c752510d7bd1e316d0aa9a..db497d45ed1aa9fd37614fb01d64b782a66cad99 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "staff-notation, editorial-annotations"
 
-%% Translation of GIT committish: a874fda3641c9e02f61be5c41b215b8304b8ed00
+%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
   texidoces = "
 Se puede engrosar una línea del pentagrama con fines pedagógicos
 (p.ej. la tercera línea o la de la clave de Sol).  Esto se puede
index 1dc0221a0f7881ff103daa5f870aed34bb8c1e18..1764b1a4fe9264a15566a78d4c8cfc965ad51839 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "repeats, staff-notation, editorial-annotations"
 
-%% Translation of GIT committish: a874fda3641c9e02f61be5c41b215b8304b8ed00
+%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
   texidoces = "
 Este fragmento de código proporciona una solución alternativa a la
 producción de contadores de compás utilizando repeticiones
index 16e676d35287282c202a07132f4c32dc39a5974e..142402997d85b5b55afe54689d1e414253d7650d 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "staff-notation, ancient-notation, contexts-and-engravers, tweaks-and-overrides"
 
-%% Translation of GIT committish: a874fda3641c9e02f61be5c41b215b8304b8ed00
+%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
   texidoces = "
 La disposición «mensurstriche» en que las líneas divisorias no
 están dibujadas sobre los pentagramas, sino entre ellos, se puede
index bcceb7fc7c4d59569a0ee310ed81da954b120200..70497a5e2045edacf1ec00f470e8b0081687848d 100644 (file)
@@ -5,7 +5,7 @@
 \version "2.13.36"
 
 \header {
-%% Translation of GIT committish: a874fda3641c9e02f61be5c41b215b8304b8ed00
+%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
   texidoces = "
 Utilice un texto de marcado para sustituir el glifo de clave (TAB) con
 una fuente tipográfica moderna.
index 48905e2cdf7abf27b2c72b5da30301bbf710016e..79fb207aaa06fb253f471f78fc38c9f6a9ee3e69 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "expressive-marks"
 
-%% Translation of GIT committish: a874fda3641c9e02f61be5c41b215b8304b8ed00
+%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
   texidoces = "
 Las abreviaturas se encuentran definidas dentro del archivo
 @file{ly/script-init.ly}, donde las variables @code{dashHat},
index 56bfb62d23e1d796af8781ef6add74086eee304c..f217ba87d64124240e7105f63bc71d9483e98953 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "rhythms, simultaneous-notes, tweaks-and-overrides"
 
-%% Translation of GIT committish: a874fda3641c9e02f61be5c41b215b8304b8ed00
+%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
   texidoces = "
 Cuando se puede una nota en la voz superior para evitar la colisión
 con una nota de otra voz, el comportamiento predeterminado es
index a2f435f3460efec777f27ffe34a47b478a300d45..c55deb0a19bc1586f599ae64b7bc875333c554d3 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "expressive-marks, tweaks-and-overrides"
 
-%% Translation of GIT committish: a874fda3641c9e02f61be5c41b215b8304b8ed00
+%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
   texidoces = "
 Se puede ajustar la posición vertical de una ligadura de
 expresiónutilizando la propiedad @code{positions} del objeto
index fe3e670a1408970ef7c9a503954945ac5d458895..610e09a7201597450fb77ab04a9dce6a8e01865d 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "rhythms, text"
 
-%% Translation of GIT committish: a874fda3641c9e02f61be5c41b215b8304b8ed00
+%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
 texidoces = "
 Los elementos de marcado aplicados a un silencio multicompás se
 centran encima o debajo de éste.  Los elementos de marcado extensos
index c8853cf16d87c687bec4c77ac6b7e3a4604eeecf..ed1303f435b3b511b24d578fb099e17794b343bf 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "staff-notation, contexts-and-engravers, tweaks-and-overrides"
 
-%% Translation of GIT committish: a874fda3641c9e02f61be5c41b215b8304b8ed00
+%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
   texidoces = "
 Se puede utilizar la propiedad
 @code{systemStartDelimiterHierarchy} para crear grupos de
diff --git a/Documentation/snippets/new/lyrics-old-spacing-settings.ly b/Documentation/snippets/new/lyrics-old-spacing-settings.ly
new file mode 100644 (file)
index 0000000..b4ac792
--- /dev/null
@@ -0,0 +1,96 @@
+\version "2.13.47"
+
+\header {
+  lsrtags = "vocal-music"
+
+  doctitle = "Obtaining 2.12 lyrics spacing in newer versions"
+
+  texidoc = "
+The vertical spacing engine changed for version 2.14.  This can
+cause lyrics to be spaced differently.  It is possible to set
+properties for @code{Lyric} and @code{Staff} contexts to get the
+spacing engine to behave as it did in version 2.12.
+"
+}
+
+global = {
+  \key d \major
+  \time 3/4
+}
+
+sopMusic = \relative c' {
+  % VERSE ONE
+  fis4 fis fis | \break
+  fis4. e8 e4
+}
+
+altoMusic = \relative c' {
+  % VERSE ONE
+  d4 d d |
+  d4. b8 b4 |
+}
+
+tenorMusic = \relative c' {
+  a4 a a |
+  b4. g8 g4 |
+}
+
+bassMusic = \relative c {
+  d4 d d |
+  g,4. g8 g4 |
+}
+
+words = \lyricmode {
+  Great is Thy faith- ful- ness,
+}
+
+\score {
+  \new ChoirStaff <<
+    \new Lyrics = sopranos
+    \new Staff = women <<
+      \new Voice = "sopranos" {
+        \voiceOne
+        \global \sopMusic
+      }
+      \new Voice = "altos" {
+        \voiceTwo
+        \global \altoMusic
+      }
+    >>
+    \new Lyrics = "altos"
+    \new Lyrics = "tenors"
+    \new Staff = men <<
+      \clef bass
+      \new Voice = "tenors" {
+        \voiceOne
+        \global \tenorMusic
+      }
+      \new Voice = "basses" {
+        \voiceTwo  \global \bassMusic
+      }
+    >>
+    \new Lyrics = basses
+    \context Lyrics = sopranos \lyricsto sopranos \words
+    \context Lyrics = altos \lyricsto altos \words
+    \context Lyrics = tenors \lyricsto tenors \words
+    \context Lyrics = basses \lyricsto basses \words
+  >>
+  \layout {
+    \context {
+      \Lyrics
+      \override VerticalAxisGroup #'staff-affinity = ##f
+      \override VerticalAxisGroup #'staff-staff-spacing =
+        #'((basic-distance . 0)
+          (minimum-distance . 2)
+          (padding . 2))
+    }
+    \context {
+      \Staff
+      \override VerticalAxisGroup #'staff-staff-spacing =
+        #'((basic-distance . 0)
+          (minimum-distance . 2)
+          (padding . 2))
+    }
+  }
+}
+
diff --git a/Documentation/snippets/new/vocal-ensemble-template-with-automatic-piano-reduction.ly b/Documentation/snippets/new/vocal-ensemble-template-with-automatic-piano-reduction.ly
new file mode 100644 (file)
index 0000000..925d174
--- /dev/null
@@ -0,0 +1,101 @@
+\version "2.13.47"
+
+\header {
+  lsrtags = "vocal-music, keyboards, template"
+
+  texidoc = "
+This template adds an automatic piano reduction to the standard SATB
+vocal score demonstrated in @qq{Vocal ensemble template}. This
+demonstrates one of the strengths of LilyPond – you can use a music
+definition more than once. If any changes are made to the vocal notes
+(say, @code{tenorMusic}), then the changes will also apply to the piano
+reduction.
+"
+  doctitle = "Vocal ensemble template with automatic piano reduction"
+}
+
+\paper {
+  top-system-spacing #'basic-distance = #10
+  score-system-spacing #'basic-distance = #20
+  system-system-spacing #'basic-distance = #20
+  last-bottom-spacing #'basic-distance = #10
+}
+
+global = {
+  \key c \major
+  \time 4/4
+}
+
+sopMusic = \relative c'' {
+  c4 c c8[( b)] c4
+}
+sopWords = \lyricmode {
+  hi hi hi hi
+}
+
+altoMusic = \relative c' {
+  e4 f d e
+}
+altoWords =\lyricmode {
+  ha ha ha ha
+}
+
+tenorMusic = \relative c' {
+  g4 a f g
+}
+tenorWords = \lyricmode {
+  hu hu hu hu
+}
+
+bassMusic = \relative c {
+  c4 c g c
+}
+bassWords = \lyricmode {
+  ho ho ho ho
+}
+
+\score {
+  <<
+    \new ChoirStaff <<
+      \new Lyrics = "sopranos" \with {
+        % This is needed for lyrics above a staff
+        \override VerticalAxisGroup #'staff-affinity = #DOWN
+      }
+      \new Staff = "women" <<
+        \new Voice = "sopranos" { \voiceOne << \global \sopMusic >> }
+        \new Voice = "altos" { \voiceTwo << \global \altoMusic >> }
+      >>
+      \new Lyrics = "altos"
+      \new Lyrics = "tenors" \with {
+        % This is needed for lyrics above a staff
+        \override VerticalAxisGroup #'staff-affinity = #DOWN
+      }
+
+      \new Staff = "men" <<
+        \clef bass
+        \new Voice = "tenors" { \voiceOne << \global \tenorMusic >> }
+        \new Voice = "basses" { \voiceTwo << \global \bassMusic >> }
+      >>
+      \new Lyrics = "basses"
+      \context Lyrics = "sopranos" \lyricsto "sopranos" \sopWords
+      \context Lyrics = "altos" \lyricsto "altos" \altoWords
+      \context Lyrics = "tenors" \lyricsto "tenors" \tenorWords
+      \context Lyrics = "basses" \lyricsto "basses" \bassWords
+    >>
+    \new PianoStaff <<
+      \new Staff <<
+        \set Staff.printPartCombineTexts = ##f
+        \partcombine
+        << \global \sopMusic >>
+        << \global \altoMusic >>
+      >>
+      \new Staff <<
+        \clef bass
+        \set Staff.printPartCombineTexts = ##f
+        \partcombine
+        << \global \tenorMusic >>
+        << \global \bassMusic >>
+      >>
+    >>
+  >>
+}
diff --git a/Documentation/snippets/new/vocal-ensemble-template.ly b/Documentation/snippets/new/vocal-ensemble-template.ly
new file mode 100644 (file)
index 0000000..a9a8f9a
--- /dev/null
@@ -0,0 +1,94 @@
+\version "2.13.47"
+
+\header {
+  lsrtags = "vocal-music, template"
+
+  texidoc = "
+Here is a standard four-part SATB vocal score. With larger ensembles,
+it is often useful to include a section which is included in all parts.
+For example, the time signature and key signature are almost always the
+same for all parts. Like in the @qq{Hymn} template, the four voices are
+regrouped on only two staves.
+"
+  doctitle = "Vocal ensemble template"
+}
+
+\paper {
+  top-system-spacing #'basic-distance = #10
+  score-system-spacing #'basic-distance = #20
+  system-system-spacing #'basic-distance = #20
+  last-bottom-spacing #'basic-distance = #10
+}
+
+global = {
+  \key c \major
+  \time 4/4
+}
+
+sopMusic = \relative c'' {
+  c4 c c8[( b)] c4
+}
+sopWords = \lyricmode {
+  hi hi hi hi
+}
+
+altoMusic = \relative c' {
+  e4 f d e
+}
+altoWords = \lyricmode {
+  ha ha ha ha
+}
+
+tenorMusic = \relative c' {
+  g4 a f g
+}
+tenorWords = \lyricmode {
+  hu hu hu hu
+}
+
+bassMusic = \relative c {
+  c4 c g c
+}
+bassWords = \lyricmode {
+  ho ho ho ho
+}
+
+\score {
+  \new ChoirStaff <<
+    \new Lyrics = "sopranos" \with {
+      % this is needed for lyrics above a staff
+      \override VerticalAxisGroup #'staff-affinity = #DOWN
+    }
+    \new Staff = "women" <<
+      \new Voice = "sopranos" {
+        \voiceOne
+        << \global \sopMusic >>
+      }
+      \new Voice = "altos" {
+        \voiceTwo
+        << \global \altoMusic >>
+      }
+    >>
+    \new Lyrics = "altos"
+    \new Lyrics = "tenors" \with {
+      % this is needed for lyrics above a staff
+      \override VerticalAxisGroup #'staff-affinity = #DOWN
+    }
+    \new Staff = "men" <<
+      \clef bass
+      \new Voice = "tenors" {
+        \voiceOne
+        << \global \tenorMusic >>
+      }
+      \new Voice = "basses" {
+        \voiceTwo << \global \bassMusic >>
+      }
+    >>
+    \new Lyrics = "basses"
+    \context Lyrics = "sopranos" \lyricsto "sopranos" \sopWords
+    \context Lyrics = "altos" \lyricsto "altos" \altoWords
+    \context Lyrics = "tenors" \lyricsto "tenors" \tenorWords
+    \context Lyrics = "basses" \lyricsto "basses" \bassWords
+  >>
+}
+
diff --git a/Documentation/snippets/new/vocal-headword.ly b/Documentation/snippets/new/vocal-headword.ly
new file mode 100644 (file)
index 0000000..d5fd735
--- /dev/null
@@ -0,0 +1,73 @@
+\version "2.13.47"
+
+#(set-global-staff-size 15)
+\paper {
+  ragged-right = ##t
+  line-width = 17\cm
+  indent = 0\cm
+}
+
+\header {
+  lsrtags = "headwords"
+  texidoc = ""
+  doctitle = "headword"
+}
+
+\layout {
+  \context {
+    \Score
+    \override PaperColumn #'keep-inside-line = ##t
+    \override NonMusicalPaperColumn #'keep-inside-line = ##t
+  }
+}
+
+% L. van Beethoven. Symphony No. 9 in D minor, op.125; Finale
+% mm. 216 -- 236
+% Text: F. von Schiller
+
+\score {
+  \new Staff \relative c' {
+    \set Score.currentBarNumber = 216
+    \bar ""  % make first bar number be shown
+    \clef bass \key d \minor \time 3/4
+    % \tempo "Presto"
+    % \compressFullBarRests  R2.*8
+    \tempo "Recitativo"
+    \autoBeamOff
+    r4^\markup { \small Baritono } r a
+    \appoggiatura a8 e'2. ~
+    e4 d8[ cis d e]
+    e4 g, r8 g
+    bes2 a8 e
+    g4 f r
+    R2.*2
+    gis2 gis4
+    r4 d'4. b8
+    b4 gis8([ a b cis]
+    e8[ d cis d)] b([ gis)]
+    e8 d d4 fis8([ e)]
+    d4 cis r
+    \key d \major
+    r4 r a'
+    d4.( e8[ fis e)]
+    e([ d)] d([ cis d a)]
+    g8([ fis)] fis([ e d c)]
+    c8([ b)] g'2~
+    \once \override Script #'outside-staff-priority = #1 % put fermata closer to staff
+    g4.\fermata ^\markup { \small \italic "ad libitum" } e8[ cis!] d
+    d8 a a4 r \bar "||"
+
+    % \time 4/4 \tempo "Allegro assai"
+    % R1
+    % e''4^\f d r2
+    % R1
+    % e4( ^\f d2) a8([ g)]
+  }
+  \addlyrics {
+    O Freun -- _ _ de, nicht die -- _ se Tö -- ne!
+    Son -- dern laßt uns an -- _ ge -- neh -- me -- re an -- stim -- men,
+    und freu -- _ _ _ _ _ _ _ den -- vol -- le -- re!
+    % Freu -- de, Freu -- de,__
+  }
+}
+
index d397d25af6aff51630d2b64c8f7886589b8a9d98..b5ca54942a3893f5ead8d8e260a308e4ac5f3796 100644 (file)
@@ -5,7 +5,7 @@
 \version "2.13.36"
 
 \header {
-%% Translation of GIT committish: a874fda3641c9e02f61be5c41b215b8304b8ed00
+%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
   texidoces = "
 LilyPond también proporciona funciones de formato para imprimir
 números de grupo especial diferentes a la propia fracción, así
index 06e3380f9013efd0edfb1a58c5d97c391cea4064..1e6366eb30a44ddf16a6b289ad877fb53a1e8d47 100644 (file)
@@ -5,7 +5,7 @@
 \version "2.13.36"
 
 \header {
-%% Translation of GIT committish: a874fda3641c9e02f61be5c41b215b8304b8ed00
+%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
   doctitlees = "Armaduras de tonalidad no tradicionales"
   texidoces = "
 
index 732b09e1271d3468ee35c30cc1b37b9cfd0faecf..1c611b65d21936751af2f6fc0ff4c32a3aac05c4 100644 (file)
@@ -5,7 +5,7 @@
 \version "2.13.36"
 
 \header {
-%% Translation of GIT committish: a874fda3641c9e02f61be5c41b215b8304b8ed00
+%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
   texidoces = "
 
 Las cabezas de nota de notación fácil utilizan la propiedad
index 923b5d361f2394d90db1fb16e02134475afc6cd1..f58dc493020fccec6de3c360bb27a08e0bc78046 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "pitches, staff-notation, vocal-music, template"
 
-%% Translation of GIT committish: a874fda3641c9e02f61be5c41b215b8304b8ed00
+%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
   texidoces = "
 Esta plantilla muestra el uso de contextos @code{StaffGroup} y
 @code{GrandStaff} anidados para sub-agrupar instrumentos del mismo
index 794d977b36f0053fa276ad295602fe18ef97806e..30817a6bb13b0f1f604a9fb5ccb1097115e8deb5 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "pitches, text"
 
-%% Translation of GIT committish: a874fda3641c9e02f61be5c41b215b8304b8ed00
+%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
   texidoces = "
 
 Internamente, @code{\\ottava} establece las propiedades
index 12ea2e369be66329ec470b7d8d2a3de51e6d1fde..65bf69ba0fd553894b882305ac36193b019de8a3 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "rhythms"
 
-%%   Translation of GIT committish: a874fda3641c9e02f61be5c41b215b8304b8ed00
+%%   Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
 
   texidoces = "
 
index 6e7487196415752a22769ecb473c05915e4e6144..67e5e4fd0948a37ab5c8e4a908fe697b27c62eb2 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "repeats, tweaks-and-overrides"
 
-%% Translation of GIT committish: a874fda3641c9e02f61be5c41b215b8304b8ed00
+%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
   texidoces = "
 Se pueden mostrar los contadores de las repeticiones del tipo
 porcentaje a intervalos regulares mediante el establecimiento de
index e2fd58acc250e30cbaca0e3f8d9032d95f9ea99a..1282aea4bec40d4effd8aa523267a146c81336c0 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "repeats"
 
-%% Translation of GIT committish: a874fda3641c9e02f61be5c41b215b8304b8ed00
+%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
   texidoces = "
 Las repeticiones de compases completos de más de dos repeticiones
 pueden llevar un contador si se activa la propiedad adecuada, como se
index e2ffdb4d53bf6b83b6218434e98660035f27ff81..0d9b0db3d294195c13e65cd5fa22176f55e8702c 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "rhythms"
 
-%% Translation of GIT committish: a874fda3641c9e02f61be5c41b215b8304b8ed00
+%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
  doctitlees = "Permitir saltos de línea dentro de grupos especiales con barra"
  texidoces = "
 Este ejemplo artificial muestra cómo se pueden permitir tanto los
index 7fffd824a7157fb5c071d8706e598308f75fc1eb..a0cfd96b44eb1323a94d160f0b91a495987650ef 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "keyboards, template"
 
-%% Translation of GIT committish: a874fda3641c9e02f61be5c41b215b8304b8ed00
+%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
   texidoces = "
 Presentamos a continuación una plantilla de piano sencilla con algunas
 notas.
index fa1e7baa74651c93e33d2e1710b5eb4f0cccaf1f..ef0d0f906a9a13290b1d5c5a686d8930381d84df 100644 (file)
@@ -5,7 +5,7 @@
 \version "2.13.36"
 
 \header {
-%% Translation of GIT committish: a874fda3641c9e02f61be5c41b215b8304b8ed00
+%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
   texidoces = "
 Muchas partituras de piano tienen las indicaciones dinámicas centradas
 entre los dos pentagramas.  El contexto @code{Dynamics}, si se sitúa
index caa731feb88127477b8b5aba5adbc1034d957bd5..7f99135f2585071dfede871230386e87d3f08e11 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "text, keyboards, template"
 
-%% Translation of GIT committish: a874fda3641c9e02f61be5c41b215b8304b8ed00
+%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
   texidoces = "
 En lugar de tener un pentagrama dedicado a la melodía y la letra, ésta
 se puede centrar entre los pentagramas de un sistema de piano.
index d934107c7b8a5f4494e6a522fb20a432020e6b9a..739547c72094518fa217fa2bc9f217812fb1fdff 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "vocal-music, keyboards, template"
 
-%% Translation of GIT committish: a874fda3641c9e02f61be5c41b215b8304b8ed00
+%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
   texidoces = "
 He aquí el típico formato dde una canción: un pentagrama con la
 melodía y la letra, y el acompañamiento de piano por debajo.
index d882cfdb34c86ad74995f280aece4f361f589589..6eaed70f91df352e31cb4f9fd953df08e4b7b443 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "fretted-strings"
 
-%% Translation of GIT committish: a874fda3641c9e02f61be5c41b215b8304b8ed00
+%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
   texidoces = "
 Es posible ejercer un mayor control sobre la colocación de las
 digitaciones de la mano derecha estableciendo el valor de una
index d33519d8b7303b0c13f3384537bb3eb2c0a5b8c4..318b85b5119462d95b4e37cf01b8fc49429e16cd 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "fretted-strings"
 
-%% Translation of GIT committish: a874fda3641c9e02f61be5c41b215b8304b8ed00
+%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
   texidoces = "
 La polifonía se crea de la misma forma en un @code{TabStaff} que
 en una pauta normal.
index 9dc0e332eeb3a459582319442513d95f82901b2d..b4e7f9d872dfc9e25baf059ac276baae6928fafd 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "expressive-marks, tweaks-and-overrides"
 
-%% Translation of GIT committish: a874fda3641c9e02f61be5c41b215b8304b8ed00
+%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
   texidoces = "
 Si necesitamos alargar o acortar un símbolo de arpegio, podemos
 modificar independientemente los extremos superior e inferior.
index d651d1fbb7950350f4692dc0187729f2ed2586dc..372a3840817772f1775f569076eb21c5a2b68a99 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "rhythms"
 
-%% Translation of GIT committish: a874fda3641c9e02f61be5c41b215b8304b8ed00
+%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
   texidoces = "
 
 Cuando se colocan figuras sobre líneas adicionales, sus barras se
index 03b3447bb1143c80b9454952531b76cc35a76b90..08450d23d81473d0ba9bc368846d9f278ea394fb 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "rhythms"
 
-%% Translation of GIT committish: a874fda3641c9e02f61be5c41b215b8304b8ed00
+%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
   texidoces = "
 
 Al establecer la propiedad @code{'strict-grace-spacing} hacemos que
index 4150ff436f05340b550f9b5db9273d8673ded1ca..92eaa7054c0a5ba4df4dae07f0981481e3886302 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "rhythms, tweaks-and-overrides"
 
-%% Translation of GIT committish: a874fda3641c9e02f61be5c41b215b8304b8ed00
+%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
  doctitlees = "Posicionar los silencios multicompás"
  texidoces = "
 A diferencia de los silencios normales, no existe una instrucción
index b0ee71a384894e3227ea1ae824eb52772ba1b929..ede92bf321a4089a83839292acaede2435360275 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "expressive-marks, editorial-annotations, tweaks-and-overrides"
 
-%% Translation of GIT committish: a874fda3641c9e02f61be5c41b215b8304b8ed00
+%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
   texidoces = "
 
 Los elementos de marcado de texto deben tener la propiedad
index 149aa635a6fa4f276da87dafd97d02289ce807ec..a1d6cc49e75b68c85b97667161fa4aab3079c938 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "pitches"
 
-%% Translation of GIT committish: a874fda3641c9e02f61be5c41b215b8304b8ed00
+%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
 doctitlees = "Evitar que se añadan becuadros adicionales automáticamente"
 
 texidoces = "
index 0a4200765f36e117ffae0234a5cca60a2f17f779..e3373e37c112a3b474184f79bafec8f677a27f5e 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "pitches"
 
-%% Translation of GIT committish: a874fda3641c9e02f61be5c41b215b8304b8ed00
+%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
 doctitlees = "Evitar que se impriman becuadros cuando cambia la armadura"
 
 texidoces = "
index 6db71399bc9d78fb74150a79025b40855009a692..5fd73738963407e5be620ceb1b8bc9949090e6d4 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "repeats, tweaks-and-overrides"
 
-%% Translation of GIT committish: a874fda3641c9e02f61be5c41b215b8304b8ed00
+%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
   texidoces = "
 Se puede imprimir una línea divisoria de la forma @code{|:} al
 principio de la pieza, sobreescribiendo la propiedad correspondiente:
index 63321dcfda1485b23b5aa754118ec5b5f6406531..80339e861269c3eb50c252b6df2e2d20318ee8c9 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "rhythms"
 
-%% Translation of GIT committish: a874fda3641c9e02f61be5c41b215b8304b8ed00
+%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
   texidoces = "
 
 Se pueden imprimir los números de compás a intervalos regulares
index 85a6ad8501ca41ff59b6040ecfe4daf77bf92f86..493ecb69421e126de2bbf86c96fdc4be3a7f0efb 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "rhythms, tweaks-and-overrides"
 
-%% Translation of GIT committish: a874fda3641c9e02f61be5c41b215b8304b8ed00
+%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
   texidoces = "
 
 Los números de compás también se pueden imprimir dentro de rectángulos o de circunferencias.
index 35d39c0d4db2b5ab9cad2efc605c44d4d5556fe8..9f400eae48d1ad043f9c5ff78289a18fcbcd906d 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "expressive-marks"
 
-%% Translation of GIT committish: a874fda3641c9e02f61be5c41b215b8304b8ed00
+%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
   texidoces = "
 Se pueden imprimir reguladores con un círculo en la punta (notación
 «al niente») estableciendo la propiedad @code{circled-tip} del objeto
index 497516732ce5db632d8ac8fd9daa9156d7d4bb19..c82af2f6343cd71ca150f744108f622063193bf2 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "text"
 
-%% Translation of GIT committish: a874fda3641c9e02f61be5c41b215b8304b8ed00
+%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
 
   texidoces = "
 
index b1921da326454a06fad6270af68f84e09a1b3079..e7233d718752d64148c3069c3a5e479a2fbc6975 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "text"
 
-%% Translation of GIT committish: a874fda3641c9e02f61be5c41b215b8304b8ed00
+%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
   texidoces = "
 Aunque normalmente las marcas de texto sólo se imprimen sobre el
 pentagrama superior, también se pueden imprimir en otro pentagrama
index ac9c6ed57b0830037300a9cd0afb95ffc1fdf408..ed8dc4b29cc2b84c0bed3e49b99b6fe227854c80 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "rhythms, expressive-marks, tweaks-and-overrides"
 
-%% Translation of GIT committish: a874fda3641c9e02f61be5c41b215b8304b8ed00
+%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
   texidoces = "
 De forma predeterminada, las indicaciones metronómicas y las
 letras de ensayo se imprimen encima del pentagrama.  Para
index f7508a297b06e0a37298651e1f909e284ececa7a..da9a6e8fc392a294877d2672ed4af25c08eecf7c 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "tweaks-and-overrides"
 
-%% Translation of GIT committish: a874fda3641c9e02f61be5c41b215b8304b8ed00
+%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
   texidoces = "
 Se puede usar el contexto @code{NoteNames} para imprimir el valor
 textual de las notas.  La propiedad @code{printOctaveNames} activa o
index c9acef808988b8b52acec5abd51f18de60ebfe3f..fd84b3b9cb04275719a922c11b23794a1e0060ff 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "rhythms"
 
-%% Translation of GIT committish: a874fda3641c9e02f61be5c41b215b8304b8ed00
+%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
   texidoces = "
 
 De forma predeterminada se suprime el número del primer compás de una
index a596e855f33f8675fa64d433956f63ca83651563..c196e238994a4fdd0d702073aab1f2ec8f99b67b 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "pitches, staff-notation"
 
-%% Translation of GIT committish: a874fda3641c9e02f61be5c41b215b8304b8ed00
+%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
   texidoces = "
 Los pasajes citados tienen en cuenta la transposición de la fuente
 tanto como la del destino.  En este ejemplo, todos los
index 71cff7103297ec1936e0250a61b0cdd7c74f78c8..e0afb0713b7c97b9d5151955433d6c1a3d467894 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "staff-notation"
 
-%% Translation of GIT committish: a874fda3641c9e02f61be5c41b215b8304b8ed00
+%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
   texidoces = "
 
 La propiedad @code{quotedEventTypes} determina los tipos de eventos
index 0293d78503b477a356572092ff972bf0d51ae710..1c13b177d16c6cbf7382ecb261cfa512354261a3 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "winds"
 
-%% Translation of GIT committish: a874fda3641c9e02f61be5c41b215b8304b8ed00
+%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
 
   texidoces = "
 El ejemplo siguiente muestra cómo se pueden realizar diagramas de
index 38e4d74f6bcbf492a44369ec30c973028a0fcb32..984f9be20c9de26dd79e0a0a2853bc8812686f00 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "rhythms"
 
-%% Translation of GIT committish: a874fda3641c9e02f61be5c41b215b8304b8ed00
+%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
   texidoces = "
 
 Los valores predeterminados para las notas de adorno están
index 06c66bd8853207ba99e233a47b2e824b2d0404a8..8eda9d0eeb9dee3628f9d37d3f63f0d1f617e1d8 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "rhythms, contexts-and-engravers"
 
-%% Translation of GIT committish: a874fda3641c9e02f61be5c41b215b8304b8ed00
+%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
   texidoces = "
 
 Se pueden eliminar completamente los números de compás quitando el
index d48a6ac3af9c6b13bca558302a47d90e07015b1c..4c64c20c6f5be46b6e1777a3aa68edcb797fe10a 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "rhythms, tweaks-and-overrides"
 
-%% Translation of GIT committish: a874fda3641c9e02f61be5c41b215b8304b8ed00
+%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
   texidoces = "
 De forma predeterminada, las líneas divisorias en los grupos
 StaffGroup, PianoStaff o GrandStaff se conectan entre los pentagramas.
index 7ee61d7e59b4cd55dc2210b63b82f78b98c66ba8..662d6f315e14b4c9a3cb24932e4a3d143272f10b 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "staff-notation, tweaks-and-overrides, breaks"
 
-%% Translation of GIT committish: a874fda3641c9e02f61be5c41b215b8304b8ed00
+%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
   texidoces = "
 El primer pentagrama vacío también se puede suprimir de la
 partitura estableciendo la propiedad @code{remove-first} de
index e9b9f3dd1ff2216909a53c9405b9f414ff91123d..58ace411d1d85e8fc4a83055e97824136add53d6 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "rhythms, ancient-notation, tweaks-and-overrides"
 
-%% Translation of GIT committish: a874fda3641c9e02f61be5c41b215b8304b8ed00
+%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
   doctitlees = "Estilos de silencios"
   texidoces = "
 Los silencios se pueden imprimir en distintos estilos.
index a704dd2debe474fc86d6b1aaa5d9f078bba08f14..d233b16c4fd0d8c0a41edb503ad21c9a2c1eeffd 100644 (file)
@@ -5,7 +5,7 @@
 \version "2.13.36"
 
 \header {
-%% Translation of GIT committish: a874fda3641c9e02f61be5c41b215b8304b8ed00
+%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
   texidoces = "
 Para tipografiar las barras agrupadas en la forma @code{3-4-3-2} sólo
 es necesario modificar la estructura de pulsos:
index 494d8ccadf79c2deb1d2b8280e97db8f148f5fdd..1286413f2ed23a8b1a4748f33fb7e3cb69b96f15 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "expressive-marks, tweaks-and-overrides"
 
-%% Translation of GIT committish: a874fda3641c9e02f61be5c41b215b8304b8ed00
+%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
   texidoces = "
 Si la nota que da fin a un regulador cae sobre la primera parte de
 un compás, el regulador se detiene en la línea divisoria
index 21211fc872e5b40c4819e9b71f0af92c438b0398..3a228d20651e866118857ab29e78a199f07cb619 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "staff-notation, tweaks-and-overrides, paper-and-layout"
 
-%% Translation of GIT committish: a874fda3641c9e02f61be5c41b215b8304b8ed00
+%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
   texidoces = "
 Se pueden insertar separadores sistema entre los sistemas de una
 página.  Se puede usar cualquier elemento de marcado, pero
index 40c85534b480d6c86d26a32ec57d82496c54e29f..a45d483907684ff1aecb24a07c4c97861bd67afc 100644 (file)
@@ -4,7 +4,7 @@
 %% Note: this file works from version 2.13.36
 \version "2.13.36"
 \header {
-%% Translation of GIT committish: a874fda3641c9e02f61be5c41b215b8304b8ed00
+%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
 
   texidoces = "
 
index f48b6492a371d89e6bc76ec2a8d0d743c0f2f502..2664550ed69627d8f4d1083d4f5f1beb0c1debab 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "expressive-marks"
 
-%% Translation of GIT committish: a874fda3641c9e02f61be5c41b215b8304b8ed00
+%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
   texidoces = "
 Si los reguladores son demasiado cortos, se pueden alargar
 modificando la propiedad @code{minimum-length} del objeto
index e9dfa64f7f5631ca56d0f0edb2245eb4714988ed..432fb4041fc444bfffc016df4cd4d90a080d37e9 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "repeats"
 
-%% Translation of GIT committish: a874fda3641c9e02f61be5c41b215b8304b8ed00
+%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
   texidoces = "
 De forma predeterminada, los corchetes de primera y segunda vez se
 trazan encima de los finales alternativos completos, pero es posible
index ead4d45408cbe41e73cd5cab09d17fb60c1b07a6..1c54c0f7efd4f376ff22c9c1f57717ad91e15bc8 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "chords"
 
-%% Translation of GIT committish: a874fda3641c9e02f61be5c41b215b8304b8ed00
+%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
   texidoces = "
 Se pueden imprimir los acordes exclusivamente al comienzo de las
 líneas y cuando cambia el acorde.
index cb54186312235c0a9bfb009ceeddeace96f54a54..1de1758bb4a110dab50aaff9f88321491a53d460 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "chords"
 
-%% Translation of GIT committish: a874fda3641c9e02f61be5c41b215b8304b8ed00
+%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
   texidoces = "
 Al juntar nombres de acorde en cifrado americano, melodía y letra,
 obtenemos una hoja guía de acordes o «lead sheet»:
index 29a7d8503c811c605b050a4e33a69a2d2b78d018..8a88ddabe30807f4d27d92c647780aa0acc9de82 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "vocal-music, chords, template"
 
-%% Translation of GIT committish: a874fda3641c9e02f61be5c41b215b8304b8ed00
+%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
   texidoces = "
 Esta plantilla facilita la preparación de una canción con melodía,
 letra y acordes.
index 40e0ca40c0fc14466bf5564e0d98b7bdf906c66a..2f170dc2c0fc872273be0b18122982946192213d 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "vocal-music, chords, template"
 
-%% Translation of GIT committish: a874fda3641c9e02f61be5c41b215b8304b8ed00
+%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
   texidoces = "
 Presentamos a continuación un ejemplo de plantilla para una hoja
 guía de acordes con melodía, letra, acordes y diagramas de
index 56bb432b2f9dd79c49ecca0bd1f43ec561e0fded..8b48a14ee1c846e33febbbe9e6415cfde3d7a90e 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "chords, template"
 
-%% Translation of GIT committish: a874fda3641c9e02f61be5c41b215b8304b8ed00
+%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
   texidoces = "
 ¿Quiere preparar una hoja guía de acordes (o «lead sheet») con
 melodía y acordes?  ¡No busque más!
index a20ce69b32b4aff1b372096f9f576e8eae44c41e..1509a23da6ac9848915e65ce8c97cfbb4fcc32f4 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "vocal-music, template"
 
-%% Translation of GIT committish: a874fda3641c9e02f61be5c41b215b8304b8ed00
+%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
   texidoces = "
 Esta pequeña plantilla muestra una melodía sencilla con letra. Córtela
 y péguela, escriba las notas y luego la letra. Este ejemplo desactiva
index 7ed104e97d7e389f5693b4d42e953636ce346cc9..9aa5a2469313b7ee302635da2bcf0383a3069a41 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "template"
 
-%% Translation of GIT committish: a874fda3641c9e02f61be5c41b215b8304b8ed00
+%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
   texidoces = "
 Esta plantilla simple prepara un pentagrama con notas, adecuado para
 un instrumento solista o un fragmento melódico. Córtelo y péguelo en
index 7e494d2217877ea830cdcb16477ce09e07b9e5d5..d02eb2d4386614f012ad584e139d1b8c51b309da 100644 (file)
@@ -5,7 +5,7 @@
 \version "2.13.36"
 
 \header {
-%% Translation of GIT committish: a874fda3641c9e02f61be5c41b215b8304b8ed00
+%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
   doctitlees = "Marca de pizzicato de chasquido (`pizzicato de Bartók')"
   texidoces = "
 El pizzicato de chasquido (también llamado @q{Pizzicato de Bartók}) es un
index c911a8376159d81353518423a42bd20b806deba3..b5b4fd1e7652865fc9f52128cb9610846426905a 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "text"
 
-%% Translation of GIT committish: a874fda3641c9e02f61be5c41b215b8304b8ed00
+%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
   texidoces = "
 Los textos independientes se pueden disponer en varias columnas
 utilizando instrucciones @code{\\markup}:
index 38dd583384dece123334ff7861f29950e6d62516..28eaf3a627759d7e8e9a3a406d2951a8c6b73012 100644 (file)
@@ -5,7 +5,7 @@
 \version "2.13.36"
 
 \header {
-%% Translation of GIT committish: a874fda3641c9e02f61be5c41b215b8304b8ed00
+%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
   texidoces = "
 La dirección de las plicas se contola de la misma forma en la
 tablatura que en la notación tradicional. Las barras se pueden
index 2b2861e91b9168a1af474fb21b78933008b847ba..4fdc045969d527e86d7f388bd3d64c85b8180a0f 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "unfretted-strings, template"
 
-%% Translation of GIT committish: a874fda3641c9e02f61be5c41b215b8304b8ed00
+%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
   texidoces = "
 Esta plantilla muestra un cuarteto de cuerda normal. También utiliza
 una sección @code{\\global} para el compás y la armadura
index 0dbb8ec14dc628dddd6c715860e7232bf2253b46..466bb55c243d3e0d005789c15f14368c41e4866c 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "unfretted-strings, template"
 
-%% Translation of GIT committish: a874fda3641c9e02f61be5c41b215b8304b8ed00
+%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
   texidoces = "
 El fragmento de código @qq{Plantilla de cuarteto de cuerda} produce un
 resultado satisfactorio para el cuarteto, pero ¿y si tenemos que
index fba0d2234dab4daca6fc5034da3adada01e0fdcb..b50f14f547f9f58a1222692a2dd3d638086ca782 100644 (file)
@@ -5,7 +5,7 @@
 \version "2.13.36"
 
 \header {
-%% Translation of GIT committish: a874fda3641c9e02f61be5c41b215b8304b8ed00
+%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
 
   texidoces = "
 
index 49589afe89e55c863b0d4d0c36d4df1afbcb2e58..e3f1e3b49c94727b688166d516bfe0bd82636ff6 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "rhythms, tweaks-and-overrides"
 
-%% Translation of GIT committish: a874fda3641c9e02f61be5c41b215b8304b8ed00
+%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
   texidoces = "
 
 A veces, la indicación de compás no debe imprimir la fracción completa
index 4700e51a1536464eed5c2ecbaccbb870c9d54828..bca208643728301cd4ad4a4906c6cdb4e7f0a383 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "ancient-notation, tweaks-and-overrides"
 
-%% Translation of GIT committish: a874fda3641c9e02f61be5c41b215b8304b8ed00
+%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
   texidoces = "
 A modo de alternativa para obtener auténticos «incipit»
 independientes de la partitura principal, se incluyen como
index 72719f78587418922f0bc7d8afc96d416a1f8c67..74102a3351813f66eb594d83717fb27eb8c8cda9 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "pitches"
 
-%% Translation of GIT committish: a874fda3641c9e02f61be5c41b215b8304b8ed00
+%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
 doctitlees = "Transportar música con el menor número de alteraciones"
 texidoces = "
 Este ejemplo utiliza código de Scheme para forzar las
index 8c32167215140eba2f977d62253717ab51bd95b5..7d89573a3f8da51e72499e5463798a94bd378602 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "pitches, staff-notation, tweaks-and-overrides"
 
-%% Translation of GIT committish: a874fda3641c9e02f61be5c41b215b8304b8ed00
+%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
   doctitlees = "Trucaje de las propiedades de clave"
   texidoces = "
 La instrucción @code{\\clef \"treble_8\"} equivale a un ajuste de
index 51e62e758dc4f5e2d3d0f8bb99b60eab05034745..2cc7e3ef93e3e43585821f984935a12aa440c7a9 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "rhythms, tweaks-and-overrides"
 
-%% Translation of GIT committish: a874fda3641c9e02f61be5c41b215b8304b8ed00
+%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
   texidoces = "
 
 La disposición de las expresiones de adorno se puede cambiar a lo
index 880acc583fe3ef3c4e675cb794cb2a73a8415689..e91b5df25a815d56aaabbf5d12849f11f23010c6 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "staff-notation, contexts-and-engravers"
 
-%% Translation of GIT committish: a874fda3641c9e02f61be5c41b215b8304b8ed00
+%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
   texidoces = "
 Se puede usar el delimitador de comienzo de un sistema
 @code{SystemStartSquare} estableciéndolo explícitamente dentro de
index 97d906a5ac04f97c0c36d57cb832bfac9eee59ac..749cf4909148c2028c4f68e20182f036494d276c 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "rhythms, tweaks-and-overrides"
 
-%% Translation of GIT committish: a874fda3641c9e02f61be5c41b215b8304b8ed00
+%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
   texidoces = "
 
 Se pueden imprimir estilos alternativos del corchete o gancho de las
index ab7cd997cf0c011fa4a93cd2bea325e44c39cc1c..cfede5c56905ae5bcfd01dd3c7419692a150a53a 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "expressive-marks, vocal-music"
 
-%% Translation of GIT committish: a874fda3641c9e02f61be5c41b215b8304b8ed00
+%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
   texidoces = "
 El corchete de arpegios @code{arpeggioBracket} se puede usar para
 indicar la división de voces cuando no hay plicas que puedan ofrecer
index c71db351ac03b88c959b6e3878d205d054aa68f1..82064e7455286c53c88cbb4eff17bb875ad17781 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "expressive-marks"
 
-%% Translation of GIT committish: a874fda3641c9e02f61be5c41b215b8304b8ed00
+%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
   texidoces = "
 Algunos compositores escriben dos ligaduras cuando quieren acordes
 legato.  Esto se puede conseguir estableciendo @code{doubleSlurs}.
index 0682d507f1ad08d2c961b7eb28d736f69a64441c..21d6c7528db84de5ce2c4090eecd7b629fa52626 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "rhythms"
 
-%% Translation of GIT committish: a874fda3641c9e02f61be5c41b215b8304b8ed00
+%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
   texidoces = "
 
 Es posible aplicar la barrita que cruza la barra de las
index 33feb66d2a987b04857e262f34b3372e00037d1a..76635192e30c1d3bb9b59d5e98709c25d90b050c 100644 (file)
@@ -5,7 +5,7 @@
 \version "2.13.36"
 
 \header {
-%% Translation of GIT committish: a874fda3641c9e02f61be5c41b215b8304b8ed00
+%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
 
   texidoces = "
 
index d73d78d8e918c077daaac057201009a18eab06a0..e0356180665bdcd0b90360ccb38a31c00ef7fb8b 100644 (file)
@@ -5,7 +5,7 @@
 \version "2.13.36"
 
 \header {
-%% Translation of GIT committish: a874fda3641c9e02f61be5c41b215b8304b8ed00
+%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
 
   texidoces = "
 
index 38a39487bc0aed0177da0580c7b3a8623db16e3a..14316dc33b3e1473ceeeec8bcefb3038175529be 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "rhythms"
 
-%% Translation of GIT committish: a874fda3641c9e02f61be5c41b215b8304b8ed00
+%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
  doctitlees = "Uso de ligaduras en los arpegios"
  texidoces = "
 En ocasiones se usan ligaduras de unión para escribir los arpegios.
index e6b2270da74cc9b0442f52eb42a7ea3782d22e49..a444dc4758885d38be887c224b3b710f3d2b747e 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "tweaks-and-overrides, spacing"
 
-%% Translation of GIT committish: a874fda3641c9e02f61be5c41b215b8304b8ed00
+%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
   texidoces = "
 Mediante el establecimiento de la propiedad @code{'Y-extent} a un valor
 adecuado, todos los objetos @code{DynamicLineSpanner} (reguladores e
index aec7359e12e9da6facac225354012de84ecfe137..77e200bb3ed6fb01a3aef720b387097ad37bdd85 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "expressive-marks"
 
-%% Translation of GIT committish: a874fda3641c9e02f61be5c41b215b8304b8ed00
+%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
   texidoces = "
 Las expresiones dinámicas que se comienzan, terminan o se producen
 en la misma nota se alinean verticalmente.  Para asegurar que las
index 24a272d5cfceccb01f81296678ca4013b9ebf52e..aabd96eefbab4d448245592c5c7d4c0fce857ca7 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "vocal-music, tweaks-and-overrides, spacing"
 
-%% Translation of GIT committish: a874fda3641c9e02f61be5c41b215b8304b8ed00
+%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
   texidoces = "
 Este fragmento de código muestra el uso de las propiedades de
 contexto @code{alignBelowContext} y @code{alignAboveContext} para
index 8cf105e949d30030d140c88802d76a67dc047816..8a07ec9d1f1d281567a13f11608e2f7d53355102 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "chords, tweaks-and-overrides"
 
-%% Translation of GIT committish: a874fda3641c9e02f61be5c41b215b8304b8ed00
+%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
   texidoces = "
 Allí donde se utilicen líneas extensoras para el bajo cifrado mediante
 el establecimiento de @code{useBassFigureExtenders} al valor
index d18f0a3abfd19cd9ed8b53fc09e8dabf74b1b8f2..fb44fb796c0af3de0ffbf435b4ac9b3594a3385d 100644 (file)
@@ -1,12 +1,11 @@
-%% Do not edit this file; it is automatically
-%% generated from LSR http://lsr.dsi.unimi.it
-%% This file is in the public domain.
-\version "2.12.2"
+% Do not edit this file; it is automatically
+% generated from Documentation/snippets/new
+% This file is in the public domain.
+%% Note: this file works from version 2.13.47
+\version "2.13.47"
 
 \header {
-  lsrtags = "vocal-music, keyboards, template"
-
-%% Translation of GIT committish: a874fda3641c9e02f61be5c41b215b8304b8ed00
+%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
   texidoces = "
 
 Esta plantilla añade una reducción de piano automática a la partitura
@@ -49,6 +48,8 @@ sera automatiquement reportée dans la réduction pour piano.
 "
   doctitlefr = "Ensemble vocal avec réduction pour piano"
 
+  lsrtags = "vocal-music, keyboards, template"
+
   texidoc = "
 This template adds an automatic piano reduction to the standard SATB
 vocal score demonstrated in @qq{Vocal ensemble template}. This
@@ -56,11 +57,18 @@ demonstrates one of the strengths of LilyPond – you can use a music
 definition more than once. If any changes are made to the vocal notes
 (say, @code{tenorMusic}), then the changes will also apply to the piano
 reduction.
-
 "
   doctitle = "Vocal ensemble template with automatic piano reduction"
 } % begin verbatim
 
+
+\paper {
+  top-system-spacing #'basic-distance = #10
+  score-system-spacing #'basic-distance = #20
+  system-system-spacing #'basic-distance = #20
+  last-bottom-spacing #'basic-distance = #10
+}
+
 global = {
   \key c \major
   \time 4/4
@@ -97,13 +105,20 @@ bassWords = \lyricmode {
 \score {
   <<
     \new ChoirStaff <<
-      \new Lyrics = "sopranos"
+      \new Lyrics = "sopranos" \with {
+        % This is needed for lyrics above a staff
+        \override VerticalAxisGroup #'staff-affinity = #DOWN
+      }
       \new Staff = "women" <<
         \new Voice = "sopranos" { \voiceOne << \global \sopMusic >> }
         \new Voice = "altos" { \voiceTwo << \global \altoMusic >> }
       >>
       \new Lyrics = "altos"
-      \new Lyrics = "tenors"
+      \new Lyrics = "tenors" \with {
+        % This is needed for lyrics above a staff
+        \override VerticalAxisGroup #'staff-affinity = #DOWN
+      }
+
       \new Staff = "men" <<
         \clef bass
         \new Voice = "tenors" { \voiceOne << \global \tenorMusic >> }
@@ -132,4 +147,3 @@ bassWords = \lyricmode {
     >>
   >>
 }
-
index c86f5790323ba6b52c962c31bdf8305333f6866f..8f697d60a12b8308910582880bc48ff58c698fa0 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "text, vocal-music, contexts-and-engravers, template"
 
-%% Translation of GIT committish: a874fda3641c9e02f61be5c41b215b8304b8ed00
+%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
   texidoces = "
 Esta plantilla es, básicamente, la misma que la sencilla plantilla
 @qq{Conjunto vocal}, excepto que aquí todas las líneas de letra se
index 7953f7acbbef8c6deac516e06005d2922a3f07be..9147c83bcc9359f463513f47172881e57bb88ac4 100644 (file)
@@ -5,7 +5,7 @@
 \version "2.13.36"
 
 \header {
-%% Translation of GIT committish: a874fda3641c9e02f61be5c41b215b8304b8ed00
+%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
 
   texidoces = "
 Esta plantilla crea una partitura que comienza con una estrofa para
index 157bd79629ea0a3d1a786832070ad7b0f1e6fe7e..7b0c88cde50c5b5006d37e3e9e809d41d91c4a81 100644 (file)
@@ -1,12 +1,11 @@
-%% Do not edit this file; it is automatically
-%% generated from LSR http://lsr.dsi.unimi.it
-%% This file is in the public domain.
-\version "2.12.2"
+% Do not edit this file; it is automatically
+% generated from Documentation/snippets/new
+% This file is in the public domain.
+%% Note: this file works from version 2.13.47
+\version "2.13.47"
 
 \header {
-  lsrtags = "vocal-music, template"
-
-%% Translation of GIT committish: a874fda3641c9e02f61be5c41b215b8304b8ed00
+%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
   texidoces = "
 He aquí una partitura vocal estándar para cuatro voces SATB. Con
 grupos mayores, suele ser útil incluir una sección que aparezca en
@@ -49,17 +48,26 @@ portées.
 "
   doctitlefr = "Ensemble vocal (simple)"
 
+  lsrtags = "vocal-music, template"
+
   texidoc = "
 Here is a standard four-part SATB vocal score. With larger ensembles,
 it is often useful to include a section which is included in all parts.
 For example, the time signature and key signature are almost always the
 same for all parts. Like in the @qq{Hymn} template, the four voices are
 regrouped on only two staves.
-
 "
   doctitle = "Vocal ensemble template"
 } % begin verbatim
 
+
+\paper {
+  top-system-spacing #'basic-distance = #10
+  score-system-spacing #'basic-distance = #20
+  system-system-spacing #'basic-distance = #20
+  last-bottom-spacing #'basic-distance = #10
+}
+
 global = {
   \key c \major
   \time 4/4
@@ -95,7 +103,10 @@ bassWords = \lyricmode {
 
 \score {
   \new ChoirStaff <<
-    \new Lyrics = "sopranos"
+    \new Lyrics = "sopranos" \with {
+      % this is needed for lyrics above a staff
+      \override VerticalAxisGroup #'staff-affinity = #DOWN
+    }
     \new Staff = "women" <<
       \new Voice = "sopranos" {
         \voiceOne
@@ -107,7 +118,10 @@ bassWords = \lyricmode {
       }
     >>
     \new Lyrics = "altos"
-    \new Lyrics = "tenors"
+    \new Lyrics = "tenors" \with {
+      % this is needed for lyrics above a staff
+      \override VerticalAxisGroup #'staff-affinity = #DOWN
+    }
     \new Staff = "men" <<
       \clef bass
       \new Voice = "tenors" {
diff --git a/Documentation/snippets/vocal-headword.ly b/Documentation/snippets/vocal-headword.ly
new file mode 100644 (file)
index 0000000..a5b422f
--- /dev/null
@@ -0,0 +1,78 @@
+% Do not edit this file; it is automatically
+% generated from Documentation/snippets/new
+% This file is in the public domain.
+%% Note: this file works from version 2.13.47
+\version "2.13.47"
+
+#(set-global-staff-size 15)
+\paper {
+  ragged-right = ##t
+  line-width = 17\cm
+  indent = 0\cm
+}
+
+\header {
+  lsrtags = "headwords"
+  texidoc = ""
+  doctitle = "headword"
+} % begin verbatim
+
+
+\layout {
+  \context {
+    \Score
+    \override PaperColumn #'keep-inside-line = ##t
+    \override NonMusicalPaperColumn #'keep-inside-line = ##t
+  }
+}
+
+% L. van Beethoven. Symphony No. 9 in D minor, op.125; Finale
+% mm. 216 -- 236
+% Text: F. von Schiller
+
+\score {
+  \new Staff \relative c' {
+    \set Score.currentBarNumber = 216
+    \bar ""  % make first bar number be shown
+    \clef bass \key d \minor \time 3/4
+    % \tempo "Presto"
+    % \compressFullBarRests  R2.*8
+    \tempo "Recitativo"
+    \autoBeamOff
+    r4^\markup { \small Baritono } r a
+    \appoggiatura a8 e'2. ~
+    e4 d8[ cis d e]
+    e4 g, r8 g
+    bes2 a8 e
+    g4 f r
+    R2.*2
+    gis2 gis4
+    r4 d'4. b8
+    b4 gis8([ a b cis]
+    e8[ d cis d)] b([ gis)]
+    e8 d d4 fis8([ e)]
+    d4 cis r
+    \key d \major
+    r4 r a'
+    d4.( e8[ fis e)]
+    e([ d)] d([ cis d a)]
+    g8([ fis)] fis([ e d c)]
+    c8([ b)] g'2~
+    \once \override Script #'outside-staff-priority = #1 % put fermata closer to staff
+    g4.\fermata ^\markup { \small \italic "ad libitum" } e8[ cis!] d
+    d8 a a4 r \bar "||"
+
+    % \time 4/4 \tempo "Allegro assai"
+    % R1
+    % e''4^\f d r2
+    % R1
+    % e4( ^\f d2) a8([ g)]
+  }
+  \addlyrics {
+    O Freun -- _ _ de, nicht die -- _ se Tö -- ne!
+    Son -- dern laßt uns an -- _ ge -- neh -- me -- re an -- stim -- men,
+    und freu -- _ _ _ _ _ _ _ den -- vol -- le -- re!
+    % Freu -- de, Freu -- de,__
+  }
+}
+
index 1c8f51e2a2b0871a79cf3d87efdc25c8dbedc523..e38fb6c94dc074f1aac37f2ca23e481803ea8fdf 100644 (file)
@@ -13,6 +13,7 @@ formatting-lyrics-syllables.ly
 how-to-put-ties-between-syllables-in-lyrics.ly
 hymn-template.ly
 lyrics-alignment.ly
+lyrics-old-spacing-settings.ly
 marking-notes-of-spoken-parts-with-a-cross-on-the-stem.ly
 orchestra,-choir-and-piano-template.ly
 piano-template-with-melody-and-lyrics.ly
index 56a4570e03e469c198bcb6eaf8bd9ab6f0825e77..29848c1ee7f0ab92bcd46c132dabb5956d2065df 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "repeats, staff-notation, chords"
 
-%% Translation of GIT committish: a874fda3641c9e02f61be5c41b215b8304b8ed00
+%% Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
   texidoces = "
 Mediante la adición del grabador @code{Volta_engraver} al
 pentagrama pertinente, se pueden poner los corchetes de primera y
index 34996e5ae59b59e36eb7a2dcd070995c3ff3f979..09488b968386939d77ad9e0e1eda5a25178757b5 100644 (file)
@@ -5,7 +5,7 @@
 \version "2.13.36"
 
 \header {
-%%%    Translation of GIT committish: a874fda3641c9e02f61be5c41b215b8304b8ed00
+%%%    Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
 
   texidoces = "
 
index 12cf1888cea18c2ed05be873e2f92560bcca6b97..5c7232128b36ffd6f3fcd3ac01fd1ef2d5894988 100644 (file)
@@ -5,7 +5,7 @@
 \version "2.13.36"
 
 \header {
-%%%    Translation of GIT committish: a874fda3641c9e02f61be5c41b215b8304b8ed00
+%%%    Translation of GIT committish: fa19277d20f8ab0397c560eb0e7b814bd804ecec
   texidoces = "
 El fragmento de música que aparece a continuación presenta todos los
 diagramas de viento madera que se encuentran definidos en LilyPond por
index 86dc280abb48f2e14ef4a6c144785a25a0a9a9f2..27d86033fc878e8c2b775ec7f3ea695db391e55d 100644 (file)
@@ -8,6 +8,17 @@
 
 @c used for news about the upcoming release; see CG 10.2
 
+@newsItem
+@subsubheading LilyPond 2.13.47 released!  @emph{Jan 28, 2011}
+
+We are happy to announce the release of LilyPond 2.13.47.  This
+release contains the usual number of bugfixes.  However, a number
+of critical issues still remain, so this release is intended for
+developers only.
+
+@newsEnd
+
+
 @newsItem
 @subsubheading Release candidate 1 withdrawn  @emph{Jan 13, 2011}
 
diff --git a/VERSION b/VERSION
index 9a7eb5a8d899997c0bda77f62982d5173266f2e3..285d1131e8283c4f86486260469f831af649fe5e 100644 (file)
--- a/VERSION
+++ b/VERSION
@@ -1,7 +1,7 @@
 PACKAGE_NAME=LilyPond
 MAJOR_VERSION=2
 MINOR_VERSION=13
-PATCH_LEVEL=47
+PATCH_LEVEL=48
 MY_PATCH_LEVEL=
 VERSION_STABLE=2.12.3
-VERSION_DEVEL=2.13.46
+VERSION_DEVEL=2.13.47
index a38bf154d72e2a6b0f911a377e395d09bcf81f69..1d6b02388eb059f1d53dad8779fe929ba22b7602 100644 (file)
 #include <typeinfo>
 using namespace std;
 
-#define classname(class_ptr) demangle_classname (typeid (* (class_ptr)))
-
-char const *
-demangle_classname (type_info const &);
 
 /*
 
diff --git a/flower/rtti.cc b/flower/rtti.cc
deleted file mode 100644 (file)
index 39941f8..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-#include <cctype>
-using namespace std;
-
-#include "virtual-methods.hh"
-
-char const *
-demangle_classname (type_info const &t)
-{
-  char const *s = t.name ();
-  while (isdigit (*s))
-    s++;
-  return s;
-}
old mode 100644 (file)
new mode 100755 (executable)
index 0353678..bfb802a
@@ -1,12 +1,12 @@
 @unnumbered Introduction
 
 This document presents proofs for
-LilyPond @lilypondversion).  When the
+LilyPond @lilypondversion.  When the
 text corresponds with the shown notation, we consider LilyPond Officially
 BugFree (tm).  This document is intended for finding bugs and for
 documenting bugfixes.
 
-In the web version of this document, you can click on the file name 
+In the web version of this document, you can click on the file name
 or figure for each example to see the corresponding input file.
 
 TODO: order of tests (file names!), test only one feature per test.
index 03c6a776fbeb89de671ed5518cb94a505632783b..ea715f0e994e7baa093af712033fc926d2c2c9ad 100644 (file)
@@ -1,10 +1,12 @@
-\version "2.12.0"
+\version "2.13.47"
 
 \header {
   texidoc = "Ambitus indicate pitch ranges for voices.
 
 Accidentals only show up if they're not part of key
 signature.  @code{AmbitusNoteHead} grobs also have ledger lines.
+The noteheads are printed in overstrike, so there's only one
+visible; the accidentals are prevented from colliding. 
 "
 }
 
@@ -25,4 +27,8 @@ signature.  @code{AmbitusNoteHead} grobs also have ledger lines.
     \key d \major
     cis as'
   }
+  \new Staff \relative c' {
+    \time 2/4
+    c4 cis
+  }
 >>
index f0f2cd4da58e441c49c49fd8f99334927015d670..4d63357f2ea29bc26a7ca958aecf15d51dddf37c 100644 (file)
@@ -1,9 +1,9 @@
-\version "2.12.0"
+\version "2.13.46"
 
 forcedLastBreak =  { \break }
 
 %% We want this to perfectly match the Bärenreiter spacing.
-%% If we're not using 6 systems, there's definately a problem.
+%% If we're not using 6 systems, there's definitely a problem.
 #(define (assert-system-count smob n)
   (let ((systems (length (ly:spanner-broken-into
                          (ly:grob-original
@@ -13,14 +13,14 @@ forcedLastBreak =  { \break }
        ;;(warn
        (string-append "Got " (number->string systems)
                             " systems (expecting " (number->string n))))))
-            
+
 
 #(define (assert-system-count-override count)
   (ly:export #{ \override NoteHead #'after-line-breaking
        = #(lambda (smob) (assert-system-count smob $count))
   #}))
 
-  
+
 \header {
   title = "Solo Cello Suite II"
   piece ="Sarabande"
@@ -53,17 +53,17 @@ half way in measure 13 has been forgotten.
 sarabandeA =  \context Voice  \relative c {
   \override Staff.NoteCollision  #'merge-differently-dotted = ##t
 
-  
+
   << { d8. e16 e4.\trill d16 e } \\
     { d4 a2 } >>
-  <d, a' f'>4.  e'8[ d c] | 
+  <d, a' f'>4.  e'8[ d c] |
   bes[ g'] f[
      e16(f] g[ a bes d,)] |
   cis4.\trill b8[ a g] |
 
-  %% check spacing without accs: 
+  %% check spacing without accs:
   %%   c4.\trill bes8[ a g] |
-  
+
   << { d'8. e16 e4.\trill d16 e |
       f4. d8[ e f] }
     \\
@@ -85,7 +85,7 @@ sarabandeA =  \context Voice  \relative c {
   %% 11
   e'8[ f] c,[ g'] f'[ e] |
   f4 f,2 |
-  << {  a'4 a4.\trill bes8 
+  << {  a'4 a4.\trill bes8
        c bes16 a } \\
     { f8[ es] es4. r8 d4 } >>
 
@@ -93,14 +93,14 @@ sarabandeA =  \context Voice  \relative c {
   bes[ g']
   a,[ fis']
   es'[ d] |
-  
+
   %%16
   < bes d, g, >4.\trill a8[ g f!] |
   e bes a f' g a |
   d, as g es' f g |
   cis,[ bes'] a[ g16 f] e!8[ f16 d] |
   cis8 e16 a a,8. g'16 f8(e) |
-  
+
   %%21
   << { d e16(f) f4. e16(d) |
       e8 f16(g) g4. a16(bes) |
@@ -162,7 +162,7 @@ smallerPaper = \layout {
     \Score
     \override SpacingSpanner #'spacing-increment = #0.96
   }
-  
+
   indent = 5.6 \mm
   line-width = 146.8 \mm
 }
@@ -171,8 +171,11 @@ smallerPaper = \layout {
   ragged-bottom = ##t
   indent = 7. \mm
   line-width =183.5 \mm
-  between-system-space = 25\mm 
-  between-system-padding = 0\mm
+  obsolete-between-system-space = 25\mm
+  system-system-spacing #'basic-distance = #(/ obsolete-between-system-space staff-space)
+  system-system-spacing #'padding = #0
+  score-system-spacing #'basic-distance = #(/ obsolete-between-system-space staff-space)
+  score-system-spacing #'padding = #0
   system-count = 6
 
 %%  annotatespacing = ##t
@@ -182,7 +185,7 @@ smallerPaper = \layout {
   \score{
     \sarabandeCelloStaff
     \layout { }
-    
+
   \midi {
     \context {
       \Score
@@ -192,7 +195,7 @@ smallerPaper = \layout {
 
 
     \header{
-      opus= "" 
+      opus= ""
       piece ="Sarabande" }
   }
 }
diff --git a/input/regression/chord-names-in-grand-staff.ly b/input/regression/chord-names-in-grand-staff.ly
new file mode 100644 (file)
index 0000000..d90a849
--- /dev/null
@@ -0,0 +1,29 @@
+\version "2.13.47"
+
+\header {
+
+  texidoc = "
+GrandStaff contexts accept chord names.  The chord name in this
+example should be printed above the top staff.
+"
+}
+
+\score {
+   \new GrandStaff
+   <<
+    \chords {
+      f1
+    }
+    \new Staff {
+      \relative c'' {
+        a4 a a a
+      }
+    }
+    \new Staff {
+      \clef "bass"
+      \relative c {
+        a4 a a a
+      }
+    }
+   >>
+}
diff --git a/input/regression/compound-time-signatures.ly b/input/regression/compound-time-signatures.ly
new file mode 100644 (file)
index 0000000..e5e5dcd
--- /dev/null
@@ -0,0 +1,44 @@
+\version "2.13.47"
+
+\header {
+    texidoc = "Create compound time signatures. The argument is a Scheme list
+of lists. Each list describes one fraction, with the last entry being the
+denominator, while the first entries describe the summands in the
+enumerator. If the time signature consists of just one fraction,
+the list can be given directly, i.e. not as a list containing a single list.
+For example, a time signature of (3+1)/8 + 2/4 would be created as
+@code{\\compoundMeter #'((3 1 8) (2 4))}, and a time signature of (3+2)/8
+as @code{\\compoundMeter #'((3 2 8))} or shorter
+@code{\\compoundMeter #'(3 2 8)}.
+"
+}
+
+
+
+\relative c' {
+  \compoundMeter #'(1 2 3 4 8)
+  \repeat unfold 10 c8 \repeat unfold 20 c16 \break
+
+  \time 3/4
+  \repeat unfold 6 c8 \repeat unfold 12 c16 \break
+
+  \compoundMeter #'((1 2 3 4 8) (2 4))
+  \repeat unfold 14 c8 \repeat unfold 28 c16 \break
+
+  \compoundMeter #'((1 2 3 4 8) (2 4) (2 3 8))
+  \repeat unfold 19 c8 \repeat unfold 38 c16 \break
+
+  \compoundMeter #'(1 2 3 4 8)
+  \repeat unfold 10 c8 \repeat unfold 20 c16 \break
+
+  \compoundMeter #'((1 8) (3 8))
+  \repeat unfold 4 c8 \repeat unfold 8 c16 \break
+
+  \compoundMeter #'((3 8) (1 8))
+  \repeat unfold 4 c8 \repeat unfold 8 c16 \break
+
+  \time 4/4
+  \repeat unfold 8 c8 \repeat unfold 16 c16 \break
+
+  \bar"|."
+}
diff --git a/input/regression/instrument-name-groups.ly b/input/regression/instrument-name-groups.ly
new file mode 100644 (file)
index 0000000..e5f8cfc
--- /dev/null
@@ -0,0 +1,39 @@
+\version "2.13.47"
+\header {
+  texidoc="
+Instrument names can also be attached to staff groups.
+"
+}
+
+\paper {
+  left-margin = 3\cm
+}
+\layout {
+  ragged-right = ##t
+}
+
+
+\new StaffGroup \with { instrumentName = #"StaffGroup" } <<
+  \new PianoStaff \with { instrumentName = #"PianoStaff" } <<
+    \new Staff \with { instrumentName = #"Right" } { c''4 }
+    \new Staff \with { instrumentName = #"Left" } { \clef bass c4 }
+  >>
+
+  \new ChoirStaff \with { instrumentName = #"ChoirStaff" } <<
+    \new Staff { c''4 }
+    \new Staff { c''4 }
+    \new Staff { c''4 }
+  >>
+  \new GrandStaff \with { instrumentName = #"GrandStaff" } <<
+    \new Staff \with { instrumentName = #"I" } { c''4 }
+    \new Staff \with { instrumentName = #"II" } { \clef bass c4 }
+  >>
+  % Nested groups should not inherit the instrument name from the parent group
+  \new StaffGroup \with { instrumentName = #"nested group" } <<
+    \new Staff { c''4 }
+    \new StaffGroup <<
+      \new Staff { c''4 }
+      \new Staff { c''4 }
+    >>
+  >>
+>>
diff --git a/input/regression/lyrics-aligned-above-stay-close-to-staff.ly b/input/regression/lyrics-aligned-above-stay-close-to-staff.ly
new file mode 100644 (file)
index 0000000..e71d5a3
--- /dev/null
@@ -0,0 +1,45 @@
+\version "2.13.47"
+
+\header {
+  title = "Aligned-above lyrics should stay close to their staff"
+  texidoc = "Lyrics aligned above a context should stay close to that
+context when stretching.  The Bass I lyric line stays with the
+Bass staff.
+"
+}
+
+\paper { ragged-last-bottom = ##f }
+
+tune = \relative c { \repeat unfold 2 { c4( e) g2 | \break c1 }
+\bar "|."  }
+
+\score {
+
+  \context ChoirStaff <<
+
+    \new Staff = tenors <<
+      \clef "treble_8"
+      \new Voice = tenori { \voiceOne \tune }
+      \new Voice = tenorii { \voiceTwo \tune }
+    >>
+    \new Staff = basses <<
+      \clef "bass"
+      \new Voice = bassi { \voiceOne \tune }
+      \new Voice = bassii { \voiceTwo \tune }
+    >>
+
+    \new Lyrics \with {alignAboveContext=tenors} \lyricsto tenori {
+      Te -- nor one!  A -- _ bove!
+    }
+    \new Lyrics \with {alignBelowContext=tenors} \lyricsto tenorii {
+      Te -- nor two!  Be -- _ low!
+    }
+    \new Lyrics \with {alignAboveContext=basses}  \lyricsto bassi {
+      Bas -- ses one!  A -- _ bove!
+    }
+    \new Lyrics \with {alignBelowContext=basses} \lyricsto bassii {
+      Bas -- ses two!  Be -- _ low!
+    }
+  >>
+  \layout {}
+ }
diff --git a/input/regression/markup-lines-identifier.ly b/input/regression/markup-lines-identifier.ly
new file mode 100644 (file)
index 0000000..65a40f3
--- /dev/null
@@ -0,0 +1,19 @@
+\version "2.13.47"
+
+\header {
+  texidoc = "Text that can spread over pages is entered with the
+@code{\\markuplines} command. It can be assigned to a variable and inserted
+at top-level with or without preceding it by @code{\\markuplines}."
+}
+
+#(set-default-paper-size "a6")
+
+mytext = \markuplines {
+  \justified-lines {
+    Lorem ipsum dolor sit amet, consectetur adipisici elit, sed
+    eiusmod tempor incidunt ut labore et dolore magna aliqua. ...
+  }
+}
+
+\markuplines \mytext
+\mytext
index bcdc1834e21195f669d26c0bb663ba3263f82fe3..6f899348cfd625e947a50cba4a78dd1e810fc434 100644 (file)
@@ -14,7 +14,7 @@
   style = "classical"
   maintainer = "hanwen@xs4all.nl"
   maintainerEmail = "hanwen@xs4all.nl"
-  maintainerWeb = "http://www.xs4all.nl/~hanwen/"      
+  maintainerWeb = "http://www.xs4all.nl/~hanwen/"
   lastupdated = "2002/May/21"
   source = "Edition Breitkopf 2563"
   footer = "Mutopia-2002/05/21-25"
   texidoc="
 This is the Mozart 3 for horn.  It's from an Edition Breitkopf EB
 2563, edited by Henri Kling. Henri Kling (1842-1918) was a horn
-virtuoso that taught in Geneva. 
+virtuoso that taught in Geneva.
 "
 }
 
-\version "2.12.0"
+\version "2.13.46"
 
 \include "mozart-hrn3-defs.ily"
 \include "mozart-hrn3-allegro.ily"
@@ -48,7 +48,9 @@ virtuoso that taught in Geneva.
 \include "mozart-hrn3-rondo.ily"
 
 \paper {
-    between-system-space = 20 \mm
+    obsolete-between-system-space = 20 \mm
+    system-system-spacing #'basic-distance = #(/ obsolete-between-system-space staff-space)
+    score-system-spacing #'basic-distance = #(/ obsolete-between-system-space staff-space)
 }
 
 
@@ -56,8 +58,8 @@ virtuoso that taught in Geneva.
     \score {
        { \transpose c' bes \allegro }
        \layout { }
-       \header { piece = "Allegro" opus = "" } 
-       
+       \header { piece = "Allegro" opus = "" }
+
   \midi {
     \context {
       \Score
@@ -70,8 +72,8 @@ virtuoso that taught in Geneva.
 
     \score {
        { \transpose c' bes \romanze }
-       \header { piece = "Romanze" opus = "" } 
-       
+       \header { piece = "Romanze" opus = "" }
+
   \midi {
     \context {
       \Score
@@ -87,7 +89,7 @@ virtuoso that taught in Geneva.
     {
        { \transpose c' bes \rondo }
        \header { piece = "Rondo" opus = "" }
-       
+
   \midi {
     \context {
       \Score
index 2edfdafdb412c93f215af15f45702365bdd00ecd..2925023b636c0804ecf04d58eec25787995d1b8e 100644 (file)
@@ -13,7 +13,7 @@ By setting @code{annotate-spacing}, we can see the effect of each property.
 
 }
 
-\version "2.12.0"
+\version "2.13.46"
 
 #(set-global-staff-size 11)
 
@@ -40,9 +40,9 @@ By setting @code{annotate-spacing}, we can see the effect of each property.
            "Stretchable space runs between refpoints"
          }
        }
-       
+
        \break
-       
+
        \overrideProperty
        #"Score.NonMusicalPaperColumn"
        #'line-break-system-details
@@ -57,7 +57,7 @@ By setting @code{annotate-spacing}, we can see the effect of each property.
        c\break
        \overrideProperty
        #"Score.NonMusicalPaperColumn" #'line-break-system-details
-       #'((bottom-space . 25.0)) 
+       #'((bottom-space . 25.0))
        c_"25 staff space to the bottom of the page. (property bottom-space)"\break
 
 
@@ -68,12 +68,14 @@ By setting @code{annotate-spacing}, we can see the effect of each property.
   \paper {
     ragged-last-bottom = ##f
     annotate-spacing = ##t
-    between-system-space = 1.0
+    obsolete-between-system-space = 1.0
+    system-system-spacing #'basic-distance = #(/ obsolete-between-system-space staff-space)
+    score-system-spacing #'basic-distance = #(/ obsolete-between-system-space staff-space)
     #(set! text-font-defaults
       (acons
        'font-size 6
        text-font-defaults)
-      
+
     )
   }
 }
index fa1f9e0172fcee8a0db6d3f18368464462e1c0b8..c9895d35d4a8986216f39cdb8b1d1d0c2a47ba8a 100644 (file)
@@ -4,7 +4,7 @@
 first system can be forced to be uniform."
 
 }
-\version "2.12.0"
+\version "2.13.46"
 
 #(set-default-paper-size "a6")
 
@@ -22,7 +22,8 @@ first system can be forced to be uniform."
   }
 
   \paper {
-    page-top-space = 3 \cm
+    obsolete-page-top-space = 3 \cm
+    top-system-spacing #'basic-distance = #(/ obsolete-page-top-space staff-space)
   }
 }
 
diff --git a/input/regression/staff-tabstaff-spacing.ly b/input/regression/staff-tabstaff-spacing.ly
new file mode 100644 (file)
index 0000000..41e899f
--- /dev/null
@@ -0,0 +1,31 @@
+\version "2.13.47"
+
+\header {
+
+  texidoc = "
+The space between scores containing Staffs and TabStaffs should
+be consistent.  In this example, all of the spacings should be
+equivalent.
+"
+}
+
+\score {
+ { c'4 d' e' f' g'1 }
+ \header {
+  piece = "Title 1"
+ }
+}
+\score {
+ \new TabStaff {
+  c'4 d' e' f' g'1
+ }
+ \header {
+  piece = "Title 2"
+ }
+}
+\score {
+ { c'4 d' e' f' g'1 }
+ \header {
+  piece = "Title 3"
+ }
+}
index d4bc39e7283c2cd9ebcb34944635f1c0cf0a6a76..221c1e8881ee950c70da5af60b29f202236d30ef 100644 (file)
@@ -178,7 +178,11 @@ Ambitus_engraver::finalize ()
            ? robust_scm2rational (scm_cdr (handle), Rational (0))
            : Rational (0);
 
-         if (sig_alter == p.get_alteration ())
+         const Pitch other = pitch_interval_[-d];
+
+         if (sig_alter == p.get_alteration ()
+             && !((p.steps () == other.steps ())
+                  && (p.get_alteration () != other.get_alteration ())))
            {
              accidentals_[d]->suicide ();
              heads_[d]->set_object ("accidental-grob", SCM_EOL);
index 56569bde4ebbf53ccd695a361a1ffb5d9a2143c5..0ed413bf6796a858656a9ff318e14c4c9e99584a 100644 (file)
@@ -124,12 +124,12 @@ Audio_span_dynamic::render ()
 
   if (dynamics_.size () <= 1)
     {
-      programming_error ("(de)crescendo on items with specified volume.");
+      programming_error ("Impossible or ambiguous (de)crescendo in MIDI.");
       return ;
     }
-  
+
   Real delta_v = grow_dir_ * 0.1;
-  
+
   Real start_v = dynamics_[0]->volume_;
   if (dynamics_.back ()->volume_ < 0)
     dynamics_.back ()->volume_ = max (min (start_v + grow_dir_ * 0.25, 1.0), 0.1);
@@ -139,17 +139,17 @@ Audio_span_dynamic::render ()
   Moment start = dynamics_[0]->get_column ()->when ();
 
   Real total_t = moment_to_real (dynamics_.back ()->get_column ()->when () - start);
-  
+
   for (vsize i = 1; i < dynamics_.size (); i ++)
     {
       Moment dt_moment = dynamics_[i]->get_column ()->when ()
        - start;
 
       Real dt =  moment_to_real (dt_moment);
-      
+
       Real v = start_v + delta_v *  (dt / total_t);
 
-      dynamics_[i]->volume_ = v;       
+      dynamics_[i]->volume_ = v;
     }
 }
 
index 14ef697908d70dbc06d6e4e35c4b3b490c90c9ec..59893503f5b2a24e01b1553754be8097306e04b1 100644 (file)
@@ -23,6 +23,7 @@
 #include <cstdio>
 #include <ctype.h>
 #include <cstring>  /* memset */
+#include <glib.h>
 using namespace std;
 
 #include "dimensions.hh"
@@ -663,3 +664,64 @@ LY_DEFINE (ly_format, "ly:format",
 
   return scm_take_locale_stringn (result, len);
 }
+
+int
+ly_run_command (char *argv[], char **standard_output, char **standard_error)
+{
+  GError *error = 0;
+  int exit_status = 0;
+  int flags = G_SPAWN_SEARCH_PATH;
+  if (!standard_output)
+    flags |= G_SPAWN_STDOUT_TO_DEV_NULL;
+  if (!standard_error)
+    flags |= G_SPAWN_STDERR_TO_DEV_NULL;
+  if (!g_spawn_sync (0, argv, 0, GSpawnFlags (flags),
+                    0, 0, 
+                    standard_output, standard_error,
+                    &exit_status, &error))
+    {
+      fprintf (stderr, "failed (%d): %s: %s\n", exit_status, argv[0], error->message);
+      g_error_free (error);
+      if (!exit_status)
+       exit_status = -1;
+    }
+
+  return exit_status;
+}
+
+LY_DEFINE (ly_spawn, "ly:spawn",
+          1, 0, 1, (SCM command, SCM rest),
+          "Simple interface to g_spawn_sync"
+          " @var{str}."
+          "  The error is formatted with @code{format} and @var{rest}.")
+
+{
+  LY_ASSERT_TYPE (scm_is_string, command, 1);
+
+  int argc = scm_is_pair (rest) ? scm_ilength (rest) : 0;
+  char **argv = new char*[argc + 2];
+
+  int n = 0;
+  argv[n++] = ly_scm2str0 (command);
+  for (SCM s = rest; scm_is_pair (s); s = scm_cdr (s))
+    argv[n++] = ly_scm2str0 (scm_car (s));
+  argv[n] = 0;
+
+  char *standard_output = 0;
+  char *standard_error = 0;
+  int exit_status = be_verbose_global
+    ? ly_run_command (argv, &standard_output, &standard_error)
+    : ly_run_command (argv, 0, 0);
+
+  if (be_verbose_global)
+    {
+      fprintf (stderr, "\n%s", standard_output);
+      fprintf (stderr, "%s", standard_error);
+    }
+  
+  for (int i = 0; i < n; i++)
+    free (argv[i]);
+  delete[] argv;
+
+  return scm_from_int (exit_status);
+}
index 6dcc050eb665ae05bef8b50d453818f62bc3a232..3fefd5dc3c35bf0d34d3886757f2a13282bb10c6 100644 (file)
@@ -66,7 +66,7 @@ Interval ly_scm2interval (SCM);
 Drul_array<Real> ly_scm2realdrul (SCM);
 Slice int_list_to_slice (SCM l);
 SCM ly_interval2scm (Drul_array<Real>);
-char *ly_scm2newstr (SCM str, size_t *lenp);
+char *ly_scm2str0 (SCM str);
 
 Real robust_scm2double (SCM, double);
 int robust_scm2int (SCM, int);
index c3b5031f403c09b86b2777433e2f99307f2c2232..cb676e591602c6c13d175b138945f8b2a615586d 100644 (file)
 #define MLP_BREVIS 0x04 // mensural brevis head
 #define MLP_LONGA 0x08 // mensural brevis head with right cauda
 #define MLP_MAXIMA 0x10 // mensural maxima head without stem
-#define MLP_FLEXA 0x20 // mensural flexa-like shape
+#define MLP_FLEXA_BEGIN 0x20 // start of obliqua
+#define MLP_FLEXA_END 0x40 // end of obliqua
 
 #define MLP_STEM (MLP_UP | MLP_DOWN)
 #define MLP_SINGLE_HEAD (MLP_BREVIS | MLP_LONGA | MLP_MAXIMA)
+#define MLP_FLEXA (MLP_FLEXA_BEGIN | MLP_FLEXA_END)
 #define MLP_ANY (MLP_FLEXA | MLP_SINGLE_HEAD)
 
 struct Mensural_ligature
index 216bdf8894359cacebecb2ff73cb1daa655d12aa..6d32bc6c2bc2752f2ac6d9552f98956b4382e5da 100644 (file)
@@ -42,7 +42,6 @@ struct Page_spacing_result {
 
   Real average_force () const;
   vsize page_count () const;
-  vsize system_count () const;
   void print () const;  
   Page_spacing_result ();
 };
index a360e03f732719508a35cd15ad7bb164c2b3c738..b467ec998a3a16383da42f0f648af9b8fbe36a86 100644 (file)
 
 #include "international.hh"
 
-#include "ligature-engraver.hh"
+#include "engraver.hh"
 #include "note-column.hh"
 #include "tuplet-bracket.hh"
 #include "spanner.hh"
 #include "stream-event.hh"
-#include "spanner.hh"
 #include "item.hh"
 
 #include "translator.icc"
index f0ff8cabbc99614fd7adafabdf1a64e2337520ba..1763a5cebbe23593f744ec98def2bc3ea60bcc61 100644 (file)
@@ -138,12 +138,10 @@ ly_string2scm (string const &str)
                                  str.length ());
 }
 
-
 char *
-ly_scm2newstr (SCM str, size_t *lenp)
+ly_scm2str0 (SCM str)
 {
-  char* p = scm_to_locale_stringn(str, lenp);
-  return p;
+  return scm_to_locale_string (str);
 }
 
 /*
index 480f1afbfd6c7c11db1dbd97abb9b31b9b980b15..d6e8eed3ca3ffc700ba27a4d80905732496dff8a 100644 (file)
@@ -126,7 +126,7 @@ Mensural_ligature_engraver::transform_heads (vector<Grob_info> primitives)
        }
 
       int pitch = unsmob_pitch (nr->get_property ("pitch"))->steps ();
-      int delta_pitch = 0;
+      int prim = 0;
 
       if (at_beginning)
        {
@@ -142,14 +142,12 @@ Mensural_ligature_engraver::transform_heads (vector<Grob_info> primitives)
        }
       else
        {
-         delta_pitch = pitch - prev_pitch;
-         if (delta_pitch == 0)
+         if (pitch == prev_pitch)
            {
              nr->origin ()->warning
                (_ ("prime interval within ligature -> skipping"));
              at_beginning = true;
-             primitive->set_property ("primitive",
-                                      scm_from_int (MLP_NONE));
+              prim = MLP_NONE;
              continue;
            }
        }
@@ -159,14 +157,14 @@ Mensural_ligature_engraver::transform_heads (vector<Grob_info> primitives)
        {
          nr->origin ()->warning
            (_ ("mensural ligature: duration none of Mx, L, B, S -> skipping"));
-         primitive->set_property ("primitive",
-                                  scm_from_int (MLP_NONE));
+          prim = MLP_NONE;
          at_beginning = true;
          continue;
        }
 
-      // apply_transition replacement begins
       bool general_case = true;
+      bool make_flexa = false;
+      bool allow_flexa = true;
 
       // first check special cases
       // 1. beginning
@@ -175,9 +173,7 @@ Mensural_ligature_engraver::transform_heads (vector<Grob_info> primitives)
          // a. semibreves
          if (duration_log == 0)
            {
-             primitive->set_property ("primitive",
-                                      scm_from_int (MLP_UP | MLP_BREVIS));
-             prev_semibrevis = prev_brevis_shape = true;
+              prim = MLP_UP | MLP_BREVIS;
              general_case = false;
            }
          // b. descendens longa or brevis
@@ -187,11 +183,8 @@ Mensural_ligature_engraver::transform_heads (vector<Grob_info> primitives)
                   && duration_log > -3)
            {
              int left_stem = duration_log == -1 ? MLP_DOWN : 0;
-
-             primitive->set_property ("primitive",
-                                      scm_from_int (left_stem | MLP_BREVIS));
-             prev_brevis_shape = true;
-             prev_semibrevis = general_case = false;
+              prim = left_stem | MLP_BREVIS;
+             general_case = false;
            }
        }
       // 2. initial semibrevis must be followed by another one
@@ -200,15 +193,14 @@ Mensural_ligature_engraver::transform_heads (vector<Grob_info> primitives)
          prev_semibrevis = false;
          if (duration_log == 0)
            {
-             primitive->set_property ("primitive", scm_from_int (MLP_BREVIS));
+             prim = MLP_BREVIS;
              general_case = false;
            }
          else
            {
              nr->origin ()->warning
                (_ ("semibrevis must be followed by another one -> skipping"));
-             primitive->set_property ("primitive",
-                                      scm_from_int (MLP_NONE));
+              prim = MLP_NONE;
              at_beginning = true;
              continue;
            }
@@ -219,27 +211,20 @@ Mensural_ligature_engraver::transform_heads (vector<Grob_info> primitives)
          nr->origin ()->warning
            (_ ("semibreves can only appear at the beginning of a ligature,\n"
                "and there may be only zero or two of them"));
-         primitive->set_property ("primitive",
-                                  scm_from_int (MLP_NONE));
+          prim = MLP_NONE;
          at_beginning = true;
          continue;
        }
       // 4. end, descendens
-      else if (i == s - 1 && delta_pitch < 0)
+      else if (i == s - 1 && pitch < prev_pitch)
        {
          // brevis; previous note must be turned into flexa
          if (duration_log == -1)
            {
              if (prev_brevis_shape)
                {
-                 prev_primitive->set_property
-                   ("primitive",
-                    scm_from_int
-                    (MLP_FLEXA
-                     | (scm_to_int (prev_primitive->get_property ("primitive"))
-                        & MLP_DOWN)));
-                 primitive->set_property ("primitive", scm_from_int (MLP_NONE));
-                 break; // no more notes, no join
+                  make_flexa = true;
+                  general_case = false;
                }
              else
                {
@@ -248,54 +233,90 @@ Mensural_ligature_engraver::transform_heads (vector<Grob_info> primitives)
                        "when the last note is a descending brevis,\n"
                        "the penultimate note must be another one,\n"
                        "or the ligatura must be LB or SSB"));
-                 primitive->set_property ("primitive", scm_from_int (MLP_NONE));
+                 prim = MLP_NONE;
                  break;
                }
            }
          // longa
          else if (duration_log == -2)
            {
-             primitive->set_property ("primitive", scm_from_int (MLP_BREVIS));
-             general_case = false;
+             prim = MLP_BREVIS;
+             general_case = allow_flexa = false;
            }
-         // else maxima; fall through regular case below
+         // else maxima; fall through to regular case below
        }
 
+      if (allow_flexa
+          && to_boolean (primitive->get_property ("ligature-flexa")))
+        {
+          /*
+            flexa requested, check whether allowed:
+            - there should be a previous note
+            - both of the notes must be of brevis shape
+              (i.e. can't be maxima or flexa;
+              longa is forbidden as well - it's nonexistent anyway)
+            - no compulsory flexa for the next note,
+              i.e. it's not an ultimate descending breve
+          */
+          make_flexa = !at_beginning && prev_brevis_shape && duration_log > -2;
+          if (make_flexa && i == s - 2)
+            {
+              /*
+                check last condition: look ahead to next note
+              */
+              Grob_info next_info = primitives[i + 1];
+              Item *next_primitive = dynamic_cast<Item *> (next_info.grob ());
+              if (Rhythmic_head::duration_log (next_primitive) == -1)
+                {
+                  /*
+                    breve: check whether descending
+                  */
+                  int const next_pitch = unsmob_pitch
+                    (next_info.event_cause ()->get_property ("pitch"))->steps ();
+                  if (next_pitch < pitch)
+                   /*
+                     sorry, forbidden
+                   */
+                   make_flexa = false;
+                }
+            }
+        }
+
       if (general_case)
        {
-         static int const shape[3] = {MLP_MAXIMA, MLP_LONGA, MLP_BREVIS};
+          static int const shape[3] = {MLP_MAXIMA, MLP_LONGA, MLP_BREVIS};
 
-         primitive->set_property ("primitive",
-                                  scm_from_int (shape[duration_log + 3]));
-         prev_brevis_shape = duration_log == -1;
+          prim = shape[duration_log + 3];
        }
 
+      if (make_flexa)
+        {
+          /*
+            turn the note with the previous one into a flexa
+          */
+          prev_primitive->set_property
+            ("primitive",
+             scm_from_int
+             (MLP_FLEXA_BEGIN
+              | (scm_to_int (prev_primitive->get_property ("primitive"))
+                 & MLP_STEM)));
+          prev_primitive->set_property
+            ("flexa-interval", scm_from_int (pitch - prev_pitch));
+          prim = MLP_FLEXA_END;
+          primitive->set_property
+            ("flexa-interval", scm_from_int (pitch - prev_pitch));
+        }
+
       // join_primitives replacement
-      if (!at_beginning)
-       {
-         /*
-           if the previous note is longa-shaped and this note is lower,
-           then the joining line may hide the stem, so it is made longer
-           to serve as stem as well
-         */
-         if (delta_pitch < 0
-             && (scm_to_int (prev_primitive->get_property ("primitive"))
-                 & MLP_LONGA))
-           {
-             delta_pitch -= 6;
-             // instead of number 6
-             // the legth of the longa stem should be queried something like
-             // Font_interface::get_default_font (ligature)->find_by_name
-             //  ("noteheads.sM2mensural").extent (Y_AXIS).length ()
-           }
-         prev_primitive->set_property ("join-right-amount",
-                                       scm_from_int (delta_pitch));
-         // perhaps set add-join as well
-       }
+      if (!(at_beginning || make_flexa))
+       prev_primitive->set_property ("add-join", ly_bool2scm (true));
+
       at_beginning = false;
       prev_primitive = primitive;
       prev_pitch = pitch;
-      // apply_transition replacement ends
+      primitive->set_property ("primitive", scm_from_int (prim));
+      prev_brevis_shape = (prim & MLP_BREVIS) != 0;
+      prev_semibrevis = (prim & MLP_UP) != 0;
     }
 }
 
@@ -325,16 +346,11 @@ Mensural_ligature_engraver::propagate_properties (Spanner *ligature,
   Real head_width
     = Font_interface::get_default_font (ligature)->
     find_by_name ("noteheads.sM1mensural").extent (X_AXIS).length ();
-  Real flexa_width
-    = robust_scm2double (ligature->get_property ("flexa-width"), 2);
   Real maxima_head_width
     = Font_interface::get_default_font (ligature)->
-    find_by_name ("noteheads.sM1neomensural").extent (X_AXIS).length ();
-
-  flexa_width *= Staff_symbol_referencer::staff_space (ligature);
-
-  Real half_flexa_width = 0.5 * (flexa_width + thickness);
+    find_by_name ("noteheads.sM3ligmensural").extent (X_AXIS).length ();
 
+  Item *prev_primitive = NULL;
   for (vsize i = 0; i < primitives.size (); i++)
     {
       Item *primitive = dynamic_cast<Item *> (primitives[i].grob ());
@@ -342,31 +358,36 @@ Mensural_ligature_engraver::propagate_properties (Spanner *ligature,
       primitive->set_property ("thickness",
                               scm_from_double (thickness));
 
-      switch (output & MLP_ANY)
-       {
-       case MLP_NONE:
-         primitive->set_property ("head-width",
-                                  scm_from_double (half_flexa_width));
-         break;
-       case MLP_BREVIS:
-       case MLP_LONGA:
-         primitive->set_property ("head-width",
-                                  scm_from_double (head_width));
-         break;
-       case MLP_MAXIMA:
-         primitive->set_property ("head-width",
-                                  scm_from_double (maxima_head_width));
-         break;
-       case MLP_FLEXA:
-         primitive->set_property ("head-width",
-                                  scm_from_double (half_flexa_width));
-         primitive->set_property ("flexa-width",
-                                  scm_from_double (flexa_width));
-         break;
-       default:
-         programming_error (_ ("unexpected case fall-through"));
-         break;
-       }
+      switch (output & MLP_ANY) {
+      case MLP_BREVIS:
+      case MLP_LONGA:
+       primitive->set_property ("head-width", scm_from_double (head_width));
+       break;
+      case MLP_MAXIMA:
+       primitive->set_property ("head-width",
+                                scm_from_double (maxima_head_width));
+       break;
+      case MLP_FLEXA_BEGIN:
+        /*
+          the next note (should be MLP_FLEXA_END) will handle this one
+        */
+        break;
+      case MLP_FLEXA_END:
+        {
+          SCM flexa_scm = primitive->get_property ("flexa-width");
+          Real const flexa_width = robust_scm2double (flexa_scm, 2.0);
+          SCM head_width = scm_from_double (0.5 * (flexa_width + thickness));
+          primitive->set_property ("head-width", head_width);
+          prev_primitive->set_property ("head-width", head_width);
+          prev_primitive->set_property ("flexa-width", flexa_scm);
+        }
+       break;
+      default:
+       programming_error (_ ("unexpected case fall-through"));
+       break;
+      }
+
+      prev_primitive = primitive;
     }
 }
 
@@ -375,43 +396,69 @@ Mensural_ligature_engraver::fold_up_primitives (vector<Grob_info> primitives)
 {
   Item *first = 0;
   Real distance = 0.0;
-  Real dot_shift = 0.0;
+  Real staff_space = 0.0;
+  Real thickness = 0.0;
+
   for (vsize i = 0; i < primitives.size (); i++)
     {
       Item *current = dynamic_cast<Item *> (primitives[i].grob ());
       if (i == 0)
        {
          first = current;
-         dot_shift = 1.5 * Staff_symbol_referencer::staff_space (first);
+         staff_space = Staff_symbol_referencer::staff_space (first);
+         thickness = scm_to_double (current->get_property ("thickness"));
        }
 
       move_related_items_to_column (current, first->get_column (),
                                    distance);
 
-      distance
-       += scm_to_double (current->get_property ("head-width"))
-       - scm_to_double (current->get_property ("thickness"));
+      Real head_width = scm_to_double (current->get_property ("head-width"));
+      distance += head_width - thickness;
 
       if (Rhythmic_head::dot_count (current) > 0)
-       // Move dots above/behind the ligature.
+       /*
+         Move dots above/behind the ligature.
+         dots should also avoid staff lines.
+       */
        {
+         Grob *dot_gr = Rhythmic_head::get_dots (current);
+
+         bool const on_line = Staff_symbol_referencer::on_line
+           (current,
+            robust_scm2int (current->get_property ("staff-position"), 0));
+         Real vert_shift = on_line ? staff_space * 0.5 : 0.0;
+          bool const flexa_begin =
+            scm_to_int (current->get_property ("primitive"))
+            & MLP_FLEXA_BEGIN;
+
          if (i + 1 < primitives.size ())
-           // dot in the midst => move above head
+           /*
+             dot in the midst => avoid next note;
+             what to avoid and where depends on
+             being on a line or between lines
+           */
            {
-             // FIXME: Amount of vertical dot-shift should depend on
-             // pitch.
-             //
-             // FIXME: dot placement is horizontally slightly off.
-             Rhythmic_head::get_dots (current)->translate_axis (dot_shift, Y_AXIS);
-           }
-         else
-           // trailing dot => move behind head
-           {
-             double head_width =
-               scm_to_double (current->get_property ("head-width"));
-             Rhythmic_head::get_dots (current)->
-               translate_axis (head_width, X_AXIS);
+             int const delta =
+               scm_to_int (current->get_property ("delta-position"));
+             if (flexa_begin)
+               vert_shift += delta < 0
+                 ? staff_space : (on_line ? -2.0 : -1.0) * staff_space;
+             else if (on_line)
+               {
+                 if (0 < delta && delta < 3)
+                   vert_shift -= staff_space;
+               }
+             else if (delta == 1 || delta == -1)
+                 vert_shift -= delta * staff_space;
            }
+
+         dot_gr->translate_axis (vert_shift, Y_AXIS);
+
+         /*
+           move all dots behind head
+         */
+         dot_gr->translate_axis
+            ((flexa_begin ? staff_space * 0.6 : head_width) - 2.0*thickness, X_AXIS);
        }
     }
 }
index c3a3aaf16f3213c714939f1559cbe7b0bab3b7b6..ad2f0918a9ab22cd427bef19b349401bbeafc0e8 100644 (file)
 #include "warn.hh"
 
 /*
+  draws one half a flexa, i.e. a portion corresponding to a single note.
+  this way coloration of the two notes building up the flexa can be
+  handled independently.
+
  * TODO: divide this function into mensural and neo-mensural style.
  *
  * TODO: move this function to class Lookup?
  */
 Stencil
 brew_flexa (Grob *me,
-           Real interval,
            bool solid,
            Real width,
-           Real vertical_line_thickness)
+           Real thickness,
+           bool begin)
 {
   Real staff_space = Staff_symbol_referencer::staff_space (me);
+
+  /*
+    The thickness of the horizontal lines of the flexa shape
+    should be equal to that of the horizontal lines of the
+    neomensural brevis note head (see mf/parmesan-heads.mf).
+  */
+  Real const horizontal_line_thickness = staff_space * 0.35;
+
+  // URGH!  vertical_line_thickness is adjustable (via thickness
+  // property), while horizontal_line_thickness is constant.
+  // Maybe both should be adjustable independently?
+
+  Real height = staff_space - horizontal_line_thickness;
+  Stencil stencil;
+  Real const interval =
+    robust_scm2double (me->get_property ("flexa-interval"), 0.0);
   Real slope = (interval / 2.0 * staff_space) / width;
 
   // Compensate optical illusion regarding vertical position of left
@@ -50,52 +70,42 @@ brew_flexa (Grob *me,
   Real slope_correction = 0.2 * staff_space * sign (slope);
   Real corrected_slope = slope + slope_correction / width;
 
-  Stencil stencil;
   if (solid) // colorated flexae
     {
-      Stencil solid_head
-       = Lookup::beam (corrected_slope, width, staff_space, 0.0);
-      stencil.add_stencil (solid_head);
+      stencil = Lookup::beam (corrected_slope, width * 0.5, staff_space, 0.0);
     }
   else // outline
     {
-      /*
-       The thickness of the horizontal lines of the flexa shape
-       should be equal to that of the horizontal lines of the
-       neomensural brevis note head (see mf/parmesan-heads.mf).
-      */
-      Real const horizontal_line_thickness = staff_space * 0.35;
-
-      // URGH!  vertical_line_thickness is adjustable (via thickness
-      // property), while horizontal_line_thickness is constant.
-      // Maybe both should be adjustable independently?
-
-      Real height = staff_space - horizontal_line_thickness;
-
-      Stencil left_edge
-       = Lookup::beam (corrected_slope, vertical_line_thickness, height, 0.0);
-      stencil.add_stencil (left_edge);
-
-      Stencil right_edge
-       = Lookup::beam (corrected_slope, vertical_line_thickness, height, 0.0);
-      right_edge.translate_axis (width - vertical_line_thickness, X_AXIS);
-      right_edge.translate_axis ((width - vertical_line_thickness) *
-                                corrected_slope, Y_AXIS);
-      stencil.add_stencil (right_edge);
-
-      Stencil bottom_edge
-       = Lookup::beam (corrected_slope, width,
-                       horizontal_line_thickness, 0.0);
-      bottom_edge.translate_axis (-0.5 * height, Y_AXIS);
+      stencil = Lookup::beam (corrected_slope, thickness, height, 0.0);
+      if (!begin)
+       {
+         stencil.translate_axis (width*0.5 - thickness, X_AXIS);
+         stencil.translate_axis (corrected_slope * (width*0.5 - thickness),
+                                  Y_AXIS);
+        }
+
+      Stencil bottom_edge =
+        Lookup::beam (corrected_slope, width * 0.5, horizontal_line_thickness,
+                      0.0);
+      bottom_edge.translate_axis (-0.5*height, Y_AXIS);
       stencil.add_stencil (bottom_edge);
 
-      Stencil top_edge
-       = Lookup::beam (corrected_slope, width,
-                       horizontal_line_thickness, 0.0);
-      top_edge.translate_axis (+0.5 * height, Y_AXIS);
+      Stencil top_edge =
+        Lookup::beam (corrected_slope, width * 0.5, horizontal_line_thickness,
+                      0.0);
+      top_edge.translate_axis (+0.5*height, Y_AXIS);
       stencil.add_stencil (top_edge);
     }
-  stencil.translate_axis (ypos_correction, Y_AXIS);
+
+  if (begin)
+    stencil.translate_axis (ypos_correction, Y_AXIS);
+  else
+    {
+      stencil.translate_axis (0.5 * thickness, X_AXIS);
+
+      stencil.translate_axis (interval / -4.0 * staff_space, Y_AXIS);
+    }
+
   return stencil;
 }
 
@@ -112,41 +122,50 @@ internal_brew_primitive (Grob *me)
   int primitive = scm_to_int (primitive_scm);
 
   Stencil out;
-  int delta_pitch = 0;
   Real thickness = 0.0;
   Real width = 0.0;
+  Real flexa_width = 0.0;
   Real staff_space = Staff_symbol_referencer::staff_space (me);
-  if (primitive & MLP_ANY)
-    thickness = robust_scm2double (me->get_property ("thickness"), .14);
 
-  if (primitive & MLP_FLEXA)
+  bool const color =
+    me->get_property ("style") == ly_symbol2scm ("blackpetrucci");
+  bool const semi =
+    me->get_property ("style") == ly_symbol2scm ("semipetrucci");
+
+  if (primitive & MLP_ANY)
     {
-      delta_pitch = robust_scm2int (me->get_property ("delta-position"),
-                                   0);
-      width
-       = robust_scm2double (me->get_property ("flexa-width"), 2.0 * staff_space);
+      thickness = robust_scm2double (me->get_property ("thickness"), .14);
+      width = robust_scm2double (me->get_property ("head-width"), staff_space);
     }
-  if (primitive & MLP_SINGLE_HEAD)
-    width = robust_scm2double (me->get_property ("head-width"), staff_space);
+  if (primitive & MLP_FLEXA)
+    flexa_width = robust_scm2double (me->get_property ("flexa-width"), 2.0)
+      * staff_space;
+
+  int const note_shape = primitive & MLP_ANY;
 
-  switch (primitive & MLP_ANY)
+  switch (note_shape)
     {
     case MLP_NONE:
       return Lookup::blank (Box (Interval (0, 0), Interval (0, 0)));
     case MLP_LONGA: // mensural brevis head with right cauda
       out = Font_interface::get_default_font (me)->find_by_name
-       ("noteheads.sM2mensural");
+       (color ? "noteheads.sM2blackmensural" :
+         semi ? "noteheads.sM2semimensural" : "noteheads.sM2mensural");
       break;
     case MLP_BREVIS: // mensural brevis head
       out = Font_interface::get_default_font (me)->find_by_name
-       ("noteheads.sM1mensural");
+       (color ? "noteheads.sM1blackmensural" :
+         semi ? "noteheads.sM1semimensural" : "noteheads.sM1mensural");
       break;
     case MLP_MAXIMA: // should be mensural maxima head without stem
       out = Font_interface::get_default_font (me)->find_by_name
-       ("noteheads.sM1neomensural");
+       (color ? "noteheads.sM3blackligmensural" :
+         semi ? "noteheads.sM3semiligmensural" : "noteheads.sM3ligmensural");
       break;
-    case MLP_FLEXA:
-      out = brew_flexa (me, delta_pitch, false, width, thickness);
+    case MLP_FLEXA_BEGIN:
+    case MLP_FLEXA_END:
+      out = brew_flexa (me, color, flexa_width, thickness,
+                       note_shape == MLP_FLEXA_BEGIN);
       break;
     default:
       programming_error (_ ("Mensural_ligature:"
@@ -176,11 +195,9 @@ internal_brew_primitive (Grob *me)
       out.add_stencil (join);
     }
 
-  SCM join_right_scm = me->get_property ("join-right-amount");
-
-  if (scm_is_number (join_right_scm))
+  if (to_boolean (me->get_property ("add-join")))
     {
-      int join_right = scm_to_int (join_right_scm);
+      int join_right = scm_to_int (me->get_property ("delta-position"));
       if (join_right)
        {
          Real y_top = join_right * 0.5 * staff_space;
@@ -190,6 +207,19 @@ internal_brew_primitive (Grob *me)
            {
              y_bottom = y_top;
              y_top = 0.0;
+
+             /*
+               if the previous note is longa-shaped,
+               the joining line may hide the stem, so made it longer
+               to serve as stem as well
+             */
+             if (primitive & MLP_LONGA)
+               /*
+                 instead of 3.0 the length of a longa stem should be used
+                 Font_interface::get_default_font (???)->find_by_name
+                 ("noteheads.s-2mensural").extent (Y_AXIS).length () * 0.5
+               */
+               y_bottom -= 3.0 * staff_space;
            }
 
          Interval x_extent (width - thickness, width);
@@ -235,10 +265,10 @@ ADD_INTERFACE (Mensural_ligature,
 
               /* properties */
               "delta-position "
-              "flexa-width "
+              "ligature-flexa "
               "head-width "
-              "join-right-amount "
+              "add-join "
+              "flexa-interval "
               "primitive "
               "thickness "
               );
-
index 7b3b973ba4e2cc1aaa87343404dc55b0fa40c908..73d93ccb7dd103079722f1d06e100628951f813d 100644 (file)
@@ -50,7 +50,7 @@ load_table (char const *tag_str, FT_Face face, FT_ULong *length)
       return buffer;
     }
   else
-    programming_error (_f ("Free type error: %s",
+    programming_error (_f ("FreeType error: %s",
                           freetype_error_string (error_code).c_str ()
                           ));
 
index 9cac3efa3df28624dc962ed424d46c80b89ccbe5..e404711b4b70066214846c83a5e34d2a6708c297 100644 (file)
@@ -52,6 +52,8 @@ Optimal_page_breaking::solve ()
   Line_division ideal_line_division = current_configuration (0);
   Line_division best_division = ideal_line_division;
   vsize min_sys_count = 1;
+
+  // Note that system_count () only counts non-title systems.
   vsize ideal_sys_count = system_count ();
   
   if (!scm_is_integer (forced_page_count))
@@ -62,7 +64,6 @@ Optimal_page_breaking::solve ()
       best = space_systems_on_best_pages (0, first_page_num);
 
       page_count = best.systems_per_page_.size ();
-      ideal_sys_count = best.system_count ();
       min_sys_count = ideal_sys_count - best.systems_per_page_.back ();
   
       if (page_count > 1 && best.systems_per_page_[page_count - 2] > 1)
@@ -82,7 +83,7 @@ Optimal_page_breaking::solve ()
              || ideal_sys_count < min_system_count (0, end))
            {
              warning (_ ("could not satisfy systems-per-page and page-count at the same time, ignoring systems-per-page"));
-             ideal_sys_count = best.system_count ();
+             ideal_sys_count = system_count ();
              min_sys_count = page_count;
            }
          else
index 40f70bbe6e714876678df2e4cb4ad791c6e92044..827dbd44444fca9e450f58bd1820b53bda917499 100644 (file)
@@ -28,16 +28,6 @@ Page_spacing_result::Page_spacing_result ()
   system_count_status_ = SYSTEM_COUNT_OK;
 }
 
-vsize
-Page_spacing_result::system_count () const
-{
-  vsize total = 0;
-  for (vsize i = 0; i < systems_per_page_.size(); i++)
-    total += systems_per_page_[i];
-
-  return total;      
-}
-
 vsize
 Page_spacing_result::page_count () const
 {
index 031e117e9022e7aff87bda04900b30f4f1a0df38..240a4c1e3b2086c29494df7e1b3816729bf7bae5 100644 (file)
@@ -290,6 +290,7 @@ If we give names, Bison complains.
 %token <scm> MARKUP_FUNCTION
 %token <scm> MARKUP_LIST_FUNCTION
 %token <scm> MARKUP_IDENTIFIER
+%token <scm> MARKUPLINES_IDENTIFIER
 %token <scm> MUSIC_FUNCTION
 %token <scm> MUSIC_IDENTIFIER
 %token <scm> NOTENAME_PITCH
@@ -615,6 +616,9 @@ identifier_init:
        | full_markup {
                $$ = $1;
        }
+       | full_markup_list {
+               $$ = $1;
+       }
        | DIGIT {
                $$ = scm_from_int ($1);
        }
@@ -2401,7 +2405,10 @@ lyric_markup:
        ;
 
 full_markup_list:
-       MARKUPLINES
+       MARKUPLINES_IDENTIFIER {
+               $$ = $1;
+       }
+       | MARKUPLINES
                { PARSER->lexer_->push_markup_state (); }
        markup_list {
                $$ = $3;
@@ -2434,7 +2441,10 @@ markup_top:
        ;
 
 markup_list:
-       markup_composed_list {
+       MARKUPLINES_IDENTIFIER {
+               $$ = $1;
+       }
+       | markup_composed_list {
                $$ = $1;
        }
        | markup_braced_list {
@@ -2627,6 +2637,9 @@ Lily_lexer::try_special_identifiers (SCM *destination, SCM sid)
                if (is_lyric_state ())
                        return LYRIC_MARKUP_IDENTIFIER;
                return MARKUP_IDENTIFIER;
+       } else if (Text_interface::is_markup_list (sid)) {
+               *destination = sid;
+               return MARKUPLINES_IDENTIFIER;
        }
 
        return -1;
index 4a3a303832997a6337c1f0fbdbd6447add4677d4..7de70d37329398ff5715045b1ce7fa4ef3f03c55 100644 (file)
   \consists "Font_size_engraver"
   \consists "Instrument_name_engraver"
 
+  %% explicitly set instrument, so it is not inherited from the parent
+  instrumentName = #'()
+  shortInstrumentName = #'()
+
   predefinedDiagramTable = #default-fret-table
 }
 
@@ -84,7 +88,6 @@
   %% explicitly set instrument, so we don't get
   %% weird effects when doing instrument names for
   %% piano staves
-
   instrumentName = #'()
   shortInstrumentName = #'()
 
   \consists "Vertical_align_engraver"
   topLevelAlignment = ##f
 
+  \consists "Instrument_name_engraver"
   \consists "System_start_delimiter_engraver"
   systemStartDelimiter = #'SystemStartBracket
+  %% explicitly set instrument, so it is not inherited from the parent
+  instrumentName = #'()
+  shortInstrumentName = #'()
   vocalName = #'()
   shortVocalName = #'()
 
@@ -175,6 +182,10 @@ contained staves are not connected vertically."
   \consists "Axis_group_engraver"
   \consists "Ledger_line_engraver"
 
+  %% explicitly set instrument, so it is not inherited from the parent
+  instrumentName = #'()
+  shortInstrumentName = #'()
+
   \accepts "Voice"
   \accepts "CueVoice"
   \defaultchild "Voice"
@@ -296,16 +307,21 @@ multiple voices on the same staff."
 side, grouping the staves together.  The bar lines of the
 contained staves are connected vertically."
 
+  \consists "Instrument_name_engraver"
   \consists "Span_bar_engraver"
   \consists "Span_arpeggio_engraver"
   \consists "System_start_delimiter_engraver"
   systemStartDelimiter = #'SystemStartBrace
   topLevelAlignment = ##f
+  %% explicitly set instrument, so it is not inherited from the parent
+  instrumentName = #'()
+  shortInstrumentName = #'()
 
   \defaultchild "Staff"
   \accepts "Staff"
   \accepts "FiguredBass"
   \accepts "Dynamics"
+  \accepts "ChordNames"
 }
 
 \context{
@@ -313,10 +329,9 @@ contained staves are connected vertically."
   \name "PianoStaff"
   \alias "GrandStaff"
 
-  \description "Just like @code{GrandStaff} but with support for
-instrument names at the start of each system."
+  \description "Just like @code{GrandStaff}, but the staves are only removed
+together, never separately."
 
-  \consists "Instrument_name_engraver"
   \consists "Vertical_align_engraver"
   \consists "Keep_alive_together_engraver"
   topLevelAlignment = ##f
@@ -332,10 +347,14 @@ instrument names at the start of each system."
   \consists "Vertical_align_engraver"
   topLevelAlignment = ##f
 
+  \consists "Instrument_name_engraver"
   \consists "Span_bar_engraver"
   \consists "Span_arpeggio_engraver"
   \consists "Output_property_engraver"
   systemStartDelimiter = #'SystemStartBracket
+  %% explicitly set instrument, so it is not inherited from the parent
+  instrumentName = #'()
+  shortInstrumentName = #'()
 
   \consists "System_start_delimiter_engraver"
 
@@ -403,6 +422,9 @@ printing of a single line of lyrics."
   \consists "Instrument_name_engraver"
   \consists "Font_size_engraver"
   \consists "Hara_kiri_engraver"
+  %% explicitly set instrument, so it is not inherited from the parent
+  instrumentName = #'()
+  shortInstrumentName = #'()
 
   \override VerticalAxisGroup #'remove-first = ##t
   \override VerticalAxisGroup #'remove-empty = ##t
index 8cfaa81d31bf4708cda3488e74a00efa60cc1df2..fc49725f07d395cf4eec1832db6b9283a96f3a55 100644 (file)
@@ -91,7 +91,6 @@ applyContext =
 #(define-music-function (parser location proc) (procedure?)
    (_i "Modify context properties with Scheme procedure @var{proc}.")
    (make-music 'ApplyContext
-              'origin location
               'procedure proc))
 
 applyMusic =
@@ -103,7 +102,6 @@ applyOutput =
 #(define-music-function (parser location ctx proc) (symbol? procedure?)
    (_i "Apply function @code{proc} to every layout object in context @code{ctx}")
    (make-music 'ApplyOutputEvent
-              'origin location
               'procedure proc
               'context-type ctx))
 
@@ -170,7 +168,6 @@ barNumberCheck =
 #(define-music-function (parser location n) (integer?)
    (_i "Print a warning if the current bar number is not @var{n}.")
    (make-music 'ApplyContext
-              'origin location
               'procedure
               (lambda (c)
                 (let ((cbn (ly:context-property c 'currentBarNumber)))
@@ -214,6 +211,34 @@ clef =
    (_i "Set the current clef to @var{type}.")
    (make-clef-set type))
 
+
+compoundMeter =
+#(define-music-function (parser location args) (pair?)
+  (_i "Create compound time signatures. The argument is a Scheme list of 
+lists. Each list describes one fraction, with the last entry being the 
+denominator, while the first entries describe the summands in the 
+enumerator. If the time signature consists of just one fraction, 
+the list can be given directly, i.e. not as a list containing a single list.
+For example, a time signature of (3+1)/8 + 2/4 would be created as 
+@code{\\compoundMeter #'((3 1 8) (2 4))}, and a time signature of (3+2)/8 
+as @code{\\compoundMeter #'((3 2 8))} or shorter 
+@code{\\compoundMeter #'(3 2 8)}.")
+  (let* ((mlen (calculate-compound-measure-length args))
+         (beat (calculate-compound-base-beat args))
+         (beatGrouping (calculate-compound-beat-grouping args))
+         (timesig (cons (ly:moment-main-numerator mlen)
+                        (ly:moment-main-denominator mlen))))
+  #{
+    \once \override Staff.TimeSignature #'stencil = #(lambda (grob)
+               (grob-interpret-markup grob (format-compound-time $args)))
+    \set Timing.timeSignatureFraction = $timesig
+    \set Timing.baseMoment = $beat
+    \set Timing.beatStructure = $beatGrouping
+    \set Timing.beamExceptions = #'()
+    \set Timing.measureLength = $mlen
+  #} ))
+
+
 cueClef =
 #(define-music-function (parser location type) (string?)
   (_i "Set the current cue clef to @var{type}.")
@@ -472,7 +497,6 @@ octaveCheck =
 #(define-music-function (parser location pitch-note) (ly:music?)
    (_i "Octave check.")
    (make-music 'RelativeOctaveCheck
-              'origin location
               'pitch (pitch-of-note pitch-note)))
 
 ottava =
@@ -514,7 +538,6 @@ or @code{\"GrobName\"}.")
           (set! context-name (string->symbol (list-ref name-components 0)))))
 
      (make-music 'ApplyOutputEvent
-                'origin location
                 'context-type context-name
                 'procedure
                 (lambda (grob orig-context context)
@@ -731,8 +754,7 @@ of the quoted voice, as specified in an @code{\\addQuote} command.
 usually contains spacers or multi-measure rests.")
    (make-music 'QuoteMusic
                'element main-music
-               'quoted-music-name what
-               'origin location))
+               'quoted-music-name what))
 
 removeWithTag =
 #(define-music-function (parser location tag music) (symbol? ly:music?)
@@ -851,8 +873,7 @@ as a first or second voice.")
               'quoted-context-id "cue"
               'quoted-music-name what
               'quoted-voice-direction dir
-              'quoted-transposition (pitch-of-note pitch-note)
-              'origin location))
+              'quoted-transposition (pitch-of-note pitch-note)))
 
 transposition =
 #(define-music-function (parser location pitch-note) (ly:music?)
index 4987a601e413b359aa747b294ca3adf72d84a9ad..02ff0da62c9e7597cdd55270047c0903b1624061 100644 (file)
@@ -36,7 +36,7 @@ OUT=out-website
 
 ### only update this when the language compiles correctly!
 # LANGUAGES = (site, de, es, fr, hu, it, ja, nl)
-WEB_LANGS = es fr it nl de hu
+WEB_LANGS = es fr it nl de hu ja
 
 TEXI2HTML=ONLY_WEB=1 TOP_SRC_DIR=$(top-src-dir) DEPTH=$(depth) PERL_UNICODE=SD $(TEXI2HTML_PROGRAM)
 
index f9e1e18d86d3ba8b7f4821a7afee5554625275f3..97cf3c48efed86557d008dde43c67cf11393a0fe 100644 (file)
@@ -394,11 +394,11 @@ def custos_mensural (expr verbose_name, internal_name,
                dalpha = direction * alpha;
 
                if staffline_adjustment = between_staff_lines:
-                       stem_ht# = 1.00 staff_space#;
+                       stem_ht# = 2.00 staff_space#;
                elseif staffline_adjustment = on_staff_line:
-                       stem_ht# = 1.50 staff_space#;
+                       stem_ht# = 2.50 staff_space#;
                else: % staffline_adjustment = anywhere
-                       stem_ht# = 1.25 staff_space#;
+                       stem_ht# = 2.25 staff_space#;
                fi;
 
                define_pixels (ht, wd, stem_ht);
index db17c5fe122f7b1f2af76a49072e91fcd0b86653..682dc8bc3c149b46d3f21e015e13b530e3ec8cd2 100644 (file)
@@ -60,7 +60,7 @@ define_pixels (noteheight);
 %
 %
 
-def draw_neomensural_brevis (expr brevwid) =
+def draw_neomensural_brevis (expr brevwid, open, full) =
        save beamheight, head_width;
        save holeheight, stem_width;
        save serif_size, serif_protrude;
@@ -91,8 +91,8 @@ def draw_neomensural_brevis (expr brevwid) =
        penpos4 (beamheight, 90);
        penpos5 (stem_width, 180);
 
-       save pat_in, pat_out;
-       path pat_in, pat_out;
+       save pat_out;
+       path pat_out;
 
        pat_out := z4l
                   -- z3l{left}
@@ -108,18 +108,26 @@ def draw_neomensural_brevis (expr brevwid) =
                   -- cycle;
        fill pat_out;
 
-       pat_in := z4r
-                 -- z3r{left}
-                 .. z2r{up}
-                 -- z1r;
-       pat_in := pat_in
-                 -- reverse pat_in yscaled -1;
-       pat_in := pat_in
-                 -- reverse pat_in shifted (-x4r, 0)
-                                   xscaled -1
-                                   shifted (x4l, 0)
-                 -- cycle;
-       unfill pat_in;
+       if open:
+               save pat_in;
+               path pat_in;
+
+               pat_in := z4r
+                         -- z3r{left}
+                         .. z2r{up}
+                         -- z1r;
+               pat_in := pat_in
+                         -- reverse pat_in yscaled -1;
+               if full:
+                       pat_in := pat_in
+                                 -- reverse pat_in shifted (-x4r, 0)
+                                                   xscaled -1
+                                                   shifted (x4l, 0);
+               fi;
+               pat_in := pat_in
+                         -- cycle;
+               unfill pat_in;
+        fi;
 
        penlabels (1, 2, 3, 4, 5);
 enddef;
@@ -127,7 +135,7 @@ enddef;
 
 %%% This head does not seem to be used anywhere.  Junk me?  -- jr
 def draw_neomensural_left_stemmed_head (expr wid) =
-       draw_neomensural_brevis (wid);
+       draw_neomensural_brevis (wid, true, true);
 
        x6 = x7 = stem_width / 2;
        y6 = y5;
@@ -161,7 +169,7 @@ fet_endchar;
 % the left, some say right.  Right wins democratically.
 %
 def draw_neomensural_longa (expr wid) =
-       draw_neomensural_brevis (wid);
+       draw_neomensural_brevis (wid, true, true);
 
        save theta;
 
@@ -204,7 +212,7 @@ fet_endchar;
 
 
 fet_beginchar ("Neo-mensural brevis notehead", "sM1neomensural");
-       draw_neomensural_brevis (2 staff_space#);
+       draw_neomensural_brevis (2 staff_space#, true, true);
 fet_endchar;
 
 
@@ -314,15 +322,15 @@ fet_beginchar ("Neo-mensural semiminima head", "s2neomensural");
 fet_endchar;
 
 
-def draw_mensural_brevis (expr wid) =
+def draw_mensural_brevis (expr wid, open, full) =
        % TODO.  For the moment, fall back to draw_neomensural_brevis.
-       draw_neomensural_brevis (wid);
+       draw_neomensural_brevis (wid, open, full);
 enddef;
 
 
 %%% This head does not seem to be used anywhere.  Junk me?  -- jr
-def draw_mensural_left_stemmed_head (expr wid) =
-       draw_mensural_brevis (wid);
+def draw_mensural_left_stemmed_head (expr wid, open, full) =
+       draw_mensural_brevis (wid, open, full);
 
        x6 = x7 = stem_width / 2;
        y6 = y5;
@@ -345,8 +353,8 @@ def draw_mensural_left_stemmed_head (expr wid) =
 enddef;
 
 
-def draw_mensural_longa (expr wid) =
-       draw_mensural_brevis (wid);
+def draw_mensural_longa (expr wid, open, full) =
+       draw_mensural_brevis (wid, open, full);
 
        x6 = x7 = head_width - stem_width / 2;
        y6 = y5;
@@ -371,22 +379,67 @@ enddef;
 
 %%% This head does not seem to be used anywhere.  Junk me?  -- jr
 fet_beginchar ("Mensural left stemmed notehead", "slmensural");
-       draw_mensural_left_stemmed_head (staff_space#);
+       draw_mensural_left_stemmed_head (staff_space#, true, true);
 fet_endchar;
 
 
 fet_beginchar ("Mensural maxima notehead", "sM3mensural");
-       draw_mensural_longa (2.0 staff_space#);
+       draw_mensural_longa (2.0 staff_space#, true, true);
+fet_endchar;
+
+
+fet_beginchar ("Mensural maxima notehead in ligaturae", "sM3ligmensural");
+       draw_mensural_brevis (2.0 staff_space#, true, true);
 fet_endchar;
 
 
 fet_beginchar ("Mensural longa notehead", "sM2mensural");
-       draw_mensural_longa (staff_space#);
+       draw_mensural_longa (staff_space#, true, true);
 fet_endchar;
 
 
 fet_beginchar ("Mensural brevis notehead", "sM1mensural");
-       draw_mensural_brevis (staff_space#);
+       draw_mensural_brevis (staff_space#, true, true);
+fet_endchar;
+
+
+fet_beginchar ("Black mensural maxima notehead", "sM3blackmensural");
+       draw_mensural_longa (2.0 staff_space#, false, false);
+fet_endchar;
+
+
+fet_beginchar ("Black mensural maxima notehead in ligaturae", "sM3blackligmensural");
+       draw_mensural_brevis (2.0 staff_space#, false, false);
+fet_endchar;
+
+
+fet_beginchar ("Black mensural longa notehead", "sM2blackmensural");
+       draw_mensural_longa (staff_space#, false, false);
+fet_endchar;
+
+
+fet_beginchar ("Black mensural brevis notehead", "sM1blackmensural");
+       draw_mensural_brevis (staff_space#, false, false);
+fet_endchar;
+
+
+fet_beginchar ("Semi-colored mensural maxima notehead", "sM3semimensural");
+       draw_mensural_longa (2.0 staff_space#, true, false);
+fet_endchar;
+
+
+fet_beginchar ("Semi-colored mensural maxima notehead in ligaturae", "sM3semiligmensural");
+       draw_mensural_brevis (2.0 staff_space#, true, false);
+fet_endchar;
+
+
+fet_beginchar ("Semi-colored mensural longa notehead", "sM2semimensural");
+       draw_mensural_longa (staff_space#, true, false);
+fet_endchar;
+
+
+fet_beginchar ("Semi-colored mensural brevis notehead", "sM1semimensural");
+       draw_mensural_brevis (staff_space#, true, false);
 fet_endchar;
 
 
@@ -466,6 +519,11 @@ fet_beginchar ("Mensural semiminima head", "s2mensural");
 fet_endchar;
 
 
+fet_beginchar ("Black mensural semibrevis head", "s0blackmensural");
+       draw_diamond_head (staff_space#, 0.15, 0.30, 30, false);
+fet_endchar;
+
+
 fet_beginchar ("Petrucci semibrevis head", "s0petrucci");
 %      draw_diamond_head (1.8 staff_space#, 0.15, 0.40, 30, true);
        draw_neomensural_open_head (staff_space#, 1.8 staff_space#);
@@ -484,6 +542,24 @@ fet_beginchar ("Petrucci semiminima head", "s2petrucci");
 fet_endchar;
 
 
+fet_beginchar ("Petrucci colored semibrevis head", "s0blackpetrucci");
+%      draw_diamond_head (1.8 staff_space#, 0.15, 0.40, 30, true);
+       draw_neomensural_black_head (staff_space#, 1.8 staff_space#);
+fet_endchar;
+
+
+fet_beginchar ("Petrucci colored minima head", "s1blackpetrucci");
+%      draw_diamond_head (1.8 staff_space#, 0.15, 0.40, 30, true);
+       draw_neomensural_black_head (staff_space#, 1.8 staff_space#);
+fet_endchar;
+
+
+fet_beginchar ("Petrucci colored semiminima head", "s2blackpetrucci");
+%      draw_diamond_head (1.8 staff_space#, 0.15, 0.40, 30, true);
+       draw_neomensural_black_head (staff_space#, 1.8 staff_space#);
+fet_endchar;
+
+
 %%%%%%%%
 %
 %
index 972410fa3585bc428dcaf763ba94d03b0e53dc73..187268b78efc105fe44dfdeee9c345ea781a3c05 100644 (file)
@@ -60,7 +60,8 @@ compat_itoa (int i)
 #if 0
 int x = 0;
 int *track = &x;
-#define debug_print(f, args...) fprintf (stderr, "%s:%d: track: %p :" f, __FUNCTION__, __LINE__, *track, ##args)
+#define urg_debug_print(f, args...) fprintf (stderr, "%s:%d: track: %p: " f, __FUNCTION__, __LINE__, *track, ##args)
+#define debug_print(f, args...) fprintf (stderr, f, ##args)
 #else
 #define debug_print(f, args...)
 #endif
@@ -161,7 +162,7 @@ get_number (unsigned char ** str, unsigned char * end_str, int length)
     sum = (sum << 8) + (unsigned char) (*str)[i];
 
   *str += length;
-  debug_print ("%d:\n", sum);
+  debug_print ("%ld:\n", sum);
   return sum;
 }
 
@@ -178,7 +179,7 @@ get_variable_length_number (unsigned char **str, unsigned char * end_str)
       if (!(x & 0x80))
        break;
     }
-  debug_print ("%d:\n", sum);
+  debug_print ("%ld:\n", sum);
   return sum;
 }
 
@@ -291,7 +292,7 @@ read_event (unsigned char **track, unsigned char *end, PyObject *time,
 }
 
 static PyObject *
-midi_parse_track (unsigned char **track, unsigned char *track_end)
+midi_parse_track (unsigned char **track, unsigned char *track_end, int clocks_max)
 {
   unsigned int time = 0;
   unsigned long track_len, track_size;
@@ -312,8 +313,8 @@ midi_parse_track (unsigned char **track, unsigned char *track_end)
 
   track_len = get_number (track, *track + 4, 4);
 
-  debug_print ("track_len: %u\n", track_len);
-  debug_print ("track_size: %u\n", track_size);
+  debug_print ("track_len: %lu\n", track_len);
+  debug_print ("track_size: %lu\n", track_size);
   debug_print ("track begin: %p\n", track);
   debug_print ("track end: %p\n", track + track_len);
   
@@ -337,7 +338,8 @@ midi_parse_track (unsigned char **track, unsigned char *track_end)
        time += dt;
        if (dt)
          pytime = PyInt_FromLong (time);
-
+       if (clocks_max && time > clocks_max)
+         break;
        pyev = read_event (track, track_end, pytime,
                           &running_status);
        if (pyev)
@@ -355,21 +357,23 @@ pymidi_parse_track (PyObject *self, PyObject *args)
 {
   unsigned char *track, *track_end;
   unsigned long track_size;
+  int clocks_max;
 
   debug_print ("%s", "\n");
-  if (!PyArg_ParseTuple (args, "s#", &track, &track_size))
+  if (!PyArg_ParseTuple (args, "s#|i", &track, &track_size, &clocks_max))
     return 0;
+  debug_print ("clocks_max: %d\n", clocks_max);
 
   if (track_size < 0)
     return midi_error (__FUNCTION__,   ": negative track size: ", compat_itoa (track_size));
 
   track_end = track + track_size;
   
-  return midi_parse_track (&track, track_end);
+  return midi_parse_track (&track, track_end, clocks_max);
 }
 
 static PyObject *
-midi_parse (unsigned char **midi,unsigned  char *midi_end)
+midi_parse (unsigned char **midi,unsigned  char *midi_end, int clocks_max)
 {
   PyObject *pymidi = 0;
   unsigned long header_len;
@@ -388,7 +392,7 @@ midi_parse (unsigned char **midi,unsigned  char *midi_end)
   format = get_number (midi, *midi + 2, 2);
   tracks = get_number (midi, *midi + 2, 2);
 
-  if (tracks > 32)
+  if (tracks > 256)
     return midi_error (__FUNCTION__,  ": too many tracks: ", compat_itoa (tracks));
   
   division = get_number (midi, *midi + 2, 2) * 4;
@@ -403,7 +407,7 @@ midi_parse (unsigned char **midi,unsigned  char *midi_end)
 
   /* Tracks */
   for (i = 0; i < tracks; i++)
-    PyList_Append (pymidi, midi_parse_track (midi, midi_end));
+    PyList_Append (pymidi, midi_parse_track (midi, midi_end, clocks_max));
 
   pymidi = Py_BuildValue ("(OO)", Py_BuildValue ("(ii)", format, division),
                          pymidi);
@@ -415,10 +419,12 @@ pymidi_parse (PyObject *self, PyObject *args)
 {
   unsigned char *midi, *midi_end;
   unsigned long midi_size;
+  int clocks_max;
   
   debug_print ("%s", "\n");
-  if (!PyArg_ParseTuple (args, "s#", &midi, &midi_size))
+  if (!PyArg_ParseTuple (args, "s#|i", &midi, &midi_size, &clocks_max))
     return 0;
+  debug_print ("clocks_max: %d\n", clocks_max);
 
   if (memcmp (midi, "MThd", 4))
     {
@@ -430,14 +436,13 @@ pymidi_parse (PyObject *self, PyObject *args)
 
   midi_end = midi + midi_size;
 
-  return midi_parse (&midi, midi_end);
+  return midi_parse (&midi, midi_end, clocks_max);
 }
 
-
 static PyMethodDef MidiMethods[] = 
 {
-  {"parse",  pymidi_parse, 1},
-  {"parse_track",  pymidi_parse_track, 1},
+  {"parse",  pymidi_parse, METH_VARARGS},
+  {"parse_track",  pymidi_parse_track, METH_VARARGS},
   {0, 0}        /* Sentinel */
 };
 
index ec81b2f99d0ea6ae2355f96b77c26f85615d6471..706bccb2de51a29a565501f9c8bbb29975b52fd5 100644 (file)
             (scm paper-system)
             (ice-9 optargs))
 
-(define-public (ly:system command . rest)
-  (let* ((status 0)
-        (dev-null "/dev/null")
-        (silenced (if (or (ly:get-option 'verbose)
-                          (not (access? dev-null W_OK)))
-                      command
-                      (format #f "~a > ~a 2>&1 " command dev-null))))
-    (if (ly:get-option 'verbose)
-       (begin
-         (ly:message (_ "Invoking `~a'...") command))
-         (ly:progress "\n"))
-
-    (set! status
-         (if (pair? rest)
-             (system-with-env silenced (car rest))
-             (system silenced)))
-       
+(define-public (ly:system command)
+  (if (ly:get-option 'verbose)
+      (begin
+       (ly:message (_ "Invoking `~a'...") (string-join command)))
+      (ly:progress "\n"))
+  (let ((status (apply ly:spawn command)))
     (if (> status 0)
        (begin
          (ly:message (_ "`~a' failed (~a)") command status)
          ;; hmmm.  what's the best failure option? 
          (throw 'ly-file-failed)))))
 
-(define-public (system-with-env cmd env)
-
-  "Execute CMD in fork, with ENV (a list of strings) as the environment"
-  (let*
-      ;; laziness: should use execle?
-      
-      ((pid (primitive-fork)))
-    (if (= 0 pid)
-       ;; child
-       (begin
-         (environ env)
-         (system cmd))
-       
-       ;; parent
-       (cdr (waitpid pid)))))
-
 (define-public (sanitize-command-option str)
-  "Kill dubious shell quoting"
+  "Kill dubious shell quoting."
   
   (string-append
    "\""
                    (dir-basename name ".ps" ".eps")
                    ".pdf"))
         (is-eps (string-match "\\.eps$" name))
-        (paper-size-string (if is-eps
-                               "-dEPSCrop"
-                               (ly:format "-dDEVICEWIDTHPOINTS=~$\
- -dDEVICEHEIGHTPOINTS=~$"
-                                       paper-width paper-height)))
-
-        (cmd (ly:format
-                     "~a\
- ~a\
- ~a\
- ~a\
- -dCompatibilityLevel=1.4\
- -dNOPAUSE\
- -dBATCH\
- -r1200\
- -sDEVICE=pdfwrite\
- -sOutputFile=~S\
- -c .setpdfwrite\
- -f ~S\
-"
-                     (search-gs)
-                     (if (ly:get-option 'verbose) "" "-q")
-                     (if (or (ly:get-option 'gs-load-fonts)
-                             (ly:get-option 'gs-load-lily-fonts))
-                         "-dNOSAFER"
-                         "-dSAFER")
-                     paper-size-string
-                     pdf-name
-                     name)))
-    ;; The wrapper on windows cannot handle `=' signs,
-    ;; gs has a workaround with #.
-    (if (eq? PLATFORM 'windows)
-       (begin
-         (set! cmd (string-regexp-substitute "=" "#" cmd))
-         (set! cmd (string-regexp-substitute "-dSAFER " "" cmd))))
+        (*unspecified* (if #f #f))
+        (cmd
+         (remove (lambda (x) (eq? x *unspecified*))
+         (list
+              (search-gs)
+              (if (ly:get-option 'verbose) *unspecified* "-q")
+              (if (or (ly:get-option 'gs-load-fonts)
+                      (ly:get-option 'gs-load-lily-fonts)
+                      (eq? PLATFORM 'windows))
+                  "-dNOSAFER"
+                  "-dSAFER")
+
+              (if is-eps
+                  "-dEPSCrop"
+                  (ly:format "-dDEVICEWIDTHPOINTS=~$" paper-width))
+              (if is-eps
+                  *unspecified*
+                  (ly:format "-dDEVICEHEIGHTPOINTS=~$" paper-height))
+              "-dCompatibilityLevel=1.4"
+              "-dNOPAUSE"
+              "-dBATCH"
+              "-r1200"
+              "-sDEVICE=pdfwrite"
+              (string-append "-sOutputFile=" pdf-name)
+              "-c.setpdfwrite"
+              (string-append "-f" name)))))
 
     (ly:message (_ "Converting to `~a'...") pdf-name)
     (ly:progress "\n")
   (filter (lambda (x) (not (pred? x))) lst))
 
 (define-public (font-name-split font-name)
-  "Return (FONT-NAME . DESIGN-SIZE) from FONT-NAME string or #f."
+  "Return @code{(FONT-NAME . DESIGN-SIZE)} from @var{font-name} string
+or @code{#f}."
   (let ((match (regexp-exec (make-regexp "(.*)-([0-9]*)") font-name)))
     (if (regexp-match? match)
        (cons (match:substring match 1) (match:substring match 2))
 ;; Example of a pango-physical-font
 ;; ("Emmentaler-11" "/home/janneke/vc/lilypond/out/share/lilypond/current/fonts/otf/emmentaler-11.otf" 0)
 (define-public (pango-pf-font-name pango-pf)
-  "Return the font-name of the pango physical font PANGO-PF."
+  "Return the font-name of the pango physical font @var{pango-pf}."
   (list-ref pango-pf 0))
 (define-public (pango-pf-file-name pango-pf)
-  "Return the file-name of the pango physical font PANGO-PF."
+  "Return the file-name of the pango physical font @var{pango-pf}."
   (list-ref pango-pf 1))
 (define-public (pango-pf-fontindex pango-pf)
-  "Return the fontindex of the pango physical font PANGO-PF."
+  "Return the fontindex of the pango physical font @var{pango-pf}."
   (list-ref pango-pf 2))
 
 (define (pango-font-name pango-font)
        "")))
 
 (define-public (define-fonts paper define-font define-pango-pf)
-  "Return a string of all fonts used in PAPER, invoking the functions
-DEFINE-FONT DEFINE-PANGO-PF for producing the actual font definition."
+  "Return a string of all fonts used in @var{paper}, invoking the functions
+@var{define-font} and @var{define-pango-pf} for producing the actual font
+definition."
 
   (let* ((font-list (ly:paper-fonts paper))
         (pango-fonts (filter ly:pango-font? font-list))
index efcfa7bccbd24257348c38ef8b958392d7359c3c..06cc077ce4a1395e206f664c3d3406ea48d9f94e 100644 (file)
 ;;;; along with LilyPond.  If not, see <http://www.gnu.org/licenses/>.
 
 (define-public (construct-chord-elements root duration modifications)
-  " Build a chord on root using modifiers in MODIFICATIONS. NoteEvents
-have duration DURATION.
+  "Build a chord on root using modifiers in @var{modifications}.
+@code{NoteEvents} have duration @var{duration}.
 
-Notes: natural 11 is left from chord if not explicitly specified.
+Notes: Natural 11 is left from chord if not explicitly specified.
 
-Entry point for the parser.
-"
+Entry point for the parser."
   (let* ((flat-mods (flatten-list modifications))
         (base-chord (stack-thirds (ly:make-pitch 0 4 0) the-canonical-chord))
         (complete-chord '())
@@ -33,7 +32,7 @@ Entry point for the parser.
         (start-additions #t))
 
     (define (interpret-inversion chord mods)
-      "Read /FOO part. Side effect: INVERSION is set."
+      "Read /FOO part.  Side effect: INVERSION is set."
       (if (and (> (length mods) 1) (eq? (car mods) 'chord-slash))
          (begin
            (set! inversion (cadr mods))
@@ -41,7 +40,7 @@ Entry point for the parser.
       (interpret-bass chord mods))
 
     (define (interpret-bass chord mods)
-      "Read /+FOO part. Side effect: BASS is set."
+      "Read /+FOO part.  Side effect: BASS is set."
       (if (and (> (length mods) 1) (eq? (car mods) 'chord-bass))
          (begin
            (set! bass (cadr mods))
@@ -61,7 +60,7 @@ Entry point for the parser.
          (interpret-inversion chord mods)))
 
     (define (interpret-additions chord mods)
-      "Interpret additions. TODO: should restrict modifier use?"
+      "Interpret additions.  TODO: should restrict modifier use?"
       (cond ((null? mods) chord)
            ((ly:pitch? (car mods))
             (if (= (pitch-step (car mods)) 11)
@@ -236,7 +235,7 @@ DURATION, and INVERSION."
        '(1 3 5 7 9 11 13)))
 
 (define (stack-thirds upper-step base)
-  "Stack thirds listed in BASE until we reach UPPER-STEP. Add
+  "Stack thirds listed in BASE until we reach UPPER-STEP.  Add
 UPPER-STEP separately."
   (cond ((null? base) '())
        ((> (ly:pitch-steps upper-step) (ly:pitch-steps (car base)))
index 40482cdd00b7ffc53cf5c29fa2f763f4e9f0e2ce..a30036d1afaaeca7c20becf8a5c3ebe3ecc8d4d1 100644 (file)
 
 (define-public (ugh-compat-double-plus-new-chord->markup
                style pitches bass inversion context options)
-  "Entry point for New_chord_name_engraver.
+  "Entry point for @code{New_chord_name_engraver}.
 
 FIXME: func, options/context have changed
- See
-double-plus-new-chord-name.scm for the signature of STYLE.  PITCHES,
-BASS and INVERSION are lily pitches.  OPTIONS is an alist-alist (see
-input/test/dpncnt.ly).
- "
+
+See @file{double-plus-new-chord-name.scm} for the signature of @var{style}.
+@var{pitches}, @var{bass}, and @var{inversion} are lily pitches.
+@var{options} is an alist-alist (see @file{input/test/dpncnt.ly})."
 
   (define (step-nr pitch)
     (let* ((pitch-nr (+ (* 7 (ly:pitch-octave pitch))
index e1d51a85e0ec81a5f7252591223e7803f544c957..696d02fc7af43ab3ae2383f670a51ecc98afde9d 100644 (file)
@@ -36,7 +36,7 @@
 
 ;; todo: naming is confusing: steps  (0 based) vs. steps (1 based).
 (define (pitch-step p)
-  "Musicological notation for an interval. Eg. C to D is 2."
+  "Musicological notation for an interval.  Eg. C to D is 2."
   (+ 1 (ly:pitch-steps p)))
 
 (define (get-step x ps)
           bass-pitch
           lowercase-root?)
 
-    "Format for the given (lists of) pitches. This is actually more
+    "Format for the given (lists of) pitches.  This is actually more
 work than classifying the pitches."
 
     (define (filter-main-name p)
index 06b11784596c609c5b95b64e37ac6afb7a14d01a..79b018992ac34650c879c3c16dfb45f29b914da5 100644 (file)
@@ -60,7 +60,7 @@
        ))))
 
 (define-public (note-name->markup pitch lowercase?)
-  "Return pitch markup for PITCH."
+  "Return pitch markup for @var{pitch}."
   (make-line-markup
    (list
     (make-simple-markup
           (list-ref '("eses" "es" "" "is" "isis") (+ 2 (cdr n-a)))))))))
 
 (define-public ((chord-name->italian-markup re-with-eacute) pitch lowercase?)
-  "Return pitch markup for PITCH, using italian/french note names.
-   If re-with-eacute is set to #t, french 'ré' is returned for D instead of 're'
-"
+  "Return pitch markup for @var{pitch}, using italian/french note names.
+If @var{re-with-eacute} is set to @code{#t}, french `ré' is returned for
+pitch@tie{}D instead of `re'."
+
   (let* ((name (ly:pitch-notename pitch))
          (alt (ly:pitch-alteration pitch)))
     (make-line-markup
index 10dab46f7b21ae9b39ba80864f46926f6cf7bb7f..8718f56104c5288939183b9b02d0cecc27cd6e2c 100644 (file)
@@ -50,8 +50,8 @@
 ;; but let's leave that for future extensions.
 ;;
 (define-public (system-clipped-x-extent system-grob clip-region)
-  "Return the X-extent of the SYSTEM-GROB when clipped with
-CLIP-REGION. Return #f if not appropriate."
+  "Return the X-extent of @var{system-grob} when clipped with
+@var{clip-region}.  Return @code{#f} if not appropriate."
   
   (let*
       ((region-start (car clip-region))
index 5a6e67d2a613a51b26ca066f3c4ff2e4e44547e7..2b1a62e7b46df8548ffeb583ce2a85aca5233c23 100644 (file)
@@ -66,7 +66,7 @@ Each entry in the list is either a symbol or a procedure.
 
 @item symbol
 The symbol is the name of the context in which the following rules are to be
-applied. For example, if @var{context} is @rinternals{Score} then all
+applied.  For example, if @var{context} is @rinternals{Score} then all
 staves share accidentals, and if @var{context} is @rinternals{Staff} then
 all voices in the same staff share accidentals, but staves do not.
 
@@ -92,9 +92,9 @@ The current measure position.
 
 @end table
 
-The procedure returns a pair of booleans. The first states whether an extra
-natural should be added. The second states whether an accidental should be
-printed. @code{(#t . #f)} does not make sense.
+The procedure returns a pair of booleans.  The first states whether an extra
+natural should be added.  The second states whether an accidental should be
+printed.  @code{(#t . #f)} does not make sense.
 
 @end table")
      (autoBeamCheck ,procedure? "A procedure taking three
index e6eb6a8c8d079fafa41028fc7148d497da7b1236..41f5386b45f84dda9549e71e20580f117cce396a 100644 (file)
@@ -25,9 +25,7 @@
   symbol)
 
 ;; put this in an alist?
-(define-public
-  all-user-grob-properties
-
+(define-public all-user-grob-properties
   (map
    (lambda (x)
      (apply define-grob-property x))
@@ -1135,13 +1133,15 @@ right neighbour, encoded as a bit mask.")
 
      (flexa-height ,ly:dimension? "The height of a flexa shape in a ligature
 grob (in @code{staff-space} units).")
+     (flexa-interval ,integer? "The interval spanned by the two notes of a
+flexa shape (1 is a second, 7 is an octave).")
      (flexa-width ,ly:dimension? "The width of a flexa shape in a
 ligature grob in (in @code{staff-space} units).")
+     (ligature-flexa ,boolean? "request joining note to the previous one
+in a flexa.")
 
      (inclinatum ,boolean? "Is this neume an inclinatum?")
 
-     (join-right-amount ,number? "A length used for calculating the
-Y-extent of mensural ligatures.")
 
      (linea ,boolean? "Attach vertical lines to this neume?")
 
index 02160eec64eca2e710bb40db374224a9c617812e..5b234627439fb10a2f7ef3940712d059ebeb8380 100644 (file)
 
     (MensuralLigature
      . (
-       (flexa-width . 2.0)
        (stencil . ,ly:mensural-ligature::print)
        (thickness . 1.4)
        (meta . ((class . Spanner)
 
     (NoteHead
      . (
+       (flexa-width . 2.0)
        (duration-log . ,note-head::calc-duration-log)
        (extra-spacing-height . ,ly:note-head::include-ledger-line-height)
        (glyph-name . ,note-head::calc-glyph-name)
+        (ligature-flexa . #f)
        (stem-attachment . ,ly:note-head::calc-stem-attachment)
        (stencil . ,ly:note-head::print)
        (X-offset . ,ly:note-head::stem-x-shift)
index 0d7e3c451b80d64913cbdcf57333145a1cd2b36c..46767478964ecff3fb1394a3b5f6cd022959196d 100644 (file)
@@ -37,7 +37,8 @@
 ;;;
 
 (define-public (markup->lily-string markup-expr)
-  "Return a string describing, in LilyPond syntax, the given markup expression."
+  "Return a string describing, in LilyPond syntax, the given markup
+expression."
   (define (proc->command proc)
     (let ((cmd-markup (symbol->string (procedure-name proc))))
       (substring cmd-markup 0 (- (string-length cmd-markup)
@@ -968,7 +969,7 @@ Otherwise, return #f."
 ;;; \clef
 (define clef-name-alist #f)
 (define-public (memoize-clef-names clefs)
-  "Initialize `clef-name-alist', if not already set."
+  "Initialize @code{clef-name-alist}, if not already set."
   (if (not clef-name-alist)
       (set! clef-name-alist
             (map (lambda (name+vals)
@@ -977,8 +978,8 @@ Otherwise, return #f."
                  clefs))))
 
 (define-extra-display-method ContextSpeccedMusic (expr parser)
-  "If `expr' is a clef change, return \"\\clef ...\"
-Otherwise, return #f."
+  "If @var{expr} is a clef change, return \"\\clef ...\".
+Otherwise, return @code{#f}."
   (with-music-match (expr (music 'ContextSpeccedMusic
                                 context-type 'Staff
                                 element (music 'SequentialMusic
index 1647a34b49d40cdfa1d665686f56f188ca38f8b0..1c8fef1df92f2d9bbe3ae5bd3fac407a4a003c6c 100644 (file)
              (ly:message (_ "Using `~a' note names...") str))
          (set! pitchnames alist)
          (ly:parser-set-note-names parser alist))
-       (ly:warning (_ "Could not find language `~a'. Ignoring.") str))))
+       (ly:warning (_ "Could not find language `~a'.  Ignoring.") str))))
index 8a86ce64391d986d414e4914267c26eeb1e70493..eb7f85ddc1dc137a7538348888bcbe5f2af4627f 100644 (file)
@@ -20,7 +20,7 @@
 
 (define-public (ly:all-stencil-commands)
   "Return the list of stencil commands that can be
-defined in the output modules (output-*.scm)"
+defined in the output modules (@file{output-*.scm})."
   '(beam
     bezier-sandwich
     blank
@@ -63,7 +63,7 @@ defined in the output modules (output-*.scm)"
 
 (define-public (ly:all-output-backend-commands)
   "Return the list of extra output backend commands that
-are used internally in lily/stencil-interpret.cc."
+are used internally in @file{lily/stencil-interpret.cc}."
   '(color
     combine-stencil
     delay-stencil-evaluation
index 944d9c67a93830a2a6d8a0115af2b54fcfc51346..501e63779a103d7be8a18b797da2941488b1c7c0 100644 (file)
 ;; Utility functions
 
 (define-public (symbol-concatenate . names)
-  "Like string-concatenate, but for symbols"
+  "Like @code{string-concatenate}, but for symbols."
   (string->symbol (apply string-append (map symbol->string names))))
 
 (define-public (function-chain arg function-list)
-  "Applies a list of functions in function list to arg.
-   Each element of function list is structured (cons function '(arg2 arg3 ...))
-   If function takes arguments besides arg, they are provided in function list.
-   For example:
-   @code{guile> (function-chain 1 `((,+ 1) (,- 2) (,+ 3) (,/)))}
-   @code{1/3}"
+  "Applies a list of functions in @var{function-list} to @var{arg}.
+Each element of @var{function-list} is structured @code{(cons function
+'(arg2 arg3 ...))}.  If function takes arguments besides @var{arg}, they
+are provided in @var{function-list}.
+
+Example: Executing @samp{(function-chain 1 `((,+ 1) (,- 2) (,+ 3) (,/)))}
+returns @samp{1/3}."
   (if (null? function-list)
     arg
     (function-chain
index 15dfab1bfbff16241c5c618887f43d4139454274..51b13eb25941f21356691c0a48a59c459e185365 100644 (file)
@@ -41,7 +41,7 @@
 (define-macro (define-display-method music-type vars . body)
   "Define a display method for a music type and store it in the
 `display-methods' property of the music type entry found in the
-`music-name-to-property-table' hash table. Print methods previously
+`music-name-to-property-table' hash table.  Print methods previously
 defined for that music type are lost. 
 Syntax: (define-display-method MusicType (expression parser)
          ...body...))"
@@ -57,9 +57,9 @@ Syntax: (define-display-method MusicType (expression parser)
      method))
 
 (define-macro (define-extra-display-method music-type vars . body)
-  "Add a display method for a music type. A primary display method
+  "Add a display method for a music type.  A primary display method
 is supposed to have been previously defined with `define-display-method'.
-This new method should return a string or #f. If #f is returned, the next
+This new method should return a string or #f.  If #f is returned, the next
 display method will be called."
   `(let* ((type-props (hashq-ref music-name-to-property-table
                                 ',music-type '()))
@@ -82,7 +82,7 @@ display method will be called."
               (ly:music-property expr 'tags))))
 
 (define-public (music->lily-string expr parser)
-  "Print expr, a music expression, in LilyPond syntax"
+  "Print @var{expr}, a music expression, in LilyPond syntax."
   (if (ly:music? expr)
       (let* ((music-type (ly:music-property expr 'name))
             (procs (assoc-ref (hashq-ref music-name-to-property-table
@@ -230,7 +230,7 @@ Generate binding forms by looking for ?var symbol in pattern."
                        elements-list))))
 
 (define-macro (with-music-match music-expr+pattern . body)
-  "If `music-expr' matches `pattern', call `body'. `pattern' should look like:
+  "If `music-expr' matches `pattern', call `body'.  `pattern' should look like:
   '(music <MusicType>
      property value
      property ?var1
@@ -243,8 +243,8 @@ pattern (the name property being the <MusicType> symbol after the `music'
 keyword), then all music expression found in its properties (such as 'element
 or 'elements).
 When ?var is found instead of a property value, ?var is bound that property value,
-as read inside `music-expr'. ?var may also be used to refere to a whole music 
-expression inside an elements list for instance. These bindings are accessible 
+as read inside `music-expr'.  ?var may also be used to refere to a whole music 
+expression inside an elements list for instance.  These bindings are accessible 
 inside body."
   (let ((music-expr (first music-expr+pattern))
        (pattern (second music-expr+pattern))
index d402b7cf249a5b445f27d9166cdb16f9d1ebcba1..197c1c199c2def5b3930c0ecf038f1bb7b1c121f 100644 (file)
@@ -1944,7 +1944,7 @@ and shut.  To see all of the possibilities for all of the keys of a given
 instrument, invoke @code{(print-keys-verbose 'instrument)}.
 
 Lastly, substituting an empty list for the pressed-key alist will result in
-a diagram with all of the keys drawn but none filled. ie...
+a diagram with all of the keys drawn but none filled, for example:
 
 @example
 \\markup \\woodwind-diagram #'oboe #'()
index e4775b5db19a737f4cebeaddbeb8feda405f89ae..b71709def4f8c79fd9e41bde5257c01b1e632687 100644 (file)
@@ -159,7 +159,7 @@ string-to-use).  If QUOTE? is #t, embed table in a @quotation environment."
   name)
 
 (define (ref-ify x)
-  "Return @ref{X}. If mapping ref-ify to a list that needs to be sorted,
+  "Return @ref{X}.  If mapping ref-ify to a list that needs to be sorted,
    sort the list first."
   (string-append "@ref{" x "}"))
 
index 9b65fa75cc48d9414fc00e763f7320d8ccbf0b24..a35be6c391ce44ffc871fe5c15533a18a170751a 100644 (file)
@@ -59,7 +59,7 @@
 
 (define-public (decode-byte-string str)
   "Return vector of glyphname symbols that correspond to string,
-assuming that STR is byte-coded using ENCODING-NAME."
+assuming that @var{str} is byte-coded using latin-1 encoding."
 
   (let* ((len (string-length str))
         (output-vector (make-vector len '.notdef)))
index ae782154e9abb8707c62f1549e79d08d182dcb87..9e1a268e4d54ca8e9f91fc2c9a67589467835cde 100644 (file)
@@ -20,7 +20,7 @@
 
 
 (define-public (no-flag stem-grob)
-  "No flag: Simply return empty stencil"
+  "No flag: Simply return empty stencil."
   empty-stencil)
 
 
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 
 
-(define-public (add-stroke-straight stencil stem-grob dir log stroke-style offset length thickness stroke-thickness)
+(define-public (add-stroke-straight stencil stem-grob dir log stroke-style
+                                    offset length thickness stroke-thickness)
   "Add the stroke for acciaccatura to the given flag stencil.
-  The stroke starts for up-flags at upper-end-of-flag+(0,length/2) and
-  ends at (0, vertical-center-of-flag-end) - (flag-x-width/2, flag-x-width + flag-thickness).
-  Here length is the whole length, while flag-x-width is just the
-  x-extent and thus depends on the angle! Other combinations don't look as
-  good... For down-stems the y-coordinates are simply mirrored."
+The stroke starts for up-flags at `upper-end-of-flag + (0,length/2)'
+and ends at `(0, vertical-center-of-flag-end) -
+(flag-x-width/2, flag-x-width + flag-thickness)'.  Here `length' is the
+whole length, while `flag-x-width' is just the x-extent and thus depends on
+the angle!  Other combinations don't look as good.
+
+For down-stems the y-coordinates are simply mirrored."
   (let* ((start (offset-add offset (cons 0  (* (/ length 2) dir))))
          (end (offset-add (cons 0 (cdr offset))
                           (cons (- (/ (car offset) 2)) (* (- (+ thickness (car offset))) dir))))
       flag-stencil))
 
 (define-public (straight-flag flag-thickness flag-spacing
-                       upflag-angle upflag-length
-                       downflag-angle downflag-length)
-    "Create a stencil for a straight flag.
-     flag-thickness, -spacing are given in staff spaces,
-     *flag-angle is given in degree, *flag-length is given in staff spaces.
-     All lengths will be scaled according to the font size of the note."
+                              upflag-angle upflag-length
+                              downflag-angle downflag-length)
+  "Create a stencil for a straight flag.  @var{flag-thickness} and
+@var{flag-spacing} are given in staff spaces, @var{upflag-angle} and
+@var{downflag-angle} are given in degrees, and @var{upflag-length} and
+@var{downflag-length} are given in staff spaces.
+
+All lengths are scaled according to the font size of the note."
+
   (lambda (stem-grob)
     (let* ((log (ly:grob-property stem-grob 'duration-log))
            (dir (ly:grob-property stem-grob 'direction))
 
 (define-public (modern-straight-flag stem-grob)
   "Modern straight flag style (for composers like Stockhausen, Boulez, etc.).
-   The angles are 18 and 22 degrees and thus smaller than for the ancient style
-   of Bach etc."
+The angles are 18 and 22 degrees and thus smaller than for the ancient style
+of Bach, etc."
   ((straight-flag 0.55 1 -18 1.1 22 1.2) stem-grob))
 
 (define-public (old-straight-flag stem-grob)
-  "Old straight flag style (for composers like Bach). The angles of the flags
-   are both 45 degrees."
+  "Old straight flag style (for composers like Bach).  The angles of the
+flags are both 45 degrees."
   ((straight-flag 0.55 1 -45 1.2 45 1.4) stem-grob))
 
 
 
 (define-public (add-stroke-glyph stencil stem-grob dir stroke-style flag-style)
   "Load and add a stroke (represented by a glyph in the font) to the given
-   flag stencil"
+flag stencil."
   (if (not (string? stroke-style))
     stencil
     ; Otherwise: look up the stroke glyph and combine it with the flag
 
 
 (define-public (retrieve-glyph-flag flag-style dir dir-modifier stem-grob)
-  "Load the correct flag glyph from the font"
+  "Load the correct flag glyph from the font."
   (let* ((log (ly:grob-property stem-grob 'duration-log))
          (font (ly:grob-default-font stem-grob))
          (font-char (string-append "flags." flag-style dir dir-modifier (number->string log)))
 
 
 (define-public (create-glyph-flag flag-style dir-modifier stem-grob)
-  "Create a flag stencil by looking up the glyph from the font"
+  "Create a flag stencil by looking up the glyph from the font."
   (let* ((dir (if (eqv? (ly:grob-property stem-grob 'direction) UP) "u" "d"))
          (flag (retrieve-glyph-flag flag-style dir dir-modifier stem-grob))
          (stroke-style (ly:grob-property stem-grob 'stroke-style)))
 
 (define-public (mensural-flag stem-grob)
   "Mensural flags: Create the flag stencil by loading the glyph from the font.
-   Flags are always aligned with staff lines, so we need to check the end point
-   of the stem: For stems ending on staff lines, use different flags than for
-   notes between staff lines.  The idea is that flags are always vertically
-   aligned with the staff lines, regardless of whether the note head is on a
-   staff line or between two staff lines.  In other words, the inner end of
-   a flag always touches a staff line."
+Flags are always aligned with staff lines, so we need to check the end point
+of the stem: For stems ending on staff lines, use different flags than for
+notes between staff lines.  The idea is that flags are always vertically
+aligned with the staff lines, regardless of whether the note head is on a
+staff line or between two staff lines.  In other words, the inner end of
+a flag always touches a staff line."
 
   (let* ((adjust #t)
          (stem-end (inexact->exact (round (ly:grob-property stem-grob 'stem-end-position))))
 
 
 (define-public ((glyph-flag flag-style) stem-grob)
-  "Simulates the default way of generating flags: look up glyphs
-   flags.style[ud][1234] from the feta font and use it for the flag stencil."
+  "Simulatesthe default way of generating flags: Look up glyphs
+@code{flags.style[ud][1234]} from the feta font and use it for the flag
+stencil."
   (create-glyph-flag flag-style "" stem-grob))
 
 
 
 (define-public (normal-flag stem-grob)
-  "Create a default flag"
+  "Create a default flag."
   (create-glyph-flag "" "" stem-grob))
 
 
 
 (define-public (default-flag stem-grob)
-  "Create a flag stencil for the stem. Its style will be derived from the
-   @code{'flag-style} Stem property. By default, @code{lilypond} uses a
-   C++ Function (which is slightly faster) to do exactly the same as this
-   function. However, if one wants to modify the default flags, this function
-   can be used to obtain the default flag stencil, which can then be modified
-   at will. The correct way to do this is:
+  "Create a flag stencil for the stem.  Its style will be derived from the
+@code{'flag-style} Stem property.  By default, @code{lilypond} uses a
+C++ Function (which is slightly faster) to do exactly the same as this
+function.  However, if one wants to modify the default flags, this function
+can be used to obtain the default flag stencil, which can then be modified
+at will.  The correct way to do this is:
+
 @example
 \\override Stem #'flag = #default-flag
 \\override Stem #'flag-style = #'mensural
index ed0f1307560251cb92294c6b6d76929032892f86..84646d6c3f614e18109540fa1b5ce18ec46518db 100644 (file)
   "Set up music fonts.
 
 Arguments:
- NODE the font tree to modify.
- NAME is the basename for the music font. NAME-DESIGNSIZE.otf should be the music font,
-  NAME-brace.otf should have piano braces.
- DESIGN-SIZE-ALIST is a list of (ROUNDED . DESIGN-SIZE).  ROUNDED is
-   a suffix for font filenames, while DESIGN-SIZE should be the actual
-   design size.  The latter is used for text fonts loaded through
-   pango/fontconfig 
- FACTOR is a size factor relative to the default size that is being used.
-  This is used to select the proper design size for the text fonts.
-"
+@itemize
+@item
+@var{node} is the font tree to modify.
+
+@item
+@var{name} is the basename for the music font.
+@file{@var{name}-<designsize>.otf} should be the music font,
+@file{@var{name}-brace.otf} should have piano braces.
+
+@item
+@var{family} is the family name of the music font.
+
+@item
+@var{design-size-alist} is a list of @code{(rounded . designsize)}.
+@code{rounded} is a suffix for font filenames, while @code{designsize}
+should be the actual design size.  The latter is used for text fonts
+loaded through pango/fontconfig.
+
+@item
+@var{factor} is a size factor relative to the default size that is being
+used.  This is used to select the proper design size for the text fonts.
+@end itemize"
   (for-each
    (lambda (x)
      (add-font node
index b79c1a3f8a5f9419b1d2a043d3df34c60c75877c..18038a61af164ce7963bbf7624859a9214f4dcdd 100644 (file)
     (let* ((dir-name (tmpnam))
           (files '())
           (status 0)
-          (embed #f))
+          (embed #f)
+          (cwd (getcwd)))
       (mkdir dir-name #o700)
-      (set! status (ly:system
-                   (format "cd ~a && fondu -force '~a'" dir-name filename)))
+      (chdir dir-name)
+      (set! status (ly:system (list "fondu" "-force" file-name)))
+      (chdir cwd)
       (set! files (dir-listing dir-name))
       (for-each
        (lambda (f)
 (define-public (dump-stencil-as-EPS-with-bbox paper dump-me filename
                                              load-fonts
                                              bbox)
-  "Create an EPS file from stencil DUMP-ME to FILENAME. BBOX has
-format (left-x, lower-y, right x, up-y).  If LOAD-FONTS set, include
-fonts inline."
+  "Create an EPS file from stencil @var{dump-me} to @var{filename}.
+@var{bbox} has format @code{(left-x, lower-y, right-x, upper-y)}.  If
+@var{load-fonts} set, include fonts inline."
   (define (to-rounded-bp-box box)
     "Convert box to 1/72 inch with rounding to enlarge the box."
     (let* ((scale (ly:output-def-lookup paper 'output-scale))
index 152e43c284fae766de5754b1321fe95ee0ec69eb..558c11ebf679a8067617fcd90c93a0546ed2a7df 100644 (file)
@@ -100,7 +100,7 @@ to end-point."
 
 (define (merge-details key alist-list . default)
   "Return @code{alist-list} entries for @code{key}, in one combined alist.
-There can be two @code{alist-list} entries for a given key. The first
+There can be two @code{alist-list} entries for a given key.  The first
 comes from the override-markup function, the second comes
 from property settings during a regular override.
 This is necessary because some details can be set in one
@@ -363,7 +363,7 @@ baseline at fret coordinate @var{base}, a height of
       "Draw the string lines for a fret diagram with
 @var{string-count} strings and frets as indicated in @var{fret-range}.
 Line thickness is given by @var{th}, fret & string spacing by
-@var{size}.  Orientation is determined by @var{orientation}. "
+@var{size}.  Orientation is determined by @var{orientation}."
 
       (define (helper x)
         (if (null? (cdr x))
@@ -400,7 +400,7 @@ Line thickness is given by @var{th}, fret & string spacing by
       "Draw the fret lines for a fret diagram with
 @var{string-count} strings and frets as indicated in @var{fret-range}.
 Line thickness is given by @var{th}, fret & string spacing by
-@var{size}. Orientation is given by @var{orientation}."
+@var{size}.  Orientation is given by @var{orientation}."
       (define (helper x)
         (if (null? (cdr x))
           (fret-stencil (car x))
index 30fd1bf94361cf4cd9627f14e4d79574a0ba43c4..357618287ae43a2bb550f621364c81685d011029 100644 (file)
@@ -40,16 +40,16 @@ the following pedal should be circled (indicating a change)
 @end table
 
 The function also checks if the string has the typical form of three
-pedals, then the divider and then the remaining four pedals. If not it
-prints out a warning. However, in any case, it will also print each symbol
-in the order as given. This means you can place the divider (even multiple
+pedals, then the divider and then the remaining four pedals.  If not it
+prints out a warning.  However, in any case, it will also print each symbol
+in the order as given.  This means you can place the divider (even multiple
 dividers) anywhere you want, but you'll have to live with the warnings.
 
 The appearance of the diagram can be tweaked inter alia using the size property
 of the TextScript grob (@code{\\override Voice.TextScript #'size = #0.3}) for
 the overall, the thickness property
 (@code{\\override Voice.TextScript #'thickness = #3}) for the line thickness of
-the horizontal line and the divider. The remaining configuration (box sizes,
+the horizontal line and the divider.  The remaining configuration (box sizes,
 offsets and spaces) is done by the harp-pedal-details  list of properties
 (@code{\\override Voice.TextScript #'harp-pedal-details #'box-width = #1}).
 It contains the following settings: @code{box-offset} (vertical shift of the
@@ -164,4 +164,4 @@ divider) and @code{space-after-divider} (box spacing after the divider).
     (if (null? (cdr info))
       (ly:warning "Harp pedal diagram does not contain a divider (usually after third pedal).")
       (if (not (equal? (cdr info) '(3)))
-        (ly:warning "Harp pedal diagram contains dividers at positions ~a. Normally, there is only one divider after the third pedal." (cdr info))))))
+        (ly:warning "Harp pedal diagram contains dividers at positions ~a.  Normally, there is only one divider after the third pedal." (cdr info))))))
index 4fa1605ed29b90811893cf269cdb12957b7c024e..0e2c810da912504b32010ab56219732712c2cf5b 100644 (file)
@@ -84,7 +84,7 @@
 ;; parser <-> output hooks.
 
 (define-public (collect-bookpart-for-book parser book-part)
-  "Toplevel book-part handler"
+  "Toplevel book-part handler."
   (define (add-bookpart book-part)
     (ly:parser-define!
        parser 'toplevel-bookparts
         (score-handler (scorify-music music parser)))))
 
 (define-public (collect-music-for-book parser music)
-  "Top-level music handler"
+  "Top-level music handler."
   (collect-music-aux (lambda (score)
                       (collect-scores-for-book parser score))
                      parser
                     music))
 
 (define-public (collect-book-music-for-book parser book music)
-  "Book music handler"
+  "Book music handler."
   (collect-music-aux (lambda (score)
                       (ly:book-add-score! book score))
                      parser
                     music))
 
 (define-public (scorify-music music parser)
-  "Preprocess MUSIC."
+  "Preprocess @var{music}."
 
   (for-each (lambda (func)
              (set! music (func music parser)))
@@ -262,21 +262,22 @@ bookoutput function"
            (map-alist-vals func (cdr list)))))
 
 (define (map-alist-keys func list)
-  "map FUNC over the keys of an alist LIST, leaving the vals. "
+  "map FUNC over the keys of an alist LIST, leaving the vals."
   (if (null?  list)
       '()
       (cons (cons (func (caar list)) (cdar list))
            (map-alist-keys func (cdr list)))))
 
 (define-public (first-member members lst)
-  "Return first successful MEMBER of member from MEMBERS in LST."
+  "Return first successful member (of member) from @var{members} in
+@var{lst}."
   (if (null? members)
       #f
       (let ((m (member (car members) lst)))
        (if m m (first-member (cdr members) lst)))))
 
 (define-public (first-assoc keys lst)
-  "Return first successful ASSOC of key from KEYS in LST."
+  "Return first successful assoc of key from @var{keys} in @var{lst}."
   (if (null? keys)
       #f
       (let ((k (assoc (car keys) lst)))
@@ -301,10 +302,14 @@ bookoutput function"
   (assoc-crawler key '() alist))
 
 (define-public (map-selected-alist-keys function keys alist)
-  "Returns alist with function applied to all of the values in list keys.
-   For example:
-   @code{guile> (map-selected-alist-keys - '(a b) '((a . 1) (b . -2) (c . 3) (d . 4)))}
-   @code{((a . -1) (b . 2) (c . 3) (d . 4))}"
+  "Return @var{alist} with @var{function} applied to all of the values
+in list @var{keys}.
+
+For example:
+@example
+@code{guile> (map-selected-alist-keys - '(a b) '((a . 1) (b . -2) (c . 3) (d . 4)))}
+@code{((a . -1) (b . 2) (c . 3) (d . 4)}
+@end example"
    (define (map-selected-alist-keys-helper function key alist)
      (map
      (lambda (pair)
@@ -383,7 +388,8 @@ bookoutput function"
   (helper lst 0))
 
 (define-public (count-list lst)
-  "Given lst (E1 E2 .. ) return ((E1 . 1) (E2 . 2) ... )  "
+  "Given @var{lst} as @code{(E1 E2 .. )}, return
+@code{((E1 . 1) (E2 . 2) ... )}."
 
   (define (helper l acc count)
     (if (pair? l)
@@ -394,7 +400,7 @@ bookoutput function"
   (reverse (helper lst '() 1)))
 
 (define-public (list-join lst intermediate)
-  "put INTERMEDIATE  between all elts of LST."
+  "Put @var{intermediate} between all elts of @var{lst}."
 
   (fold-right
    (lambda (elem prev)
@@ -420,7 +426,8 @@ bookoutput function"
   (lset-difference eq? a b))
 
 (define-public (uniq-list lst)
-  "Uniq LST, assuming that it is sorted. Uses equal? for comparisons."
+  "Uniq @var{lst}, assuming that it is sorted.  Uses @code{equal?}
+for comparisons."
 
   (reverse!
    (fold (lambda (x acc)
@@ -433,7 +440,7 @@ bookoutput function"
 
 (define (split-at-predicate pred lst)
   "Split LST into two lists at the first element that returns #f for
-  (PRED previous_element element). Return the two parts as a pair.
+  (PRED previous_element element).  Return the two parts as a pair.
   Example: (split-at-predicate < '(1 2 3 2 1)) ==> ((1 2 3) . (2 1))"
   (if (null? lst)
       (list lst)
@@ -445,9 +452,10 @@ bookoutput function"
             (list lst)))))
 
 (define-public (split-list-by-separator lst pred)
-  "Split LST at each element that satisfies PRED, and return the parts
-  (with the separators removed) as a list of lists. Example:
-  (split-list-by-separator '(a 0 b c 1 d) number?) ==> ((a) (b c) (d))"
+  "Split @var{lst} at each element that satisfies @var{pred}, and return
+the parts (with the separators removed) as a list of lists.  For example,
+executing @samp{(split-list-by-separator '(a 0 b c 1 d) number?)} returns
+@samp{((a) (b c) (d))}."
   (let loop ((result '()) (lst lst))
     (if (and lst (not (null? lst)))
         (loop
@@ -483,7 +491,7 @@ bookoutput function"
   (cons (- expr) expr))
 
 (define-public (interval-length x)
-  "Length of the number-pair X, when an interval"
+  "Length of the number-pair @var{x}, if an interval."
   (max 0 (- (cdr x) (car x))))
 
 (define-public (ordered-cons a b)
@@ -494,14 +502,15 @@ bookoutput function"
   ((if (= dir RIGHT) cdr car) interval))
 
 (define-public (interval-index interval dir)
-  "Interpolate INTERVAL between between left (DIR=-1) and right (DIR=+1)"
+  "Interpolate @var{interval} between between left (@var{dir}=-1) and
+right (@var{dir}=+1)."
 
   (* (+  (interval-start interval) (interval-end interval)
         (* dir (- (interval-end interval) (interval-start interval))))
      0.5))
 
 (define-public (interval-center x)
-  "Center the number-pair X, when an interval"
+  "Center the number-pair @var{x}, if an interval."
   (if (interval-empty? x)
       0.0
       (/ (+ (car x) (cdr x)) 2)))
@@ -599,7 +608,7 @@ bookoutput function"
 (define-public THREE-PI-OVER-TWO (* 3 PI-OVER-TWO))
 
 (define-public (cyclic-base-value value cycle)
-  "Takes a value and modulo-maps it between 0 and base."
+  "Take @var{value} and modulo-maps it between 0 and base @var{cycle}."
   (if (< value 0)
       (cyclic-base-value (+ value cycle) cycle)
       (if (>= value cycle)
@@ -607,17 +616,17 @@ bookoutput function"
           value)))
 
 (define-public (angle-0-2pi angle)
-  "Takes an angle in radians and maps it between 0 and 2pi."
+  "Take @var{angle} (in radians) and maps it between 0 and 2pi."
   (cyclic-base-value angle TWO-PI))
 
 (define-public (angle-0-360 angle)
-  "Takes an angle in radians and maps it between 0 and 2pi."
+  "Take @var{angle} (in degrees) and maps it between 0 and 360 degrees."
   (cyclic-base-value angle 360.0))
 
 (define-public PI-OVER-180  (/ PI 180))
 
 (define-public (degrees->radians angle-degrees)
-  "Convert the given angle from degrees to radians"
+  "Convert the given angle from degrees to radians."
   (* angle-degrees PI-OVER-180))
 
 (define-public (ellipse-radius x-radius y-radius angle)
@@ -630,8 +639,9 @@ bookoutput function"
            (* (sin angle) (sin angle)))))))
 
 (define-public (polar->rectangular radius angle-in-degrees)
-  "Convert polar coordinate @code{radius} and @code{angle-in-degrees}
-   to (x-length . y-length)"
+  "Return polar coordinates (@var{radius}, @var{angle-in-degrees})
+as rectangular coordinates @ode{(x-length . y-length)}."
+
   (let ((complex (make-polar
                     radius
                     (degrees->radians angle-in-degrees))))
@@ -676,14 +686,15 @@ bookoutput function"
                 (ly:number->string (cdr c))))
 
 (define-public (dir-basename file . rest)
-  "Strip suffixes in REST, but leave directory component for FILE."
+  "Strip suffixes in @var{rest}, but leave directory component for
+@var{file}."
   (define (inverse-basename x y) (basename y x))
   (simple-format #f "~a/~a" (dirname file)
                 (fold inverse-basename file rest)))
 
 (define-public (write-me message x)
-  "Return X.  Display MESSAGE and write X.  Handy for debugging,
-possibly turned off."
+  "Return @var{x}.  Display @var{message} and write @var{x}.
+Handy for debugging, possibly turned off."
   (display message) (write x) (newline) x)
 ;;  x)
 
@@ -705,7 +716,7 @@ possibly turned off."
   (cons (f (car x)) (f (cdr x))))
 
 (define-public (list-insert-separator lst between)
-  "Create new list, inserting BETWEEN between elements of LIST"
+  "Create new list, inserting @var{between} between elements of @var{lst}."
   (define (conc x y )
     (if (eq? y #f)
        (list x)
@@ -745,7 +756,7 @@ possibly turned off."
 
 (define-public (binary-search start end getter target-val)
   (_i "Find the index between @var{start} and @var{end} (an integer)
-which will produce the closest match to @var{target-val} when
+which produces the closest match to @var{target-val} if
 applied to function @var{getter}.")
   (if (<= end start)
       start
@@ -771,9 +782,9 @@ applied to function @var{getter}.")
   (string<? (symbol->string (car lst)) (symbol->string (car r))))
 
 (define-public (eval-carefully symbol module . default)
-  "Check if all symbols in expr SYMBOL are reachable
-   in module MODULE. In that case evaluate, otherwise
-   print a warning and set an optional DEFAULT."
+  "Check whether all symbols in expr @var{symbol} are reachable
+in module @var{module}.  In that case evaluate, otherwise
+print a warning and set an optional @var{default}."
   (let* ((unavailable? (lambda (sym)
                          (not (module-defined? module sym))))
         (sym-unavailable (if (pair? symbol)
index 33526d7f35f3f0d48a54cd68277ceacf762f13ea..ac239a7f50d60ae42d0dd3d18ded7051a35c38f0 100644 (file)
 
 (define (ly:alist<? a b)
   "Return #t if the first key of alist A is less than the first key of
-  alist B, using case-sensitive LilyPond sort order. Keys are assumed to
+  alist B, using case-sensitive LilyPond sort order.  Keys are assumed to
   be symbols."
   (ly:string<? (symbol->string (car a))
                (symbol->string (car b))))
 
 (define (ly:alist-ci<? a b)
   "Return #t if the first key of alist A is less than the first key of
-  alist B, using case-insensitive LilyPond sort order. Keys are assumed
+  alist B, using case-insensitive LilyPond sort order.  Keys are assumed
   to be symbols."
   (ly:string-ci<? (symbol->string (car a))
                   (symbol->string (car b))))
index 10573e29a79a47bd1a04266a7b2560a7ec2b0d68..7384d56f9e4b7750da6d3d9162ba562a748e9564 100644 (file)
@@ -228,7 +228,7 @@ messages into errors.")
   format)
 
 (define-public (ergonomic-simple-format dest . rest)
-  "Like ice-9 format, but without the memory consumption."
+  "Like ice-9's @code{format}, but without the memory consumption."
   (if (string? dest)
       (apply simple-format (cons #f (cons dest rest)))
       (apply simple-format (cons dest rest))))
index beeed698388c0a26f861f85280da9271f6b32869..108751e22f590156d607365d69c0a44f0e9e6def 100644 (file)
@@ -210,9 +210,9 @@ interpreted, returns a list of stencils instead of a single one"
                              ,(symbol->string make-markup-name) sig args)))))))
 
 (define-public (make-markup markup-function make-name signature args)
-  " Construct a markup object from MARKUP-FUNCTION and ARGS. Typecheck
-against SIGNATURE, reporting MAKE-NAME as the user-invoked function.
-"
+  "Construct a markup object from @var{markup-function} and @var{args}.
+Typecheck against @var{signature}, reporting @var{make-name} as the
+user-invoked function."
   (let* ((arglen (length args))
         (siglen (length signature))
         (error-msg (if (and (> siglen 0) (> arglen 0))
@@ -367,11 +367,12 @@ Use `markup*' in a \\notemode context."
 ;;;
 
 (define-public (markup-command-signature-ref markup-command)
-  "Return markup-command's signature (the 'markup-signature object property)"
+  "Return @var{markup-command}'s signature (the @code{'markup-signature}
+object property)."
   (object-property markup-command 'markup-signature))
 
 (define-public (markup-command-signature-set! markup-command signature)
-  "Set markup-command's signature (as object property)"
+  "Set @var{markup-command}'s signature (as object property)."
   (set-object-property! markup-command 'markup-signature signature)
   signature)
 
@@ -401,13 +402,16 @@ Use `markup*' in a \\notemode context."
 ;;;;;;;;;;;;;;;;;;;;;;
 ;;; used in parser.yy to map a list of markup commands on markup arguments
 (define-public (map-markup-command-list commands markups)
-  "`markups' being a list of markups, eg (markup1 markup2 markup3),
-and `commands' a list of commands with their scheme arguments, in reverse order,
-eg: ((italic) (raise 4) (bold)), maps the commands on each markup argument, eg:
- ((bold (raise 4 (italic markup1)))
-  (bold (raise 4 (italic markup2)))
-  (bold (raise 4 (italic markup3))))
-"
+  "@var{markups} being a list of markups, for example
+@code{(markup1 markup2 markup3)}, and @var{commands} a list of commands with
+their scheme arguments, in reverse order, for example
+@code{((italic) (raise 4) (bold))}, map the commands on each markup argument,
+for example
+@example
+((bold (raise 4 (italic markup1)))
+ (bold (raise 4 (italic markup2)))
+ (bold (raise 4 (italic markup3))))
+@end example"
   (map-in-order (lambda (arg)
                   (let ((result arg))
                     (for-each (lambda (cmd)
@@ -428,12 +432,12 @@ eg: ((italic) (raise 4) (bold)), maps the commands on each markup argument, eg:
        (object-property x 'markup-list-command)))
 
 (define-public (markup-command-list? x)
-  "Determine if `x' is a markup command list, ie. a list composed of
-a markup list function and its arguments."
+  "Determine whether @var{x} is a markup command list, i.e. a list
+composed of a markup list function and its arguments."
   (and (pair? x) (markup-list-function? (car x))))
 
 (define-public (markup-list? arg)
-  "Return a true value if `x' is a list of markups or markup command lists."
+  "Return @code{#t} if @var{x} is a list of markups or markup command lists."
   (define (markup-list-inner? lst)
     (or (null? lst)
        (and (or (markup? (car lst)) (markup-command-list? (car lst)))
index c6d2d430231d039537f140a1b36b5191ccbbd044..7f26bea0dcbc013ccb67c87bea63f5f136067151 100644 (file)
        instrument-names-alist))
 
 (define-public (percussion? instrument)
-  "returns whether the instrument should use midi channel 9"
+  "Return @code{#t} if the instrument should use MIDI channel 9."
 
   (let* ((inst  (symbol->string instrument))
          (entry (assoc-get inst instrument-names-alist)))
     (and entry (>= entry 32768))))
 
 (define-public (midi-program instrument)
-  "returns the program of the instrument"
+  "Return the program of the instrument."
 
   (let* ((inst  (symbol->string instrument))
          (entry (assoc-get inst instrument-names-alist)))
 (define-public dynamic-default-volume 0.71)
 
 (define-public (alterations-in-key pitch-list)
-  "Count number of sharps minus number of flats"
+  "Count number of sharps minus number of flats."
 
   (* (apply + (map cdr pitch-list)) 2))
 
index 074b9286ed6f373367e40e4494de2f67ad823017..b015c536a6f07fd05e70b55a727f7830d3580621 100644 (file)
@@ -55,8 +55,8 @@
 (define-public (music-map function music)
   "Apply @var{function} to @var{music} and all of the music it contains.
 
-First it recurses over the children, then the function is applied to MUSIC.
-"
+First it recurses over the children, then the function is applied to
+@var{music}."
   (let ((es (ly:music-property music 'elements))
        (e (ly:music-property music 'element)))
     (set! (ly:music-property music 'elements)
@@ -67,7 +67,7 @@ First it recurses over the children, then the function is applied to MUSIC.
     (function music)))
 
 (define-public (music-filter pred? music)
-  "Filter out music expressions that do not satisfy PRED."
+  "Filter out music expressions that do not satisfy @var{pred?}."
 
   (define (inner-music-filter pred? music)
     "Recursive function."
@@ -96,7 +96,8 @@ First it recurses over the children, then the function is applied to MUSIC.
       (make-music 'Music)))      ;must return music.
 
 (define-public (display-music music)
-  "Display music, not done with music-map for clarity of presentation."
+  "Display music, not done with @code{music-map} for clarity of
+presentation."
 
   (display music)
   (display ": { ")
@@ -147,8 +148,9 @@ For instance,
       `(markup ,@(inner-markup->make-markup markup-expression))))
 
 (define-public (music->make-music obj)
-  "Generate a expression that, once evaluated, may return an object equivalent to `obj',
-that is, for a music expression, a (make-music ...) form."
+  "Generate an expression that, once evaluated, may return an object
+equivalent to @var{obj}, that is, for a music expression, a
+@code{(make-music ...)} form."
   (cond (;; markup expression
         (markup? obj)
         (markup-expression->make-markup obj))
@@ -227,9 +229,9 @@ Returns `obj'.
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 
 (define-public (shift-one-duration-log music shift dot)
-  "  add SHIFT to duration-log of 'duration in music and optionally
-  a dot to any note encountered. This scales the music up by a factor
-  2^shift * (2 - (1/2)^dot)"
+  "Add @var{shift} to @code{duration-log} of @code{'duration} in
+@var{music} and optionally @var{dot} to any note encountered.  This
+scales the music up by a factor `2^@var{shift} * (2 - (1/2)^@var{dot})'."
   (let ((d (ly:music-property music 'duration)))
     (if (ly:duration? d)
        (let* ((cp (ly:duration-factor d))
@@ -245,7 +247,8 @@ Returns `obj'.
             music))
 
 (define-public (make-repeat name times main alts)
-  "create a repeat music expression, with all properties initialized properly"
+  "Create a repeat music expression, with all properties initialized
+properly."
   (define (first-note-duration music)
     "Finds the duration of the first NoteEvent by searching depth-first
 through MUSIC."
@@ -302,7 +305,7 @@ through MUSIC."
 ;; clusters.
 
 (define-public (note-to-cluster music)
-  "Replace NoteEvents by ClusterNoteEvents."
+  "Replace @code{NoteEvents} by @code{ClusterNoteEvents}."
   (if (eq? (ly:music-property music 'name) 'NoteEvent)
       (make-music 'ClusterNoteEvent
                  'pitch (ly:music-property music 'pitch)
@@ -316,7 +319,7 @@ through MUSIC."
 ;; repeats.
 
 (define-public (unfold-repeats music)
-  "This function replaces all repeats with unfolded repeats."
+  "Replace all repeats with unfolded repeats."
 
   (let ((es (ly:music-property music 'elements))
        (e (ly:music-property music 'element)))
@@ -360,8 +363,8 @@ through MUSIC."
 ;; property setting music objs.
 
 (define-public (make-grob-property-set grob gprop val)
-  "Make a Music expression that sets GPROP to VAL in GROB. Does a pop first,
-i.e.  this is not an override"
+  "Make a @code{Music} expression that sets @var{gprop} to @var{val} in
+@var{grob}.  Does a pop first, i.e., this is not an override."
   (make-music 'OverrideProperty
              'symbol grob
              'grob-property gprop
@@ -369,14 +372,15 @@ i.e.  this is not an override"
              'pop-first #t))
 
 (define-public (make-grob-property-override grob gprop val)
-  "Make a Music expression that overrides GPROP to VAL in GROB."
+  "Make a @code{Music} expression that overrides @var{gprop} to @var{val}
+in @var{grob}."
   (make-music 'OverrideProperty
              'symbol grob
              'grob-property gprop
              'grob-value val))
 
 (define-public (make-grob-property-revert grob gprop)
-  "Revert the grob property GPROP for GROB."
+  "Revert the grob property @var{gprop} for @var{grob}."
   (make-music 'RevertProperty
              'symbol grob
              'grob-property gprop))
@@ -432,7 +436,7 @@ i.e.  this is not an override"
 
 
 (define-safe-public (context-spec-music m context #:optional id)
-  "Add \\context CONTEXT = ID to M. "
+  "Add \\context CONTEXT = ID to M."
   (let ((cm (make-music 'ContextSpeccedMusic
                        'element m
                        'context-type context)))
@@ -441,7 +445,7 @@ i.e.  this is not an override"
     cm))
 
 (define-public (descend-to-context m context)
-  "Like context-spec-music, but only descending. "
+  "Like @code{context-spec-music}, but only descending."
   (let ((cm (context-spec-music m context)))
     (ly:music-set-property! cm 'descend-only #t)
     cm))
@@ -493,7 +497,7 @@ i.e.  this is not an override"
 
 ;;; Need to keep this definition for \time calls from parser
 (define-public (make-time-signature-set num den)
-  "Set properties for time signature NUM/DEN."
+  "Set properties for time signature @var{num}/@var{den}."
   (make-music 'TimeSignatureMusic
               'numerator num
               'denominator den
@@ -501,9 +505,8 @@ i.e.  this is not an override"
 
 ;;; Used for calls that include beat-grouping setting
 (define-public (set-time-signature num den . rest)
-  "Set properties for time signature @var{num/den}.
-If @var{rest} is present, it is used to set
-@code{beatStructure}."
+  "Set properties for time signature @var{num}/@var{den}.
+If @var{rest} is present, it is used to set @code{beatStructure}."
   (ly:export
    (make-music 'TimeSignatureMusic
               'numerator num
@@ -559,14 +562,14 @@ inside of and outside of chord construct."
           (revert-head-style heads)))))
 
  (define-public (set-mus-properties! m alist)
-  "Set all of ALIST as properties of M."
+  "Set all of @var{alist} as properties of @var{m}."
   (if (pair? alist)
       (begin
        (set! (ly:music-property m (caar alist)) (cdar alist))
        (set-mus-properties! m (cdr alist)))))
 
 (define-public (music-separator? m)
-  "Is M a separator?"
+  "Is @var{m} a separator?"
   (let ((ts (ly:music-property m 'types)))
     (memq 'separator ts)))
 
@@ -574,10 +577,10 @@ inside of and outside of chord construct."
 (define (voicify-list lst number)
   "Make a list of Musics.
 
-   voicify-list :: [ [Music ] ] -> number -> [Music]
-   LST is a list music-lists.
+voicify-list :: [ [Music ] ] -> number -> [Music]
+LST is a list music-lists.
 
-   NUMBER is 0-base, i.e. Voice=1 (upstems) has number 0.
+NUMBER is 0-base, i.e., Voice=1 (upstems) has number 0.
 "
   (if (null? lst)
       '()
@@ -596,7 +599,7 @@ inside of and outside of chord construct."
     ch))
 
 (define-public (voicify-music m)
-  "Recursively split chords that are separated with \\ "
+  "Recursively split chords that are separated with @code{\\\\}."
   (if (not (ly:music? m))
       (ly:error (_ "music expected: ~S") m))
   (let ((es (ly:music-property m 'elements))
@@ -625,11 +628,8 @@ inside of and outside of chord construct."
 
 
 (define-public ((set-output-property grob-name symbol val)  grob grob-c context)
-  "Usage:
-
-\\applyoutput #(set-output-property 'Clef 'extra-offset '(0 . 1))
-
-"
+  "Usage example:
+@code{\\applyoutput #(set-output-property 'Clef 'extra-offset '(0 . 1))}"
   (let ((meta (ly:grob-property grob 'meta)))
     (if (equal? (assoc-get 'name meta) grob-name)
        (set! (ly:grob-property grob symbol) val))))
@@ -637,8 +637,7 @@ inside of and outside of chord construct."
 
 ;;
 (define-public (smart-bar-check n)
-  "Make         a bar check that checks for a specific bar number.
-"
+  "Make a bar check that checks for a specific bar number."
   (let ((m (make-music 'ApplyContext)))
     (define (checker tr)
       (let* ((bn (ly:context-property tr 'currentBarNumber)))
@@ -653,9 +652,8 @@ inside of and outside of chord construct."
 
 
 (define-public (skip->rest mus)
-
-  "Replace MUS by RestEvent of the same duration if it is a
-SkipEvent. Useful for extracting parts from crowded scores"
+  "Replace @var{mus} by @code{RestEvent} of the same duration if it is a
+@code{SkipEvent}.  Useful for extracting parts from crowded scores."
 
   (if  (memq (ly:music-property mus 'name) '(SkipEvent SkipMusic))
    (make-music 'RestEvent 'duration (ly:music-property mus 'duration))
@@ -701,20 +699,20 @@ SkipEvent. Useful for extracting parts from crowded scores"
     nv))
 
 (define (vector-map f v)
-  "Map F over V. This function returns nothing."
+  "Map F over V.  This function returns nothing."
   (do ((n (vector-length v))
        (i 0 (+ i 1)))
       ((>= i n))
     (f (vector-ref v i))))
 
 (define (vector-reverse-map f v)
-  "Map F over V, N to 0 order. This function returns nothing."
+  "Map F over V, N to 0 order.  This function returns nothing."
   (do ((i (- (vector-length v) 1) (- i 1)))
       ((< i 0))
     (f (vector-ref v i))))
 
 (define-public (add-grace-property context-name grob sym val)
-  "Set SYM=VAL for GROB in CONTEXT-NAME. "
+  "Set @var{sym}=@var{val} for @var{grob} in @var{context-name}."
   (define (set-prop context)
     (let* ((where (ly:context-property-where-defined context 'graceSettings))
           (current (ly:context-property where 'graceSettings))
@@ -724,7 +722,7 @@ SkipEvent. Useful for extracting parts from crowded scores"
   (ly:export (context-spec-music (make-apply-context set-prop) 'Voice)))
 
 (define-public (remove-grace-property context-name grob sym)
-  "Remove all SYM for GROB in CONTEXT-NAME. "
+  "Remove all @var{sym} for @var{grob} in @var{context-name}."
   (define (sym-grob-context? property sym grob context-name)
     (and (eq? (car property) context-name)
          (eq? (cadr property) grob)
@@ -778,7 +776,7 @@ Syntax:
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 
 (define-public (cue-substitute quote-music)
-  "Must happen after quote-substitute."
+  "Must happen after @code{quote-substitute}."
 
   (if (vector? (ly:music-property quote-music 'quoted-events))
       (let* ((dir (ly:music-property quote-music 'quoted-voice-direction))
@@ -865,7 +863,7 @@ Syntax:
   music)
 
 (define-public (make-duration-of-length moment)
- "Make duration of the given MOMENT length."
+ "Make duration of the given @code{moment} length."
  (ly:make-duration 0 0
   (ly:moment-main-numerator moment)
   (ly:moment-main-denominator moment)))
@@ -1013,7 +1011,7 @@ then revert skipTypesetting."
 
 (define (check-pitch-against-signature context pitch barnum laziness octaveness)
   "Checks the need for an accidental and a @q{restore} accidental against
-@code{localKeySignature}. The @var{laziness} is the number of measures
+@code{localKeySignature}.  The @var{laziness} is the number of measures
 for which reminder accidentals are used (i.e., if @var{laziness} is zero,
 only cancel accidentals in the same measure; if @var{laziness} is three,
 we cancel accidentals up to three measures after they first appear.
@@ -1088,22 +1086,26 @@ specifies whether accidentals should be canceled in different octaves."
     (cons need-restore need-accidental)))
 
 (define-public ((make-accidental-rule octaveness laziness) context pitch barnum measurepos)
-  "Creates an accidental rule that makes its decision based on the octave of the note
-  and a laziness value.
-  octaveness is either 'same-octave or 'any-octave and defines whether the rule should
-  respond to accidental changes in other octaves than the current. 'same-octave is the
-  normal way to typeset accidentals - an accidental is made if the alteration is different
-  from the last active pitch in the same octave. 'any-octave looks at the last active pitch
-  in any octave.
-  laziness states over how many bars an accidental should be remembered.
-  0 is default - accidental lasts over 0 bar lines, that is, to the end of current measure.
-  A positive integer means that the accidental lasts over that many bar lines.
-  -1 is 'forget immediately', that is, only look at key signature.
-  #t is forever."
+  "Create an accidental rule that makes its decision based on the octave of
+the note and a laziness value.
+
+@var{octaveness} is either @code{'same-octave} or @code{'any-octave} and
+defines whether the rule should respond to accidental changes in other
+octaves than the current.  @code{'same-octave} is the normal way to typeset
+accidentals -- an accidental is made if the alteration is different from the
+last active pitch in the same octave.  @code{'any-octave} looks at the last
+active pitch in any octave.
+
+@var{laziness} states over how many bars an accidental should be remembered.
+@code{0}@tie{}is the default -- accidental lasts over 0@tie{}bar lines, that
+is, to the end of current measure.  A positive integer means that the
+accidental lasts over that many bar lines.  @code{-1} is `forget
+immediately', that is, only look at key signature.  @code{#t} is `forever'."
+
   (check-pitch-against-signature context pitch barnum laziness octaveness))
 
 (define (key-entry-notename entry)
-  "Return the pitch of an entry in localKeySignature. The entry is either of the form
+  "Return the pitch of an entry in localKeySignature.  The entry is either of the form
   '(notename . alter) or '((octave . notename) . (alter barnum . measurepos))."
   (if (number? (car entry))
       (car entry)
@@ -1131,10 +1133,10 @@ specifies whether accidentals should be canceled in different octaves."
       (cadr entry)))
 
 (define-public (find-pitch-entry keysig pitch accept-global accept-local)
-  "Return the first entry in keysig that matches the pitch.
-  accept-global states whether key signature entries should be included.
-  accept-local states whether local accidentals should be included.
-  if no matching entry is found, #f is returned."
+  "Return the first entry in @var{keysig} that matches @var{pitch}.
+@var{accept-global} states whether key signature entries should be included.
+@var{accept-local} states whether local accidentals should be included.
+If no matching entry is found, @var{#f} is returned."
   (if (pair? keysig)
       (let* ((entry (car keysig))
             (entryoct (key-entry-octave entry))
@@ -1149,10 +1151,10 @@ specifies whether accidentals should be canceled in different octaves."
       #f))
 
 (define-public (neo-modern-accidental-rule context pitch barnum measurepos)
-  "an accidental rule that typesets an accidental if it differs from the key signature
-   AND does not directly follow a note on the same staff-line.
-   This rule should not be used alone because it does neither look at bar lines
-   nor different accidentals at the same notename"
+  "An accidental rule that typesets an accidental if it differs from the
+key signature @emph{and} does not directly follow a note on the same
+staff line.  This rule should not be used alone because it does neither
+look at bar lines nor different accidentals at the same note name."
   (let* ((keysig (ly:context-property context 'localKeySignature))
         (entry (find-pitch-entry keysig pitch #t #t)))
     (if (equal? #f entry)
@@ -1168,9 +1170,9 @@ specifies whether accidentals should be canceled in different octaves."
                            (and (equal? entrybn barnum) (equal? entrymp measurepos)))))))))
 
 (define-public (teaching-accidental-rule context pitch barnum measurepos)
-  "an accidental rule that typesets a cautionary accidental
-  if it is included in the key signature AND does not directly follow
-  a note on the same staff-line."
+  "An accidental rule that typesets a cautionary accidental if it is
+included in the key signature @emph{and} does not directly follow a note
+on the same staff line."
   (let* ((keysig (ly:context-property context 'localKeySignature))
         (entry (find-pitch-entry keysig pitch #t #t)))
     (if (equal? #f entry)
@@ -1198,9 +1200,10 @@ specifies whether accidentals should be canceled in different octaves."
    context))
 
 (define-public (set-accidental-style style . rest)
-  "Set accidental style to STYLE. Optionally takes a context argument,
-e.g. 'Staff or 'Voice. The context defaults to Staff, except for piano styles, which
-use GrandStaff as a context. "
+  "Set accidental style to @var{style}.  Optionally take a context
+argument, e.g. @code{'Staff} or @code{'Voice}.  The context defaults
+to @code{Staff}, except for piano styles, which use @code{GrandStaff}
+as a context."
   (let ((context (if (pair? rest)
                     (car rest) 'Staff))
        (pcontext (if (pair? rest)
@@ -1364,7 +1367,7 @@ use GrandStaff as a context. "
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 
 (define-public (skip-of-length mus)
-  "Create a skip of exactly the same length as MUS."
+  "Create a skip of exactly the same length as @var{mus}."
   (let* ((skip
          (make-music
           'SkipEvent
@@ -1373,7 +1376,7 @@ use GrandStaff as a context. "
     (make-event-chord (list (ly:music-compress skip (ly:music-length mus))))))
 
 (define-public (mmrest-of-length mus)
-  "Create a mmrest of exactly the same length as MUS."
+  "Create a multi-measure rest of exactly the same length as @var{mus}."
 
   (let* ((skip
          (make-multi-measure-rest
@@ -1394,8 +1397,7 @@ use GrandStaff as a context. "
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 
 (define-public (extract-named-music music music-name)
-"Return a flat list of all music named @code{music-name}
-from @code{music}."
+  "Return a flat list of all music named @var{music-name} from @var{music}."
    (let ((extracted-list
           (if (ly:music? music)
               (if (eq? (ly:music-property music 'name) music-name)
@@ -1413,12 +1415,12 @@ from @code{music}."
      (flatten-list extracted-list)))
 
 (define-public (event-chord-notes event-chord)
-"Return a list of all notes from @{event-chord}."
+  "Return a list of all notes from @var{event-chord}."
   (filter
     (lambda (m) (eq? 'NoteEvent (ly:music-property m 'name)))
     (ly:music-property event-chord 'elements)))
 
 (define-public (event-chord-pitches event-chord)
-"Return a list of all pitches from @{event-chord}."
+  "Return a list of all pitches from @var{event-chord}."
   (map (lambda (x) (ly:music-property x 'pitch))
        (event-chord-notes event-chord)))
index 400506a8a5f119d84abdeacab8efd7abd876c1e4..f00273add6e236028ade8dffbe917d4f7d8d21d2 100644 (file)
   (pair? (ly:grob-basic-properties grob)))
 
 (define-public (make-stencil-boxer thickness padding callback)
-
   "Return function that adds a box around the grob passed as argument."
   (lambda (grob)
     (box-stencil (callback grob) thickness padding)))
 
 (define-public (make-stencil-circler thickness padding callback)
   "Return function that adds a circle around the grob passed as argument."
-
-  (lambda (grob) (circle-stencil (callback grob) thickness padding)))
+  (lambda (grob)
+    (circle-stencil (callback grob) thickness padding)))
 
 (define-public (print-circled-text-callback grob)
   (grob-interpret-markup grob (make-circle-markup
@@ -121,6 +120,14 @@ and duration-log @var{log}."
      (if (< log 0)
         (string-append (number->string log) "mensural")
         (string-append (number->string log) (symbol->string style))))
+    ((blackpetrucci)
+     (if (< log 0)
+        (string-append (number->string log) "blackmensural")
+        (string-append (number->string log) (symbol->string style))))
+    ((semipetrucci)
+     (if (< log 0)
+        (string-append (number->string log) "semimensural")
+        (string-append (number->string log) "petrucci")))
     ((neomensural)
      (string-append (number->string log) (symbol->string style)))
     (else
index 3003ea81e6ef8c90604c06a63d062b9ba599531b..f20c42f1e1012cea4bd2d7b6142f93d5b3aecbf8 100644 (file)
@@ -45,7 +45,7 @@
 (define (str4 num)
   (if (or (nan? num) (inf? num))
       (begin
-       (ly:warning (_ "Found infinity or nan in output. Substituting 0.0"))
+       (ly:warning (_ "Found infinity or nan in output.  Substituting 0.0"))
        (if (ly:get-option 'strict-infinity-checking)
            (exit 1))
        "0.0")
index 0a60cf4ffd74d724780a26cae91da6dcb780ea82..3132175414123ef86d6f360eccbe8f6296cc99f5 100644 (file)
@@ -63,7 +63,7 @@
   (format "<~S~a>\n" entity (attributes attributes-alist)))
 
 (define-public (eoc entity . attributes-alist)
-  " oc = open/close"
+  "oc = open/close"
   (format "<~S~a/>\n" entity (attributes attributes-alist)))
 
 (define-public (ec entity)
index 8b877024f6f03eef5c709203cb399c6dbce9041d..bc6e2e19448189648db604614c3c3a11e54c598a 100644 (file)
     ))
 
 (define-public (layout-set-absolute-staff-size sz)
-  "Function to be called inside a \\layout{} block to set the staff
-size. SZ is in points"
+  "Set the absolute staff size inside of a @code{\\layout@{@}} block.
+@var{sz} is in points."
   (layout-set-absolute-staff-size-in-module (current-module) sz))
 
 (define-public (layout-set-staff-size sz)
-  "Function to be called inside a \\layout{} block to set the staff
-size. SZ is in points"
+  "Set the staff size inside of a @code{\\layout@{@}} block.
+@var{sz} is in points."
 
   (layout-set-absolute-staff-size (* (eval 'pt (current-module)) sz)))
 
index 88c5d2a5d51c540060de48ef31fe85b50cfeb4db..a731e7459e7e6a38e6f796998d3f3b12b3852122 100644 (file)
@@ -74,6 +74,7 @@
     ("petrucci-c5" . ("clefs.petrucci.c5" 4 0))
     ("petrucci-f3" . ("clefs.petrucci.f" 0 0))
     ("petrucci-f4" . ("clefs.petrucci.f" 2 0))
+    ("petrucci-f5" . ("clefs.petrucci.f" 4 0))
     ("petrucci-f" . ("clefs.petrucci.f" 2 0))
     ("petrucci-g" . ("clefs.petrucci.g" -2 0))))
 
     ("clefs.petrucci.g" . -4)))
 
 (define-public (make-clef-set clef-name)
-  "Generate the clef setting commands for a clef with name CLEF-NAME."
+  "Generate the clef setting commands for a clef with name @var{clef-name}."
   (define (make-prop-set props)
     (let ((m (make-music 'PropertySet)))
       (map (lambda (x) (set! (ly:music-property m (car x)) (cdr x))) props)
          (make-music 'Music)))))
 
 (define-public (make-cue-clef-set clef-name)
-  "Generate the clef setting commands for a cue clef with name CLEF-NAME."
+  "Generate the clef setting commands for a cue clef with name
+@var{clef-name}."
   (define (make-prop-set props)
     (let ((m (make-music 'PropertySet)))
       (map (lambda (x) (set! (ly:music-property m (car x)) (cdr x))) props)
 
 ;; a function to add new clefs at runtime
 (define-public (add-new-clef clef-name clef-glyph clef-position octavation c0-position)
-  "Append the entries for a clef symbol to supported clefs and c0-pitch-alist"
+  "Append the entries for a clef symbol to supported clefs and
+@code{c0-pitch-alist}."
   (set! supported-clefs
         (acons clef-name (list clef-glyph clef-position octavation) supported-clefs))
   (set! c0-pitch-alist
index f124a82f359776402d2a8afe793639b6555465c8..b86392623fddbf3b27ed5a4550e57b4aef5ad528 100644 (file)
@@ -29,7 +29,7 @@
                                                  (string->list (number->string var-idx)))))))))
 
 (define-public (parse-string-result str parser)
-  "Parse `str', which is supposed to contain a music expression."
+  "Parse @var{str}, which is supposed to contain a music expression."
 
   (ly:parser-parse-string
    parser
   (ly:parser-lookup parser 'parseStringResult))
 
 (define-public (read-lily-expression chr port)
-  "Read a #{ lily music expression #} from port and return
-the scheme music expression. The $ character may be used to introduce
-scheme forms, typically symbols. $$ may be used to simply write a `$'
-character."
+  "Read a lilypond music expression enclosed within @code{#@}} and @code{#@}}
+from @var{port} and return the corresponding Scheme music expression.
+The @samp{$} character may be used to introduce Scheme forms, typically
+symbols.  @code{$$} may be used to simply write a @samp{$} character itself."
   (let ((bindings '()))
 
     (define (create-binding! val)
index f5a2feae3ff67367fba5597fbb815ce00417805b..0e72ebe2a057eef1f4284e9c4d69fa3c4e20ee94 100644 (file)
@@ -200,8 +200,9 @@ Voice-state objects
 
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 (define-public (recording-group-emulate music odef)
-  "Interprets music according to odef, but stores all events in a chronological
-list, similar to the Recording_group_engraver in 2.8 and earlier"
+  "Interpret @var{music} according to @var{odef}, but store all events
+in a chronological list, similar to the @code{Recording_group_engraver} in
+LilyPond version 2.8 and earlier."
   (let*
      ((context-list '())
       (now-mom (ly:make-moment 0 0))
@@ -259,7 +260,7 @@ list, similar to the Recording_group_engraver in 2.8 and earlier"
     m))
 
 (define-public (determine-split-list evl1 evl2)
-  "EVL1 and EVL2 should be ascending"
+  "@var{evl1} and @var{evl2} should be ascending."
   (let* ((pc-debug #f)
         (chord-threshold 8)
         (voice-state-vec1 (make-voice-states evl1))
@@ -462,7 +463,7 @@ Only set if not set previously.
            (previous-voice-state vs)))
 
       (define (try-solo type start-idx current-idx)
-       "Find a maximum stretch that can be marked as solo. Only set
+       "Find a maximum stretch that can be marked as solo.  Only set
 the mark when there are no spanners active.
 
       return next idx to analyse.
@@ -497,7 +498,7 @@ the mark when there are no spanners active.
            start-idx))
 
       (define (analyse-moment result-idx)
-       "Analyse 'apart starting at RESULT-IDX. Return next index. "
+       "Analyse 'apart starting at RESULT-IDX.  Return next index."
        (let* ((now-state (vector-ref result result-idx))
               (vs1 (current-voice-state now-state 1))
               (vs2 (current-voice-state now-state 2))
index e310ece1d2c6f505ffa859fb19e7cf309a47c0a1..ff0200729d230881949b1e18aeb8a3a86b5cf985 100644 (file)
 
 
 (define-public (parse-terse-string terse-definition)
-"Parse a fret-diagram-terse definition string @code{terse-definition} and
-return a marking list, which can be used with a fretboard grob."
+  "Parse a @code{fret-diagram-terse} definition string @var{terse-definition}
+and return a marking list, which can be used with a fretboard grob."
    (cdr (fret-parse-terse-definition-string (list '()) terse-definition)))
 
 (define-public (get-chord-shape shape-code tuning base-chord-shapes)
-"Return the chord shape associated with @code{shape-code} and
-@code{tuning} in the hash-table @code{base-chord-shapes}."
+  "Return the chord shape associated with @var{shape-code} and
+@var{tuning} in the hash-table @var{base-chord-shapes}."
   (let ((hash-handle (hash-get-handle base-chord-shapes
                                        (cons shape-code tuning))))
      (if hash-handle
@@ -31,8 +31,9 @@ return a marking list, which can be used with a fretboard grob."
          '())))
 
 (define-public (offset-fret fret-offset diagram-definition)
-"Add @code{fret-offset} to each fret indication in @code{diagram-definition}
-and return the resulting verbose fret-diagram-definition."
+  "Add @var{fret-offset} to each fret indication in
+@var{diagram-definition} and return the resulting verbose
+@code{fret-diagram-definition}."
    (let ((verbose-definition 
            (if (string? diagram-definition)
                (parse-terse-string diagram-definition)
index 4436ea3fbbed95543b4fe83becaf21da8f113f50..17f822247b763286137855573b7bbcc1b90ea658 100644 (file)
@@ -27,6 +27,8 @@
  (lily)
  )
 
+;; FIXME: use backend-library for duplicates and stubs; lilypond-ps2png.scm is no more
+
 (define-public _ gettext)
 
 (define PLATFORM
index 2eb61adb98871b7ea097ec112f7237354e9210ea..9a65d44c8eea934ca42b0248fc4031aea257110d 100644 (file)
 
 
 (define-public (music-property-value? music property value)
-  "Return true iff MUSIC's PROPERTY is equal to VALUE."
+  "Return @code{#t} iff @var{music}'s @var{property} is equal to
+@var{value}."
   (equal? (ly:music-property music property) value))
 
 (define-public (music-name? music name)
-  "Return true iff MUSIC's name is NAME."
+  "Return @code{#t} iff @var{music}'s name is @var{name}."
   (if (list? name)
       (member (ly:music-property music 'name) name)
       (music-property-value? music 'name name)))
 
 (define-public (music-property? music property)
-  "Return true iff MUSIC is a property setter and sets or unsets PROPERTY."
+  "Return @code{#t} iff @var{music} is a property setter and sets
+or unsets @var{property}."
   (and (music-name? music '(PropertySet PropertyUnset))
        (music-property-value? music 'symbol property)))
 
 (define-public (music-has-property? music property)
-  "Return true iff MUSIC contains PROPERTY."
+  "Return @code{#t} iff @var{music} contains @var{property}."
   (not (eq? (ly:music-property music property) '())))
 
 (define-public (property-value music)
-  "Return value of a property setter MUSIC.
-If it unsets the property, return #f."
+  "Return value of a property setter @var{music}.
+If it unsets the property, return @code{#f}."
   (if (music-name? music 'PropertyUnset)
       #f
       (ly:music-property music 'value)))
 
 (define-public (music-elements music)
-  "Return list of all MUSIC's top-level children."
+  "Return list of all @var{music}'s top-level children."
   (let ((elt (ly:music-property music 'element))
         (elts (ly:music-property music 'elements)))
     (if (not (null? elt))
@@ -163,7 +165,7 @@ If it unsets the property, return #f."
         elts)))
 
 (define-public (find-child music predicate)
-  "Find the first node in MUSIC that satisfies PREDICATE."
+  "Find the first node in @var{music} that satisfies @var{predicate}."
   (define (find-child queue)
     (if (null? queue)
         #f
@@ -174,13 +176,13 @@ If it unsets the property, return #f."
   (find-child (list music)))
 
 (define-public (find-child-named music name)
-  "Return the first child in MUSIC that is named NAME."
+  "Return the first child in @var{music} that is named @var{name}."
   (find-child music (lambda (elt) (music-name? elt name))))
 
 (define-public (process-music music function)
-  "Process all nodes of MUSIC (including MUSIC) in the DFS order.
-Apply FUNCTION on each of the nodes.
-If FUNCTION applied on a node returns true, don't process the node's subtree."
+  "Process all nodes of @var{music} (including @var{music}) in the DFS order.
+Apply @var{function} on each of the nodes.  If @var{function} applied on a
+node returns @code{#t}, don't process the node's subtree."
   (define (process-music queue)
     (if (not (null? queue))
         (let* ((elt (car queue))
index c934e4c42934a7b43b3efb6766cb731a332d5c72..64f48cc89df75604f2b1a47b0bf085d2a8624686 100644 (file)
@@ -16,7 +16,8 @@
 ;;;; along with LilyPond.  If not, see <http://www.gnu.org/licenses/>.
 
 (define-public (stack-stencils axis dir padding stils)
-  "Stack stencils STILS in direction AXIS, DIR, using PADDING."
+  "Stack stencils @var{stils} in direction @var{axis}, @var{dir}, using
+@var{padding}."
   (cond
    ((null? stils) empty-stencil)
    ((null? (cdr stils)) (car stils))
@@ -25,7 +26,8 @@
          padding))))
 
 (define-public (stack-stencils-padding-list axis dir padding stils)
-  "Stack stencils STILS in direction AXIS, DIR, using a list of PADDING."
+  "Stack stencils @var{stils} in direction @var{axis}, @var{dir}, using
+a list of @var{padding}."
   (cond
    ((null? stils) empty-stencil)
    ((null? (cdr stils)) (car stils))
          (car padding)))))
 
 (define-public (centered-stencil stencil)
-  "Center stencil @var{stencil} in both the X and Y directions"
+  "Center stencil @var{stencil} in both the X and Y directions."
   (ly:stencil-aligned-to (ly:stencil-aligned-to stencil X CENTER) Y CENTER))
 
 (define-public (stack-lines dir padding baseline stils)
-  "Stack vertically with a baseline-skip."
+  "Stack vertically with a baseline skip."
   (define result empty-stencil)
   (define last-y #f)
   (do
@@ -70,7 +72,7 @@
 
 
 (define-public (bracketify-stencil stil axis thick protrusion padding)
-  "Add brackets around STIL, producing a new stencil."
+  "Add brackets around @var{stil}, producing a new stencil."
 
   (let* ((ext (ly:stencil-extent stil axis))
         (lb (ly:bracket axis ext thick protrusion))
@@ -160,7 +162,7 @@ the more angular the shape of the parenthesis."
     stencil))
 
 (define-public (make-line-stencil width startx starty endx endy)
-  "Make a line stencil of given linewidth and set its extents accordingly"
+  "Make a line stencil of given linewidth and set its extents accordingly."
   (let ((xext (cons (min startx endx) (max startx endx)))
         (yext (cons (min starty endy) (max starty endy))))
     (ly:make-stencil
@@ -180,7 +182,7 @@ the more angular the shape of the parenthesis."
       xext yext))
 
 (define-public (make-circle-stencil radius thickness fill)
-  "Make a circle of radius @var{radius} and thickness @var{thickness}"
+  "Make a circle of radius @var{radius} and thickness @var{thickness}."
   (let*
       ((out-radius (+ radius (/ thickness 2.0))))
 
@@ -190,9 +192,9 @@ the more angular the shape of the parenthesis."
    (cons (- out-radius) out-radius))))
 
 (define-public (make-oval-stencil x-radius y-radius thickness fill)
-  "Make an oval from two Bezier curves, of x radius @var{x-radius},
-    y radius @code{y-radius},
-    and thickness @var{thickness} with fill defined by @code{fill}."
+  "Make an oval from two Bezier curves, of x@tie{}radius @var{x-radius},
+y@tie{}radius @code{y-radius}, and thickness @var{thickness} with fill
+defined by @code{fill}."
   (let*
       ((x-out-radius (+ x-radius (/ thickness 2.0)))
        (y-out-radius (+ y-radius (/ thickness 2.0))) )
@@ -411,8 +413,9 @@ respectively."
         `(,(/ thickness -2) . ,(/ thickness 2))))))
 
 (define-public (make-ellipse-stencil x-radius y-radius thickness fill)
-  "Make an ellipse of x radius @var{x-radius}, y radius @code{y-radius},
-    and thickness @var{thickness} with fill defined by @code{fill}."
+  "Make an ellipse of x@tie{}radius @var{x-radius}, y@tie{}radius
+@code{y-radius}, and thickness @var{thickness} with fill defined by
+@code{fill}."
   (let*
       ((x-out-radius (+ x-radius (/ thickness 2.0)))
        (y-out-radius (+ y-radius (/ thickness 2.0))) )
@@ -424,8 +427,7 @@ respectively."
 
 (define-public (box-grob-stencil grob)
   "Make a box of exactly the extents of the grob.  The box precisely
-encloses the contents.
-"
+encloses the contents."
   (let* ((xext (ly:grob-extent grob grob 0))
         (yext (ly:grob-extent grob grob 1))
         (thick 0.01))
@@ -438,7 +440,7 @@ encloses the contents.
 
 ;; TODO merge this and prev function.
 (define-public (box-stencil stencil thickness padding)
-  "Add a box around STENCIL, producing a new stencil."
+  "Add a box around @var{stencil}, producing a new stencil."
   (let* ((x-ext (interval-widen (ly:stencil-extent stencil 0) padding))
         (y-ext (interval-widen (ly:stencil-extent stencil 1) padding))
         (y-rule (make-filled-box-stencil (cons 0 thickness) y-ext))
@@ -451,7 +453,7 @@ encloses the contents.
     stencil))
 
 (define-public (circle-stencil stencil thickness padding)
-  "Add a circle around STENCIL, producing a new stencil."
+  "Add a circle around @var{stencil}, producing a new stencil."
   (let* ((x-ext (ly:stencil-extent stencil X))
         (y-ext (ly:stencil-extent stencil Y))
         (diameter (max (interval-length x-ext)
@@ -468,7 +470,7 @@ encloses the contents.
 
 (define-public (oval-stencil stencil thickness x-padding y-padding)
   "Add an oval around @code{stencil}, padded by the padding pair,
-   producing a new stencil."
+producing a new stencil."
   (let* ((x-ext (ly:stencil-extent stencil X))
         (y-ext (ly:stencil-extent stencil Y))
          (x-length (+ (interval-length x-ext) x-padding thickness))
@@ -485,8 +487,8 @@ encloses the contents.
                            (interval-center y-ext))))))
 
 (define-public (ellipse-stencil stencil thickness x-padding y-padding)
-  "Add an ellipse around STENCIL, padded by the padding pair,
-   producing a new stencil."
+  "Add an ellipse around @var{stencil}, padded by the padding pair,
+producing a new stencil."
   (let* ((x-ext (ly:stencil-extent stencil X))
         (y-ext (ly:stencil-extent stencil Y))
          (x-length (+ (interval-length x-ext) x-padding thickness))
@@ -507,7 +509,7 @@ encloses the contents.
                            (interval-center y-ext))))))
 
 (define-public (rounded-box-stencil stencil thickness padding blot)
-   "Add a rounded box around STENCIL, producing a new stencil."
+   "Add a rounded box around @var{stencil}, producing a new stencil."
 
   (let* ((xext (interval-widen (ly:stencil-extent stencil 0) padding))
         (yext (interval-widen (ly:stencil-extent stencil 1) padding))
@@ -544,9 +546,9 @@ encloses the contents.
     ))
 
 (define-public (arrow-stencil-maker start? end?)
-  "Returns a function drawing a line from current point to @var{destination},
-   with optional arrows of @var{max-size} on start and end controlled by
-   @var{start?} and @var{end?}."
+  "Return a function drawing a line from current point to @code{destination},
+with optional arrows of @code{max-size} on start and end controlled by
+@var{start?} and @var{end?}."
   (lambda (destination max-size)
   (let*
       ((e_x 1+0i)
index e6141d4836d01d98e6a000894029e57a6338e50f..1b20103ee6b8c6cd1106597bc59e6dc3b2a112dc 100644 (file)
     (cons 'beamExceptions beam-exceptions)))
 
 (define-public (base-fraction time-signature time-signature-settings)
-  "Get @code{baseMoment} fraction value for @code{time-signature} from
-@code{time-signature-settings}."
+  "Get @code{baseMoment} fraction value for @var{time-signature} from
+@var{time-signature-settings}."
    (let ((return-value (get-setting 'baseMoment
                                     time-signature
                                     time-signature-settings)))
          return-value)))
 
 (define-public (beat-structure base-fraction time-signature time-signature-settings)
-  "Get beatStructure value in @code{base-fraction} units
-for @code{time-signature} from
-@code{time-signature-settings}."
+  "Get @code{beatStructure} value in @var{base-fraction} units
+for @var{time-signature} from @var{time-signature-settings}."
   (define (fraction-divide numerator denominator)
     (/ (* (car numerator) (cdr denominator))
        (* (cdr numerator) (car denominator))))
@@ -232,8 +231,8 @@ for @code{time-signature} from
         return-value)))
 
 (define-public (beam-exceptions time-signature time-signature-settings)
-  "Get beamExceptions value for @code{time-signature} from
-@code{time-signature-settings}."
+  "Get @code{beamExceptions} value for @var{time-signature} from
+@var{time-signature-settings}."
    (get-setting 'beamExceptions time-signature time-signature-settings))
 
 
@@ -242,7 +241,7 @@ for @code{time-signature} from
 
 (define (override-property-setting context property setting value)
   "Like the C++ code that executes \\override, but without type
-checking. "
+checking."
   (begin
      (revert-property-setting context property setting)
      (ly:context-set-property!
@@ -252,7 +251,7 @@ checking. "
 
 (define (revert-property-setting context property setting)
   "Like the C++ code that executes \revert, but without type
-checking. "
+checking."
 
   (define (entry-count alist entry-key)
     "Count the number of entries in alist with a key of
@@ -282,8 +281,8 @@ a fresh copy of the list-head is made."
           (revert-member current-value setting)))))
 
 (define-public (override-time-signature-setting time-signature setting)
-  "Override the time signature settings for the context in @var{rest},
-with the new setting alist @var{setting}. "
+  "Override the time signature settings for the context in
+@var{time-signature}, with the new setting alist @var{setting}."
     (context-spec-music
       (make-apply-context
         (lambda (c) (override-property-setting
@@ -302,3 +301,102 @@ with the new setting alist @var{setting}. "
           'timeSignatureSettings
           time-signature)))
     'Timing))
+
+
+
+
+;;;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+;;; Formatting of complex/compound time signatures
+
+(define (insert-markups l m)
+  (let ((ll (reverse l)))
+    (let join-markups ((markups (list (car ll)))
+                       (remaining (cdr ll)))
+      (if (pair? remaining)
+          (join-markups (cons (car remaining) (cons m markups)) (cdr remaining))
+          markups))))
+
+;;; Use a centered-column inside a left-column, because the centered column
+;;; moves its reference point to the center, which the left-column undoes.
+(define (format-time-fraction time-sig-fraction)
+  (let* ((revargs (reverse (map number->string time-sig-fraction)))
+         (den (car revargs))
+         (nums (reverse (cdr revargs))))
+    (make-override-markup '(baseline-skip . 0)
+      (make-number-markup
+        (make-left-column-markup (list
+          (make-center-column-markup (list
+            (make-line-markup (insert-markups nums "+"))
+            den))))))))
+
+(define (format-complex-compound-time time-sig)
+  (make-override-markup '(baseline-skip . 0)
+    (make-number-markup
+      (make-line-markup
+        (insert-markups (map format-time-fraction time-sig)
+                        (make-vcenter-markup "+"))))))
+
+(define-public (format-compound-time time-sig)
+  (cond
+    ((not (pair? time-sig)) (null-markup))
+    ((pair? (car time-sig)) (format-complex-compound-time time-sig))
+    (else (format-time-fraction time-sig))))
+
+
+;;;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+;;; Measure length calculation of (possibly complex) compound time signatures
+
+(define (calculate-time-fraction time-sig-fraction)
+  (let* ((revargs (reverse time-sig-fraction))
+         (den (car revargs))
+         (num (apply + (cdr revargs))))
+    (ly:make-moment num den)))
+
+(define (calculate-complex-compound-time time-sig)
+  (let add-moment ((moment ZERO-MOMENT)
+                   (remaining (map calculate-time-fraction time-sig)))
+    (if (pair? remaining)
+        (add-moment (ly:moment-add moment (car remaining)) (cdr remaining))
+        moment)))
+
+(define-public (calculate-compound-measure-length time-sig)
+  (cond
+    ((not (pair? time-sig)) (ly:make-moment 4 4))
+    ((pair? (car time-sig)) (calculate-complex-compound-time time-sig))
+    (else (calculate-time-fraction time-sig))))
+
+
+;;;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+;;; Base beat length: Use the smallest denominator from all fraction
+
+(define (calculate-compound-base-beat-full time-sig)
+  (apply max (map last time-sig)))
+
+(define-public (calculate-compound-base-beat time-sig)
+  (ly:make-moment 1
+    (cond
+      ((not (pair? time-sig)) 4)
+      ((pair? (car time-sig)) (calculate-compound-base-beat-full time-sig))
+      (else (calculate-compound-base-beat-full (list time-sig))))))
+
+
+;;;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+;;; Beat Grouping
+
+(define (normalize-fraction frac beat)
+  (let* ((thisbeat (car (reverse frac)))
+         (factor (/ beat thisbeat)))
+    (map (lambda (f) (* factor f)) frac)))
+
+(define (beat-grouping-internal time-sig)
+  ;; Normalize to given beat, extract the beats and join them to one list
+  (let* ((beat (calculate-compound-base-beat-full time-sig))
+         (normalized (map (lambda (f) (normalize-fraction f beat)) time-sig))
+         (beats (map (lambda (f) (reverse (cdr (reverse f)))) normalized)))
+    (apply append beats)))
+
+(define-public (calculate-compound-beat-grouping time-sig)
+  (cond
+    ((not (pair? time-sig)) '(2 . 2))
+    ((pair? (car time-sig)) (beat-grouping-internal time-sig))
+    (else (beat-grouping-internal (list time-sig)))))
index 31f5a2b38c617bf3922774f5af91605a507d20bc..d0dde63bdfb8a8c244f1e60b20e6f17f37d94d4c 100644 (file)
 
 (define-public ((marked-up-headfoot what-odd what-even)
                 layout scopes page-number is-last-bookpart is-bookpart-last-page)
-
-  "Read variables WHAT-ODD, WHAT-EVEN from LAYOUT, and interpret them
-as markup. The PROPS argument will include variables set in SCOPES and
-page:is-bookpart-last-page, page:is-last-bookpart, page:page-number-string
-and page:page-number
+  "Read variables @var{what-odd}, @var{what-even} from @var{layout},
+and interpret them as markup.  The @var{props} argument will include
+variables set in @var{scopes} and @code{page:is-bookpart-last-page},
+@code{page:is-last-bookpart}, @code{page:page-number-string}, and
+@code{page:page-number}.
 
   (define (get sym)
     (ly:output-def-lookup layout sym))
@@ -73,10 +73,9 @@ and page:page-number"
        (get what-odd))))
 
 (define-public ((marked-up-title what) layout scopes)
-  "Read variables WHAT from SCOPES, and interpret it as markup. The
-PROPS argument will include variables set in SCOPES (prefixed with
-`header:'
-"
+  "Read variables @var{what} from @var{scopes}, and interpret it as markup.
+The @var{props} argument will include variables set in @var{scopes} (prefixed
+with `header:'."
   
   (define (get sym)
     (let ((x (ly:modules-lookup scopes sym)))
index d3f5fc4f02f7da12a70e05fa8f78d57994e29f77..f1d2e76d2e080ff53fa47d93acc34a0c1f1d7f24 100644 (file)
@@ -231,7 +231,7 @@ is then separated.
   (string-append "</" (symbol->string name) ">"))
 
 (define-public (music-to-xml music port)
-  "Dump XML-ish stuff to PORT."
+  "Dump XML-ish stuff to @var{port}."
 
   ;; dtd contains # -- This confuses tex during make doc.
   ;;
@@ -242,7 +242,7 @@ is then separated.
   (display (close-tag 'music) port))
 
 (define-public (music-to-musicxml music port)
-  "Dump MusicXML-ish stuff to PORT."
+  "Dump MusicXML-ish stuff to @var{port}."
 
   ;; dtd contains # -- This confuses tex during make doc.
   ;;
index 87cdbd4c2e475edda0f34e14746435f82be3d6a8..f6f24734e47425afbfd002276279c1d372adb5f0 100644 (file)
 (define-public
   (determine-frets context notes specified-info . rest)
   "Determine string numbers and frets for playing @var{notes}
-as a chord, given specified information  @var{specified-info}.
+as a chord, given specified information @var{specified-info}.
 @var{specified-info} is a list with two list elements,
-specified strings @var{defined-strings} and
-specified fingerings @var{defined-fingers}.  Only a fingering of
-will affect the fret selection, as it specifies an open string.
-If @var{defined-strings} is @code{'()}, the context property
+specified strings @code{defined-strings} and
+specified fingerings @code{defined-fingers}.  Only a fingering of@tie{}0
+will affect the fret selection, as it specifies an open string.
+If @code{defined-strings} is @code{'()}, the context property
 @code{defaultStrings} will be used as a list of defined strings.
 Will look for predefined fretboards if @code{predefinedFretboardTable}
 is not @code {#f}.  If @var{rest} is present, it contains the
-FretBoard grob, and a fretboard will be
-created.  Otherwise, a list of (string fret finger) lists will
-be returned)."
+@code{FretBoard} grob, and a fretboard will be
+created.  Otherwise, a list of @code{(string fret finger)} lists will
+be returned."
 
   ;;  helper functions
 
index a1c26549ad35a7ff0c8d1b7b370e7b1e1a5b53ec..97a53694a290597d3949d945eda8b03c40e97118 100644 (file)
@@ -148,20 +148,21 @@ translations = {
         'Changes': '変更点',
 
         #TODO
-        'Extending': 0,
+        'Extending': '拡張',
         'Internals': '内部リファレンス',
-        'Contributor': 0,
+        'Contributor': '貢献者向けガイド',
 
-        ' (split HTML)': 0,
-        ' (big HTML)': 0,
+# keep the spaces!
+        ' (split HTML)': ' (ページ毎に分割された HTML)',
+        ' (big HTML)': ' (1 つの大きな HTML)',
 
-        'Regression tests for ': 0,
-        'PDF of regtests for ': 0,
-        'MusicXML Regression tests for ': 0,
-        'PDF of MusicXML regtests for ': 0,
+        'Regression tests for ': '回帰テスト バージョン ',
+        'PDF of regtests for ': '回帰テスト (PDF 版) バージョン ',
+        'MusicXML Regression tests for ': 'MusicXML 回帰テスト バージョン ',
+        'PDF of MusicXML regtests for ': 'MusicXML 回帰テスト (PDF 版) バージョン ',
 
-        'Doc tarball for ': 0,
-        ' (did not exist in 2.12)': 0,
+        'Doc tarball for ': 'ドキュメント アーカイブ バージョン ',
+        ' (did not exist in 2.12)': ' (バージョン 2.12 には存在しません)',
 
         },
     'nl': {
index d4e8c4baf10a7bc2146f0fe8696ac0123cf22fc8..91cf384d5b5ade67b072c96b52433e3ddfaa1206 100644 (file)
@@ -32,7 +32,7 @@ translations = {
         'Other languages': 'Altre lingue',
         },
     'ja': {
-        'English': 'Japanese',
+        'English': '日本語',
         'Other languages': '他の言語',
         },
     'nl': {
index b03e1a82eaea58ce5204892597f15362d5f006c9..9ce050b0a7e892621fe2c216903cd7b05249839d 100644 (file)
@@ -5,7 +5,7 @@
 # This file is part of LilyPond, the GNU music typesetter.
 #
 # Copyright (C) 1998--2011  Han-Wen Nienhuys <hanwen@xs4all.nl>
-#                 Jan Nieuwenhuizen <janneke@gnu.org>
+#                           Jan Nieuwenhuizen <janneke@gnu.org>
 #
 # LilyPond is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
@@ -62,7 +62,7 @@ start_quant_clocks = 0
 
 duration_quant_clocks = 0
 allowed_tuplet_clocks = []
-
+bar_max = 0
 
 ################################################################
 
@@ -87,7 +87,7 @@ def warranty ():
 
 %s
 %s
-''' % ( _ ('Copyright (c) %s by') % '2001--2011',
+''' % ( _ ('Copyright (c) %s by') % '1998--2011',
         '\n  '.join (authors),
         _ ('Distributed under terms of the GNU General Public License.'),
         _ ('It comes with NO WARRANTY.')))
@@ -97,7 +97,7 @@ def progress (s):
 
 def warning (s):
     progress (_ ("warning: ") + s)
-        
+
 def error (s):
     progress (_ ("error: ") + s)
     raise Exception (_ ("Exiting... "))
@@ -119,7 +119,7 @@ class Duration:
         if clocks <= 0:
             self.clocks = duration_quant_clocks
         (self.dur, self.num, self.den) = self.dur_num_den (clocks)
-        
+
     def dur_num_den (self, clocks):
         for i in range (len (allowed_tuplet_clocks)):
             if clocks == allowed_tuplet_clocks[i]:
@@ -143,7 +143,7 @@ class Duration:
                 s = '%d*%d' % (self.dur, self.num)
         else:
             s = '%d*%d/%d' % (self.dur, self.num, self.den)
-            
+
         global reference_note
         reference_note.duration = self
 
@@ -246,10 +246,10 @@ class Note:
             n = 6; a = 1; o = o - 1
 
         return (o, n, a)
-        
+
     def __repr__ (self):
         s = chr ((self.notename + 2)  % 7 + ord ('a'))
-        return 'Note(%s %s)' % (s, self.duration.dump())
+        return 'Note(%s %s)' % (s, self.duration.dump ())
 
     def dump (self, dump_dur = 1):
         global reference_note
@@ -260,25 +260,25 @@ class Note:
         else:
             delta = self.pitch - reference_note.pitch
             commas = sign (delta) * (abs (delta) / 12)
-            if ((sign (delta) \
-              * (self.notename - reference_note.notename) + 7) \
-              % 7 >= 4) \
-              or ((self.notename == reference_note.notename) \
-                and (abs (delta) > 4) and (abs (delta) < 12)):
+            if (((sign (delta)
+                  * (self.notename - reference_note.notename) + 7)
+                 % 7 >= 4)
+                or ((self.notename == reference_note.notename)
+                    and (abs (delta) > 4) and (abs (delta) < 12))):
                 commas = commas + sign (delta)
-            
+
         if commas > 0:
             s = s + "'" * commas
         elif commas < 0:
             s = s + "," * -commas
 
         ## FIXME: compile fix --jcn
-        if dump_dur and (global_options.explicit_durations \
-         or self.duration.compare (reference_note.duration)):
+        if (dump_dur and (global_options.explicit_durations
+                          or self.duration.compare (reference_note.duration))):
             s = s + self.duration.dump ()
 
         reference_note = self
-        
+
         # TODO: move space
         return s + ' '
 
@@ -294,7 +294,7 @@ class Time:
 
     def __repr__ (self):
         return 'Time(%d/%d)' % (self.num, self.den)
-    
+
     def dump (self):
         global time
         time = self
@@ -307,12 +307,12 @@ class Tempo:
 
     def __repr__ (self):
         return 'Tempo(%d)' % self.bpm ()
-    
+
     def bpm (self):
         return 4 * 60 / self.seconds_per_1
-    
+
     def dump (self):
-        return '\n  ' + '\\tempo 4 = %d ' % (self.bpm()) + '\n  '
+        return '\n  ' + '\\tempo 4 = %d ' % (self.bpm ()) + '\n  '
 
 class Clef:
     clefs = ('"bass_8"', 'bass', 'violin', '"violin^8"')
@@ -321,7 +321,7 @@ class Clef:
 
     def __repr__ (self):
         return 'Clef(%s)' % self.clefs[self.type]
-    
+
     def dump (self):
         return '\n  \\clef %s\n  ' % self.clefs[self.type]
 
@@ -346,7 +346,7 @@ class Key:
                 k = (ord ('cfbeadg'[self.flats % 7]) - ord ('a') - 2 -2 * self.minor + 7) % 7
             else:
                 k = (ord ('cgdaebf'[self.sharps % 7]) - ord ('a') - 2 -2 * self.minor + 7) % 7
+
             if not self.minor:
                 name = chr ((k + 2) % 7 + ord ('a'))
             else:
@@ -386,7 +386,7 @@ class Text:
         'LYRIC',
         'MARKER',
         'CUE_POINT',)
-    
+
     def __init__ (self, type, text):
         self.clocks = 0
         self.type = type
@@ -397,8 +397,8 @@ class Text:
         if self.type == midi.LYRIC:
             s = '"%s"' % self.text
             d = Duration (self.clocks)
-            if global_options.explicit_durations \
-             or d.compare (reference_note.duration):
+            if (global_options.explicit_durations
+                or d.compare (reference_note.duration)):
                 s = s + Duration (self.clocks).dump ()
             s = s + ' '
         else:
@@ -412,9 +412,9 @@ class Text:
 
 def split_track (track):
     chs = {}
-    for i in range(16):
+    for i in range (16):
         chs[i] = []
-        
+
     for e in track:
         data = list (e[1])
         if data[0] > 0x7f and data[0] < 0xf0:
@@ -452,7 +452,7 @@ def end_note (pitches, notes, t, e):
         (lt, vel) = pitches[e]
         del pitches[e]
 
-        i = len (notes) - 1 
+        i = len (notes) - 1
         while i > 0:
             if notes[i][0] > lt:
                 i = i -1
@@ -484,20 +484,20 @@ def events_on_channel (channel):
             t = quantise_clocks (t, start_quant_clocks)
 
 
-        if e[1][0] == midi.NOTE_OFF \
-         or (e[1][0] == midi.NOTE_ON and e[1][2] == 0):
+        if (e[1][0] == midi.NOTE_OFF
+            or (e[1][0] == midi.NOTE_ON and e[1][2] == 0)):
             end_note (pitches, notes, t, e[1][1])
-            
+
         elif e[1][0] == midi.NOTE_ON:
             if not pitches.has_key (e[1][1]):
                 pitches[e[1][1]] = (t, e[1][2])
-                
+
         # all include ALL_NOTES_OFF
-        elif e[1][0] >= midi.ALL_SOUND_OFF \
-          and e[1][0] <= midi.POLY_MODE_ON:
+        elif (e[1][0] >= midi.ALL_SOUND_OFF
+          and e[1][0] <= midi.POLY_MODE_ON):
             for i in pitches:
                 end_note (pitches, notes, t, i)
-                
+
         elif e[1][0] == midi.META_EVENT:
             if e[1][1] == midi.END_OF_TRACK:
                 for i in pitches:
@@ -511,7 +511,7 @@ def events_on_channel (channel):
                 events.append ((t, Tempo (seconds_per_1)))
             elif e[1][1] == midi.TIME_SIGNATURE:
                 (num, dur, clocks4, count32) = map (ord, e[1][2])
-                den = 2 ** dur 
+                den = 2 ** dur
                 events.append ((t, Time (num, den)))
             elif e[1][1] == midi.KEY_SIGNATURE:
                 (alterations, minor) = map (ord, e[1][2])
@@ -530,16 +530,16 @@ def events_on_channel (channel):
                 # Better do Note.calc () at dump time?
                 global_options.key = k
 
-            elif e[1][1] == midi.LYRIC \
-              or (global_options.text_lyrics and e[1][1] == midi.TEXT_EVENT):
+            elif (e[1][1] == midi.LYRIC
+                  or (global_options.text_lyrics and e[1][1] == midi.TEXT_EVENT)):
                 if last_lyric:
                     last_lyric.clocks = t - last_time
                     events.append ((last_time, last_lyric))
                 last_time = t
                 last_lyric = Text (midi.LYRIC, e[1][2])
 
-            elif e[1][1] >= midi.SEQUENCE_NUMBER \
-              and e[1][1] <= midi.CUE_POINT:
+            elif (e[1][1] >= midi.SEQUENCE_NUMBER
+                  and e[1][1] <= midi.CUE_POINT):
                 events.append ((t, Text (e[1][1], e[1][2])))
             else:
                 if global_options.verbose:
@@ -556,7 +556,7 @@ def events_on_channel (channel):
         last_lyric.clocks = clocks_per_4
         events.append ((last_time, last_lyric))
         last_lyric = 0
-        
+
     i = 0
     while len (notes):
         if i < len (events) and notes[0][0] >= events[i][0]:
@@ -575,17 +575,17 @@ def unthread_notes (channel):
         todo = []
         for e in channel:
             t = e[0]
-            if e[1].__class__ == Note \
-             and ((t == start_busy_t \
-                and e[1].clocks + t == end_busy_t) \
-              or t >= end_busy_t):
+            if (e[1].__class__ == Note
+                and ((t == start_busy_t
+                      and e[1].clocks + t == end_busy_t)
+                     or t >= end_busy_t)):
                 thread.append (e)
                 start_busy_t = t
                 end_busy_t = t + e[1].clocks
-            elif e[1].__class__ == Time \
-              or e[1].__class__ == Key \
-              or e[1].__class__ == Text \
-              or e[1].__class__ == Tempo:
+            elif (e[1].__class__ == Time
+                  or e[1].__class__ == Key
+                  or e[1].__class__ == Text
+                  or e[1].__class__ == Tempo):
                 thread.append (e)
             else:
                 todo.append (e)
@@ -598,12 +598,12 @@ def gcd (a,b):
     if b == 0:
         return a
     c = a
-    while c: 
+    while c:
         c = a % b
         a = b
         b = c
     return a
-    
+
 def dump_skip (skip, clocks):
     return skip + Duration (clocks).dump () + ' '
 
@@ -629,7 +629,7 @@ def dump_chord (ch):
             s = s + i.dump (dump_dur = 0 )
         s = s + '>'
 
-        s = s + notes[0].duration.dump() + ' '
+        s = s + notes[0].duration.dump () + ' '
         reference_note = r
     return s
 
@@ -638,17 +638,17 @@ def dump_bar_line (last_bar_t, t, bar_count):
     bar_t = time.bar_clocks ()
     if t - last_bar_t >= bar_t:
         bar_count = bar_count + (t - last_bar_t) / bar_t
-        
+
         if t - last_bar_t == bar_t:
             s = '|\n  %% %d\n  ' % bar_count
             last_bar_t = t
         else:
             # urg, this will barf at meter changes
             last_bar_t = last_bar_t + (t - last_bar_t) / bar_t * bar_t
-            
+
     return (s, last_bar_t, bar_count)
 
-            
+
 def dump_channel (thread, skip):
     global reference_note, time
 
@@ -668,9 +668,9 @@ def dump_channel (thread, skip):
         else:
             if ch:
                 chs.append ((last_e[0], ch))
-                
+
             ch = [e[1]]
-            
+
         last_e = e
 
     if ch:
@@ -679,9 +679,9 @@ def dump_channel (thread, skip):
     last_t = 0
     last_bar_t = 0
     bar_count = 1
-    
+
     lines = ['']
-    for ch in chs: 
+    for ch in chs:
         t = ch[0]
 
         i = lines[-1].rfind ('\n') + 1
@@ -689,25 +689,31 @@ def dump_channel (thread, skip):
             lines.append ('')
 
         if t - last_t > 0:
-            lines[-1] = lines[-1] + dump_skip (skip, t-last_t)
+            d = t - last_t
+            if bar_max and t > time.bar_clocks () * bar_max:
+                d = time.bar_clocks () * bar_max - last_t
+            lines[-1] = lines[-1] + dump_skip (skip, d)
         elif t - last_t < 0:
             errorport.write ('BUG: time skew')
 
         (s, last_bar_t, bar_count) = dump_bar_line (last_bar_t,
                               t, bar_count)
+
+        if bar_max and bar_count > bar_max:
+            break
+
         lines[-1] = lines[-1] + s
-        
         lines[-1] = lines[-1] + dump_chord (ch[1])
 
         clocks = 0
         for i in ch[1]:
             if i.clocks > clocks:
                 clocks = i.clocks
-                
+
         last_t = t + clocks
-        
+
         (s, last_bar_t, bar_count) = dump_bar_line (last_bar_t,
-                              last_t, bar_count)
+                                                    last_t, bar_count)
         lines[-1] = lines[-1] + s
 
     return '\n  '.join (lines) + '\n'
@@ -771,10 +777,10 @@ def dump_track (channels, n):
 def thread_first_item (thread):
     for chord in thread:
         for event in chord:
-            if (event[1].__class__ == Note 
-              or (event[1].__class__ == Text 
+            if (event[1].__class__ == Note
+              or (event[1].__class__ == Text
                 and event[1].type == midi.LYRIC)):
-                
+
               return event[1]
     return None
 
@@ -802,20 +808,21 @@ def guess_clef (track):
         return Clef (3)
     else:
         return Clef (2)
-    
+
 
 def convert_midi (in_file, out_file):
     global clocks_per_1, clocks_per_4, key
     global start_quant_clocks
-    global  duration_quant_clocks
+    global duration_quant_clocks
     global allowed_tuplet_clocks
 
     str = open (in_file, 'rb').read ()
-    midi_dump = midi.parse (str)
-    
+    clocks_max = bar_max * clocks_per_1 * 2
+    midi_dump = midi.parse (str, clocks_max)
+
     clocks_per_1 = midi_dump[0][1]
     clocks_per_4 = clocks_per_1 / 4
-    
+
     if global_options.start_quant:
         start_quant_clocks = clocks_per_1 / global_options.start_quant
 
@@ -824,7 +831,10 @@ def convert_midi (in_file, out_file):
 
     allowed_tuplet_clocks = []
     for (dur, num, den) in global_options.allowed_tuplets:
-        allowed_tuplet_clocks.append (clocks_per_1 / den)
+        allowed_tuplet_clocks.append (clocks_per_1 / dur * num / den)
+
+    if global_options.verbose:
+        print 'allowed tuplet clocks:', allowed_tuplet_clocks
 
     tracks = []
     for t in midi_dump[1]:
@@ -833,19 +843,19 @@ def convert_midi (in_file, out_file):
 
     tag = '%% Lily was here -- automatically converted by %s from %s' % ( program_name, in_file)
 
-    
+
     s = ''
     s = tag + '\n\\version "2.7.38"\n\n'
     for i in range (len (tracks)):
         s = s + dump_track (tracks[i], i)
 
     s = s + '\n\\score {\n  <<\n'
-    
+
     i = 0
     for t in tracks:
         track = track_name (i)
         item = track_first_item (t)
-        
+
         if item and item.__class__ == Note:
             s = s + '    \\context Staff=%s \\%s\n' % (track, track)
         elif item and item.__class__ == Text:
@@ -872,44 +882,46 @@ def get_option_parser ():
 
     p.add_option ('-a', '--absolute-pitches',
            action='store_true',
-           help=_ ("print absolute pitches"))
+           help=_ ('print absolute pitches'))
     p.add_option ('-d', '--duration-quant',
-           metavar= _("DUR"),
-           help=_ ("quantise note durations on DUR"))
+           metavar=_ ('DUR'),
+           help=_ ('quantise note durations on DUR'))
     p.add_option ('-e', '--explicit-durations',
            action='store_true',
-           help=_ ("print explicit durations"))
-    p.add_option("-h", "--help",
-                 action="help",
-                 help=_ ("show this help and exit"))
-    p.add_option('-k', '--key', help=_ ("set key: ALT=+sharps|-flats; MINOR=1"),
-          metavar=_ ("ALT[:MINOR]"),
+           help=_ ('print explicit durations'))
+    p.add_option('-h', '--help',
+                 action='help',
+                 help=_ ('show this help and exit'))
+    p.add_option('-k', '--key', help=_ ('set key: ALT=+sharps|-flats; MINOR=1'),
+          metavar=_ ('ALT[:MINOR]'),
           default='0'),
-    p.add_option ('-o', '--output', help=_ ("write output to FILE"),
-           metavar=_("FILE"),
+    p.add_option ('-o', '--output', help=_ ('write output to FILE'),
+           metavar=_ ('FILE'),
            action='store')
-    p.add_option ('-s', '--start-quant',help= _ ("quantise note starts on DUR"),
-           metavar=_ ("DUR"))
+    p.add_option ('-p', '--preview', help=_ ('preview of first 4 bars'),
+           action='store_true')
+    p.add_option ('-s', '--start-quant',help= _ ('quantise note starts on DUR'),
+           metavar=_ ('DUR'))
     p.add_option ('-t', '--allow-tuplet',
-           metavar=_ ("DUR*NUM/DEN"),
-           action = "append",
-           dest="allowed_tuplets",
-           help=_ ("allow tuplet durations DUR*NUM/DEN"),
+           metavar=_ ('DUR*NUM/DEN'),
+           action = 'append',
+           dest='allowed_tuplets',
+           help=_ ('allow tuplet durations DUR*NUM/DEN'),
            default=[])
-    p.add_option ('-V', '--verbose', help=_ ("be verbose"),
+    p.add_option ('-V', '--verbose', help=_ ('be verbose'),
            action='store_true'
            ),
-    p.version = "midi2ly (LilyPond) @TOPLEVEL_VERSION@"
-    p.add_option("--version",
-                 action="version",
-                 help=_ ("show version number and exit"))
-    p.add_option ('-w', '--warranty', help=_ ("show warranty and copyright"),
+    p.version = 'midi2ly (LilyPond) @TOPLEVEL_VERSION@'
+    p.add_option ('--version',
+                 action='version',
+                 help=_ ('show version number and exit'))
+    p.add_option ('-w', '--warranty', help=_ ('show warranty and copyright'),
            action='store_true',
            ),
-    p.add_option ('-x', '--text-lyrics', help=_ ("treat every text as a lyric"),
+    p.add_option ('-x', '--text-lyrics', help=_ ('treat every text as a lyric'),
            action='store_true')
 
-    p.add_option_group (ly.display_encode (_ ("Examples")),
+    p.add_option_group (ly.display_encode (_ ('Examples')),
               description = r'''
   $ midi2ly --key=-2:1 --duration-quant=32 --allow-tuplet=4*2/3 --allow-tuplet=2*4/3 foo.midi
 ''')
@@ -923,13 +935,13 @@ def get_option_parser ():
 
 
 def do_options ():
-    opt_parser = get_option_parser()
+    opt_parser = get_option_parser ()
     (options, args) = opt_parser.parse_args ()
 
     if not args or args[0] == '-':
         opt_parser.print_help ()
-        ly.stderr_write ('\n%s: %s %s\n' % (program_name, _ ("error: "),
-                         _ ("no files specified on command line.")))
+        ly.stderr_write ('\n%s: %s %s\n' % (program_name, _ ('error: '),
+                         _ ('no files specified on command line.')))
         sys.exit (2)
 
     if options.duration_quant:
@@ -949,20 +961,26 @@ def do_options ():
 
         options.key = Key (sharps, flats, minor)
 
-        
     if options.start_quant:
         options.start_quant = int (options.start_quant)
-        
+
+    global bar_max
+    if options.preview:
+        bar_max = 4
+
     options.allowed_tuplets = [map (int, a.replace ('/','*').split ('*'))
                 for a in options.allowed_tuplets]
-    
+
+    if options.verbose:
+        sys.stderr.write ('Allowed tuplets: %s\n' % `options.allowed_tuplets`)
+
     global global_options
     global_options = options
 
     return args
 
-def main():
-    files = do_options()
+def main ():
+    files = do_options ()
 
     for f in files:
         g = f
@@ -990,5 +1008,6 @@ def main():
                 pass
 
         convert_midi (f, o)
+
 if __name__ == '__main__':
-    main()
+    main ()
index 6c6f13c27c575b4a52ec3ba468a91067a5788859..76d989f7a0bfdde57a5432aad1f34f1d07949676 100644 (file)
@@ -69,107 +69,6 @@ additional_definitions = {
            (num (if numerator numerator (ly:event-property ev 'numerator))))
        (format "~a:~a" den num)))
 """,
-
-  "compound-time-signature": """%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% Formatting of (possibly complex) compound time signatures
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
-#(define-public (insert-markups l m)
-  (let* ((ll (reverse l)))
-    (let join-markups ((markups (list (car ll)))
-                       (remaining (cdr ll)))
-      (if (pair? remaining)
-        (join-markups (cons (car remaining) (cons m markups)) (cdr remaining))
-        markups))))
-
-% Use a centered-column inside a left-column, because the centered column
-% moves its reference point to the center, which the left-column undoes.
-% The center-column also aligns its contented centered, which is not undone...
-#(define-public (format-time-fraction time-sig-fraction)
-  (let* ((revargs (reverse (map number->string time-sig-fraction)))
-         (den (car revargs))
-         (nums (reverse (cdr revargs))))
-    (make-override-markup '(baseline-skip . 0)
-      (make-number-markup
-        (make-left-column-markup (list
-          (make-center-column-markup (list
-            (make-line-markup (insert-markups nums "+"))
-            den))))))))
-
-#(define-public (format-complex-compound-time time-sig)
-  (let* ((sigs (map format-time-fraction time-sig)))
-    (make-override-markup '(baseline-skip . 0)
-      (make-number-markup
-        (make-line-markup
-          (insert-markups sigs (make-vcenter-markup "+")))))))
-
-#(define-public (format-compound-time time-sig)
-  (cond
-    ((not (pair? time-sig)) (null-markup))
-    ((pair? (car time-sig)) (format-complex-compound-time time-sig))
-    (else (format-time-fraction time-sig))))
-
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% Measure length calculation of (possibly complex) compound time signatures
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
-#(define-public (calculate-time-fraction time-sig-fraction)
-  (let* ((revargs (reverse time-sig-fraction))
-         (den (car revargs))
-         (nums (cdr revargs)))
-    (ly:make-moment (apply + nums) den)))
-
-#(define-public (calculate-complex-compound-time time-sig)
-  (let* ((sigs (map calculate-time-fraction time-sig)))
-    (let add-moment ((moment ZERO-MOMENT)
-                     (remaining sigs))
-      (if (pair? remaining)
-        (add-moment (ly:moment-add moment (car remaining)) (cdr remaining))
-        moment))))
-
-#(define-public (calculate-compound-measure-length time-sig)
-  (cond
-    ((not (pair? time-sig)) (ly:make-moment 4 4))
-    ((pair? (car time-sig)) (calculate-complex-compound-time time-sig))
-    (else (calculate-time-fraction time-sig))))
-
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% Base beat lenth
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
-#(define-public (calculate-compound-base-beat-full time-sig)
-  (let* ((den (map last time-sig)))
-    (apply max den)))
-
-#(define-public (calculate-compound-base-beat time-sig)
-  (ly:make-moment 1 (cond
-    ((not (pair? time-sig)) 4)
-    ((pair? (car time-sig)) (calculate-compound-base-beat-full time-sig))
-    (else (calculate-compound-base-beat-full (list time-sig))))))
-
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% The music function to set the complex time signature
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
-compoundMeter =
-#(define-music-function (parser location args) (pair?)
-  (let ((mlen (calculate-compound-measure-length args))
-        (beat (calculate-compound-base-beat args)))
-  #{
-\once \override Staff.TimeSignature #'stencil = #ly:text-interface::print
-\once \override Staff.TimeSignature #'text = #(format-compound-time $args)
-% \set Staff.beatGrouping = #(reverse (cdr (reverse $args)))
-\set Timing.measureLength = $mlen
-\set Timing.timeSignatureFraction = #(cons (ly:moment-main-numerator $mlen)
-                                           (ly:moment-main-denominator $mlen))
-\set Timing.baseMoment = $beat
-
-% TODO: Implement beatGrouping and auto-beam-settings!!!
-#} ))
-"""
 }
 
 def round_to_two_digits (val):
@@ -839,8 +738,6 @@ def musicxml_time_to_lily (attributes):
         return None
     change = musicexp.TimeSignatureChange()
     change.fractions = sig
-    if (len(sig) != 2) or isinstance (sig[0], list):
-        needed_additional_definitions.append ("compound-time-signature")
 
     time_elm = attributes.get_maybe_exist_named_child ('time')
     if time_elm and hasattr (time_elm, 'symbol'):