]> git.donarmstrong.com Git - lilypond.git/commitdiff
Merge branch 'lilypond/translation' of ssh://git.sv.gnu.org/srv/git/lilypond into...
authorDénes Harmath <harmathdenes@gmail.com>
Thu, 22 Jul 2010 22:25:19 +0000 (00:25 +0200)
committerDénes Harmath <harmathdenes@gmail.com>
Thu, 22 Jul 2010 22:25:19 +0000 (00:25 +0200)
415 files changed:
Documentation/changes.tely
Documentation/contributor/doc-work.itexi
Documentation/contributor/programming-work.itexi
Documentation/de/notation/rhythms.itely
Documentation/es/notation/rhythms.itely
Documentation/es/texidocs/defining-an-engraver-in-scheme-ambitus-engraver.texidoc [new file with mode: 0644]
Documentation/es/texidocs/scheme-engraver-ambitus.texidoc [deleted file]
Documentation/es/web/introduction.itexi
Documentation/extending/programming-interface.itely
Documentation/fr/notation/expressive.itely
Documentation/fr/notation/rhythms.itely
Documentation/fr/web/community.itexi
Documentation/fr/web/introduction.itexi
Documentation/learning/fundamental.itely
Documentation/learning/tweaks.itely
Documentation/music-glossary.tely
Documentation/notation/expressive.itely
Documentation/notation/pitches.itely
Documentation/notation/repeats.itely
Documentation/notation/rhythms.itely
Documentation/pictures/screenshot-denemo-small.png
Documentation/pictures/screenshot-denemo.png
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-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-headword.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/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/centering-markup-on-note-heads-automatically.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-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 [new file with mode: 0644]
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-interval-of-lines-on-the-stave.ly [new file with mode: 0644]
Documentation/snippets/changing-the-number-of-augmentation-dots-per-note.ly [new file with mode: 0644]
Documentation/snippets/changing-the-positions-of-figured-bass-alterations.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/chords-headword.ly
Documentation/snippets/clefs-can-be-transposed-by-arbitrary-amounts.ly [new file with mode: 0644]
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/contexts-and-engravers.snippet-list
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/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/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 [new file with mode: 0644]
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/dot-count-override.ly [deleted file]
Documentation/snippets/dynamics-custom-text-spanner-postfix.ly
Documentation/snippets/dynamics-text-spanner-postfix.ly
Documentation/snippets/editorial-headword.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/expressive-headword.ly
Documentation/snippets/expressive-marks.snippet-list
Documentation/snippets/faking-a-hammer-in-tablatures.ly
Documentation/snippets/figured-bass-headword.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/fretted-headword.ly
Documentation/snippets/generating-random-notes.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 [new file with mode: 0644]
Documentation/snippets/hiding-the-extender-line-for-text-dynamics.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/keyboard-headword.ly
Documentation/snippets/letter-tablature-formatting.ly
Documentation/snippets/line-arrows.ly
Documentation/snippets/lyrics-alignment.ly
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/marking-notes-of-spoken-parts-with-a-cross-on-the-stem.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/automatic-beam-subdivisions.ly [new file with mode: 0644]
Documentation/snippets/new/beam-endings-in-score-context.ly
Documentation/snippets/new/beam-grouping-in-7-8-time.ly
Documentation/snippets/new/centering-markup-on-note-heads-automatically.ly [new file with mode: 0644]
Documentation/snippets/new/changing-the-ambitus-gap.ly [new file with mode: 0644]
Documentation/snippets/new/changing-the-number-of-augmentation-dots-per-note.ly [new file with mode: 0644]
Documentation/snippets/new/compound-time-signatures.ly
Documentation/snippets/new/conducting-signs,-measure-grouping-signs.ly
Documentation/snippets/new/defining-an-engraver-in-scheme-ambitus-engraver.ly [new file with mode: 0644]
Documentation/snippets/new/dot-count-override.ly [deleted file]
Documentation/snippets/new/fretted-headword.ly
Documentation/snippets/new/hiding-accidentals-on-tied-notes-at-the-start-of-a-new-system.ly [new file with mode: 0644]
Documentation/snippets/new/reverting-default-beam-endings.ly
Documentation/snippets/new/scheme-engraver-ambitus.ly [deleted file]
Documentation/snippets/new/setting-the-double-repeat-default-for-volte.ly [new file with mode: 0644]
Documentation/snippets/new/showing-the-same-articulation-above-and-below-a-note-or-chord.ly [new file with mode: 0644]
Documentation/snippets/new/subdividing-beams.ly [new file with mode: 0644]
Documentation/snippets/new/vocal-ensemble-template-with-verse-and-refrain.ly
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/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/pitches-headword.ly
Documentation/snippets/pitches.snippet-list
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-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/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/repeats-headword.ly
Documentation/snippets/repeats.snippet-list
Documentation/snippets/rest-styles.ly
Documentation/snippets/reverting-default-beam-endings.ly
Documentation/snippets/rhythms-headword.ly
Documentation/snippets/rhythms.snippet-list
Documentation/snippets/scheme-engraver-ambitus.ly [deleted file]
Documentation/snippets/screech-boink.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 [new file with mode: 0644]
Documentation/snippets/setting-the-minimum-length-of-hairpins.ly
Documentation/snippets/shortening-volta-brackets.ly
Documentation/snippets/showing-chords-at-changes.ly
Documentation/snippets/showing-the-same-articulation-above-and-below-a-note-or-chord.ly
Documentation/snippets/simple-lead-sheet.ly
Documentation/snippets/simultaneous-headword.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/staff-headword.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/sub-dividing-beams.ly [deleted file]
Documentation/snippets/subdividing-beams.ly [new file with mode: 0644]
Documentation/snippets/text-headword.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/unfretted-headword.ly
Documentation/snippets/use-square-bracket-at-the-start-of-a-staff-group.ly
Documentation/snippets/using-alternative-flag-styles.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/volta-below-chords.ly
Documentation/snippets/wind-headword.ly
Documentation/web.texi
Documentation/web/community.itexi
Documentation/web/introduction.itexi
Documentation/web/ly-examples/granados.ly
Documentation/web/news-front.itexi
GNUmakefile.in
VERSION
autogen.sh
config.make.in
configure.in
input/regression/GNUmakefile
input/regression/auto-beam-beaming-override.ly
input/regression/beam-beat-grouping.ly
input/regression/beaming-ternary-metrum.ly
input/regression/chord-tremolo-articulations.ly [new file with mode: 0644]
input/regression/include-string.ly [new file with mode: 0644]
input/regression/laissez-vibrer-tie-head-direction.ly [new file with mode: 0644]
input/regression/les-nereides.ly
input/regression/lilypond-book/GNUmakefile [new file with mode: 0644]
input/regression/lilypond-book/html-include-space-after-tag.html [new file with mode: 0644]
input/regression/lilypond-book/html-inline-newline-during-tag.html [new file with mode: 0644]
input/regression/lilypond-book/html-inline-no-options.html [new file with mode: 0644]
input/regression/lilypond-book/html-inline-option.html [new file with mode: 0644]
input/regression/lilypond-book/html-lilypond-block.html [new file with mode: 0644]
input/regression/lilypond-book/html-newline-after-tag.html [new file with mode: 0644]
input/regression/lilypond-book/html-space-after-tag.html [new file with mode: 0644]
input/regression/lilypond-book/html-version-newline.html [new file with mode: 0644]
input/regression/lilypond-book/html-version.html [new file with mode: 0644]
input/regression/lilypond-book/include.ly [new file with mode: 0644]
input/regression/lilypond-book/include2.ly [new file with mode: 0644]
input/regression/lilypond-book/include3.ily [new file with mode: 0644]
input/regression/lilypond-book/suffix-html.html [new file with mode: 0644]
input/regression/lilypond-book/suffix-htmly.htmly [new file with mode: 0644]
input/regression/lilypond-book/suffix-itely.itely [new file with mode: 0644]
input/regression/lilypond-book/suffix-latex.latex [new file with mode: 0644]
input/regression/lilypond-book/suffix-lytex.lytex [new file with mode: 0644]
input/regression/lilypond-book/suffix-lyxml.lyxml [new file with mode: 0644]
input/regression/lilypond-book/suffix-tely.tely [new file with mode: 0644]
input/regression/lilypond-book/suffix-tex.tex [new file with mode: 0644]
input/regression/lilypond-book/suffix-texi.texi [new file with mode: 0644]
input/regression/lilypond-book/suffix-texinfo.texinfo [new file with mode: 0644]
input/regression/lilypond-book/suffix-xml.xml [new file with mode: 0644]
input/regression/lilypond-book/tex-auto-linebreak.lytex [new file with mode: 0644]
input/regression/lilypond-book/tex-comment-firstline.lytex [new file with mode: 0644]
input/regression/lilypond-book/tex-comments.lytex [new file with mode: 0644]
input/regression/lilypond-book/tex-compatibility-mode.lytex [new file with mode: 0644]
input/regression/lilypond-book/tex-footnote.lytex [new file with mode: 0644]
input/regression/lilypond-book/tex-fragment.lytex [new file with mode: 0644]
input/regression/lilypond-book/tex-graphics-package-added.lytex [new file with mode: 0644]
input/regression/lilypond-book/tex-include-file.lytex [new file with mode: 0644]
input/regression/lilypond-book/tex-include-options.lytex [new file with mode: 0644]
input/regression/lilypond-book/tex-inline-lilypond.lytex [new file with mode: 0644]
input/regression/lilypond-book/tex-lilypond-block.lytex [new file with mode: 0644]
input/regression/lilypond-book/tex-lilypond-inside-itemize.lytex [new file with mode: 0644]
input/regression/lilypond-book/tex-lilypond-inside-table.lytex [new file with mode: 0644]
input/regression/lilypond-book/tex-lilypondversion.lytex [new file with mode: 0644]
input/regression/lilypond-book/tex-paragraphs.lytex [new file with mode: 0644]
input/regression/lilypond-book/tex-snippet-options.lytex [new file with mode: 0644]
input/regression/lilypond-book/tex-twocolumn.lytex [new file with mode: 0644]
input/regression/lilypond-book/tex-verbatim.lytex [new file with mode: 0644]
input/regression/lilypond-book/tex-version.lytex [new file with mode: 0644]
input/regression/lilypond-book/texinfo-include-language-detection-included.itely [new file with mode: 0644]
input/regression/lilypond-book/texinfo-include-language-detection.tely [new file with mode: 0644]
input/regression/lilypond-book/texinfo-language-detection.tely [new file with mode: 0644]
input/regression/musicxml/GNUmakefile
input/regression/page-breaking-min-distance.ly [new file with mode: 0644]
input/regression/repeat-tremolo-one-note-articulation.ly [new file with mode: 0644]
input/regression/repeat-tremolo-three-notes.ly [new file with mode: 0644]
lily/accidental-engraver.cc
lily/auto-beam-engraver.cc
lily/bar-line.cc
lily/beam-engraver.cc
lily/beam-setting-scheme.cc [deleted file]
lily/beaming-pattern.cc
lily/book.cc
lily/chord-tremolo-engraver.cc
lily/chord-tremolo-iterator.cc
lily/constrained-breaking.cc
lily/includable-lexer.cc
lily/include/bar-line.hh
lily/include/beam-settings.hh [deleted file]
lily/include/beaming-pattern.hh
lily/include/constrained-breaking.hh
lily/include/includable-lexer.hh
lily/include/lily-parser.hh
lily/include/ly-module.hh
lily/include/note-head.hh
lily/include/paper-column.hh
lily/include/staff-symbol.hh
lily/lexer.ll
lily/lily-lexer.cc
lily/lily-parser-scheme.cc
lily/lily-parser.cc
lily/ly-module.cc
lily/measure-grouping-engraver.cc
lily/module-scheme.cc
lily/multi-measure-rest.cc
lily/note-head.cc
lily/note-spacing.cc
lily/output-def.cc
lily/page-breaking.cc
lily/page-spacing.cc
lily/paper-column.cc
lily/score.cc
lily/self-aligment-interface.cc [deleted file]
lily/self-alignment-interface.cc [new file with mode: 0644]
lily/staff-symbol.cc
lily/tie.cc
lily/timing-translator.cc
ly/bagpipe.ly
ly/engraver-init.ly
ly/music-functions-init.ly
make/lilypond-book-rules.make [new file with mode: 0644]
make/lilypond-book-targets.make [new file with mode: 0644]
make/lilypond-book-vars.make [new file with mode: 0644]
make/lysdoc-rules.make
make/lysdoc-vars.make
ps/GNUmakefile
python/convertrules.py
python/lilylib.py
scm/auto-beam.scm
scm/beam-settings.scm [deleted file]
scm/define-context-properties.scm
scm/define-grob-properties.scm
scm/define-grobs.scm
scm/define-music-display-methods.scm
scm/framework-ps.scm
scm/lily-library.scm
scm/lily.scm
scm/music-functions.scm
scm/output-svg.scm
scm/parser-clef.scm
scm/time-signature-settings.scm [new file with mode: 0644]
scripts/build/html-to-texi.py
scripts/build/lys-to-tely.py
scripts/musicxml2ly.py
stepmake/autogen.sh
stepmake/bin/config.sub

index 1b6652221d0e6cdcdcc7eddf6111d8eb69b61487..76ba8b56d1678b37db6048ab093314fa79bc14eb 100644 (file)
@@ -66,6 +66,16 @@ which scares away people.
 
 @end ignore
 
+@item
+The autobeaming settings syntax has been changed.  beatLength,
+beatGrouping, beamSettings, and measureGrouping have all been eliminated.
+Autobeaming is now controlled by baseMoment, beatStructure, and
+beamExceptions.  Default settings for each of these properties can be
+stored for any time signature in time-signature-settings, so that
+when the time signature is changed, the autobeaming will automatically
+change.  The new syntax should be much easier and require fewer
+overrides.
+
 @item
 The SVG backend has optional support for
 @uref{http://www.w3.org/Submission/WOFF, WOFF fonts}.  Using the Scheme
index c002698f1c1d19b56360aadef1f611dd8d9ac885..c5554ad4409c9b6cb771f6cfab9f6497c53aef2e 100644 (file)
@@ -535,7 +535,9 @@ command ;)
 @unnumberedsubsubsec Cross references
 
 Enter the exact @code{@@node} name of the target reference between
-the brackets (eg.@tie{}@w{@samp{@@ref@{Syntax survey@}}}).
+the brackets (eg.@tie{}@w{@samp{@@ref@{Syntax survey@}}}).  Do not
+split a cross-reference across two lines -- this causes the
+cross-reference to be rendered incorrectly in html documents.
 
 @itemize
 @item
index b131c423c2c1f4329e2158a8826bab9d6a59098c..34f33f49cec1c80fc584d828177342ef992cae27 100644 (file)
@@ -1983,6 +1983,69 @@ argument,
 where around-central-C is some function that is called from
 make-autochange-music.
 
+@subheading More on context and music properties
+
+From Neil Puttock, in response to a question about transposition:
+
+Context properties (using \set & \unset) are tied to engravers: they
+provide information relevant to the generation of graphical objects.
+
+Since transposition occurs at the music interpretation stage, it has
+no direct connection with engravers: the pitch of a note is fixed
+before a notehead is created.  Consider the following minimal snippet:
+
+@example
+@{ c' @}
+@end example
+
+This generates (simplified) a NoteEvent, with its pitch and duration
+as event properties,
+
+@example
+(make-music
+  'NoteEvent
+  'duration
+  (ly:make-duration 2 0 1 1)
+  'pitch
+  (ly:make-pitch 0 0 0)
+@end example
+
+which the Note_heads_engraver hears.  It passes this information on to
+the NoteHead grob it creates from the event, so the head's correct
+position and duration-log can be determined once it's ready for
+printing.
+
+If we transpose the snippet,
+
+@example
+\transpose c d @{ c' @}
+@end example
+
+the pitch is changed before it reaches the engraver (in fact, it
+happens just after the parsing stage with the creation of a
+TransposedMusic music object):
+
+@example
+(make-music
+ 'NoteEvent
+ 'duration
+ (ly:make-duration 2 0 1 1)
+ 'pitch
+ (ly:make-pitch 0 1 0)
+@end example
+
+You can see an example of a music property relevant to transposition:
+untransposable.
+
+@example
+\transpose c d @{ c'2 \withMusicProperty #'untransposable ##t c' @}
+@end example
+
+-> the second c' remains untransposed.
+
+Take a look at lily/music.cc to see where the transposition takes place.
+
+
 @subheading How do I tell about the execution environment?
 
 I get lost figuring out what environment the code I'm looking at is in when it
index 34158d385b9a28cc881aa170ed3d2adb6bdabf63..ebac74e573963a125f8daec25158d9e1fbb2cffc 100644 (file)
@@ -542,7 +542,7 @@ c2 ~ c
 Die Definition von Muster für die Strichelung der Bindebögen hat
 die gleiche Struktur wie die Definition für Legatobögen.  Zu
 weiterer Information zu komplizierten Strichelungsmustern, siehe
-die Schnipsel im Abschnitt @ref{Legatobögen}. 
+die Schnipsel im Abschnitt @ref{Legatobögen}.
 
 @predefined
 @code{\tieUp},
@@ -995,12 +995,12 @@ berücksichtigt.
 @translationof Displaying rhythms
 
 @menu
-* Taktangabe::              
-* Auftakte::                     
-* Musik ohne Metrum::             
-* Polymetrische Notation::         
-* Automatische Aufteilung von Noten::    
-* Melodierhythmus anzeigen::      
+* Taktangabe::
+* Auftakte::
+* Musik ohne Metrum::
+* Polymetrische Notation::
+* Automatische Aufteilung von Noten::
+* Melodierhythmus anzeigen::
 @end menu
 
 @node Taktangabe
@@ -1661,9 +1661,10 @@ Stimmen zusammenstoßen.
 @cindex Gesangstext und Balken
 
 @funindex autoBeaming
-@funindex beamSettings
+@funindex beatStructure
+@funindex beamExceptions
 @funindex measureLength
-@funindex beatLength
+@funindex baseMoment
 @funindex \time
 @funindex time
 @funindex \set
@@ -1745,12 +1746,12 @@ Balkenregeln werden verändert mit @code{\overrideBeamSettings}
 und @code{\revertBeamSettings}.
 
 @lilypond[quote,relative=2,verbatim]
-  \time 5/16
-  c8^"beats" c16 c8 |
-  \overrideBeamSettings #'Score #'(5 . 16) #'end #'((* . (2 3)))
-  c8^"(2+3)" c16 c8
-  \overrideBeamSettings #'Score #'(5 . 16) #'end #'((* . (3 2)))
-  c8^"(3+2)" c16 c8
+\time 5/16
+c8^"beats" c16 c8 |
+\set beatStructure = #'(2 3)
+c8^"(2+3)" c16 c8
+\set beatStructure = #'(3 2)
+c8^"(3+2)" c16 c8
 @end lilypond
 
 Balkenregelveränderungen können auf bestimmte Kontexte beschränkt
@@ -1761,16 +1762,16 @@ niedrigere befindet.
 @lilypond[quote, verbatim,relative=1]
 \new Staff <<
   \time 7/8
+  \set Staff.beatStructure = #'(2 3 2)
   \new Voice = one {
     \relative c'' {
-      \overrideBeamSettings #'Staff #'(7 . 8) #'end #'((* . (2 3 2)))
         a8 a a a a a a
     }
   }
   \new Voice  = two {
     \relative c' {
       \voiceTwo
-      \overrideBeamSettings #'Voice #'(7 . 8) #'end #'((* . (1 3 3)))
+      \set Voice.beatStructure = #'(1 3 3)
       f8 f f f f f f
     }
   }
@@ -1786,12 +1787,12 @@ Systems angewendet werden sollen:
 % rhythm 3-1-1-2
 % Context Voice specified --  does not work correctly
 % Because of autogenerated voices, all beating will
-% be at beatLength (1 . 8)
-\overrideBeamSettings #'Voice #'(7 . 8) #'end #'((* . (3 1 1 2)))
+% be at baseMoment (1 . 8)
+\set beatStructure = #'(3 1 1 2)
 << {a8 a a a16 a a a a8 a} \\ {f4. f8 f f f} >>
 
 % Works correctly with context Staff specified
-\overrideBeamSettings #'Staff #'(7 . 8) #'end #'((* . (3 1 1 2)))
+\set Staff.beatStructure = #'(3 1 1 2)
 << {a8 a a a16 a a a a8 a} \\ {f4. f8 f f f} >>
 @end lilypond
 
@@ -1810,13 +1811,13 @@ wie für @code{overrideBeamSettings}, außer das kein Wert für
 
 @lilypond[quote,verbatim,relative=2]
 \time 4/4
-\repeat unfold 16 {a16}
-% set default rule for (1 1 1 1) grouping
-\overrideBeamSettings #'Score #'(4 . 4) #'end #'((* . (1 1 1 1)))
-\repeat unfold 16 {a16}
-% revert the new rule
-\revertBeamSettings #'Score #'(4 . 4) #'end
-\repeat unfold 16 {a16}
+\repeat unfold 8 {a8}
+% set beaming rule for ending all beams at (1 . 4)
+\set Timing.beamExceptions = #'()
+\repeat unfold 8 {a8}
+% go back to default behavior
+\time 4/4
+\repeat unfold 8 {a8}
 @end lilypond
 
 
@@ -1826,7 +1827,7 @@ wie für @code{overrideBeamSettings}, außer das kein Wert für
 @funindex subdivideBeams
 
 @lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
-{sub-dividing-beams.ly}
+{subdividing-beams.ly}
 
 @cindex Taktgruppen
 @cindex Schlaggruppen
@@ -1993,10 +1994,10 @@ Snippets:
 @translationof Bars
 
 @menu
-* Taktstriche::                   
-* Taktzahlen::                 
-* Takt- und Taktzahlüberprüfung::   
-* Übungszeichen::             
+* Taktstriche::
+* Taktzahlen::
+* Takt- und Taktzahlüberprüfung::
+* Übungszeichen::
 @end menu
 
 @node Taktstriche
@@ -2503,9 +2504,9 @@ Referenz der Interna:
 @translationof Special rhythmic concerns
 
 @menu
-* Verzierungen::                 
-* An Kadenzen ausrichten::        
-* Verwaltung der Zeiteinheiten::         
+* Verzierungen::
+* An Kadenzen ausrichten::
+* Verwaltung der Zeiteinheiten::
 @end menu
 
 @node Verzierungen
index 3743751905744f455fd99c61fa4b56da724c298b..8d72b7531d776a1bbf79d643ad8ba429f5ffb752 100644 (file)
@@ -154,7 +154,7 @@ pauta; véase @ref{Dirección y posición}.
 @snippets
 
 @lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
-{dot-count-override.ly}
+{changing-the-number-of-augmentation-dots-per-note.ly}
 
 
 @seealso
@@ -1711,9 +1711,10 @@ alteraciones accidentales de las otras voces.
 @cindex letra y barrado
 
 @funindex autoBeaming
-@funindex beamSettings
+@funindex beamExceptions
+@funindex baseMoment
+@funindex beatStructure
 @funindex measureLength
-@funindex beatLength
 @funindex \time
 @funindex time
 @funindex \set
@@ -1813,9 +1814,9 @@ nuevo patrón de barrado.}
 @lilypond[quote,relative=2,verbatim]
 \time 5/16
 c8^"beats" c16 c8 |
-\overrideBeamSettings #'Score #'(5 . 16) #'end #'((* . (2 3)))
+\set beatStructure = #'(2 3)
 c8^"(2+3)" c16 c8
-\overrideBeamSettings #'Score #'(5 . 16) #'end #'((* . (3 2)))
+\set beatStructure = #'(3 2)
 c8^"(3+2)" c16 c8
 @end lilypond
 
@@ -1824,22 +1825,24 @@ específicos.  Si no se incluye ningún ajuste en un contexto de nivel
 más bajo, se aplican los ajustes del contexto circundante.
 
 @lilypond[quote, verbatim,relative=1]
-\new Staff <<
+\new Staff {
   \time 7/8
-  \new Voice = one {
-    \relative c'' {
-      \overrideBeamSettings #'Staff #'(7 . 8) #'end #'((* . (2 3 2)))
+  \set Staff.beatStructure = #'(2 3 2)
+  <<
+    \new Voice = one {
+      \relative c'' {
         a8 a a a a a a
+      }
     }
-  }
-  \new Voice  = two {
-    \relative c' {
-      \voiceTwo
-      \overrideBeamSettings #'Voice #'(7 . 8) #'end #'((* . (1 3 3)))
-      f8 f f f f f f
+    \new Voice  = two {
+      \relative c' {
+        \voiceTwo
+        \set Voice.beatStructure = #'(1 3 3)
+        f8 f f f f f f
+      }
     }
-  }
->>
+  >>
+}
 @end lilypond
 
 En caso de usar varias voces, se debe especificar el contexto
@@ -1851,12 +1854,12 @@ pentagrama:
 % rhythm 3-1-1-2
 % Context Voice specified --  does not work correctly
 % Because of autogenerated voices, all beating will
-% be at beatLength (1 . 8)
-\overrideBeamSettings #'Voice #'(7 . 8) #'end #'((* . (3 1 1 2)))
+% be at baseMoment (1 . 8)
+\set beatStructure = #'(3 1 1 2)
 << {a8 a a a16 a a a a8 a} \\ {f4. f8 f f f} >>
 
 % Works correctly with context Staff specified
-\overrideBeamSettings #'Staff #'(7 . 8) #'end #'((* . (3 1 1 2)))
+\set Staff.beatStructure = #'(3 1 1 2)
 << {a8 a a a16 a a a a8 a} \\ {f4. f8 f f f} >>
 @end lilypond
 
@@ -1876,15 +1879,14 @@ ningún valor para @var{agrupación}:
 @lilypond[quote,verbatim,relative=2]
 \time 4/4
 \repeat unfold 8 {a8}
-% set default rule for (1 1 1 1) grouping
-\overrideBeamSettings #'Score #'(4 . 4) #'end #'((* . (1 1 1 1)))
+% set beaming rule for ending all beams at (1 . 4)
+\set Timing.beamExceptions = #'()
 \repeat unfold 8 {a8}
-% revert the new rule
-\revertBeamSettings #'Score #'(4 . 4) #'end
+% go back to default beahavior
+\time 4/4
 \repeat unfold 8 {a8}
 @end lilypond
 
-
 @predefined
 @code{\overrideBeamSettings},
 @code{\revertBeamSettings}.
@@ -1896,7 +1898,7 @@ ningún valor para @var{agrupación}:
 @cindex barras, subdivisión
 
 @lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
-{sub-dividing-beams.ly}
+{subdividing-beams.ly}
 
 @cindex compás, agrupación
 @cindex pulsos, agrupación
@@ -2601,7 +2603,7 @@ c1 \mark \default
 @noindent
 La letra@tie{}@q{I} se salta de acuerdo con las tradiciones de
 grabado.  Si quiere incluir la letra @q{I}, use una de las
-instrucciones siguientes, según el estilo de marcas de 
+instrucciones siguientes, según el estilo de marcas de
 ensayo que desee (sólo letras, letras dentro de un rectángulo
 o letras dentro de un círculo).
 
diff --git a/Documentation/es/texidocs/defining-an-engraver-in-scheme-ambitus-engraver.texidoc b/Documentation/es/texidocs/defining-an-engraver-in-scheme-ambitus-engraver.texidoc
new file mode 100644 (file)
index 0000000..dee6801
--- /dev/null
@@ -0,0 +1,12 @@
+%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b
+
+  texidoces = "
+Este ejemplo demuestra cómo se puede definir el grabador de ámbito en
+el espacio del usuario, con un grabador de Scheme.
+
+Esto es básicamente una reescritura en Scheme del código de
+@file{lily/ambitus-engraver.cc}.
+
+"
+
+  doctitlees = "Definir un grabador en Scheme: grabador de ámbito"
diff --git a/Documentation/es/texidocs/scheme-engraver-ambitus.texidoc b/Documentation/es/texidocs/scheme-engraver-ambitus.texidoc
deleted file mode 100644 (file)
index dee6801..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b
-
-  texidoces = "
-Este ejemplo demuestra cómo se puede definir el grabador de ámbito en
-el espacio del usuario, con un grabador de Scheme.
-
-Esto es básicamente una reescritura en Scheme del código de
-@file{lily/ambitus-engraver.cc}.
-
-"
-
-  doctitlees = "Definir un grabador en Scheme: grabador de ámbito"
index 5d2ec5e91ed902e912fd77ee7586f596608b7ea0..653bac9af208f866e7c923609bec1e33236e066e 100644 (file)
@@ -1095,7 +1095,7 @@ con Vim, probablemente prefiera utilizar un editor distinto para
 escribir archivos de entrada de LilyPond.
 
 Hay más información sobre la configuración de Emacs y de Vim en
-@rprogram{Text editor support}.
+@rprogram{Apoyo respecto de los editores de texto}.
 
 @divEnd
 
index 7848b0f1bd20f854b9882b7deb75edb40d7a75e9..7b1637e564ba4ceeb4c78f63ecff15d5aabf73f7 100644 (file)
@@ -958,33 +958,36 @@ of the broken tie is repositioned.
 
 @lilypond[quote,verbatim,ragged-right]
 #(define (my-callback grob)
-  (let* (
-         ; have we been split?
-         (orig (ly:grob-original grob))
+   (let* (
+          ;; have we been split?
+          (orig (ly:grob-original grob))
 
-         ; if yes, get the split pieces (our siblings)
-         (siblings (if (ly:grob? orig)
-                     (ly:spanner-broken-into orig) '() )))
+          ;; if yes, get the split pieces (our siblings)
+          (siblings (if (ly:grob? orig)
+                        (ly:spanner-broken-into orig)
+                        '())))
 
-   (if (and (>= (length siblings) 2)
-             (eq? (car (last-pair siblings)) grob))
-     (ly:grob-set-property! grob 'extra-offset '(-2 . 5)))))
+     (if (and (>= (length siblings) 2)
+              (eq? (car (last-pair siblings)) grob))
+         (ly:grob-set-property! grob 'extra-offset '(-2 . 5)))))
 
 \relative c'' {
   \override Tie #'after-line-breaking =
   #my-callback
-  c1 ~ \break c2 ~ c
+  c1 ~ \break
+  c2 ~ c
 }
 @end lilypond
 
 @noindent
 When applying this trick, the new @code{after-line-breaking} callback
-should also call the old one @code{after-line-breaking}, if there is
-one.  For example, if using this with @code{Hairpin},
-@code{ly:hairpin::after-line-breaking} should also be called.
+should also call the old one, if such a default exists.  For example,
+if using this with @code{Hairpin}, @code{ly:spanner::kill-zero-spanned-time}
+should also be called.
 
 
-@item Some objects cannot be changed with @code{\override} for
+@item
+Some objects cannot be changed with @code{\override} for
 technical reasons.  Examples of those are @code{NonMusicalPaperColumn}
 and @code{PaperColumn}.  They can be changed with the
 @code{\overrideProperty} function, which works similar to @code{\once
index 470a424b910fab7730b5afc0003ee6307033ef9f..15310cca7a364f1bf241568ad6ffd5dbb104ce0d 100644 (file)
@@ -1,6 +1,6 @@
 @c -*- coding: utf-8; mode: texinfo; documentlanguage: fr -*-
 @ignore
-    Translation of GIT committish: 217cd2b9de6e783f2a5c8a42be9c70a82195ad20
+    Translation of GIT committish: a02ca233bc1a2af11980d8eab1e874c559cdff09
 
     When revising a translation, copy the HEAD committish of the
     version that you are working on.  For details, see the Contributors'
@@ -19,6 +19,9 @@
 
 @lilypondfile[quote]{expressive-headword.ly}
 
+Ce chapitre traite des différentes indications d'interprétation que l'on
+peut trouver sur les partitions.
+
 @menu
 * Indications attachées à des notes::           
 * Courbes::                      
@@ -31,7 +34,7 @@
 @translationof Attached to notes
 
 Nous allons voir au cours de ces lignes comment ajouter aux notes des
-indications d'interprétation -- articulation, ornementation, nuances --
+indications d'interprétation -- articulation, ornementation, nuance --
 et aborderons la manière de générer vos propres signes.
 
 @menu
@@ -72,6 +75,48 @@ et aborderons la manière de générer vos propres signes.
 @cindex coda
 @cindex varcoda
 
+@funindex \accent
+@funindex \marcato
+@funindex \staccatissimo
+@funindex \espressivo
+@funindex \staccato
+@funindex \tenuto
+@funindex \portato
+@funindex \upbow
+@funindex \downbow
+@funindex \flageolet
+@funindex \thumb
+@funindex \lheel
+@funindex \rheel
+@funindex \ltoe
+@funindex \rtoe
+@funindex \open
+@funindex \halfopen
+@funindex \stopped
+@funindex \snappizzicato
+@funindex \turn
+@funindex \reverseturn
+@funindex \trill
+@funindex \prall
+@funindex \mordent
+@funindex \prallprall
+@funindex \prallmordent
+@funindex \upprall
+@funindex \downprall
+@funindex \upmordent
+@funindex \downmordent
+@funindex \pralldown
+@funindex \prallup
+@funindex \lineprall
+@funindex \signumcongruentiae
+@funindex \shortfermata
+@funindex \fermata
+@funindex \longfermata
+@funindex \verylongfermata
+@funindex \fermataMarkup
+@funindex \segno
+@funindex \coda
+@funindex \varcoda
 @funindex -
 
 Les différents symboles qui indiquent des ponctuations ou des modes de
@@ -82,7 +127,7 @@ jeu différents s'ajoutent aux notes de la manière suivante :
 @end example
  
 Les valeurs de @var{nom} sont répertoriées dans l'annexe 
-@ref{Liste des signes d'articulation}. En voici un exemple :
+@ref{Liste des signes d'articulation}. En voici un exemple@tie{}:
 
 @lilypond[verbatim,quote,relative=2]
 c4\staccato c\mordent b2\turn
@@ -113,6 +158,32 @@ contenues dans le fichier @code{scm/@/script@/.scm}, il est possible de
 l'obliger à les positionner au-dessus ou en-dessous de la note, comme
 indiqué au chapitre @ref{Direction et positionnement}.
 
+Les articulations sont des objets de type @code{script}@tie{}; les
+propriétés de ces objets sont abordées plus en détail au chapitre
+@rinternals{Script}.
+
+Une articulation peut se rattacher aussi bien à un silence qu'à une
+note, mais @strong{pas à un silence multi-mesures}.  Il existe cependant
+un cas particulier@tie{}: le point d'orgue -- ou point d'arrêt --
+attaché à un silence valant l'intégralité de la mesure.  LilyPond
+dispose à cet effet de la commande @code{\fermataMarkup}, qui créera un
+objet @code{MultiMeasureRestText} rattaché à ce @qq{silence
+multi-mesures}. 
+
+@lilypond[verbatim,quote,relative=2]
+\override Script #'color = #red
+\override MultiMeasureRestText #'color = #blue
+a2\fermata r\fermata
+R1\fermataMarkup
+@end lilypond
+
+En dehors des articulations habituelles, vous pouvez adjoindre du texte
+-- avec ou sans mise en forme -- à n'importe quelle note.  Voir à ce
+propos @ref{Commentaires textuels}.
+
+Pour plus d'information sur la manière d'ordonner @code{Scripts} et
+@code{TextScripts}, consultez le chapitre 
+@rlearning{Positionnement des objets}.
 
 @snippets
 
@@ -132,7 +203,11 @@ Glossaire musicologique :
 @rglos{staccato},
 @rglos{portato}.
 
+Manuel d'initiation :
+@rlearning{Positionnement des objets}.
+
 Manuel de notation :
+@ref{Commentaires textuels},
 @ref{Direction et positionnement},
 @ref{Liste des signes d'articulation},
 @ref{Trilles}.
@@ -191,13 +266,13 @@ Référence des propriétés internes :
 @funindex \rfz
 @funindex rfz
 
-À chaque nuance absolue correspond une commande, qui peut être indiquée
-après une note : @code{c4\ff} par exemple.  Les commandes de nuance
+À chaque nuance absolue correspond une commande qui peut être indiquée
+après une note@tie{}: @code{c4\ff} par exemple.  Les commandes de nuance
 disponibles sont @code{\ppppp}, @code{\pppp}, @code{\ppp}, @code{\pp},
 @code{\p}, @code{\mp}, @code{\mf}, @code{\f}, @code{\ff}, @code{\fff}, 
 @code{\ffff}, @code{\fffff}, @code{\fp}, @code{\sf}, @code{\sff}, 
 @code{\sp}, @code{\spp}, @code{\sfz}, et @code{\rfz}.  Les nuances se
-placent aussi bien en dessous qu'au-dessus de la portée ; pour plus
+placent aussi bien en dessous qu'au-dessus de la portée@tie{}; pour plus
 d'information, consultez @ref{Direction et positionnement}.
 
 @lilypond[verbatim,quote,relative=2]
@@ -220,8 +295,10 @@ c2_\spp c^\ff
 @funindex decr
 
 Un crescendo est délimité par @code{\<} et @code{\!}, ou peut se
-terminer par une commande de nuance.  Au lieu de @code{\<}
-ou @code{\>}. 
+terminer par une commande de nuance explicite, ou bien un decrescendo ou un
+nouveau crescendo.  Il en va de même pour un diminuendo.  Au lieu de @code{\<}
+et @code{\>}, vous pouvez utiliser @code{\cr} et @code{\decr}, auquele
+cas LilyPond n'imprimera pas de @emph{soufflet}. 
 
 @lilypond[verbatim,quote,relative=2]
 c2\< c\!
@@ -233,9 +310,9 @@ d2\> d\>
 c1\!
 @end lilypond
 
-Ces indications sont attachées aux notes ; aussi si l'on veut
+Ces indications sont attachées aux notes@tie{}; aussi si l'on veut
 faire se succéder plusieurs nuances pendant une note tenue, il faudra
-avoir recours à des silences invisibles :
+avoir recours à des silences invisibles@tie{}:
 
 @cindex nuances successives sur une note tenue
 @cindex tenue et nuances successives
@@ -278,7 +355,7 @@ une notation textuelle.  Une ligne pointillée marque alors son étendue.
 Sont disponibles les commandes @code{\crescTextCresc},
 @code{\dimTextDecresc}, @code{\dimTextDecr}, et @code{\dimTextDim}.
 @code{\crescHairpin} et @code{\dimHairpin} permettent de revenir à des
-nuances en soufflet
+nuances en soufflet.
 
 @lilypond[verbatim,quote,relative=2]
 \crescTextCresc
@@ -406,7 +483,8 @@ parenthèses ou crochets) grâce aux étiquettes (@emph{mode markup}) ; l
 syntaxe en est abordée au chapitre @ref{Mise en forme du texte}.
 
 @lilypond[verbatim,quote]
-roundF = \markup { \center-align \concat { \bold { \italic ( }
+roundF = \markup {
+    \center-align \concat { \bold { \italic ( }
            \dynamic f \bold { \italic ) } } }
 boxF = \markup { \bracket { \dynamic f } }
 \relative c' {
@@ -430,7 +508,7 @@ sfzp = #(make-dynamic-script "sfzp")
 }
 @end lilypond
 
-@code{make-dynamic-script} accepte en argume tout objet de type
+@code{make-dynamic-script} accepte en argument tout objet de type
 @emph{markup}. Notez bien que la police des nuances ne contient que les
 caractères @code{f,m,p,r,s} et @code{z}, et que les marques de nuances
 possèdent des propriétés particulières et prédéfinies quant à leur
@@ -439,7 +517,7 @@ vous recommandons d'utiliser @code{\normal-text} pour annuler ces
 propriétés.  L'intérêt majeur de recourrir à la fonction
 @code{make-dynamic-script} plutôt qu'à un simple @emph{markup} réside
 dans l'assurance que ces objets personnalisés et les soufflets seront
-alignés lorsquattachés à une même note.
+alignés lorsqu'attachés à une même note.
 
 @lilypond[verbatim,quote]
 roundF = \markup { \center-align \concat {
@@ -462,7 +540,7 @@ mfEspressDynamic = #(make-dynamic-script mfEspress)
 @end lilypond
 
 La constrution d'une indication de nuance personnalisée peut aussi se
-faire en langage Scheme ; voir @ref{Construction Scheme d'un marqueur}
+faire en langage Scheme@tie{}; voir @ref{Construction Scheme d'un marqueur}
 pour en connaître les modalités.
 
 @lilypond[verbatim,quote]
@@ -482,7 +560,6 @@ L'utilisation des fontes en mode @emph{markup} est abordée au chapitre
 @seealso
 Manuel de notation :
 @ref{Mise en forme du texte},
-@ref{Sélection de la fonte et de la taille},
 @ref{Construction Scheme d'un marqueur},
 @ref{Contenu de la sortie MIDI},
 @ref{Gestion des nuances en MIDI}.
@@ -490,6 +567,9 @@ Manuel de notation :
 Morceaux choisis :
 @rlsr{Expressive marks}.
 
+Manuel d'extension :
+@rextend{Sélection de la fonte et de la taille},
+
 
 @node Courbes
 @subsection Courbes
@@ -565,7 +645,7 @@ plus courtes, utilisez des @ref{Liaisons de phrasé}.
 @funindex slurSolid
 
 Une liaison est par défaut dessinée d'une ligne pleine.  Il est aussi
-possible de l'imprimer sous la forme de tirets ou en pointillé :
+possible de l'imprimer sous la forme de tirets ou en pointillé@tie{}:
 
 @lilypond[verbatim,quote,relative=1]
 c4( e g2)
@@ -603,7 +683,7 @@ g4( e c2)
 
 @cindex liaison, densité des tirets
 
-Vous pouvez même personnaliser la densité des tirets d'une liaison :
+Vous pouvez même personnaliser la densité des tirets d'une liaison@tie{}:
 
 @lilypond[verbatim,quote,relative=1]
 c4( e g2)
@@ -671,6 +751,9 @@ Référence des propriétés internes :
 @cindex liaisons de phrasé
 @cindex phrasé, liaisons de
 
+@funindex \(
+@funindex \)
+
 Une liaison de phrasé relie plusieurs notes en délimitant une phrase
 musicale.  On indique les points de départ et d'arrivée avec @code{\(}
 et @code{\)} respectivement.
@@ -718,7 +801,7 @@ Il n'est pas possible d'avoir plusieurs liaisons de phrasé en même temps.
 @funindex phrasingSlurSolid
 
 Une liaison est par défaut dessinée d'une ligne pleine.  Il est aussi
-possible de l'imprimer sous la forme de tirets ou en pointillé :
+possible de l'imprimer sous la forme de tirets ou en pointillé@tie{}:
 
 @lilypond[verbatim,quote,relative=1]
 c4\( e g2\)
@@ -756,7 +839,7 @@ g4\( e c2\)
 
 @cindex liaison, densité des tirets
 
-Vous pouvez même personnaliser la densité des tirets d'une liaison :
+Vous pouvez même personnaliser la densité des tirets d'une liaison@tie{}:
 
 @lilypond[verbatim,quote,relative=1]
 c4\( e g2\)
@@ -807,6 +890,7 @@ Référence des propriétés internes :
 @translationof Breath marks
 
 @cindex respiration, indication
+@cindex point d'arrêt
 
 @funindex \breathe
 @funindex breathe
@@ -818,8 +902,16 @@ Les indications de respiration sont indiquées par la commande
 c2. \breathe d4
 @end lilypond
 
+Un signe de respiration interrompt obligatoirement les ligatures, même
+automatiques.  Pour passer outre ce fonctionnement, voir
+@ref{Ligatures manuelles}.
+
+@lilypond[verbatim,quote,relative=2]
+c8 \breathe d e f g2
+@end lilypond
+
 LilyPond gère les @emph{divisiones}, signes utilisés en notation
-ancienne pour indiquer les respirations. Pour de plus amples détails,
+ancienne pour indiquer les respirations.  Pour de plus amples détails,
 voir @ref{Divisions}. 
 
 
@@ -845,7 +937,9 @@ Morceaux choisis :
 @rlsr{Expressive marks}.
 
 Référence des propriétés internes :
-@rinternals{BreathingSign}.
+@rinternals{BreathingEvent},
+@rinternals{BreathingSign},
+@rinternals{Breathing_sign_engraver}.
 
 
 @node Chutes et sauts
@@ -866,6 +960,8 @@ l'intervalle avec la note de départ.
 @lilypond[verbatim,quote,relative=2]
 c2-\bendAfter #+4
 c2-\bendAfter #-4
+c2-\bendAfter #+6.5
+c2-\bendAfter #-6.5
 c2-\bendAfter #+8
 c2-\bendAfter #-8
 @end lilypond
@@ -967,7 +1063,7 @@ le long de la ligne de glissando.
 @funindex arpeggioNormal
 
 On peut indiquer qu'un accord doit être arpégé en lui accolant la
-commande @code{\arpeggio} :
+commande @code{\arpeggio}@tie{}:
 
 @lilypond[verbatim,quote,relative=1]
 <c e g c>1\arpeggio
@@ -998,7 +1094,7 @@ LilyPond dispose de différents graphismes pour indiquer un arpège.
 @funindex \arpeggioParenthesisDashed
 @funindex arpeggioParenthesisDashed
 
-Des crochets indiquent que l'accord devra être plaqué et non arpégé :
+Des crochets indiquent que l'accord devra être plaqué et non arpégé@tie{}:
 
 @lilypond[verbatim,quote,relative=1]
 <c e g c>2
@@ -1016,9 +1112,9 @@ Des crochets indiquent que l'accord devra être plaqué et non arpégé :
 <c e g c>2\arpeggio
 @end lilypond
 
-@c pas trouvé cette propriété, ou alors mal lu ? jcm
-@c The dash properties of the parenthesis arpeggio are controlled
-@c with the @code{'dash-details} property, which is described at @ref{Slurs}.
+Les indications d'arpeggio peuvent se présenter sous la forme de ligne
+discontinue à l'aide de la propriété  @code{'dash-details}.  Pour plus
+de détails à ce propos, consultez @ref{Liaisons d'articulation}.
 
 Un arpège peut parfois s'écrire de manière explicite, à l'aide de
 liaisons de tenue.  Pour plus d'information, voir 
@@ -1091,25 +1187,48 @@ forme de parenthèse.
 @funindex stopTrillSpan
 
 Les trilles brefs s'indiquent comme n'importe quelle ponctuation, avec un
-simple @code{\trill} ; voir @ref{Articulations et ornements}.
+simple @code{\trill}@tie{}; voir @ref{Articulations et ornements}.
 
 
 Les trilles plus longs sont délimités par @code{\startTrillSpan} et
-@code{\stopTrillSpan} :
+@code{\stopTrillSpan}@tie{}:
 
 @lilypond[verbatim,quote,relative=2]
-d1~\startTrillSpan
+d1\startTrillSpan
+d1
+c2\stopTrillSpan r2
+@end lilypond
+
+Lorsqu'un saut de ligne intervient alors qu'une prolongation de trille
+est présente, l'indication de trille et sa prolongation sont rappellées
+sur la première note de la nouvelle ligne@tie{}:
+
+@lilypond[ragged-right,verbatim,quote,relative=2]
+d1\startTrillSpan
+\break
 d1
 c2\stopTrillSpan r2
 @end lilypond
 
+Lorsque des trilles interviennent sur une succession de hauteurs
+différentes, point n'est besoin d'expliciter la commande
+@code{\stopTrillSpan} puisque l'apparition d'un nouveau trille
+interrompt de fait celui qui le précédait@tie{}:
+
+@lilypond[verbatim,quote,relative=2]
+d1\startTrillSpan
+d1
+b1\startTrillSpan
+d2\stopTrillSpan r2
+@end lilypond
+
 Dans l'exemple suivant, un trille se combine avec des notes d'ornement.
 La syntaxe d'une telle construction ainsi que le moyen de positionner
 les notes d'ornement avec précision est expliquée dans 
 @ref{Notes d'ornement}.
 
 @lilypond[verbatim,quote,relative=2]
-c1 \afterGrace
+d1~\afterGrace
 d1\startTrillSpan { c32[ d]\stopTrillSpan }
 e2 r2
 @end lilypond
@@ -1121,31 +1240,36 @@ e2 r2
 
 Les trilles qui font intervenir une hauteur précise peuvent être
 indiqués par la commande @code{pitchedTrill}.  Le premier argument est
-la note réelle ; le second est une hauteur qui sera imprimée comme une
-tête de note noire entre parenthèses. 
+la note réelle@tie{}; le second est une hauteur qui sera imprimée comme
+une tête de note noire entre parenthèses. 
 
-@lilypond[verbatim,quote,relative=1]
-\pitchedTrill e2\startTrillSpan fis
-d\stopTrillSpan
+@lilypond[verbatim,quote,relative=2]
+\pitchedTrill
+e2\startTrillSpan fis
+d2 c2\stopTrillSpan
 @end lilypond
 
 @cindex trilles avec hauteur explicite et altération
 @cindex altération, trilles avec hauteur explicite
 
-Dans l'exemple suivant, le deuxième trille est ambigu -- le fa qui est
-forcé n'est pas diésé.  Pour lever toute ambiguité, il suffit de forcer
-l'impression de l'altération -- en ajoutant un @code{!} -- comme dans
-la deuxième mesure. 
+Dans l'exemple suivant, le second trille de la deuxième mesure est
+ambigu -- le fa qui est forcé n'est pas diésé.  Pour lever toute
+ambiguïté, il suffit de forcer l'impression de l'altération en
+ajoutant un @code{!} à la note considérée.
 
 @lilypond[verbatim,quote,relative=2]
-\pitchedTrill eis4\startTrillSpan fis
-g\stopTrillSpan
-\pitchedTrill eis4\startTrillSpan fis
-g\stopTrillSpan
-\pitchedTrill eis4\startTrillSpan fis
-g\stopTrillSpan
-\pitchedTrill eis4\startTrillSpan fis!
-g\stopTrillSpan
+\pitchedTrill
+eis4\startTrillSpan fis
+eis4\stopTrillSpan
+\pitchedTrill
+eis4\startTrillSpan cis
+eis4\stopTrillSpan
+\pitchedTrill
+eis4\startTrillSpan fis
+eis4\stopTrillSpan
+\pitchedTrill
+eis4\startTrillSpan fis!
+eis4\stopTrillSpan
 @end lilypond
 
 
index 9cd5d9b149b653e2bac582aa6c1969d05fe89d98..81cc19aeb45d5a2bb76ff905bca3ddba4eef7ab6 100644 (file)
@@ -23,12 +23,12 @@ Cette section traite du rythme : durées, silences, barres de ligature
 et de mesure.
 
 @menu
-* Écriture du rythme::             
-* Écriture des silences::               
-* Gravure du rythme::          
-* Barres de ligature::                       
-* Mesures::                        
-* Fonctionnalités rythmiques particulières::   
+* Écriture du rythme::
+* Écriture des silences::
+* Gravure du rythme::
+* Barres de ligature::
+* Mesures::
+* Fonctionnalités rythmiques particulières::
 @end menu
 
 
@@ -37,10 +37,10 @@ et de mesure.
 @translationof Writing rhythms
 
 @menu
-* Durées::                   
-* Nolets::                     
-* Changement d'échelle des durées::           
-* Liaisons de prolongation::                        
+* Durées::
+* Nolets::
+* Changement d'échelle des durées::
+* Liaisons de prolongation::
 @end menu
 
 @node Durées
@@ -90,7 +90,7 @@ c4 c8 c16 c32 c64 c64
 
 Une note dont la durée est de quatre brèves s'obtient par la commande
 @code{\maxima}.  Celle-ci n'est toutefois disponible que dans le cadre de
-la notation ancienne.  Pour plus de détails, voir @ref{Notations anciennes}. 
+la notation ancienne.  Pour plus de détails, voir @ref{Notations anciennes}.
 
 @cindex durée par défaut
 @cindex défaut, durée
@@ -124,10 +124,10 @@ mais uniquement en @qq{liant} deux ou plusieurs notes entre elles.  Voir
 @ref{Liaisons de prolongation} à ce sujet.
 
 Quant à la manière de spécifier la durée des syllabes ou bien d'aligner
-des paroles par rapport aux notes, reportez-vous au chapitre 
+des paroles par rapport aux notes, reportez-vous au chapitre
 @ref{Musique vocale}.
 
-Espacer les notes selon leur durée relative est tout à fait possible.  
+Espacer les notes selon leur durée relative est tout à fait possible.
 Pour plus de détails à ce sujet et sur les autres réglages propres à
 cette forme de notation, reportez-vous à @ref{Notation proportionnelle}.
 
@@ -181,8 +181,8 @@ Manuel des références internes :
 @knownissues
 
 @c Deliberately duplicated in Durations and Rests.  -gp
-Il n'existe pas à proprement parler de limite (inférieure ou supérieure) 
-en terme de durée d'un silence.  Cependant, le nombre de glyphes 
+Il n'existe pas à proprement parler de limite (inférieure ou supérieure)
+en terme de durée d'un silence.  Cependant, le nombre de glyphes
 disponibles ne couvre que les silences allant du trente-deuxième de
 soupir à la maxime (valant huit pauses).
 
@@ -208,8 +208,8 @@ fraction.
 @noindent
 La durée de @var{expression_musicale} sera multipliée par la fraction.
 Le dénominateur de cette fraction sera imprimé au-dessus ou au-dessous
-des notes, parfois avec un crochet.  Le nolet le plus courant est le 
-triolet, dans lequel 3 notes ont la durée de 2, et où les notes durent 
+des notes, parfois avec un crochet.  Le nolet le plus courant est le
+triolet, dans lequel 3 notes ont la durée de 2, et où les notes durent
 donc 2/3 de leur valeur écrite.
 
 @lilypond[quote,verbatim,relative=2]
@@ -228,7 +228,7 @@ c4 c \times 2/3 { b4 a g }
 
 Des commandes prédéfinies permettent de déroger au positionnement
 automatique du crochet en surplomb ou au-dessous des notes -- voir le
-chapitre @ref{Direction et positionnement}.  
+chapitre @ref{Direction et positionnement}.
 
 Les nolets peuvent être imbriqués ; par exemple,
 
@@ -236,7 +236,7 @@ Les nolets peuvent être imbriqués ; par exemple,
 \autoBeamOff
 c4 \times 4/5 { f8 e f \times 2/3 { e[ f g] } } f4 |
 @end lilypond
+
 Lorsque, dans une imbrication, les nolets débutent au même instant, il
 vous faut recourir à la commande @code{\tweak}.
 
@@ -281,7 +281,7 @@ Music Glossary:
 @rglos{tuplet},
 @rglos{polymetric}.
 
-Manuel d'apprentissage : 
+Manuel d'apprentissage :
 @rlearning{Méthodes de retouche}.
 
 Manuel de notation :
@@ -408,7 +408,7 @@ a2 ~ a
 
 @noindent
 Les liaisons de tenue sont utilisées soit lorsque la note dépasse de la
-mesure, soit quand les points ne suffisent pas à donner la bonne durée.  
+mesure, soit quand les points ne suffisent pas à donner la bonne durée.
 Lorsque l'on utilise ces liaisons, les valeurs rythmiques les plus
 longues doivent s'aligner sur les subdivisions de la mesure, comme ici :
 
@@ -557,7 +557,7 @@ Glossaire musical :
 @rglos{tie},
 @rglos{laissez vibrer}.
 
-Dans ce manuel : 
+Dans ce manuel :
 @ref{Découpage automatique des notes}.
 
 Morceaux choisis :
@@ -586,12 +586,12 @@ résultat indéfini.  Dans ces cas-là, il est préférable d'utiliser un
 @translationof Writing rests
 
 On saisit les silences dans une expression musicale tout comme les
-notes. 
+notes.
 
 @menu
-* Silences::                       
-* Silences invisibles::             
-* Silences valant une mesure::          
+* Silences::
+* Silences invisibles::
+* Silences valant une mesure::
 @end menu
 
 @node Silences
@@ -728,15 +728,15 @@ requiert une durée explicite.
 @end lilypond
 
 La commande de saut génère simplement une case musicale vide.  Le code
-de saut @code{s} crée tout de même les contextes @code{Staff} et 
-@code{Voice} lorsque nécessaire, à l'instar des notes ou des silences : 
+de saut @code{s} crée tout de même les contextes @code{Staff} et
+@code{Voice} lorsque nécessaire, à l'instar des notes ou des silences :
+
 @lilypond[quote,verbatim,fragment]
 s1 s s
 @end lilypond
 
 Un @code{\skip} ne fait que sauter du temps musical ; il ne produit rien
-du tout, pas même un symbole transparent. 
+du tout, pas même un symbole transparent.
 
 @lilypond[quote,verbatim,fragment]
 % This is valid input, but does nothing
@@ -765,7 +765,7 @@ Référence du programme :
 @funindex R
 
 Un silence valant une ou plusieurs mesures entières s'entre avec un
-@code{R} majuscule. 
+@code{R} majuscule.
 
 @lilypond[quote,verbatim,relative=2]
 % Rest measures contracted to single measure
@@ -845,7 +845,7 @@ R2.*2 |
 @funindex \fermataMarkup
 @funindex fermataMarkup
 @funindex MultiMeasureRestText
+
 Vous pouvez aussi ajouter du texte à un silence multimesure en utilisant
 la syntaxe @var{note}-@code{markup} (cf. @ref{Mise en forme du texte}).  La
 variable @code{\fermataMarkup} quant à elle permet d'ajouter un point
@@ -946,15 +946,15 @@ positionner des nombres au dessus d'un silence multimesure, le numéro
 de doigt (4) risquant de chevaucher le nombre de mesures à compter (10).
 
 @cindex condenser les silences
-@cindex silences, condenser les 
+@cindex silences, condenser les
 
-Condenser plusieurs silences en un unique silence multimesure ne peut 
-être automatisé.  
+Condenser plusieurs silences en un unique silence multimesure ne peut
+être automatisé.
 
 @cindex silences, collisions entre
 
 Les silences multimesure peuvent générer des collisions avec d'autres
-silences. 
+silences.
 
 
 @node Gravure du rythme
@@ -962,12 +962,12 @@ silences.
 @translationof Displaying rhythms
 
 @menu
-* Métrique::              
-* Levées::                     
-* Musique sans métrique::             
-* Notation polymétrique::         
-* Découpage automatique des notes::    
-* Gravure de lignes rythmiques::      
+* Métrique::
+* Levées::
+* Musique sans métrique::
+* Notation polymétrique::
+* Découpage automatique des notes::
+* Gravure de lignes rythmiques::
 @end menu
 
 @node Métrique
@@ -996,7 +996,7 @@ La métrique est imprimée en début de morceau, et à chaque fois qu'elle
 est modifiée.  Si cette modification intervient au niveau d'un saut de
 ligne, une métrique @qq{de précaution} sera imprimée avant de passer à
 la ligne suivante.  Ce comportement par défaut peut être modifié, comme
-indiqué au chapitre @ref{Visibilité des objets}. 
+indiqué au chapitre @ref{Visibilité des objets}.
 
 @lilypond[quote,verbatim,relative=2]
 \time 2/4
@@ -1034,7 +1034,7 @@ changé pour un style numérique :
 @end lilypond
 
 
-Les métriques anciennes sont abordées au chapitre 
+Les métriques anciennes sont abordées au chapitre
 @ref{Métriques anciennes}.
 
 
@@ -1070,8 +1070,8 @@ Morceaux choisis :
 Références internes :
 @rinternals{TimeSignature},
 @rinternals{Timing_translator}.
+
+
 @node Levées
 @unnumberedsubsubsec Levées
 @translationof Upbeats
@@ -1137,7 +1137,7 @@ Références internes :
 
 @knownissues
 
-@code{\partial} n'est destiné à être utilisé qu'en début de pièce.  
+@code{\partial} n'est destiné à être utilisé qu'en début de pièce.
 Si on l'utilise ailleurs qu'au début, des messages d'erreurs peuvent
 s'afficher.
 
@@ -1263,7 +1263,7 @@ Il suffit, pour obtenir cette forme de notation, de tout d'abord affecter
 une même métrique aux différentes portées.  L'indicateur de métrique sera
 ensuite remplacé dans chacune des portées par un quotient donné en
 argument à la propriété @code{timeSignatureFraction}.  La durée des
-notes sera enfin proratisée selon la métrique commune (voir 
+notes sera enfin proratisée selon la métrique commune (voir
 @ref{Métrique}) grâce à la fonction @code{\scaleDurations}, qui
 s'utilise tout comme la commande @code{\times} -- sans toutefois créer
 de crochet de nolet (voir @ref{Changement d'échelle des durées}).
@@ -1272,7 +1272,7 @@ de crochet de nolet (voir @ref{Changement d'échelle des durées}).
 @cindex polymétrie et ligature
 
 L'exemple suivant utilise parallèlement des mesures à 3/4, 9/8 et
-10/8.  Pour la deuxième portée les durées sont multipliées par 2/3 
+10/8.  Pour la deuxième portée les durées sont multipliées par 2/3
 de telle sorte que @w{2/3 * 9/8 = 3/4} ; pour la troisième elles sont
 multipliées par 3/5, de telle sorte que @w{3/5 * 10/8 = 3/4}.  Les
 ligatures devront être explicites, la fonction d'échelonnement venant
@@ -1531,10 +1531,10 @@ Référence du programme :
 @translationof Beams
 
 @menu
-* Barres de ligature automatiques::             
-* Définition des règles de ligature automatique::  
-* Barres de ligature manuelles::                
-* Liens de croches en soufflet::             
+* Barres de ligature automatiques::
+* Définition des règles de ligature automatique::
+* Barres de ligature manuelles::
+* Liens de croches en soufflet::
 @end menu
 
 @node Barres de ligature automatiques
@@ -1559,7 +1559,7 @@ d'imprimer les ligatures.
 @end lilypond
 
 Lorsque ce comportement automatisé n'est pas satisfaisant, on peut
-définir des groupements manuellement -- voir 
+définir des groupements manuellement -- voir
 @ref{Barres de ligature manuelles}.  Dans le cas où le groupe de notes
 en question contient un silence, il est @strong{impératif} d'indiquer
 explicitement les début et fin de la ligature.
@@ -1643,9 +1643,10 @@ altérations appartenant à d'autres voix.
 @cindex paroles et ligatures
 
 @funindex autoBeaming
-@funindex beamSettings
+@funindex beamExceptions
+@funindex baseMoment
+@funindex beatStructure
 @funindex measureLength
-@funindex beatLength
 @funindex \time
 @funindex time
 @funindex \set
@@ -1669,7 +1670,7 @@ toujours respectée ; sinon
 sinon
 
 @item si une règle explicite de terminaison a été définie pour un type
-de ligature dans la métrique en cours, c'est elle qui s'appliquera ; sinon 
+de ligature dans la métrique en cours, c'est elle qui s'appliquera ; sinon
 
 @item if a default beam-ending rule is defined in the time signature,
 use it to group notes with beams, otherwise
@@ -1693,7 +1694,7 @@ pour plus d'information, consultez @ref{Gestion du temps}.
 Les règles de ligature et de subdivision sont enregistrées dans la
 propriété @code{beamSettings}. Ses valeurs par défaut, rangées par
 métrique et type de règle,  sont contenues dans le fichier
-@code{scm/@/beam@/-settings@/.scm}. 
+@code{scm/@/beam@/-settings@/.scm}.
 
 La métrique est constituée d'une paire en langage Scheme -- p.ex.
 @w{@code{#'(4 . 4)}}.
@@ -1703,7 +1704,7 @@ terminaisons, soit @code{#'subdivide} pour les subdivisions.
 
 Chaque règle, qu'il s'agisse de terminaison ou de subdivision, est
 constituée d'une liste de paires en langage Scheme (un @emph{alist} pour
-les puristes), qui indique le durée de base et sa règle de regroupement. 
+les puristes), qui indique le durée de base et sa règle de regroupement.
 
 @example
 #'((durée-type1 . groupement-1)
@@ -1714,24 +1715,24 @@ les puristes), qui indique le durée de base et sa règle de regroupement.
 @var{durée-type} est soit constitué d'une paire indiquant la durée de
 base -- par exemple @w{@code{(1 . 16)}}, soit du caractère @code{*} pour
 indiquer une règle par défaut qui s'appliquera à toutes les ligatures en
-l'absence de règle explicite. 
+l'absence de règle explicite.
 
 @var{groupement} est constitué d'une liste Scheme qui indique le
 regroupement à effectuer.  En ce qui concerne les règles par défaut --
 celles où la durée type est @code{*} -- le regroupement s'indique
 en terme de @code{beatLength} ;  pour les règles explicites, en durée
-type. 
+type.
 
-Les règles de ligature automatique se modifient à l'aide des commandes 
+Les règles de ligature automatique se modifient à l'aide des commandes
 @code{\overrideBeamSettings} et @code{\revertBeamSettings}.
 
 @lilypond[quote,relative=2,verbatim]
-  \time 5/16
-  c8^"beats" c16 c8 |
-  \overrideBeamSettings #'Score #'(5 . 16) #'end #'((* . (2 3)))
-  c8^"(2+3)" c16 c8
-  \overrideBeamSettings #'Score #'(5 . 16) #'end #'((* . (3 2)))
-  c8^"(3+2)" c16 c8
+\time 5/16
+c8^"beats" c16 c8 |
+\set beatStructure = #'(2 3)
+c8^"(2+3)" c16 c8
+\set beatStructure = #'(3 2)
+c8^"(3+2)" c16 c8
 @end lilypond
 
 Les effets de règles de ligature peuvent être restreints à un contexte
@@ -1740,22 +1741,24 @@ contexte de niveau inférieur, les règles définies au niveau directement
 supérieur s'appliqueront.
 
 @lilypond[quote, verbatim,relative=1]
-\new Staff <<
+\new Staff {
   \time 7/8
-  \new Voice = one {
-    \relative c'' {
-      \overrideBeamSettings #'Staff #'(7 . 8) #'end #'((* . (2 3 2)))
+  \set Staff.beatStructure = #'(2 3 2)
+  <<
+    \new Voice = one {
+      \relative c'' {
         a8 a a a a a a
+      }
     }
-  }
-  \new Voice  = two {
-    \relative c' {
-      \voiceTwo
-      \overrideBeamSettings #'Voice #'(7 . 8) #'end #'((* . (1 3 3)))
-      f8 f f f f f f
+    \new Voice  = two {
+      \relative c' {
+        \voiceTwo
+        \set Voice.beatStructure = #'(1 3 3)
+        f8 f f f f f f
+      }
     }
-  }
->>
+  >>
+}
 @end lilypond
 
 Lorsque plusieurs voix cohabitent sur une même portée et que les règles
@@ -1765,14 +1768,14 @@ ces règles affectent le contexte @code{Staff} :
 @lilypond[quote,verbatim,relative=2]
 \time 7/8
 % rhythm 3-1-1-2
-% Context Voice specified - does not work correctly
+% Context Voice specified - does not work correctly
 % Because of autogenerated voices, all beating will
-% be at beatLength (1 . 8)
-\overrideBeamSettings #'Voice #'(7 . 8) #'end #'((* . (3 1 1 2)))
+% be at baseMoment (1 . 8)
+\set beatStructure = #'(3 1 1 2)
 << {a8 a a a16 a a a a8 a} \\ {f4. f8 f f f} >>
 
 % Works correctly with context Staff specified
-\overrideBeamSettings #'Staff #'(7 . 8) #'end #'((* . (3 1 1 2)))
+\set Staff.beatStructure = #'(3 1 1 2)
 << {a8 a a a16 a a a a8 a} \\ {f4. f8 f f f} >>
 @end lilypond
 
@@ -1790,13 +1793,13 @@ règles de regroupement.
 
 @lilypond[quote,verbatim,relative=2]
 \time 4/4
-\repeat unfold 16 {a16}
-% set default rule for (1 1 1 1) grouping
-\overrideBeamSettings #'Score #'(4 . 4) #'end #'((* . (1 1 1 1)))
-\repeat unfold 16 {a16}
-% revert the new rule
-\revertBeamSettings #'Score #'(4 . 4) #'end
-\repeat unfold 16 {a16}
+\repeat unfold 8 {a8}
+% set beaming rule for ending all beams at (1 . 4)
+\set Timing.beamExceptions = #'()
+\repeat unfold 8 {a8}
+% go back to default beahavior
+\time 4/4
+\repeat unfold 8 {a8}
 @end lilypond
 
 @snippets
@@ -1804,7 +1807,7 @@ règles de regroupement.
 @cindex beams, subdividing
 
 @lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
-{sub-dividing-beams.ly}
+{subdividing-beams.ly}
 
 @cindex measure groupings
 @cindex beats, grouping
@@ -1883,7 +1886,7 @@ Lorsque l'une ou l'autre de ces propriétés est définie, elle ne
 s'applique qu'une seule fois, après quoi sa définition est effacée.
 Dans l'exemple qui suit, le dernier @code{fa} n'a de ligature
 supplémentaire que sur sa gauche ; autrement dit, c'est la ligature à la
-croche qui est importante. 
+croche qui est importante.
 
 @lilypond[quote,relative=2,verbatim]
 a8[ r16 f g a]
@@ -1952,7 +1955,7 @@ quatre dernières gardent un tempo régulier.
 @noindent
 Si le résultat imprimable ne reflète les durées que de manière
 approximative, la sortie MIDI sera quant à elle parfaitement
-@qq{ponctuelle}. 
+@qq{ponctuelle}.
 
 @knownissues
 
@@ -1971,10 +1974,10 @@ Morceaux choisis :
 
 
 @menu
-* Barres de mesure::                   
-* Numéros de mesure::                 
-* Vérification des limites et numéros de mesure::   
-* Indications de repère::             
+* Barres de mesure::
+* Numéros de mesure::
+* Vérification des limites et numéros de mesure::
+* Indications de repère::
 @end menu
 
 @node Barres de mesure
@@ -2027,7 +2030,7 @@ de barre de mesure visible, en utilisant :
 Ceci insérera une barre de mesure invisible, et permettra -- sans pour
 autant le forcer -- de sauter de ligne à cet endroit, sans incrémenter
 le numéro de mesure. Pour forcer le saut de ligne, référez-vous à
-@ref{Sauts de ligne}. 
+@ref{Sauts de ligne}.
 
 @cindex manuelle, barre de mesure
 @cindex barre de mesure manuelle
@@ -2038,7 +2041,7 @@ d'une mesure, elles remplacent la simple barre que LilyPond aurait
 insérée automatiquement.  Dans le cas contraire, la barre spécifiée
 s'insérera là où vous l'aurez positionnée.  Ces insertions n'affectent
 en rien le calcul du positionnement automatique des barres de mesure à
-suivre. 
+suivre.
 
 Vous disposez de deux types de barres simples et de cinq différentes
 doubles barres :
@@ -2117,7 +2120,7 @@ d'un @code{GrandStaff}.
 
 
 @cindex barre de mesure par défaut, modification du style
-@cindex modification du style par défaut des barres de mesure 
+@cindex modification du style par défaut des barres de mesure
 
 @snippets
 
@@ -2128,26 +2131,26 @@ d'un @code{GrandStaff}.
 @funindex bartype
 
 
-La commande @code{\bar }@var{type_de_barre} sert de raccourci pour 
+La commande @code{\bar }@var{type_de_barre} sert de raccourci pour
 @code{\set Timing.whichBar = }@var{type_de_barre}.  Dès que l'on définit
 @code{whichBar}, une barre de mesure est créée selon le style défini.
 
-Le type de barre de mesure par défaut utilisé pour l'insertion 
+Le type de barre de mesure par défaut utilisé pour l'insertion
 automatique est @code{"|"}.  Vous pouvez en changer à tout moment grâce
 à @code{\set@tie{}Timing.defaultBarType@tie{}=@tie{}}@var{type_de_barre}.
 
 
 @seealso
-Dans ce manuel : 
-@ref{Sauts de ligne}, 
-@ref{Répétitions et reprises}, 
+Dans ce manuel :
+@ref{Sauts de ligne},
+@ref{Répétitions et reprises},
 @ref{Regroupement de portées}.
 
 Morceaux choisis :
 @rlsr{Rhythms}.
 
-Référence du programme : 
-@rinternals{BarLine} (faisant partie du contexte @rinternals{Staff}), 
+Référence du programme :
+@rinternals{BarLine} (faisant partie du contexte @rinternals{Staff}),
 @rinternals{SpanBar} (sur plusieurs portées),
 @rinternals{Timing_translator} (pour les propriétés liées au temps).
 
@@ -2229,7 +2232,7 @@ c1 | c | c | c
 Morceaux choisis :
 @rlsr{Rhythms}.
 
-Référence du programme : 
+Référence du programme :
 @rinternals{BarNumber}.
 
 
@@ -2435,19 +2438,19 @@ Pour affiner le positionnement des repères, veuillez vous référer à
 
 
 @seealso
-Dans ce manuel : 
+Dans ce manuel :
 @ref{La fonte Feta},
 @ref{Mise en forme du texte}.
 
-Fichiers d'initialisation : 
+Fichiers d'initialisation :
 @file{scm/@/translation@/-functions@/.scm} contient les définitions de
 @code{format-mark-numbers} et @code{format-mark-letters}.  Elles seront
 source d'inspiration pour d'autres fonctions de formatage.
 
-Morceaux choisis : 
+Morceaux choisis :
 @rlsr{Rhythms}.
 
-Référence du programme : 
+Référence du programme :
 @rinternals{RehearsalMark}.
 
 
@@ -2457,9 +2460,9 @@ Référence du programme :
 
 
 @menu
-* Notes d'ornement::                 
-* Alignement et cadences::        
-* Gestion du temps::         
+* Notes d'ornement::
+* Alignement et cadences::
+* Gestion du temps::
 @end menu
 
 @node Notes d'ornement
@@ -2600,13 +2603,13 @@ Glossaire musicologique :
 @rglos{acciaccatura},
 @rglos{appoggiatura}.
 
-Fichiers source : 
+Fichiers source :
 @file{ly/@/grace@/-init@/.ly}.
 
-Morceaux choisis : 
+Morceaux choisis :
 @rlsr{Rhythms}.
 
-Référence du programme : 
+Référence du programme :
 @rinternals{GraceMusic}.
 
 
@@ -2664,7 +2667,7 @@ Dans un contexte orchestral, une cadence constitue un problème
 spécifique.  Lors du montage d'une partition contenant une cadence,
 tous les autres instruments doivent sauter autant de notes que ce
 qu'en comporte la cadence, faute de quoi ils démarreraient trop tôt ou
-trop tard. 
+trop tard.
 
 Les fonctions @code{mmrest-of-length} ou @code{skip-of-length}
 permettent de résoudre ce problème.  Ces fonctions Scheme prennent en
@@ -2771,8 +2774,8 @@ Par conséquent, @code{ly:make-moment 1 8} correspond à une croche, et
 
 
 @seealso
-Dans ce manuel : 
-@ref{Numéros de mesure}, 
+Dans ce manuel :
+@ref{Numéros de mesure},
 @ref{Musique sans métrique}
 
 Morceaux choisis :
index fe1c0e1f71510d5888d102429c23c86a31941ca1..70064277043d2215e207a25775998a9091489d62 100644 (file)
@@ -1,6 +1,6 @@
 @c -*- coding: utf-8; mode: texinfo; documentlanguage : fr -*-
 @ignore
-    Translation of GIT committish: 68cf70682a542701a918f8bfff50f2b8b85f84e2
+    Translation of GIT committish: 7c9a0da142b6037180d557f12ba1ada366226606
 
     When revising a translation, copy the HEAD committish of the
     version that you are working on.  For details, see the Contributors'
@@ -828,9 +828,9 @@ with Constraint Satisfaction Programming}, International Computer
 Music Conference 2008.
 
 @item
-A. Passos, M. Silva, P. Kroger, et G. Cidra,
+Alexandre Tachard Passos, Marcos Sampaio, Pedro Kröger, Givaldo de Cidra,
 @emph{Functional Harmonic Analysis and Computational Musicology
-in Rameau}, Proceedings of the 12th Brazilian Symposium on Compute
+in Rameau}, Proceedings of the 12th Brazilian Symposium on Computer
 Music, 2009, p. 207-210.
 
 @item
@@ -840,7 +840,7 @@ New Trends in Artificial Intelligence, 2007 J. Neves et al ed.
 
 @item
 
-Kevin C. Baird 2005.
+Kevin C. Baird 2005,
 @emph{Real-time generation of music notation via audience interaction using
 python and GNU lilypond}. Proceedings of the 2005 Conference on New interfaces
 For Musical Expression (Vancouver, Canada, May 26 - 28, 2005).
index 28e277f9849fe1a185f5558fbcd5e14a012fec59..3ba9edc3ec8c8f432a253042b9d6b228cbb4ba3a 100644 (file)
@@ -1,7 +1,7 @@
 @c -*- coding: utf-8; mode: texinfo; documentlanguage: fr -*-
 @c This file is part of web.texi
 @ignore
-    Translation of GIT committish: 22b6ca7247b6f0d596934d38aa2c75d5e45206eb
+    Translation of GIT committish: 7c9a0da142b6037180d557f12ba1ada366226606
 
     When revising a translation, copy the HEAD committish of the
     version that you are working on.  For details, see the Contributors'
@@ -584,8 +584,7 @@ partitions de musique sacrée de grande qualité, disponibles
 immédiatement en téléchargement ou sous forme de partition imprimable.
 
 @item
-@uref{http://theshadylanepublishing.com/, The Shady Lane
-Publishing},
+@uref{http://http://www.shadylane.fr/, The Shady Lane Publishing},
 est un @qq{micro-éditeur de partitions musicales} qui a pour but de
 promouvoir une nouvelle forme de pratique économique, plus proche des
 musiciens et amoureux de la musique.
index 74043244170a6b48465f942d7e0c5a61c48c2da1..05169ca42daaf667dc321fbea5a97dffb50fc5fe 100644 (file)
@@ -2819,6 +2819,79 @@ signature to each staff using our predefined variable, @code{\keyTime}.
 @}  % end Score context
 @end example
 
+@cindex stretchability of staves
+@cindex staves, stretchability
+
+The above layout of the organ staves is almost perfect; however,
+there is a slight defect which is not visible by looking at just a
+single system: The distance of the pedal staff to the left hand staff
+should behave approximately the same as the right hand staff to the
+left hand staff.  In particular, the stretchability of staves in a
+@code{PianoStaff} context is limited (so that the distance between
+the staves for the left and right hand can't become too large), and
+the pedal staff should behave similarly.
+
+@cindex sub-properties
+@cindex properties, sub-properties
+@cindex graphical objects
+@cindex objects, graphical
+@cindex grobs
+
+Stretchability of staves can be controlled with the
+@code{next-staff-spacing} property of the @code{VerticalAxisGroup}
+@q{graphical object} (commonly called @q{grob}s within the lilypond
+documentation) -- don't worry about the details right now; this is
+fully explained later.  For the curious, have a look at
+@ruser{Overview of modifying properties}.  Currently, it is not
+possible to modify the @code{stretchability} sub-property only, we
+thus have to copy the other sub-properties also.  Again, for the
+curious, you can find the default values in file
+@file{scm/@/define-grobs@/.scm} by looking up the definition of the
+@code{VerticalAxisGroup} grob.  The value for @code{stretchability}
+is taken from the definition of the @code{PianoStaff} context (in
+file @file{ly/@/engraver-init@/.ly}) so that the values are
+identical.
+
+@example
+\score @{
+  <<  % PianoStaff and Pedal Staff must be simultaneous
+    \new PianoStaff <<
+      \new Staff = "ManualOne" <<
+        \keyTime  % set key and time signature
+        \clef "treble"
+        \new Voice @{
+          \voiceOne
+          \ManualOneVoiceOneMusic
+        @}
+        \new Voice @{
+          \voiceTwo
+          \ManualOneVoiceTwoMusic
+        @}
+      >>  % end ManualOne Staff context
+      \new Staff = "ManualTwo" \with @{
+        \override VerticalAxisGroup
+          #'next-staff-spacing = #'((space . 9)
+                                    (minimum-distance . 8)
+                                    (padding . 1)
+                                    (stretchability . 5))
+      @} <<
+        \keyTime
+        \clef "bass"
+        \new Voice @{
+          \ManualTwoMusic
+        @}
+      >>  % end ManualTwo Staff context
+    >>  % end PianoStaff context
+    \new Staff = "PedalOrgan" <<
+      \keyTime
+      \clef "bass"
+      \new Voice @{
+        \PedalOrganMusic
+      @}
+    >>  % end PedalOrgan Staff
+  >>
+@}  % end Score context
+@end example
 That completes the structure.  Any three-staff organ music
 will have a similar structure, although the number of voices
 may vary.  All that remains now
@@ -2862,7 +2935,13 @@ PedalOrganMusic = \relative c {
           \ManualOneVoiceTwoMusic
         }
       >>  % end ManualOne Staff context
-      \new Staff = "ManualTwo" <<
+      \new Staff = "ManualTwo" \with {
+        \override VerticalAxisGroup
+          #'next-staff-spacing = #'((space . 9)
+                                    (minimum-distance . 8)
+                                    (padding . 1)
+                                    (stretchability . 5))
+      } <<
         \keyTime
         \clef "bass"
         \new Voice {
index d79ba1289d5116c0c610ede6484c96e511cca742..8440dd72ff63f08981c4933ccc048f44e223f251 100644 (file)
@@ -2908,7 +2908,7 @@ We end this section on Tweaks by showing the steps to be taken to
 deal with a tricky example which needs several tweaks to produce
 the desired output.  The example has been deliberately chosen to
 illustrate the use of the Notation Reference to resolve unusual
-problems with notation.  It is not representative of more usual
+problems with notation.  It is not representative of the more usual
 engraving process, so please do not let these difficulties put
 you off!  Fortunately, difficulties like these are not very common!
 
@@ -2921,38 +2921,46 @@ dynamics, fingering and pedalling.
 @c The following should appear as music without code
 @c This example should not be indexed
 @c line-width ensures no break
-@lilypond[quote,ragged-right,line-width=5.5\in]
+@lilypond[quote,ragged-right,line-width=6\in]
 rhMusic = \relative c'' {
-  r2 c4.\( g8 |
-  \once \override Tie #'staff-position = #3.5
-  bes1~ |
-  \bar "||"
-  \time 6/4
-  \mergeDifferentlyHeadedOn
-  \mergeDifferentlyDottedOn
-  bes2.^\markup { \bold "Moderato" } r8
-  <<
-    { c,8 d fis bes a }
-  \\
-    {
-      % Reposition the c2 to the right of the merged note
-      c,8~ \once \override NoteColumn #'force-hshift = #1.0
-      % Move the c2 out of the main note column so the merge will work
-      \shiftOnn c2
-    }
-  \\
-    {
-      % Stem on the d2 must be down to permit merging
-      s8 \stemDown
-      \once \override Stem #'transparent = ##t
-      d2
-    }
-  \\
-    { s4 fis4. }
-  >> |
-  \mergeDifferentlyHeadedOff
-  \mergeDifferentlyDottedOff
-  g2.\)
+  \new Voice {
+    r2 c4.\( g8 |
+    \once \override Tie #'staff-position = #3.5
+    bes1~ |
+    \bar "||"
+    \time 6/4
+    \mergeDifferentlyHeadedOn
+    \mergeDifferentlyDottedOn
+    bes2.^\markup { \bold "Moderato" } r8
+    <<
+      { c,8 d fis bes a }
+      \new Voice {
+        \voiceTwo
+        c,8~
+        % Reposition the c2 to the right of the merged note
+        \once \override NoteColumn #'force-hshift = #1.0
+        % Move the c2 out of the main note column so the merge will work
+        \shiftOnn
+        c2
+      }
+      \new Voice {
+        \voiceThree
+        s8
+        % Stem on the d2 must be down to permit merging
+        \stemDown
+        % Stem on the d2 should be invisible
+        \once \override Stem #'transparent = ##t
+        d2
+      }
+      \new Voice {
+        \voiceFour
+        s4 fis4.
+      }
+    >> |
+    \mergeDifferentlyHeadedOff
+    \mergeDifferentlyDottedOff
+    g2.\)
+  }
 }
 
 lhMusic = \relative c' {
@@ -2982,31 +2990,44 @@ requires four voices.  These are the five beamed eighth notes,
 the tied C, the half-note D which is merged with the eighth note
 D, and the dotted quarter note F-sharp, which is also merged with
 the eighth note at the same pitch.  Everything else is in a single
-voice, so the easiest way is to introduce these four voices
+voice, so the easiest way is to introduce these extra three voices
 temporarily at the time they are needed.  If you have forgotten
-how to do this, look at @ref{I'm hearing Voices}.  Let us begin
-by entering the notes as two variables and setting up the staff
-structure in a score block, and see what LilyPond produces by
-default:
+how to do this, look at @ref{I'm hearing Voices} and @ref{Explicitly
+instantiating voices}.  Here we choose to use explicitly instantiated
+voices for the polyphonic passage, as LilyPond is better able to
+avoid collisions if all voices are instantiated explicitly in this
+way.
+
+So let us begin by entering the notes as two variables, setting up
+the staff structure in a score block, and seeing what LilyPond
+produces by default:
 
 @c line-width ensures no break
-@lilypond[quote,verbatim,ragged-right,line-width=5.5\in]
+@lilypond[quote,verbatim,ragged-right,line-width=6\in]
 rhMusic = \relative c'' {
-  r2 c4. g8 |
-  bes1~ |
-  \time 6/4
-  bes2. r8
-  % Start polyphonic section of four voices
-  <<
-    { c,8 d fis bes a }
-  \\
-    { c,8~ c2 }
-  \\
-    { s8 d2 }
-  \\
-    { s4 fis4. }
-  >> |
-  g2. |
+  \new Voice {
+    r2 c4. g8 |
+    bes1~ |
+    \time 6/4
+    bes2. r8
+    % Start polyphonic section of four voices
+    <<
+      { c,8 d fis bes a }  % continuation of main voice
+      \new Voice {
+        \voiceTwo
+        c,8~ c2
+      }
+      \new Voice {
+        \voiceThree
+        s8 d2
+      }
+      \new Voice {
+        \voiceFour
+        s4 fis4.
+      }
+    >> |
+    g2.  % continuation of main voice
+  }
 }
 
 lhMusic = \relative c' {
@@ -3032,30 +3053,38 @@ lhMusic = \relative c' {
 @end lilypond
 
 All the notes are right, but the appearance is far from
-satisfactory.  The tie clashes with the change in time signature,
-the notes are not merged together, and several notation elements
+satisfactory.  The tie collides with the change in time signature,
+some notes are not merged together, and several notation elements
 are missing.  Let's first deal with the easier things.  We can
 easily add the left hand slur and the right hand phrasing slur,
 since these were all covered in the Tutorial.  Doing this gives:
 
 @c line-width ensures no break
-@lilypond[quote,verbatim,ragged-right,line-width=5.5\in]
+@lilypond[quote,verbatim,ragged-right,line-width=6\in]
 rhMusic = \relative c'' {
-  r2 c4.\( g8 |
-  bes1~ |
-  \time 6/4
-  bes2. r8
-  % Start polyphonic section of four voices
-  <<
-    { c,8 d fis bes a }
-  \\
-    { c,8~ c2 }
-  \\
-    { s8 d2 }
-  \\
-    { s4 fis4. }
-  >> |
-  g2.\) |
+  \new Voice {
+    r2 c4.\( g8 |
+    bes1~ |
+    \time 6/4
+    bes2. r8
+    % Start polyphonic section of four voices
+    <<
+      { c,8 d fis bes a }  % continuation of main voice
+      \new Voice {
+        \voiceTwo
+        c,8~ c2
+      }
+      \new Voice {
+        \voiceThree
+        s8 d2
+      }
+      \new Voice {
+        \voiceFour
+        s4 fis4.
+      }
+    >> |
+    g2.\)  % continuation of main voice
+  }
 }
 
 lhMusic = \relative c' {
@@ -3090,8 +3119,8 @@ produced by the @code{\bar "||"} command.  That's easily done.  We
 next need to correct the collision of the tie with the time signature.
 This is best done by moving the tie upwards.  Moving objects was
 covered earlier in @ref{Moving objects}, which says that objects
-positioned relative to the staff can be moved by overriding their
-@code{staff-position} property, which is specified in half staff
+positioned relative to the staff can be moved vertically by overriding
+their @code{staff-position} property, which is specified in half staff
 spaces relative to the center line of the staff.  So the following
 override placed just before the first tied note would move the tie up
 to 3.5 half staff spaces above the center line:
@@ -3101,25 +3130,33 @@ to 3.5 half staff spaces above the center line:
 This completes bar two, giving:
 
 @c line-width ensures no break
-@lilypond[quote,verbatim,ragged-right,line-width=5.5\in]
+@lilypond[quote,verbatim,ragged-right,line-width=6\in]
 rhMusic = \relative c'' {
-  r2 c4.\( g8 |
-  \once \override Tie #'staff-position = #3.5
-  bes1~ |
-  \bar "||"
-  \time 6/4
-  bes2. r8
-  % Start polyphonic section of four voices
-  <<
-    { c,8 d fis bes a }
-  \\
-    { c,8~ c2 }
-  \\
-    { s8 d2 }
-  \\
-    { s4 fis4. }
-  >> |
-  g2.\) |
+  \new Voice {
+    r2 c4.\( g8 |
+    \once \override Tie #'staff-position = #3.5
+    bes1~ |
+    \bar "||"
+    \time 6/4
+    bes2. r8
+    % Start polyphonic section of four voices
+    <<
+      { c,8 d fis bes a }  % continuation of main voice
+      \new Voice {
+        \voiceTwo
+        c,8~ c2
+      }
+      \new Voice {
+        \voiceThree
+        s8 d2
+      }
+      \new Voice {
+        \voiceFour
+        s4 fis4.
+      }
+    >> |
+    g2.\)  % continuation of main voice
+  }
 }
 
 lhMusic = \relative c' {
@@ -3146,14 +3183,14 @@ lhMusic = \relative c' {
 
 On to bar three and the start of the Moderato section.  The tutorial
 showed how to add embolded text with the @code{\markup} command, so
-adding @q{Moderato} in bold is easy.  But how do we merge notes in
+adding @qq{Moderato} in bold is easy.  But how do we merge notes in
 different voices together?  This is where we need to turn again to
 the Notation Reference for help.  A search for @qq{merge} in the
 Notation Reference index quickly leads us to the commands for merging
-differently headed and differently dotted notes in @ruser{Collision
-resolution}.  In our example we need to merge both types of note for
-the duration of the polyphonic section in bar 3, so using the
-information we find in the Notation Reference we add
+differently headed and differently dotted notes in
+@ruser{Collision resolution}.  In our example we need to merge both 
+types of note for the duration of the polyphonic section in bar 3,
+so using the information we find in the Notation Reference we add
 
 @example
 \mergeDifferentlyHeadedOn
@@ -3172,29 +3209,37 @@ to the start of that section and
 to the end, giving:
 
 @c line-width ensures no break
-@lilypond[quote,ragged-right,line-width=5.5\in]
+@lilypond[quote,ragged-right,line-width=6\in]
 rhMusic = \relative c'' {
-  r2 c4.\( g8 |
-  \once \override Tie #'staff-position = #3.5
-  bes1~ |
-  \bar "||"
-  \time 6/4
-  bes2.^\markup { \bold "Moderato" } r8
-  \mergeDifferentlyHeadedOn
-  \mergeDifferentlyDottedOn
-  % Start polyphonic section of four voices
-  <<
-    { c,8 d fis bes a }
-  \\
-    { c,8~ c2 }
-  \\
-    { s8 d2 }
-  \\
-    { s4 fis4. }
-  >> |
-  \mergeDifferentlyHeadedOff
-  \mergeDifferentlyDottedOff
-  g2.\) |
+  \new Voice {
+    r2 c4.\( g8 |
+    \once \override Tie #'staff-position = #3.5
+    bes1~ |
+    \bar "||"
+    \time 6/4
+    bes2.^\markup { \bold "Moderato" } r8
+    \mergeDifferentlyHeadedOn
+    \mergeDifferentlyDottedOn
+    % Start polyphonic section of four voices
+    <<
+      { c,8 d fis bes a }  % continuation of main voice
+      \new Voice {
+        \voiceTwo
+        c,8~ c2
+      }
+      \new Voice {
+        \voiceThree
+        s8 d2
+      }
+      \new Voice {
+        \voiceFour
+        s4 fis4.
+      }
+    >> |
+    \mergeDifferentlyHeadedOff
+    \mergeDifferentlyDottedOff
+    g2.\)  % continuation of main voice
+  }
 }
 
 lhMusic = \relative c' {
@@ -3238,35 +3283,39 @@ Applying these changes gives:
 @cindex staff-position property, example
 
 @c line-width ensures no break
-@lilypond[quote,verbatim,ragged-right,line-width=5.5\in]
+@lilypond[quote,verbatim,ragged-right,line-width=6\in]
 rhMusic = \relative c'' {
-  r2 c4.\( g8 |
-  \once \override Tie #'staff-position = #3.5
-  bes1~ |
-  \bar "||"
-  \time 6/4
-  bes2.^\markup { \bold "Moderato" } r8
-  \mergeDifferentlyHeadedOn
-  \mergeDifferentlyDottedOn
-  % Start polyphonic section of four voices
-  <<
-    { c,8 d fis bes a }
-  \\
-    {
-      % Move the c2 out of the main note column so the merge will work
-      c,8~ \shiftOnn c2
-    }
-  \\
-    {
-      % Stem on the d2 must be down to permit merging
-      s8 \stemDown d2
-    }
-  \\
-    { s4 fis4. }
-  >> |
-  \mergeDifferentlyHeadedOff
-  \mergeDifferentlyDottedOff
-  g2.\) |
+  \new Voice {
+    r2 c4.\( g8 |
+    \once \override Tie #'staff-position = #3.5
+    bes1~ |
+    \bar "||"
+    \time 6/4
+    bes2.^\markup { \bold "Moderato" } r8
+    \mergeDifferentlyHeadedOn
+    \mergeDifferentlyDottedOn
+    % Start polyphonic section of four voices
+    <<
+      { c,8 d fis bes a }  % continuation of main voice
+      \new Voice {
+        \voiceTwo
+        % Move the c2 out of the main note column so the merge will work
+        c,8~ \shiftOnn c2
+      }
+      \new Voice {
+        \voiceThree
+        % Stem on the d2 must be down to permit merging
+        s8 \stemDown d2
+      }
+      \new Voice {
+        \voiceFour
+        s4 fis4.
+      }
+    >> |
+    \mergeDifferentlyHeadedOff
+    \mergeDifferentlyDottedOff
+    g2.\)  % continuation of main voice
+  }
 }
 
 lhMusic = \relative c' {
@@ -3303,38 +3352,47 @@ the @code{force-hshift} property.  Here's the final result:
 @cindex transparent property, example
 
 @c line-width ensures no break
-@lilypond[quote,verbatim,ragged-right,line-width=5.5\in]
+@lilypond[quote,verbatim,ragged-right,line-width=6\in]
 rhMusic = \relative c'' {
-  r2 c4.\( g8 |
-  \once \override Tie #'staff-position = #3.5
-  bes1~ |
-  \bar "||"
-  \time 6/4
-  bes2.^\markup { \bold "Moderato" } r8
-  \mergeDifferentlyHeadedOn
-  \mergeDifferentlyDottedOn
-  <<
-    { c,8 d fis bes a }
-  \\
-    {
-      % Reposition the c2 to the right of the merged note
-      c,8~ \once \override NoteColumn #'force-hshift = #1.0
-      % Move the c2 out of the main note column so the merge will work
-      \shiftOnn c2
-    }
-  \\
-    {
-      % Stem on the d2 must be down to permit merging
-      s8 \stemDown
-      \once \override Stem #'transparent = ##t
-      d2
-    }
-  \\
-    { s4 fis4. }
-  >> |
-  \mergeDifferentlyHeadedOff
-  \mergeDifferentlyDottedOff
-  g2.\) |
+  \new Voice {
+    r2 c4.\( g8 |
+    \once \override Tie #'staff-position = #3.5
+    bes1~ |
+    \bar "||"
+    \time 6/4
+    bes2.^\markup { \bold "Moderato" } r8
+    \mergeDifferentlyHeadedOn
+    \mergeDifferentlyDottedOn
+    % Start polyphonic section of four voices
+    <<
+      { c,8 d fis bes a }  % continuation of main voice
+      \new Voice {
+        \voiceTwo
+        c,8~
+        % Reposition the c2 to the right of the merged note
+        \once \override NoteColumn #'force-hshift = #1.0
+        % Move the c2 out of the main note column so the merge will work
+        \shiftOnn
+        c2
+      }
+      \new Voice {
+        \voiceThree
+        s8
+        % Stem on the d2 must be down to permit merging
+        \stemDown
+        % Stem on the d2 should be invisible
+        \once \override Stem #'transparent = ##t
+        d2
+      }
+      \new Voice {
+        \voiceFour
+        s4 fis4.
+      }
+    >> |
+    \mergeDifferentlyHeadedOff
+    \mergeDifferentlyDottedOff
+    g2.\)  % continuation of main voice
+  }
 }
 
 lhMusic = \relative c' {
index 05d31302ad68bf3e5c3f3d8266ed2bdf96a17f88..942ea60bef2779e6dd65d3683295d31e0aab5a39 100644 (file)
@@ -488,7 +488,7 @@ FI: accelerando, kiihdyttäen.
 
 [Italian: @q{speed up, accelerate}]
 
-Increase tempo
+An increase in the tempo, abbreviated @notation{accel.}
 
 @seealso
 No cross-references.
@@ -680,7 +680,7 @@ Since one does not crescendo @emph{to} nothing, it is not correct to use
 ES: alla breve,
 I: ?,
 F: alla breve, à la brève,
-D: ?,
+D: Allabreve, alla breve
 NL: ?,
 DK: ?,
 S: ?,
@@ -688,7 +688,7 @@ FI: ?.
 
 [Italian: @q{on the breve}]  Twice as fast as the notation indicates.
 
-Also called @notation{in cut-time}.  The name derives from mensural
+Also called @notation{in cut time}.  The name derives from mensural
 notation, where the @notation{tactus} (or beat) is counted on the semibreve
 (the modern whole note).  Counting @q{on the breve} shifts the tactus to the
 next longest note value, which (in modern usage) effectively halves all note
@@ -1381,7 +1381,8 @@ FI: vaskisoitin.
 
 A family of blown musical instruments made of brass, all using a cup
 formed mouth piece.  The brass instruments commonly used in a symphony
-orchestra are trumpet, trombone, french horn, and tuba.
+orchestra are trumpet, trombone, french horn, and tuba.  In marching bands,
+sousaphones and contrabass bugles are common.
 
 @seealso
 No cross-references.
@@ -2336,7 +2337,7 @@ S: crescendo,
 FI: cresendo, voimistuen.
 
 Increasing volume.  Indicated by a rightwards opening horizontal wedge
-(hairpin) or the abbreviation @notation{cresc.}.
+(hairpin) or the abbreviation @notation{cresc.}
 
 @lilypond[quote,relative=2]
 \key g \major
@@ -2448,7 +2449,7 @@ DK: da capo,
 S: da capo,
 FI: da capo, alusta.
 
-Abbreviated @notation{D.C.}.  Indicates that the piece is to be repeated from
+Abbreviated @notation{D.C.}  Indicates that the piece is to be repeated from
 the beginning to the end or to a certain place marked @emph{fine}.
 
 @seealso
@@ -2486,7 +2487,7 @@ DK: dal segno,
 S: dal segno,
 FI: dal segno, lähtien merkistä.
 
-Abbreviated @notation{D.S.}.  Repetition, not from the beginning, but from
+Abbreviated @notation{D.S.}  Repetition, not from the beginning, but from
 another place frequently near the beginning marked by a sign
 (@notation{segno}):
 
@@ -2519,7 +2520,7 @@ S: decrescendo,
 FI: decresendo, hiljentyen.
 
 Decreasing tone volume.  Indicated by a leftwards opening horizontal
-wedge (hairpin) or the abbreviation @notation{decresc.}.
+wedge (hairpin) or the abbreviation @notation{decresc.}
 
 @lilypond[quote,relative=2]
 \key g \major
@@ -2754,6 +2755,8 @@ DK: diminuendo,
 S: diminuendo,
 FI: diminuendo, hiljentyen.
 
+Abbreviated @emph{dim.} It indicates a decrease in tone volume.
+
 @seealso
 @ref{decrescendo}.
 
@@ -5136,7 +5139,7 @@ Two mensuration signs have survived to the present day: the C-shaped sign,
 which originally designated @notation{tempus imperfectum} and
 @notation{prolatio minor} now stands for @notation{common time}; and the
 slashed C, which designated the same with @notation{diminution} now stands
-for @notation{cut-time} (essentially, it has not lost its original meaning).
+for @notation{cut time} (essentially, it has not lost its original meaning).
 
 @seealso
 @ref{diminution}, @ref{proportion}, @ref{time signature}.
@@ -5748,7 +5751,7 @@ As used in mensural notation, this fraction was more flexible: it could also
 be one-third the higher note value.  Composers indicated which proportions
 to use with various signs—two of which survive to the present day: the
 C-shaped sign for @notation{common time}, and the slashed C for
-@notation{alla breve} or @notation{cut-time}.
+@notation{alla breve} or @notation{cut time}.
 
 @c TODO -- add maxima to this example, in a way that doesn't break it.
 
@@ -6620,7 +6623,7 @@ DK: rallentando,
 S: rallentando,
 FI: rallerdando, hidastuen.
 
-[Italian] A performance indication, abbreviated @notation{rall.}.
+[Italian] A performance indication, abbreviated @notation{rall.}
 
 @seealso
 @ref{ritardando}.
index c1a41341a463f3147e61eb65c9df683642e5a64a..9ba59343ff61596117f34ea447c5a6849bdeb39f 100644 (file)
@@ -108,6 +108,7 @@ Methods to create new dynamic markings are also discussed.
 @funindex \fermata
 @funindex \longfermata
 @funindex \verylongfermata
+@funindex \fermataMarkup
 @funindex \segno
 @funindex \coda
 @funindex \varcoda
@@ -159,6 +160,19 @@ may be manually placed above or below the staff; see
 Articulations are @code{Script} objects.  Their properties are
 described more fully in @rinternals{Script}.
 
+Articulations can be attached to rests as well as notes but they
+cannot be attached to multi-measure rests.  A special predefined
+command, @code{\fermataMarkup}, is available for attaching a fermata
+to a multi-measure rest (and only a multi-measure rest).  This
+creates a @code{MultiMeasureRestText} object.
+
+@lilypond[verbatim,quote,relative=2]
+\override Script #'color = #red
+\override MultiMeasureRestText #'color = #blue
+a2\fermata r\fermata
+R1\fermataMarkup
+@end lilypond
+
 In addition to articulations, text and markups can be attached to
 notes.  See @ref{Text scripts}.
 
@@ -1147,26 +1161,50 @@ cross-staff arpeggios.
 @funindex \stopTrillSpan
 @funindex stopTrillSpan
 
-Short @notation{trills} without an extender line are printed with
+Short trills without an extender line are printed with
 @code{\trill}; see @ref{Articulations and ornamentations}.
 
 Longer trills with an extender line are made with
 @code{\startTrillSpan} and @code{\stopTrillSpan}:
 
 @lilypond[verbatim,quote,relative=2]
-d1~\startTrillSpan
+d1\startTrillSpan
+d1
+c2\stopTrillSpan
+r2
+@end lilypond
+
+A trill spanner crossing a line break will restart exactly above
+the first note on the new line.
+
+@lilypond[ragged-right,verbatim,quote,relative=2]
+d1\startTrillSpan
+\break
+d1
+c2\stopTrillSpan
+r2
+@end lilypond
+
+Consecutive trill spans will work without explicit
+@code{\stopTrillSpan} commands, since successive trill spanners will
+automatically become the right bound of the previous trill.
+
+@lilypond[verbatim,quote,relative=2]
+d1\startTrillSpan
 d1
-c2\stopTrillSpan r2
+b1\startTrillSpan
+d2\stopTrillSpan
+r2
 @end lilypond
 
-In the following example, a trill is combined with grace notes.
-The syntax of this construct and the method to precisely position
-the grace notes are described in @ref{Grace notes}.
+Trills can also be combined with grace notes.  The syntax of this
+construct and the method to precisely position the grace notes are
+described in @ref{Grace notes}.
 
 @lilypond[verbatim,quote,relative=2]
-c1 \afterGrace
+d1~\afterGrace
 d1\startTrillSpan { c32[ d]\stopTrillSpan }
-e2 r2
+c2 r2
 @end lilypond
 
 @cindex pitched trills
@@ -1179,29 +1217,34 @@ be typeset with the @code{\pitchedTrill} command.  The first
 argument is the main note, and the second is the @emph{trilled}
 note, printed as a stemless note head in parentheses.
 
-@lilypond[verbatim,quote,relative=1]
-\pitchedTrill e2\startTrillSpan fis
-d\stopTrillSpan
+@lilypond[verbatim,quote,relative=2]
+\pitchedTrill
+d2\startTrillSpan fis
+d2
+c2\stopTrillSpan
+r2
 @end lilypond
 
-@cindex pitched trill with forced accidental
-@cindex trill, pitched with forced accidental
-@cindex accidental, forced for pitched trill
+@cindex pitched trill with accidental
+@cindex trill with accidental
 
-In the following example, the second pitched trill is ambiguous;
-the accidental of the trilled note is not printed.  As a
-workaround, the accidentals of the trilled notes can be forced.
-The second measure illustrates this method:
+Subsequent accidentals of the same note in the same measure will need
+to be added manually.  Only the accidental of the first pitched trill
+in a measure is printed.
 
 @lilypond[verbatim,quote,relative=2]
-\pitchedTrill eis4\startTrillSpan fis
-g\stopTrillSpan
-\pitchedTrill eis4\startTrillSpan fis
-g\stopTrillSpan
-\pitchedTrill eis4\startTrillSpan fis
-g\stopTrillSpan
-\pitchedTrill eis4\startTrillSpan fis!
-g\stopTrillSpan
+\pitchedTrill
+eis4\startTrillSpan fis
+eis4\stopTrillSpan
+\pitchedTrill
+eis4\startTrillSpan cis
+eis4\stopTrillSpan
+\pitchedTrill
+eis4\startTrillSpan fis
+eis4\stopTrillSpan
+\pitchedTrill
+eis4\startTrillSpan fis!
+eis4\stopTrillSpan
 @end lilypond
 
 
@@ -1210,7 +1253,6 @@ g\stopTrillSpan
 @code{\stopTrillSpan}.
 @endpredefined
 
-
 @seealso
 Music Glossary:
 @rglos{trill}.
index 8c238fd481f4655f0635f81f04c5dc48e7968bdf..84c3782773661cf762238e87ed186228e243856b 100644 (file)
@@ -379,7 +379,7 @@ Accidentals on tied notes are only printed at the beginning of a
 new system:
 
 @lilypond[verbatim,quote,relative=2]
-cis1 ~ cis ~
+cis1~ cis~
 \break
 cis
 @end lilypond
@@ -387,10 +387,12 @@ cis
 
 @snippets
 
+@lilypondfile[verbatim,lilyquote,texidoc,doctitle,ragged-right]
+{hiding-accidentals-on-tied-notes-at-the-start-of-a-new-system.ly}
+
 @lilypondfile[verbatim,lilyquote,texidoc,doctitle]
 {preventing-extra-naturals-from-being-automatically-added.ly}
 
-
 @seealso
 Music Glossary:
 @rglos{sharp},
@@ -2480,6 +2482,9 @@ printed if they are not part of the key signature.
 @lilypondfile[verbatim,lilyquote,texidoc,doctitle]
 {ambitus-with-multiple-voices.ly}
 
+@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+{changing-the-ambitus-gap.ly}
+
 
 @seealso
 Music Glossary:
index 3491d200b525abbbd4072fdda812823fa910b2d5..924843848e94331c234faf5fb4d1ce91bc95b32a 100644 (file)
@@ -84,13 +84,9 @@ The syntax for a normal repeat is
 @end example
 
 @noindent
-where @var{musicexpr} is a music expression.  Alternate endings can be
-produced using @code{\alternative}.  In order to delimit the alternate
-endings, the group of alternatives must be enclosed in a set of
-braces.  If there are more repeats than there are alternate endings,
-the earliest repeats are given the first alternative.
+where @var{musicexpr} is a music expression.
 
-Normal repeats without alternate endings:
+A single repeat without an alternate ending:
 
 @lilypond[verbatim,quote,relative=2]
 \repeat volta 2 { c4 d e f }
@@ -98,17 +94,56 @@ c2 d
 \repeat volta 2 { d4 e f g }
 @end lilypond
 
-Normal repeats with alternate endings:
+Alternative endings can be produced using @code{\alternative}.  Each
+group of alternatives must be themselves, enclosed in a set of braces.
+
+@example
+\repeat volta @var{repeatcount} @var{musicexpr}
+\alternative @{
+  @{ @var{musicexpr} @}
+@}
+@end example
+
+@noindent
+where @var{musicexpr} is a music expression.
+
+If there are more repeats than there are alternate endings, the earliest
+repeats are given the first alternative.
+
+A single repeat with one alternate ending:
+
+@lilypond[verbatim,quote,relative=2]
+\repeat volta 2 { c4 d e f }
+\alternative {
+  { c2 e }
+  { f2 g }
+}
+c1
+@end lilypond
+
+A single repeat with more than one alternate ending:
 
 @lilypond[verbatim,quote,relative=2]
 \repeat volta 4 { c4 d e f }
 \alternative {
-  { d2 e }
+  { c2 e }
   { f2 g }
 }
 c1
 @end lilypond
 
+Multiple repeats with more than one alternate ending:
+
+@lilypond[verbatim,quote,relative=2]
+\repeat volta 3 { c4 d e f }
+\alternative {
+  { c2 e }
+  { f2 g }
+  { a2 g }
+}
+c1
+@end lilypond
+
 @warning{If you include @code{@bs{}relative} inside a
 @code{@bs{}repeat} without explicitly instantiating the
 @code{Voice} context, extra (unwanted) staves will appear.  See
@@ -225,6 +260,8 @@ c1
 @lilypondfile[verbatim,lilyquote,texidoc,doctitle]
 {adding-volta-brackets-to-additional-staves.ly}
 
+@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+{setting-the-double-repeat-default-for-volte.ly}
 
 @seealso
 Music Glossary:
@@ -301,7 +338,7 @@ For clarity, it is advisable to use braces in such situations.
 
 @warning{These methods are only used for displaying unusual repeat
 constructs, and may produce unexpected behavior.  In most cases,
-repeats should be created using the standard @code{\\repeat} command
+repeats should be created using the standard @code{@bs{}repeat} command
 or by printing the relevant bar lines.  For more information, see
 @ref{Bar lines}.}
 
@@ -425,25 +462,64 @@ where @var{musicexpr} is a music expression and @var{repeatcount} is
 the number of times @var{musicexpr} is repeated.
 
 @lilypond[verbatim,quote,relative=2]
+\repeat unfold 2 { c4 d e f }
 c1
+@end lilypond
+
+Unfold repeats can be made with alternate endings.
+
+@lilypond[verbatim,quote,relative=2]
 \repeat unfold 2 { c4 d e f }
+\alternative {
+  { c2 g' }
+  { c,2 b }
+}
 c1
 @end lilypond
 
-Unfold repeats can be made with alternate endings.  If there are
-more repeats than there are alternate endings, the first
-alternative ending is applied to the earliest endings.
+If there are more repeats than there are alternate endings, the first
+alternative is applied multiple times until the remaining alternatives
+make up the total number of repeats.
 
 @lilypond[verbatim,quote,relative=2]
+\repeat unfold 4 { c4 d e f }
+\alternative {
+  { c2 g' }
+  { c,2 b }
+  { e2 d }
+ }
 c1
-\repeat unfold 2 { g4 f e d }
+@end lilypond
+
+If there are more alternate endings than repeats then the first
+alternatives are applied, LilyPond will ignore the remaining
+alternatives which will not be printed.
+
+@lilypond[verbatim,quote,relative=2]
+\repeat unfold 2 { c4 d e f }
+\alternative {
+  { c2 g' }
+  { c,2 b }
+  { e2 d }
+}
+c1
+@end lilypond
+
+It is also possible to nest multiple @code{unfold} functions (with or
+without alternate endings).
+
+@lilypond[verbatim,quote,relative=2]
+\repeat unfold 2 {
+  \repeat unfold 2 { c4 d e f }
   \alternative {
-    { cis2 g' }
-    { cis,2 b }
+    { c2 g' }
+    { c,2 b }
   }
+}
 c1
 @end lilypond
 
+
 @warning{If you include @code{@bs{}relative} inside a
 @code{@bs{}repeat} without explicitly instantiating the
 @code{Voice} context, extra (unwanted) staves will appear.  See
@@ -463,8 +539,8 @@ Internals Reference:
 @subsection Short repeats
 
 This section discusses how to input short repeats.  Short repeats can
-take two basic forms: repeats of a single note to two measures,
-represented by slashes or percent signs; and tremolos.
+take two forms: slashes or percent signs to represent repeats of a
+single note, a single measure or two measures, and tremelos otherwise.
 
 @menu
 * Percent repeats::
@@ -482,10 +558,10 @@ represented by slashes or percent signs; and tremolos.
 @funindex \repeat percent
 @funindex percent
 
-Repeated short patterns of notes are supported.  The music is printed
-once, and the pattern is replaced with a special sign.  Patterns that
-are shorter than one measure are replaced by slashes, and patterns of
-one or two measures are replaced by percent-like signs.  The syntax is
+Repeated short patterns are printed once, and the repeated pattern
+is replaced with a special sign.
+
+The syntax is
 
 @example
 @code{\repeat percent @var{number} @var{musicexpr}}
@@ -494,10 +570,23 @@ one or two measures are replaced by percent-like signs.  The syntax is
 @noindent
 where @var{musicexpr} is a music expression.
 
+Patterns that are shorter than one measure are replaced by slashes.
+
 @lilypond[verbatim,quote,relative=2]
+\repeat percent 4 { c8 d }
 \repeat percent 4 { c4 }
-\repeat percent 2 { b4 a g f }
-\repeat percent 2 { c2 es | f4 fis g c | }
+\repeat percent 2 { c2 }
+@end lilypond
+
+Patterns of one or two measures are replaced by percent-like signs.
+
+@lilypond[verbatim,quote,relative=2]
+\repeat percent 3 { c4 d e f }
+\repeat percent 4 { c2 d }
+@end lilypond
+
+@lilypond[verbatim,quote,relative=2]
+\repeat percent 3 { c4 d e f | c2 g' }
 @end lilypond
 
 @snippets
index 6798e11e85dd6c4a03cfdc23d9ee04e761aece90..28c1dd87beaddff5efa1c82102fd2d7e983d9246 100644 (file)
@@ -143,7 +143,7 @@ the staff; see @ref{Direction and placement}.
 @snippets
 
 @lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
-{dot-count-override.ly}
+{changing-the-number-of-augmentation-dots-per-note.ly}
 
 
 @seealso
@@ -1044,6 +1044,72 @@ changed to a numeric style:
 Mensural time signatures are covered in
 @ref{Mensural time signatures}.
 
+@cindex time signature default settings
+@cindex autobeaming properties for time signatures
+@cindex beaming, time signature default properties
+@funindex \overrideTimeSignatureSettings
+
+In addition to setting the printed time signature, the @code{\time}
+command also sets time-signature-based default values for the properties
+@code{baseMoment}, @code{beatStructure}, and @code{beamExceptions}.  The
+predefined default values for these properties can be found in
+@file{scm/time-signature-settings.scm}.  The existing default values can
+be changed, or new default values can be added:
+
+@lilypond[quote,verbatim]
+\score {
+  \relative c' {
+    \overrideTimeSignatureSettings
+      #'Score
+      #'(4 . 4)  % time signature fraction
+      #'(1 . 4)  % base moment fraction
+      #'(3 1)    % beatStructure
+      #'()       % beamExceptions
+    \time 4/4
+    \repeat unfold 8 c8 |
+  }
+}
+@end lilypond
+
+@code{\overrideTimeSignatureSettings} takes five arguments:
+context, time signature fraction, base moment, beat structure, and
+beaming exception.  The context is a Scheme symbol that describes
+the context to which the default setting will apply.  The
+time signature fraction is a Scheme pair describing the time signature.
+The base moment is a Scheme pair containing the
+numerator and denominator of the basic timing unit for the
+time signature.  The beat structure is a Scheme list indicating
+the structure of the beats in the measure, in units of the base moment.
+The beaming exception is an alist containing any beaming rules for the
+time signature that go beyond ending at every beat,
+as described in @ref{Setting automatic beam behavior}.
+
+@cindex time signature properties, restoring default values
+@cindex restoring default properties for time signatures
+@funindex \revertTimeSignatureSettings
+
+Changed values of default time signature properties can be restored
+to the original values:
+
+@lilypond[quote,verbatim]
+
+\score{
+  \relative c' {
+    \repeat unfold 8 c8 |
+    \overrideTimeSignatureSettings
+      #'Score
+      #'(4 . 4)
+      #'(1 . 4)
+      #'(3 1)
+      #'((end . (((1 . 8) . (3 1)))))
+    \time 4/4
+    \repeat unfold 8 c8 |
+    \revertTimeSignatureSettings #'Score #'(4 . 4)
+    \time 4/4
+    \repeat unfold 8 c8 |
+  }
+}
+@end lilypond
 
 @predefined
 @code{\numericTimeSignature},
@@ -1661,19 +1727,18 @@ Beams can collide with note heads and accidentals in other voices.
 @cindex lyrics and beaming
 
 @funindex autoBeaming
-@funindex beamSettings
+@funindex baseMoment
+@funindex beamExceptions
+@funindex beatStructure
 @funindex measureLength
-@funindex beatLength
 @funindex \time
 @funindex time
 @funindex \set
 @funindex set
 
-The placement of automatic beams is determined by the time signature.
-Three types of rules are used for determining the end of automatic
-beams: @emph{default} rules
-for the time signature, @emph{explicit} rules for the beam in the time
-signature, and the @emph{beatLength} for the time signature.
+The placement of automatic beams is determined by the context properties
+@code{baseMoment}, @code{beatStructure}, @code{beamExceptions},
+and @code{autoBeaming}.
 
 The following rules, in order of priority, apply when determining
 the appearance of beams:
@@ -1687,38 +1752,47 @@ as specified, otherwise
 if @code{\autoBeamOff} is in force do not beam, otherwise
 
 @item
-if an explicit beam-ending rule is defined for the beam type
-in the time signature, use it to determine the valid
-places where beams may end, otherwise
+if a beam-ending rule is defined in @code{beamExceptions}
+for the beam type, use it to determine the valid places where
+beams may end, otherwise
 
 @item
-if a default beam-ending rule is defined in the time signature,
-use it to group notes with beams, otherwise
+if a beam-ending rule is defined in @code{beamExceptions}
+for a larger beam-type, use it to determined the valid places
+where beams may end, otherwise
 
 @item
-use the value of @code{beatLength} to group notes with beams
+use the values of @code{baseMoment} and @code{beatStructure} to
+determine the ends of the beats in the measure, and
+end beams at the end of beats.
 
 @end itemize
 
+The beam type is the duration of the shortest note in the beamed group.
+If no beam-ending rule is defined for a beam type, the rule for the
+smallest beam-type larger than the current beam is used.
+
 @i{@strong{Modifying the grouping of beats}}
 
-By default @code{beatLength} is
-derived from the time signature set by the @code{\time} command.
-The @code{beatLength} is set to be one over the denominator
-of the time signature.
+By default @code{baseMoment} is set by the @code{\time} command,
+normally to one over the denominator of the time signature.
+Any exceptions to this default
+can be found in @file{scm/@/time@/-signature@/-settings@/.scm}.
+Changing the default value of @code{baseMoment} for a given
+time signature is described in @ref{Time signature}.
 
-@code{beatLength} is a @i{moment},
+@code{baseMoment} is a @i{moment},
 a unit of musical duration.  A quantity of type @i{moment} is
 created by the scheme function @code{ly:make-moment}.  For more
 information about this function, see @ref{Time administration}.
 
-Autobeam settings are stored in the
-@code{beamSettings} property.  Default values of @code{beamSettings}
-are determined in @file{scm/@/beam@/-settings@/.scm}.  Entries in
-@code{beamSettings} are indexed by time signature and
-rule type.
-
-Time signature should be a scheme pair , e.g. @code{#'(4 . 4)}.
+Special (i.e., other than at the end of the beat) autobeam settings
+are stored in the
+@code{beamExceptions} property.  Default values of @code{beamExceptions}
+are established by the @code{\time} command.  Default values of
+@code{beamExceptions} for a time signature
+are determined in @file{scm/@/time@/-signature@/-settings@/.scm}.
+Entries in @code{beamExceptions} are indexed by rule type and beam type.
 
 Rule type should be @code{#'end} for beam ending.
 
@@ -1734,37 +1808,33 @@ beam type.
    (beam-type3 . grouping-3))
 @end example
 
-Beam type is either a scheme pair indicating the duration
-of the beam, e.g. @code{(1 . 16)}, or @code{*} to indicate a
-default rule, which applies to all beams if no explicit rule is
-defined.
+Beam type is a scheme pair indicating the duration
+of the beam, e.g., @code{(1 . 16)}.
 
 Grouping is a scheme list indicating the grouping to be applied to
-the beam.  For default rules (where beam type is
-@code{*}, the grouping is in units of @code{beatLength}.
-For explicit rules, the grouping is in units of the beam type.
+the beam.  The grouping is in units of the beam type.
 
 For reference, the default beaming rules are found in
-@file{scm/beam-settings.scm}.
+@file{scm/time-signature-settings.scm}.
 
-Beam settings are changed with
-@code{\overrideBeamSettings} and @code{\revertBeamSettings}.
+Alternate values for @code{beamExceptions}
+can be defined using the @code{\set} command.
 
 @warning{
-The ending settings must be
-@emph{complete} rules.  That is, every rule that should apply to
-the current time signature must be included in the setting.
-It is not possible to change the grouping of only one beam type
-for a given time signature.  While this may seem cumbersome,
+A @code{beamExceptions} value must be
+@emph{complete} exceptions list.  That is, every exception that should
+be applied must be included in the setting.
+It is not possible to add, remove, or change only one of the exceptions.
+While this may seem cumbersome,
 it means that the current beaming settings need not be known
 in order to specify a new beaming pattern.}
 
 @lilypond[quote,relative=2,verbatim]
 \time 5/16
 c8^"beats" c16 c8 |
-\overrideBeamSettings #'Score #'(5 . 16) #'end #'((* . (2 3)))
+\set beatStructure = #'(2 3)
 c8^"(2+3)" c16 c8
-\overrideBeamSettings #'Score #'(5 . 16) #'end #'((* . (3 2)))
+\set beatStructure = #'(3 2)
 c8^"(3+2)" c16 c8
 @end lilypond
 
@@ -1773,22 +1843,24 @@ setting is included in a lower-level context, the setting of the
 enclosing context will apply.
 
 @lilypond[quote, verbatim,relative=1]
-\new Staff <<
+\new Staff {
   \time 7/8
-  \new Voice = one {
-    \relative c'' {
-      \overrideBeamSettings #'Staff #'(7 . 8) #'end #'((* . (2 3 2)))
+  \set Staff.beatStructure = #'(2 3 2)
+  <<
+    \new Voice = one {
+      \relative c'' {
         a8 a a a a a a
+      }
     }
-  }
-  \new Voice  = two {
-    \relative c' {
-      \voiceTwo
-      \overrideBeamSettings #'Voice #'(7 . 8) #'end #'((* . (1 3 3)))
-      f8 f f f f f f
+    \new Voice = two {
+      \relative c' {
+        \voiceTwo
+        \set Voice.beatStructure = #'(1 3 3)
+        f8 f f f f f f
+      }
     }
-  }
->>
+  >>
+}
 @end lilypond
 
 When multiple voices are used the @code{Staff} context must be
@@ -1800,51 +1872,36 @@ staff:
 % rhythm 3-1-1-2
 % Context Voice specified --  does not work correctly
 % Because of autogenerated voices, all beating will
-% be at beatLength (1 . 8)
-\overrideBeamSettings #'Voice #'(7 . 8) #'end #'((* . (3 1 1 2)))
+% be at baseMoment (1 . 8)
+\set beatStructure = #'(3 1 1 2)
 << {a8 a a a16 a a a a8 a} \\ {f4. f8 f f f} >>
 
 % Works correctly with context Staff specified
-\overrideBeamSettings #'Staff #'(7 . 8) #'end #'((* . (3 1 1 2)))
+\set Staff.beatStructure = #'(3 1 1 2)
 << {a8 a a a16 a a a a8 a} \\ {f4. f8 f f f} >>
 @end lilypond
 
-@funindex revertBeamSettings
-
-Beam settings can be reverted to get back to default behavior.  This
-is accomplished by using @code{\revertBeamSettings}.  The arguments
-are the same as for @code{\overrideBeamSettings}, except no value
-for @var{grouping} is given:
-
-@example
-\revertBeamSettings context time-signature rule-type
-@end example
-
+Beam settings can be set back to default behavior.  This
+is accomplished by setting the time signature.
 
 @lilypond[quote,verbatim,relative=2]
 \time 4/4
 \repeat unfold 8 {a8}
-% set default rule for (1 1 1 1) grouping
-\overrideBeamSettings #'Score #'(4 . 4) #'end #'((* . (1 1 1 1)))
+% eliminate beam exception that groups beats 1, 2 and 3, 4
+\set Timing.beamExceptions = #'()
 \repeat unfold 8 {a8}
-% revert the new rule
-\revertBeamSettings #'Score #'(4 . 4) #'end
+% go back to default behavior
+\time 4/4
 \repeat unfold 8 {a8}
 @end lilypond
 
 
-@predefined
-@code{\overrideBeamSettings},
-@code{\revertBeamSettings}.
-@endpredefined
-
-
 @snippets
 
 @cindex beams, subdividing
 
 @lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
-{sub-dividing-beams.ly}
+{subdividing-beams.ly}
 
 @cindex measure groupings
 @cindex beats, grouping
index bbcafc4c7c5367f5409f82a49adf0b97144ddbba..4bc8d8480d69f2886ca13906618edf1193c29bdc 100644 (file)
Binary files a/Documentation/pictures/screenshot-denemo-small.png and b/Documentation/pictures/screenshot-denemo-small.png differ
index 6b337d07090324d770b09e05c24a2c485cf51969..0ed28cd4fd126122c0a79ceec372814282b83beb 100644 (file)
Binary files a/Documentation/pictures/screenshot-denemo.png and b/Documentation/pictures/screenshot-denemo.png differ
index 5aed29af14669264fa9d351b049a04471231e1a6..b9d5d282baece57f9c70a2c9178ec67b77875fe5 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "keyboards"
 
-%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7
+%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b
   texidoces = "
 Los símbolos específicos de acordeón discanto se escriben mediante
 @code{\\markup}.  Se puede trucar la colocación vertical de los
@@ -15,7 +15,6 @@ símbolos modificando los argumentos de @code{\\raise}.
 "
   doctitlees = "Símbolos de acordeón discanto"
 
-
 %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40
   doctitlede = "Symbole für Akkordeon-Diskantregister"
   texidocde = "
index ee99b1ca020a829d8ed421e3375514137edceb8d..4d1b13676a565c54987d3aa9268880e5fffefafc 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "chords, ancient-notation, contexts-and-engravers"
 
-%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7
+%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b
   texidoces = "
 Al escribir un bajo cifrado, existe una forma de especificar si
 queremos que las cifras se sitúen encima o debajo de las notas del
@@ -23,7 +23,6 @@ truco se aplique a toda la partitura.
 "
   doctitlees = "Añadir un bajo cifrado encima o debajo de las notas"
 
-
 %% Translation of GIT committish: 05624d5147843d2fcbd6e4e126f1fd43142ac6e5
   doctitlefr = "Ajout d'une basse chiffrée au-dessus ou au-dessous des notes"
 
index 59a8f147f0427cd43899db293854424c65ba3a8e..3af69f0abf89c92f455c9b1febe3c0149a5105a1 100644 (file)
@@ -6,14 +6,13 @@
 \header {
   lsrtags = "pitches, staff-notation, vocal-music"
 
-%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7
+%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b
   doctitlees = "Añadir un ámbito por voz"
   texidoces = "
 Se puede añadir un ámbito por cada voz. En este caso, el ámbito se
 debe desplazar manualmente para evitar colisiones.
 
 "
-
 %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40
 texidocde = "
 Ambitus können pro Stimme gesetzt werden. In diesem Fall müssen sie
@@ -21,7 +20,6 @@ manual verschoben werden, um Zusammenstöße zu verhindern.
 
 "
 doctitlede = "Ambitus pro Stimme hinzufügen"
-
 %% Translation of GIT committish: 58a29969da425eaf424946f4119e601545fb7a7e
   texidocfr = "
 L'@code{ambitus} peut être individualisé par voix.  Il faut en pareil
index c11f7bed3bb986cdad3ee724dfdda321573c4333..b4dbc08f0ee0c47fec04f6f6928662775d37c607 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "staff-notation, contexts-and-engravers, breaks"
 
-%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7
+%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b
   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 b45cdb3c5e0248268c921d84ab056769572e79dd..a68d73ba3cf85903889999158e77636d4ab298b3 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "staff-notation, contexts-and-engravers"
 
-%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7
+%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b
   texidoces = "
 Se puede añadir (posiblemente de forma temporal) un pentagrama
 nuevo una vez que la pieza ha comenzado.
index fc0e4ee1554dd05f29b731df86435405ba68adbe..7458227d30b19b9076e6bbba4d017a1ae8bd38d2 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "chords"
 
-%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7
+%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b
   texidoces = "
 Para añadir indicaciones de línea divisoria dentro del contexto de
 los nombres de acorde @code{ChordNames}, incluya el grabador
@@ -15,7 +15,6 @@ los nombres de acorde @code{ChordNames}, incluya el grabador
 "
   doctitlees = "Añadir barras de compás al contexto de nombres de acorde (ChordNames)"
 
-
 %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40
   texidocde = "
 Um Taktstriche in einem @code{ChordNames}-Kontext anzeigen zu lassen, muss der
index 7a6cce44be8e8b3c59a0c9061dba40588af47597..d2fb1a5326b6e45fb3540452adf3018dab77ad89 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "rhythms, expressive-marks"
 
-%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7
+%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b
   texidoces = "
 La sintaxis de LilyPond puede implicar muchas colocaciones poco
 comunes para los paréntesis, corchetes, etc, que a veces se tienen
index accbb94a8cced353721043b9c249a52ded674c40..59bfb512750f033def2ba1a80c12ce44150f892f 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "rhythms, percussion"
 
-%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7
+%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b
   texidoces = "
 Mediante la utilización de las potentes herramientas preconfiguradas
 como la función @code{\\drummode} y el contexto @code{DrumStaff}, la
@@ -19,7 +19,6 @@ de líneas.
 "
   doctitlees = "Escritura de partes de percusión"
 
-
 %% Translation of GIT committish: 9a65042d49324f2e3dff18c4b0858def81232eea
   texidocfr = "
 Grâce à la puissance des outils préconfigurés tels que la fonction
index 0cf1d745815e7d174a79b6598ecdc8f62f4d1a1e..9444de62d720996fe96bb35d22d3fbbe65b3ac9c 100644 (file)
@@ -2,10 +2,10 @@
 % generated from Documentation/snippets/new
 % This file is in the public domain.
 %% Note: this file works from version 2.13.17
-\version "2.13.20"
+\version "2.13.29"
 
 \header {
-%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7
+%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b
   texidoces = "
 Para añadir digitaciones a las tablaturas, utilice una combinación de
 @code{\\markup} y @code{\\finger}.
index 239b39df1b3294db927d9b23ed441b19fc1b9fab..070feef2bf7e4d2badbba9dc7df25492cb1e4d2e 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "expressive-marks"
 
-%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7
+%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b
   texidoces = "
 La función @code{\\parenthesize} es un truco especial que encierra
 objetos entre paréntesis.  El grob asociado es @code{ParenthesesItem}.
index c738a45fc87806cf036d44524df25c83faf43f62..551cf956af5dc812d05fef4f9b4ff22c9f61b2a5 100644 (file)
@@ -6,14 +6,13 @@
 \header {
   lsrtags = "text, titles"
 
-%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7
+%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b
   texidoces = "
 Con algo de código de Scheme, se puede añadir fácilmente la fecha
 actual a una partitura.
 "
   doctitlees = "Añadir la fecha actual a una partitura"
 
-
 %% Translation of GIT committish: 05624d5147843d2fcbd6e4e126f1fd43142ac6e5
   texidocfr = "
 Avec un peu de code Scheme, voici comment ajouter facilement
index f46e49567648a2d8f22c0e9b29a9a50a8e728b15..a5210731fd0d4dcfa44c2c19d6e8a8becddff648 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "repeats"
 
-%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7
+%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b
   texidoces = "
 El grabador @code{Volta_engraver} reside de forma predeterminada
 dentro del contexto de @code{Score}, y los corchetes de la repetición
@@ -18,7 +18,6 @@ también el fragmento de código @qq{Volta multi staff}.
 "
   doctitlees = "Añadir corchetes de primera y segunda vez a más pentagramas"
 
-
 %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40
   texidocde = "
 Der @code{Volta_engraver} befindet sich im @code{Score}-Kontext und Klammern
@@ -29,7 +28,6 @@ das \"Volta multi staff\"-Schnipsel.
 
 "
   doctitlede = "Volta-Klammern zu zusätzlichen Systemen hinzufügen"
-
 %% Translation of GIT committish: 4ab2514496ac3d88a9f3121a76f890c97cedcf4e
   texidocfr = "
 D'ordinaire, le graveur @code{Volta_engraver} réside dans le contexte
index 9372fed9e1ddaecbd12420b74bfe12722a619451..f5f17704daa558db3515d471adecd05a573bed19 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "simultaneous-notes"
 
-%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7
+%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b
  doctitlees = "Voces adicionales para evitar colisiones"
  texidoces = "
 En ciertos casos de polifonía compleja, se necesitan voces adicionales
@@ -16,7 +16,6 @@ variable que utiliza la función de Scheme @code{context-spec-music}.
 
 "
 
-
 %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40
   texidocde = "
 Ein einigen Fällen von sehr komplexer polyphoner Musik sind zusätzliche
@@ -27,7 +26,6 @@ Stimmen definiert werden, indem eine Variable mit der Funktion
 
 "
   doctitlede = "Zusätzliche Stimmen um Zusammenstöße zu vermeiden"
-
 %% Translation of GIT committish: 1baa2adf57c84e8d50e6907416eadb93e2e2eb5c
   texidocfr = "
 Dans certains cas de musique polyphonie complexe, une voix
index 362e56fe185da313fe325bf3c084ff79ca9ddce2..6637d1bef8171099a46452e49295e905c2d3b154 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "rhythms, tweaks-and-overrides"
 
-%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7
+%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b
   texidoces = "
 Se puede ajustar la separación entre las notas de adorno utilizando la
 propiedad @code{spacing-increment} de @code{Score.GraceSpacing}.
index 82450be1246eaba1eb267d06526821498b354bee..9d55482f52ac0daa72b1a81d1ebab2f6c4e03a01 100644 (file)
@@ -2,10 +2,10 @@
 % generated from Documentation/snippets/new
 % This file is in the public domain.
 %% Note: this file works from version 2.13.16
-\version "2.13.20"
+\version "2.13.29"
 
 \header {
-%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7
+%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b
   texidoces = "
 Este fragmento de código muestra cómo situar la línea de base de la
 letra más cerca del pentagrama.
index eba83dcd46988875f0037ed1620ffda2c1eaa5ab..0afab1af6955fa7e2ddf1638a255173ace8adb2e 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "expressive-marks"
 
-%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7
+%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b
   texidoces = "
 Puede ser necesario trucar la propiedad
 @code{shortest-duration-space} para poder ajustar el tamaño de las
@@ -15,7 +15,6 @@ caídas y subidas de tono («falls» y «doits»).
 "
   doctitlees = "Ajustar la forma de las subidas y caídas de tono"
 
-
 %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40
 texidocde = "
 Die @code{shortest-duration-space}-Eigenschaft kann verändert werden, um
@@ -23,7 +22,6 @@ das Aussehen von unbestimmten Glissandi anzupassen.
 
 "
   doctitlede = "Das Aussehen von unbestimmten Glissandi anpassen"
-
 %% Translation of GIT committish: 217cd2b9de6e783f2a5c8a42be9c70a82195ad20
   texidocfr = "
 La propriété @code{shortest-duration-space} peut devoir être retouchée
index c4f4c1185e100ae0b311c658cc8296fb2ba2e043..4632b99bf4f7c1eb15fb0578b4f33a335bf0ad79 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "text, paper-and-layout, titles"
 
-%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7
+%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b
   texidoces = "
 La alineación horizontal de los nombres de instrumento se puede
 trucar modificando la propiedad @code{Staff.InstrumentName
index 3e2f3ff7007e9f1f1492d023c29ead64b0436e68..0b484ec0005fdaf04b44e8dc09ac982074f7fc8d 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "rhythms"
 
-%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7
+%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b
   texidoces = "
 
 Los números de compás se alinean de forma predeterminada por la
@@ -20,7 +20,6 @@ alineados por la izquierda con ella.
 
   doctitlees = "Alineación de los números de compás"
 
-
 %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40
   texidocde = "
 Taktnummern sind standardmäßig links an ihrem Ursprungsobjet
@@ -34,7 +33,6 @@ Taktstrich gesetzt werden.
   doctitlede = "Taktnummern ausrichten"
 
 
-
 %% Translation of GIT committish: 374d57cf9b68ddf32a95409ce08ba75816900f6b
   texidocfr = "
 Les numéros de mesure s'alignent en principe sur la droite de l'objet
index 7066aa40bc90c35c2824a98c541002c9cd391d5d..cae43303e9dcb539bc39b562a448b2f91f4f143a 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "text"
 
-%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7
+%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b
   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
@@ -22,7 +22,6 @@ debe hacer este ajuste para todos los pentagramas).
 "
   doctitlees = "Alinear marcas con varios objetos de notación"
 
-
 %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40
   texidocde = "
 Wenn angegeben, können Textzeichen auch an anderen Objekten als Taktstrichen
@@ -39,7 +38,6 @@ diese Einstellung für alle Systeme gemacht werden.
 "
 
   doctitlede = "Zeichen an verschiedenen Notationsobjekten ausrichten"
-
 %% Translation of GIT committish: 548ef200973bd3d46ea75c5498461d9e5f168334
   texidocfr = "
 Les indications textuelles peuvent s'aligner par rapport à d'autres
index ed849b174cdc8bd5751b70a55ad54712f4b83e0d..997df494c6c6e6ad2e9e9d019960490dbc0cd6d8 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "editorial-annotations, fretted-strings, spacing"
 
-%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7
+%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b
 
   texidoces = "
 Las cifras de digitación orientadas verticalmente se colocan de forma
@@ -18,7 +18,6 @@ aunque sea una sola nota.
 "
   doctitlees = "Permitir que las digitaciones se impriman dentro del pentagrama"
 
-
 %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40
   texidocde = "
 Normalerweise werden vertikal orientierte Fingersatzzahlen außerhalb des Systems
@@ -26,7 +25,6 @@ gesetzt.  Das kann aber verändert werden.
 
 "
   doctitlede = "Fingersatz auch innerhalb des Systems setzen"
-
 %% Translation of GIT committish: 4ab2514496ac3d88a9f3121a76f890c97cedcf4e
   texidocfr = "
 L'empilement des indications de doigté se fait par défaut à l'extérieur
index b3308425cac0da6add90cb9f0aa2648b121259b1..cc12c5707a0e473dcff57661ca55e2dcf493f479 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "pitches, tweaks-and-overrides"
 
-%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7
+%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b
   texidoces = "
 Se puede variar la longitud de las plicas de las figuras unidas por
 una barra mediante la sobreescritura de la propiedad
index 006add6eba0dba77a4a7366bd194a534b1eefcbc..7bfcf3f0d9da5bb4069ea8207b2ea203bee00ee4 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "pitches, vocal-music"
 
-%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7
+%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b
   doctitlees = "Ámbitos con varias voces"
   texidoces = "
 La adición del grabador @code{Ambitus_engraver} al contexto de
@@ -15,7 +15,6 @@ pentagramas con varias voces.
 
 "
 
-
 %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40
   texidocde = "
 Indem man den @code{Ambitus_engraver} im @code{Staff}-Kontext
@@ -23,7 +22,6 @@ hinzufügt, erhält man einen einzigen Ambitus pro System, auch in dem
 Fall, dass mehrere Stimmen sich im gleichen System befinden.
 "
   doctitlede = "Ambitus mit vielen Stimmen"
-
 %% Translation of GIT committish: 4ab2514496ac3d88a9f3121a76f890c97cedcf4e
   texidocfr = "
 Si plusieurs voix se trouvent sur une même portée, on peut attribuer le
index 1508004bd2c357756072fac1298b3b7b9e4d00f9..f48e2eba921c37b8606d3bf4cd36a85818ce5e1f 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "editorial-annotations, tweaks-and-overrides"
 
-%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7
+%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b
   texidoces = "
 De forma predeterminada se añaden corchetes de análisis sencillos
 debajo del pentagrama.  El ejemplo siguiente muestra una manera de
index 69748635f6f5571d9d0bca98e3a2772b48484444..5ed1bc5e199e91b634b086cbc011672b63536436 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "ancient-notation"
 
-%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7
+%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b
   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
@@ -15,7 +15,6 @@ antigua.
 
   doctitlees = "Tipografía de música antigua"
 
-
 %% Translation of GIT committish: 9a65042d49324f2e3dff18c4b0858def81232eea
   texidocfr ="
 Voici comment graver la plupart, sinon tous les symboles que
index 78d901b873d83d97d0a0a21c521499169588c3e0..72ad5d5ae6a7d51516d9aba5878262abbb97304a 100644 (file)
@@ -2,7 +2,7 @@
 % generated from Documentation/snippets/new
 % This file is in the public domain.
 %% Note: this file works from version 2.12.0
-\version "2.13.20"
+\version "2.13.29"
 
 #(set-global-staff-size 15)
 \paper {
index c2b8bda91f06b0acc6fef4ef24e3437c686be6e5..83c04e7163abf1bdef64cf3703d6d975c07232c6 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "ancient-notation, template"
 
-%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7
+%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b
   texidoces = "
 Este ejemplo muestra cómo hacer una transcripción moderna de canto
 gregoriano. El canto gregoriano no tiene compás ni plicas; utiliza
@@ -16,7 +16,6 @@ especiales que indican silencios de distintas longitudes.
 "
 
   doctitlees = "Plantilla para notación de música antigua (transcripción moderna de canto gregoriano)"
-
 %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40
 
   texidocde = "
@@ -27,7 +26,6 @@ Länge von Pausen an.
 "
 
  doctitlede = "Vorlage für Alte Notation -- moderne Transkription des gregorianischen Chorals"
-
 %% Translation of GIT committish: bdfe3dc8175a2d7e9ea0800b5b04cfb68fe58a7a
   texidocfr = "
 Voici comment vous pourriez transcrire du grégorien.  Pour mémoire, il
index addee581fcff78c8f85049a1fc4deb12655e37c8..b288ebfd56970faa3b8a0ad8e3b8142712be99e5 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "ancient-notation, template"
 
-%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7
+%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b
   texidoces = "
 Al transcribir música mensural, es útil un «incipit» al compienzo
 de la pieza para indicar la tonalidad y el tempo
@@ -21,7 +21,6 @@ encima de ellos.
 "
   doctitlees = "Plantilla de notación de música antigua (transcripción moderna de música mensural)"
 
-
 %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40
   texidocde = "
 Bei der Transkription von Mensuralmusik ist es oft erwünscht, ein
@@ -36,7 +35,6 @@ zwischen den Systemen geschrieben.
 
 doctitlede = "Vorlage für Alte Notation -- moderne Transkription von Mensuralmusik"
 
-
 %% Translation of GIT committish: bdfe3dc8175a2d7e9ea0800b5b04cfb68fe58a7a
   texidocfr = "
 Lorsque l'on transcrit de la musique mensurale, un @emph{incipit} permet
index c3285e3921604635a76870ab4a97089d2575c302..fd24955917bc629275e53cdf2fb5f6a88a5f47c9 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "ancient-notation"
 
-%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7
+%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b
   texidoces = "
 Las indicaciones de compás también se pueden grabar en estilo antiguo.
 
index faa5ebc0cf4f68e4a64eb90e4b8af0163b93e66f..5d51865c90fc39677eab903db7d7b183b0872df6 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "pitches, editorial-annotations"
 
-%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7
+%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b
   doctitlees = "Aplicar estilos de cabeza según la nota de la escala"
   texidoces = "
 La propiedad @code{shapeNoteStyles} se puede usar para definir varios
@@ -30,7 +30,6 @@ nota.
 
 "
 
-
 %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40
   doctitlede = "Notenkopfstile basierend auf der Tonleiterstufe erstellen"
   texidocde = "
@@ -52,7 +51,6 @@ eine Melodie transponieren kann, ohne dass das Verhältnis zwischen den
 harmonischen Funktionen und dem Notenstil verloren geht.
 
 "
-
 %% Translation of GIT committish: 4ab2514496ac3d88a9f3121a76f890c97cedcf4e
   texidocfr = "
 La propriété @code{shapeNoteStyles} permet d'affecter un profil
index 0cb22574d766d44f605690f2658e2576c52c4a18..2bc07c8f6c43e9897bef2b68a84a25c1d9d9fa65 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "world-music"
 
-%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7
+%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b
   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
@@ -18,7 +18,6 @@ cómo podría ser el comienzo de una improvisación @emph{hijaz}:
 "
 doctitlees = "Improvisación de música árabe"
 
-
 %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40
   texidocde = "
 Bei Improvisation oder @emph{taqasim}, die zeitlich frei gespielt
index 10686dad99dbea1b9cb8519f43413194057de6fe..26aab426c08d72f69b3f32afe6ee5e59cd3a6b08 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "expressive-marks, tweaks-and-overrides"
 
-%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7
+%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b
   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 b1cd37cfe46fc5662214092a25026042824c726e..d77e6e1c20cc88e4947be1dbe98928414efb0221 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.13.20"
+% 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.29
+\version "2.13.29"
 
 \header {
-  lsrtags = "rhythms"
-
-%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7
+%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b
   texidoces = "
 Se pueden subdividir las barras automáticamente.  Estableciendo la
 propiedad @code{subdivideBeams}, las barras se subdividen en
@@ -15,15 +14,18 @@ posiciones de pulso (tal y como se especifica en @code{beatLength}).
 "
   doctitlees = "Subdivisiones de barra automáticas"
 
+  lsrtags = "rhythms"
+
   texidoc = "
 Beams can be subdivided automatically.  By setting the property
 @code{subdivideBeams}, beams are subdivided at beat positions (as
-specified in @code{beatLength}).
+specified in @code{baseMoment}).
 
 "
   doctitle = "Automatic beam subdivisions"
 } % begin verbatim
 
+
 \new Staff {
   \relative c'' {
     <<
@@ -40,10 +42,12 @@ specified in @code{beatLength}).
       }
     >>
     \oneVoice
-    \set beatLength = #(ly:make-moment 1 8)
-    b32^"beatLength 1 8"[ a g f c' b a g]
-    \set beatLength = #(ly:make-moment 1 16)
-    b32^"beatLength 1 16"[ a g f c' b a g]
+    \set baseMoment = #(ly:make-moment 1 8)
+    \set beatStructure = #'(2 2 2 2)
+    b32^"baseMoment 1 8"[ a g f c' b a g]
+    \set baseMoment = #(ly:make-moment 1 16)
+    \set beatStructure = #'(4 4 4 4)
+    b32^"baseMoment 1 16"[ a g f c' b a g]
   }
 }
 
index f1902be45232aa60bfedab209c25fd494908f4e7..869384b0831b775f2683ad8d17ebd449bdab5f9d 100644 (file)
@@ -1,11 +1,11 @@
 % 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.4
-\version "2.13.20"
+%% Note: this file works from version 2.13.29
+\version "2.13.29"
 
 \header {
-%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7
+%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b
   texidoces = "
 Las reglas de final de barra especificadas en el contexto
 @code{Score} se aplican a todos los pentagramas, pero se pueden
@@ -38,7 +38,7 @@ moduler au niveau @code{Staff} ou @code{Voice} :
 
   lsrtags = "rhythms"
   texidoc = "
-Beam-ending rules specified in the @code{Score} context apply to all
+Beat structure rules specified in the @code{Score} context apply to all
 staves, but can be modified at both @code{Staff} and @code{Voice}
 levels:
 "
@@ -49,18 +49,15 @@ levels:
 \relative c'' {
   \time 5/4
   % Set default beaming for all staves
-  \overrideBeamSettings #'Score #'(5 . 4) #'end
-     #'(((1 . 8) . (3 4 3))
-        ((1 . 16) . (6 8 6))
-        ((1 . 32) . (12 16 12)))
+  \set Score.baseMoment = #(ly:make-moment 1 8)
+  \set Score.beatStructure = #'(3 4 3)
   <<
     \new Staff {
       c8 c c c c c c c c c
     }
     \new Staff {
       % Modify beaming for just this staff
-      \overrideBeamSettings #'Staff #'(5 . 4) #'end
-        #'((* . (3 2)))
+      \set Staff.beatStructure = #'(6 4)
       c8 c c c c c c c c c
     }
     \new Staff {
@@ -73,8 +70,7 @@ levels:
         % Modify beaming for this voice only
         \new Voice {
           \voiceTwo
-          \overrideBeamSettings #'Voice #'(5 . 4) #'end
-              #'((* . (3 2)))
+          \set Voice.beatStructure = #'(6 4)
           a8 a a a a a a a a a
         }
       >>
index e278635b28259aadb5d6c9ace485d3399b005e2f..d7ffd2df8db54c314a04fb183a38fdeceabe71ad 100644 (file)
@@ -1,11 +1,11 @@
 % 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.4
-\version "2.13.20"
+%% Note: this file works from version 2.13.29
+\version "2.13.29"
 
 \header {
-%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7
+%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b
   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
@@ -40,10 +40,10 @@ il faudra donc définir les terminaisons de 2/8 et 5/8 :
 
   lsrtags = "rhythms"
   texidoc = "
-There are no default automatic beam groupings specified for 7/8 time,
-so if automatic beams are required the grouping must be specified.  For
-example, to group all beams 2-3-2 in 7/8 time, specify beam endings at
-2/8 and 5/8:
+There is no default beat structure specified for 7/8 time,
+so if automatic beams are required the structure must be specified.  For
+example, to group all beams 2-3-2 in 7/8 time, specify the
+beat structure to be (2 3 2):
 "
   doctitle = "Beam grouping in 7/8 time"
 } % begin verbatim
@@ -53,7 +53,6 @@ example, to group all beams 2-3-2 in 7/8 time, specify beam endings at
   \time 7/8
   % rhythm 2-3-2
   a8 a a a a a a
-  \overrideBeamSettings #'Score #'(7 . 8) #'end
-    #'((* . (2 3 2)))
+  \set Score.beatStructure = #'(2 3 2)
   a8 a a a a a a
 }
index f77f3b9d5649483f76f923b05b156d8249216dfe..c6a340b4d4055c582744609f92254e49245d6ee5 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "rhythms"
 
-%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7
+%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b
   texidoces = "
 Normalmente están prohibidos los saltos de línea si las barras
 atraviesan las líneas divisorias.  Se puede cambiar este
@@ -15,7 +15,6 @@ comportamiento como se muestra aquí:
 "
   doctitlees = "Barras que atraviesan saltos de línea"
 
-
 %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40
 texidocde = "
 Zeilenumbrüche sind normalerweise während Balken verboten.  Das kann geändert
@@ -25,7 +24,6 @@ werden.
   doctitlede = "Balken über Zeilenumbrüche"
 
 
-
 %% Translation of GIT committish: 708e0d9c660856b19929736ca18a6f9d68539c60
 
   texidocfr = "
index 67cb8b8f44c73b9ded31cb4553e6ea31ea382ecd..a9b23f7c452bd9979bd654af55cc488dc533bd8b 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "editorial-annotations, text"
 
-%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7
+%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b
   texidoces = "
 La instrucción @code{\\whiteout} intercala un rectángulo blanco
 debajo de un elemento de marcado.  Este rectángulo blanco no tapa
index 225fe0be3dc91a1df6de4c9f026d96cb237d46a2..95d41d6beadb8679eae55aed8c6dbba9d65502a9 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "expressive-marks"
 
-%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7
+%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b
   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 db5ab31de5af90e0e2fbd6368ef158db0ea1736c..bbed0a5cbff91374e44af0a3184538cc271463e6 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "expressive-marks, tweaks-and-overrides"
 
-%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7
+%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b
   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 790bfc667cebe3880144f5bad08c7b13836f809b..6dd44c7e04216753f7c54f8679355c500db84094 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "expressive-marks, text"
 
-%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7
+%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b
   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 f970c255f26dcd16ec647ca1040f6e837a7e7d0b..36fb7ffc4980efdb14d7c8fb4fa0455741aa829b 100644 (file)
@@ -1,48 +1,68 @@
-%% 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.13.20"
+% 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.15
+\version "2.13.29"
 
 \header {
-  lsrtags = "text, tweaks-and-overrides"
-
+  lsrtags = "text, tweaks-and-overrides, contexts-and-engravers"
   texidoc = "
 For technical reasons, text scripts attached to note heads cannot
 easily be centered on a note head's width, unlike articulations.
 
-Instead of using trial-and-error offset tweaks, this snippet accesses a
-note head (or rest) from the @code{TextScript} object's horizontal
-parent (a paper column), using its extent to correct the positioning.
-
-
-
+Instead of using trial-and-error offset tweaks, this snippet uses a
+Scheme engraver to reset the horizontal parent of each markup to a
+@code{NoteColumn}.  This also allows text to follow note heads which have
+been shifted via @code{force-hshift}.
 "
   doctitle = "Centering markup on note heads automatically"
 } % begin verbatim
 
-textScriptCenterOnNote = \override TextScript #'X-offset =
-#(lambda (grob)
-   (let* ((paper-col (ly:grob-parent grob X))
-          (elts (ly:grob-object paper-col 'elements))
-          (rhythmic-head grob))
-
-     (for-each
-      (lambda (idx)
-        (let ((elt (ly:grob-array-ref elts idx)))
-          (if (grob::has-interface elt
-                                   'rhythmic-grob-interface)
-              (set! rhythmic-head elt))))
-      (reverse (iota (ly:grob-array-length elts))))
-
-     (+
-      (ly:self-alignment-interface::x-aligned-on-self grob)
-      (interval-center
-       (ly:grob-robust-relative-extent rhythmic-head rhythmic-head X)))))
-
-\relative c' {
-  \override TextScript #'self-alignment-X = #CENTER
-  \textScriptCenterOnNote
-  <c e g c>1-\markup \arrow-head #Y #UP ##t
-  <c e g c>1-\markup \huge "^"
+
+#(define (Text_align_engraver ctx)
+  (let ((scripts '())
+        (note-column #f))
+
+    `((acknowledgers
+       (note-column-interface
+        . ,(lambda (trans grob source)
+             ;; cache NoteColumn in this Voice context
+             (set! note-column grob)))
+
+       (text-script-interface
+        . ,(lambda (trans grob source)
+             ;; whenever a TextScript is acknowledged,
+             ;; add it to `scripts' list
+             (set! scripts (cons grob scripts)))))
+
+      (stop-translation-timestep
+       . ,(lambda (trans)
+            ;; if any TextScript grobs exist,
+            ;; set NoteColumn as X-parent
+            (and (pair? scripts)
+                 (for-each (lambda (script)
+                             (set! (ly:grob-parent script X) note-column))
+                           scripts))
+            ;; clear scripts ready for next timestep
+            (set! scripts '()))))))
+
+\layout {
+  \context {
+    \Voice
+    \consists #Text_align_engraver
+    \override TextScript #'X-offset =
+      #ly:self-alignment-interface::aligned-on-x-parent
+    \override TextScript #'self-alignment-X = #CENTER
+  }
 }
 
+\new Staff <<
+  \relative c'' {
+    \override NoteColumn #'force-hshift = #3
+    c1-\markup { \arrow-head #Y #DOWN ##t }
+  }
+  \\
+  \relative c' {
+    a4 a-\markup { \huge ^ } a a
+  }
+>>
index 0a90b3930f53ca923e78fc9f62404d1bdb19c749..f2da53a6e71036a5ff312e08af0998c69e853228 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "expressive-marks, unfretted-strings"
 
-%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7
+%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b
   texidoces = "
 Para hacer más pequeño el círculo de @code{\\flageolet} (armónico)
 utilice la siguiente función de Scheme.
@@ -14,7 +14,6 @@ utilice la siguiente función de Scheme.
 "
   doctitlees = "Cambiar el tamaño de la marca de \\flageolet"
 
-
 %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40
   texidocde = "
 Um den @code{\\flageolet}-Kreis kleiner zu machen, kann diese
@@ -22,7 +21,6 @@ Scheme-Funktion eingesetzt werden.
 
 "
   doctitlede = "\\flageolet-Zeichen verkleinern"
-
 %% Translation of GIT committish: 5b980ee07bba23d3633de1d371fb2926f164e295
 
   texidocfr = "
index ffc65f29ee6fbacae2dae9ac48295f4be8ce837b..1f515792dff999acfdae0de815a40fcaba56de3f 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "simultaneous-notes, editorial-annotations, tweaks-and-overrides"
 
-%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7
+%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b
   texidoces = "
 Se pueden modificar notas individuales de un acorde con la instrucción
 @code{\\tweak}, alterando la propiedad @code{font-size}.
index c593157cfee8de3e3114a42ce6bbd48ac946a852..f6326f42019b254cf0736630a1952b9f907f9afb 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "rhythms"
 
-%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7
+%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b
   texidoces = "
 Se insertan automáticamente barras en ángulo cuando se detecta un
 intervalo muy grande entre las notas.  Se puede hacer un ajuste
@@ -20,7 +20,6 @@ establecido a 5.5 espacios de pentagrama.
 "
   doctitlees = "Cambiar el salto de las barras en ángulo"
 
-
 %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40
 texidocde = "
 Balken mit Hälsen in unterschiedliche Richtungen werden automatisch
@@ -35,7 +34,6 @@ Standardwert von @code{auto-knee-gap} ist 5.5 Notensystemabstände.
   doctitlede = "Balken für weit auseinander liegende Noten ändern"
 
 
-
 %% Translation of GIT committish: 708e0d9c660856b19929736ca18a6f9d68539c60
   texidocfr = "
 LilyPond insère automatiquement des ligatures coudées --- certaines
index df58cf2f0c7978a57075430a21ac94b8933178eb..43b5644f261e82260911aee03bfcb7d78196a034 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "chords"
 
-%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7
+%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b
   texidoces = "
 Se puede establecer el separador entre las distintas partes del
 nombre de un acorde para que sea cualquier elemento de marcado.
@@ -14,7 +14,6 @@ nombre de un acorde para que sea cualquier elemento de marcado.
 "
   doctitlees = "Modificación del separador de acordes"
 
-
 %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40
   texidocde = "
 Der Trenner zwischen unterschiedlichen Teilen eines Akkordsymbols kann
index 28632a4b2c8107680c31fbf4c6c9d701550000f0..c62ee24d44696005557290b56eba321162ca551b 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "rhythms, tweaks-and-overrides"
 
-%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7
+%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b
  doctitlees = "Cambiar la forma de los silencios multicompás"
  texidoces = "
 Si hay diez compases de silencio o menos, se imprime en el pentagrama
@@ -17,7 +17,6 @@ puede cambiar sobreescribiendo la propiedad @code{expand-limit}:
 
 "
 
-
 %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40
   texidocde = "
 Wenn zehn oder weniger Pausentakte vorkommen, wird eine Reihe von Longa-
@@ -29,7 +28,6 @@ setzt:
   doctitlede = "Die Erscheinung von Pausentakten ändern"
 
 
-
 %% Translation of GIT committish: 4da4307e396243a5a3bc33a0c2753acac92cb685
 texidocfr = "
 Dans le cas où ce silence dure moins de dix mesures, LilyPond imprime sur
index e9aa57fc770f2389ea567955d01defa7fb37a267..fc44d16399c5b39c2b92278900f615bfbb011dd8 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "contexts-and-engravers, midi"
 
-%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7
+%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b
   texidoces = "
 Al producir una salida MIDI, el comportamiento predeterminado es
 que cada pentagrama representa un canal MIDI, con todas las voces
index 79fd35797faa686603c645f111b00865e260a187..d3b59d0ffebbc368d8ea937cf17caadd5810bcc4 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "simultaneous-notes"
 
-%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7
+%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b
   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
@@ -15,7 +15,6 @@ y de unísono:
 "
   doctitlees = "Cambiar los textos de partcombine"
 
-
 %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40
   texidocde = "
 Wenn Stimmen automatisch kombiniert werden, kann der Text, der für
@@ -23,7 +22,6 @@ Solo- und Unisono-Stellen ausgegeben wird, geändert werden:
 
 "
   doctitlede = "Partcombine-Text ändern"
-
 %% Translation of GIT committish: 1baa2adf57c84e8d50e6907416eadb93e2e2eb5c
   texidocfr = "
 Lorsque vous regroupez automatiquement des parties, vous pouvez
index 70eceb80a5766ba0ff9458b2fbfe546d2207c844..de280cbfc24fbe75172fa3ff7e84fe45aed2e2bb 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "expressive-marks"
 
-%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7
+%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b
   texidoces = "
 Se puede modificar el texto empleado para los crescendos y
 decrescendos modificando las propiedades de contexto
@@ -21,7 +21,6 @@ valores posibles se encuentran @code{'line} (línea),
 "
   doctitlees = "Cambiar el texto y los estilos de objeto de extensión para las indicaciones dinámicas textuales"
 
-
 %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40
 texidocde = "
 Der Text, der für Crescendo und Decrescendo gestzt wird, kann geändert
@@ -33,7 +32,6 @@ geändert werden, indem die @code{'style}-Eigenschaft des
 und @code{'dotted-line}.
 "
   doctitlede = "Text und Strecker-Stile für Dynamik-Texte ändern"
-
 %% Translation of GIT committish: 4ab2514496ac3d88a9f3121a76f890c97cedcf4e
   texidocfr = "
 Le texte par défaut des crescendos et decrescendos se change en
diff --git a/Documentation/snippets/changing-the-ambitus-gap.ly b/Documentation/snippets/changing-the-ambitus-gap.ly
new file mode 100644 (file)
index 0000000..3cc767f
--- /dev/null
@@ -0,0 +1,45 @@
+% 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.26
+\version "2.13.29"
+\header {
+  lsrtags = "pitches"
+  texidoc = "It is possible to change the default gap setting for
+ambitus."
+
+  doctitle = "Changing the ambitus gap"
+} % begin verbatim
+
+
+
+\layout {
+  \context {
+    \Voice
+    \consists "Ambitus_engraver"
+  }
+}
+
+\new Staff {
+  \time 2/4
+  % Default setting
+  c'4 g''
+}
+
+\new Staff {
+  \time 2/4
+  \override AmbitusLine #'gap = #0
+  c'4 g''
+}
+
+\new Staff {
+  \time 2/4
+  \override AmbitusLine #'gap = #1
+  c'4 g''
+}
+
+\new Staff {
+  \time 2/4
+  \override AmbitusLine #'gap = #1.5
+  c'4 g''
+}
index 6e6ec2808f43b8ca7d0913816cdb0a2466728dff..af66e4dc4605f3ab5f5051f16ce73c24cfc53c50 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "expressive-marks, editorial-annotations"
 
-%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7
+%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b
   texidoces = "
 Se puede cambiar el aspecto de las ligaduras de expresión de
 continuas a punteadas o intermitentes.
index fe75153a16074ac37cc4365584152ad95beda91b..e9fe0b10b4b2b5aeef8064f793f84a981e0fa884 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "expressive-marks"
 
-%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7
+%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b
   texidoces = "
 El glifo de la marca de respiración se puede ajustar
 sobreescribiendo la propiedad de texto del objeto de presentación
@@ -15,7 +15,6 @@ sobreescribiendo la propiedad de texto del objeto de presentación
 "
   doctitlees = "Cambiar el símbolo de la marca de respiración"
 
-
 %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40
   texidocde = "
 Das Schriftzeichen für das Atemzeichen kann verändert werden, indem
@@ -24,7 +23,6 @@ beliebigen Textbeschriftung definiert wird.
 
 "
   doctitlede = "Das Atemzeichen-Symbol verändern"
-
 %% Translation of GIT committish: 217cd2b9de6e783f2a5c8a42be9c70a82195ad20
   texidocfr = "
 On peut choisir le glyphe imprimé par cette commande, en modifiant la
index 4a8d07fe850e56cf85bcb99c8128e77602e321a3..22b2321947b9aa289a145434bea2091a2751ddee 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "chords"
 
-%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7
+%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b
   texidoces = "
 La nomenclatura inglesa (predeterminada) para los acordes del cifrado
 americano se puede cambiar por la alemana (@code{\\germanChords}
diff --git a/Documentation/snippets/changing-the-interval-of-lines-on-the-stave.ly b/Documentation/snippets/changing-the-interval-of-lines-on-the-stave.ly
new file mode 100644 (file)
index 0000000..b11d748
--- /dev/null
@@ -0,0 +1,38 @@
+%% 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.13.20"
+
+\header {
+  lsrtags = "pitches"
+
+  texidoc = "
+@code{staffLineLayoutFunction} is used to change the position of notes.
+This snippet shows setting its value to @code{ly:pitch-semitones} in
+order to produce a chromatic scale with the distance between each space
+and line of the stave equal to one semitone.
+
+"
+  doctitle = "Changing the interval of lines on the stave"
+} % begin verbatim
+
+scale = \relative c' {
+  a4 ais b c
+  cis4 d dis e
+  f4 fis g gis
+  a1
+}
+
+\new Staff \with {
+  \remove "Accidental_engraver"
+  staffLineLayoutFunction = #ly:pitch-semitones
+}
+{
+  <<
+    \scale
+    \context NoteNames {
+      \set printOctaveNames = ##f
+      \scale
+    }
+  >>
+}
diff --git a/Documentation/snippets/changing-the-number-of-augmentation-dots-per-note.ly b/Documentation/snippets/changing-the-number-of-augmentation-dots-per-note.ly
new file mode 100644 (file)
index 0000000..7d5703d
--- /dev/null
@@ -0,0 +1,22 @@
+% 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.26
+\version "2.13.29"
+\header {
+  lsrtags = "rhythms,expressive-marks"
+  texidoc = "This code demonstrates how to change the number of
+augmentation dots on a single note."
+  doctitle = "Changing the number of augmentation dots per note"
+} % begin verbatim
+
+
+\relative c' {
+  c4.. a16 r2 |
+  \override Dots #'dot-count = #4
+  c4.. a16 r2 |
+  \override Dots #'dot-count = #0
+  c4.. a16 r2 |
+  \revert Dots #'dot-count
+  c4.. a16 r2 |
+}
index e1aab8394a8a950e850315bd9ac9bed3dd8eb964..97a89e5f5536b199c8f8194dc15c2a0871771a44 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "chords"
 
-%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7
+%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b
   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
@@ -16,7 +16,6 @@ después de los números, según el valor de las propiedades
 "
   doctitlees = "Cambiar las posiciones de las alteraciones del bajo cifrado"
 
-
 %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40
   texidocde = "
 Versetzungszeichen und Pluszeichen können vor oder nach den Ziffern erscheinen,
index a2a297d2afe605cbd668cabe59659775761ac82c..d415b4ea1c6050256b54a8270ffda7dc1019f751 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "staff-notation, midi"
 
-%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7
+%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b
   texidoces = "
 Para cambiar el tempo en la salida MIDI sin
 imprimir nada, hacemos invisible la indicación metronómica:
@@ -15,7 +15,6 @@ imprimir nada, hacemos invisible la indicación metronómica:
 
   doctitlees = "Cambiar el tempo sin indicación metronómica"
 
-
 %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40
   texidocde = "
 Um das Tempo für die MIDI-Ausgabe zu ändern, ohne eine Tempoangabe in den
@@ -24,7 +23,6 @@ Noten auszugeben, kann die Metronombezeichnung unsichtbar gemacht werden:
 "
 
   doctitlede = "Das Tempo ohne Metronom-Angabe verändern"
-
 %% Translation of GIT committish: 4ab2514496ac3d88a9f3121a76f890c97cedcf4e
   texidocfr = "
 Vous pouvez indiquer un changement de tempo pour le fichier MIDI sans
index c1d4ebb45f14323485ba3cffdd73a3383b602bbf..f649c157cc0989a71ff695643669ed0e49872bf8 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "keyboards, tweaks-and-overrides"
 
-%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7
+%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b
   texidoces = "
 Se puede usar @code{Staff.pedalSustainStrings} para fijar el texto de
 las indicaciones de pisar pedal y levantar pedal.  Observe que las
index 7d9f6e47229250de5f2b3fde125bbf80b0be1aa7..ed0cd298aacc372ae85d96c0d97866e922a5a651 100644 (file)
@@ -2,10 +2,10 @@
 % generated from Documentation/snippets/new
 % This file is in the public domain.
 %% Note: this file works from version 2.13.5
-\version "2.13.20"
+\version "2.13.29"
 
 \header {
-%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7
+%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b
   texidoces = "
 La instrucción @code{\\time} establece las propiedades
 @code{timeSignatureFraction}, @code{beatLength}, @code{beatGrouping} y
index fac3e60ae5b8a89d3790b6acdbc7b8727db4ab6e..652d04d4e36a72a3b7420ab7472fca220b19bbe9 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "rhythms"
 
-%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7
+%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b
  doctitlees = "Cambiar el número del grupo especial"
  texidoces = "
 
@@ -18,7 +18,6 @@ del grupo, o eliminar el número.
 
 "
 
-
 %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40
 texidocde = "
 Standardmäßig wird nur der Zähler des N-tolen-Bruchs über der Klammer
@@ -30,7 +29,6 @@ vollständig unterdrücken.
   doctitlede = "Die Zahl der N-tole verändern"
 
 
-
 %% Translation of GIT committish: 4da4307e396243a5a3bc33a0c2753acac92cb685
   texidocfr = "
 L'apparence du chiffre est déterminée par la propriété @code{text} dans
index f17a74165d9c164cd98e31df9d66f6d0ca86daf5..301d0ab140c2fe15867c506ccd21799ed45942f8 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "rhythms, contexts-and-engravers"
 
-%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7
+%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b
   texidoces = "
 La propiedad @code{measureLength}, junto con
 @code{measurePosition}, determina cuándo es necesario dibujar una
index 5b1cbe6ecacdae0f3eb883779bc4e30ce16398e2..852089e0db34ad1d382958abccde9b1975a3bf33 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "rhythms, vocal-music, ancient-notation, contexts-and-engravers"
 
-%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7
+%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b
   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 234eeb50d6d907e42a1803b4bcc91410eac1f5be..016adfc5047f859cc7fc03802321aa47a64c5a6b 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "chords"
 
-%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7
+%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b
   texidoces = "
 Se puede usar la propiedad @code{chordNameExceptions} para
 almacenar una lista de notaciones espaciales para acordes
@@ -15,7 +15,6 @@ específicos.
 "
   doctitlees = "Excepciones para los nombres de acorde"
 
-
 %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40
   texidocde = "
 Die Eigenschaft @code{chordNameExceptions} kann benutzt werden, um eine
index 8c654e64d22fc61af693ae1009b09c565b14c580..144d34f6131468de3ff7cdb8ad19422e5e4b1635 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "chords"
 
-%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7
+%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b
   texidoces = "
 La presentación del acorde de séptima mayor se
 puede ajustar mediante majorSevenSymbol.
@@ -14,7 +14,6 @@ puede ajustar mediante majorSevenSymbol.
 "
   doctitlees = "Nombre de acorde maj7"
 
-
 %% Translation of GIT committish: 134d9cb2e14ae624aec6fa2dd1630e284807dc42
  texidocde = "
 Das Aussehen des großen Septakkords kann mit @code{majorSevenSymbol} verändert werden.
index d87d26da8c6b4b3af378030596f9252f7d9f8365..2ba6b2f5bee62e391b6624a8e60ec9790039b7bb 100644 (file)
@@ -2,10 +2,10 @@
 % generated from Documentation/snippets/new
 % This file is in the public domain.
 %% Note: this file works from version 2.13.0
-\version "2.13.20"
+\version "2.13.29"
 
 \header {
-%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7
+%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b
   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 13c85d253fc21edab6684aa7e7fb386e726d175d..71702df05c2cd7f668dae19b9c5fee3344d32214 100644 (file)
@@ -2,7 +2,7 @@
 % generated from Documentation/snippets/new
 % This file is in the public domain.
 %% Note: this file works from version 2.12.0
-\version "2.13.20"
+\version "2.13.29"
 #(set-global-staff-size 15)
 \paper {
   ragged-right = ##f
diff --git a/Documentation/snippets/clefs-can-be-transposed-by-arbitrary-amounts.ly b/Documentation/snippets/clefs-can-be-transposed-by-arbitrary-amounts.ly
new file mode 100644 (file)
index 0000000..2033c42
--- /dev/null
@@ -0,0 +1,25 @@
+%% 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.13.20"
+
+\header {
+  lsrtags = "pitches"
+
+  texidoc = "
+Clefs can be transposed by arbitrary amounts, not just by octaves.
+
+"
+  doctitle = "Clefs can be transposed by arbitrary amounts"
+} % begin verbatim
+
+\relative c' {
+  \clef treble
+  c4 c c c
+  \clef "treble_8"
+  c4 c c c
+  \clef "treble_5"
+  c4 c c c
+  \clef "treble^3"
+  c4 c c c
+}
index 9748838cfaad797e44c48a5f106f56ae7c54d206..ed9b437efdac89dc13a5b02715d7daac284bf471 100644 (file)
@@ -2,10 +2,10 @@
 % generated from Documentation/snippets/new
 % This file is in the public domain.
 %% Note: this file works from version 2.13.4
-\version "2.13.20"
+\version "2.13.29"
 
 \header {
-%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7
+%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b
   texidoces = "
 Este código muestra cómo recortar (extraer) fragmentos a partir de una
 partitura completa.
index 42c479180af8d2f3250e641f5dc37ab338c224f6..02fe2e85ed114c108ac6c86ef7d8750ed3482932 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "simultaneous-notes, chords, keyboards"
 
-%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7
+%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b
   texidoces = "
 Los «clusters» o racimos son un mecanismo para indicar la
 interpretación de un ámbito de notas al mismo tiempo.
index 5f4b906c4eb9024bef69be6dffa42123c57e80d9..b65604f4ba00abf093031cc454dfd6bc3149144d 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "expressive-marks, text"
 
-%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7
+%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b
   texidoces = "
 Ciertas indicaciones dinámicas pueden llevar textos (como @qq{più
 forte} o @qq{piano subito}). Se pueden producir usando un bloque
index 88deec7b85e2023404cc83fd6c48fcbcda529b8b..b4bcb344777ecf98f83eb7cfe60eab3a44d273bb 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "simultaneous-notes, text"
 
-%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7
+%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b
   texidoces = "
 
 La herramienta de combinación de partes (instrucción
@@ -28,7 +28,6 @@ textos.
 "
   doctitlees = "Combinar dos partes sobre el mismo pentagrama"
 
-
 %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40
   texidocde = "
 Die Funktion, die Stimmen kombiniert (also der @code{\\partcombine}-Befehl)
@@ -48,7 +47,6 @@ kombinieren: Standardpolyphonie, @code{\\partcombine} ohne Text und
 
 "
   doctitlede = "Zwei Stimmen auf einem System kombinieren"
-
 %% Translation of GIT committish: 1baa2adf57c84e8d50e6907416eadb93e2e2eb5c
   texidocfr = "
 L'outil de combinaison de parties (la commande @code{\\partcombine})
index ef1603b150ded665e4a03d9d91ddca588bfd7584..bd00f68e295998fdd58f1f0d867dd24060bb5461 100644 (file)
@@ -1,11 +1,11 @@
 % 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.4
-\version "2.13.20"
+%% Note: this file works from version 2.13.29
+\version "2.13.29"
 
 \header {
-%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7
+%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b
  doctitlees = "Indicaciones de compases compuestos"
  texidoces = "
 Las indicaciones de compás poco frecuentes como @qq{5/8} se pueden
@@ -68,8 +68,7 @@ database.)
 \relative c' {
   \override Staff.TimeSignature #'stencil = #(compound-time "2" "3" "8")
   \time 5/8
-  \overrideBeamSettings #'Staff #'(5 . 8) #'end
-    #'((* . (2 3)))
+  \set Staff.beatStructure = #'(2 3)
   c8 d e fis gis
   c8 fis, gis e d
   c8 d e4 gis8
index 07f1c318200a352b2bff9d431c8506aac2ca0b5a..7ab1b0d703f103783e15276e3f145d44955b165d 100644 (file)
@@ -1,11 +1,11 @@
 % 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.4
-\version "2.13.20"
+%% Note: this file works from version 2.13.29
+\version "2.13.29"
 
 \header {
-%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7
+%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b
   texidoces = "
 La agrupación de pulsos dentro de un compás está controlada por la
 agrupación predeterminada que se establece en @code{beamSettings}.
@@ -66,29 +66,39 @@ règles par défaut contenues dans le fichier @w{@code{scm/beam-settings.scm}}.
 
   lsrtags = "rhythms"
   texidoc = "
-Beat grouping within a bar is controlled by the default grouping
-established in @code{beamSettings}.  This grouping can be established
-by the use of @code{\\overrideBeamSettings}.  Alternatively, the
+Beat grouping within a measure is controlled by the context property
+@code{beatStructure}.  Values of @code{beatStructure} are
+established for many time signatures in
+@file{scm/time-signature-settings.scm}.  Values of @code{beatStructure}
+can be changed or set with @code{\set}.
+Alternatively, the
 Scheme function @code{set-time-signature} can be used to both
-set the time signature and establish the default grouping rule.
+set the time signature and establish the beat structure.
 @code{set-time-signature}, takes three arguments: the
 number of beats, the beat length, and the internal grouping of beats in
-the measure.  If the @code{Measure_grouping_engraver} is included
+the measure.  @code{\time} and @code{set-time-signature} both apply
+to the @code{Timing} context, so they will not reset values of
+@code{beatStructure} or @code{baseMoment} that are set in
+other lower-level contexts, such as @code{Voice}.
+
+If the @code{Measure_grouping_engraver} is included
 in one of the display contexts, measure grouping signs will be
 created.  Such signs ease reading rhythmically complex modern music.
 In the example, the 9/8 measure is grouped in two different
 patterns using the two different methods, while the 5/8 measure
 is grouped according to the default setting in
-@file{scm/beam-settings.scm}:
+@file{scm/time-signature-settings.scm}:
 "
   doctitle = "Conducting signs measure grouping signs"
 } % begin verbatim
 
 
+
 \score {
-  \relative c'' {
+  \new Voice \relative c'' {
     \time 9/8
-    \overrideBeamSettings #'Score #'(9 . 8) #'end #'((* . (2 2 2 3)))
+    g8 g d d g g a( bes g) |
+    \set Timing.beatStructure = #'(2 2 2 3)
     g8 g d d g g a( bes g) |
     #(set-time-signature 9 8 '(4 5))
     g8 g d d g g a( bes g) |
index 249400ac1d0d6d90db40a6b01b927c6730811455..8d5f4d66fe422b96c5471cb2f6f7d1b4b161ee92 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "expressive-marks"
 
-%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7
+%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b
   texidoces = "
 Se puede tipografiar un gissando contemporáneo sin nota final
 utilizando una nota oculta y temporalización de cadenza.
@@ -14,7 +14,6 @@ utilizando una nota oculta y temporalización de cadenza.
 "
   doctitlees = "Glissando contemporáneo"
 
-
 %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40
 texidocde = "
 Ein modernes Glissando ohne eine Endnote kann gesetzt werden, indem
@@ -22,7 +21,6 @@ eine Kadenz eingesetzt wird und die Endnote unsichtbar gemacht wird.
 
 "
   doctitlede = "Moderne Glissandi"
-
 %% Translation of GIT committish: 217cd2b9de6e783f2a5c8a42be9c70a82195ad20
   texidocfr = "
 De nos jours, il peut arriver que la note d'arrivée d'un glissando soit
index 14f42453134c2d58f4c4e14a3b2a0f7256433a3c..2b4356606f1acf0e45cc4c595369dfdf5671f9bf 100644 (file)
@@ -1,15 +1,16 @@
 adding-a-figured-bass-above-or-below-the-notes.ly
 adding-an-extra-staff-at-a-line-break.ly
 adding-an-extra-staff.ly
+centering-markup-on-note-heads-automatically.ly
 changing-midi-output-to-one-channel-per-voice.ly
 changing-time-signatures-inside-a-polymetric-section-using--scaledurations.ly
 chant-or-psalms-notation.ly
 creating-blank-staves.ly
+defining-an-engraver-in-scheme-ambitus-engraver.ly
 engravers-one-by-one.ly
 mensurstriche-layout-bar-lines-between-the-staves.ly
 nesting-staves.ly
 removing-bar-numbers-from-a-score.ly
-scheme-engraver-ambitus.ly
 use-square-bracket-at-the-start-of-a-staff-group.ly
 vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly
 vocal-ensemble-template-with-verse-and-refrain.ly
index 3a0b39a43751b568cbba885eed4c89f1dbe42e5d..fdcc88444e21b195e90ad841baad0ea48a4eec69 100644 (file)
@@ -2,10 +2,10 @@
 % generated from Documentation/snippets/new
 % This file is in the public domain.
 %% Note: this file works from version 2.13.1
-\version "2.13.20"
+\version "2.13.29"
 
 \header {
-%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7
+%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b
 
   texidoces = "
 La visibilidad de los objetos de extensión que acaban en la primera
index c8b556087aa717704974bb1a05af2f29c25df530..07db41e79c307a849b23d70a554404ade488d454 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "editorial-annotations, chords, keyboards, fretted-strings"
 
-%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7
+%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b
   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
@@ -18,14 +18,12 @@ sea una sola nota.
   doctitlees = "Controlar la colocación de las digitaciones de acordes"
 
 
-
 %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40
   texidocde = "
 Die Position von Fingersatzzahlen kann exakt kontrolliert werden.
 
 "
   doctitlede = "Position von Fingersatz in Akkorden kontrollieren"
-
 %% Translation of GIT committish: ac6297e4fa174ac5759cc450ad085c2fac9ba00b
 
   texidocfr = "
index 6b281dc0ce7d4fe89ebd526bf0fac9b4284474a2..3a94721058f68fb9426c43a06313b6022a27c0ae 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "expressive-marks, tweaks-and-overrides"
 
-%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7
+%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b
   texidoces = "
 El orden vertical que ocupan las inscripciones gráficas está
 controlado con la propiedad @code{'script-priority}. Cuanto más
@@ -22,7 +22,6 @@ lugar.
 "
   doctitlees = "Controlar la ordenación vertical de las inscripciones"
 
-
 %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40
 texidocde = "
 Die vertikale Anordnung von Beschriftungen wird mit der
@@ -37,7 +36,6 @@ anhand ihres Auftretens in der Quelldatei entschieden.
 
 "
   doctitlede = "Die vertikale Anordnung von Beschriftungen kontrollieren"
-
 %% Translation of GIT committish: 217cd2b9de6e783f2a5c8a42be9c70a82195ad20
   texidocfr = "
 Les symboles s'ordonnent verticalement suivant la propriété
index 9721f3bef2df24d2e2147e50ededea91224471c8..906adac329af738eb398cf3c252bf0b2f64340aa 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "expressive-marks, editorial-annotations, tweaks-and-overrides"
 
-%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7
+%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b
 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
@@ -21,7 +21,6 @@ grupeto horizontalmente.
 doctitlees = "Crear un grupeto de anticipación"
 
 
-
 %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40
   texidocde = "
 Einen Doppelschlag mit Vorhalt zu erstellen, wobei die untere Note das
@@ -33,7 +32,6 @@ wird benutzt, um den Doppelschlag horizontal zu positionieren.
 "
 
   doctitlede = "Einen  Doppelschlag mit Vorhalt erstellen"
-
 %% Translation of GIT committish: 4ab2514496ac3d88a9f3121a76f890c97cedcf4e
   texidocfr = "
 Obtenir un @emph{grupetto} retardé et dans lequel la note la plus basse
index 161d5612243127dde13e6a5c9134288cc32572ba..5df0598631d016a5387767a04859fa0605bf4466 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "pitches"
 
-%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7
+%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b
   texidoces = "
 En una música que tenga muchas apariciones de la
 misma secuencia de notas a distintas alturas, podría ser de
index e3784af8029e69a16f79a4d80d1194b2f6e6301e..046467368f3c20c158245200e8a1eadefc8333b9 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "expressive-marks"
 
-%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7
+%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b
   texidoces = "
 Se puede trazar un símbolo de arpegio entre notas de distintas
 voces que están sobre el mismo pentagrama si el grabador
@@ -16,7 +16,6 @@ voces que están sobre el mismo pentagrama si el grabador
 "
   doctitlees = "Crear arpegios entre notas de voces distintas"
 
-
 %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40
 texidocde = "
 Ein Arpeggio kann zwischen Noten aus unterschidlichen Stimmen auf demselben
@@ -25,7 +24,6 @@ System gezogen werden, wenn der @code{Span_arpeggio_engraver} in den
 
 "
   doctitlede = "Arpeggios zwischen unterschiedlichen Stimmen erzeugen"
-
 %% Translation of GIT committish: 217cd2b9de6e783f2a5c8a42be9c70a82195ad20
   texidocfr = "
 Affecter le graveur @code{Span_arpeggio_engraver} au contexte de la
index 2eafd196ae8e34112ef1a3710745401e70184aa6..7ff227f2fdc96439d612b36201b6e69289b6b87f 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "staff-notation, editorial-annotations, contexts-and-engravers, paper-and-layout"
 
-%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7
+%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b
   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 136cddc6c2c616d3ea95513c25c68e734a3552a4..5d8e46a8caa96cf5cef531aacec117d3d71cdb20 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "expressive-marks"
 
-%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7
+%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b
   texidoces = "
 Dentro de un @code{PianoStaff}, es posible hacer que un arpegio
 cruce entre los pentagramas ajustando la propiedad
@@ -15,7 +15,6 @@ cruce entre los pentagramas ajustando la propiedad
 "
   doctitlees = "Crear arpegios que se cruzan entre pentagramas dentro de un sistema de piano"
 
-
 %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40
 texidocde = "
 Arpeggio über mehrere Systeme können in anderen Kontexten als dem
@@ -24,7 +23,6 @@ in den @code{Score}-Kontext eingefügt wird.
 
 "
   doctitlede = "Arpeggio über mehrere Systeme in anderen Kontexten"
-
 %% Translation of GIT committish: 4ab2514496ac3d88a9f3121a76f890c97cedcf4e
   texidocfr = "
 Dans une double portée pour piano (@code{PianoStaff}), un arpège peut
index a6f2fc03d0aace2dde0fb15c0261b7f99774162a..041b56422b6974b9186c3582b1729fd8ed9c955d 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "expressive-marks"
 
-%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7
+%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b
   texidoces = "
 Se pueden crear arpegios que se cruzan entre pentagramas dentro de
 contextos distintos a @code{GrandStaff}, @code{PianoStaff} y
@@ -16,7 +16,6 @@ contextos distintos a @code{GrandStaff}, @code{PianoStaff} y
 "
   doctitlees = "Creación de arpegios que se cruzan entre pentagramas dentro de otros contextos"
 
-
 %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40
  texidocde = "
 In einem Klaviersystem (@code{PianoStaff}) ist es möglich, ein Arpeggio
@@ -26,7 +25,6 @@ zwischen beiden Systemen zu verbinden, indem die
 
 "
   doctitlede = "Arpeggio zwischen Systemen in einem Klaviersystem erstellen"
-
 %% Translation of GIT committish: 217cd2b9de6e783f2a5c8a42be9c70a82195ad20
   texidocfr = "
 Il est possible de distribuer un arpège sur plusieurs portées d'un
index 72be5f69009e56af8acd0eaf9d7c30dd3987dce8..55bbd68e957b9e69531aa5a7585b543eced0cf2b 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "staff-notation"
 
-%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7
+%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b
   texidoces = "
 Se pueden crear indicaciones metronómicas nuevas en modo de
 marcado, pero no cambian el tempo en la salida MIDI.
@@ -14,7 +14,6 @@ marcado, pero no cambian el tempo en la salida MIDI.
 "
   doctitlees = "Crear indicaciones metronómicas en modo de marcado"
 
-
 %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40
   texidocde = "
 Neue Metronombezeichnungen können als Textbeschriftung erstellt werden,
@@ -23,7 +22,6 @@ aber sie ändern nicht das Tempo für die MIDI-Ausgabe.
 "
 
   doctitlede = "Eine Metronombezeichnung als Textbeschriftung erstellen"
-
 %% Translation of GIT committish: 99dc90bbc369722cf4d3bb9f30b7288762f2167f6
   texidocfr = "
 Vous pouvez créer des indications de tempo sous la forme d'étiquettes
index eb15002179f4a5ff835391e817a528eaf8b9feea..06e11236a806421926404e6fcd38e511391d49ce 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "expressive-marks, text"
 
-%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7
+%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b
   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 6a893102950f2411c0e5fa17c954482c9ce30429..eb942195bcce1d7730799cd0489eb4b20615244e 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "expressive-marks, text, tweaks-and-overrides"
 
-%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7
+%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b
   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 b9177071f9e81743c8f0f9013273dcf52fd11445..849a4540837b4966118b369ec588858179bc6019 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "expressive-marks, keyboards, unfretted-strings"
 
-%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7
+%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b
   texidoces = "
 En determinadas situaciones es necesario crear ligaduras de
 expresión entre notas que están en voces distintas.
index 0fc43e3354351aac09f01ea62e6d84de078f5e50..7e4274a26f4dca31c9cfff736fc4eb9d3e48ef21 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "expressive-marks, text, tweaks-and-overrides"
 
-%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7
+%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b
   texidoces = "
 Las instrucciones @code{\\startTextSpan} y @code{\\stopTextSpan}
 permiten la creación de elementos de extensión textuales tan
index 40aecd2d735374049dd6155052594a368b3f145b..7a0ff9e868a0c4a7e13687f6dadfcb1cd907b933 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "ancient-notation, tweaks-and-overrides"
 
-%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7
+%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b
   texidoces = "
 Se pueden tipografiar «custos» en diferentes estilos.
 
index dadba91ea3ff555f810879e73d6f089530b12e9d..57da12caaf1cd680ec63618353eed1187783a0b7 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "fretted-strings, tweaks-and-overrides"
 
-%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7
+%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b
   texidoces = "
 Se pueden establecer las propiedades de los diagramas de
 posiciones de acordes por medio de @code{'fret-diagram-details}.
@@ -19,7 +19,6 @@ sobreescritura de propiedades.
 "
   doctitlees = "Personalizar los diagramas de posiciones"
 
-
 %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40
   texidocde = "
 Eigenschaften von Bunddiagrammen können in
index 8375a55a7b2d650db372317019b1aec2df40cc5e..c74d9c6d2b3dedf38ce4058fbb48762ba634dbcf 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "fretted-strings, tweaks-and-overrides"
 
-%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7
+%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b
   texidoces = "
 Se pueden establecer las propiedades de los diagramas de
 posiciones a través de @code{'fret-diagram-details}.  Para los
@@ -16,7 +16,6 @@ diagramas de posiciones de marcado, se pueden aplicar overrides
 "
  doctitlees = "Personalizar diagramas de posiciones de marcado"
 
-
 %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40
   texidocde = "
 Bunddiagramme können mit der Eigenschaft @code{'fret-diagram-details}
@@ -26,7 +25,6 @@ Beschriftung vorgenommen werden.
 
 "
   doctitlede = "Anpassung von Beschriftungs-Bunddiagrammen"
-
 %% Translation of GIT committish: ac6297e4fa174ac5759cc450ad085c2fac9ba00b
 
   texidocfr = "
index 7c9dbcffbc85856be2f8fb23c98eee87b38a12f3..1f0e37c0f22859ee2de8cd9224d252a210b13ea9 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "editorial-annotations"
 
-%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7
+%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b
   texidoces = "
 La dirección predeterminada de las plicas sobre la tercera línea
 del pentagrama está determinada por la propiedad
@@ -15,7 +15,6 @@ del pentagrama está determinada por la propiedad
 "
   doctitlees = "Dirección predeterminada de las plicas sobre la tercera línea del pentagrama"
 
-
 %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40
   texidocde = "
 Die Richtung von Hälsen auf der mittleren Linie kann mit der @code{Stem}-Eigenschaft
diff --git a/Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly b/Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly
new file mode 100644 (file)
index 0000000..50d6c67
--- /dev/null
@@ -0,0 +1,341 @@
+% 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.15
+\version "2.13.29"
+
+\header {
+%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b
+
+  texidoces = "
+Este ejemplo demuestra cómo se puede definir el grabador de ámbito en
+el espacio del usuario, con un grabador de Scheme.
+
+Esto es básicamente una reescritura en Scheme del código de
+@file{lily/ambitus-engraver.cc}.
+
+"
+
+  doctitlees = "Definir un grabador en Scheme: grabador de ámbito"
+
+
+  lsrtags = "contexts-and-engravers"
+
+
+  texidoc = "This example demonstrates how the ambitus engraver may be
+  defined on the user side, with a Scheme engraver.
+
+  This is basically a rewrite in Scheme of the code from
+  @file{lily/ambitus-engraver.cc}.
+"
+
+  doctitle = "Defining an engraver in Scheme: ambitus engraver"
+} % begin verbatim
+
+
+#(use-modules (oop goops))
+
+%%%
+%%% Grob utilities
+%%%
+%%% These are literal rewrites of some C++ methods used by the ambitus engraver.
+#(define (ly:event::in-event-class event class-name)
+   "Check if @var{event} the given class.
+Rewrite of @code{Stream_event::internal_in_event_class} from @file{lily/stream-event.cc}."
+   (memq class-name (ly:make-event-class (ly:event-property event 'class))))
+
+#(define (ly:separation-item::add-conditional-item grob grob-item)
+   "Add @var{grob-item} to the array of conditional elements of @var{grob}.
+Rewrite of @code{Separation_item::add_conditional_item} from @file{lily/separation-item.cc}."
+   (ly:pointer-group-interface::add-grob grob 'conditional-elements grob-item))
+
+#(define (ly:accidental-placement::accidental-pitch accidental-grob)
+   "Get the pitch from the grob cause of @var{accidental-grob}.
+Rewrite of @code{accidental_pitch} from @file{lily/accidental-placement.cc}."
+   (ly:event-property (ly:grob-property (ly:grob-parent accidental-grob Y) 'cause)
+                      'pitch))
+
+#(define (ly:accidental-placement::add-accidental grob accidental-grob)
+   "Add @var{accidental-grob}, an @code{Accidental} grob, to the
+list of the accidental grobs of @var{grob}, an @code{AccidentalPlacement}
+grob.
+Rewrite of @code{Accidental_placement::add_accidental} from @file{lily/accidental-placement.cc}."
+   (let ((pitch (ly:accidental-placement::accidental-pitch accidental-grob)))
+     (set! (ly:grob-parent accidental-grob X) grob)
+     (set! (ly:grob-property accidental-grob 'X-offset)
+           ly:grob::x-parent-positioning)
+     (let* ((accidentals (ly:grob-object grob 'accidental-grobs))
+            (handle (assq (ly:pitch-notename pitch) accidentals))
+            (entry (if handle (cdr handle) '())))
+       (set! (ly:grob-object grob 'accidental-grobs)
+             (assq-set! accidentals
+                        (ly:pitch-notename pitch)
+                        (cons accidental-grob entry))))))
+
+%%%
+%%% Ambitus data structure
+%%%
+
+%%% The <ambitus> class holds the various grobs that are created
+%%% to print an ambitus:
+%%% - ambitus-group: the grob that groups all the components of an ambitus
+%%% (Ambitus grob);
+%%% - ambitus-line: the vertical line between the upper and lower ambitus
+%%% notes (AmbitusLine grob);
+%%% - ambitus-up-note and ambitus-down-note: the note head and accidental
+%%% for the lower and upper note of the ambitus (see <ambitus-note> class
+%%% below).
+%%% The other slots define the key and clef context of the engraver:
+%%% - start-c0: position of middle c at the beginning of the piece.  It
+%%% is used to place the ambitus notes according to their pitch;
+%%% - start-key-sig: the key signature at the beginning of the piece.  It
+%%% is used to determine if accidentals shall be printed next to ambitus
+%%% notes.
+
+#(define-class <ambitus> ()
+   (ambitus-group #:accessor ambitus-group)
+   (ambitus-line #:accessor ambitus-line)
+   (ambitus-up-note #:getter ambitus-up-note
+                    #:init-form (make <ambitus-note>))
+   (ambitus-down-note #:getter ambitus-down-note
+                      #:init-form (make <ambitus-note>))
+   (start-c0 #:accessor ambitus-start-c0
+             #:init-value #f)
+   (start-key-sig #:accessor ambitus-start-key-sig
+                  #:init-value '()))
+
+%%% Accessor for the lower and upper note data of an ambitus
+#(define-method (ambitus-note (ambitus <ambitus>) direction)
+   "If @var{direction} is @code{UP}, then return the upper ambitus note
+of @var{ambitus}, otherwise return the lower ambitus note."
+   (if (= direction UP)
+       (ambitus-up-note ambitus)
+       (ambitus-down-note ambitus)))
+
+%%% The <ambitus-note> class holds the grobs that are specific to ambitus
+%%% (lower and upper) notes:
+%%% - head: an AmbitusNoteHead grob;
+%%% - accidental: an AmbitusAccidental grob, to be possibly printed next
+%%% to the ambitus note head.
+%%% Moreover:
+%%% - pitch is the absolute pitch of the note
+%%% - cause is the note event that causes this ambitus note, i.e. the lower
+%%% or upper note of the considered music sequence.
+
+#(define-class <ambitus-note> ()
+   (head #:accessor ambitus-note-head
+         #:init-value #f)
+   (accidental #:accessor ambitus-note-accidental
+               #:init-value #f)
+   (cause #:accessor ambitus-note-cause
+          #:init-value #f)
+   (pitch #:accessor ambitus-note-pitch
+          #:init-value #f))
+
+%%%
+%%% Ambitus engraving logics
+%%%
+%%% Rewrite of the code from @file{lily/ambitus-engraver.cc}.
+
+#(define (make-ambitus translator)
+   "Build an ambitus object: initialize all the grobs and their relations.
+
+The Ambitus grob contain all other grobs:
+ Ambitus
+  |- AmbitusLine
+  |- AmbitusNoteHead   for upper note
+  |- AmbitusAccidental for upper note
+  |- AmbitusNoteHead   for lower note
+  |- AmbitusAccidental for lower note
+
+The parent of an accidental is the corresponding note head,
+and the accidental is set as the 'accidental-grob of the note head
+so that is printed by the function that prints notes."
+   ;; make the ambitus object
+   (let ((ambitus (make <ambitus>)))
+     ;; build the Ambitus grob, which will contain all other grobs
+     (set! (ambitus-group ambitus) (ly:engraver-make-grob translator 'Ambitus '()))
+     ;; build the AmbitusLine grob (line between lower and upper note)
+     (set! (ambitus-line ambitus) (ly:engraver-make-grob translator 'AmbitusLine '()))
+     ;; build the upper and lower AmbitusNoteHead and AmbitusAccidental
+     (for-each (lambda (direction)
+                 (let ((head (ly:engraver-make-grob translator 'AmbitusNoteHead '()))
+                       (accidental (ly:engraver-make-grob translator 'AmbitusAccidental '()))
+                       (group (ambitus-group ambitus)))
+                   ;; The parent of the AmbitusAccidental grob is the
+                   ;; AmbitusNoteHead grob
+                   (set! (ly:grob-parent accidental Y) head)
+                   ;; The AmbitusAccidental grob is set as the accidental-grob
+                   ;; object of the AmbitusNoteHead.  This is later used by the
+                   ;; function that prints notes.
+                   (set! (ly:grob-object head 'accidental-grob) accidental)
+                   ;; both the note head and the accidental grobs are added
+                   ;; to the main ambitus grob.
+                   (ly:axis-group-interface::add-element group head)
+                   (ly:axis-group-interface::add-element group accidental)
+                   ;; the note head and the accidental grobs are added to the
+                   ;; ambitus object
+                   (set! (ambitus-note-head (ambitus-note ambitus direction))
+                         head)
+                   (set! (ambitus-note-accidental (ambitus-note ambitus direction))
+                         accidental)))
+               (list DOWN UP))
+     ;; The parent of the ambitus line is the lower ambitus note head
+     (set! (ly:grob-parent (ambitus-line ambitus) X)
+           (ambitus-note-head (ambitus-note ambitus DOWN)))
+     ;; the ambitus line is added to the ambitus main grob
+     (ly:axis-group-interface::add-element (ambitus-group ambitus) (ambitus-line ambitus))
+     ambitus))
+
+#(define-method (initialize-ambitus-state (ambitus <ambitus>) translator)
+   "Initialize the state of @var{ambitus}, by getting the starting
+position of middle C and key signature from @var{translator}'s context."
+   (if (not (ambitus-start-c0 ambitus))
+       (begin
+         (set! (ambitus-start-c0 ambitus)
+               (ly:context-property (ly:translator-context translator)
+                                    'middleCPosition
+                                    0))
+         (set! (ambitus-start-key-sig ambitus)
+               (ly:context-property (ly:translator-context translator)
+                                    'keySignature)))))
+
+#(define-method (update-ambitus-notes (ambitus <ambitus>) note-grob)
+   "Update the upper and lower ambitus pithes of @var{ambitus}, using
+@var{note-grob}."
+   ;; Get the event that caused the note-grob creation
+   ;; and check that it is a note-event.
+   (let ((note-event (ly:grob-property note-grob 'cause)))
+     (if (ly:event::in-event-class note-event 'note-event)
+         ;; get the pitch from the note event
+         (let ((pitch (ly:event-property note-event 'pitch)))
+           ;; if this pitch is lower than the current ambitus lower
+           ;; note pitch (or it has not been initialized yet),
+           ;; then this pitch is the new ambitus lower pitch,
+           ;; and conversely for upper pitch.
+           (for-each (lambda (direction pitch-compare)
+                       (if (or (not (ambitus-note-pitch (ambitus-note ambitus direction)))
+                               (pitch-compare pitch
+                                              (ambitus-note-pitch (ambitus-note ambitus direction))))
+                           (begin
+                             (set! (ambitus-note-pitch (ambitus-note ambitus direction))
+                                   pitch)
+                             (set! (ambitus-note-cause (ambitus-note ambitus direction))
+                                   note-event))))
+                     (list DOWN UP)
+                     (list ly:pitch<? (lambda (p1 p2)
+                                        (ly:pitch<? p2 p1))))))))
+
+#(define-method (typeset-ambitus (ambitus <ambitus>) translator)
+   "Typeset the ambitus:
+- place the lower and upper ambitus notes according to their pitch and
+  the position of the middle C;
+- typeset or delete the note accidentals, according to the key signature.
+  An accidental, if it is to be printed, is added to an AccidentalPlacement
+  grob (a grob dedicated to the placement of accidentals near a chord);
+- both note heads are added to the ambitus line grob, so that a line should
+  be printed between them."
+   ;; check if there are lower and upper pitches
+   (if (and (ambitus-note-pitch (ambitus-note ambitus UP))
+            (ambitus-note-pitch (ambitus-note ambitus DOWN)))
+       ;; make an AccidentalPlacement grob, for placement of note accidentals
+       (let ((accidental-placement (ly:engraver-make-grob
+                                    translator
+                                    'AccidentalPlacement
+                                    (ambitus-note-accidental (ambitus-note ambitus DOWN)))))
+         ;; For lower and upper ambitus notes:
+         (for-each (lambda (direction)
+                     (let ((pitch (ambitus-note-pitch (ambitus-note ambitus direction))))
+                       ;; set the cause and the staff position of the ambitus note
+                       ;; according to the associated pitch
+                       (set! (ly:grob-property (ambitus-note-head (ambitus-note ambitus direction))
+                                               'cause)
+                             (ambitus-note-cause (ambitus-note ambitus direction)))
+                       (set! (ly:grob-property (ambitus-note-head (ambitus-note ambitus direction))
+                                               'staff-position)
+                             (+ (ambitus-start-c0 ambitus)
+                                (ly:pitch-steps pitch)))
+                       ;; determine if an accidental shall be printed for this note,
+                       ;; according to the key signature
+                       (let* ((handle (or (assoc (cons (ly:pitch-octave pitch)
+                                                       (ly:pitch-notename pitch))
+                                                 (ambitus-start-key-sig ambitus))
+                                          (assoc (ly:pitch-notename pitch)
+                                                 (ambitus-start-key-sig ambitus))))
+                              (sig-alter (if handle (cdr handle) 0)))
+                         (cond ((= (ly:pitch-alteration pitch) sig-alter)
+                                ;; the note alteration is in the key signature
+                                ;; => it does not have to be printed
+                                (ly:grob-suicide!
+                                 (ambitus-note-accidental (ambitus-note ambitus direction)))
+                                (set! (ly:grob-object (ambitus-note-head (ambitus-note ambitus direction))
+                                                      'accidental-grob)
+                                      '()))
+                               (else
+                                ;; otherwise, the accidental shall be printed
+                                (set! (ly:grob-property (ambitus-note-accidental
+                                                         (ambitus-note ambitus direction))
+                                                        'alteration)
+                                      (ly:pitch-alteration pitch)))))
+                       ;; add the AccidentalPlacement grob to the
+                       ;; conditional items of the AmbitusNoteHead
+                       (ly:separation-item::add-conditional-item
+                        (ambitus-note-head (ambitus-note ambitus direction))
+                        accidental-placement)
+                       ;; add the AmbitusAccidental to the list of the
+                       ;; AccidentalPlacement grob accidentals
+                       (ly:accidental-placement::add-accidental
+                        accidental-placement
+                        (ambitus-note-accidental (ambitus-note ambitus direction)))
+                       ;; add the AmbitusNoteHead grob to the AmbitusLine grob
+                       (ly:pointer-group-interface::add-grob
+                        (ambitus-line ambitus)
+                        'note-heads
+                        (ambitus-note-head (ambitus-note ambitus direction)))))
+                   (list DOWN UP))
+         ;; add the AccidentalPlacement grob to the main Ambitus grob
+         (ly:axis-group-interface::add-element (ambitus-group ambitus) accidental-placement))
+       ;; no notes ==> suicide the grobs
+       (begin
+         (for-each (lambda (direction)
+                     (ly:grob-suicide! (ambitus-note-accidental (ambitus-note ambitus direction)))
+                     (ly:grob-suicide! (ambitus-note-head (ambitus-note ambitus direction))))
+                   (list DOWN UP))
+         (ly:grob-suicide! ambitus-line))))
+
+%%%
+%%% Ambitus engraver definition
+%%%
+#(define ambitus-engraver
+   (lambda (context)
+     (let ((ambitus #f))
+       ;; when music is processed: make the ambitus object, if not already built
+       `((process-music . ,(lambda (translator)
+                             (if (not ambitus)
+                                 (set! ambitus (make-ambitus translator)))))
+         ;; set the ambitus clef and key signature state
+         (stop-translation-timestep . ,(lambda (translator)
+                                         (if ambitus
+                                             (initialize-ambitus-state ambitus translator))))
+         ;; when a note-head grob is built, update the ambitus notes
+         (acknowledgers
+          (note-head-interface . ,(lambda (engraver grob source-engraver)
+                                    (if ambitus
+                                        (update-ambitus-notes ambitus grob)))))
+         ;; finally, typeset the ambitus according to its upper and lower notes
+         ;; (if any).
+         (finalize . ,(lambda (translator)
+                        (if ambitus
+                            (typeset-ambitus ambitus translator))))))))
+
+%%%
+%%% Example
+%%%
+
+\score {
+  \new StaffGroup <<
+    \new Staff { c'4 des' e' fis' gis' }
+    \new Staff { \clef "bass" c4 des ~ des ees b, }
+  >>
+  \layout { \context { \Staff \consists #ambitus-engraver } }
+}
index 03e4a8ab84e96119c3095b60ec33e840de1bfa8b..662a9103dfe6f10092fe1351d3e08d31bdaeae6b 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "fretted-strings"
 
-%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7
+%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b
   texidoces = "
 
 Se pueden añadir diagramas de posiciones predefinidas para
@@ -25,7 +25,6 @@ de las cuerdas.  Hay planes para corregir esto en un futuro.
 "
   doctitlees = "Definición de posiciones predefinidas para otros instrumentos"
 
-
 %% Translation of GIT committish: f23429bc5cfa9d141ef7b4509afc46c140308a1e
   texidocde = "
 Vordefinierte Bunddiagramme können für neue Instrumente hinzugefügt werden
@@ -43,7 +42,6 @@ enthalten.  Das soll in der Zukunft verbessert werden.
 
 "
   doctitlede = "Eigene vordefinierte Bunddiagramme für andere Instrumente erstellen"
-
 %% Translation of GIT committish: 4ab2514496ac3d88a9f3121a76f890c97cedcf4e
 
   texidocfr = "
index 75c902c8c1caae44463ff1b0aeaf5a1bffd95d98..6d2d5b350529ea274889312b4403eee6ee7270ab 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "staff-notation, tweaks-and-overrides"
 
-%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7
+%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b
   texidoces = "
 Si hay un solo pentagrama en un de los tipos de sistema
 @code{ChoirStaff} o @code{StaffGroup}, el comportamiento
@@ -22,7 +22,6 @@ distinta, como se ve en el segundo sistema del ejemplo.
   doctitlees = "Mostrar corchete o llave en grupos de un solo pentagrama"
 
 
-
 %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40
   texidocde = "
 Wenn nur ein System einer Systemgruppe vom Typ @code{ChoirStaff} oder
@@ -36,7 +35,6 @@ wie das zweite Beispiel zeigt.
 
 "
   doctitlede = "Klammer anzeigen wenn nur ein System gesetzt wird"
-
 %% Translation of GIT committish: 99dc90bbc369722cf4d3bb9f30b7288762f2167f6
   texidocfr = "
 Lorsque, dans des regoupements de type @code{ChoirStaff} ou
index 5b02cef3b8923cc31e8d8caf1b3d778b2587aa0f..72a57588436226e29dd11636d0618f6a43b79a20 100644 (file)
@@ -2,10 +2,10 @@
 % generated from Documentation/snippets/new
 % This file is in the public domain.
 %% Note: this file works from version 2.13.1
-\version "2.13.20"
+\version "2.13.29"
 
 \header {
-%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7
+%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b
 
   texidoces = "
 He aquí una forma de imprimir un acorde en el que suena la misma nota
index b50822fc66a97591495294f5629dcc3ed239c2cc..4254e0a34c12f6696464e7b2610d200171723c40 100644 (file)
@@ -2,10 +2,10 @@
 % generated from Documentation/snippets/new
 % This file is in the public domain.
 %% Note: this file works from version 2.13.10
-\version "2.13.20"
+\version "2.13.29"
 
 \header {
-%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7
+%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b
 
   texidoces = "
 Al trabajar con los callbacks de un grob, puede ser de mucha ayuda
index b8e2226e32c13bf955d6f30afa8a3888d344a92e..ccbbe5901dcc650cb798e637789a9ad5fa61a9e3 100644 (file)
@@ -2,10 +2,10 @@
 % generated from Documentation/snippets/new
 % This file is in the public domain.
 %% Note: this file works from version 2.13.4
-\version "2.13.20"
+\version "2.13.29"
 
 \header {
-%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7
+%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b
   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
diff --git a/Documentation/snippets/dot-count-override.ly b/Documentation/snippets/dot-count-override.ly
deleted file mode 100644 (file)
index 7d4e7dd..0000000
+++ /dev/null
@@ -1,22 +0,0 @@
-% 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.26
-\version "2.13.26"
-\header {
-  lsrtags = "rhythms,expressive-marks"
-  texidoc = "This code demonstrates how to change the number of
-augmentation dots on a single note."
-  doctitle = "Changing the number of augmentation dots per note"
-} % begin verbatim
-
-
-\relative c' {
-  c4.. a16 r2 |
-  \override Dots #'dot-count = #4
-  c4.. a16 r2 |
-  \override Dots #'dot-count = #0
-  c4.. a16 r2 |
-  \revert Dots #'dot-count
-  c4.. a16 r2 |
-}
index 7697c21663232913e8180d47483dce8bbfe11ed0..b3c97576a29c21e1ec84189a4aa36d8c71a39e19 100644 (file)
@@ -2,10 +2,10 @@
 % generated from Documentation/snippets/new
 % This file is in the public domain.
 %% Note: this file works from version 2.13.8
-\version "2.13.20"
+\version "2.13.29"
 
 \header {
-%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7
+%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b
 
   texidoces = "
 Funciones postfijas para la creación de objetos de extensión de texto
index 9c011b9878053851bf0a29084767f8073675564e..f847cf07cff4cbff11bd9e73a4728c952c419c7f 100644 (file)
@@ -2,10 +2,10 @@
 % generated from Documentation/snippets/new
 % This file is in the public domain.
 %% Note: this file works from version 2.13.20
-\version "2.13.20"
+\version "2.13.29"
 
 \header {
-%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7
+%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b
 
   texidoces = "
 Los objetos de extensión \cresc, \dim y \decresc ahora se pueden
index 0027caee340b8719dad92f29c206667594c23e54..ed285dbf64213354573cf414c4e0a196b336a86c 100644 (file)
@@ -2,7 +2,7 @@
 % generated from Documentation/snippets/new
 % This file is in the public domain.
 %% Note: this file works from version 2.12.0
-\version "2.13.20"
+\version "2.13.29"
 \include "english.ly"
 #(set-global-staff-size 15)
 \paper {
index 5f03a6a3316168ae8461196803fad317ed4b7b79..ec394b36d12808d6f9330a89de8107c9b56d0e43 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "editorial-annotations, text"
 
-%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7
+%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b
   texidoces = "
 Se puede insertar códico PostScript directamente dentro de un
 bloque @code{\\markup}.
index bf723d0b8a2dd30ba87b511936006a732330c0d6..648498bd087da846bf96336a0a0e9c84acdd9737 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "contexts-and-engravers"
 
-%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7
+%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b
   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 3457b6bf9676d2f13b988ab219650a08291450cc..2b4bd5abc8e0d1c8aa241a41a58c4c41574b3322 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "rhythms"
 
-%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7
+%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b
  doctitlees = "Grabado manual de las ligaduras"
  texidoces = "
 Se pueden grabar a mano las ligaduras modificando la propiedad
@@ -17,7 +17,6 @@ hacia arriba, -1 = hacia abajo).
 
 "
 
-
 %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40
 texidocde = "
 Überbindungen können manuell gesetzt werden, indem man die
@@ -30,7 +29,6 @@ Notensystemabständen an, die zweite Zahl zeigt die Richtung an (1 = nach oben,
   doctitlede = "Bindebögen manuell setzen"
 
 
-
 %% Translation of GIT committish: 4da4307e396243a5a3bc33a0c2753acac92cb685
   texidocfr = "
 Il est possible de graver manuellement les liaisons de tenue, en
index 51c07901eae42e0e9030cb6ea555712061e3d870..4e812eb66a604b238e439ae3c43a66ce5fb81b17 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "rhythms"
 
-%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7
+%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b
  doctitlees = "Escribir varios grupos especiales usando una sola instrucción \\times"
  texidoces = "
 La propiedad @code{tupletSpannerDuration} establece cuánto debe durar
@@ -24,7 +24,6 @@ correspondiente del manual de Referencia de la Notación.
 
 "
 
-
 %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40
   texidocde = "
 Die Eigenschaft @code{tupletSpannerDuration} bestimmt, wie lange jede
@@ -41,7 +40,6 @@ Mehr Information über @code{make-moment} gibt es in \"Verwaltung der Zeiteinhei
   doctitlede = "Mehrere Triolen notieren aber nur einmal \\times benutzen"
 
 
-
 %% Translation of GIT committish: 4ab2514496ac3d88a9f3121a76f890c97cedcf4e
   texidocfr = "
 La propriété @code{tupletSpannerDuration} spécifie la longueur voulue de
index 8aa2a824cb302b472328b4b5be12a0318c615148..5b887eea2cc9fc733b7537ac6e63cdd22b3cbe62 100644 (file)
@@ -2,7 +2,7 @@
 % generated from Documentation/snippets/new
 % This file is in the public domain.
 %% Note: this file works from version 2.12.0
-\version "2.13.20"
+\version "2.13.29"
 \include "english.ly"
 #(set-global-staff-size 15)
 \paper {
index 81d6416d5d202ae3099485710b52120c96af33a3..d8d9ba3be6cb1840622c576f6bad68d7f20e00bc 100644 (file)
@@ -10,6 +10,7 @@ changing--flageolet-mark-size.ly
 changing-text-and-spanner-styles-for-text-dynamics.ly
 changing-the-appearance-of-a-slur-from-solid-to-dotted-or-dashed.ly
 changing-the-breath-mark-symbol.ly
+changing-the-number-of-augmentation-dots-per-note.ly
 combining-dynamics-with-markup-texts.ly
 contemporary-glissando.ly
 controlling-spanner-visibility-after-a-line-break.ly
@@ -22,7 +23,6 @@ creating-real-parenthesized-dynamics.ly
 creating-simultaneous-rehearsal-marks.ly
 creating-slurs-across-voices.ly
 creating-text-spanners.ly
-dot-count-override.ly
 double-glissando.ly
 dynamics-custom-text-spanner-postfix.ly
 dynamics-text-spanner-postfix.ly
index 8eed0ec66211885962d62d8461975a0fb35d476d..d984633376cd8fc199479a12ebe3c0fe1fa69cf4 100644 (file)
@@ -2,10 +2,10 @@
 % generated from Documentation/snippets/new
 % This file is in the public domain.
 %% Note: this file works from version 2.13.4
-\version "2.13.20"
+\version "2.13.29"
 
 \header {
-%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7
+%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b
 
   texidoces = "
 Se puede simular un @qq{hammer} o ligado ascendente con ligaduras de
index d006468a2205e17ca4fd1f602366f2ec7bbaeff6..4203bf7cdd6963710426757a1d832b38718522e2 100644 (file)
@@ -2,7 +2,7 @@
 % generated from Documentation/snippets/new
 % This file is in the public domain.
 %% Note: this file works from version 2.12.0
-\version "2.13.20"
+\version "2.13.29"
 #(set-global-staff-size 15)
 \paper {
   ragged-right = ##f
index c1d495a0ba474598832bdda07c64020fb1db79fc..18b925df255fafc2f79493e39583a1b2e36d1365 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "fretted-strings"
 
-%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7
+%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b
   texidoces = "
 En este ejemplo se combinan las digitaciones de la mano izquierda,
 indicaciones del número de cuerda y digitaciones de la mano
@@ -15,7 +15,6 @@ derecha.
 "
   doctitlees = "Digitaciones - indicación del número de cuerda y digitaciones de mano derecha"
 
-
 %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40
   texidocde = "
 Dieses Beispiel kombiniert Fingersatz für die linke Hand, Saitennummern
@@ -23,7 +22,6 @@ und Fingersatz für die rechte Hand.
 
 "
   doctitlede = "Fingersatz Saitennummern und Fingersatz für die rechte Hand"
-
 %% Translation of GIT committish: ac6297e4fa174ac5759cc450ad085c2fac9ba00b
 
   texidocfr = "
index 009cfb77ec1a81971f7a751d70a68d9af4e3c002..fa1b55cea342ad97d87f378f8bda73cf7bb7f445 100644 (file)
@@ -2,10 +2,10 @@
 % generated from Documentation/snippets/new
 % This file is in the public domain.
 %% Note: this file works from version 2.13.10
-\version "2.13.20"
+\version "2.13.29"
 
 \header {
-%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7
+%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b
 
   texidoces = "
 
index 40c38253482cbbc662e555dcbbb17d95fdcbfd05..b59a83d006a07448cfb0746eebbf80fb83510f33 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "rhythms"
 
-%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7
+%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b
   texidoces = "
 Son posibles tanto los corchetes rectos sobre notas sueltas como
 extremos de barra sueltos en figuras unidas, con una combinación de
@@ -41,7 +41,6 @@ tiene nada que ver con el @code{\\set} de dos notas por detrás.)
   doctitlees = "Corchetes rectos y extremos de barra sueltos"
 
 
-
 %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40
   texidocde = "
 Gerade Fähnchen an einzelnen Noten und überstehende Balkenenden bei
@@ -72,7 +71,6 @@ Beispiel haben nichts mit dem @code{\\set}-Befehl zwei Noten vorher zu tun.)
   doctitlede = "Gerade Fähnchen und überstehende Balkenenden"
 
 
-
 %% Translation of GIT committish: 374d57cf9b68ddf32a95409ce08ba75816900f6b
   texidocfr = "
 En combinant @code{stemLeftBeamCount}, @code{stemRightBeamCount} et des
index 5d08c19ec996b3cdeb02b2d3e7d125a078693e54..11a90865255e796833828466325bd028df798872 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "simultaneous-notes, tweaks-and-overrides"
 
-%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7
+%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b
 
  doctitlees = "Forzar el desplazamiento horizontal de las notas"
 
@@ -17,7 +17,6 @@ texidoces = "
 
 "
 
-
 %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40
   texidocde = "
 Wenn es zu Zusammenstößen kommt, kann mit folgender Lösung eine andere
@@ -26,7 +25,6 @@ Notenlinienzwischenräume.
 
 "
   doctitlede = "Horizontale Verschiebung von Noten erzwingen"
-
 %% Translation of GIT committish: 1baa2adf57c84e8d50e6907416eadb93e2e2eb5c
   texidocfr = "
 Quand LilyPond est dépassé, la propriété @code{force-hshift} de l'objet
index 34a759474bbe2d7eaaacd6447ce3dc3eef2e3739..9aad994fbde0da787e99c9e2b3117a97544a873c 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "vocal-music"
 
-%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7
+%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b
   texidoces = "
 
 Si LilyPond no cree que haya sitio suficiente para un guión separador
index c387787149fb7423ae039821f01f7c559d5afca2..30888bd24914faa77f5de9378578998c84664f5b 100644 (file)
@@ -1,13 +1,13 @@
 % 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.20
+%% Note: this file works from version 2.13.29
 % INSPIRATIONAL HEADER FOR LILYPOND DOCUMENTATION fretted-strings %
 % Passage from Johann Kaspar Mertz "Opern Revue, Op. 8, no. 17"   %
 % on melodies from Bellini's "Norma"                              %
 %*****************************************************************%
 
-\version "2.13.20"
+\version "2.13.29"
 
 #(set-global-staff-size 15)
 \paper {
@@ -119,9 +119,7 @@ bass = \relative c {
   e,1 | % m. 4
 
   %% new section starts here in A minor
-  \overrideBeamSettings #'Score #'(4 . 4) #'end
-    #'((* . (1 1 1 1))
-       ((1 . 12)  . (3 3 3 3)))
+  \set Score.beamExceptions = #'()
   \once \override TextScript #'staff-padding = #1.7
   \times 2/3 { a8\p^\andantino e' a c a e a, e' a c a e } | % m. 5
 
index ae1602f3874b8c74309f8c090e24a55b4ee4a511..398f2047af85747207e0daeeaf04a2e58b62caba 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "pitches"
 
-%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7
+%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b
   texidoces = "
 Este fragmento de código basado en Scheme genera
 24 notas aleatorias (o tantas como se necesiten), basándose en la
index be5b558cec8443e74fa8f5324c5dabe4f8f5251b..584d81a60c3e07ed8e8ef401fd695098371c3c95 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "editorial-annotations"
 
-%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7
+%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b
   texidoces = "
 Se puede cambiar el aspecto de las líneas de rejilla
 sobreescribiendo algunas de sus propiedades.
@@ -14,7 +14,6 @@ sobreescribiendo algunas de sus propiedades.
 "
   doctitlees = "Líneas de rejilla: modificar su aspecto"
 
-
 %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40
   texidocde = "
 Die Erscheinung der Gitternetzlinien kann durch einige Eigenschaften
@@ -22,7 +21,6 @@ geändert werden.
 
 "
   doctitlede = "Gitternetzlinien: Aussehen verändern"
-
 %% Translation of GIT committish: 9ccf7f0f5e52e074f3b7852416ad5b78718395c8
   texidocfr = "
 Modifier certaines des propriétés du cadrillage temporel aura pour effet
index 5cebdeb7278b5503cc5e24c2746bd0af546a3405..0a816c13dc62cce97ec137f7922dcb6bf6e0f047 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "editorial-annotations"
 
-%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7
+%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b
   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 34672bfbb5d4672256d4d15d13eccdb0d11f845d..e1abd6d0a96c5834c0077e48bebe99e3a7af25b7 100644 (file)
@@ -2,10 +2,10 @@
 % generated from Documentation/snippets/new
 % This file is in the public domain.
 %% Note: this file works from version 2.13.4
-\version "2.13.20"
+\version "2.13.29"
 
 \header {
-%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7
+%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b
   texidoces = "
 Los patrones de barrado se pueden alterar con la propiedad
 @code{beatGrouping}:
index 0301fe1430925bb1a3686890b87139e1be31ef56..74d0533dcc16a8197cba782e4a637589d02689b7 100644 (file)
@@ -2,10 +2,10 @@
 % generated from Documentation/snippets/new
 % This file is in the public domain.
 %% Note: this file works from version 2.13.4
-\version "2.13.20"
+\version "2.13.29"
 
 \header {
-%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7
+%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b
 
 
   texidoces = "
index ec6d86a2b239e479353bb988ebd919405e604186..80a0f2854ff71c4da84b25d690e33ed1422863de 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "rhythms, fretted-strings"
 
-%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7
+%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b
   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.
@@ -14,7 +14,6 @@ además de las notas de la melodía, acordes y diagramas de posiciones.
 "
   doctitlees = "Ritmos rasgueados de guitarra"
 
-
 %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40
   texidocde = "
 In Guitarrennotation kann neben Melodie, Akkordbezeichnungen und
@@ -24,7 +23,6 @@ Bunddiagrammen auch der Schlagrhythmus angegeben werden.
   doctitlede = "Schlagrhythmus für Guitarren"
 
 
-
 %% Translation of GIT committish: 015b8e65e5e9a74cea1618b597402b5b74f89b89
   texidocfr = "
 En matière de notation pour guitare, il arrive que soient indiqués les
index 911dd3eaffd3ba619eacb1f3d56cb91e9de918af..a12c5ce711e8dbadc5ce0a21c797b7169726a40a 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "expressive-marks, tweaks-and-overrides"
 
-%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7
+%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b
   texidoces = "
 Los reguladores pueden imprimirse en uno cualquiera de los estilos de
 @code{line-interface}: discontinuo, punteado, línea, trino o zig-zag.
diff --git a/Documentation/snippets/hiding-accidentals-on-tied-notes-at-the-start-of-a-new-system.ly b/Documentation/snippets/hiding-accidentals-on-tied-notes-at-the-start-of-a-new-system.ly
new file mode 100644 (file)
index 0000000..2a73426
--- /dev/null
@@ -0,0 +1,20 @@
+% 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.26
+\version "2.13.29"
+\header {
+  lsrtags = "pitches"
+  texidoc = "This shows how to hide accidentals on tied notes at the beginning of a
+new system."
+  doctitle = "Hiding accidentals on tied notes at the beginning of a new system"
+} % begin verbatim
+
+
+\relative c'' {
+  \override Accidental #'hide-tied-accidental-after-break = ##t
+  cis1~ cis~
+  \break
+  cis
+}
+
index 388f120049c2015c4bad1ff489492d1754b47708..4dcdd7ba709004daf8355742ee58295d2099f2a0 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "expressive-marks"
 
-%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7
+%% Translation of GIT committish: 0c1494d93d3ac391fe549a02e8198fe628edac17
   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.
@@ -15,7 +15,6 @@ Esta línea se puede suprimir de la siguiente manera:
 "
   doctitlees = "Ocultar la línea de extensión de las expresiones textuales de dinámica"
 
-
 %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40
 texidocde = "
 Dynamik-Texte (wie cresc. und dim.) werden mit einer gestrichelten Linie
@@ -24,7 +23,6 @@ unterdrückt werden:
 
 "
   doctitlede = "Crescendo-Linien von Dynamik-Texten unterdrücken"
-
 %% Translation of GIT committish: 217cd2b9de6e783f2a5c8a42be9c70a82195ad20
   texidocfr = "
 Les crescendos et decrescendos indiqués textuellement -- tels que
index d1af95dd64748b4e7165bc427f8a4901d75ec1aa..60c8336fb790e6c34619f47526000dc67a608682 100644 (file)
@@ -2,10 +2,10 @@
 % generated from Documentation/snippets/new
 % This file is in the public domain.
 %% Note: this file works from version 2.13.4
-\version "2.13.20"
+\version "2.13.29"
 
 \header {
-%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7
+%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b
   texidoces = "
 Los «incipit» se pueden escribir utilizando el grob del nombre del
 instruemento, pero manteniendo independientes las definiciones del
index def0c2e79cb2c2e7e354981ba565b087b48431ba..cb9b2077726283e930e02ffc8b3c41f7d59fe704 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "keyboards"
 
-%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7
+%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b
   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,
@@ -19,7 +19,6 @@ configurar a la forma de corchete en el contexto de @code{PianoStaff}.
 "
   doctitlees = "Indicar acordes de pentagrama cruzado con corchetes de arpegio"
 
-
 %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40
   texidocde = "
 Eine Arpeggioklammer kann anzeigen, dass Noten auf zwei unterschiedlichen
index e504c7dcddf96ede6f31092929bcfc715176dde2..5cb8b5c796723db3e1f21fb2b6adff193ff54a00 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "expressive-marks, tweaks-and-overrides"
 
-%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7
+%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b
   texidoces = "
 Las marcas de cesura se pueden crear sobreescribiendo la propiedad
 @code{'text} del objeto @code{BreathingSign}.  También está disponible
@@ -15,7 +15,6 @@ una marca de cesura curva.
 "
   doctitlees = "Insertar una cesura"
 
-
 %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40
  texidocde = "
 Zäsurzeichen können erstellt werden, indem die @code{'text}-Eigenschaft
@@ -23,7 +22,6 @@ des @code{BreathingSign}-Objektes verändert wird.  Ein gekrümmtes
 Zäsurzeichen ist auch möglich.
 "
   doctitlede = "Eine Zäsur einfügen"
-
 %% Translation of GIT committish: 217cd2b9de6e783f2a5c8a42be9c70a82195ad20
   texidocfr = "
 Une surcharge de la propriété @code{'text} de l'objet
index 9518bfc282f9447f8526361474764adb82792f9d..c3871958301f4496788185b5a9ebfb2b340e1769 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "repeats"
 
-%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7
+%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b
   texidoces = "
 También se pueden imprimir símbolos de porcentaje sueltos.  Esto se
 hace introduciendo un silencio multicompás con una función de
@@ -15,7 +15,6 @@ impresión distinta:
 "
   doctitlees = "Símbolos de porcentaje sueltos"
 
-
 %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40
   texidocde = "
 Isolierte Prozentwiederholungen können auch ausgegeben werden.  Das wird
@@ -24,7 +23,6 @@ erreicht, indem man eine Ganztaktpause notiert und ihre Ausgabeform
 
 "
   doctitlede = "Isolierte Prozentwiederholungen"
-
 %% Translation of GIT committish: a5bde6d51a5c88e952d95ae36c61a5efc22ba441
   texidocfr = "
 Des symboles de pourcentage isolés peuvent aussi être obtenus, au
index 5910a35ec3732ff5d08abea2019721ec92f9d2e3..f6cefdfbd5c262b7df68973768c53c38ce403b31 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "keyboards, percussion, fretted-strings, template"
 
-%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7
+%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b
   texidoces = "
 Ésta es una plantilla bastante avanzada, para un conjunto de
 jazz. Observe que la notación de todos los instrumentos está en
@@ -17,7 +17,6 @@ dentro de una sección @code{\\transpose}.
 "
   doctitlees = "Plantilla para combo de jazz"
 
-
 %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40
   texidocde = "
 Hier ist ein ziemlich kompliziertes Beispiel für ein Jazz-Ensemble. Achtung:
@@ -28,7 +27,6 @@ sich die Noten innerhalb eines @code{\transpose}-Abschnitts befinden.
 "
 
   doctitlede = "Vorlage für Jazz-Combo"
-
 %% Translation of GIT committish: bdfe3dc8175a2d7e9ea0800b5b04cfb68fe58a7a
   texidocfr = "
 Bien que compliqué de prime abord, voici un canevas tout à fait indiqué
index b7f86c4e65691510d78ed911b099fe3e963be54f..c23eaf9494bad4e1c4bcea38648e7f65107990b3 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "pitches, tweaks-and-overrides"
 
-%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7
+%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b
   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 fbcc5cf14b2d670b32a00c9eac950a35009fa914..5cb297204354d28141773477bccef28864ab8cfa 100644 (file)
@@ -2,7 +2,7 @@
 % generated from Documentation/snippets/new
 % This file is in the public domain.
 %% Note: this file works from version 2.12.0
-\version "2.13.20"
+\version "2.13.29"
 \include "english.ly"
 
 #(set-global-staff-size 15)
index de07d45604b0e6f7997496b97892ebf2fd963dbc..974b5c79b415d45f1540e9a4ba918400db061267 100644 (file)
@@ -2,10 +2,10 @@
 % generated from Documentation/snippets/new
 % This file is in the public domain.
 %% Note: this file works from version 2.13.10
-\version "2.13.20"
+\version "2.13.29"
 
 \header {
-%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7
+%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b
   texidoces = "
 La tablatura se puede formatear utilizando letras en lugar de números.
 
index d3197f986e972155311acc37d4603025bf325c5c..83c72d0035e5427a088c8d2e86b59824ef8a750d 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "expressive-marks, tweaks-and-overrides"
 
-%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7
+%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b
   texidoces = "
 Se pueden aplicar puntas de flecha a los elementos de extensión de
 texto y de línea (como el Glissando).
index 9d534c75fec952be663fc09198d5d2632d7d9aed..563e3f5577d41b95d32b3eecbabef4bc817dc8e4 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "text, vocal-music"
 
-%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7
+%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b
   texidoces = "
 La alineación horizontal de la letra se puede ajustar sobreescribiendo
 la propiedad @code{self-alignment-X} del objeto @code{LyricText}.
index 6d59259af6bc0f601a89362ed885ec7796ee0b52..eb58f15b8aad324f506a5fe422a455b58dd65d08 100644 (file)
@@ -2,10 +2,10 @@
 % generated from Documentation/snippets/new
 % This file is in the public domain.
 %% Note: this file works from version 2.13.0
-\version "2.13.20"
+\version "2.13.29"
 
 \header {
-%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7
+%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b
   texidoces = "
 El «Makam» es un tipo de melodía de Turquía que
 utiliza alteraciones microtonales de 1/9 de tono.  Consulte el
index 005ca96fa29600db27f7e15994b3939976d1ddf2..72a9fc9bff1db9c630fcaaa7f4052f88986dcd5e 100644 (file)
@@ -2,10 +2,10 @@
 % generated from Documentation/snippets/new
 % This file is in the public domain.
 %% Note: this file works from version 2.13.1
-\version "2.13.20"
+\version "2.13.29"
 
 \header {
-%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7
+%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b
   texidoces = "
 
 Las ligaduras de expresión se pueden construir con patrones de
index 338bf47d1f231e9970e12df41306048b54e8d321..1c68d1e06d72f0fc21f8bce43d8c443fc9477870 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "staff-notation, editorial-annotations"
 
-%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7
+%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b
   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
@@ -17,7 +17,6 @@ destacar, utilizando la propiedad @code{line-positions} del objeto
 "
   doctitlees = "Hacer unas líneas del pentagrama más gruesas que las otras"
 
-
 %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40
   texidocde = "
 Für den pädagogischen Einsatz kann eine Linie des Notensystems dicker
@@ -28,7 +27,6 @@ herangezogen.
 
 "
   doctitlede = "Eine Linie des Notensystems dicker als die anderen machen"
-
 %% Translation of GIT committish: 99dc90bbc369722cf4d3bb9f30b7288762f2167f6
   texidocfr = "
 Vous pourriez avoir envie, dans un but pédagogique, de rendre certaines
index cae626b4af6c3bb0ca4d0a64caa404426f22121c..d8c04a8d4cf5f07066fadfd9cdc7c968f0489e8b 100644 (file)
@@ -16,19 +16,20 @@ a spoken section with the @code{\\speakOn} keyword, and end it with the
 } % begin verbatim
 
 speakOn = {
-  \override Stem #'stencil = #(lambda (grob)
-    (let* ((x-parent (ly:grob-parent grob X))
-           (is-rest? (ly:grob? (ly:grob-object x-parent 'rest))))
-      (if is-rest?
-        empty-stencil
-        (ly:stencil-combine-at-edge
-          (ly:stem::print grob)
-          Y
-          (- (ly:grob-property grob 'direction))
-          (grob-interpret-markup grob
-            (markup #:hspace -1.025 #:fontsize -4
-              #:musicglyph "noteheads.s2cross"))
-          -2.3 0))))
+  \override Stem #'stencil =
+    #(lambda (grob)
+       (let* ((x-parent (ly:grob-parent grob X))
+              (is-rest? (ly:grob? (ly:grob-object x-parent 'rest))))
+         (if is-rest?
+             empty-stencil
+             (ly:stencil-combine-at-edge
+              (ly:stem::print grob)
+              Y
+              (- (ly:grob-property grob 'direction))
+              (grob-interpret-markup grob
+                                    (markup #:center-align #:fontsize -4
+                                            #:musicglyph "noteheads.s2cross"))
+              -2.3 0))))
 }
 
 speakOff = {
index c0d675b25f8da562c113ffde7150076a33a352ff..0efc86c5abd5a19af366765bdf561420a3eca12e 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "repeats, staff-notation, editorial-annotations"
 
-%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7
+%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b
   texidoces = "
 Este fragmento de código proporciona una solución alternativa a la
 producción de contadores de compás utilizando repeticiones
index 23e3cec47a73da985f6fffc0972154a3863cfd90..4ed2ca4af5ac46f5b56578da3f523de2a45f04c5 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "staff-notation, ancient-notation, contexts-and-engravers, tweaks-and-overrides"
 
-%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7
+%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b
   texidoces = "
 La disposición «mensurstriche» en que las líneas divisorias no
 están dibujadas sobre los pentagramas, sino entre ellos, se puede
@@ -18,7 +18,6 @@ propiedad @code{transparent}.
 
   doctitlees = "Disposición Mensurstriche (líneas divisorias entre pentagramas)"
 
-
 %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40
   texidocde = "
 Das Mensurstiche-Layout, in welchem die Taktlinien nicht auf den Systemen,
@@ -28,7 +27,6 @@ Systemen werden mit der the @code{transparent}-Eigenschaft ausgelöscht.
 
 "
   doctitlede = "Mensurstriche-Layout (Taktstriche zwischen den Systemen"
-
 %% Translation of GIT committish: 99dc90bbc369722cf4d3bb9f30b7288762f2167f6
   texidocfr = "
 En musique mensurale, les barres de mesure ne traversent pas les
index d3e6c8162c4c3aed399ab6f725902ba1f2c63ced..9a39949aebf07f590038d42320bb989f883bf629 100644 (file)
@@ -2,10 +2,10 @@
 % generated from Documentation/snippets/new
 % This file is in the public domain.
 %% Note: this file works from version 2.13.4
-\version "2.13.20"
+\version "2.13.29"
 
 \header {
-%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7
+%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b
   texidoces = "
 Utilice un texto de marcado para sustituir el glifo de clave (TAB) con
 una fuente tipográfica moderna.
index 8238dec60aa6fcb89820877ef02f6850e0c65f32..bdf162ebc69e2b94ce5f8a306d9600a30d52d8dd 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "expressive-marks"
 
-%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7
+%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b
   texidoces = "
 Las abreviaturas se encuentran definidas dentro del archivo
 @code{ly/script-init.ly}, donde las variables @code{dashHat},
@@ -21,7 +21,6 @@ semitrino en lugar del símbolo predeterminado +, asigne el valor
 "
   doctitlees = "Modificar los valores predeterminados para la notación abreviada de las articulaciones"
 
-
 %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40
  texidocde = "
 Die Abkürzungen sind in der Datei @samp{ly/script-init.ly} definiert, wo
@@ -35,7 +34,6 @@ assoziieren, muss der Wert @code{trill} der Variable
 
 "
   doctitlede = "Die Standardwerte der Abkürzungen von Artikulationen verändern"
-
 %% Translation of GIT committish: 217cd2b9de6e783f2a5c8a42be9c70a82195ad20
   texidocfr = "
 Les raccourcis sont répertoriés dans le fichier
index bf426a65d3e235f97bfc0a64860f1e21a0740fc9..98bec6a60974fdd4dfff0e31377afa9f5ff0ad7d 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "rhythms, simultaneous-notes, tweaks-and-overrides"
 
-%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7
+%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b
   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 8a50faa25e920dc5bf0262bc958ba9c45f5dad91..9476cdc132c20ea0f869b240d8a599336d40ba9b 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "expressive-marks, tweaks-and-overrides"
 
-%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7
+%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b
   texidoces = "
 Se puede ajustar la posición vertical de una ligadura de
 expresiónutilizando la propiedad @code{positions} del objeto
index 904c495d8bf52c8734cef8af5723207db747e421..8142e06b2be267a96f874f0c7b19da435eb8996d 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "rhythms, text"
 
-%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7
+%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b
 texidoces = "
 Los elementos de marcado aplicados a un silencio multicompás se
 centran encima o debajo de éste.  Los elementos de marcado extensos
@@ -25,7 +25,6 @@ longitud del texto, éste aparecerá centrado.
 
 doctitlees = "Marcado de silencios multicompás"
 
-
 %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40
   texidocde = "Textbeschriftungen, die an Mehrtaktpausen gehängt wird,
 wird über oder unter der Pause zentriert.  Lange Beschriftungen
@@ -43,7 +42,6 @@ ist."
   doctitlede = "Textbeschriftung und Mehrtaktpausen"
 
 
-
 %% Translation of GIT committish: 4da4307e396243a5a3bc33a0c2753acac92cb685
   texidocfr = "
 Lorsque du texte est attaché à un silence multi-mesures, il sera centré
index e1f72d2ff2b58f57feb72d2ec9d5aed08b9330de..374dda66c23aaa37a49e8c8a1ffa95f8cd3559e7 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "staff-notation, contexts-and-engravers, tweaks-and-overrides"
 
-%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7
+%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b
   texidoces = "
 Se puede utilizar la propiedad
 @code{systemStartDelimiterHierarchy} para crear grupos de
@@ -24,7 +24,6 @@ todos los pentagramas. Las posibilidades son
 "
   doctitlees = "Anidado de grupos de pentagramas"
 
-
 %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40
   texidocde = "
 Die Eigenschaft @code{systemStartDelimiterHierarchy} kann eingesetzt
@@ -40,7 +39,6 @@ die gesamte Gruppe.  Die Möglichkeiten der Anfangsklammer sind: @code{SystemSta
 
 "
   doctitlede = "Systeme schachteln"
-
 %% Translation of GIT committish: 99dc90bbc369722cf4d3bb9f30b7288762f2167f6
   texidocfr = "
 La propriété @code{systemStartDelimiterHierarchy} permet de créer des
diff --git a/Documentation/snippets/new/automatic-beam-subdivisions.ly b/Documentation/snippets/new/automatic-beam-subdivisions.ly
new file mode 100644 (file)
index 0000000..59f6888
--- /dev/null
@@ -0,0 +1,39 @@
+\version "2.13.29"
+
+\header {
+  lsrtags = "rhythms"
+
+  texidoc = "
+Beams can be subdivided automatically.  By setting the property
+@code{subdivideBeams}, beams are subdivided at beat positions (as
+specified in @code{baseMoment}).
+
+"
+  doctitle = "Automatic beam subdivisions"
+}
+
+\new Staff {
+  \relative c'' {
+    <<
+      {
+        \voiceOne
+        \set subdivideBeams = ##t
+        b32[ a g f c' b a g
+        b32^"subdivide beams" a g f c' b a g]
+      }
+      \new Voice {
+        \voiceTwo
+        b32_"default"[ a g f c' b a g
+        b32 a g f c' b a g]
+      }
+    >>
+    \oneVoice
+    \set baseMoment = #(ly:make-moment 1 8)
+    \set beatStructure = #'(2 2 2 2)
+    b32^"baseMoment 1 8"[ a g f c' b a g]
+    \set baseMoment = #(ly:make-moment 1 16)
+    \set beatStructure = #'(4 4 4 4)
+    b32^"baseMoment 1 16"[ a g f c' b a g]
+  }
+}
+
index 96a2f2c411f5437f13b110b261c943540461e730..890e091ce1ecae3fa3492c3df66c86fb9e92cec9 100644 (file)
@@ -1,9 +1,9 @@
-\version "2.13.4"
+\version "2.13.29"
 
 \header {
   lsrtags = "rhythms"
   texidoc = "
-Beam-ending rules specified in the @code{Score} context apply to all
+Beat structure rules specified in the @code{Score} context apply to all
 staves, but can be modified at both @code{Staff} and @code{Voice}
 levels:
 "
@@ -13,18 +13,15 @@ levels:
 \relative c'' {
   \time 5/4
   % Set default beaming for all staves
-  \overrideBeamSettings #'Score #'(5 . 4) #'end
-     #'(((1 . 8) . (3 4 3))
-        ((1 . 16) . (6 8 6))
-        ((1 . 32) . (12 16 12)))
+  \set Score.baseMoment = #(ly:make-moment 1 8)
+  \set Score.beatStructure = #'(3 4 3)
   <<
     \new Staff {
       c8 c c c c c c c c c
     }
     \new Staff {
       % Modify beaming for just this staff
-      \overrideBeamSettings #'Staff #'(5 . 4) #'end
-        #'((* . (3 2)))
+      \set Staff.beatStructure = #'(6 4)
       c8 c c c c c c c c c
     }
     \new Staff {
@@ -37,8 +34,7 @@ levels:
         % Modify beaming for this voice only
         \new Voice {
           \voiceTwo
-          \overrideBeamSettings #'Voice #'(5 . 4) #'end
-              #'((* . (3 2)))
+          \set Voice.beatStructure = #'(6 4)
           a8 a a a a a a a a a
         }
       >>
index 98597bada1eacf7554d471da327c14c24ce62815..f9e6253e26bdea40a798fedffc9d44a55fc4fa49 100644 (file)
@@ -1,12 +1,12 @@
-\version "2.13.4"
+\version "2.13.29"
 
 \header {
   lsrtags = "rhythms"
   texidoc = "
-There are no default automatic beam groupings specified for 7/8 time,
-so if automatic beams are required the grouping must be specified.  For
-example, to group all beams 2-3-2 in 7/8 time, specify beam endings at
-2/8 and 5/8:
+There is no default beat structure specified for 7/8 time,
+so if automatic beams are required the structure must be specified.  For
+example, to group all beams 2-3-2 in 7/8 time, specify the
+beat structure to be (2 3 2):
 "
   doctitle = "Beam grouping in 7/8 time"
 }
@@ -15,7 +15,6 @@ example, to group all beams 2-3-2 in 7/8 time, specify beam endings at
   \time 7/8
   % rhythm 2-3-2
   a8 a a a a a a
-  \overrideBeamSettings #'Score #'(7 . 8) #'end
-    #'((* . (2 3 2)))
+  \set Score.beatStructure = #'(2 3 2)
   a8 a a a a a a
 }
diff --git a/Documentation/snippets/new/centering-markup-on-note-heads-automatically.ly b/Documentation/snippets/new/centering-markup-on-note-heads-automatically.ly
new file mode 100644 (file)
index 0000000..1a0c928
--- /dev/null
@@ -0,0 +1,63 @@
+\version "2.13.15"
+
+\header {
+  lsrtags = "text, tweaks-and-overrides, contexts-and-engravers"
+  texidoc = "
+For technical reasons, text scripts attached to note heads cannot
+easily be centered on a note head's width, unlike articulations.
+
+Instead of using trial-and-error offset tweaks, this snippet uses a
+Scheme engraver to reset the horizontal parent of each markup to a
+@code{NoteColumn}.  This also allows text to follow note heads which have
+been shifted via @code{force-hshift}.
+"
+  doctitle = "Centering markup on note heads automatically"
+}
+
+#(define (Text_align_engraver ctx)
+  (let ((scripts '())
+        (note-column #f))
+
+    `((acknowledgers
+       (note-column-interface
+        . ,(lambda (trans grob source)
+             ;; cache NoteColumn in this Voice context
+             (set! note-column grob)))
+
+       (text-script-interface
+        . ,(lambda (trans grob source)
+             ;; whenever a TextScript is acknowledged,
+             ;; add it to `scripts' list
+             (set! scripts (cons grob scripts)))))
+
+      (stop-translation-timestep
+       . ,(lambda (trans)
+            ;; if any TextScript grobs exist,
+            ;; set NoteColumn as X-parent
+            (and (pair? scripts)
+                 (for-each (lambda (script)
+                             (set! (ly:grob-parent script X) note-column))
+                           scripts))
+            ;; clear scripts ready for next timestep
+            (set! scripts '()))))))
+
+\layout {
+  \context {
+    \Voice
+    \consists #Text_align_engraver
+    \override TextScript #'X-offset =
+      #ly:self-alignment-interface::aligned-on-x-parent
+    \override TextScript #'self-alignment-X = #CENTER
+  }
+}
+
+\new Staff <<
+  \relative c'' {
+    \override NoteColumn #'force-hshift = #3
+    c1-\markup { \arrow-head #Y #DOWN ##t }
+  }
+  \\
+  \relative c' {
+    a4 a-\markup { \huge ^ } a a
+  }
+>>
diff --git a/Documentation/snippets/new/changing-the-ambitus-gap.ly b/Documentation/snippets/new/changing-the-ambitus-gap.ly
new file mode 100644 (file)
index 0000000..b923658
--- /dev/null
@@ -0,0 +1,40 @@
+\version "2.13.26"
+\header {
+  lsrtags = "pitches"
+  texidoc = "It is possible to change the default gap setting for
+ambitus."
+
+  doctitle = "Changing the ambitus gap"
+}
+
+
+\layout {
+  \context {
+    \Voice
+    \consists "Ambitus_engraver"
+  }
+}
+
+\new Staff {
+  \time 2/4
+  % Default setting
+  c'4 g''
+}
+
+\new Staff {
+  \time 2/4
+  \override AmbitusLine #'gap = #0
+  c'4 g''
+}
+
+\new Staff {
+  \time 2/4
+  \override AmbitusLine #'gap = #1
+  c'4 g''
+}
+
+\new Staff {
+  \time 2/4
+  \override AmbitusLine #'gap = #1.5
+  c'4 g''
+}
diff --git a/Documentation/snippets/new/changing-the-number-of-augmentation-dots-per-note.ly b/Documentation/snippets/new/changing-the-number-of-augmentation-dots-per-note.ly
new file mode 100644 (file)
index 0000000..8e183fd
--- /dev/null
@@ -0,0 +1,17 @@
+\version "2.13.26"
+\header {
+  lsrtags = "rhythms,expressive-marks"
+  texidoc = "This code demonstrates how to change the number of
+augmentation dots on a single note."
+  doctitle = "Changing the number of augmentation dots per note"
+}
+
+\relative c' {
+  c4.. a16 r2 |
+  \override Dots #'dot-count = #4
+  c4.. a16 r2 |
+  \override Dots #'dot-count = #0
+  c4.. a16 r2 |
+  \revert Dots #'dot-count
+  c4.. a16 r2 |
+}
index 25952ca158c7c61f6f5b0d7420f2054597ef81c0..3685151a6d16a4eb751f645331db3ab1ed6a2258 100644 (file)
@@ -1,4 +1,4 @@
-\version "2.13.4"
+\version "2.13.29"
 
 \header {
   lsrtags = "rhythms"
@@ -24,8 +24,7 @@ database.)
 \relative c' {
   \override Staff.TimeSignature #'stencil = #(compound-time "2" "3" "8")
   \time 5/8
-  \overrideBeamSettings #'Staff #'(5 . 8) #'end
-    #'((* . (2 3)))
+  \set Staff.beatStructure = #'(2 3)
   c8 d e fis gis
   c8 fis, gis e d
   c8 d e4 gis8
index f212a0bbe1b3da7954494092650a78f1dd826141..b9867a7f5e387327ac7abaee04b4eb8c642a41ab 100644 (file)
@@ -1,30 +1,40 @@
-\version "2.13.4"
+\version "2.13.29"
 
 \header {
   lsrtags = "rhythms"
   texidoc = "
-Beat grouping within a bar is controlled by the default grouping
-established in @code{beamSettings}.  This grouping can be established
-by the use of @code{\\overrideBeamSettings}.  Alternatively, the
+Beat grouping within a measure is controlled by the context property
+@code{beatStructure}.  Values of @code{beatStructure} are
+established for many time signatures in
+@file{scm/time-signature-settings.scm}.  Values of @code{beatStructure}
+can be changed or set with @code{\set}.
+Alternatively, the
 Scheme function @code{set-time-signature} can be used to both
-set the time signature and establish the default grouping rule.
+set the time signature and establish the beat structure.
 @code{set-time-signature}, takes three arguments: the
 number of beats, the beat length, and the internal grouping of beats in
-the measure.  If the @code{Measure_grouping_engraver} is included
+the measure.  @code{\time} and @code{set-time-signature} both apply
+to the @code{Timing} context, so they will not reset values of
+@code{beatStructure} or @code{baseMoment} that are set in
+other lower-level contexts, such as @code{Voice}.
+
+If the @code{Measure_grouping_engraver} is included
 in one of the display contexts, measure grouping signs will be
 created.  Such signs ease reading rhythmically complex modern music.
 In the example, the 9/8 measure is grouped in two different
 patterns using the two different methods, while the 5/8 measure
 is grouped according to the default setting in
-@file{scm/beam-settings.scm}:
+@file{scm/time-signature-settings.scm}:
 "
   doctitle = "Conducting signs, measure grouping signs"
 }
 
+
 \score {
-  \relative c'' {
+  \new Voice \relative c'' {
     \time 9/8
-    \overrideBeamSettings #'Score #'(9 . 8) #'end #'((* . (2 2 2 3)))
+    g8 g d d g g a( bes g) |
+    \set Timing.beatStructure = #'(2 2 2 3)
     g8 g d d g g a( bes g) |
     #(set-time-signature 9 8 '(4 5))
     g8 g d d g g a( bes g) |
diff --git a/Documentation/snippets/new/defining-an-engraver-in-scheme-ambitus-engraver.ly b/Documentation/snippets/new/defining-an-engraver-in-scheme-ambitus-engraver.ly
new file mode 100644 (file)
index 0000000..be832c9
--- /dev/null
@@ -0,0 +1,323 @@
+\version "2.13.15"
+
+\header {
+
+  lsrtags = "contexts-and-engravers"
+
+
+  texidoc = "This example demonstrates how the ambitus engraver may be
+  defined on the user side, with a Scheme engraver.
+
+  This is basically a rewrite in Scheme of the code from
+  @file{lily/ambitus-engraver.cc}.
+"
+
+  doctitle = "Defining an engraver in Scheme: ambitus engraver"
+}
+
+#(use-modules (oop goops))
+
+%%%
+%%% Grob utilities
+%%%
+%%% These are literal rewrites of some C++ methods used by the ambitus engraver.
+#(define (ly:event::in-event-class event class-name)
+   "Check if @var{event} the given class.
+Rewrite of @code{Stream_event::internal_in_event_class} from @file{lily/stream-event.cc}."
+   (memq class-name (ly:make-event-class (ly:event-property event 'class))))
+
+#(define (ly:separation-item::add-conditional-item grob grob-item)
+   "Add @var{grob-item} to the array of conditional elements of @var{grob}.
+Rewrite of @code{Separation_item::add_conditional_item} from @file{lily/separation-item.cc}."
+   (ly:pointer-group-interface::add-grob grob 'conditional-elements grob-item))
+
+#(define (ly:accidental-placement::accidental-pitch accidental-grob)
+   "Get the pitch from the grob cause of @var{accidental-grob}.
+Rewrite of @code{accidental_pitch} from @file{lily/accidental-placement.cc}."
+   (ly:event-property (ly:grob-property (ly:grob-parent accidental-grob Y) 'cause)
+                      'pitch))
+
+#(define (ly:accidental-placement::add-accidental grob accidental-grob)
+   "Add @var{accidental-grob}, an @code{Accidental} grob, to the
+list of the accidental grobs of @var{grob}, an @code{AccidentalPlacement}
+grob.
+Rewrite of @code{Accidental_placement::add_accidental} from @file{lily/accidental-placement.cc}."
+   (let ((pitch (ly:accidental-placement::accidental-pitch accidental-grob)))
+     (set! (ly:grob-parent accidental-grob X) grob)
+     (set! (ly:grob-property accidental-grob 'X-offset)
+           ly:grob::x-parent-positioning)
+     (let* ((accidentals (ly:grob-object grob 'accidental-grobs))
+            (handle (assq (ly:pitch-notename pitch) accidentals))
+            (entry (if handle (cdr handle) '())))
+       (set! (ly:grob-object grob 'accidental-grobs)
+             (assq-set! accidentals
+                        (ly:pitch-notename pitch)
+                        (cons accidental-grob entry))))))
+
+%%%
+%%% Ambitus data structure
+%%%
+
+%%% The <ambitus> class holds the various grobs that are created
+%%% to print an ambitus:
+%%% - ambitus-group: the grob that groups all the components of an ambitus
+%%% (Ambitus grob);
+%%% - ambitus-line: the vertical line between the upper and lower ambitus
+%%% notes (AmbitusLine grob);
+%%% - ambitus-up-note and ambitus-down-note: the note head and accidental
+%%% for the lower and upper note of the ambitus (see <ambitus-note> class
+%%% below).
+%%% The other slots define the key and clef context of the engraver:
+%%% - start-c0: position of middle c at the beginning of the piece.  It
+%%% is used to place the ambitus notes according to their pitch;
+%%% - start-key-sig: the key signature at the beginning of the piece.  It
+%%% is used to determine if accidentals shall be printed next to ambitus
+%%% notes.
+
+#(define-class <ambitus> ()
+   (ambitus-group #:accessor ambitus-group)
+   (ambitus-line #:accessor ambitus-line)
+   (ambitus-up-note #:getter ambitus-up-note
+                    #:init-form (make <ambitus-note>))
+   (ambitus-down-note #:getter ambitus-down-note
+                      #:init-form (make <ambitus-note>))
+   (start-c0 #:accessor ambitus-start-c0
+             #:init-value #f)
+   (start-key-sig #:accessor ambitus-start-key-sig
+                  #:init-value '()))
+
+%%% Accessor for the lower and upper note data of an ambitus
+#(define-method (ambitus-note (ambitus <ambitus>) direction)
+   "If @var{direction} is @code{UP}, then return the upper ambitus note
+of @var{ambitus}, otherwise return the lower ambitus note."
+   (if (= direction UP)
+       (ambitus-up-note ambitus)
+       (ambitus-down-note ambitus)))
+
+%%% The <ambitus-note> class holds the grobs that are specific to ambitus
+%%% (lower and upper) notes:
+%%% - head: an AmbitusNoteHead grob;
+%%% - accidental: an AmbitusAccidental grob, to be possibly printed next
+%%% to the ambitus note head.
+%%% Moreover:
+%%% - pitch is the absolute pitch of the note
+%%% - cause is the note event that causes this ambitus note, i.e. the lower
+%%% or upper note of the considered music sequence.
+
+#(define-class <ambitus-note> ()
+   (head #:accessor ambitus-note-head
+         #:init-value #f)
+   (accidental #:accessor ambitus-note-accidental
+               #:init-value #f)
+   (cause #:accessor ambitus-note-cause
+          #:init-value #f)
+   (pitch #:accessor ambitus-note-pitch
+          #:init-value #f))
+
+%%%
+%%% Ambitus engraving logics
+%%%
+%%% Rewrite of the code from @file{lily/ambitus-engraver.cc}.
+
+#(define (make-ambitus translator)
+   "Build an ambitus object: initialize all the grobs and their relations.
+
+The Ambitus grob contain all other grobs:
+ Ambitus
+  |- AmbitusLine
+  |- AmbitusNoteHead   for upper note
+  |- AmbitusAccidental for upper note
+  |- AmbitusNoteHead   for lower note
+  |- AmbitusAccidental for lower note
+
+The parent of an accidental is the corresponding note head,
+and the accidental is set as the 'accidental-grob of the note head
+so that is printed by the function that prints notes."
+   ;; make the ambitus object
+   (let ((ambitus (make <ambitus>)))
+     ;; build the Ambitus grob, which will contain all other grobs
+     (set! (ambitus-group ambitus) (ly:engraver-make-grob translator 'Ambitus '()))
+     ;; build the AmbitusLine grob (line between lower and upper note)
+     (set! (ambitus-line ambitus) (ly:engraver-make-grob translator 'AmbitusLine '()))
+     ;; build the upper and lower AmbitusNoteHead and AmbitusAccidental
+     (for-each (lambda (direction)
+                 (let ((head (ly:engraver-make-grob translator 'AmbitusNoteHead '()))
+                       (accidental (ly:engraver-make-grob translator 'AmbitusAccidental '()))
+                       (group (ambitus-group ambitus)))
+                   ;; The parent of the AmbitusAccidental grob is the
+                   ;; AmbitusNoteHead grob
+                   (set! (ly:grob-parent accidental Y) head)
+                   ;; The AmbitusAccidental grob is set as the accidental-grob
+                   ;; object of the AmbitusNoteHead.  This is later used by the
+                   ;; function that prints notes.
+                   (set! (ly:grob-object head 'accidental-grob) accidental)
+                   ;; both the note head and the accidental grobs are added
+                   ;; to the main ambitus grob.
+                   (ly:axis-group-interface::add-element group head)
+                   (ly:axis-group-interface::add-element group accidental)
+                   ;; the note head and the accidental grobs are added to the
+                   ;; ambitus object
+                   (set! (ambitus-note-head (ambitus-note ambitus direction))
+                         head)
+                   (set! (ambitus-note-accidental (ambitus-note ambitus direction))
+                         accidental)))
+               (list DOWN UP))
+     ;; The parent of the ambitus line is the lower ambitus note head
+     (set! (ly:grob-parent (ambitus-line ambitus) X)
+           (ambitus-note-head (ambitus-note ambitus DOWN)))
+     ;; the ambitus line is added to the ambitus main grob
+     (ly:axis-group-interface::add-element (ambitus-group ambitus) (ambitus-line ambitus))
+     ambitus))
+
+#(define-method (initialize-ambitus-state (ambitus <ambitus>) translator)
+   "Initialize the state of @var{ambitus}, by getting the starting
+position of middle C and key signature from @var{translator}'s context."
+   (if (not (ambitus-start-c0 ambitus))
+       (begin
+         (set! (ambitus-start-c0 ambitus)
+               (ly:context-property (ly:translator-context translator)
+                                    'middleCPosition
+                                    0))
+         (set! (ambitus-start-key-sig ambitus)
+               (ly:context-property (ly:translator-context translator)
+                                    'keySignature)))))
+
+#(define-method (update-ambitus-notes (ambitus <ambitus>) note-grob)
+   "Update the upper and lower ambitus pithes of @var{ambitus}, using
+@var{note-grob}."
+   ;; Get the event that caused the note-grob creation
+   ;; and check that it is a note-event.
+   (let ((note-event (ly:grob-property note-grob 'cause)))
+     (if (ly:event::in-event-class note-event 'note-event)
+         ;; get the pitch from the note event
+         (let ((pitch (ly:event-property note-event 'pitch)))
+           ;; if this pitch is lower than the current ambitus lower
+           ;; note pitch (or it has not been initialized yet),
+           ;; then this pitch is the new ambitus lower pitch,
+           ;; and conversely for upper pitch.
+           (for-each (lambda (direction pitch-compare)
+                       (if (or (not (ambitus-note-pitch (ambitus-note ambitus direction)))
+                               (pitch-compare pitch
+                                              (ambitus-note-pitch (ambitus-note ambitus direction))))
+                           (begin
+                             (set! (ambitus-note-pitch (ambitus-note ambitus direction))
+                                   pitch)
+                             (set! (ambitus-note-cause (ambitus-note ambitus direction))
+                                   note-event))))
+                     (list DOWN UP)
+                     (list ly:pitch<? (lambda (p1 p2)
+                                        (ly:pitch<? p2 p1))))))))
+
+#(define-method (typeset-ambitus (ambitus <ambitus>) translator)
+   "Typeset the ambitus:
+- place the lower and upper ambitus notes according to their pitch and
+  the position of the middle C;
+- typeset or delete the note accidentals, according to the key signature.
+  An accidental, if it is to be printed, is added to an AccidentalPlacement
+  grob (a grob dedicated to the placement of accidentals near a chord);
+- both note heads are added to the ambitus line grob, so that a line should
+  be printed between them."
+   ;; check if there are lower and upper pitches
+   (if (and (ambitus-note-pitch (ambitus-note ambitus UP))
+            (ambitus-note-pitch (ambitus-note ambitus DOWN)))
+       ;; make an AccidentalPlacement grob, for placement of note accidentals
+       (let ((accidental-placement (ly:engraver-make-grob
+                                    translator
+                                    'AccidentalPlacement
+                                    (ambitus-note-accidental (ambitus-note ambitus DOWN)))))
+         ;; For lower and upper ambitus notes:
+         (for-each (lambda (direction)
+                     (let ((pitch (ambitus-note-pitch (ambitus-note ambitus direction))))
+                       ;; set the cause and the staff position of the ambitus note
+                       ;; according to the associated pitch
+                       (set! (ly:grob-property (ambitus-note-head (ambitus-note ambitus direction))
+                                               'cause)
+                             (ambitus-note-cause (ambitus-note ambitus direction)))
+                       (set! (ly:grob-property (ambitus-note-head (ambitus-note ambitus direction))
+                                               'staff-position)
+                             (+ (ambitus-start-c0 ambitus)
+                                (ly:pitch-steps pitch)))
+                       ;; determine if an accidental shall be printed for this note,
+                       ;; according to the key signature
+                       (let* ((handle (or (assoc (cons (ly:pitch-octave pitch)
+                                                       (ly:pitch-notename pitch))
+                                                 (ambitus-start-key-sig ambitus))
+                                          (assoc (ly:pitch-notename pitch)
+                                                 (ambitus-start-key-sig ambitus))))
+                              (sig-alter (if handle (cdr handle) 0)))
+                         (cond ((= (ly:pitch-alteration pitch) sig-alter)
+                                ;; the note alteration is in the key signature
+                                ;; => it does not have to be printed
+                                (ly:grob-suicide!
+                                 (ambitus-note-accidental (ambitus-note ambitus direction)))
+                                (set! (ly:grob-object (ambitus-note-head (ambitus-note ambitus direction))
+                                                      'accidental-grob)
+                                      '()))
+                               (else
+                                ;; otherwise, the accidental shall be printed
+                                (set! (ly:grob-property (ambitus-note-accidental
+                                                         (ambitus-note ambitus direction))
+                                                        'alteration)
+                                      (ly:pitch-alteration pitch)))))
+                       ;; add the AccidentalPlacement grob to the
+                       ;; conditional items of the AmbitusNoteHead
+                       (ly:separation-item::add-conditional-item
+                        (ambitus-note-head (ambitus-note ambitus direction))
+                        accidental-placement)
+                       ;; add the AmbitusAccidental to the list of the
+                       ;; AccidentalPlacement grob accidentals
+                       (ly:accidental-placement::add-accidental
+                        accidental-placement
+                        (ambitus-note-accidental (ambitus-note ambitus direction)))
+                       ;; add the AmbitusNoteHead grob to the AmbitusLine grob
+                       (ly:pointer-group-interface::add-grob
+                        (ambitus-line ambitus)
+                        'note-heads
+                        (ambitus-note-head (ambitus-note ambitus direction)))))
+                   (list DOWN UP))
+         ;; add the AccidentalPlacement grob to the main Ambitus grob
+         (ly:axis-group-interface::add-element (ambitus-group ambitus) accidental-placement))
+       ;; no notes ==> suicide the grobs
+       (begin
+         (for-each (lambda (direction)
+                     (ly:grob-suicide! (ambitus-note-accidental (ambitus-note ambitus direction)))
+                     (ly:grob-suicide! (ambitus-note-head (ambitus-note ambitus direction))))
+                   (list DOWN UP))
+         (ly:grob-suicide! ambitus-line))))
+
+%%%
+%%% Ambitus engraver definition
+%%%
+#(define ambitus-engraver
+   (lambda (context)
+     (let ((ambitus #f))
+       ;; when music is processed: make the ambitus object, if not already built
+       `((process-music . ,(lambda (translator)
+                             (if (not ambitus)
+                                 (set! ambitus (make-ambitus translator)))))
+         ;; set the ambitus clef and key signature state
+         (stop-translation-timestep . ,(lambda (translator)
+                                         (if ambitus
+                                             (initialize-ambitus-state ambitus translator))))
+         ;; when a note-head grob is built, update the ambitus notes
+         (acknowledgers
+          (note-head-interface . ,(lambda (engraver grob source-engraver)
+                                    (if ambitus
+                                        (update-ambitus-notes ambitus grob)))))
+         ;; finally, typeset the ambitus according to its upper and lower notes
+         ;; (if any).
+         (finalize . ,(lambda (translator)
+                        (if ambitus
+                            (typeset-ambitus ambitus translator))))))))
+
+%%%
+%%% Example
+%%%
+
+\score {
+  \new StaffGroup <<
+    \new Staff { c'4 des' e' fis' gis' }
+    \new Staff { \clef "bass" c4 des ~ des ees b, }
+  >>
+  \layout { \context { \Staff \consists #ambitus-engraver } }
+}
diff --git a/Documentation/snippets/new/dot-count-override.ly b/Documentation/snippets/new/dot-count-override.ly
deleted file mode 100644 (file)
index 8e183fd..0000000
+++ /dev/null
@@ -1,17 +0,0 @@
-\version "2.13.26"
-\header {
-  lsrtags = "rhythms,expressive-marks"
-  texidoc = "This code demonstrates how to change the number of
-augmentation dots on a single note."
-  doctitle = "Changing the number of augmentation dots per note"
-}
-
-\relative c' {
-  c4.. a16 r2 |
-  \override Dots #'dot-count = #4
-  c4.. a16 r2 |
-  \override Dots #'dot-count = #0
-  c4.. a16 r2 |
-  \revert Dots #'dot-count
-  c4.. a16 r2 |
-}
index 69c64ce7cc742c2d8fc801aa695867b8092674da..d88039a5ce849a23170ab1e1f35c25f5f74ac603 100644 (file)
@@ -3,7 +3,7 @@
 % on melodies from Bellini's "Norma"                              %
 %*****************************************************************%
 
-\version "2.13.20"
+\version "2.13.29"
 
 #(set-global-staff-size 15)
 \paper {
@@ -114,9 +114,7 @@ bass = \relative c {
   e,1 | % m. 4
 
   %% new section starts here in A minor
-  \overrideBeamSettings #'Score #'(4 . 4) #'end
-    #'((* . (1 1 1 1))
-       ((1 . 12)  . (3 3 3 3)))
+  \set Score.beamExceptions = #'()
   \once \override TextScript #'staff-padding = #1.7
   \times 2/3 { a8\p^\andantino e' a c a e a, e' a c a e } | % m. 5
 
diff --git a/Documentation/snippets/new/hiding-accidentals-on-tied-notes-at-the-start-of-a-new-system.ly b/Documentation/snippets/new/hiding-accidentals-on-tied-notes-at-the-start-of-a-new-system.ly
new file mode 100644 (file)
index 0000000..2d35300
--- /dev/null
@@ -0,0 +1,15 @@
+\version "2.13.26"
+\header {
+  lsrtags = "pitches"
+  texidoc = "This shows how to hide accidentals on tied notes at the beginning of a
+new system."
+  doctitle = "Hiding accidentals on tied notes at the beginning of a new system"
+}
+
+\relative c'' {
+  \override Accidental #'hide-tied-accidental-after-break = ##t
+  cis1~ cis~
+  \break
+  cis
+}
+
index fce28adcd8fba7f6a81812f32fcba595673bd8fd..0dad36760d10eb90c90f55a37d43c94d71188342 100644 (file)
@@ -1,11 +1,10 @@
-\version "2.13.4"
+\version "2.13.29"
 
 \header {
   lsrtags = "rhythms"
   texidoc = "
-To typeset beams grouped @code{3-4-3-2} in 12/8 it is no longer
-necessary first to override the default beam endings in 12/8,and
-then to set up the new beaming endings:
+To typeset beams grouped @code{3-4-3-2} one need only change the
+beat structure:
 "
   doctitle = "Reverting default beam endings"
 }
@@ -17,7 +16,6 @@ then to set up the new beaming endings:
   a8 a a a a a a a a a a a
 
   % Set new values for beam endings
-  \overrideBeamSettings #'Score #'(12 . 8) #'end
-    #'((* . (3 4 3 2)))
+  \set Score.beatStructure = #'(3 4 3 2)
   a8 a a a a a a a a a a a
 }
diff --git a/Documentation/snippets/new/scheme-engraver-ambitus.ly b/Documentation/snippets/new/scheme-engraver-ambitus.ly
deleted file mode 100644 (file)
index be832c9..0000000
+++ /dev/null
@@ -1,323 +0,0 @@
-\version "2.13.15"
-
-\header {
-
-  lsrtags = "contexts-and-engravers"
-
-
-  texidoc = "This example demonstrates how the ambitus engraver may be
-  defined on the user side, with a Scheme engraver.
-
-  This is basically a rewrite in Scheme of the code from
-  @file{lily/ambitus-engraver.cc}.
-"
-
-  doctitle = "Defining an engraver in Scheme: ambitus engraver"
-}
-
-#(use-modules (oop goops))
-
-%%%
-%%% Grob utilities
-%%%
-%%% These are literal rewrites of some C++ methods used by the ambitus engraver.
-#(define (ly:event::in-event-class event class-name)
-   "Check if @var{event} the given class.
-Rewrite of @code{Stream_event::internal_in_event_class} from @file{lily/stream-event.cc}."
-   (memq class-name (ly:make-event-class (ly:event-property event 'class))))
-
-#(define (ly:separation-item::add-conditional-item grob grob-item)
-   "Add @var{grob-item} to the array of conditional elements of @var{grob}.
-Rewrite of @code{Separation_item::add_conditional_item} from @file{lily/separation-item.cc}."
-   (ly:pointer-group-interface::add-grob grob 'conditional-elements grob-item))
-
-#(define (ly:accidental-placement::accidental-pitch accidental-grob)
-   "Get the pitch from the grob cause of @var{accidental-grob}.
-Rewrite of @code{accidental_pitch} from @file{lily/accidental-placement.cc}."
-   (ly:event-property (ly:grob-property (ly:grob-parent accidental-grob Y) 'cause)
-                      'pitch))
-
-#(define (ly:accidental-placement::add-accidental grob accidental-grob)
-   "Add @var{accidental-grob}, an @code{Accidental} grob, to the
-list of the accidental grobs of @var{grob}, an @code{AccidentalPlacement}
-grob.
-Rewrite of @code{Accidental_placement::add_accidental} from @file{lily/accidental-placement.cc}."
-   (let ((pitch (ly:accidental-placement::accidental-pitch accidental-grob)))
-     (set! (ly:grob-parent accidental-grob X) grob)
-     (set! (ly:grob-property accidental-grob 'X-offset)
-           ly:grob::x-parent-positioning)
-     (let* ((accidentals (ly:grob-object grob 'accidental-grobs))
-            (handle (assq (ly:pitch-notename pitch) accidentals))
-            (entry (if handle (cdr handle) '())))
-       (set! (ly:grob-object grob 'accidental-grobs)
-             (assq-set! accidentals
-                        (ly:pitch-notename pitch)
-                        (cons accidental-grob entry))))))
-
-%%%
-%%% Ambitus data structure
-%%%
-
-%%% The <ambitus> class holds the various grobs that are created
-%%% to print an ambitus:
-%%% - ambitus-group: the grob that groups all the components of an ambitus
-%%% (Ambitus grob);
-%%% - ambitus-line: the vertical line between the upper and lower ambitus
-%%% notes (AmbitusLine grob);
-%%% - ambitus-up-note and ambitus-down-note: the note head and accidental
-%%% for the lower and upper note of the ambitus (see <ambitus-note> class
-%%% below).
-%%% The other slots define the key and clef context of the engraver:
-%%% - start-c0: position of middle c at the beginning of the piece.  It
-%%% is used to place the ambitus notes according to their pitch;
-%%% - start-key-sig: the key signature at the beginning of the piece.  It
-%%% is used to determine if accidentals shall be printed next to ambitus
-%%% notes.
-
-#(define-class <ambitus> ()
-   (ambitus-group #:accessor ambitus-group)
-   (ambitus-line #:accessor ambitus-line)
-   (ambitus-up-note #:getter ambitus-up-note
-                    #:init-form (make <ambitus-note>))
-   (ambitus-down-note #:getter ambitus-down-note
-                      #:init-form (make <ambitus-note>))
-   (start-c0 #:accessor ambitus-start-c0
-             #:init-value #f)
-   (start-key-sig #:accessor ambitus-start-key-sig
-                  #:init-value '()))
-
-%%% Accessor for the lower and upper note data of an ambitus
-#(define-method (ambitus-note (ambitus <ambitus>) direction)
-   "If @var{direction} is @code{UP}, then return the upper ambitus note
-of @var{ambitus}, otherwise return the lower ambitus note."
-   (if (= direction UP)
-       (ambitus-up-note ambitus)
-       (ambitus-down-note ambitus)))
-
-%%% The <ambitus-note> class holds the grobs that are specific to ambitus
-%%% (lower and upper) notes:
-%%% - head: an AmbitusNoteHead grob;
-%%% - accidental: an AmbitusAccidental grob, to be possibly printed next
-%%% to the ambitus note head.
-%%% Moreover:
-%%% - pitch is the absolute pitch of the note
-%%% - cause is the note event that causes this ambitus note, i.e. the lower
-%%% or upper note of the considered music sequence.
-
-#(define-class <ambitus-note> ()
-   (head #:accessor ambitus-note-head
-         #:init-value #f)
-   (accidental #:accessor ambitus-note-accidental
-               #:init-value #f)
-   (cause #:accessor ambitus-note-cause
-          #:init-value #f)
-   (pitch #:accessor ambitus-note-pitch
-          #:init-value #f))
-
-%%%
-%%% Ambitus engraving logics
-%%%
-%%% Rewrite of the code from @file{lily/ambitus-engraver.cc}.
-
-#(define (make-ambitus translator)
-   "Build an ambitus object: initialize all the grobs and their relations.
-
-The Ambitus grob contain all other grobs:
- Ambitus
-  |- AmbitusLine
-  |- AmbitusNoteHead   for upper note
-  |- AmbitusAccidental for upper note
-  |- AmbitusNoteHead   for lower note
-  |- AmbitusAccidental for lower note
-
-The parent of an accidental is the corresponding note head,
-and the accidental is set as the 'accidental-grob of the note head
-so that is printed by the function that prints notes."
-   ;; make the ambitus object
-   (let ((ambitus (make <ambitus>)))
-     ;; build the Ambitus grob, which will contain all other grobs
-     (set! (ambitus-group ambitus) (ly:engraver-make-grob translator 'Ambitus '()))
-     ;; build the AmbitusLine grob (line between lower and upper note)
-     (set! (ambitus-line ambitus) (ly:engraver-make-grob translator 'AmbitusLine '()))
-     ;; build the upper and lower AmbitusNoteHead and AmbitusAccidental
-     (for-each (lambda (direction)
-                 (let ((head (ly:engraver-make-grob translator 'AmbitusNoteHead '()))
-                       (accidental (ly:engraver-make-grob translator 'AmbitusAccidental '()))
-                       (group (ambitus-group ambitus)))
-                   ;; The parent of the AmbitusAccidental grob is the
-                   ;; AmbitusNoteHead grob
-                   (set! (ly:grob-parent accidental Y) head)
-                   ;; The AmbitusAccidental grob is set as the accidental-grob
-                   ;; object of the AmbitusNoteHead.  This is later used by the
-                   ;; function that prints notes.
-                   (set! (ly:grob-object head 'accidental-grob) accidental)
-                   ;; both the note head and the accidental grobs are added
-                   ;; to the main ambitus grob.
-                   (ly:axis-group-interface::add-element group head)
-                   (ly:axis-group-interface::add-element group accidental)
-                   ;; the note head and the accidental grobs are added to the
-                   ;; ambitus object
-                   (set! (ambitus-note-head (ambitus-note ambitus direction))
-                         head)
-                   (set! (ambitus-note-accidental (ambitus-note ambitus direction))
-                         accidental)))
-               (list DOWN UP))
-     ;; The parent of the ambitus line is the lower ambitus note head
-     (set! (ly:grob-parent (ambitus-line ambitus) X)
-           (ambitus-note-head (ambitus-note ambitus DOWN)))
-     ;; the ambitus line is added to the ambitus main grob
-     (ly:axis-group-interface::add-element (ambitus-group ambitus) (ambitus-line ambitus))
-     ambitus))
-
-#(define-method (initialize-ambitus-state (ambitus <ambitus>) translator)
-   "Initialize the state of @var{ambitus}, by getting the starting
-position of middle C and key signature from @var{translator}'s context."
-   (if (not (ambitus-start-c0 ambitus))
-       (begin
-         (set! (ambitus-start-c0 ambitus)
-               (ly:context-property (ly:translator-context translator)
-                                    'middleCPosition
-                                    0))
-         (set! (ambitus-start-key-sig ambitus)
-               (ly:context-property (ly:translator-context translator)
-                                    'keySignature)))))
-
-#(define-method (update-ambitus-notes (ambitus <ambitus>) note-grob)
-   "Update the upper and lower ambitus pithes of @var{ambitus}, using
-@var{note-grob}."
-   ;; Get the event that caused the note-grob creation
-   ;; and check that it is a note-event.
-   (let ((note-event (ly:grob-property note-grob 'cause)))
-     (if (ly:event::in-event-class note-event 'note-event)
-         ;; get the pitch from the note event
-         (let ((pitch (ly:event-property note-event 'pitch)))
-           ;; if this pitch is lower than the current ambitus lower
-           ;; note pitch (or it has not been initialized yet),
-           ;; then this pitch is the new ambitus lower pitch,
-           ;; and conversely for upper pitch.
-           (for-each (lambda (direction pitch-compare)
-                       (if (or (not (ambitus-note-pitch (ambitus-note ambitus direction)))
-                               (pitch-compare pitch
-                                              (ambitus-note-pitch (ambitus-note ambitus direction))))
-                           (begin
-                             (set! (ambitus-note-pitch (ambitus-note ambitus direction))
-                                   pitch)
-                             (set! (ambitus-note-cause (ambitus-note ambitus direction))
-                                   note-event))))
-                     (list DOWN UP)
-                     (list ly:pitch<? (lambda (p1 p2)
-                                        (ly:pitch<? p2 p1))))))))
-
-#(define-method (typeset-ambitus (ambitus <ambitus>) translator)
-   "Typeset the ambitus:
-- place the lower and upper ambitus notes according to their pitch and
-  the position of the middle C;
-- typeset or delete the note accidentals, according to the key signature.
-  An accidental, if it is to be printed, is added to an AccidentalPlacement
-  grob (a grob dedicated to the placement of accidentals near a chord);
-- both note heads are added to the ambitus line grob, so that a line should
-  be printed between them."
-   ;; check if there are lower and upper pitches
-   (if (and (ambitus-note-pitch (ambitus-note ambitus UP))
-            (ambitus-note-pitch (ambitus-note ambitus DOWN)))
-       ;; make an AccidentalPlacement grob, for placement of note accidentals
-       (let ((accidental-placement (ly:engraver-make-grob
-                                    translator
-                                    'AccidentalPlacement
-                                    (ambitus-note-accidental (ambitus-note ambitus DOWN)))))
-         ;; For lower and upper ambitus notes:
-         (for-each (lambda (direction)
-                     (let ((pitch (ambitus-note-pitch (ambitus-note ambitus direction))))
-                       ;; set the cause and the staff position of the ambitus note
-                       ;; according to the associated pitch
-                       (set! (ly:grob-property (ambitus-note-head (ambitus-note ambitus direction))
-                                               'cause)
-                             (ambitus-note-cause (ambitus-note ambitus direction)))
-                       (set! (ly:grob-property (ambitus-note-head (ambitus-note ambitus direction))
-                                               'staff-position)
-                             (+ (ambitus-start-c0 ambitus)
-                                (ly:pitch-steps pitch)))
-                       ;; determine if an accidental shall be printed for this note,
-                       ;; according to the key signature
-                       (let* ((handle (or (assoc (cons (ly:pitch-octave pitch)
-                                                       (ly:pitch-notename pitch))
-                                                 (ambitus-start-key-sig ambitus))
-                                          (assoc (ly:pitch-notename pitch)
-                                                 (ambitus-start-key-sig ambitus))))
-                              (sig-alter (if handle (cdr handle) 0)))
-                         (cond ((= (ly:pitch-alteration pitch) sig-alter)
-                                ;; the note alteration is in the key signature
-                                ;; => it does not have to be printed
-                                (ly:grob-suicide!
-                                 (ambitus-note-accidental (ambitus-note ambitus direction)))
-                                (set! (ly:grob-object (ambitus-note-head (ambitus-note ambitus direction))
-                                                      'accidental-grob)
-                                      '()))
-                               (else
-                                ;; otherwise, the accidental shall be printed
-                                (set! (ly:grob-property (ambitus-note-accidental
-                                                         (ambitus-note ambitus direction))
-                                                        'alteration)
-                                      (ly:pitch-alteration pitch)))))
-                       ;; add the AccidentalPlacement grob to the
-                       ;; conditional items of the AmbitusNoteHead
-                       (ly:separation-item::add-conditional-item
-                        (ambitus-note-head (ambitus-note ambitus direction))
-                        accidental-placement)
-                       ;; add the AmbitusAccidental to the list of the
-                       ;; AccidentalPlacement grob accidentals
-                       (ly:accidental-placement::add-accidental
-                        accidental-placement
-                        (ambitus-note-accidental (ambitus-note ambitus direction)))
-                       ;; add the AmbitusNoteHead grob to the AmbitusLine grob
-                       (ly:pointer-group-interface::add-grob
-                        (ambitus-line ambitus)
-                        'note-heads
-                        (ambitus-note-head (ambitus-note ambitus direction)))))
-                   (list DOWN UP))
-         ;; add the AccidentalPlacement grob to the main Ambitus grob
-         (ly:axis-group-interface::add-element (ambitus-group ambitus) accidental-placement))
-       ;; no notes ==> suicide the grobs
-       (begin
-         (for-each (lambda (direction)
-                     (ly:grob-suicide! (ambitus-note-accidental (ambitus-note ambitus direction)))
-                     (ly:grob-suicide! (ambitus-note-head (ambitus-note ambitus direction))))
-                   (list DOWN UP))
-         (ly:grob-suicide! ambitus-line))))
-
-%%%
-%%% Ambitus engraver definition
-%%%
-#(define ambitus-engraver
-   (lambda (context)
-     (let ((ambitus #f))
-       ;; when music is processed: make the ambitus object, if not already built
-       `((process-music . ,(lambda (translator)
-                             (if (not ambitus)
-                                 (set! ambitus (make-ambitus translator)))))
-         ;; set the ambitus clef and key signature state
-         (stop-translation-timestep . ,(lambda (translator)
-                                         (if ambitus
-                                             (initialize-ambitus-state ambitus translator))))
-         ;; when a note-head grob is built, update the ambitus notes
-         (acknowledgers
-          (note-head-interface . ,(lambda (engraver grob source-engraver)
-                                    (if ambitus
-                                        (update-ambitus-notes ambitus grob)))))
-         ;; finally, typeset the ambitus according to its upper and lower notes
-         ;; (if any).
-         (finalize . ,(lambda (translator)
-                        (if ambitus
-                            (typeset-ambitus ambitus translator))))))))
-
-%%%
-%%% Example
-%%%
-
-\score {
-  \new StaffGroup <<
-    \new Staff { c'4 des' e' fis' gis' }
-    \new Staff { \clef "bass" c4 des ~ des ees b, }
-  >>
-  \layout { \context { \Staff \consists #ambitus-engraver } }
-}
diff --git a/Documentation/snippets/new/setting-the-double-repeat-default-for-volte.ly b/Documentation/snippets/new/setting-the-double-repeat-default-for-volte.ly
new file mode 100644 (file)
index 0000000..70d10fb
--- /dev/null
@@ -0,0 +1,19 @@
+\version "2.13.26"
+\header {
+  lsrtags = "repeats"
+  texidoc = "There are three different styles of double repeats for
+volte, that can be set using @code{doubleRepeatType}."
+
+  doctitle = "Setting the double repeat default for volte"
+}
+
+
+\relative c'' {
+  \repeat volta 1 { c1 }
+  \set Score.doubleRepeatType = #":|:"
+  \repeat volta 1 { c1 }
+  \set Score.doubleRepeatType = #":|.|:"
+  \repeat volta 1 { c1 }
+  \set Score.doubleRepeatType = #":|.:"
+  \repeat volta 1 { c1 }
+}
diff --git a/Documentation/snippets/new/showing-the-same-articulation-above-and-below-a-note-or-chord.ly b/Documentation/snippets/new/showing-the-same-articulation-above-and-below-a-note-or-chord.ly
new file mode 100644 (file)
index 0000000..6a1a663
--- /dev/null
@@ -0,0 +1,36 @@
+\version "2.13.27"
+
+\header {
+  lsrtags = "expressive-marks, tweaks-and-overrides"
+
+  texidoc = "
+By default, LilyPond does not allow the same articulation (e.g., an
+accent, a fermata, a flageolet, etc.) to be displayed above and below a
+note.  For example, @code{c4_\\fermata^\\fermata} will only show a fermata
+below, ignoring the fermata above.  However, one can stick
+scripts (just like fingerings) inside a chord, which means it is
+possible to have as many articulations as desired.  So, the solution is to
+write the note as a chord and add the articulations inside the @code{<@dots{}>}.
+"
+  doctitle = "Showing the same articulation above and below a note or chord"
+}
+
+% The same as \flageolet, just a little smaller
+smallFlageolet =
+#(let ((m (make-articulation "flageolet")))
+   (set! (ly:music-property m 'tweaks)
+         (acons 'font-size -2
+                (ly:music-property m 'tweaks)))
+   m)
+
+\relative c' {
+  s4^"Wrong:"
+  c4_\fermata^\fermata % The second fermata is ignored!
+  <e d'>4^\smallFlageolet_\smallFlageolet
+
+  s4^"Works if written inside a chord:"
+  <e_\smallFlageolet d'^\smallFlageolet>4
+  <e_\flageolet d'^\flageolet>4
+  <e_\smallFlageolet^\smallFlageolet>4
+  <e_\fermata^\fermata>4
+}
diff --git a/Documentation/snippets/new/subdividing-beams.ly b/Documentation/snippets/new/subdividing-beams.ly
new file mode 100644 (file)
index 0000000..963e44c
--- /dev/null
@@ -0,0 +1,40 @@
+\version "2.13.29"
+
+\header {
+  lsrtags = "rhythms"
+
+  texidoc = "
+The beams of consecutive 16th (or shorter) notes are, by default, not
+subdivided.  That is, the three (or more) beams stretch unbroken over
+entire groups of notes.  This behavior can be modified to subdivide
+the beams into sub-groups by setting the property
+@code{subdivideBeams}. When set, multiple beams will be subdivided at
+intervals defined by the current value of @code{baseMoment} by reducing
+the multiple beams to just one beam between the sub-groups. Note that
+@code{baseMoment} defaults to one over the denominator of the current
+time signature if not set explicitly. It must be set to a fraction
+giving the duration of the beam sub-group using the
+@code{ly:make-moment} function, as shown in this snippet. Also, when
+@code{baseMoment} is changed, @code{beatStructure} should also be changed
+to match the new @code{baseMoment}:
+
+"
+  doctitle = "Subdividing beams"
+}
+
+\relative c'' {
+  c32[ c c c c c c c]
+  \set subdivideBeams = ##t
+  c32[ c c c c c c c]
+
+  % Set beam sub-group length to an eighth note
+  \set baseMoment = #(ly:make-moment 1 8)
+  \set beatStructure = #'(2 2 2 2)
+  c32[ c c c c c c c]
+
+  % Set beam sub-group length to a sixteenth note
+  \set baseMoment = #(ly:make-moment 1 16)
+  \set beatStructure = #'(4 4 4 4)
+  c32[ c c c c c c c]
+}
+
index 82f01ee581cd33a0ae7d3eb4deab0a51e2c2ff9c..2f458f2cfda56d5d0fbb6f1d53ee07239205ad3f 100644 (file)
@@ -9,7 +9,7 @@ use of spacer rests within the @code{\global} variable to define
 meter changes (and other elements common to all parts) throughout
 the entire score.
 "
-  doctitle = "Solo verse and two-part refrain"
+  doctitle = "Vocal ensemble template with verse and refrain"
 }
 
 global = {
index 2e775ae4360ec473527c4dcabe2c905bf52c9139..909f9b938e217a60045e402f2900a9784c318e10 100644 (file)
@@ -2,10 +2,10 @@
 % generated from Documentation/snippets/new
 % This file is in the public domain.
 %% Note: this file works from version 2.13.1
-\version "2.13.20"
+\version "2.13.29"
 
 \header {
-%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7
+%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b
   texidoces = "
 LilyPond también proporciona funciones de formato para imprimir
 números de grupo especial diferentes a la propia fracción, así
index 8e2e7f973e4f6bca5956ec58b811ee190e738e78..df9a8b630d9a51ad2a0e7c1577a1231f402aeab2 100644 (file)
@@ -2,10 +2,10 @@
 % generated from Documentation/snippets/new
 % This file is in the public domain.
 %% Note: this file works from version 2.13.0
-\version "2.13.20"
+\version "2.13.29"
 
 \header {
-%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7
+%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b
   doctitlees = "Armaduras de tonalidad no tradicionales"
   texidoces = "
 
index 588a89246f0ae17baecec77114fb6c4f61ad8d27..bfeaa9d433c20f20cf21a3a3522d1a629cfaffe8 100644 (file)
@@ -2,10 +2,10 @@
 % generated from Documentation/snippets/new
 % This file is in the public domain.
 %% Note: this file works from version 2.13.11
-\version "2.13.20"
+\version "2.13.29"
 
 \header {
-%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7
+%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b
   texidoces = "
 
 Las cabezas de nota de notación fácil utilizan la propiedad
index cad233e3fd6968b0746089a368619c1d45538e9a..286cf3d4bc00bc5a3d52e2777d0ea7c8e67cdd78 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "template"
 
-%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7
+%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b
   texidoces = "
 
 Esta plantilla muestra el uso de contextos @code{StaffGroup} y
@@ -19,7 +19,6 @@ a Do antes de ser asignada a una variable.
 
 "
   doctitlees = "Plantilla de orquesta con coro y piano"
-
 %% Translation of GIT committish: bdfe3dc8175a2d7e9ea0800b5b04cfb68fe58a7a
   texidocfr = "
 Ce canevas illustre l'utilisation de contextes @code{StaffGroup} pour
index d468b9c46ab6a60fc4d0db0289806b99ba30243b..e81f10d54e31aca2ab4fee8c46acb43186ee8b23 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "pitches, text"
 
-%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7
+%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b
   texidoces = "
 
 Internamente, @code{\\ottava} establece las propiedades
@@ -19,7 +19,6 @@ ajuste @code{ottavation} después de invocar la instrucción
 
   doctitlees = "Texto de octava alta y baja"
 
-
 %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40
 texidocde = "
 Intern setzt die @code{set-octavation}-Funktion die Eigenschaften
@@ -31,7 +30,6 @@ und @code{middleCPosition}.  Um den Text der Oktavierungsklammer zu
 "
 
 doctitlede = "Ottava-Text"
-
 %% Translation of GIT committish: 58a29969da425eaf424946f4119e601545fb7a7e
   texidocfr = "
 En interne, la fonction @code{\\ottava} détermine les
index fd09e891e34f31f53af3bc347b7ea05c4b81ac63..3cab18f999bd320e99f4eec8e94a8f446f5aeb31 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "repeats, tweaks-and-overrides"
 
-%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7
+%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b
   texidoces = "
 Se pueden mostrar los contadores de las repeticiones del tipo
 porcentaje a intervalos regulares mediante el establecimiento de
@@ -15,14 +15,12 @@ la propiedad de contexto @code{repeatCountVisibility}.
 "
   doctitlees = "Visibilidad del contador de repeticiones de tipo porcentaje"
 
-
 %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40
   texidocde = "
 Prozentwiederholungszähler können in regelmäßigen Intervallen angezeigt
 werden, indem man die Eigenschaft @code{repeatCountVisibility} beeinflusst.
 "
   doctitlede = "Sichtbarkeit von Prozent-Wiederholungen"
-
 %% Translation of GIT committish: a5bde6d51a5c88e952d95ae36c61a5efc22ba441
   texidocfr = "
 Le numéro de mesure répétée sera imprimé à intervalle régulier si vous
index 2e420dcab5ec4e5fc9f0653c417af141d51bdc60..74e4e5aa5e42c5eaaa863f6d31516842edfcfdef 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "repeats"
 
-%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7
+%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b
   texidoces = "
 Las repeticiones de compases completos mayores de dos repeticiones
 pueden llevar un contador si se activa la propiedad adecuada, como se
@@ -15,7 +15,6 @@ ve en este ejemplo:
 "
   doctitlees = "Percent repeat counter"
 
-
 %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40
   texidocde = "
 Ganztaktwiederholungen mit mehr als zwei Wiederholungen erhalten einen
@@ -23,7 +22,6 @@ Zähler, wenn man die entsprechende Eigenschaft einsetzt:
 
 "
   doctitlede = "Prozent-Wiederholungen zählen"
-
 %% Translation of GIT committish: a5bde6d51a5c88e952d95ae36c61a5efc22ba441
   texidocfr = "
 Les répétitions de plus de 2 mesures sont surmontées d'un compteur,
index 38d3b9d62a3495bf89196fc11e7936d0f99203c2..5922d319c24ef770a2da052c511875159e79c335 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "rhythms"
 
-%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7
+%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b
  doctitlees = "Permitir saltos de línea dentro de grupos especiales con barra"
  texidoces = "
 Este ejemplo artificial muestra cómo se pueden permitir tanto los
@@ -16,7 +16,6 @@ sincopados se deben barrar manualmente.
 
 "
 
-
 %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40
   texidocde = "
 Dieses künstliche Beispiel zeigt, wie sowohl automatische als auch
@@ -28,7 +27,6 @@ gesetzt werden.
   doctitlede = "Zeilenumbrüche bei N-tolen mit Balken erlauben"
 
 
-
 %% Translation of GIT committish: 4da4307e396243a5a3bc33a0c2753acac92cb685
   texidocfr = "
 Cet exemple peu académique démontre comment il est possible d'insérer un saut
index 8639f99b251a65b1b690f9daa5c8fe40ab1e7314..ebd1ce76e8267a16771be2aeb52ea4e885ec9802 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "keyboards, template"
 
-%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7
+%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b
   texidoces = "
 Presentamos a continuación una plantilla de piano sencilla con algunas
 notas.
@@ -14,14 +14,12 @@ notas.
 "
   doctitlees = "Plantilla de piano (sencilla)"
 
-
 %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40
   texidocde = "
 Hier ein einfaches Klaviersystem.
 
 "
   doctitlede = "Vorlage für einfache Klaviernotation"
-
 %% Translation of GIT committish: ceb0afe7d4d0bdb3d17b9d0bff7936bb2a424d16
   texidocfr = "
 Voici une simple partition pour piano avec quelques notes.
index 8afd810022728c424aebd8bbcb1cf6bdf944ec7a..a1843fbd44a69a2a1c8a7a7c33293dd272d63743 100644 (file)
@@ -2,10 +2,10 @@
 % generated from Documentation/snippets/new
 % This file is in the public domain.
 %% Note: this file works from version 2.13.4
-\version "2.13.20"
+\version "2.13.29"
 
 \header {
-%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7
+%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b
   texidoces = "
 Muchas partituras de piano tienen las indicaciones dinámicas centradas
 entre los dos pentagramas.  El contexto @code{Dynamics}, si se sitúa
index 7dc03b30ed55b26c4a0a2648a7681942184a7aeb..3f36c033462ce360f5b1103782e3595e82e85bc3 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "text, keyboards, template"
 
-%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7
+%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b
   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.
@@ -14,12 +14,10 @@ se puede centrar entre los pentagramas de un sistema de piano.
 "
   doctitlees = "Plantilla de piano con letra centrada"
 
-
 %% Translation of GIT committish: fa1aa6efe68346f465cfdb9565ffe35083797b86
   texidocja = "
 旋律と歌詞のための譜表を持つ代わりに、歌詞をピアノ譜の 2 つの譜の間に置くことができます。
 "
-
 %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40
   texidocde = "
 Anstatt ein eigenes System für Melodie und Text zu schreiben, können
@@ -27,7 +25,6 @@ Sie den Text auch zwischen die beiden Klaviersysteme schreiben
 (und damit das zusätzliche System für die Gesangstimme auslassen).
 "
 
-
 %% Translation of GIT committish: bdfe3dc8175a2d7e9ea0800b5b04cfb68fe58a7a
   texidocfr = "
 Lorsque la mélodie est doublée au piano, cela ne nécessite pas forcément
index a3dde0e648b7976735cf55fcb3adba6f0d7ef4ca..028afb51273e3ab688512aada87473f22e2bfd4a 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "vocal-music, keyboards, template"
 
-%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7
+%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b
   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.
@@ -14,12 +14,10 @@ melodía y la letra, y el acompañamiento de piano por debajo.
 "
   doctitlees = "Plantilla de piano con melodía y letra"
 
-
 %% Translation of GIT committish: fa1aa6efe68346f465cfdb9565ffe35083797b86
   texidocja = "
 これは一般的な歌曲のフォーマットです: 旋律と歌詞を持つ譜表と、その下にピアノ伴奏譜があります。
 "
-
 %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40
   texidocde = "
 Das nächste Beispiel ist typisch für ein Lied: Im oberen System die
@@ -28,7 +26,6 @@ Melodie mit Text, darunter Klavierbegleitung.
 
   doctitlede = "Vorlage für Klavier und Gesangsstimme"
 
-
 %% Translation of GIT committish: ceb0afe7d4d0bdb3d17b9d0bff7936bb2a424d16
   texidocfr = "
 Il s'agit du format classique pour le chant : une portée pour la mélodie
index bce85cee0f0929f53369feb60fff5500f51362e7..ef3b20a1360222d11a7bd5a2e31e712168a256d3 100644 (file)
@@ -2,7 +2,7 @@
 % generated from Documentation/snippets/new
 % This file is in the public domain.
 %% Note: this file works from version 2.12.0
-\version "2.13.20"
+\version "2.13.29"
 \include "english.ly"
 #(set-global-staff-size 15)
 \paper {
index b44974a67fd755da0e24bb589b79c91925fa6eb5..bf4ff52ab052e125058070ceab009cedabd97984 100644 (file)
@@ -3,10 +3,14 @@ altering-the-length-of-beamed-stems.ly
 ambitus-with-multiple-voices.ly
 ambitus.ly
 applying-note-head-styles-depending-on-the-step-of-the-scale.ly
+changing-the-ambitus-gap.ly
+changing-the-interval-of-lines-on-the-stave.ly
+clefs-can-be-transposed-by-arbitrary-amounts.ly
 coloring-notes-depending-on-their-pitch.ly
 creating-a-sequence-of-notes-on-various-pitches.ly
 dodecaphonic-style-accidentals-for-each-note-including-naturals.ly
 generating-random-notes.ly
+hiding-accidentals-on-tied-notes-at-the-start-of-a-new-system.ly
 keep-change-clefs-full-sized.ly
 makam-example.ly
 non-traditional-key-signatures.ly
index 218875f3ba184de11d49ee03d23e8153926b45a1..19e9645a25a9b0f90dde08906336266c95b2402b 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "fretted-strings"
 
-%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7
+%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b
   texidoces = "
 Es posible ejercer un mayor control sobre la colocación de las
 digitaciones de la mano derecha estableciendo el valor de una
@@ -16,7 +16,6 @@ se debe usar una construcción de acorde.
 "
   doctitlees = "Posicionamiento de digitaciones de mano derecha"
 
-
 %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40
   texidocde = "
 Man kann die Positionierung von Fingersatz der rechten Hand besser
@@ -25,7 +24,6 @@ das folgende Beispiel zeigt:
 
 "
   doctitlede = "Positionierung von Fingersatz der rechten Hand"
-
 %% Translation of GIT committish: ac6297e4fa174ac5759cc450ad085c2fac9ba00b
 
   texidocfr = "
index 2a05b4c447cf156aa1cb3099e45b69457f7aead1..c40551a92d5229c8d220bf44928ae45d02c4a24f 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "fretted-strings"
 
-%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7
+%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b
   texidoces = "
 La polifonía se crea de la misma forma en un @code{TabStaff} que
 en una pauta normal.
@@ -14,7 +14,6 @@ en una pauta normal.
 "
   doctitlees = "Polifonía en tablaturas"
 
-
 %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40
   texidocde = "
 Polyphonie kann in einer Tabulatur (@code{TabStaff}) genauso wie in einem
@@ -22,7 +21,6 @@ normalen Notensystem erstellt werden.
 
 "
   doctitlede = "Polyphonie in einer Tabulatur"
-
 %% Translation of GIT committish: ac6297e4fa174ac5759cc450ad085c2fac9ba00b
 
   texidocfr = "
index 0fabbbae133b77b5f27092643ec7e4c1c98e5eab..e89e4612a66d6b038e52436d5a680b3091c7a664 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "expressive-marks, tweaks-and-overrides"
 
-%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7
+%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b
   texidoces = "
 Si necesitamos alargar o acortar un símbolo de arpegio, podemos
 modificar independientemente los extremos superior e inferior.
index 1b07b9d79b5c77822d4070ae55369d7ce54d8f82..e679ff4f2782d81b0d1065bdf150b3db58170508 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "rhythms"
 
-%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7
+%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b
   texidoces = "
 
 Cuando se colocan figuras sobre líneas adicionales, sus barras se
index 607783ab24a4c589744ce0c9c067b3b0f15d31fc..04fad3518126b0eee425631a50a31daa0f474cad 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "rhythms"
 
-%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7
+%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b
   texidoces = "
 
 Al establecer la propiedad @code{'strict-grace-spacing} hacemos que
@@ -21,7 +21,6 @@ columnas musicales de las notas principales.
   doctitlees = "Posicionamiento de las notas de adorno con espacio flotante"
 
 
-
 %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40
   texidocde = "
 Wenn man die Eigenschaft @code{'strict-grace-spacing} aktiviert,
@@ -34,7 +33,6 @@ Hauptnote gesetzt.
   doctitlede = "Positionierung von Verzierungen mit verschiebbarem Platz"
 
 
-
 %% Translation of GIT committish: 374d57cf9b68ddf32a95409ce08ba75816900f6b
   texidocfr = "
 Lorsque vous activez la propriété @code{'strict-grace-spacing},
index 1126ddd7d64b7f6fd2a8894d1ce20fcb5970aa5c..cd45616f6b2964c8088302e102ef60ac1fa83a77 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "rhythms, tweaks-and-overrides"
 
-%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7
+%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b
  doctitlees = "Posicionar los silencios multicompás"
  texidoces = "
 A diferencia de los silencios normales, no existe una instrucción
@@ -19,7 +19,6 @@ colocación de los silencios multicompás se puede controlar como se
 ve a continuación:
 
 "
-
 %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40
 texidocde = "
 Anders als bei normalen Pausen gibt es keinen direkten Befehl, um die
@@ -32,7 +31,6 @@ werden:
   doctitlede = "Positionierung von Ganztaktpausen"
 
 
-
 %% Translation of GIT committish: 4da4307e396243a5a3bc33a0c2753acac92cb685
   texidocfr = "
 Si l'on peut positionner verticalement un silence simple en le
index 20619670dda465810fd6fcf4985a2732cf19bc1b..50f59311412023639beeef3f28537027539d8413 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "expressive-marks, editorial-annotations, tweaks-and-overrides"
 
-%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7
+%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b
   texidoces = "
 
 Los elementos de marcado de texto deben tener la propiedad
@@ -16,7 +16,6 @@ impriman por dentro de las ligaduras de expresión.
 "
   doctitlees = "Situar los elementos de marcado de texto por dentro de las ligaduras"
 
-
 %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40
   texidocde = "
 Textbeschriftung kann innerhalb von Bögen gesetzt werden, wenn die
@@ -24,7 +23,6 @@ Textbeschriftung kann innerhalb von Bögen gesetzt werden, wenn die
 
 "
   doctitlede = "Textbeschriftung innerhalb von Bögen positionieren"
-
 %% Translation of GIT committish: 217cd2b9de6e783f2a5c8a42be9c70a82195ad20
   texidocfr = "
 Lorsqu'il vous faut inscrire une annotation à l'intérieur d'une liaison,
index 8fb9a85b0f5e4bdc1a931a1968204450ec7b2bc5..37444d77bdbd7ba5df471bad05c8ecb3621eba7c 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "pitches"
 
-%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7
+%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b
 doctitlees = "Evitar que se añadan becuadros adicionales automáticamente"
 
 texidoces = "
@@ -19,7 +19,6 @@ dentro del contexto de @code{Staff}.
 
 "
 
-
 %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40
   doctitlede = "Verhindern, dass zusätzliche Auflösungszeichen automatisch
 hinzugefügt werden"
@@ -30,7 +29,6 @@ ein vorheriges Versetzungszeichen der gleichen Note aufgehoben werden
 soll.  Um dieses Verhalten zu ändern, muss die Eigenschaft
 @code{extraNatural} im @code{Staff}-Kontext auf \"false\" gesetzt werden.
 "
-
 %% Translation of GIT committish: 58a29969da425eaf424946f4119e601545fb7a7e
   texidocfr = "
 En accord avec les règles standards de l'écriture musicale, on grave
index f3646550d6d4251a5fb558827c0c1cc7ecad2911..9b8d703a214d969a313f23eb139bff4ffe88ed8d 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "pitches"
 
-%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7
+%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b
 doctitlees = "Evitar que se impriman becuadros cuando cambia la armadura"
 
 texidoces = "
@@ -18,7 +18,6 @@ propiedad @code{printKeyCancellation} del contexto @code{Staff}.
 
 "
 
-
 %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40
 doctitlede = "Auflösungzeichen nicht setzen wenn die Tonart wechselt"
 
@@ -28,7 +27,6 @@ um Versetzungszeichen der vorherigen Tonart aufzulösen.  Das kann
 verhindert werden, indem die @code{printKeyCancellation}-Eigenschaft
 im @code{Staff}-Kontext auf \"false\" gesetzt wird.
 "
-
 %% Translation of GIT committish: 4ab2514496ac3d88a9f3121a76f890c97cedcf4e
   texidocfr = "
 Après un changement de tonalité, un bécarre est imprimé pour annuler
index ad8bb2dbcf7531c38e6eb89c2b04b559803f0d22..eb8ab4feb914be304e1b4257e7992f3c2d007b3b 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "repeats, tweaks-and-overrides"
 
-%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7
+%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b
   texidoces = "
 Se puede imprimir una línea divisoria de la forma @code{|:} al
 principio de la pieza, sobreescribiendo la propiedad correspondiente:
@@ -14,7 +14,6 @@ principio de la pieza, sobreescribiendo la propiedad correspondiente:
 "
   doctitlees = "Imprimir puntos de repetición al prinicpio de la pieza"
 
-
 %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40
   texidocde = "
 Ein @code{|:}-Taktstrich kann auch zu Beginn eines Stückes ausgegeben werden, indem
@@ -22,7 +21,6 @@ man die entsprechende Eigenschaft verändert:
 
 "
   doctitlede = "Ein Wiederholungszeichen zu Beginn eines Stückes ausgeben"
-
 %% Translation of GIT committish: a5bde6d51a5c88e952d95ae36c61a5efc22ba441
   texidocfr = "
 Bien qu'allant à l'encontre des usages en matière de gravure, vous
index 3a0d1de68e178acec7ee30d90e858caee58486a9..b31edf16f15a492f49ec04946d04219d1a0ff039 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "rhythms"
 
-%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7
+%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b
   texidoces = "
 
 Se pueden imprimir los números de compás a intervalos regulares
@@ -19,7 +19,6 @@ imprimen a cada dos compases excepto al final de la línea.
   doctitlees = "Imprimir números de compás a intervalos regulares"
 
 
-
 %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40
   texidocde = "
 Taktnummern können in regelmäßigen Intervallen gesetzt werden, indem
@@ -31,7 +30,6 @@ am Ende einer Zeile.
   doctitlede = "Setzen der Taktnummern in regelmäßigen Intevallen"
 
 
-
 %% Translation of GIT committish: 374d57cf9b68ddf32a95409ce08ba75816900f6b
   texidocfr = "
 Vous pouvez imprimer un numéro de mesure à intervalle régulier plutôt
index c27b3d3539d4ceab8a515a74a6b95f08c658163d..19b1b54757c48ecccf4bcc534750fc19b4f73c17 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "rhythms, tweaks-and-overrides"
 
-%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7
+%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b
   texidoces = "
 
 Los números de compás también se pueden imprimir dentro de rectángulos o de circunferencias.
@@ -15,7 +15,6 @@ Los números de compás también se pueden imprimir dentro de rectángulos o de
   doctitlees = "Imprimir números de compás dentro de rectángulos o circunferencias"
 
 
-
 %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40
   texidocde = "
 Taktnummern können auch in Boxen oder Kreisen gesetzt werden.
@@ -24,7 +23,6 @@ Taktnummern können auch in Boxen oder Kreisen gesetzt werden.
   doctitlede = "Setzen von Taktnummern in Kästen oder Kreisen"
 
 
-
 %% Translation of GIT committish: 374d57cf9b68ddf32a95409ce08ba75816900f6b
   texidocfr = "
 Les numéros de mesures peuvent être encadrés ou entourés d'un cercle.
index ebaee654623772b68f6c3917fc4f6b9445db7d36..01e087a3e425a82b7fac4514bcc270824b24196a 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "expressive-marks"
 
-%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7
+%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b
   texidoces = "
 Se pueden imprimir reguladores con un círculo en la punta (notación
 «al niente») estableciendo la propiedad @code{circled-tip} del objeto
@@ -15,7 +15,6 @@ Se pueden imprimir reguladores con un círculo en la punta (notación
 "
   doctitlees = "Impresión de reguladores utilizando la notación «al niente»"
 
-
 %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40
  texidocde = "
  Crescendo-Klammern können mit einem kleinen Kreis vor der Spitze
@@ -25,7 +24,6 @@ Se pueden imprimir reguladores con un círculo en la punta (notación
 
 "
   doctitlede = "Crescendo Klammern al niente schreiben"
-
 %% Translation of GIT committish: 217cd2b9de6e783f2a5c8a42be9c70a82195ad20
   texidocfr = "
 Des crescendos ou decrescendos @emph{al niente} peuvent être indiqués de
index 1affa863381c8123bffb11c2d2673ddb931baaba..ab9b546d718aa69b6ddf2255f3a5311b7610267e 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "text"
 
-%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7
+%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b
   texidoces = "
 Aunque normalmente las marcas de texto sólo se imprimen sobre el
 pentagrama superior, también se pueden imprimir en otro pentagrama
@@ -15,7 +15,6 @@ cualquiera.
 "
   doctitlees = "Imprimir marcas en cualquier pentagrama"
 
-
 %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40
   texidocde = "
 Normalerweise werden Textzeichen nur über dem obersten Notensystem gesetzt.  Sie
@@ -23,7 +22,6 @@ können aber auch über jedem System ausgegeben werden.
 
 "
   doctitlede = "Zeichen über jedem System ausgeben"
-
 %% Translation of GIT committish: 548ef200973bd3d46ea75c5498461d9e5f168334
   texidocfr = "
 Bien que ces indications textuelles ne soient habituellement imprimées
index e935e2defe5471167277e95683d717e704787d55..8f617f7e7c1201511d9063b3442309cef3b28fff 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "rhythms, expressive-marks, staff-notation, tweaks-and-overrides"
 
-%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7
+%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b
   texidoces = "
 De forma predeterminada, las indicaciones metronómicas y las
 letras de ensayo se imprimen encima del pentagrama.  Para
@@ -19,7 +19,6 @@ adecuadamente la propiedad @code{direction} de
   doctitlees = "Impresión de indicaciones metronómicas y letras de ensayo debajo del pentagrama"
 
 
-
 %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40
   texidocde = "
 Normalerweise werden Metronom- und Übungszeichen über dem Notensystem ausgegeben.
@@ -28,7 +27,6 @@ von @code{MetronomeMark} oder @code{RehearsalMark} entsprechend verändert werde
 
 "
   doctitlede = "Metronom- und Übungszeichen unter das System setzen"
-
 %% Translation of GIT committish: 99dc90bbc369722cf4d3bb9f30b7288762f2167f6
   texidocfr = "
 Les indications de tempo et les marques de repère s'impriment par défaut
index 5a1bb81dd81dafbfb7fe1019e5e8c3aa90b049aa..236e08291249011aa62e9777a29c04f22b19e25d 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "tweaks-and-overrides"
 
-%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7
+%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b
   texidoces = "
 Se puede usar el contexto @code{NoteNames} para imprimir el valor
 textual de las notas.  La propiedad @code{printOctaveNames} activa o
index 316d2faee7c55a33ce8a5f88b51bb7006db67143..24363bb2c40626baa1bf5fb1e93a56c087e1592f 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "rhythms"
 
-%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7
+%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b
   texidoces = "
 
 De forma predeterminada se suprime el número del primer compás de una
@@ -21,7 +21,6 @@ líinea divisoria vacía antes de la primera nota.
   doctitlees = "Imprimir el número de compás en el primer compás"
 
 
-
 %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40
   texidocde = "
 Standardmäßig wird die erste Taktzahl einer Paritur nicht gesetzt,
@@ -35,7 +34,6 @@ werden, damit das funktioniert.
   doctitlede = "Setzen der Taktnummer für den ersten Takt"
 
 
-
 %% Translation of GIT committish: 374d57cf9b68ddf32a95409ce08ba75816900f6b
   texidocfr = "
 Par défaut, LilyPond n'affiche pas le premier numéro de mesure s'il est
index 69c5bff5b9dda736b49935d562795afe9b2153cc..5d8b4d3e25191a7fda11ff7c91e3180f9c2b70cc 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "pitches, staff-notation"
 
-%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7
+%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b
   texidoces = "
 Los pasajes citados tienen en cuenta la transposición de la fuente
 tanto como la del destino.  En este ejemplo, todos los
@@ -19,7 +19,6 @@ se transportan todas las notas (incluidas las citadas).
 
 doctitlees = "Citar otra voz con transposición"
 
-
 %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40
   texidocde = "
 Zitate berücksichtigen sowohl die Transposition der Quelle als auch
@@ -30,7 +29,6 @@ in diesem Fall werden alle Noten (auch die zitierten) transponiert.
 
 "
   doctitlede = "Eine Stimme mit Transposition zitieren"
-
 %% Translation of GIT committish: 4ab2514496ac3d88a9f3121a76f890c97cedcf4e
   texidocfr = "
 Les citations tiennent compte de la transposition, aussi bien celle de
index ceb23adff1e7fba11778841e6f5bcbe2f92192cd..35cdd897ed6ca4afb0fa55d6322ab8a47d55747c 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "staff-notation"
 
-%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7
+%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b
   texidoces = "
 
 La propiedad @code{quotedEventTypes} determina los tipos de eventos
@@ -25,7 +25,6 @@ Para ver una lista de los tipos de evento, consulte la sección
 "
   doctitlees = "Citar otra voz"
 
-
 %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40
   texidocde = "
 Die @code{quotedEventTypes}-Eigenschaft bestimmt die
@@ -39,7 +38,6 @@ sich @code{rest-event} nicht in @code{quotedEventTypes} befindet.
 "
 
   doctitlede = "Eine andere Stimme zitieren"
-
 %% Translation of GIT committish: 99dc90bbc369722cf4d3bb9f30b7288762f2167f6
   texidocfr = "
 Les types d'événement pris en charge pour la citation peuvent se régler
index 2467cf4f73ea4d3d8f6e0f1431e76d827a36e628..50695199dfa2e39f0ef745ead7f78a806e491a66 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "rhythms"
 
-%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7
+%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b
   texidoces = "
 
 Los valores predeterminados para las notas de adorno están
@@ -22,7 +22,6 @@ efectos.
   doctitlees = "Redefinición de los valores globales predeterminados para notas de adorno"
 
 
-
 %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40
   texidocde = "
 Die globalen Standardeinstellungen für Verzierungsnoten werden in
@@ -37,7 +36,6 @@ werden.
   doctitlede = "Globale Umdefinition von Verzierungsnoten"
 
 
-
 %% Translation of GIT committish: 374d57cf9b68ddf32a95409ce08ba75816900f6b
   texidocfr = "
 Vous pouvez modifier les valeurs des variables @code{startGraceMusic},
index d4183c8c8512beaafb552097abf6fe3c61c2f4c1..a4054ca40d6369c57ed8d36a0d4a7c3138202bb8 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "rhythms, contexts-and-engravers"
 
-%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7
+%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b
   texidoces = "
 
 Se pueden eliminar completamente los números de compás quitando el
@@ -17,7 +17,6 @@ grabador @code{Bar_number_engraver} del contexto de @code{Score}.
   doctitlees = "Suprimir los números de compás de toda la partitura"
 
 
-
 %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40
   texidocde = "
 Taktnummern können vollkommen aus den Noten entfernt werden, indem
@@ -28,7 +27,6 @@ entfernt.
   doctitlede = "Entfernung von Taktnummern in einer Partitur"
 
 
-
 %% Translation of GIT committish: 374d57cf9b68ddf32a95409ce08ba75816900f6b
   texidocfr = "
 Désactiver le graveur concerné --- @code{Bar_number_engraver} ---
index e3fc739e67483d88404d1a1d2982182e3d0782c5..88be85b962d066d017c27c883312c9fa2e320d32 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "rhythms, tweaks-and-overrides"
 
-%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7
+%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b
   texidoces = "
 De forma predeterminada, las líneas divisorias en los grupos
 StaffGroup, PianoStaff o GrandStaff se conectan entre los pentagramas.
index 81bdd74759fa4cf6fdd0815a43272649118639dc..6549a497dd34207392b6cf2f720bc81a18005d21 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "staff-notation, tweaks-and-overrides, breaks"
 
-%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7
+%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b
   texidoces = "
 El primer pentagrama vacío también se puede suprimir de la
 partitura estableciendo la propiedad @code{remove-first} de
@@ -23,7 +23,6 @@ escribe.
 "
   doctitlees = "Quitar la primera línea vacía"
 
-
 %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40
   texidocde = "
 Ein leeres Notensystem kann auch aus der ersten Zeile einer Partitur
@@ -39,7 +38,6 @@ gültig sind.
 
 "
   doctitlede = "Die erste leere Notenzeile auch entfernen"
-
 %% Translation of GIT committish: 4ab2514496ac3d88a9f3121a76f890c97cedcf4e
   texidocfr = "
 Par défaut, le premier système comportera absolument toutes les portées.
index df775861f4a2fad50fde04374c99faef58576807..1e50a53aa1d5f2f8abc5e7b3b552ccedd2a4bd81 100644 (file)
@@ -2,7 +2,7 @@
 % generated from Documentation/snippets/new
 % This file is in the public domain.
 %% Note: this file works from version 2.12.0
-\version "2.13.20"
+\version "2.13.29"
 \include "english.ly"
 #(set-global-staff-size 15)
 \paper {
index 676a863561b1187ccca15c2ffc69b1fe727c8b39..c9b276e8ff251c94da8b644a26cbf942fa9fc9bd 100644 (file)
@@ -7,6 +7,7 @@ percent-repeat-count-visibility.ly
 percent-repeat-counter.ly
 positioning-segno-and-coda-with-line-break.ly
 printing-a-repeat-sign-at-the-beginning-of-a-piece.ly
+setting-the-double-repeat-default-for-volte.ly
 shortening-volta-brackets.ly
 volta-below-chords.ly
 volta-multi-staff.ly
index 5b418b0c21bab65307c4b5e982ff79c7c20d4f27..ea536b0ac625d7ec3743d8e7217b090384ca3799 100644 (file)
@@ -6,12 +6,11 @@
 \header {
   lsrtags = "rhythms, ancient-notation, tweaks-and-overrides"
 
-%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7
+%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b
   doctitlees = "Estilos de silencios"
   texidoces = "
 Los silencios se pueden imprimir en distintos estilos.
 "
-
 %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40
 
   doctitlede = "Pausenstile"
@@ -20,7 +19,6 @@ Pausen können in verschiedenen Stilen dargestellt werden.
 "
 
 
-
 %% Translation of GIT committish: 4da4307e396243a5a3bc33a0c2753acac92cb685
   texidocfr = "
 Les silences peuvent être gravés selon différents styles.
index 893bc31a32ea748064f2357c012cffde263339a8..c0d974719f04fefc16f2d9558a10774b1ca1bbb6 100644 (file)
@@ -1,11 +1,11 @@
 % 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.4
-\version "2.13.20"
+%% Note: this file works from version 2.13.29
+\version "2.13.29"
 
 \header {
-%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7
+%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b
   texidoces = "
 Para tipografiar las barras agrupadas en la forma @code{3-4-3-2}
 en 12/8, en primer lugar tenemos que sobreescribir los finales de
@@ -39,9 +39,8 @@ défaut relatifs à 12/8, puis ajouter nos propres règles :
 
   lsrtags = "rhythms"
   texidoc = "
-To typeset beams grouped @code{3-4-3-2} in 12/8 it is no longer
-necessary first to override the default beam endings in 12/8,and
-then to set up the new beaming endings:
+To typeset beams grouped @code{3-4-3-2} one need only change the
+beat structure:
 "
   doctitle = "Reverting default beam endings"
 } % begin verbatim
@@ -54,7 +53,6 @@ then to set up the new beaming endings:
   a8 a a a a a a a a a a a
 
   % Set new values for beam endings
-  \overrideBeamSettings #'Score #'(12 . 8) #'end
-    #'((* . (3 4 3 2)))
+  \set Score.beatStructure = #'(3 4 3 2)
   a8 a a a a a a a a a a a
 }
index 8143a0a7c8a16f61ae44d1e4da0a3a71b7a67a9b..b703d9d0c496104bf4bd7942481e08e706d93fb8 100644 (file)
@@ -2,7 +2,7 @@
 % generated from Documentation/snippets/new
 % This file is in the public domain.
 %% Note: this file works from version 2.12.0
-\version "2.13.20"
+\version "2.13.29"
 \include "english.ly"
 #(set-global-staff-size 15)
 \paper {
index 3f6126f8b640c824b5bdafc7c07c0aa6fddcfe4a..d0c909cda624168eb033dec435f62276b482a587 100644 (file)
@@ -9,6 +9,7 @@ beam-grouping-in-7-8-time.ly
 beams-across-line-breaks.ly
 changing-beam-knee-gap.ly
 changing-form-of-multi-measure-rests.ly
+changing-the-number-of-augmentation-dots-per-note.ly
 changing-the-time-signature-without-affecting-the-beaming.ly
 changing-the-tuplet-number.ly
 changing-time-signatures-inside-a-polymetric-section-using--scaledurations.ly
@@ -16,7 +17,6 @@ chant-or-psalms-notation.ly
 compound-time-signatures.ly
 conducting-signs,-measure-grouping-signs.ly
 controlling-tuplet-bracket-visibility.ly
-dot-count-override.ly
 engraving-ties-manually.ly
 engraving-tremolos-with-floating-beams.ly
 entering-several-tuplets-using-only-one--times-command.ly
@@ -51,7 +51,7 @@ rhythmic-slashes.ly
 skips-in-lyric-mode-2.ly
 skips-in-lyric-mode.ly
 stemlets.ly
-sub-dividing-beams.ly
+subdividing-beams.ly
 three-sided-box.ly
 time-signature-printing-only-the-numerator-as-a-number-instead-of-the-fraction.ly
 tweaking-grace-layout-within-music.ly
diff --git a/Documentation/snippets/scheme-engraver-ambitus.ly b/Documentation/snippets/scheme-engraver-ambitus.ly
deleted file mode 100644 (file)
index 7dc8a6d..0000000
+++ /dev/null
@@ -1,341 +0,0 @@
-% 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.15
-\version "2.13.20"
-
-\header {
-%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7
-
-  texidoces = "
-Este ejemplo demuestra cómo se puede definir el grabador de ámbito en
-el espacio del usuario, con un grabador de Scheme.
-
-Esto es básicamente una reescritura en Scheme del código de
-@file{lily/ambitus-engraver.cc}.
-
-"
-
-  doctitlees = "Definir un grabador en Scheme: grabador de ámbito"
-
-
-  lsrtags = "contexts-and-engravers"
-
-
-  texidoc = "This example demonstrates how the ambitus engraver may be
-  defined on the user side, with a Scheme engraver.
-
-  This is basically a rewrite in Scheme of the code from
-  @file{lily/ambitus-engraver.cc}.
-"
-
-  doctitle = "Defining an engraver in Scheme: ambitus engraver"
-} % begin verbatim
-
-
-#(use-modules (oop goops))
-
-%%%
-%%% Grob utilities
-%%%
-%%% These are literal rewrites of some C++ methods used by the ambitus engraver.
-#(define (ly:event::in-event-class event class-name)
-   "Check if @var{event} the given class.
-Rewrite of @code{Stream_event::internal_in_event_class} from @file{lily/stream-event.cc}."
-   (memq class-name (ly:make-event-class (ly:event-property event 'class))))
-
-#(define (ly:separation-item::add-conditional-item grob grob-item)
-   "Add @var{grob-item} to the array of conditional elements of @var{grob}.
-Rewrite of @code{Separation_item::add_conditional_item} from @file{lily/separation-item.cc}."
-   (ly:pointer-group-interface::add-grob grob 'conditional-elements grob-item))
-
-#(define (ly:accidental-placement::accidental-pitch accidental-grob)
-   "Get the pitch from the grob cause of @var{accidental-grob}.
-Rewrite of @code{accidental_pitch} from @file{lily/accidental-placement.cc}."
-   (ly:event-property (ly:grob-property (ly:grob-parent accidental-grob Y) 'cause)
-                      'pitch))
-
-#(define (ly:accidental-placement::add-accidental grob accidental-grob)
-   "Add @var{accidental-grob}, an @code{Accidental} grob, to the
-list of the accidental grobs of @var{grob}, an @code{AccidentalPlacement}
-grob.
-Rewrite of @code{Accidental_placement::add_accidental} from @file{lily/accidental-placement.cc}."
-   (let ((pitch (ly:accidental-placement::accidental-pitch accidental-grob)))
-     (set! (ly:grob-parent accidental-grob X) grob)
-     (set! (ly:grob-property accidental-grob 'X-offset)
-           ly:grob::x-parent-positioning)
-     (let* ((accidentals (ly:grob-object grob 'accidental-grobs))
-            (handle (assq (ly:pitch-notename pitch) accidentals))
-            (entry (if handle (cdr handle) '())))
-       (set! (ly:grob-object grob 'accidental-grobs)
-             (assq-set! accidentals
-                        (ly:pitch-notename pitch)
-                        (cons accidental-grob entry))))))
-
-%%%
-%%% Ambitus data structure
-%%%
-
-%%% The <ambitus> class holds the various grobs that are created
-%%% to print an ambitus:
-%%% - ambitus-group: the grob that groups all the components of an ambitus
-%%% (Ambitus grob);
-%%% - ambitus-line: the vertical line between the upper and lower ambitus
-%%% notes (AmbitusLine grob);
-%%% - ambitus-up-note and ambitus-down-note: the note head and accidental
-%%% for the lower and upper note of the ambitus (see <ambitus-note> class
-%%% below).
-%%% The other slots define the key and clef context of the engraver:
-%%% - start-c0: position of middle c at the beginning of the piece.  It
-%%% is used to place the ambitus notes according to their pitch;
-%%% - start-key-sig: the key signature at the beginning of the piece.  It
-%%% is used to determine if accidentals shall be printed next to ambitus
-%%% notes.
-
-#(define-class <ambitus> ()
-   (ambitus-group #:accessor ambitus-group)
-   (ambitus-line #:accessor ambitus-line)
-   (ambitus-up-note #:getter ambitus-up-note
-                    #:init-form (make <ambitus-note>))
-   (ambitus-down-note #:getter ambitus-down-note
-                      #:init-form (make <ambitus-note>))
-   (start-c0 #:accessor ambitus-start-c0
-             #:init-value #f)
-   (start-key-sig #:accessor ambitus-start-key-sig
-                  #:init-value '()))
-
-%%% Accessor for the lower and upper note data of an ambitus
-#(define-method (ambitus-note (ambitus <ambitus>) direction)
-   "If @var{direction} is @code{UP}, then return the upper ambitus note
-of @var{ambitus}, otherwise return the lower ambitus note."
-   (if (= direction UP)
-       (ambitus-up-note ambitus)
-       (ambitus-down-note ambitus)))
-
-%%% The <ambitus-note> class holds the grobs that are specific to ambitus
-%%% (lower and upper) notes:
-%%% - head: an AmbitusNoteHead grob;
-%%% - accidental: an AmbitusAccidental grob, to be possibly printed next
-%%% to the ambitus note head.
-%%% Moreover:
-%%% - pitch is the absolute pitch of the note
-%%% - cause is the note event that causes this ambitus note, i.e. the lower
-%%% or upper note of the considered music sequence.
-
-#(define-class <ambitus-note> ()
-   (head #:accessor ambitus-note-head
-         #:init-value #f)
-   (accidental #:accessor ambitus-note-accidental
-               #:init-value #f)
-   (cause #:accessor ambitus-note-cause
-          #:init-value #f)
-   (pitch #:accessor ambitus-note-pitch
-          #:init-value #f))
-
-%%%
-%%% Ambitus engraving logics
-%%%
-%%% Rewrite of the code from @file{lily/ambitus-engraver.cc}.
-
-#(define (make-ambitus translator)
-   "Build an ambitus object: initialize all the grobs and their relations.
-
-The Ambitus grob contain all other grobs:
- Ambitus
-  |- AmbitusLine
-  |- AmbitusNoteHead   for upper note
-  |- AmbitusAccidental for upper note
-  |- AmbitusNoteHead   for lower note
-  |- AmbitusAccidental for lower note
-
-The parent of an accidental is the corresponding note head,
-and the accidental is set as the 'accidental-grob of the note head
-so that is printed by the function that prints notes."
-   ;; make the ambitus object
-   (let ((ambitus (make <ambitus>)))
-     ;; build the Ambitus grob, which will contain all other grobs
-     (set! (ambitus-group ambitus) (ly:engraver-make-grob translator 'Ambitus '()))
-     ;; build the AmbitusLine grob (line between lower and upper note)
-     (set! (ambitus-line ambitus) (ly:engraver-make-grob translator 'AmbitusLine '()))
-     ;; build the upper and lower AmbitusNoteHead and AmbitusAccidental
-     (for-each (lambda (direction)
-                 (let ((head (ly:engraver-make-grob translator 'AmbitusNoteHead '()))
-                       (accidental (ly:engraver-make-grob translator 'AmbitusAccidental '()))
-                       (group (ambitus-group ambitus)))
-                   ;; The parent of the AmbitusAccidental grob is the
-                   ;; AmbitusNoteHead grob
-                   (set! (ly:grob-parent accidental Y) head)
-                   ;; The AmbitusAccidental grob is set as the accidental-grob
-                   ;; object of the AmbitusNoteHead.  This is later used by the
-                   ;; function that prints notes.
-                   (set! (ly:grob-object head 'accidental-grob) accidental)
-                   ;; both the note head and the accidental grobs are added
-                   ;; to the main ambitus grob.
-                   (ly:axis-group-interface::add-element group head)
-                   (ly:axis-group-interface::add-element group accidental)
-                   ;; the note head and the accidental grobs are added to the
-                   ;; ambitus object
-                   (set! (ambitus-note-head (ambitus-note ambitus direction))
-                         head)
-                   (set! (ambitus-note-accidental (ambitus-note ambitus direction))
-                         accidental)))
-               (list DOWN UP))
-     ;; The parent of the ambitus line is the lower ambitus note head
-     (set! (ly:grob-parent (ambitus-line ambitus) X)
-           (ambitus-note-head (ambitus-note ambitus DOWN)))
-     ;; the ambitus line is added to the ambitus main grob
-     (ly:axis-group-interface::add-element (ambitus-group ambitus) (ambitus-line ambitus))
-     ambitus))
-
-#(define-method (initialize-ambitus-state (ambitus <ambitus>) translator)
-   "Initialize the state of @var{ambitus}, by getting the starting
-position of middle C and key signature from @var{translator}'s context."
-   (if (not (ambitus-start-c0 ambitus))
-       (begin
-         (set! (ambitus-start-c0 ambitus)
-               (ly:context-property (ly:translator-context translator)
-                                    'middleCPosition
-                                    0))
-         (set! (ambitus-start-key-sig ambitus)
-               (ly:context-property (ly:translator-context translator)
-                                    'keySignature)))))
-
-#(define-method (update-ambitus-notes (ambitus <ambitus>) note-grob)
-   "Update the upper and lower ambitus pithes of @var{ambitus}, using
-@var{note-grob}."
-   ;; Get the event that caused the note-grob creation
-   ;; and check that it is a note-event.
-   (let ((note-event (ly:grob-property note-grob 'cause)))
-     (if (ly:event::in-event-class note-event 'note-event)
-         ;; get the pitch from the note event
-         (let ((pitch (ly:event-property note-event 'pitch)))
-           ;; if this pitch is lower than the current ambitus lower
-           ;; note pitch (or it has not been initialized yet),
-           ;; then this pitch is the new ambitus lower pitch,
-           ;; and conversely for upper pitch.
-           (for-each (lambda (direction pitch-compare)
-                       (if (or (not (ambitus-note-pitch (ambitus-note ambitus direction)))
-                               (pitch-compare pitch
-                                              (ambitus-note-pitch (ambitus-note ambitus direction))))
-                           (begin
-                             (set! (ambitus-note-pitch (ambitus-note ambitus direction))
-                                   pitch)
-                             (set! (ambitus-note-cause (ambitus-note ambitus direction))
-                                   note-event))))
-                     (list DOWN UP)
-                     (list ly:pitch<? (lambda (p1 p2)
-                                        (ly:pitch<? p2 p1))))))))
-
-#(define-method (typeset-ambitus (ambitus <ambitus>) translator)
-   "Typeset the ambitus:
-- place the lower and upper ambitus notes according to their pitch and
-  the position of the middle C;
-- typeset or delete the note accidentals, according to the key signature.
-  An accidental, if it is to be printed, is added to an AccidentalPlacement
-  grob (a grob dedicated to the placement of accidentals near a chord);
-- both note heads are added to the ambitus line grob, so that a line should
-  be printed between them."
-   ;; check if there are lower and upper pitches
-   (if (and (ambitus-note-pitch (ambitus-note ambitus UP))
-            (ambitus-note-pitch (ambitus-note ambitus DOWN)))
-       ;; make an AccidentalPlacement grob, for placement of note accidentals
-       (let ((accidental-placement (ly:engraver-make-grob
-                                    translator
-                                    'AccidentalPlacement
-                                    (ambitus-note-accidental (ambitus-note ambitus DOWN)))))
-         ;; For lower and upper ambitus notes:
-         (for-each (lambda (direction)
-                     (let ((pitch (ambitus-note-pitch (ambitus-note ambitus direction))))
-                       ;; set the cause and the staff position of the ambitus note
-                       ;; according to the associated pitch
-                       (set! (ly:grob-property (ambitus-note-head (ambitus-note ambitus direction))
-                                               'cause)
-                             (ambitus-note-cause (ambitus-note ambitus direction)))
-                       (set! (ly:grob-property (ambitus-note-head (ambitus-note ambitus direction))
-                                               'staff-position)
-                             (+ (ambitus-start-c0 ambitus)
-                                (ly:pitch-steps pitch)))
-                       ;; determine if an accidental shall be printed for this note,
-                       ;; according to the key signature
-                       (let* ((handle (or (assoc (cons (ly:pitch-octave pitch)
-                                                       (ly:pitch-notename pitch))
-                                                 (ambitus-start-key-sig ambitus))
-                                          (assoc (ly:pitch-notename pitch)
-                                                 (ambitus-start-key-sig ambitus))))
-                              (sig-alter (if handle (cdr handle) 0)))
-                         (cond ((= (ly:pitch-alteration pitch) sig-alter)
-                                ;; the note alteration is in the key signature
-                                ;; => it does not have to be printed
-                                (ly:grob-suicide!
-                                 (ambitus-note-accidental (ambitus-note ambitus direction)))
-                                (set! (ly:grob-object (ambitus-note-head (ambitus-note ambitus direction))
-                                                      'accidental-grob)
-                                      '()))
-                               (else
-                                ;; otherwise, the accidental shall be printed
-                                (set! (ly:grob-property (ambitus-note-accidental
-                                                         (ambitus-note ambitus direction))
-                                                        'alteration)
-                                      (ly:pitch-alteration pitch)))))
-                       ;; add the AccidentalPlacement grob to the
-                       ;; conditional items of the AmbitusNoteHead
-                       (ly:separation-item::add-conditional-item
-                        (ambitus-note-head (ambitus-note ambitus direction))
-                        accidental-placement)
-                       ;; add the AmbitusAccidental to the list of the
-                       ;; AccidentalPlacement grob accidentals
-                       (ly:accidental-placement::add-accidental
-                        accidental-placement
-                        (ambitus-note-accidental (ambitus-note ambitus direction)))
-                       ;; add the AmbitusNoteHead grob to the AmbitusLine grob
-                       (ly:pointer-group-interface::add-grob
-                        (ambitus-line ambitus)
-                        'note-heads
-                        (ambitus-note-head (ambitus-note ambitus direction)))))
-                   (list DOWN UP))
-         ;; add the AccidentalPlacement grob to the main Ambitus grob
-         (ly:axis-group-interface::add-element (ambitus-group ambitus) accidental-placement))
-       ;; no notes ==> suicide the grobs
-       (begin
-         (for-each (lambda (direction)
-                     (ly:grob-suicide! (ambitus-note-accidental (ambitus-note ambitus direction)))
-                     (ly:grob-suicide! (ambitus-note-head (ambitus-note ambitus direction))))
-                   (list DOWN UP))
-         (ly:grob-suicide! ambitus-line))))
-
-%%%
-%%% Ambitus engraver definition
-%%%
-#(define ambitus-engraver
-   (lambda (context)
-     (let ((ambitus #f))
-       ;; when music is processed: make the ambitus object, if not already built
-       `((process-music . ,(lambda (translator)
-                             (if (not ambitus)
-                                 (set! ambitus (make-ambitus translator)))))
-         ;; set the ambitus clef and key signature state
-         (stop-translation-timestep . ,(lambda (translator)
-                                         (if ambitus
-                                             (initialize-ambitus-state ambitus translator))))
-         ;; when a note-head grob is built, update the ambitus notes
-         (acknowledgers
-          (note-head-interface . ,(lambda (engraver grob source-engraver)
-                                    (if ambitus
-                                        (update-ambitus-notes ambitus grob)))))
-         ;; finally, typeset the ambitus according to its upper and lower notes
-         ;; (if any).
-         (finalize . ,(lambda (translator)
-                        (if ambitus
-                            (typeset-ambitus ambitus translator))))))))
-
-%%%
-%%% Example
-%%%
-
-\score {
-  \new StaffGroup <<
-    \new Staff { c'4 des' e' fis' gis' }
-    \new Staff { \clef "bass" c4 des ~ des ees b, }
-  >>
-  \layout { \context { \Staff \consists #ambitus-engraver } }
-}
index abd924112d4812a9df81cc53df6320c54fe1b420..33fb3e1fea928df9e5bc3e1c5241841123813c1c 100644 (file)
@@ -2,7 +2,7 @@
 % generated from Documentation/snippets/new
 % This file is in the public domain.
 %% Note: this file works from version 2.12.0
-\version "2.13.20"
+\version "2.13.29"
 \header {
   lsrtags = "headwords"
   texidoc = "Random complex notation"
index 0ffa430415502cf939a94b784e646337d72eaf1c..257f26221b6cd6cee6686cd466fe4c6d995d38ff 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "expressive-marks, tweaks-and-overrides"
 
-%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7
+%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b
   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
@@ -16,7 +16,6 @@ sobreescribiendo la propiedad @code{'to-barline}.
 "
   doctitlees = "Establecer el comportamiento de los reguladores en las barras de compás"
 
-
 %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40
 texidocde = "
 Wenn die Note, an welcher eine Crescendo-Klammer endet, die erste Note
@@ -25,7 +24,6 @@ beendet.  Dieses Verhalten kann auch mit der Eigenschaft
 @code{'to-barline} geändert werden:
 "
   doctitlede = "Das Verhalten von Crescendo-Klammern an Taktlinien beeinflussen"
-
 %% Translation of GIT committish: 217cd2b9de6e783f2a5c8a42be9c70a82195ad20
   texidocfr = "
 En principe, un soufflet -- (de)crescendo imprimé sous forme graphique --
index 8dd76f23929f98b7a67c2b1fc2fd493489204f8a..fa631e4551408891749ca35c9b610bedeb210673 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "tweaks-and-overrides, paper-and-layout"
 
-%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7
+%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b
   texidoces = "
 Se pueden insertar separadores sistema entre los sistemas de una
 página.  Se puede usar cualquier elemento de marcado, pero
diff --git a/Documentation/snippets/setting-the-double-repeat-default-for-volte.ly b/Documentation/snippets/setting-the-double-repeat-default-for-volte.ly
new file mode 100644 (file)
index 0000000..e36d5f9
--- /dev/null
@@ -0,0 +1,24 @@
+% 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.26
+\version "2.13.29"
+\header {
+  lsrtags = "repeats"
+  texidoc = "There are three different styles of double repeats for
+volte, that can be set using @code{doubleRepeatType}."
+
+  doctitle = "Setting the double repeat default for volte"
+} % begin verbatim
+
+
+
+\relative c'' {
+  \repeat volta 1 { c1 }
+  \set Score.doubleRepeatType = #":|:"
+  \repeat volta 1 { c1 }
+  \set Score.doubleRepeatType = #":|.|:"
+  \repeat volta 1 { c1 }
+  \set Score.doubleRepeatType = #":|.:"
+  \repeat volta 1 { c1 }
+}
index b0749a8056e3f5451a24b7cf424f823388f0afa6..bc5b21d9e76fefdb132c6bb441ff0a5e24ff3f18 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "expressive-marks"
 
-%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7
+%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b
   texidoces = "
 Si los reguladores son demasiado cortos, se pueden alargar
 modificando la propiedad @code{minimum-length} del objeto
@@ -15,7 +15,6 @@ modificando la propiedad @code{minimum-length} del objeto
 "
   doctitlees = "Ajustar la longitud mínima de los reguladores"
 
-
 %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40
 texidocde = "
 Wenn Crescendo-Klammern zu kurz sind, können sie verlängert werden, indem
@@ -24,7 +23,6 @@ verändert wird.
 
 "
   doctitlede = "Die Mindestlänge von Crescendo-Klammern bestimmen"
-
 %% Translation of GIT committish: 4ab2514496ac3d88a9f3121a76f890c97cedcf4e
   texidocfr = "
 Si un soufflet est trop court, il suffit d'ajuster la propriété
index 770907d2c539f803dbf1af679256efd9197bc15c..0d0381083ca2a1002aa2748d6d9a2bd60c3633fc 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "repeats"
 
-%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7
+%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b
   texidoces = "
 De forma predeterminada, los corchetes de primera y segunda vez se
 trazan encima de los finales alternativos completos, pero es posible
@@ -17,7 +17,6 @@ sólo dura un compás, que corresponde a una duración de 3/4.
 "
   doctitlees = "Shortening volta brackets"
 
-
 %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40
   texidocde = "
 Volta-Klammern werden normalerweise über alle Noten der Klammer gezogen, aber
@@ -27,7 +26,6 @@ es ist möglich sie zu verkürzen.  Hierzu muss
 
 "
   doctitlede = "Volta-Klammern verkürzen"
-
 %% Translation of GIT committish: a5bde6d51a5c88e952d95ae36c61a5efc22ba441
   texidocfr = "
 Les crochets indiquant les fins alternatives s'étalent tout au long ce
index efd8090293be5bd169c6e94a4580c3d00cb58e61..1b0bbded8bacd16feac2f1fea17a0105b26bae6d 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "chords"
 
-%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7
+%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b
   texidoces = "
 Se pueden imprimir los acordes exclusivamente al comienzo de las
 líneas y cuando cambia el acorde.
@@ -14,7 +14,6 @@ líneas y cuando cambia el acorde.
 "
   doctitlees = "Imprimir los acordes cuando se produce un cambio"
 
-
 %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40
   texidocde = "
 Akkordsymbole können so eingestellt werden, dass sie nur zu Beginn der Zeile
index 92968bb9d6f257c9f97762933a1845272f324b96..370cd3b3c14b1d5626e2f94c18b66f518e0d3460 100644 (file)
@@ -1,30 +1,25 @@
-%% 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.13.20"
+% 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.27
+\version "2.13.29"
 
 \header {
   lsrtags = "expressive-marks, tweaks-and-overrides"
 
   texidoc = "
-By default, LilyPond does not allow the same articulation (e.g. an
+By default, LilyPond does not allow the same articulation (e.g., an
 accent, a fermata, a flageolet, etc.) to be displayed above and below a
-note. For example, c4_\\fermata^\\fermata will only show a fermata
-below. The fermata above will simply be ignored. However, one can stick
+note.  For example, @code{c4_\\fermata^\\fermata} will only show a fermata
+below, ignoring the fermata above.  However, one can stick
 scripts (just like fingerings) inside a chord, which means it is
-possible to have as many articulations as desired. This approach has
-the advantage that it ignores the stem and positions the articulation
-relative to the note head. This can be seen in the case of the
-flageolets in the snippet. To mimic the behaviour of scripts outside a
-chord, 'add-stem-support would be required. So, the solution is to
-write the note as a chord and add the articulations inside the <...>.
-The direction will always be above, but one can tweak this via a
-\\tweak: @code{<c-\\tweak #'direction #DOWN-\\fermata^\\fermata>}
-
+possible to have as many articulations as desired.  So, the solution is to
+write the note as a chord and add the articulations inside the @code{<@dots{}>}.
 "
   doctitle = "Showing the same articulation above and below a note or chord"
 } % begin verbatim
 
+
 % The same as \flageolet, just a little smaller
 smallFlageolet =
 #(let ((m (make-articulation "flageolet")))
@@ -34,17 +29,13 @@ smallFlageolet =
    m)
 
 \relative c' {
-  s4^"wrong:"
-  c_\fermata^\fermata % The second fermata is ignored!
-  <e d'>^\smallFlageolet_\smallFlageolet
+  s4^"Wrong:"
+  c4_\fermata^\fermata % The second fermata is ignored!
+  <e d'>4^\smallFlageolet_\smallFlageolet
 
-  % it works only if you wrap the note inside a chord. By default,
-  % all articulations will be printed above, so you have to tweak
-  % the direction.
   s4^"Works if written inside a chord:"
-  <e-\tweak #'direction #DOWN -\smallFlageolet d'^\smallFlageolet>
-  <e-\tweak #'direction #DOWN -\flageolet d'^\flageolet>
-  <e-\tweak #'direction #DOWN -\smallFlageolet^\smallFlageolet>
-  <e-\tweak #'direction #DOWN -\fermata^\fermata>
+  <e_\smallFlageolet d'^\smallFlageolet>4
+  <e_\flageolet d'^\flageolet>4
+  <e_\smallFlageolet^\smallFlageolet>4
+  <e_\fermata^\fermata>4
 }
-
index 46fa36cbdf909919ab43a4f3e796542d3e2231e0..0b91faed66e35eafd3bfcb9a7f36a1c5811f1d74 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "chords"
 
-%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7
+%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b
   texidoces = "
 Al juntar nombres de acorde en cifrado americano, melodía y letra,
 obtenemos una hoja guía de acordes o «lead sheet»:
@@ -14,14 +14,12 @@ obtenemos una hoja guía de acordes o «lead sheet»:
 "
   doctitlees = "Hoja guía de acordes o «lead sheet» sencilla"
 
-
 %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40
  texidocde = "
 Ein Liedblatt besteht aus Akkordbezeichnungen, einer Melodie und dem Liedtext:
 
 "
   doctitlede = "Ein einfaches Liedblatt"
-
 %% Translation of GIT committish: 9594a4569164407a146bbc4aad8be3a60a4725cf
   texidocfr = "
 Assembler des noms d'accords, une mélodie et des paroles permet
index d949d381b0ac5418b7b8ea53c0414dca89d2e93f..cf5460e6dc01e1cacc50ec37815d9d6b0ba1eabd 100644 (file)
@@ -2,7 +2,7 @@
 % generated from Documentation/snippets/new
 % This file is in the public domain.
 %% Note: this file works from version 2.12.0
-\version "2.13.20"
+\version "2.13.29"
 \include "english.ly"
 #(set-global-staff-size 15)
 \paper {
index 64f86d4af3ad125805cdd7269a41189f29ca1191..3c4676b2a46596a5166ed701a9bf115fac6ce41c 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "vocal-music, chords, template"
 
-%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7
+%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b
   texidoces = "
 Esta plantilla facilita la preparación de una canción con melodía,
 letra y acordes.
@@ -14,12 +14,10 @@ letra y acordes.
 "
   doctitlees = "Plantilla de pentagrama único con música letra y acordes"
 
-
 %% Translation of GIT committish: fa1aa6efe68346f465cfdb9565ffe35083797b86
   texidocja = "
 これは旋律、単語、コードを持つ歌曲の楽譜のためのテンプレートです。
 "
-
 %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40
   texidocde = "
 Mit diesem Beispiel können Sie einen Song mit Melodie,
@@ -28,7 +26,6 @@ Text und Akkorden schreiben.
 
   doctitlede = "Vorlage für eine Notenzeile mit Noten Text und Akkorden"
 
-
 %% Translation of GIT committish: ceb0afe7d4d0bdb3d17b9d0bff7936bb2a424d16
   texidocfr = "
 Ce cannevas comporte tous les éléments d'une chanson : la mélodie,
index d7145f90937e374bdb75b6c71374de60b31e5229..64ea30ba02b81a04eaacfb76c9eaf0774103574f 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "vocal-music, chords, template"
 
-%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7
+%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b
   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 27eb97c1b10defcbee7e69670333925173f2546b..476d07bd3dc6dbff8dd2103d689bd3c3c0d78ba6 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "chords, template"
 
-%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7
+%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b
   texidoces = "
 ¿Quiere preparar una hoja guía de acordes (o «lead sheet») con
 melodía y acordes?  ¡No busque más!
@@ -15,12 +15,10 @@ melodía y acordes?  ¡No busque más!
 
 doctitlees = "Plantilla de pentagrama único con música y acordes"
 
-
 %% Translation of GIT committish: fa1aa6efe68346f465cfdb9565ffe35083797b86
   texidocja = "
 旋律とコードを持つリード譜を欲しくはありませんか?他を見る必要はありません!
 "
-
 %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40
   texidocde = "
 Wollen Sie ein Liedblatt mit Melodie und Akkorden schreiben?  Hier ist
@@ -29,7 +27,6 @@ das richtige Beispiel für Sie!
 
   doctitlede = "Vorlage für eine Notenzeile mit Akkorden"
 
-
 %% Translation of GIT committish: ceb0afe7d4d0bdb3d17b9d0bff7936bb2a424d16
   texidocfr = "
 Vous avez besoin de la partition d'une mélodie avec les accords ?
index 1bff5fe33b45604d431ca1dcb0c461ad26b88021..55517b3b0c9bf5796fef4f1f03e45fe0b337b716 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "vocal-music, template"
 
-%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7
+%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b
   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
@@ -17,7 +17,6 @@ comentario la línea correspondiente.
 "
   doctitlees = "Plantilla de pentagrama único don notas y letra"
 
-
 %% Translation of GIT committish: fa1aa6efe68346f465cfdb9565ffe35083797b86
   texidocja = "
 この小さなテンプレートは歌詞を持つ簡単な旋律を表しています。カット&ペーストして、音符@c
@@ -26,7 +25,6 @@ comentario la línea correspondiente.
 行を変更するか、コメント アウトしてください。
 "
 
-
 %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40
   texidocde = "
 Das nächste Beispiel zeigt eine einfache Melodie mit Text. Kopieren
@@ -40,7 +38,6 @@ entsprechende Zeile entweder ändern oder auskommentieren.
 
   doctitlede = "Vorlage für ein Notensystem mit Noten und Gesangstext"
 
-
 %% Translation of GIT committish: bdfe3dc8175a2d7e9ea0800b5b04cfb68fe58a7a
 
   texidocfr = "
index 96b9d504f50026f0aa3cc4c4397ad26cca6585b2..45c97ea66ec76770798e34730d029d816ca343d3 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "template"
 
-%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7
+%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b
   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
@@ -15,14 +15,12 @@ un archivo, escriba las notas y ¡ya está!
 "
   doctitlees = "Plantilla de un solo pentagrama con notas únicamente"
 
-
 %% Translation of GIT committish: fa1aa6efe68346f465cfdb9565ffe35083797b86
   texidocja = "
 これは音符を持つ譜表を提供するとても簡単なテンプレートであり、ソロの楽器や旋律に適しています。@c
 これをファイルにカット&ペーストして、音符を付け加えれば完了です!
 "
 
-
 %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40
   texidocde = "
 Das erste Beispiel zeigt ein Notensystem mit Noten, passend für ein
@@ -33,7 +31,6 @@ eine vollständige Notationsdatei.
 
   doctitlede = "Vorlage für ein Notensystem"
 
-
 %% Translation of GIT committish: bdfe3dc8175a2d7e9ea0800b5b04cfb68fe58a7a
   texidocfr = "
 Cet exemple simpliste se compose d'une portée agrémentée de quelques
index 77d389dd25cfe3d5380cb929f42343f01c038aeb..b7adc7ae2cb1903ca68c8b29e9142273a438a8c9 100644 (file)
@@ -2,10 +2,10 @@
 % generated from Documentation/snippets/new
 % This file is in the public domain.
 %% Note: this file works from version 2.13.4
-\version "2.13.20"
+\version "2.13.29"
 
 \header {
-%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7
+%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b
   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 5bd81fb866ca29fd1a87fb04512d5d8ec54bdd51..230c7532ce2fac46ce40d2cdce789d248c9cf0d7 100644 (file)
@@ -2,7 +2,7 @@
 % generated from Documentation/snippets/new
 % This file is in the public domain.
 %% Note: this file works from version 2.12.0
-\version "2.13.20"
+\version "2.13.29"
 \include "catalan.ly"
 #(set-global-staff-size 15)
 \paper{
index 9e9c2c3168dd56223ebece2039ceb618347ba939..0ceec8199e23e8d49eda076baf2708f504cce0ae 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "text"
 
-%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7
+%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b
   texidoces = "
 Los textos independientes se pueden disponer en varias columnas
 utilizando instrucciones @code{\\markup}:
@@ -14,7 +14,6 @@ utilizando instrucciones @code{\\markup}:
 "
   doctitlees = "Elemento de marcado de texto independiente en dos columnas"
 
-
 %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40
   texidocde = "
 Isolierter Text kann in mehreren Spalten mit @code{\\markup}-Befehlen
@@ -22,7 +21,6 @@ angeordnet werden:
 
 "
   doctitlede = "Isolierter Text in zwei Spalten"
-
 %% Translation of GIT committish: 548ef200973bd3d46ea75c5498461d9e5f168334
   texidocfr = "
 L'utilisation de la commande @code{\\markup} permet de distribuer un bloc
index e18c687096b37aa3cbbe57c4a1b165616cca3642..6bbd767ad3a0c21218c88e2d7740814a21289b68 100644 (file)
@@ -2,10 +2,10 @@
 % generated from Documentation/snippets/new
 % This file is in the public domain.
 %% Note: this file works from version 2.13.4
-\version "2.13.20"
+\version "2.13.29"
 
 \header {
-%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7
+%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b
   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 b562a62b1445a60cf5c746fc253dd2eac4483058..fce55cc68d24439d1cff4fa30e3cde4736f5d97b 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "unfretted-strings, template"
 
-%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7
+%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b
   texidoces = "
 Esta plantilla muestra un cuarteto de cuerda normal. También utiliza
 una sección @code{\\global} para el compás y la armadura
@@ -14,13 +14,11 @@ una sección @code{\\global} para el compás y la armadura
 "
   doctitlees = "Plantilla de cuarteto de cuerda (sencilla)"
 
-
 %% Translation of GIT committish: fa1aa6efe68346f465cfdb9565ffe35083797b86
   texidocja = "
 これは簡単な弦楽四重奏のためのテンプレートです。これは拍子記号と調号のために
 @code{@bs{}global} セクションを使っています。
 "
-
 %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40
   texidocde = "
 Dieses Beispiel demonstriert die Partitur für ein Streichquartett. Hier
@@ -30,7 +28,6 @@ Vorzeichen benutzt.
 
   doctitlede = "Vorlage für Streichquartett (einfach)"
 
-
 %% Translation of GIT committish: bdfe3dc8175a2d7e9ea0800b5b04cfb68fe58a7a
   texidocfr = "
 Voici un canevas pour quatuor à cordes.  Notez l'utilisation de la
index 9394a7cacf7991265e9aa84ea6647e96a69a88d6..16c941bc75c28a149d8deb9ac14c9b813324c515 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "unfretted-strings, template"
 
-%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7
+%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b
   texidoces = "
 El fragmento de código @qq{Plantilla de cuarteto de cuerda} produce un
 resultado satisfactorio para el cuarteto, pero ¿y si tenemos que
@@ -27,7 +27,6 @@ los archivos independientes!
 "
   doctitlees = "Plantilla de cuarteto de cuerda con particellas independientes"
 
-
 %% Translation of GIT committish: fa1aa6efe68346f465cfdb9565ffe35083797b86
   texidocja = "
 \"弦楽四重奏テンプレート\" は適切な弦楽四重奏の楽譜を作り出しますが、個々の@c
@@ -42,7 +41,6 @@ los archivos independientes!
 
 別々のファイルに分ける場合は、指定されたコメントを外すことを忘れないでください!
 "
-
 %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40
   texidocde = "
 Mit diesem Beispiel können Sie ein schönes Streichquartett notieren,
@@ -62,7 +60,6 @@ zugewiesen, auf den zurückgegriffen werden kann.
 
   doctitlede = "Vorlage für Streichquartett mit einzelnen Stimmen"
 
-
 %% Translation of GIT committish: bdfe3dc8175a2d7e9ea0800b5b04cfb68fe58a7a
   texidocfr = "
 Grâce à ce canevas, vous pouvez obtenir une partition d'excellente
diff --git a/Documentation/snippets/sub-dividing-beams.ly b/Documentation/snippets/sub-dividing-beams.ly
deleted file mode 100644 (file)
index 091e32a..0000000
+++ /dev/null
@@ -1,94 +0,0 @@
-%% 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.13.20"
-
-\header {
-  lsrtags = "rhythms"
-
-%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7
-  texidoces = "
-Las barras de semicorcheas (o notas más breves) seguidas no se
-subdividen de forma predeterminada.  Esto es: las tres (o más)
-barras se prolongan, sin dividirse, sobre grupos completos de
-notas.  Este comportamiento se puede modificar para que las barras
-se subdividan en subgrupos mediante el establecimiento de la
-propiedad @code{subdivideBeams}.  Cuando está establecida, las
-diversas barras se subdividen a intervalos definidos por el valor
-actual de la longitud del pulso @code{beatLength} reduciendo las
-barras múltiples a una sola entre los subgrupos.  Observe que el
-valor predeterminado de @code{beatLength} es de una unidad sobre
-el denominador del compás en curso, si no está establecido
-explícitamente.  Se debe establecer al valor de una fracción que
-da la duración el subgrupo de barras utilizando la función
-@code{ly:make-moment}, como se muestra aquí:
-
-"
-  doctitlees = "Subdivisión de las barras de semicorchea"
-
-
-%% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40
-  texidocde = "
-Die Balken von aufeinanderfolgenden Sechszehnteln (oder kürzeren Notenwerten)
-werden standardmäßig nicht unterteilt.  Dieses Verhalten kann verändert
-werden, sodass die Balken in Untergruppen aufgeteilt werden, indem man
-die Eigenschaft @code{subdivideBeams} verändert.  Man muss die Unterteilungsintervalle
-als Notenbruch mit der @code{make-moment}-Funktion für @code{beatLength} angeben,
-damit die Balken unterbrochen wird und nur ein Balken durchgezogen bleibt.  Der
-Standardwert für @code{beatLength} ist 1 / Zähler des aktuellen Taktes.
-
-"
-  doctitlede = "Balken in Untergruppen teilen"
-
-
-
-%% Translation of GIT committish: 708e0d9c660856b19929736ca18a6f9d68539c60
-  texidocfr = "
-Les ligatures d'une succession de notes de durée inférieure à la croche
-ne sont pas subdivisées par défaut.  Autrement dit, tous les traits de
-ligature seront continus.  Ce comportement peut être modifié afin de
-diviser la ligature en sous-groupes grâce à la propriété
-@code{subdivideBeams}.  Lorsqu'elle est activée, les ligatures seront
-subdivisées selon un intervalle défini par @code{beatLength} ; il n'y
-aura alors plus qu'un seul trait de ligature entre chaque sous-groupe.
-Par défaut, @code{beatLength} fixe la valeur de référence à une noire.
-Il faudra donc lui fournir, à l'aide de la fonction @code{make-moment},
-une fraction correspondant au sous-groupe désiré, comme dans l'exemple
-suivant.
-
-"
-  doctitlefr = "Subdivision des ligatures"
-
-  texidoc = "
-The beams of consecutive 16th (or shorter) notes are, by default, not
-sub-divided.  That is, the three (or more) beams stretch unbroken over
-entire groups of notes.  This behavior can be modified to sub-divide
-the beams into sub-groups by setting the property
-@code{subdivideBeams}. When set, multiple beams will be sub-divided at
-intervals defined by the current value of @code{beatLength} by reducing
-the multiple beams to just one beam between the sub-groups. Note that
-@code{beatLength} defaults to one over the denominator of the current
-time signature if not set explicitly. It must be set to a fraction
-giving the duration of the beam sub-group using the
-@code{ly:make-moment} function, as shown here:
-
-
-
-"
-  doctitle = "Sub-dividing beams"
-} % begin verbatim
-
-\relative c'' {
-  c32[ c c c c c c c]
-  \set subdivideBeams = ##t
-  c32[ c c c c c c c]
-
-  % Set beam sub-group length to an eighth note
-  \set beatLength = #(ly:make-moment 1 8)
-  c32[ c c c c c c c]
-
-  % Set beam sub-group length to a sixteenth note
-  \set beatLength = #(ly:make-moment 1 16)
-  c32[ c c c c c c c]
-}
-
diff --git a/Documentation/snippets/subdividing-beams.ly b/Documentation/snippets/subdividing-beams.ly
new file mode 100644 (file)
index 0000000..39b4f69
--- /dev/null
@@ -0,0 +1,45 @@
+% 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.29
+\version "2.13.29"
+
+\header {
+  lsrtags = "rhythms"
+
+  texidoc = "
+The beams of consecutive 16th (or shorter) notes are, by default, not
+subdivided.  That is, the three (or more) beams stretch unbroken over
+entire groups of notes.  This behavior can be modified to subdivide
+the beams into sub-groups by setting the property
+@code{subdivideBeams}. When set, multiple beams will be subdivided at
+intervals defined by the current value of @code{baseMoment} by reducing
+the multiple beams to just one beam between the sub-groups. Note that
+@code{baseMoment} defaults to one over the denominator of the current
+time signature if not set explicitly. It must be set to a fraction
+giving the duration of the beam sub-group using the
+@code{ly:make-moment} function, as shown in this snippet. Also, when
+@code{baseMoment} is changed, @code{beatStructure} should also be changed
+to match the new @code{baseMoment}:
+
+"
+  doctitle = "Subdividing beams"
+} % begin verbatim
+
+
+\relative c'' {
+  c32[ c c c c c c c]
+  \set subdivideBeams = ##t
+  c32[ c c c c c c c]
+
+  % Set beam sub-group length to an eighth note
+  \set baseMoment = #(ly:make-moment 1 8)
+  \set beatStructure = #'(2 2 2 2)
+  c32[ c c c c c c c]
+
+  % Set beam sub-group length to a sixteenth note
+  \set baseMoment = #(ly:make-moment 1 16)
+  \set beatStructure = #'(4 4 4 4)
+  c32[ c c c c c c c]
+}
+
index b2d4eeeadc5552b8b5531e9a257f3b5372481f3d..45e4c64b7b4773eeb438a2ae69b9ff2b5ae807ce 100644 (file)
@@ -2,7 +2,7 @@
 % generated from Documentation/snippets/new
 % This file is in the public domain.
 %% Note: this file works from version 2.12.0
-\version "2.13.20"
+\version "2.13.29"
 \include "english.ly"
 #(set-global-staff-size 15)
 \paper {
index 01a1caea4d3d6baf78c7a250ebe4166c9e651447..6377e4fa34ac569fd8789ebcc6e9476b9eb37e6d 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "ancient-notation, tweaks-and-overrides"
 
-%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7
+%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b
   texidoces = "
 A modo de alternativa para obtener auténticos «incipit»
 independientes de la partitura principal, se incluyen como
index 19f41cd824c91b46a089b1578b99e9553b2eb627..651c96ccaff4d5749e72ea3ca6d0c60a99dd75e0 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "pitches"
 
-%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7
+%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b
 doctitlees = "Transportar música con el menor número de alteraciones"
 texidoces = "
 Este ejemplo utiliza código de Scheme para forzar las
@@ -37,7 +37,6 @@ naturales.
 
 "
 
-
 %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40
   doctitlede = "Noten mit minimaler Anzahl an Versetzungszeichen transponieren."
   texidocde = "Dieses Beispiel benutzt Scheme-Code, um enharmonische
@@ -67,7 +66,6 @@ Auf diese Art werden am meisten natürliche Tonhöhen als enharmonische
 Variante gewählt.
 "
 
-
 %% Translation of GIT committish: 4ab2514496ac3d88a9f3121a76f890c97cedcf4e
   texidocfr = "
 Cet exemple, grâce à un peu de code Scheme, donne la priorité aux
index 8784a1919e822e70df62fe4e324ae41c0c776c63..4399f37070a9c97e0022b56a5d1c7b7d1601f836 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "pitches, staff-notation, tweaks-and-overrides"
 
-%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7
+%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b
   doctitlees = "Trucaje de las propiedades de clave"
   texidoces = "
 La instrucción @code{\\clef \"treble_8\"} equivale a un ajuste de
@@ -41,7 +41,6 @@ cambios manuales preservan el posicionamiento relativo estándar de
 las claves y las notas, pero no lo hacen en la segunda línea.
 "
 
-
 %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40
   doctitlede = "Eigenschaften des Schlüssels optimieren"
   texidocde = "
@@ -74,7 +73,6 @@ Eigenschaften manuell setzt.  Auf der ersten Zeile erhalten die manuellen
 Änderungen die ursprüngliche relative Positionierung von Schlüssel und
 Noten, auf der zweiten Zeile nicht.
 "
-
 %% Translation of GIT committish: 4ab2514496ac3d88a9f3121a76f890c97cedcf4e
   texidocfr = "
 La commande @code{\\clef \"treble_8\"} équivaut à définir @code{clefGlyph},
index 31551907bba8dfe800a9768d7fa2f99312d49d88..19f5e04e707b2ccb6b04959fffa87f9614012345 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "rhythms, tweaks-and-overrides"
 
-%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7
+%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b
   texidoces = "
 
 La disposición de las expresiones de adorno se puede cambiar a lo
@@ -22,7 +22,6 @@ cabezas a aspas.
   doctitlees = "Trucar la disposición de las notas de adorno dentro de la música"
 
 
-
 %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40
   texidocde = "
 Das Layout von Verzierungsausdrücken kann in der Musik verändert
@@ -35,7 +34,6 @@ in ein Kreuz.
   doctitlede = "Veränderung des Layouts von Verzierungen innerhalb der Noten"
 
 
-
 %% Translation of GIT committish: 374d57cf9b68ddf32a95409ce08ba75816900f6b
   texidocfr = "
 Il est possible de changer globalement la mise en forme des petites
index a6d6c26c8539634af6d936cb43cfc81cf7efb5fb..aab47c5bd3f23399bd8a1420ec0c67fe77bb8b54 100644 (file)
@@ -33,7 +33,7 @@
 
 
 
-\version "2.13.20"
+\version "2.13.29"
 #(set-global-staff-size 15)
 
 %%%
index 2c768ee6fd6de8c1ff8b9f22ab194e0f4641bb9e..d85ea504139c18662bb49fd7cf270f0ec629a9f4 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "staff-notation, contexts-and-engravers"
 
-%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7
+%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b
   texidoces = "
 Se puede usar el delimitador de comienzo de un sistema
 @code{SystemStartSquare} estableciéndolo explícitamente dentro de
@@ -15,7 +15,6 @@ un contexto @code{StaffGroup} o @code{ChoirStaffGroup}.
 "
   doctitlees = "Uso del corchete recto al comienzo de un grupo de pentagramas"
 
-
 %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40
   texidocde = "
 Die Klammer zu Beginn von Systemgruppen kann auch in eine eckige Klammer
@@ -24,7 +23,6 @@ im @code{StaffGroup}- oder @code{ChoirStaffGroup}-Kontext setzt.
 
 "
   doctitlede = "Eine eckige Klammer zu Beginn von Systemgruppen benutzen"
-
 %% Translation of GIT committish: 4ab2514496ac3d88a9f3121a76f890c97cedcf4e
   texidocfr = "
 Un regroupement de portées sera indiqué par un simple rectangle
index 56e7d819a1f3542d4d3ab05a013a21156822d5aa..6a1a81b9d218a615b8b63f05a9bd8aae99e134e7 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "rhythms, tweaks-and-overrides"
 
-%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7
+%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b
   texidoces = "
 
 Se pueden imprimir estilos alternativos del corchete o gancho de las
index 8c8c1c437fd4af90d9b89ccee0a973daf80b978c..6a59df39f589ecfa8ef82009fc280fcd61298ea8 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "expressive-marks"
 
-%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7
+%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b
   texidoces = "
 Algunos compositores escriben dos ligaduras cuando quieren acordes
 legato.  Esto se puede conseguir estableciendo @code{doubleSlurs}.
@@ -14,7 +14,6 @@ legato.  Esto se puede conseguir estableciendo @code{doubleSlurs}.
 "
   doctitlees = "Utilizar ligaduras dobles para acordes legato"
 
-
 %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40
 texidocde = "
 Einige Komponisten schreiben doppelte Bögen, wenn Legato-Akkorde notiert
@@ -22,7 +21,6 @@ werden.  Das kann mit der Eigenschaft @code{doubleSlurs} erreicht werden.
 
 "
   doctitlede = "Doppelte Bögen für Legato-Akkorde benutzen"
-
 %% Translation of GIT committish: 217cd2b9de6e783f2a5c8a42be9c70a82195ad20
   texidocfr = "
 Certains auteurs utilisent deux liaisons lorsqu'ils veulent
index 1ba5b5e622093fb701ff395cfe3bb79857f88f7c..1ff5d2ebc7da2103840df950824d4751a6e9e04e 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "rhythms"
 
-%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7
+%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b
   texidoces = "
 
 Es posible aplicar la barrita que cruza la barra de las
@@ -17,7 +17,6 @@ acciaccaturas, en otras situaciones.
   doctitlees = "Utilizar la barra que tacha las notas de adorno con notas normales"
 
 
-
 %% Translation of GIT committish: 374d57cf9b68ddf32a95409ce08ba75816900f6b
   texidocfr = "
 Le trait que l'on trouve sur les hampes des acciaccatures peut
index 72ec41ab9895bf4093204f439fae6cb65d26ecec..4ec260377f4da490616c7e619b89d5481cb7972b 100644 (file)
@@ -2,10 +2,10 @@
 % generated from Documentation/snippets/new
 % This file is in the public domain.
 %% Note: this file works from version 2.13.10
-\version "2.13.20"
+\version "2.13.29"
 
 \header {
-%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7
+%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b
 
   texidoces = "
 
index 42f05e9903a46f0ed48d7eeb38c53f4637333957..90e84446b1ece58fd7c0f1717900d29ce5e20d5d 100644 (file)
@@ -2,10 +2,10 @@
 % generated from Documentation/snippets/new
 % This file is in the public domain.
 %% Note: this file works from version 2.13.10
-\version "2.13.20"
+\version "2.13.29"
 
 \header {
-%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7
+%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b
 
   texidoces = "
 
index c7ab880eb0006e53d5bd2ec00cf512753c3e7b75..c1fe8f613abf5529ac30e150fa93cd5c52d53000 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "rhythms"
 
-%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7
+%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b
  doctitlees = "Uso de ligaduras en los arpegios"
  texidoces = "
 En ocasiones se usan ligaduras de unión para escribir los arpegios.
@@ -18,7 +18,6 @@ en principio también se puede usar para notas normales consecutivas.
 
 "
 
-
 %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40
  texidocde = "
  Überbindungen werden teilweise benutzt, um Arpeggios zu notieren.  In
@@ -31,7 +30,6 @@ für normale Überbindungen eingesetzt werden
   doctitlede = "Überbingungen für Arpeggio genutzen"
 
 
-
 %% Translation of GIT committish: 4da4307e396243a5a3bc33a0c2753acac92cb685
   texidocfr = "
 Les liaisons de tenue servent parfois à rendre un accord arpégé. Dans
index fa7a8b7bbc0ebca28702447a6fefdcea2e8a6949..7b3d4280c18c03cc804a41124b8783df1733cca7 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "tweaks-and-overrides, spacing"
 
-%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7
+%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b
   texidoces = "
 Mediante el establecimiento de la propiedad @code{'Y-extent} a un valor
 adecuado, todos los objetos @code{DynamicLineSpanner} (reguladores e
@@ -21,7 +21,6 @@ largo de su línea de base.
 "
   doctitlees = "Indicaciones dinámicas y textuales alineadas verticalmente"
 
-
 %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40
 texidocde = "
 Indem man die @code{'Y-extent}-Eigenschaft auf einen passenden Wert setzt,
@@ -36,7 +35,6 @@ Grundlinie auszurichten.
 
 "
   doctitlede = "Vertikale Ausrichtung von Dynamik und Textbeschriftung beeinflussen"
-
 %% Translation of GIT committish: 217cd2b9de6e783f2a5c8a42be9c70a82195ad20
   texidocfr = "
 Vous pourrez, en jouant sur la propriété @code{'Y-extent}, aligner les
index 3e3f33e8dd5370aa41a19e8c8d21855758a3c5fa..ff8e7ebb0f808e5a62555eca262f110af64db7ee 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "expressive-marks"
 
-%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7
+%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b
   texidoces = "
 Las expresiones dinámicas que se comienzan, terminan o se producen
 en la misma nota se alinean verticalmente.  Para asegurar que las
index 2a6c5701d28b348d4425c0980d2ce5de3fbe6023..6e1592c23c9c3caaf65c74565f15eec94ed8418b 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "vocal-music, tweaks-and-overrides, spacing"
 
-%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7
+%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b
   texidoces = "
 Este fragmento de código muestra el uso de las propiedades de
 contexto @code{alignBelowContext} y @code{alignAboveContext} para
@@ -15,7 +15,6 @@ controlar la posición de la letra y los compases de ossia.
 "
   doctitlees = "Alineación vertical de la letra y los compases de ossia"
 
-
 %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40
   texidocde = "
 Dieser Schnipsel zeigt, wie man die Kontexteigenschaften
@@ -24,7 +23,6 @@ die Positionierung von Gesangstext und Ossia-Abschnitten zu kontrollieren.
 
 "
   doctitlede = "Gesangstext und Ossia vertikal ausrichten"
-
 %% Translation of GIT committish: 4ab2514496ac3d88a9f3121a76f890c97cedcf4e
   texidocfr = "
 Cet exemple illustre la manière de positionner une portée d'ossia et
index 6e596d3645bc77dc762ebae311ae635a76c1f0c1..4c1ef089f9b5aeb5c3f6240894815072e7aeed89 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "chords, tweaks-and-overrides"
 
-%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7
+%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b
   texidoces = "
 Allí donde se utilicen líneas extensoras para el bajo cifrado mediante
 el establecimiento de @code{useBassFigureExtenders} al valor
index 01562cec32cff4651a5f3e20c2375d6253782384..4e2ad45546830ef14290e82f422fb31e43f76bfd 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "vocal-music, keyboards, template"
 
-%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7
+%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b
   texidoces = "
 
 Esta plantilla añade una reducción de piano automática a la partitura
@@ -19,7 +19,6 @@ entonces los cambios se aplicarán también a la reducción de piano.
 "
   doctitlees = "Plantilla de conjunto vocal con reducción de piano automática"
 
-
 %% Translation of GIT committish: fa1aa6efe68346f465cfdb9565ffe35083797b86
   texidocja = "
 このテンプレートは、\"合唱テンプレート\"で示された標準の SATB ボーカル譜に自動@c
@@ -27,7 +26,6 @@ entonces los cambios se aplicarán también a la reducción de piano.
 定義を何回も使用することができます。ボーカルの音符 (例えば、@code{tenorMusic}
 の音符) に変更が加えられた場合、その変更はピアノ譜にも適用されます。
 "
-
 %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40
   texidocde = "
 In diesem Beispiel wird ein automatischer Klavierauszug zu der
@@ -37,7 +35,6 @@ irgendeine Änderung an einer Chorstimme vornehmen, (etwa
 tenorMusic), verändert sich auch der Klavierauszug entsprechend.
 "
 
-
 %% Translation of GIT committish: bdfe3dc8175a2d7e9ea0800b5b04cfb68fe58a7a
   texidocfr = "
 Ce canevas ajoute une réduction pour piano à une partition standard pour
index 4528a83858356c8762c30a7e000d1cd770823a2a..7f140ff252fdf5484df1e7a9d76f95c13c9726d3 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "text, vocal-music, contexts-and-engravers, template"
 
-%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7
+%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b
   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
@@ -16,13 +16,11 @@ colocan utilizando @code{alignAboveContext} y
 "
   doctitlees = "Plantilla para conjunto vocal con letras alineadas encima y debajo de los pentagramas"
 
-
 %% Translation of GIT committish: fa1aa6efe68346f465cfdb9565ffe35083797b86
   texidocja = "
 このテンプレートは基本的に単純な \"合唱\" テンプレートと同じですが、歌詞が
 @code{alignAboveContext} と @code{alignBelowContext} を用いて配置されています。
 "
-
 %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40
   texidocde = "
 In diesem Beispiel werden die Texte mit den Befehlen
@@ -32,7 +30,6 @@ In diesem Beispiel werden die Texte mit den Befehlen
 
   doctitlede = "Vorlage für Vokalensemble mit dem Gesangstext über und unter dem System"
 
-
 %% Translation of GIT committish: bdfe3dc8175a2d7e9ea0800b5b04cfb68fe58a7a
   texidocfr = "
 Ce canevas ressemble beaucoup à celui pour chœur à quatre voix mixtes.
index 735f8643a38fd9f7d2d8f4c9e80018c1fd5e193c..63e69207d1c5d6511dfa228f9d9c2c679917073a 100644 (file)
@@ -2,10 +2,10 @@
 % generated from Documentation/snippets/new
 % This file is in the public domain.
 %% Note: this file works from version 2.13.21
-\version "2.13.21"
+\version "2.13.29"
 
 \header {
-%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7
+%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b
 
   texidoces = "
 Esta plantilla crea una partitura que comienza con una estrofa para
@@ -26,7 +26,7 @@ use of spacer rests within the @code{\global} variable to define
 meter changes (and other elements common to all parts) throughout
 the entire score.
 "
-  doctitle = "Solo verse and two-part refrain"
+  doctitle = "Vocal ensemble template with verse and refrain"
 } % begin verbatim
 
 
index 491c83919453301510b61779460d413db931ec7b..606821ed8a3bd56446d8adb1d2cf3e5b4a881db0 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "vocal-music, template"
 
-%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7
+%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b
   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
@@ -17,14 +17,12 @@ voces se reagrupan en sólo dos pentagramas.
 "
   doctitlees = "Plantilla de conjunto vocal"
 
-
 %% Translation of GIT committish: fa1aa6efe68346f465cfdb9565ffe35083797b86
   texidocja = "
 これは標準の 4 パート SATB (ソプラノ、アルト、テナー、バス) ボーカル譜です。@c
 もっと大きな合唱では、すべてのパートで使用されるセクションをインクルードすると@c
 便利です。例えば、拍子記号と調号はほとんど常にすべてのパートで同じです。\"賛美@c
 歌\" テンプレートのように、4 つのボイスは 2 つの譜にグループ分けされています。"
-
 %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40
   texidocde = "
 Dieses Beispiel ist für vierstimmigen Gesang (SATB). Bei größeren
@@ -35,7 +33,6 @@ sind fast immer gleich in allen Stimmen.
 
   doctitlede = "Vorlage für Vokalensemble"
 
-
 %% Translation of GIT committish: bdfe3dc8175a2d7e9ea0800b5b04cfb68fe58a7a
   texidocfr = "
 Ce fichier constitue un canevas standard de partition pour chœur à
index d264df42bbc0a8155c2b1506c082f6519176ddf0..a90556d4feadb22cc769044ffa994665ba6d1d15 100644 (file)
@@ -6,7 +6,7 @@
 \header {
   lsrtags = "repeats, staff-notation, chords"
 
-%% Translation of GIT committish: e0aa246e0ed1a86dc41a99ab79bff822d3320aa7
+%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b
   texidoces = "
 Mediante la adición del grabador @code{Volta_engraver} al
 pentagrama pertinente, se pueden poner los corchetes de primera y
@@ -16,7 +16,6 @@ segunda vez debajo de los acordes.
   doctitlees = "Corchetes de primera y segunda vez debajo de los acordes"
 
 
-
 %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40
   texidocde = "
 Indem man den @code{Volta_engraver} zu dem entsprechenden Notensystem
index a194237b618b29a1184f7e2b22d461541abaecd4..fbeea97088eabe4da2878622696c691e58659ee2 100644 (file)
@@ -2,7 +2,7 @@
 % generated from Documentation/snippets/new
 % This file is in the public domain.
 %% Note: this file works from version 2.12.0
-\version "2.13.20"
+\version "2.13.29"
 #(set-global-staff-size 15)
 \paper {
   line-width = 16\cm
index 7881e70b4ca6019d74087efbbbeea9df804e203c..4e57c29ec1503626d16e0254f0f59a53ccc5156a 100644 (file)
@@ -53,6 +53,27 @@ License''.
 @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 --- the music typesetter
+@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-usage). Installing and running applications.
+* LilyPond Website: (lilypond-web).    Preview of new website.
+* lilypond: (lilypond-usage)Running lilypond.      Invoking the LilyPond program.
+* abc2ly: (lilypond-usage)Invoking abc2ly.      Importing ABC.
+* convert-ly: (lilypond-usage)Updating files with convert-ly. Older LilyPond versions.
+* etf2ly: (lilypond-usage)Invoking etf2ly.      Importing Finale.
+* lilypond-book: (lilypond-usage)lilypond-book. Integrating text and music.
+* midi2ly: (lilypond-usage)Invoking midi2ly.    Importing MIDI.
+* musicxml2ly: (lilypond-usage)Invoking musicxml2ly.  Importing MusicXML.
+@end direntry
+
+
 @c TITLE PAGE
 @ifnottex
 @node Top
@@ -182,27 +203,6 @@ Distributions will want to install lilypond.info in postinstall, doing:
 
 @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 --- the music typesetter
-@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-usage). Installing and running applications.
-* LilyPond Website: (lilypond-web).    Preview of new website.
-* lilypond: (lilypond-usage)Running LilyPond.      Invoking the LilyPond program.
-* abc2ly: (lilypond-usage)Invoking abc2ly.      Importing ABC.
-* convert-ly: (lilypond-usage)Updating files with convert-ly. Older LilyPond versions.
-* etf2ly: (lilypond-usage)Invoking etf2ly.      Importing Finale.
-* lilypond-book: (lilypond-usage)LilyPond-book. Integrating text and music.
-* midi2ly: (lilypond-usage)Invoking midi2ly.    Importing MIDI.
-* musicxml2ly: (lilypond-usage)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 ************
index e9fa199c18f137d5e1ec46a166aded8614bbd959..a9ae0ed3fabc1bc4d42dacb5007262eb55a5743c 100644 (file)
@@ -808,9 +808,9 @@ with Constraint Satisfaction Programming}, International Computer
 Music Conference 2008.
 
 @item
-A. Passos, M. Silva, P. Kroger, and G. Cidra,
+Alexandre Tachard Passos, Marcos Sampaio, Pedro Kröger, Givaldo de Cidra,
 @emph{Functional Harmonic Analysis and Computational Musicology
-in Rameau}, Proceedings of the 12th Brazilian Symposium on Compute
+in Rameau}, Proceedings of the 12th Brazilian Symposium on Computer
 Music, 2009, pp. 207-210.
 
 @item
@@ -820,11 +820,11 @@ New Trends in Artificial Intelligence, 2007 J. Neves et al ed.
 
 @item
 
-Kevin C. Baird 2005.
+Kevin C. Baird 2005,
 @emph{Real-time generation of music notation via audience interaction using
 python and GNU lilypond}. Proceedings of the 2005 Conference on New interfaces
 For Musical Expression (Vancouver, Canada, May 26 - 28, 2005).
-New Interfaces For Musical Expression. National University of Singapore, Singapore, 240-241.
+
 
 @end itemize
 
index 2eb6974b12074fe8712a88002a52f1a4bc1d7787..58c933efde9ea3bfbd66395bce51f1139c411ff8 100644 (file)
@@ -545,8 +545,7 @@ high-quality scores of sacred music, available for immediate
 download or in traditional paper format.
 
 @item
-@uref{http://theshadylanepublishing.com/, The Shady Lane
-Publishing},
+@uref{http://www.shadylane.fr, The Shady Lane Publishing},
 a @qq{micro musical publishing house} whose goal is to promote a
 new form of musical economy closer to the musicians and music
 lovers.
@@ -1021,7 +1020,7 @@ are actively working to bring it up to our present stable version, 2.12.}
 @divEnd
 
 @divClass{column-center-top}
-@subheading Emacs and Vim
+@subheading Text editors
 
 @sourceimage{logo-linux,,,}
 @sourceimage{logo-freebsd,,,}
@@ -1050,19 +1049,7 @@ writing LilyPond input files.
 More information on setting up Emacs and Vim can be found in
 @rprogram{Text editor support}.
 
-@divEnd
-
-@ignore these may not need to be here at all, as they are purely
-MacOS scripts.
-
-@divClass{column-center-top}
-@subheading Other
-
-
-@subsubheading Text environment: TexShop
-
 @sourceimage{logo-macosx,,,}
-
 @uref{http://www.uoregon.edu/~koch/texshop}
 
 The TexShop editor for MacOS@tie{}X can be extended to run LilyPond,
@@ -1073,21 +1060,18 @@ using the extensions available at:
 @uref{http://users.dimi.uniud.it/~nicola.vitacolonna/home/content/lilypond-scripts}
 @end example
 
-@subsubheading TextMate
-
 @sourceimage{logo-macosx,,,}
-
-There is a LilyPond bundle for TextMate.  It may be installed by
-running:
+There is a LilyPond bundle for TextMate, a commercial editor for MacOS.
+It may be installed by running:
 
 @example
 mkdir -p /Library/Application\ Support/TextMate/Bundles
 cd /Library/Application\ Support/TextMate/Bundles
-svn co http://svn.textmate.org/trunk/Bundles/LilyPond.tmbundle/
+git clone http://github.com/textmate/lilypond.tmbundle.git
+
 @end example
 
 @divEnd
-@end ignore
 
 @divClass{column-center-top}
 @subheading Other programs can export LilyPond code
index 7b2c4275aedc3740f53de5179327fdc8019ff4b7..9ddacb50a1f1f91e7ec85fa275cd157855b7e1ac 100644 (file)
@@ -1,4 +1,4 @@
-\version "2.12.0"
+\version "2.13.29"
 \include "example-header.ily"
 
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -14,7 +14,7 @@
 }
 
 
-csh = \change Staff = "high" 
+csh = \change Staff = "high"
 csm = \change Staff = "middle"
 csl = \change Staff = "low"
 
@@ -33,27 +33,28 @@ global = {
 upperVoiceOne = \relative c'' {
   \voiceOne
   \override TupletBracket #'transparent = ##t
-  <aes f'>8\([ \times 4/5{g'32( aes g f g]) } 
+  <aes f'>8\([ \times 4/5{g'32( aes g f g]) }
     <es aes>8[ \times 4/5{<d bes'>32( c' bes aes bes]) }
     <es, aes es'>8 <d fis b d>\) | % end m. 1
   %--------------------------------------------------%
-  <c g' c>4\( \voiceTwo <bes es bes'\arpeggio>\) 
+  <c g' c>4\( \voiceTwo <bes es bes'\arpeggio>\)
     \slurUp <aes aes'>16( <bes bes'> <g g'>8) % end m. 2
   %--------------------------------------------------%
   \noBreak
-  \voiceOne 
+  \voiceOne
   <f aes d f>8\([ \times 4/5{<g g'>32( aes' g f g]) }
   \set subdivideBeams = ##t
-  \set beatLength = #(ly:make-moment 1 8)
-    <aes, aes'>16 <c f> \times 4/5{ bes'32( c bes aes bes]) }
-    \set subdivideBeams = ##f
-    \ottava #1 <es es'>16 <f f'> <d d'> \appoggiatura f8 <es es'>16\)
+  \set baseMoment = #(ly:make-moment 1 8)
+  \set beatStructure = #'(2 2 2)
+  <aes, aes'>16 <c f> \times 4/5{ bes'32( c bes aes bes]) }
+  \set subdivideBeams = ##f
+  \ottava #1 <es es'>16 <f f'> <d d'> \appoggiatura f8 <es es'>16\)
 }
 
 upperVoiceTwo = \relative c'' {
   \voiceTwo
   s8 c8\< <bes, f'>[ <bes aes'> c' <bes, d fis>\!]
-  s32 s32_\appassmolto s8. \voiceOne r8 <bes'' es bes'>-> s4 
+  s32 s32_\appassmolto s8. \voiceOne r8 <bes'' es bes'>-> s4
   \override Stem #'cross-staff = ##t
   \override Stem #'length = #28
   \override Stem #'flag-style = #'no-flag
@@ -88,8 +89,9 @@ lowerVoiceOne = \relative c, {
   bes8 \csm \stemDown <bes'' c es>8 s2
   \csl \stemUp
   \set subdivideBeams = ##t
-  \set beatLength = #(ly:make-moment 1 16)
-  s8 \hideNotes \slurUp \stemDown 
+  \set baseMoment = #(ly:make-moment 1 16)
+  \set beatStructure = #'(4 4 4)
+  s8 \hideNotes \slurUp \stemDown
     es,,64( bes'' s64 \unHideNotes \stemUp g64[ bes c d c]) s2
   \set subdivideBeams = ##f
   bes,,8 \csm \stemDown <bes'' c es>8 s2
@@ -97,15 +99,15 @@ lowerVoiceOne = \relative c, {
 
 lowerVoiceTwo = \relative c, {
   \voiceTwo
-  bes2. 
+  bes2.
   \csh
   \once \override Beam #'damping = #+inf.0
-  <bes'' es g>8 \csl \slurUp 
-  %\once\override Slur #'extra-offset = #'(0 . 4) 
-  es,,64 bes' es g s32. 
+  <bes'' es g>8 \csl \slurUp
+  %\once\override Slur #'extra-offset = #'(0 . 4)
+  es,,64 bes' es g s32.
     c64
     s4 <bes des>
-  bes,,2. 
+  bes,,2.
 }
 
 
@@ -113,18 +115,18 @@ lowerVoiceTwo = \relative c, {
   \new PianoStaff <<
     \set PianoStaff.connectArpeggios = ##t
 %    \override PianoStaff.Arpeggio #'stencil = #ly:arpeggio::brew-chord-bracket
-    \new Staff = "high" <<     
+    \new Staff = "high" <<
       \global
       \context Voice = "upperVoiceOne" { \upperVoiceOne }
       \context Voice = "upperVoiceTwo" { \upperVoiceTwo }
     >>
-    \new Staff = "middle" << 
+    \new Staff = "middle" <<
       \global
       \context Voice = "middleVoiceOne" { \middleVoiceOne }
       \context Voice = "middleVoiceTwo" { \middleVoiceTwo }
     >>
-    \new Staff = "low" <<      
-      \clef bass 
+    \new Staff = "low" <<
+      \clef bass
       \global
       \context Voice = "lowerVoiceOne" { \lowerVoiceOne }
       \context Voice = "lowerVoiceTwo" { \lowerVoiceTwo }
index 0f033a7bd2780d4e1009fc0fe6c015c8f5999c75..e62cc33f4754f085b49b429f0dec86cfc75d1169 100644 (file)
@@ -9,6 +9,30 @@
 @c FIXME: fill in number
 @c used for news about the upcoming release; see CG x.y
 
+@newsItem
+@subsubheading LilyPond 2.13.29 released!  @emph{July 13, 2010}
+
+We are happy to announce the release of LilyPond 2.13.29.  This
+release contains the usual number of bugfixes.  However, a number
+of critical issues still remain, so this release is intended for
+developers only.
+
+This release includes some major untested changes to the windows
+lilypad editor.  Windows users should not be using this release
+because it is intended for developers only, but you ignore these
+warnings and try it anyway, use extra caution.
+@newsEnd
+
+@newsItem
+@subsubheading LilyPond 2.13.27 released!  @emph{July 5, 2010}
+
+We are happy to announce the release of LilyPond 2.13.27.  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 Testing our new website!  @emph{June 29, 2010}
 
index 04ce4e6e726215fce75d53f56416475fb34ced8e..be6377078a850ea33b6c38d2201528c058140364 100644 (file)
@@ -256,6 +256,7 @@ test:
        $(MAKE) -C input/regression/ out=test local-test
        $(MAKE) -C input/regression/musicxml out=test local-test
        $(MAKE) -C input/regression/abc2ly out=test local-test
+       $(MAKE) -C input/regression/lilypond-book out=test local-test
 
 test-baseline:
        @if test -d .git ; then \
@@ -266,6 +267,7 @@ test-baseline:
        $(MAKE) out=test -C input/regression/ local-test-baseline
        $(MAKE) out=test -C input/regression/musicxml local-test-baseline
        $(MAKE) out=test -C input/regression/abc2ly local-test-baseline
+       $(MAKE) out=test -C input/regression/lilypond-book local-test-baseline
        $(MAKE) test-snippets-clean
 
 
diff --git a/VERSION b/VERSION
index befb468893a29295d05bdffcb1f43efbb2f944f6..b1ac8cbd0d400c9faf7973ed4b0fc09c4cec6c6a 100644 (file)
--- a/VERSION
+++ b/VERSION
@@ -1,7 +1,7 @@
 PACKAGE_NAME=LilyPond
 MAJOR_VERSION=2
 MINOR_VERSION=13
-PATCH_LEVEL=27
+PATCH_LEVEL=29
 MY_PATCH_LEVEL=
 VERSION_STABLE=2.12.3
-VERSION_DEVEL=2.13.26
+VERSION_DEVEL=2.13.29
index 2fd8bebd5a533bcaf7e9b932c0b0bf4fd6e5919d..34c022e0825ff602da60fd86aa9ac3f0ba951ce5 100755 (executable)
@@ -18,26 +18,6 @@ if [ ! -f autogen.sh -o stepmake/autogen.sh -nt autogen.sh ]; then
     exec ./autogen.sh "$@"
 fi
 
-# Be paranoid: check for autoconf >= 2.50
-# Some setups have both autoconf 2.13 and 2.5x available through
-# a wrapper script: /usr/bin/autoconf.
-# This wrapper may incorrectly autoselect autoconf 2.50, but it
-# advertises itself as autoconf 2.13.
-# If you have such a setup, invoke this script as:
-#   autoconf=autoconf2.50 ./autogen.sh
-for i in autoconf2.50 autoconf-2.50 autoconf  false; do
-  version=`$i --version 2>/dev/null | head -n 1 | awk '{print $NF}' | awk -F. '{print $1 * 100 + $2}'`
-  if test "0$version" -ge 250; then
-    autoconf=$i
-    break
-  fi
-done
-
-if test -z "$autoconf"; then
-    echo "ERROR: Please install autoconf 2.50 or newer"
-    exit 1
-fi
-
 for i in $srcdir/configure.in #`find $srcdir -name configure.in -print`
 do 
   dir=`dirname $i`
@@ -45,8 +25,11 @@ do
   (
       cd $dir
       echo "Running autoconf ..."
-      $autoconf
+      autoconf || exit 1
   )
+  # Autoconf automatically checks its own minimum required
+  # version, and it aborts when the check fails.
+  test "$?" -eq 1 && exit 1
 done
 
 #conf_flags="--enable-maintainer-mode --enable-compile-warnings" #--enable-iso-c
index aab9e410c0ecc938d21bcfc1f06afd69aae213ea..93158d88f4e561d6eb827ac23c15160d8f05d5bf 100644 (file)
@@ -101,6 +101,7 @@ CC = @CC@
 CONFIGSUFFIX = @CONFIGSUFFIX@
 CROSS = @cross_compiling@
 CXX = @CXX@
+DBLATEX = @DBLATEX@
 DEFINES = @DEFS@ @DEFINES@
 DEFS = @DEFS@
 DOCUMENTATION = @DOCUMENTATION@
@@ -125,6 +126,7 @@ MFMODE = @MFMODE@
 MSGFMT = @MSGFMT@
 PAPERSIZE=a4
 PATHSEP = @PATHSEP@
+PDFLATEX = @PDFLATEX@
 PERL = @PERL@
 PLATFORM_WINDOWS = @PLATFORM_WINDOWS@
 PYTHON = @PYTHON@
index 7c62b48bfaf0cb36ae8fb263468041abb71bdbd6..f41aef700ad338f4068b13f9d6850d506f7bafaf 100644 (file)
@@ -186,6 +186,8 @@ STEPMAKE_PERL(OPTIONAL)
 
 STEPMAKE_PROGS(MAKEINFO, makeinfo, REQUIRED, 4.11)
 STEPMAKE_PROGS(TEXI2HTML, texi2html, OPTIONAL, 1.82)
+STEPMAKE_PROGS(DBLATEX, dblatex, OPTIONAL)
+STEPMAKE_PROGS(PDFLATEX, pdflatex, OPTIONAL)
 
 AC_DEFINE_UNQUOTED(FLOWER_VERSION, "${FULL_FLOWER_VERSION}")
 
index 605f138e9983dbe7ba2acfb16964edcc45e0b454..e0c023d667ed73a504f3a2421b092862c205f6c6 100644 (file)
@@ -6,4 +6,4 @@ LOCALSTEPMAKE_TEMPLATES=lilypond ly lysdoc
 include $(depth)/make/stepmake.make
 TITLE=LilyPond Regression Tests
 
-SUBDIRS=musicxml abc2ly
+SUBDIRS=musicxml abc2ly lilypond-book
index afa8b9916077b17219ee4d9202d9146814dccfc3..d6dd8f411a10b65cfe841d4b352998ad338bea7c 100644 (file)
@@ -8,14 +8,14 @@ beaming pattern related functions at the start of an autobeam."
 }
 
 
-\version "2.12.0"
+\version "2.13.29"
 \paper { ragged-right = ##t }
 {
   \time 2/4
   b16 b b b
   b16 b b b
   \set subdivideBeams = ##t
-  \set Score.beatLength = #(ly:make-moment 1 8)
+  \set Score.baseMoment = #(ly:make-moment 1 8)
   b16 b b b
   b16 b b b
 }
index 2be98d88bdf9fe0f89acb426031d3f23d33d606c..4f639f405cdb8ef15afbf3c78c143712f6572315 100644 (file)
@@ -1,7 +1,7 @@
 \header {
 
   texidoc = "Default beaming patterns can be set for the current time
-signature by @code{\\setBeatGrouping}. "
+signature. "
   }
 
 \layout {
@@ -12,8 +12,8 @@ signature by @code{\\setBeatGrouping}. "
 
 \relative c'' {
   \time 5/16
-  \setBeatGrouping  #'(2 3)
+  \set beatStructure = #'(2 3)
   c8[^"(2+3)" c16 c8]
-  \setBeatGrouping  #'(3 2)
+  \set beatStructure = #'(3 2)
   c8[^"(3+2)" c16 c8]
 }
index 907edf10f43672073725ac0979c9e3246aa61981..0580f2e6dae2a219547da842b0b6b5af2caa31bf 100644 (file)
@@ -1,12 +1,11 @@
 
-\version "2.12.0"
+\version "2.13.29"
 
 \header {
 
-  texidoc = "Automatic beaming works also in ternary time sigs. In
-  this case, the 8th is a beat, so the 16ths are split into two
-  groups.  This can be avoided by overriding @code{beatLength} to be
-  three 8th notes."
+  texidoc = "Automatic beaming works also in ternary time sigs.
+  As desired, the measure is split in half, with beats 1-3 and
+  4-6 beamed together as a whole."
 
 }
 
@@ -14,8 +13,7 @@
 
 \relative c'' {
   \time 6/8
-  c8.[ c16 c16 c16] 
-  \set beatLength = #(ly:make-moment 3 8)
-  c8.[ c16 c16 c16] 
+  c8. c16 c16 c16
+  c8. c16 c16 c16
 }
 
diff --git a/input/regression/chord-tremolo-articulations.ly b/input/regression/chord-tremolo-articulations.ly
new file mode 100644 (file)
index 0000000..7b862fc
--- /dev/null
@@ -0,0 +1,22 @@
+\version "2.12.0"
+
+\header{
+texidoc="
+Articulations on chord tremolos should not confuse the time-scaling of the
+notes. In particular, only the number of real notes should be considered.
+"
+}
+
+\context Voice \relative c' {
+  \repeat "tremolo" 4 { d16\f e-. }
+  \repeat "tremolo" 4 { d16-> e } | \barNumberCheck #2
+  \repeat "tremolo" 4 { d16 e\f }
+  \repeat "tremolo" 8 { d32\> e\! } | \barNumberCheck #3
+  \repeat "tremolo" 2 { d8\trill e }
+  \repeat "tremolo" 2 { d8\sfz e } | \barNumberCheck #4
+
+  \time 2/4
+  \repeat "tremolo" 8 { d32^"Markup" e } | \barNumberCheck #5
+  c4 c4
+}
+
diff --git a/input/regression/include-string.ly b/input/regression/include-string.ly
new file mode 100644 (file)
index 0000000..256cc5a
--- /dev/null
@@ -0,0 +1,8 @@
+\version "2.13.29"
+
+\header {
+  texidoc = "@code{ly:parser-include-string} should include the current
+string like a file @code{\include}."
+}
+
+#(ly:parser-include-string parser "\\relative c' { a4 b c d }")
diff --git a/input/regression/laissez-vibrer-tie-head-direction.ly b/input/regression/laissez-vibrer-tie-head-direction.ly
new file mode 100644 (file)
index 0000000..908a06c
--- /dev/null
@@ -0,0 +1,14 @@
+\version "2.13.27"
+\header {
+
+  texidoc = "The 'head-direction of a LaissezVibrerTieColumn should
+be able to be set without causing a segmentation fault."
+
+}
+
+\relative c'' {
+  c2 \laissezVibrer
+  \once \override LaissezVibrerTieColumn #'head-direction = #RIGHT
+  c \laissezVibrer
+}
+
index 53866b478089c7f3954986305ad2302ae9ab9be4..590e6607f444ef2533fd73403cf4f546e59caaee 100644 (file)
@@ -1,4 +1,4 @@
-\version "2.13.4"
+\version "2.13.29"
 
 \header {
     composer = "ARTHUR GRAY"
@@ -235,9 +235,8 @@ middleDynamics = {
 theScore = \score{
     \context PianoStaff <<
         \new Staff = "treble" <<
-            \overrideBeamSettings #'Score #'(4 . 4) #'end
-              #'((* . (1 1 1 1))
-                 ((1 . 32) (4 4 4 4 4 4 4 4)))
+            \set beamExceptions = #'((end . (((1 . 8) . (2 2 2 2))
+                                           ((1 . 32) . (4 4 4 4 4 4 4 4)))))
            \treble
            \trebleTwo
         >>
diff --git a/input/regression/lilypond-book/GNUmakefile b/input/regression/lilypond-book/GNUmakefile
new file mode 100644 (file)
index 0000000..a1e5bdc
--- /dev/null
@@ -0,0 +1,10 @@
+depth = ../../..
+
+STEPMAKE_TEMPLATES=documentation texinfo
+LOCALSTEPMAKE_TEMPLATES=lilypond ly lysdoc lilypond-book
+
+COLLATED_FILES = $(OUT_FILES)
+
+include $(depth)/make/stepmake.make
+
+TITLE=lilypond-book Test Suite
diff --git a/input/regression/lilypond-book/html-include-space-after-tag.html b/input/regression/lilypond-book/html-include-space-after-tag.html
new file mode 100644 (file)
index 0000000..0a408c1
--- /dev/null
@@ -0,0 +1,9 @@
+<html>
+<body>
+Including a ly file with newline and spaces in the tags.
+<lilypondfile
+>
+include.ly
+</lilypondfile >
+</body>
+</html>
diff --git a/input/regression/lilypond-book/html-inline-newline-during-tag.html b/input/regression/lilypond-book/html-inline-newline-during-tag.html
new file mode 100644 (file)
index 0000000..658655c
--- /dev/null
@@ -0,0 +1,6 @@
+<html>
+<body>
+Some music in <lilypond relative=2: a b c
+/> a line of text with a newline before the tag end.
+</body>
+</html>
diff --git a/input/regression/lilypond-book/html-inline-no-options.html b/input/regression/lilypond-book/html-inline-no-options.html
new file mode 100644 (file)
index 0000000..8670c2c
--- /dev/null
@@ -0,0 +1,4 @@
+<html>
+Some music in <lilypond: { a b c }/> a line of text.
+</body>
+</html>
diff --git a/input/regression/lilypond-book/html-inline-option.html b/input/regression/lilypond-book/html-inline-option.html
new file mode 100644 (file)
index 0000000..dfb1099
--- /dev/null
@@ -0,0 +1,4 @@
+<html>
+Some music in <lilypond relative=2: a b c/> a line of text.
+</body>
+</html>
diff --git a/input/regression/lilypond-book/html-lilypond-block.html b/input/regression/lilypond-book/html-lilypond-block.html
new file mode 100644 (file)
index 0000000..dfaf1c1
--- /dev/null
@@ -0,0 +1,10 @@
+<html>
+
+A simple lilypond snippet as a stand-alone paragraph:
+
+<lilypond>
+\relative c' {\repeat unfold 20 c4}
+</lilypond>
+
+
+</html>
diff --git a/input/regression/lilypond-book/html-newline-after-tag.html b/input/regression/lilypond-book/html-newline-after-tag.html
new file mode 100644 (file)
index 0000000..2ad549c
--- /dev/null
@@ -0,0 +1,10 @@
+<html>
+<body>
+Lilypond fragment with newlines before the end tags.
+<lilypond fragment relative=2
+>
+\key c \minor c4 es g2
+</lilypond
+>
+</body>
+</html>
diff --git a/input/regression/lilypond-book/html-space-after-tag.html b/input/regression/lilypond-book/html-space-after-tag.html
new file mode 100644 (file)
index 0000000..a0be117
--- /dev/null
@@ -0,0 +1,8 @@
+<html>
+<body>
+Lilypond fragment with spaces and tabs before the end tags.
+<lilypond fragment relative=2     >
+\key c \minor c4 es g2
+</lilypond     >
+</body>
+</html>
diff --git a/input/regression/lilypond-book/html-version-newline.html b/input/regression/lilypond-book/html-version-newline.html
new file mode 100644 (file)
index 0000000..8519705
--- /dev/null
@@ -0,0 +1,6 @@
+<html>
+<body>
+Lilypond version: <lilypondversion
+/>
+</body>
+</html>
diff --git a/input/regression/lilypond-book/html-version.html b/input/regression/lilypond-book/html-version.html
new file mode 100644 (file)
index 0000000..3fdc332
--- /dev/null
@@ -0,0 +1,5 @@
+<html>
+<body>
+Lilypond version: <lilypondversion/>
+</body>
+</html>
diff --git a/input/regression/lilypond-book/include.ly b/input/regression/lilypond-book/include.ly
new file mode 100644 (file)
index 0000000..364f2ca
--- /dev/null
@@ -0,0 +1,4 @@
+\version "2.12.0"
+\score {
+       \relative c'' { \key c \minor c4 es g2 }
+}
diff --git a/input/regression/lilypond-book/include2.ly b/input/regression/lilypond-book/include2.ly
new file mode 100644 (file)
index 0000000..2452924
--- /dev/null
@@ -0,0 +1,4 @@
+\version "2.12.0"
+\score {
+       \relative c'' { \key c \minor d4 es g2 }
+}
diff --git a/input/regression/lilypond-book/include3.ily b/input/regression/lilypond-book/include3.ily
new file mode 100644 (file)
index 0000000..818ff12
--- /dev/null
@@ -0,0 +1,15 @@
+\version "2.13.20"
+
+\header {
+doctitlees = "If you see this 'translated' doctitle, language detection work"
+
+texidoces = "If you see this 'translated' texidoc, language detection work"
+
+  texidoc = "Original texidoc (you should not see this!)"
+  doctitle = "Original doctitle (you should not see this!)"
+}
+
+\relative c'' {
+  c1
+}
+
diff --git a/input/regression/lilypond-book/suffix-html.html b/input/regression/lilypond-book/suffix-html.html
new file mode 100644 (file)
index 0000000..a8582f7
--- /dev/null
@@ -0,0 +1,8 @@
+<html>
+<body>
+Testing lilypond-book HTML mode with .html file suffix.
+<lilypond fragment relative=2>
+\key c \minor c4 es g2
+</lilypond>
+</body>
+</html>
diff --git a/input/regression/lilypond-book/suffix-htmly.htmly b/input/regression/lilypond-book/suffix-htmly.htmly
new file mode 100644 (file)
index 0000000..0c7e83a
--- /dev/null
@@ -0,0 +1,8 @@
+<html>
+<body>
+Testing lilypond-book HTML mode with .htmly file suffix.
+<lilypond fragment relative=2>
+\key c \minor c4 es g2
+</lilypond>
+</body>
+</html>
diff --git a/input/regression/lilypond-book/suffix-itely.itely b/input/regression/lilypond-book/suffix-itely.itely
new file mode 100644 (file)
index 0000000..8b89751
--- /dev/null
@@ -0,0 +1,14 @@
+\input texinfo @c -*- coding: utf-8; mode: texinfo; -*-
+@setfilename suffix-itely.info
+@settitle lilypond-book Suffix test for itely
+
+@node Top
+@top Suffix test for itely
+
+Testing lilypond-book texinfo mode with .itely file suffix.
+@lilypond[fragment,relative=2]
+\key c \minor c4 e d2
+@end lilypond
+
+
+@bye
diff --git a/input/regression/lilypond-book/suffix-latex.latex b/input/regression/lilypond-book/suffix-latex.latex
new file mode 100644 (file)
index 0000000..80fb004
--- /dev/null
@@ -0,0 +1,7 @@
+\documentclass{article}
+\begin{document}
+Testing lilypond-book tex mode with .latex file suffix.
+\begin[fragment,relative=2]{lilypond}
+\key c \minor c4 e d2
+\end{lilypond}
+\end{document}
diff --git a/input/regression/lilypond-book/suffix-lytex.lytex b/input/regression/lilypond-book/suffix-lytex.lytex
new file mode 100644 (file)
index 0000000..e9216aa
--- /dev/null
@@ -0,0 +1,7 @@
+\documentclass{article}
+\begin{document}
+Testing lilypond-book tex mode with .lytex file suffix.
+\begin[fragment,relative=2]{lilypond}
+\key c \minor c4 es d2
+\end{lilypond}
+\end{document}
diff --git a/input/regression/lilypond-book/suffix-lyxml.lyxml b/input/regression/lilypond-book/suffix-lyxml.lyxml
new file mode 100644 (file)
index 0000000..0e8c8ae
--- /dev/null
@@ -0,0 +1,14 @@
+<book id="lyxml_suffix_test">
+    <title></title>
+    <chapter id="lyxml_test">
+        <title>Suffix test for lyxml</title>
+        <para>Testing lilypond-book DocBook mode with .lyxml file suffix.</para>
+        <inlinemediaobject>
+          <textobject>
+            <programlisting language="lilypond" role="fragment verbatim staffsize=16 ragged-right relative=2">
+              \key c \minor c4 es g2
+            </programlisting>
+          </textobject>
+        </inlinemediaobject>
+    </chapter>
+</book>
\ No newline at end of file
diff --git a/input/regression/lilypond-book/suffix-tely.tely b/input/regression/lilypond-book/suffix-tely.tely
new file mode 100644 (file)
index 0000000..60a2eb0
--- /dev/null
@@ -0,0 +1,14 @@
+\input texinfo @c -*- coding: utf-8; mode: texinfo; -*-
+@setfilename suffix-tely.info
+@settitle lilypond-book Suffix test for tely
+
+@node Top
+@top Suffix test for tely
+
+Testing lilypond-book texinfo mode with .tely file suffix.
+@lilypond[fragment,relative=2]
+\key c \minor c4 e d2
+@end lilypond
+
+
+@bye
diff --git a/input/regression/lilypond-book/suffix-tex.tex b/input/regression/lilypond-book/suffix-tex.tex
new file mode 100644 (file)
index 0000000..d388c6f
--- /dev/null
@@ -0,0 +1,7 @@
+\documentclass{article}
+\begin{document}
+Testing lilypond-book tex mode with .tex file suffix.
+\begin{lilypond}[fragment,relative=2]
+\key c \minor c4 dis d2
+\end{lilypond}
+\end{document}
diff --git a/input/regression/lilypond-book/suffix-texi.texi b/input/regression/lilypond-book/suffix-texi.texi
new file mode 100644 (file)
index 0000000..0670343
--- /dev/null
@@ -0,0 +1,14 @@
+\input texinfo @c -*- coding: utf-8; mode: texinfo; -*-
+@setfilename suffix-texi.info
+@settitle lilypond-book Suffix test for texi
+
+@node Top
+@top Suffix test for texi
+
+Testing lilypond-book texinfo mode with .texi file suffix.
+@lilypond[fragment,relative=2]
+\key c \minor c4 e d2
+@end lilypond
+
+
+@bye
diff --git a/input/regression/lilypond-book/suffix-texinfo.texinfo b/input/regression/lilypond-book/suffix-texinfo.texinfo
new file mode 100644 (file)
index 0000000..11cea15
--- /dev/null
@@ -0,0 +1,14 @@
+\input texinfo @c -*- coding: utf-8; mode: texinfo; -*-
+@setfilename suffix-texinfo.info
+@settitle lilypond-book Suffix test for texinfo
+
+@node Top
+@top Suffix test for texinfo
+
+Testing lilypond-book texinfo mode with .texinfo file suffix.
+@lilypond[fragment,relative=2]
+\key c \minor c4 e d2
+@end lilypond
+
+
+@bye
diff --git a/input/regression/lilypond-book/suffix-xml.xml b/input/regression/lilypond-book/suffix-xml.xml
new file mode 100644 (file)
index 0000000..d04ce54
--- /dev/null
@@ -0,0 +1,8 @@
+<html>
+<body>
+Testing lilypond-book HTML mode with .xml file suffix.
+<lilypond fragment relative=2>
+\key c \minor c4 es g2
+</lilypond>
+</body>
+</html>
diff --git a/input/regression/lilypond-book/tex-auto-linebreak.lytex b/input/regression/lilypond-book/tex-auto-linebreak.lytex
new file mode 100644 (file)
index 0000000..a76e9e1
--- /dev/null
@@ -0,0 +1,22 @@
+\documentclass[a4paper]{article}
+
+\begin{document}
+
+Documents for \verb+lilypond-book+ may freely mix music and text. The music
+snippets will be properly line-broken. For example,
+
+\begin{lilypond}
+\relative c' {
+  c2 g'2 \times 2/3 { f8 e d } c'2 g4
+  c,2 g'2 \times 2/3 { f8 e d } c'2 g4
+  c,2 g'2 \times 2/3 { f8 e d } c'2 g4
+  c,2 g'2 \times 2/3 { f8 e d } c'2 g4
+  c,2 g'2 \times 2/3 { f8 e d } c'2 g4
+  c,2 g'2 \times 2/3 { f8 e d } c'2 g4
+  c,2 g'2 \times 2/3 { f8 e d } c'2 g4
+  c,2 g'2 \times 2/3 { f8 e d } c'2 g4
+}
+\end{lilypond}
+
+
+\end{document}
\ No newline at end of file
diff --git a/input/regression/lilypond-book/tex-comment-firstline.lytex b/input/regression/lilypond-book/tex-comment-firstline.lytex
new file mode 100644 (file)
index 0000000..5d0ae0c
--- /dev/null
@@ -0,0 +1,17 @@
+% A comment on the first line should not confuse lilypond-book's format
+% detection
+\documentclass[a4paper, 12pt]{article}
+
+\begin{document}
+
+\section{A coment on the first line of the file}
+
+This should not confuse the auto-detection of lilypond-book...
+
+\begin{lilypond}
+\score{
+  \relative c'{c d e f g a b c}
+}
+\end{lilypond}
+
+\end{document}
diff --git a/input/regression/lilypond-book/tex-comments.lytex b/input/regression/lilypond-book/tex-comments.lytex
new file mode 100644 (file)
index 0000000..72bf7f2
--- /dev/null
@@ -0,0 +1,28 @@
+\documentclass[a4paper, 12pt]{article}
+
+\begin{document}
+
+
+\subsection{LaTeX comments}
+This is a line with lilypond code
+after the comment char % \lilypond{\context Voice <<c' e' g'>>}
+% \lilypond{\context Voice <<c' e' g'>>}
+
+If you do not see any music above
+this line, then lilypond-book is handling latex comments pretty well :-)
+
+The following snippet is preceded by a comment that would start a lilypond
+environment
+
+%%\begin{lilypond}
+\begin{lilypond}[11pt,fragment]
+\context Voice <<c' e' g'>>
+\end{lilypond}
+
+A single-line comment inside a fragment does not confuse lilypond-book:
+
+\begin{lilypond}[fragment]
+c d e %\score
+\end{lilypond}
+
+\end{document}
diff --git a/input/regression/lilypond-book/tex-compatibility-mode.lytex b/input/regression/lilypond-book/tex-compatibility-mode.lytex
new file mode 100644 (file)
index 0000000..aab288e
--- /dev/null
@@ -0,0 +1,10 @@
+\documentclass[a4paper, 12pt]{article}
+
+\begin{document}
+\section{LilyPond snippets with deprecated options}
+
+A snippet with a deprecated option, triggering compatibility mode:
+
+\lilypond[11pt,fragment]{c' e' g'}
+
+\end{document}
diff --git a/input/regression/lilypond-book/tex-footnote.lytex b/input/regression/lilypond-book/tex-footnote.lytex
new file mode 100644 (file)
index 0000000..cd7c930
--- /dev/null
@@ -0,0 +1,11 @@
+\documentclass[a4paper, 12pt]{article}
+
+\begin{document}
+\section{LilyPond snippets in a footnote}
+
+Test for snippets in a footnote\footnote{Here's the footnote:
+\lilypond[fragment]{c' e' g'} }:
+\marginpar{ Yes, even as marginpar
+\lilypond[fragment]{c' d' e'} }
+
+\end{document}
diff --git a/input/regression/lilypond-book/tex-fragment.lytex b/input/regression/lilypond-book/tex-fragment.lytex
new file mode 100644 (file)
index 0000000..4adc809
--- /dev/null
@@ -0,0 +1,19 @@
+\documentclass[a4paper, 12pt]{article}
+
+\begin{document}
+
+\section{Using lilypond-book's fragment option}
+
+If a snippet is not a fully valid LilyPond file, you have
+to use the \verb|fragment| option:
+
+\begin{lilypond}[fragment]
+c d e
+\end{lilypond}
+
+% TODO: \verb does not yet work!!!
+There is also a shorthand version %\verb|\lilypond[fragment]{c' e' g'}|:
+
+\lilypond[fragment]{c' e' g'}
+
+\end{document}
diff --git a/input/regression/lilypond-book/tex-graphics-package-added.lytex b/input/regression/lilypond-book/tex-graphics-package-added.lytex
new file mode 100644 (file)
index 0000000..d94360a
--- /dev/null
@@ -0,0 +1,10 @@
+\documentclass[a4paper]{article}
+
+\begin{document}
+
+\section{Lilypond-book should add the graphicx package}
+
+If a latex file does not yet include the graphicx package, it is added by
+lilypond-book.
+
+\end{document}
diff --git a/input/regression/lilypond-book/tex-include-file.lytex b/input/regression/lilypond-book/tex-include-file.lytex
new file mode 100644 (file)
index 0000000..6705a7f
--- /dev/null
@@ -0,0 +1,5 @@
+\documentclass{article}
+\begin{document}
+Including Lilypond file:
+\lilypondfile{include2.ly}
+\end{document}
diff --git a/input/regression/lilypond-book/tex-include-options.lytex b/input/regression/lilypond-book/tex-include-options.lytex
new file mode 100644 (file)
index 0000000..a53fb5d
--- /dev/null
@@ -0,0 +1,5 @@
+\documentclass{article}
+\begin{document}
+Including Lilypond file with options (quote and noindent):
+\lilypondfile[quote,noindent]{include2.ly}
+\end{document}
diff --git a/input/regression/lilypond-book/tex-inline-lilypond.lytex b/input/regression/lilypond-book/tex-inline-lilypond.lytex
new file mode 100644 (file)
index 0000000..0d4886a
--- /dev/null
@@ -0,0 +1,4 @@
+\documentclass{article}
+\begin{document}
+Adding Lilypond code inline: \lilypond[relative=2]{ d g ceses }
+\end{document}
diff --git a/input/regression/lilypond-book/tex-lilypond-block.lytex b/input/regression/lilypond-book/tex-lilypond-block.lytex
new file mode 100644 (file)
index 0000000..ad76d3c
--- /dev/null
@@ -0,0 +1,15 @@
+\documentclass[a4paper, 12pt]{article}
+
+\begin{document}
+
+\section{Simple lilypond blocks}
+
+A simple scale:
+
+\begin{lilypond}
+\score{
+  \relative c' { c d e f g a b c }
+}
+\end{lilypond}
+
+\end{document}
diff --git a/input/regression/lilypond-book/tex-lilypond-inside-itemize.lytex b/input/regression/lilypond-book/tex-lilypond-inside-itemize.lytex
new file mode 100644 (file)
index 0000000..91d78bb
--- /dev/null
@@ -0,0 +1,21 @@
+\documentclass[a4paper, 12pt]{article}
+
+\begin{document}
+
+\section{Lilypond snippets inside lists:}
+
+Itemize environment:
+\begin{itemize}
+\item
+\lilypond[11pt,fragment]{ c'} do
+\item
+\lilypond[11pt,fragment]{d'} re
+\item
+\lilypond[11pt,fragment]{e'} mi
+\item
+\lilypond[11pt,fragment]{f'} fa
+\item
+\lilypond[11pt,fragment]{g'} sol
+\end{itemize}
+
+\end{document}
diff --git a/input/regression/lilypond-book/tex-lilypond-inside-table.lytex b/input/regression/lilypond-book/tex-lilypond-inside-table.lytex
new file mode 100644 (file)
index 0000000..a75c4df
--- /dev/null
@@ -0,0 +1,20 @@
+\documentclass[a4paper, 12pt]{article}
+
+\begin{document}
+
+\section{Lilypond snippets inside tables:}
+
+Tables:
+
+\begin{tabular}{|l|l|r|}
+\hline
+\em Notes & \em Name \\
+\hline
+\lilypond[11pt,fragment,filename="cdur"]{\context Voice <<c' e' g'>>} & major \\
+\lilypond[11pt,fragment]{\context Voice <<c' es' g'>>} & minor \\
+\lilypond[11pt,fragment]{\context Voice <<c' es' ges'>>} & diminished \\
+\lilypond[11pt,fragment]{\context Voice <<c' e' gis'>>} & augmented \\
+\hline
+\end{tabular}
+
+\end{document}
diff --git a/input/regression/lilypond-book/tex-lilypondversion.lytex b/input/regression/lilypond-book/tex-lilypondversion.lytex
new file mode 100644 (file)
index 0000000..d8102c7
--- /dev/null
@@ -0,0 +1,10 @@
+\documentclass[a4paper, 12pt]{article}
+
+\begin{document}
+
+Version: \lilypondversion
+
+A digit immediately after the version: \lilypondversion9
+A formula immediately after the version: \lilypondversion$x_k$
+
+\end{document}
diff --git a/input/regression/lilypond-book/tex-paragraphs.lytex b/input/regression/lilypond-book/tex-paragraphs.lytex
new file mode 100644 (file)
index 0000000..da24529
--- /dev/null
@@ -0,0 +1,30 @@
+\documentclass[a4paper, 12pt]{article}
+
+\begin{document}
+
+
+\section{Paragraphs and line spacing}
+
+Testing of spacing. The next music is surrounded by an empty line.
+text text text text text text text text text text text text
+text text text text text text text text text text text text
+
+\begin{lilypond}
+\score{ \relative c'{ c d e f g a b c} }
+\end{lilypond}
+
+text text text text text text text text text text text text
+text text text text text text text text text text text text
+text text text text text text text text text text text text
+
+Next has no empty lines.
+text text text text text text text text text text text text
+text text text text text text text text text text text text
+text text text text text text text text text text text text
+\begin{lilypond}
+\score{ \relative c'{ c d e f g a b c} }
+\end{lilypond}
+text text text text text text text text text text text text
+text text text text text text text text text text text text
+
+\end{document}
diff --git a/input/regression/lilypond-book/tex-snippet-options.lytex b/input/regression/lilypond-book/tex-snippet-options.lytex
new file mode 100644 (file)
index 0000000..1f175af
--- /dev/null
@@ -0,0 +1,38 @@
+\documentclass[a4paper, 12pt]{article}
+
+\begin{document}
+
+\section{Snippet options}
+
+Fragment:
+\begin{lilypond}[fragment]
+c d e %\score
+\end{lilypond}
+
+This shows the verbatim option:
+\begin{lilypond}[fragment,verbatim]
+c' d' e'
+\end{lilypond}
+
+printfilename:
+\lilypondfile[printfilename]{include.ly}
+
+staffsize:
+\begin{lilypond}[staffsize=7,fragment]
+\context Voice <<c' e' g'>>
+\end{lilypond}
+\lilypond[fragment,staffsize=7]{\context Voice <<c' es' g'>>}
+
+relative:
+\lilypond[relative=1]{ c4 f b e }
+
+quote:
+\lilypond[quote,fragment]{\relative c' c1 }
+
+fragment, quote, staffsize=26, verbatim:
+\begin{lilypond}[fragment,quote,staffsize=26,verbatim]
+  c'4 f16
+\end{lilypond}
+
+
+\end{document}
diff --git a/input/regression/lilypond-book/tex-twocolumn.lytex b/input/regression/lilypond-book/tex-twocolumn.lytex
new file mode 100644 (file)
index 0000000..69c10bb
--- /dev/null
@@ -0,0 +1,17 @@
+\documentclass[a4paper, 12pt]{article}
+
+\begin{document}
+\twocolumn
+
+\section{A latex file with two columns}
+
+In this example, the width auto-detection shall detect the two columns
+and produce snippets that have the smaller width for a column!
+
+\begin{lilypond}
+\score{
+  \relative c'{c d e f g a b c | c d e f g a b c | c d e f g a b c}
+}
+\end{lilypond}
+
+\end{document}
diff --git a/input/regression/lilypond-book/tex-verbatim.lytex b/input/regression/lilypond-book/tex-verbatim.lytex
new file mode 100644 (file)
index 0000000..363138d
--- /dev/null
@@ -0,0 +1,45 @@
+\documentclass[a4paper, 12pt]{article}
+
+\begin{document}
+
+\section{verb and verbatim}
+
+This file should not contain (and produce) any lilypond images!
+
+Snippets inside a verbatim environment or a comment are not run through
+lilypond, but left as is.
+
+% TODO: These do not yet work, as \verb is explicitly disabled in lilypond-book for now!
+% \verb|\lilypond[fragment]{c' d' e'}|
+%
+% and
+
+\begin{verbatim}
+\begin{lilypond}
+c d e
+\end{lilypond}
+\end{verbatim}
+
+
+As you can see, the begin/end lilypond commands inside
+do not confuse lilypond-book.
+
+% TODO: These do not yet work, as \verb is explicitly disabled in lilypond-book for now!
+% \verb|\begin{lilypond}[fragment]c d e\end{lilypond}|
+
+% \verb+\lilypondfile[quote,noindent]{screech-boink.ly}+
+
+Neither does a verbatim inside verb:
+
+\verb|\begin{verbatim}\begin{lilypond}[fragment]c d e\end{lilypond}\end{verbatim}|
+
+or verb inside verbatim:
+
+\begin{verbatim}
+\verb|\begin{lilypond}[fragment]c d e\end{lilypond}|
+\end{verbatim}
+
+But these are just to stress \verb|lilypond-book|.
+
+
+\end{document}
diff --git a/input/regression/lilypond-book/tex-version.lytex b/input/regression/lilypond-book/tex-version.lytex
new file mode 100644 (file)
index 0000000..9509cc8
--- /dev/null
@@ -0,0 +1,4 @@
+\documentclass{article}
+\begin{document}
+Lilypond version: \lilypondversion
+\end{document}
diff --git a/input/regression/lilypond-book/texinfo-include-language-detection-included.itely b/input/regression/lilypond-book/texinfo-include-language-detection-included.itely
new file mode 100644 (file)
index 0000000..e8b101b
--- /dev/null
@@ -0,0 +1,2 @@
+The texidoc of the following snippet should be "translated":
+@lilypondfile[printfilename,texidoc,doctitle]{include3.ily}
diff --git a/input/regression/lilypond-book/texinfo-include-language-detection.tely b/input/regression/lilypond-book/texinfo-include-language-detection.tely
new file mode 100644 (file)
index 0000000..d4c4c1e
--- /dev/null
@@ -0,0 +1,13 @@
+\input texinfo @c -*- coding: utf-8; mode: texinfo; documentlanguage: es -*-
+@setfilename texinfo-language-detection.info
+@settitle Texinfo language detection
+@documentencoding UTF-8
+@documentlanguage es
+@afourpaper
+
+@node Top
+@top Texinfo language detection
+
+@include texinfo-include-language-detection-included.itely
+
+@bye
diff --git a/input/regression/lilypond-book/texinfo-language-detection.tely b/input/regression/lilypond-book/texinfo-language-detection.tely
new file mode 100644 (file)
index 0000000..7bf5289
--- /dev/null
@@ -0,0 +1,15 @@
+\input texinfo @c -*- coding: utf-8; mode: texinfo; documentlanguage: es -*-
+@setfilename texinfo-language-detection.info
+@settitle Texinfo language detection
+@documentencoding UTF-8
+@documentlanguage es
+@afourpaper
+
+@node Top
+@top Texinfo language detection
+
+The texidoc of the following snippet should be "translated":
+@lilypondfile[printfilename,texidoc,doctitle]{include3.ily}
+
+
+@bye
index aa0f294db47a791bcd8c1172014e06a073d0ed3e..b343d88b6fb1372f7bdea8a056b5149ce8927751 100644 (file)
@@ -26,4 +26,4 @@ endif
 zip: $(outdir)/MusicXML-TestSuite-$(TEST_SUITE_VERSION).zip
 
 $(outdir)/MusicXML-TestSuite-$(TEST_SUITE_VERSION).zip: $(MUSICXML_FILES) $(MUSICMXL_FILES) LICENSE
-       $(ZIP) -r $@ $(addprefix $(src-dir)/,$(MUSICXML_FILES)) $(addprefix $(src-dir)/,$(MUSICMXL_FILES)) LICENSE
+       $(ZIP) -q -r $@ $(addprefix $(src-dir)/,$(MUSICXML_FILES)) $(addprefix $(src-dir)/,$(MUSICMXL_FILES)) LICENSE
diff --git a/input/regression/page-breaking-min-distance.ly b/input/regression/page-breaking-min-distance.ly
new file mode 100644 (file)
index 0000000..ad8dbdb
--- /dev/null
@@ -0,0 +1,18 @@
+\version "2.13.22"
+
+\header {
+  texidoc = "minimum-distance is correctly accounted for in page breaking."
+}
+
+\book {
+  \paper {
+    between-scores-system-spacing #'minimum-distance = #'20
+    paper-height = 8\cm
+  }
+
+  \score { c'1 }
+  \score { c'1 }
+  \score { c'1 }
+  \score { c'1 }
+}
+
diff --git a/input/regression/repeat-tremolo-one-note-articulation.ly b/input/regression/repeat-tremolo-one-note-articulation.ly
new file mode 100644 (file)
index 0000000..f75e5c7
--- /dev/null
@@ -0,0 +1,19 @@
+\version "2.13.29"
+
+\header {
+  texidoc = "A tremolo repeat containing only one note (no sequential music)
+  shall not be scaled. An articulation or dynamic sign on the note should not
+  confuse lilypond."
+}
+
+\paper { ragged-right = ##t }
+\score {
+  \new Staff \relative c'' {
+    \repeat tremolo 4 { a16 }
+    \repeat tremolo 4 { a16\f }
+    \repeat tremolo 4 a16
+    \repeat tremolo 4 a16\f |
+    \repeat tremolo 4 a16\f-> 
+    c2. |
+  }
+}
diff --git a/input/regression/repeat-tremolo-three-notes.ly b/input/regression/repeat-tremolo-three-notes.ly
new file mode 100644 (file)
index 0000000..3592584
--- /dev/null
@@ -0,0 +1,19 @@
+\version "2.13.29"
+
+\header {
+  texidoc = "A tremolo can have more than two notes. Also check that
+linebreaks between tremolos still work and that empty tremolos don't crash."
+}
+
+\paper { ragged-right = ##t }
+\score {
+  \new Staff \relative c' {
+    \time 3/4
+    \repeat tremolo 16 { a64 c e } |
+    \repeat tremolo 8 { a,64 c e }
+    \repeat tremolo 4 { a,64 c e }
+    \repeat tremolo 2 { a,32 c e } |\break
+    \repeat tremolo 16 { a64 c e }
+    \repeat tremolo 8 {} |
+  }
+}
index 817da93c9787459471bd186bbc15afe97883702a..d74c8fb110ae89affdb4a222b4b7751b18c33709 100644 (file)
@@ -437,6 +437,7 @@ Accidental_engraver::stop_translation_timestep ()
 
   accidental_placement_ = 0;
   accidentals_.clear ();
+  note_columns_.clear ();
   left_objects_.clear ();
   right_objects_.clear ();
 }
index fda5a9b93eb4f9c89c1f37ffec88dc6769d80b7a..c976688a0db257e74278b376294168835049ba59 100644 (file)
@@ -147,7 +147,7 @@ Auto_beam_engraver::Auto_beam_engraver ()
   forbid_ = 0;
   process_acknowledged_count_ = 0;
   stems_ = 0;
-  shortest_mom_ = Moment (Rational (1, 8));
+  shortest_mom_ = Moment (Rational (1, 4));
   finished_beam_ = 0;
   finished_grouping_ = 0;
   grouping_ = 0;
@@ -167,7 +167,7 @@ Auto_beam_engraver::test_moment (Direction dir, Moment test_mom, Moment dur)
   return scm_call_4 (get_property ("autoBeamCheck"),
                     context ()->self_scm (),
                     scm_from_int (dir),
-                     test_mom.smobbed_copy(),
+                     test_mom.smobbed_copy (),
                     dur.smobbed_copy ())
     != SCM_BOOL_F;
 }
@@ -253,7 +253,7 @@ Auto_beam_engraver::junk_beam ()
   grouping_ = 0;
   beam_settings_ = SCM_EOL;
 
-  shortest_mom_ = Moment (Rational (1, 8));
+  shortest_mom_ = Moment (Rational (1, 4));
 }
 
 void
@@ -277,7 +277,7 @@ Auto_beam_engraver::end_beam ()
       beam_settings_ = SCM_EOL;
     }
 
-  shortest_mom_ = Moment (Rational (1, 8));
+  shortest_mom_ = Moment (Rational (1, 4));
 }
 
 void
@@ -393,8 +393,7 @@ Auto_beam_engraver::acknowledge_stem (Grob_info info)
   if (bool (beam_start_location_.grace_part_) != bool (now.grace_part_))
     return;
 
-  Moment ev_dur = unsmob_duration (ev->get_property ("duration"))->get_length ();
-  Moment dur = Rational (1, ev_dur.den ());
+  Moment dur = unsmob_duration (ev->get_property ("duration"))->get_length ();
   Moment measure_now = measure_position (context ());
   bool recheck_needed = false;
 
@@ -506,7 +505,6 @@ Auto_beam_engraver::process_acknowledged ()
     {
       Moment measure_now = measure_position (context ());
       consider_end (measure_now, shortest_mom_);
-      consider_begin (measure_now, shortest_mom_);
     }
   else if (process_acknowledged_count_ > 1)
     {
@@ -529,23 +527,25 @@ ADD_ACKNOWLEDGER (Auto_beam_engraver, beam);
 ADD_ACKNOWLEDGER (Auto_beam_engraver, breathing_sign);
 ADD_ACKNOWLEDGER (Auto_beam_engraver, rest);
 ADD_TRANSLATOR (Auto_beam_engraver,
-               /* doc */
-               "Generate beams based on measure characteristics and observed"
-               " Stems.  Uses @code{beatLength}, @code{measureLength}, and"
-               " @code{measurePosition} to decide when to start and stop a"
-               " beam.  Overriding beaming is done through"
-               " @ref{Stem_engraver} properties @code{stemLeftBeamCount} and"
-               " @code{stemRightBeamCount}.",
-
-               /* create */
-               "Beam ",
-
-               /* read */
-               "autoBeaming "
-               "beamSettings "
-               "beatLength "
-               "subdivideBeams ",
-
-               /* write */
-               ""
-               );
+                /* doc */
+                "Generate beams based on measure characteristics and observed"
+                " Stems.  Uses @code{baseMoment}, @code{beatStructure},"
+                " @code{beamExceptions}, @code{measureLength}, and"
+                " @code{measurePosition} to decide when to start and stop a"
+                " beam.  Overriding beaming is done through"
+                " @ref{Stem_engraver} properties @code{stemLeftBeamCount} and"
+                " @code{stemRightBeamCount}.",
+
+                /* create */
+                "Beam ",
+
+                /* read */
+                "autoBeaming "
+                "baseMoment "
+                "beamExceptions "
+                "beatStructure "
+                "subdivideBeams ",
+
+                /* write */
+                ""
+                );
index a7f9024783824ae37d7465b27101e3f6d600ee17..34e2e166229d99c56ba5604814da32ad2a43910c 100644 (file)
 
 #include "all-font-metrics.hh"
 #include "font-interface.hh"
+#include "line-interface.hh"
 #include "lookup.hh"
 #include "output-def.hh"
 #include "paper-column.hh"
 #include "staff-symbol-referencer.hh"
-#include "line-interface.hh"
 
 MAKE_SCHEME_CALLBACK (Bar_line, calc_bar_extent, 1)
 SCM
@@ -40,7 +40,7 @@ Bar_line::calc_bar_extent (SCM smob)
     return ly_interval2scm (Interval ());
 
   Real h = scm_to_double (size);
-  return ly_interval2scm (Interval (-h/2, h/2));
+  return ly_interval2scm (Interval (-h / 2, h / 2));
 }
 
 Interval
@@ -52,6 +52,12 @@ Bar_line::bar_y_extent (Grob *me, Grob *refpoint)
   return iv;
 }
 
+bool
+Bar_line::non_empty_barline (Grob *me)
+{
+  return has_interface (me) && !me->extent (me, X_AXIS).is_empty ();
+}
+
 MAKE_SCHEME_CALLBACK (Bar_line, print, 1);
 SCM
 Bar_line::print (SCM smob)
@@ -121,7 +127,7 @@ Bar_line::compound_barline (Grob *me, string str, Real h,
 
   if (str == "")
     {
-      Stencil empty =  Lookup::blank (Box (Interval (0, 0), Interval (-h / 2, h / 2)));
+      Stencil empty = Lookup::blank (Box (Interval (0, 0), Interval (-h / 2, h / 2)));
       empty.translate_axis (center, Y_AXIS);
       return empty;
     }
@@ -171,7 +177,6 @@ Bar_line::compound_barline (Grob *me, string str, Real h,
       m.add_at_edge (X_AXIS, LEFT, colon, kern);
       m.add_at_edge (X_AXIS, RIGHT, thin, kern);
       m.add_at_edge (X_AXIS, RIGHT, colon, kern);
-
     }
   else if (str == ":|.:")
     {
@@ -196,8 +201,8 @@ Bar_line::compound_barline (Grob *me, string str, Real h,
       /*
        should align to other side? this never appears
        on the system-start?
-      m.add_at_edge (X_AXIS, RIGHT, thin, 0);
-      m.add_at_edge (X_AXIS, RIGHT, thin, thinkern);
+       m.add_at_edge (X_AXIS, RIGHT, thin, 0);
+       m.add_at_edge (X_AXIS, RIGHT, thin, thinkern);
       */
       m.add_at_edge (X_AXIS, LEFT, thin, thinkern);
       m.add_at_edge (X_AXIS, RIGHT, thin, thinkern);
@@ -211,42 +216,40 @@ Bar_line::compound_barline (Grob *me, string str, Real h,
       segno.add_stencil (Font_interface::get_default_font (me)->find_by_name ("scripts.varsegno"));
 
       if (str == "S")
-        {
-          m.add_stencil (segno);
-        }
+       m.add_stencil (segno);
       else if (str == "S|:" || str == ".S|:")
-        {
-          m.add_at_edge (X_AXIS, RIGHT, thick, 0);
-          m.add_at_edge (X_AXIS, RIGHT, thin, kern);
-          m.add_at_edge (X_AXIS, RIGHT, colon, kern);
-          m.add_at_edge (X_AXIS, LEFT, segno, thinkern);
-        }
+       {
+         m.add_at_edge (X_AXIS, RIGHT, thick, 0);
+         m.add_at_edge (X_AXIS, RIGHT, thin, kern);
+         m.add_at_edge (X_AXIS, RIGHT, colon, kern);
+         m.add_at_edge (X_AXIS, LEFT, segno, thinkern);
+       }
       else if (str == ":|S" || str == ":|S.")
-        {
-          m.add_at_edge (X_AXIS, LEFT, thick, 0);
-          m.add_at_edge (X_AXIS, LEFT, thin, kern);
-          m.add_at_edge (X_AXIS, LEFT, colon, kern);
-          m.add_at_edge (X_AXIS, RIGHT, segno, thinkern);
-        }
+       {
+         m.add_at_edge (X_AXIS, LEFT, thick, 0);
+         m.add_at_edge (X_AXIS, LEFT, thin, kern);
+         m.add_at_edge (X_AXIS, LEFT, colon, kern);
+         m.add_at_edge (X_AXIS, RIGHT, segno, thinkern);
+       }
       else if (str == ":|S|:" || str == ":|S.|:")
-        {
-          m.add_at_edge (X_AXIS, LEFT, thick, 0);
-          m.add_at_edge (X_AXIS, LEFT, thin, kern);
-          m.add_at_edge (X_AXIS, LEFT, colon, kern);
-          m.add_at_edge (X_AXIS, RIGHT, segno, thinkern);
-          m.add_at_edge (X_AXIS, RIGHT, thick, thinkern);
-          m.add_at_edge (X_AXIS, RIGHT, thin, kern);
-          m.add_at_edge (X_AXIS, RIGHT, colon, kern);
-        }
+       {
+         m.add_at_edge (X_AXIS, LEFT, thick, 0);
+         m.add_at_edge (X_AXIS, LEFT, thin, kern);
+         m.add_at_edge (X_AXIS, LEFT, colon, kern);
+         m.add_at_edge (X_AXIS, RIGHT, segno, thinkern);
+         m.add_at_edge (X_AXIS, RIGHT, thick, thinkern);
+         m.add_at_edge (X_AXIS, RIGHT, thin, kern);
+         m.add_at_edge (X_AXIS, RIGHT, colon, kern);
+       }
       else if (str == "|._.|") // :|S|: or :|S.|: without segno and colon
-        {
-          // get the width of the segno sign
-          Real segno_width = segno.extent (X_AXIS).length ();
-          m.add_at_edge (X_AXIS, LEFT, thick, 0);
-          m.add_at_edge (X_AXIS, LEFT, thin, kern);
-          m.add_at_edge (X_AXIS, RIGHT, thick, segno_width + 2 * thinkern);
-          m.add_at_edge (X_AXIS, RIGHT, thin, kern);
-        }
+       {
+         // get the width of the segno sign
+         Real segno_width = segno.extent (X_AXIS).length ();
+         m.add_at_edge (X_AXIS, LEFT, thick, 0);
+         m.add_at_edge (X_AXIS, LEFT, thin, kern);
+         m.add_at_edge (X_AXIS, RIGHT, thick, segno_width + 2 * thinkern);
+         m.add_at_edge (X_AXIS, RIGHT, thin, kern);
+       }
       // end varsegno block
     }
   else if (str == ":")
@@ -263,13 +266,9 @@ Bar_line::compound_barline (Grob *me, string str, Real h,
        }
     }
   else if (str == "dashed")
-    {
-      m = dashed_bar_line (me, h, hair);
-    }
+    m = dashed_bar_line (me, h, hair);
   else if (str == "'")
-    {
-      m = tick_bar_line (me, h, rounded);
-    }
+    m = tick_bar_line (me, h, rounded);
 
   m.translate_axis (center, Y_AXIS);
   return m;
@@ -302,10 +301,9 @@ Bar_line::tick_bar_line (Grob *me, Real h, bool rounded)
     : 0.0;
 
   return Lookup::round_filled_box (Box (Interval (0, line_thick),
-                                        Interval (h / 2 - th, h / 2 + th)), blot);
+                                       Interval (h / 2 - th, h / 2 + th)), blot);
 }
 
-
 MAKE_SCHEME_CALLBACK (Bar_line, calc_bar_size, 1);
 SCM
 Bar_line::calc_bar_size (SCM smob)
@@ -319,7 +317,6 @@ Bar_line::calc_bar_size (SCM smob)
   return scm_from_int (0);
 }
 
-
 Stencil
 Bar_line::dashed_bar_line (Grob *me, Real h, Real thick)
 {
@@ -329,25 +326,25 @@ Bar_line::dashed_bar_line (Grob *me, Real h, Real thick)
     this is a tad complex for what we want to achieve, but with a
     simple line, the round blotting interferes with staff line
     connections.
-      */
+  */
   Real ss = Staff_symbol_referencer::staff_space (me);
   int count = Staff_symbol_referencer::line_count (me);
-      Real line_thick = Staff_symbol_referencer::line_thickness (me);
+  Real line_thick = Staff_symbol_referencer::line_thickness (me);
 
-  if (fabs (line_thick + (count -1) * ss - h) <   0.1) // ugh.
+  if (fabs (line_thick + (count -1) * ss - h) < 0.1) // ugh.
     {
-      Real blot =
-       me->layout ()->get_dimension (ly_symbol2scm ("blot-diameter"));
+      Real blot
+       me->layout ()->get_dimension (ly_symbol2scm ("blot-diameter"));
 
-      Real half_space = ss/2;
+      Real half_space = ss / 2;
       Stencil bar;
 
-      for (int i = (count-1); i >= -(count-1); i -= 2)
+      for (int i = (count - 1); i >= -(count - 1); i -= 2)
        {
          Real top_y = min ((i + dash_size) * half_space,
-                           (count-1) * half_space +  line_thick / 2);
+                           (count - 1) * half_space + line_thick / 2);
          Real bot_y = max ((i - dash_size) * half_space,
-                           -(count-1) * half_space - line_thick/2);
+                           -(count - 1) * half_space - line_thick / 2);
 
          bar.add_stencil (Lookup::round_filled_box (Box (Interval (0, thick),
                                                          Interval (bot_y, top_y)),
@@ -360,7 +357,7 @@ Bar_line::dashed_bar_line (Grob *me, Real h, Real thick)
       /*
        We have to scale the dashing so it starts and ends with half a
        dash exactly.
-       */
+      */
       int dashes = int (rint (h / ss));
       Real total_dash_size = h / dashes;
       Real factor = (dash_size - thick) / ss;
@@ -368,7 +365,7 @@ Bar_line::dashed_bar_line (Grob *me, Real h, Real thick)
       SCM at = scm_list_n (ly_symbol2scm ("dashed-line"),
                           scm_from_double (thick),
                           scm_from_double (factor * total_dash_size),
-                          scm_from_double ((1-factor) * total_dash_size),
+                          scm_from_double ((1 - factor) * total_dash_size),
                           scm_from_double (0),
                           scm_from_double (h),
                           scm_from_double (factor * total_dash_size * 0.5),
@@ -379,7 +376,7 @@ Bar_line::dashed_bar_line (Grob *me, Real h, Real thick)
       box.add_point (Offset (0, h));
 
       Stencil s (box, at);
-      s.translate (Offset (thick/2, -h/2));
+      s.translate (Offset (thick / 2, -h / 2));
       return s;
     }
   return Stencil ();
index fd043e89c8ea2b68c1795cc06b5b4f0b52145551..7cbd3168c3a9be531350951523f943d7cc85d23c 100644 (file)
@@ -62,7 +62,7 @@ protected:
 
   Beaming_options beaming_options_;
   Beaming_options finished_beaming_options_;
-  
+
   void typeset_beam ();
   void set_melisma (bool);
 
@@ -167,7 +167,7 @@ Beam_engraver::process_music ()
   if (stop_ev_ && beam_)
     {
       announce_end_grob (beam_, stop_ev_->self_scm ());
-      
+
     }
 }
 
@@ -212,7 +212,7 @@ Beam_engraver::stop_translation_timestep ()
       finished_beam_ = beam_;
       finished_beam_info_ = beam_info_;
       finished_beaming_options_ = beaming_options_;
-      
+
       stop_ev_ = 0;
       beam_ = 0;
       beam_info_ = 0;
@@ -251,7 +251,7 @@ Beam_engraver::acknowledge_stem (Grob_info info)
 {
   if (!beam_)
     return;
-  
+
   Moment now = now_mom ();
   if (!valid_start_point ())
     return;
@@ -259,7 +259,7 @@ Beam_engraver::acknowledge_stem (Grob_info info)
   Item *stem = dynamic_cast<Item *> (info.grob ());
   if (Stem::get_beam (stem))
     return;
-  
+
   Stream_event *ev = info.ultimate_event_cause ();
   if (!ev->in_event_class ("rhythmic-event"))
     {
@@ -298,13 +298,14 @@ ADD_TRANSLATOR (Beam_engraver,
                /* doc */
                "Handle @code{Beam} events by engraving beams.  If omitted,"
                " then notes are printed with flags instead of beams.",
-               
+
                /* create */
                "Beam ",
 
                /* read */
+                "baseMoment "
                "beamMelismaBusy "
-               "beatLength "
+               "beatStructure "
                "subdivideBeams ",
 
                /* write */
@@ -317,7 +318,7 @@ public:
   TRANSLATOR_DECLARATIONS (Grace_beam_engraver);
 
   DECLARE_TRANSLATOR_LISTENER (beam);
-  
+
 protected:
   virtual bool valid_start_point ();
   virtual bool valid_end_point ();
@@ -365,13 +366,14 @@ ADD_TRANSLATOR (Grace_beam_engraver,
                "Handle @code{Beam} events by engraving beams.  If omitted,"
                " then notes are printed with flags instead of beams.  Only"
                " engraves beams when we are at grace points in time.",
-               
+
                /* create */
                "Beam ",
 
                /* read */
+                "baseMoment "
                "beamMelismaBusy "
-               "beatLength "
+               "beatStructure "
                "subdivideBeams ",
 
                /* write */
diff --git a/lily/beam-setting-scheme.cc b/lily/beam-setting-scheme.cc
deleted file mode 100644 (file)
index 550f1e4..0000000
+++ /dev/null
@@ -1,78 +0,0 @@
-/*
-  This file is part of LilyPond, the GNU music typesetter.
-
-  Copyright (C) 2009--2010 Carl Sorensen <c_sorensen@byu.edu>
-
-  LilyPond is free software: you can redistribute it and/or modify
-  it under the terms of the GNU General Public License as published by
-  the Free Software Foundation, either version 3 of the License, or
-  (at your option) any later version.
-
-  LilyPond is distributed in the hope that it will be useful,
-  but WITHOUT ANY WARRANTY; without even the implied warranty of
-  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-  GNU General Public License for more details.
-
-  You should have received a copy of the GNU General Public License
-  along with LilyPond.  If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#include "beam-settings.hh"
-#include "context.hh"
-#include "guile-compatibility.hh"
-
-LY_DEFINE (ly_grouping_rules, "ly:grouping-rules",
-          3, 0, 0, (SCM settings, SCM time_signature, SCM rule_type),
-          "Return grouping rules for @var{time-signature} and"
-           " @var{rule-type} from @var{settings}.")
-{
-  LY_ASSERT_TYPE (ly_cheap_is_list, settings, 1);
-  LY_ASSERT_TYPE (scm_is_pair, time_signature, 2);
-  LY_ASSERT_TYPE (ly_is_symbol, rule_type, 3);
-
-  SCM grouping_rules = SCM_EOL;
-  if (scm_is_pair (settings))
-    grouping_rules =
-        ly_assoc_get (scm_list_2 (time_signature, rule_type),
-                      settings,
-                      SCM_EOL);
-  return grouping_rules;
-}
-
-LY_DEFINE (ly_beam_grouping, "ly:beam-grouping",
-          4, 0, 0, (SCM settings, SCM time_signature, SCM rule_type,
-                     SCM beam_type),
-          "Return grouping for beams of @var{beam-type} in"
-           " @var{time-signature} for"
-           " @var{rule-type} from @var{settings}.")
-{
-  LY_ASSERT_TYPE (ly_cheap_is_list, settings, 1);
-  LY_ASSERT_TYPE (scm_is_pair, time_signature, 2);
-  LY_ASSERT_TYPE (ly_is_symbol, rule_type, 3);
-  SCM_ASSERT_TYPE (scm_is_symbol(beam_type) || scm_is_pair(beam_type),
-                   beam_type, SCM_ARG4, __FUNCTION__, "symbol or pair");
-  SCM beam_grouping =
-        ly_assoc_get (beam_type,
-                      ly_grouping_rules (settings,time_signature,rule_type),
-                      SCM_EOL);
-  return beam_grouping;
-}
-
-LY_DEFINE (ly_beat_grouping, "ly:beat-grouping",
-          1, 0, 0, (SCM context),
-          "Return default beat grouping currently active in @var{context}.")
-{
-  LY_ASSERT_SMOB (Context, context, 1);
-  Context *c = unsmob_context (context);
-  SCM time_signature =
-        c->get_property ("timeSignatureFraction");
-  SCM settings =
-        c->get_property("beamSettings");
-  SCM beat_grouping =
-        ly_beam_grouping (settings,
-                          time_signature,
-                          ly_symbol2scm ("end"),
-                          ly_symbol2scm ("*"));
-  return beat_grouping;
-}
-
index 3659525f115eb91c6e2b86973876cb1889c53469..7567caa700744a3b72dd23b479d230ecd7ca57ac 100644 (file)
@@ -18,7 +18,6 @@
 */
 
 #include "context.hh"
-#include "beam-settings.hh"
 #include "beaming-pattern.hh"
 
 /*
@@ -174,10 +173,10 @@ Beaming_pattern::find_rhythmic_importance (Beaming_options const &options)
       if (infos_[i].start_moment_ == measure_pos)
        infos_[i].rhythmic_importance_ = -2;
 
-      // Mark the start of each beat up to the end of this beat group.
-      for (int beat = 1; beat <= count; beat++)
+      // Mark the start of each unit up to the end of this beat group.
+      for (int unit = 1; unit <= count; unit++)
        {
-         Moment next_measure_pos = measure_pos + options.beat_length_;
+         Moment next_measure_pos = measure_pos + options.base_moment_;
 
          while (i < infos_.size () && infos_[i].start_moment_ < next_measure_pos)
            {
@@ -190,7 +189,7 @@ Beaming_pattern::find_rhythmic_importance (Beaming_options const &options)
              // in an 8th-note triplet with a quarter-note beat, 1/3 of a beat should be
              // more important than 1/2.
              if (infos_[i].rhythmic_importance_ >= 0)
-               infos_[i].rhythmic_importance_ = (dt / options.beat_length_).den ();
+               infos_[i].rhythmic_importance_ = (dt / options.base_moment_).den ();
 
              i++;
            }
@@ -293,10 +292,12 @@ Beaming_pattern::split_pattern (int i)
 void
 Beaming_options::from_context (Context *context)
 {
-  grouping_ = ly_beat_grouping (context->self_scm ());
+  grouping_ = context->get_property ("beatStructure");
   subdivide_beams_ = to_boolean (context->get_property ("subdivideBeams"));
-  beat_length_ = robust_scm2moment (context->get_property ("beatLength"), Moment (1, 4));
-  measure_length_ = robust_scm2moment (context->get_property ("measureLength"), Moment (4, 4));
+  base_moment_ = robust_scm2moment (context->get_property ("baseMoment"),
+                                    Moment (1, 4));
+  measure_length_ = robust_scm2moment (context->get_property ("measureLength"),
+                                       Moment (4, 4));
 }
 
 Beaming_options::Beaming_options ()
index f4dd09362c37e7a2bcdbcce84897817d39fd926e..efd26d44ebb6fe452b3cfe8a9af3cf4360b12db6 100644 (file)
@@ -61,13 +61,13 @@ Book::Book (Book const &s)
       paper_ = s.paper_->clone ();
       paper_->unprotect ();
     }
-  
+
   input_location_ = make_input (*s.origin ());
 
-  header_ = ly_make_anonymous_module (false);
+  header_ = ly_make_module (false);
   if (ly_is_module (s.header_))
     ly_module_copy (header_, s.header_);
-  
+
   SCM *t = &scores_;
   for (SCM p = s.scores_; scm_is_pair (p); p = scm_cdr (p))
     {
@@ -112,7 +112,7 @@ Book::mark_smob (SCM s)
   scm_gc_mark (book->scores_);
   scm_gc_mark (book->bookparts_);
   scm_gc_mark (book->input_location_);
-  
+
   return book->header_;
 }
 
@@ -141,7 +141,7 @@ Book::set_parent (Book *parent)
   /* Copy the header block of the parent */
   if (ly_is_module (parent->header_))
     {
-      SCM tmp_header = ly_make_anonymous_module (false);
+      SCM tmp_header = ly_make_module (false);
       ly_module_copy (tmp_header, parent->header_);
       if (ly_is_module (header_))
         ly_module_copy (tmp_header, header_);
@@ -158,7 +158,7 @@ Book::add_scores_to_bookpart ()
 {
   if (scm_is_pair (scores_))
     {
-      /* If scores have been added to this book, add them to a child 
+      /* If scores have been added to this book, add them to a child
        * book part */
       Book *part = new Book;
       part->set_parent (this);
@@ -185,7 +185,7 @@ Book::error_found ()
     if (Score *score = unsmob_score (scm_car (s)))
       if (score->error_found_)
        return true;
-  
+
   for (SCM part = bookparts_; scm_is_pair (part); part = scm_cdr (part))
     if (Book *bookpart = unsmob_book (scm_car (part)))
       if (bookpart->error_found ())
@@ -228,11 +228,11 @@ Book::process_score (SCM s, Paper_book *output_paper_book, Output_def *layout)
     {
       SCM outputs = score
        ->book_rendering (output_paper_book->paper_, layout);
-             
+
       while (scm_is_pair (outputs))
        {
          Music_output *output = unsmob_music_output (scm_car (outputs));
-                 
+
          if (Performance *perf = dynamic_cast<Performance *> (output))
            output_paper_book->add_performance (perf->self_scm ());
          else if (Paper_score *pscore = dynamic_cast<Paper_score *> (output))
@@ -241,7 +241,7 @@ Book::process_score (SCM s, Paper_book *output_paper_book, Output_def *layout)
                output_paper_book->add_score (score->get_header ());
              output_paper_book->add_score (pscore->self_scm ());
            }
-                 
+
          outputs = scm_cdr (outputs);
        }
     }
@@ -250,7 +250,7 @@ Book::process_score (SCM s, Paper_book *output_paper_book, Output_def *layout)
     output_paper_book->add_score (scm_car (s));
   else
     assert (0);
-    
+
 }
 
 /* Concatenate all score or book part outputs into a Paper_book
index 141f7313e45d266c8489137d16c97cff1a411d98..f0ac33d25ab0f134a62e1ff0042bc04e35981170 100644 (file)
@@ -54,10 +54,10 @@ class Chord_tremolo_engraver : public Engraver
 protected:
   Stream_event *repeat_;
 
-  // current direction of beam (first RIGHT, then LEFT)
-  Direction beam_dir_;
-
   Spanner *beam_;
+  // Store the pointer to the previous stem, so we can create a beam if
+  // necessary and end the spanner
+  Grob *previous_stem_;
 
 protected:
   virtual void finalize ();
@@ -70,7 +70,7 @@ Chord_tremolo_engraver::Chord_tremolo_engraver ()
 {
   beam_ = 0;
   repeat_ = 0;
-  beam_dir_ = CENTER;
+  previous_stem_ = 0;
 }
 
 IMPLEMENT_TRANSLATOR_LISTENER (Chord_tremolo_engraver, tremolo_span);
@@ -80,18 +80,15 @@ Chord_tremolo_engraver::listen_tremolo_span (Stream_event *ev)
   Direction span_dir = to_dir (ev->get_property ("span-direction"));
   if (span_dir == START)
     {
-      if (ASSIGN_EVENT_ONCE (repeat_, ev))
-       {
-         beam_dir_ = RIGHT;
-       }
+      ASSIGN_EVENT_ONCE (repeat_, ev);
     }
   else if (span_dir == STOP)
     {
       if (!repeat_)
-       ev->origin ()->warning (_ ("No tremolo to end"));
+        ev->origin ()->warning (_ ("No tremolo to end"));
       repeat_ = 0;
       beam_ = 0;
-      beam_dir_ = CENTER;
+      previous_stem_ = 0;
     }
 }
 
@@ -126,17 +123,26 @@ Chord_tremolo_engraver::acknowledge_stem (Grob_info info)
       int gap_count = min (flags, intlog2 (repeat_count) + 1);
 
       Grob *s = info.grob ();
-      Stem::set_beaming (s, flags, beam_dir_);
+      if (previous_stem_)
+        {
+          // FIXME: We know that the beam has ended only in listen_tremolo_span
+          //        but then it is too late for Spanner_break_forbid_engraver
+          //        to allow a line break... So, as a nasty hack, announce the
+          //        spanner's end after each note except the first. The only
+          //        "drawback" is that for multi-note tremolos a break would
+          //        theoretically be allowed after the second note (but since
+          //        that note is typically not at a barline, I don't think
+          //        anyone will ever notice!)
+          announce_end_grob (beam_, previous_stem_->self_scm ());
+          // Create the whole beam between previous and current note
+          Stem::set_beaming (previous_stem_, flags, RIGHT);
+          Stem::set_beaming (s, flags, LEFT);
+        }
 
       if (Stem::duration_log (s) != 1)
-       beam_->set_property ("gap-count", scm_from_int (gap_count));
+        beam_->set_property ("gap-count", scm_from_int (gap_count));
+
 
-      if (beam_dir_ == RIGHT)
-       {
-         beam_dir_ = LEFT;
-         announce_end_grob (beam_, s->self_scm ());
-       }
-      
       if (info.ultimate_event_cause ()->in_event_class ("rhythmic-event"))
        Beam::add_stem (beam_, s);
       else
@@ -147,6 +153,9 @@ Chord_tremolo_engraver::acknowledge_stem (Grob_info info)
          else
            ::warning (s);
        }
+      // Store current grob, so we can possibly end the spanner here (and
+      // reset the beam direction to RIGHT)
+      previous_stem_ = s;
     }
 }
 
index e6c4dd604abc8b524a758ebcfa0b17c714dcb8b1..4a64221fa9f6bfeb836935336bb1f9aa2b0aeb12 100644 (file)
@@ -40,11 +40,6 @@ Chord_tremolo_iterator::get_music_list () const
 
   int elt_count = body_is_sequential ? scm_ilength (body->get_property ("elements")) : 1;
 
-  if (body_is_sequential &&
-      (elt_count != 2
-       && elt_count != 1))
-    mus->origin ()->warning (_f ("expect 2 elements for chord tremolo, found %d", elt_count));
-
   if (elt_count <= 0)
     elt_count = 1;
 
@@ -57,7 +52,7 @@ Chord_tremolo_iterator::get_music_list () const
       return scm_list_2 (ev->unprotect (), body->self_scm ());
     }
   else
-    { 
+    {
       SCM tremolo_symbol = ly_symbol2scm ("TremoloSpanEvent");
       SCM start_event_scm = scm_call_2 (ly_lily_module_constant ("make-span-event"), tremolo_symbol, scm_from_int (START));
       unsmob_music (start_event_scm)->set_spot (*origin);
index 8e08d1fc87dc25d81924b53c6d92692b1612da51..0779c133a1d807e73ad3a3485ce0165f4cfb39b1 100644 (file)
@@ -383,30 +383,51 @@ Constrained_breaking::initialize ()
   /* NOTE: currently, we aren't using the space_ field of a
      Line_details for anything.  That's because the approximations
      used for scoring a page configuration don't actually space things
-     properly (for speed reasong) using springs anchored at the staff
+     properly (for speed reasons) using springs anchored at the staff
      refpoints.  Rather, the "space" is placed between the extent
      boxes.  To get a good result, therefore, the "space" value for
      page breaking needs to be much smaller than the "space" value for
-     page layout.  Currently, we just make it zero always.
+     page layout.  Currently, we just make it zero always, which means
+     that we will always prefer a tighter vertical layout.
   */
   between_system_space_ = 0;
   between_system_padding_ = 0;
+  between_system_min_distance_ = 0;
+  between_scores_system_padding_ = 0;
+  between_scores_system_min_distance_ = 0;
   before_title_padding_ = 0;
+  before_title_min_distance_ = 0;
 
   Output_def *l = pscore_->layout ();
 
   SCM spacing_spec = l->c_variable ("between-system-spacing");
+  SCM between_scores_spec = l->c_variable ("between-scores-system-spacing");
   SCM title_spec = l->c_variable ("before-title-spacing");
   SCM page_breaking_spacing_spec = l->c_variable ("page-breaking-between-system-spacing");
   Page_layout_problem::read_spacing_spec (spacing_spec,
                                          &between_system_padding_,
                                          ly_symbol2scm ("padding"));
+  Page_layout_problem::read_spacing_spec (between_scores_spec,
+                                         &between_scores_system_padding_,
+                                         ly_symbol2scm ("padding"));
   Page_layout_problem::read_spacing_spec (page_breaking_spacing_spec,
                                          &between_system_padding_,
                                          ly_symbol2scm ("padding"));
   Page_layout_problem::read_spacing_spec (title_spec,
                                          &before_title_padding_,
                                          ly_symbol2scm ("padding"));
+  Page_layout_problem::read_spacing_spec (between_scores_spec,
+                                         &between_scores_system_min_distance_,
+                                         ly_symbol2scm ("minimum-distance"));
+  Page_layout_problem::read_spacing_spec (spacing_spec,
+                                         &between_system_min_distance_,
+                                         ly_symbol2scm ("minimum-distance"));
+  Page_layout_problem::read_spacing_spec (page_breaking_spacing_spec,
+                                         &between_system_min_distance_,
+                                         ly_symbol2scm ("minimum-distance"));
+  Page_layout_problem::read_spacing_spec (title_spec,
+                                         &before_title_min_distance_,
+                                         ly_symbol2scm ("minimum-distance"));
 
   Interval first_line = line_dimensions_int (pscore_->layout (), 0);
   Interval other_lines = line_dimensions_int (pscore_->layout (), 1);
@@ -460,6 +481,7 @@ Constrained_breaking::fill_line_details (Line_details *const out, vsize start, v
   System *sys = pscore_->root_system ();
   Interval begin_of_line_extent = sys->begin_of_line_pure_height (start_rank, end_rank);
   Interval rest_of_line_extent = sys->rest_of_line_pure_height (start_rank, end_rank);
+  bool last = (end == breaks_.size () - 1);
 
   Grob *c = all_[breaks_[end]];
   out->last_column_ = c;
@@ -486,8 +508,10 @@ Constrained_breaking::fill_line_details (Line_details *const out, vsize start, v
                         || isnan (rest_of_line_extent[RIGHT]))
     ? Interval (0, 0) : rest_of_line_extent;
   out->shape_ = Line_shape (begin_of_line_extent, rest_of_line_extent);
-  out->padding_ = between_system_padding_;
+  out->padding_ = last ? between_scores_system_padding_ : between_system_padding_;
   out->title_padding_ = before_title_padding_;
+  out->min_distance_ = last ? between_scores_system_min_distance_ : between_system_min_distance_;
+  out->title_min_distance_ = before_title_min_distance_;
   out->space_ = between_system_space_;
   out->inverse_hooke_ = out->full_height () + between_system_space_;
 }
@@ -509,6 +533,8 @@ Line_details::Line_details (Prob *pb, Output_def *paper)
   title_padding_ = 0;
   Page_layout_problem::read_spacing_spec (spec, &padding_, ly_symbol2scm ("padding"));
   Page_layout_problem::read_spacing_spec (title_spec, &title_padding_, ly_symbol2scm ("padding"));
+  Page_layout_problem::read_spacing_spec (spec, &min_distance_, ly_symbol2scm ("minimum-distance"));
+  Page_layout_problem::read_spacing_spec (title_spec, &title_min_distance_, ly_symbol2scm ("minimum-distance"));
 
   last_column_ = 0;
   force_ = 0;
@@ -532,6 +558,7 @@ Line_details::Line_details (Prob *pb, Output_def *paper)
   SCM first_scm = pb->get_property ("first-markup-line");
   first_markup_line_ = to_boolean (first_scm);
   tight_spacing_ = to_boolean (pb->get_property ("tight-spacing"));
+  first_refpoint_offset_ = 0;
 }
 
 Real
index 2ddfdd38c0390ea60b8503059a7f95ecb0e5b5bd..8c78481316a1aa418ac2ccf5614e04883d341f9d 100644 (file)
@@ -121,6 +121,12 @@ Includable_lexer::new_input (string name, string data, Sources *sources)
   yy_switch_to_buffer (yy_create_buffer (file->get_istream (), YY_BUF_SIZE));
 }
 
+void
+Includable_lexer::add_string_include (string data)
+{
+  pending_string_includes_.push_back (data);
+}
+
 /** pop the inputstack.  conceptually this is a destructor, but it
     does not destruct the Source_file that Includable_lexer::new_input
     creates.  */
index a9b3ed90dabae1e10e3866ac1ee920f5019109de..aeea3565a0d7d4c76b60e450707a40dacd860265 100644 (file)
@@ -17,8 +17,8 @@
   along with LilyPond.  If not, see <http://www.gnu.org/licenses/>.
 */
 
-#ifndef BAR_HH
-#define BAR_HH
+#ifndef BAR_LINE_HH
+#define BAR_LINE_HH
 
 #include "lily-proto.hh"
 #include "grob-interface.hh"
@@ -33,10 +33,11 @@ public:
   static Stencil compound_barline (Grob *, string, Real height, bool rounded);
   static Stencil simple_barline (Grob *, Real wid, Real height, bool rounded);
   static Interval bar_y_extent (Grob *, Grob *);
+  static bool non_empty_barline (Grob *me);
+
   DECLARE_SCHEME_CALLBACK (calc_bar_extent, (SCM));
   DECLARE_SCHEME_CALLBACK (calc_bar_size, (SCM));
   DECLARE_SCHEME_CALLBACK (print, (SCM));
   DECLARE_SCHEME_CALLBACK (calc_anchor, (SCM));
 };
-#endif // BAR_HH
-
+#endif // BAR_LINE_HH
diff --git a/lily/include/beam-settings.hh b/lily/include/beam-settings.hh
deleted file mode 100644 (file)
index 9c9e3ca..0000000
+++ /dev/null
@@ -1,29 +0,0 @@
-/*
-  This file is part of LilyPond, the GNU music typesetter.
-
-  Copyright (C) 2009--2010 Carl Sorensen <c_sorensen@byu.edu>
-
-  LilyPond is free software: you can redistribute it and/or modify
-  it under the terms of the GNU General Public License as published by
-  the Free Software Foundation, either version 3 of the License, or
-  (at your option) any later version.
-
-  LilyPond is distributed in the hope that it will be useful,
-  but WITHOUT ANY WARRANTY; without even the implied warranty of
-  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-  GNU General Public License for more details.
-
-  You should have received a copy of the GNU General Public License
-  along with LilyPond.  If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#ifndef BEAM_SETTINGS_HH
-#define BEAM_SETTINGS_HH
-
-#include "lily-guile.hh"
-
-SCM ly_grouping_rules (SCM settings, SCM time_sig, SCM rule_type);
-SCM ly_beam_grouping (SCM settings, SCM time_sig, SCM rule_type,
-                      SCM beam_type);
-SCM ly_beat_grouping (SCM context);
-#endif // BEAM_SETTINGS_HH
index 7fb07fc947a067c846e6403d524370a58f5f2088..a9bb44ae9f19f6d122ff53fd3f2f1775268d805b 100644 (file)
@@ -28,7 +28,7 @@ struct Beaming_options
 {
   SCM grouping_;
   bool subdivide_beams_;
-  Moment beat_length_;
+  Moment base_moment_;
   Moment measure_length_;
 
   Beaming_options ();
index fbe12eb05be5e6a81f018a9844911649a30326e2..c461859f7c92e6a549ddeb5d8bc8bb4602f1dab8 100644 (file)
@@ -49,6 +49,8 @@ struct Line_details {
   Real padding_;  /* compulsory space after this system (if we're not
                     last on a page) */
   Real title_padding_;
+  Real min_distance_;
+  Real title_min_distance_;
   Real bottom_padding_;
   Real space_;    /* spring length */
   Real inverse_hooke_;
@@ -72,6 +74,7 @@ struct Line_details {
   bool last_markup_line_;
   bool first_markup_line_;
   bool tight_spacing_;
+  Real first_refpoint_offset_;
 
   Line_details ()
   {
@@ -80,6 +83,8 @@ struct Line_details {
     padding_ = 0;
     title_padding_ = 0;
     bottom_padding_ = 0;
+    min_distance_ = 0;
+    title_min_distance_ = 0;
     space_ = 0;
     inverse_hooke_ = 1;
     tight_spacing_ = false;
@@ -95,6 +100,7 @@ struct Line_details {
     last_markup_line_ = false;
     first_markup_line_ = false;
     tallness_ = 0;
+    first_refpoint_offset_ = 0;
   }
 
   Line_details (Prob *pb, Output_def *paper);
@@ -150,9 +156,14 @@ private:
   vsize systems_;
   bool ragged_right_;
   bool ragged_last_;
+
+  Real between_system_min_distance_;
+  Real between_system_padding_;
   Real between_system_space_;
+  Real between_scores_system_min_distance_;
+  Real between_scores_system_padding_;
+  Real before_title_min_distance_;
   Real before_title_padding_;
-  Real between_system_padding_;
 
   /* the (i,j)th entry is the configuration for breaking between
     columns i and j */
index 9df81461dbf1a352c16d5f74b90529ddb401a089..cad1e45d71bd3181ed2879e5c065193fa0e2d38f 100644 (file)
@@ -42,6 +42,7 @@ protected:
   bool close_input ();
   vector<Source_file*> include_stack_;
   vector<int> char_count_stack_;
+  vector<string> pending_string_includes_;
 
 public:
 
@@ -56,6 +57,7 @@ public:
   virtual void new_input (string s, Sources *);
   
   void new_input (string name, string data, Sources *);
+  void add_string_include (string data);
   
   char const *here_str0 () const;
 };
index a3f5667b74abb9a2f96a5f651227d6adfc19d14e..2961ffbb908b7dfd2dab8c53c26e63c860962547 100644 (file)
@@ -63,6 +63,7 @@ public:
   void clear ();
   void do_init_file ();
   void do_yyparse ();
+  void include_string (string ly_code);
   void parse_file (string init, string name, string out_name);
   void parse_string (string ly_code);
   void parser_error (string);
index 0a7fdc8726c7a305fd099eb6a7f6af9a3b8f3a97..89fbbefa806e7f0684598b28330b83720432cfae 100644 (file)
@@ -22,7 +22,7 @@
 #include "config.hh"
 #include "lily-guile.hh"
 
-SCM ly_make_anonymous_module (bool safe);
+SCM ly_make_module (bool safe);
 SCM ly_module_copy (SCM dest, SCM src);
 SCM ly_module_2_alist (SCM mod);
 SCM ly_module_lookup (SCM module, SCM sym);
@@ -30,8 +30,7 @@ SCM ly_modules_lookup (SCM modules, SCM sym, SCM);
 SCM ly_module_symbols (SCM mod);
 void ly_reexport_module (SCM mod);
 inline bool ly_is_module (SCM x) { return SCM_MODULEP (x); }
-SCM ly_clear_anonymous_modules ();
-void clear_anonymous_modules ();
+
 SCM ly_use_module (SCM mod, SCM used);
 
 /* For backward compatability with Guile 1.8 */
@@ -40,7 +39,6 @@ typedef SCM (*scm_t_hash_fold_fn) (GUILE_ELLIPSIS);
 typedef SCM (*scm_t_hash_handle_fn) (GUILE_ELLIPSIS);
 #endif
 
-#define MODULE_GC_KLUDGE
 
 #endif /* LY_MODULE_HH */
 
index 05da0624c56afe256ba2349a94f32a94c1619c5e..579293d2a40e0d040701dfc7eed116dcd6e29fae 100644 (file)
@@ -31,6 +31,7 @@ public:
   DECLARE_SCHEME_CALLBACK (brew_ez_stencil, (SCM));
   DECLARE_SCHEME_CALLBACK (stem_x_shift, (SCM));
   DECLARE_SCHEME_CALLBACK (calc_stem_attachment, (SCM));
+  DECLARE_SCHEME_CALLBACK (include_ledger_line_height, (SCM));
   DECLARE_GROB_INTERFACE();
 
   static Real stem_attachment_coordinate (Grob *, Axis a);
index e58ece9f22238e944f803129ad8be2c9f47fc37b..e97533ed1d48b257ca28c3cec2f6392243be4d90 100644 (file)
@@ -58,8 +58,7 @@ public:
   static bool is_breakable (Grob *);
   static bool is_extraneous_column_from_ligature (Grob *);
   static Real minimum_distance (Grob *l, Grob *r);
-  static Interval break_align_width (Grob *me);
+  static Interval break_align_width (Grob *me, SCM align_sym);
 };
 
 #endif // PAPER_COLUMN_HH
-
index d669038dc84eb30f7d18d5b27d71afee7243b790..e7b87e799a663071002207c17f7e85571a78f7d1 100644 (file)
@@ -36,6 +36,7 @@ public:
   static int get_steps (Grob *);
   static int line_count (Grob *);
   static bool on_line (Grob *me, int pos);
+  static Interval line_span (Grob *);
   DECLARE_SCHEME_CALLBACK (print, (SCM));
   DECLARE_SCHEME_CALLBACK (height, (SCM));  
   DECLARE_GROB_INTERFACE();
index aaa95d79807454ffccf058d6790563b622493574..5f4aa8ef6259d40436aace19684cc33a8ec0b2ea 100644 (file)
@@ -51,6 +51,7 @@ using namespace std;
 #include "interval.hh"
 #include "lily-guile.hh"
 #include "lily-lexer.hh"
+#include "lily-parser.hh"
 #include "lilypond-version.hh"
 #include "main.hh"
 #include "music.hh"
@@ -366,6 +367,11 @@ BOM_UTF8   \357\273\277
                yylval.scm = unpack_identifier(sval);
                return identifier_type (yylval.scm);
        }
+
+       for (size_t i = 0; i < pending_string_includes_.size (); i++)
+               new_input ("<included string>", pending_string_includes_[i],
+                          parser_->sources_);
+       pending_string_includes_.clear ();
                
        yylval.scm = sval;
        return SCM_TOKEN;
index d3673f2cdfbbea141d3edf80b56727be4285953f..5a34d60bbe5146bcd6a14c4d4b32057bbda2c7af 100644 (file)
@@ -109,7 +109,7 @@ Lily_lexer::Lily_lexer (Sources *sources, Lily_parser *parser)
   chord_repetition_ = Chord_repetition ();
   smobify_self ();
 
-  add_scope (ly_make_anonymous_module (false));
+  add_scope (ly_make_module (false));
   push_note_state (scm_c_make_hash_table (0));
   chordmodifier_tab_ = scm_make_vector (scm_from_int (1), SCM_EOL);
 }
@@ -136,7 +136,7 @@ Lily_lexer::Lily_lexer (Lily_lexer const &src, Lily_parser *parser)
   SCM *tail = &scopes;
   for (SCM s = src.scopes_; scm_is_pair (s); s = scm_cdr (s))
     {
-      SCM newmod = ly_make_anonymous_module (false);
+      SCM newmod = ly_make_module (false);
       ly_module_copy (newmod, scm_car (s));
       *tail = scm_cons (newmod, SCM_EOL);
       tail = SCM_CDRLOC (*tail);
index a608111dcab2648bd814b3a63b31767b0ee1b0f5..2b968b46c00c124baef36f283771d31705c6784c 100644 (file)
@@ -205,6 +205,20 @@ LY_DEFINE (ly_parser_parse_string, "ly:parser-parse-string",
   return SCM_UNSPECIFIED;
 }
 
+LY_DEFINE (ly_parser_include_string, "ly:parser-include-string",
+          2, 0, 0, (SCM parser_smob, SCM ly_code),
+          "Include the string @var{ly-code} into the input stream"
+          " for @var{parser-smob}.")
+{
+  LY_ASSERT_SMOB (Lily_parser, parser_smob, 1);
+  Lily_parser *parser = unsmob_lily_parser (parser_smob);
+  LY_ASSERT_TYPE (scm_is_string, ly_code, 2);
+
+  parser->include_string (ly_scm2string (ly_code));
+
+  return SCM_UNSPECIFIED;
+}
+
 LY_DEFINE (ly_parser_set_note_names, "ly:parser-set-note-names",
           2, 0, 0, (SCM parser, SCM names),
           "Replace current note names in @var{parser}."
index 6d3e13072ad0c48bb753fd7f49ecf454b4250dff..e0722fd9800fbc9167c27abaaece0151a6be709d 100644 (file)
@@ -64,7 +64,7 @@ Lily_parser::Lily_parser (Lily_parser const &src)
     {
       lexer_ = new Lily_lexer (*src.lexer_, this);
     }
-  
+
   lexer_->unprotect ();
 }
 
@@ -97,7 +97,7 @@ Lily_parser::print_smob (SCM s, SCM port, scm_print_state*)
 void
 Lily_parser::parse_file (string init, string name, string out_name)
 {
-  // TODO: use $parser 
+  // TODO: use $parser
   lexer_->set_identifier (ly_symbol2scm ("parser"), self_scm ());
   output_basename_ = out_name;
 
@@ -142,12 +142,12 @@ Lily_parser::parse_file (string init, string name, string out_name)
 void
 Lily_parser::parse_string (string ly_code)
 {
-  // TODO: use $parser 
+  // TODO: use $parser
   lexer_->set_identifier (ly_symbol2scm ("parser"),
                          self_scm ());
 
   lexer_->main_input_name_ = "<string>";
-  lexer_->is_main_input_ = true; 
+  lexer_->is_main_input_ = true;
   lexer_->new_input (lexer_->main_input_name_, ly_code, sources_);
 
   SCM mod = lexer_->set_current_scope ();
@@ -164,6 +164,12 @@ Lily_parser::parse_string (string ly_code)
   error_level_ = error_level_ | lexer_->error_level_;
 }
 
+void
+Lily_parser::include_string (string ly_code)
+{
+  lexer_->add_string_include (ly_code);
+}
+
 void
 Lily_parser::clear ()
 {
@@ -173,7 +179,7 @@ Lily_parser::clear ()
        lexer_->remove_scope ();
     }
 
-  lexer_ = 0;  
+  lexer_ = 0;
 }
 
 char const *
@@ -204,7 +210,7 @@ IMPLEMENT_DEFAULT_EQUAL_P (Lily_parser);
 
 
 /****************************************************************
-  OUTPUT-DEF 
+  OUTPUT-DEF
  ****************************************************************/
 
 Output_def *
@@ -214,7 +220,7 @@ get_layout (Lily_parser *parser)
   Output_def *layout = unsmob_output_def (id);
   layout = layout ? layout->clone () : new Output_def;
   layout->set_variable (ly_symbol2scm ("is-layout"), SCM_BOOL_T);
-    
+
   return layout;
 }
 
@@ -288,13 +294,13 @@ get_header (Lily_parser *parser)
       ly_module_copy (nid, id);
       id = nid;
     }
-  
+
   return id;
 }
 
-SCM 
+SCM
 Lily_parser::make_scope () const
 {
-  SCM module = ly_make_anonymous_module (be_safe_global);
-  return module;    
+  SCM module = ly_make_module (be_safe_global);
+  return module;
 }
index 7a6441036410d02f7b3dfe93951486b6236438cf..42ff2f8b063c85d514f2c27d5dc8e97135aa4f23 100644 (file)
 #include "std-string.hh"
 #include "protected-scm.hh"
 
-#ifdef MODULE_GC_KLUDGE
-Protected_scm anonymous_modules = SCM_EOL;
-bool perform_gc_kludge;
-#endif
-
-void
-clear_anonymous_modules ()
-{
-#ifdef MODULE_GC_KLUDGE
-  for (SCM s = anonymous_modules;
-       scm_is_pair (s);
-       s = scm_cdr (s))
-    {
-      SCM module = scm_car (s);
-      SCM closure = SCM_MODULE_EVAL_CLOSURE (module);
-      SCM prop = scm_procedure_property (closure, ly_symbol2scm ("module"));
-
-      if (ly_is_module (prop))
-       {
-         scm_set_procedure_property_x (closure, ly_symbol2scm ("module"),
-                                       SCM_BOOL_F);
-       }
-    }
-
-  anonymous_modules = SCM_EOL;
-#endif
-}
 
 SCM
-ly_make_anonymous_module (bool safe)
+ly_make_module (bool safe)
 {
   SCM mod = SCM_EOL;
   if (!safe)
@@ -74,10 +47,6 @@ ly_make_anonymous_module (bool safe)
       mod = scm_call_0 (proc);
     }
 
-#ifdef MODULE_GC_KLUDGE
-  if (perform_gc_kludge)
-    anonymous_modules = scm_cons (mod, anonymous_modules);
-#endif
 
   return mod;
 }
index c61dd74c45f2188b4eb52ced9d435dd8284e8b1d..91e9f6957df616ca54a764e7fda28f324be1616b 100644 (file)
@@ -22,7 +22,6 @@
 #include "global-context.hh"
 #include "engraver.hh"
 #include "spanner.hh"
-#include "beam-settings.hh"
 
 #include "translator.icc"
 
@@ -73,27 +72,18 @@ Measure_grouping_engraver::process_music ()
   if (now.grace_part_)
     return;
 
-  SCM settings = get_property ("beamSettings");
-  SCM grouping = SCM_EOL;
-  if (scm_is_pair (settings))
-    {
-      SCM time_signature_fraction = get_property ("timeSignatureFraction");
-      grouping = ly_beam_grouping (settings,
-                                   time_signature_fraction,
-                                   ly_symbol2scm ("end"),
-                                   ly_symbol2scm ("*"));
-    }
+  SCM grouping = get_property ("beatStructure");
   if (scm_is_pair (grouping))
     {
       Moment *measpos = unsmob_moment (get_property ("measurePosition"));
       Rational mp = measpos->main_part_;
 
-      Moment *beatlen_mom = unsmob_moment (get_property ("beatLength"));
-      Rational beat_length = beatlen_mom->main_part_;
+      Moment *base_mom = unsmob_moment (get_property ("baseMoment"));
+      Rational base_moment = base_mom->main_part_;
 
       Rational where (0);
       for (SCM s = grouping; scm_is_pair (s);
-          where += Rational ((int) scm_to_int (scm_car (s))) * beat_length,
+          where += Rational ((int) scm_to_int (scm_car (s))) * base_moment,
             s = scm_cdr (s))
        {
          int grouplen = scm_to_int (scm_car (s));
@@ -109,7 +99,7 @@ Measure_grouping_engraver::process_music ()
                 grouping_ = make_spanner ("MeasureGrouping", SCM_EOL);
                 grouping_->set_bound (LEFT, unsmob_grob (get_property ("currentMusicalColumn")));
 
-                stop_grouping_mom_ = now.main_part_ + Rational (grouplen - 1) * beat_length;
+                stop_grouping_mom_ = now.main_part_ + Rational (grouplen - 1) * base_moment;
                 get_global_context ()->add_moment_to_process (Moment (stop_grouping_mom_));
 
                 if (grouplen == 3)
@@ -138,10 +128,10 @@ ADD_TRANSLATOR (Measure_grouping_engraver,
                "MeasureGrouping ",
 
                /* read */
-               "beatLength "
+                "baseMoment "
+               "beatStructure "
                "currentMusicalColumn "
-               "measurePosition "
-               "beamSettings ",
+               "measurePosition ",
 
                /* write */
                ""
index b58bf15ffb60981cf584639f0fbe32bb07b0f9fc..72a32e480190e05664687f8553e83c6d03bfee8d 100644 (file)
@@ -53,17 +53,6 @@ LY_DEFINE (ly_module_copy, "ly:module-copy",
   return SCM_UNSPECIFIED;
 }
 
-LY_DEFINE (ly_clear_anonymous_modules, "ly:clear-anonymous-modules",
-          0, 0, 0, (),
-          "Plug a GUILE 1.6 and 1.7 memory leak by breaking a weak"
-          " reference pointer cycle explicitly.")
-{
-#ifdef MODULE_GC_KLUDGE
-  clear_anonymous_modules ();
-#endif
-
-  return SCM_UNSPECIFIED;
-}
 
 /* Lookup SYM, but don't give error when it is not defined.  */
 SCM
index a36d7c01ed071a53bd627c0c4aadd027617b6c60..c1268f857224525d09f7789cd37646adcb794ec2 100644 (file)
 
 #include "multi-measure-rest.hh"
 
-#include "warn.hh"
+#include "font-interface.hh"
+#include "lookup.hh"
+#include "misc.hh"
 #include "output-def.hh"
 #include "paper-column.hh" // urg
-#include "font-interface.hh"
+#include "percent-repeat-item.hh"
 #include "rest.hh"
-#include "misc.hh"
+#include "separation-item.hh"
 #include "spanner.hh"
 #include "staff-symbol-referencer.hh"
 #include "system.hh"
 #include "text-interface.hh"
-#include "percent-repeat-item.hh"
-#include "lookup.hh"
-#include "separation-item.hh"
+#include "warn.hh"
 
 Interval
 Multi_measure_rest::bar_width (Spanner *me)
 {
+  SCM spacing_pair = me->get_property ("spacing-pair");
   Interval iv;
   Direction d = LEFT;
   do
     {
       Item *col = me->get_bound (d)->get_column ();
-
-      Interval coldim = Paper_column::break_align_width (col);
+      SCM align_sym
+       = (scm_is_pair (spacing_pair)
+          ? index_get_cell (spacing_pair, d)
+          : ly_symbol2scm ("staff-bar"));
+      Interval coldim = Paper_column::break_align_width (col, align_sym);
 
       iv[d] = coldim[-d];
     }
-  while ((flip (&d)) != LEFT);
+  while (flip (&d) != LEFT);
 
   return iv;
 }
@@ -291,7 +295,7 @@ Multi_measure_rest::calculate_spacing_rods (Grob *me, Real length)
   if (! (sp->get_bound (LEFT) && sp->get_bound (RIGHT)))
     {
       programming_error ("Multi_measure_rest::get_rods (): I am not spanned!");
-      return ;
+      return;
     }
 
   Item *li = sp->get_bound (LEFT)->get_column ();
@@ -334,9 +338,9 @@ Multi_measure_rest::set_spacing_rods (SCM smob)
   Real sym_width = symbol_stencil (me, 0.0).extent (X_AXIS).length ();
   calculate_spacing_rods (me, sym_width);
 
-  return SCM_UNSPECIFIED;  
+  return SCM_UNSPECIFIED;
 }
-  
+
 MAKE_SCHEME_CALLBACK (Multi_measure_rest, set_text_rods, 1);
 SCM
 Multi_measure_rest::set_text_rods (SCM smob)
@@ -357,12 +361,12 @@ ADD_INTERFACE (Multi_measure_rest,
               "A rest that spans a whole number of measures.",
 
               /* properties */
+              "bound-padding "
               "expand-limit "
-              "measure-count "
               "hair-thickness "
+              "measure-count "
+              "minimum-length "
+              "spacing-pair "
               "thick-thickness "
               "use-breve-rest "
-              "bound-padding "
-              "minimum-length "
               );
-
index c63622bbc8452ee98c06103eb210ad97562c7676..18ac2fd43e3020f6100dcd9d26f3409e25417b5c 100644 (file)
@@ -27,9 +27,11 @@ using namespace std;
 
 #include "directional-element-interface.hh"
 #include "font-interface.hh"
+#include "grob.hh"
 #include "international.hh"
+#include "staff-symbol.hh"
+#include "staff-symbol-referencer.hh"
 #include "warn.hh"
-#include "grob.hh"
 
 static Stencil
 internal_print (Grob *me, string *font_char)
@@ -106,6 +108,31 @@ Note_head::print (SCM smob)
   return internal_print (me, &idx).smobbed_copy ();
 }
 
+MAKE_SCHEME_CALLBACK (Note_head, include_ledger_line_height, 1);
+SCM
+Note_head::include_ledger_line_height (SCM smob)
+{
+  Grob *me = unsmob_grob (smob);
+  Grob *staff = Staff_symbol_referencer::get_staff_symbol (me);
+
+  if (staff)
+    {
+      Real ss = Staff_symbol::staff_space (staff);
+      Interval lines = Staff_symbol::line_span (staff) * (ss / 2.0);
+      Real my_pos = Staff_symbol_referencer::get_position (me) * ss / 2.0;
+      Interval my_ext = me->extent (me, Y_AXIS) + my_pos;
+
+      // The +1 and -1 come from the fact that we only want to add
+      // the interval between the note and the first ledger line, not
+      // the whole interval between the note and the staff.
+      Interval iv (min (0.0, lines[UP] - my_ext[DOWN] + 1),
+                  max (0.0, lines[DOWN] - my_ext[UP] - 1));
+      return ly_interval2scm (iv);
+    }
+
+  return ly_interval2scm (Interval (0, 0));
+}
+
 Real
 Note_head::stem_attachment_coordinate (Grob *me, Axis a)
 {
index e12c1cd91e525d93decfb053f26706370204c7a7..076d34648d37036de3886984231fc5057970dd55 100644 (file)
 
 #include "note-spacing.hh"
 
+#include "accidental-placement.hh"
 #include "bar-line.hh"
 #include "directional-element-interface.hh"
 #include "grob-array.hh"
-#include "paper-column.hh"
 #include "moment.hh"
 #include "note-column.hh"
-#include "warn.hh"
-#include "stem.hh"
+#include "output-def.hh"
+#include "paper-column.hh"
+#include "pointer-group-interface.hh"
 #include "separation-item.hh"
 #include "spacing-interface.hh"
 #include "staff-spacing.hh"
-#include "accidental-placement.hh"
-#include "output-def.hh"
-#include "pointer-group-interface.hh"
-
-static bool
-non_empty_barline (Grob *me)
-{
-  return Bar_line::has_interface (me) && !me->extent (me, X_AXIS).is_empty ();
-}
+#include "stem.hh"
+#include "warn.hh"
 
 /*
   TODO: detect hshifts due to collisions, and account for them in
@@ -49,29 +43,29 @@ Spring
 Note_spacing::get_spacing (Grob *me, Item *right_col,
                           Real base_space, Real increment)
 {
-  vector<Item*> note_columns = Spacing_interface::left_note_columns (me);
+  vector<Item *> note_columns = Spacing_interface::left_note_columns (me);
   Real left_head_end = 0;
 
   for (vsize i = 0; i < note_columns.size (); i++)
     {
-       SCM r = note_columns[i]->get_object ("rest");
-       Grob *g = unsmob_grob (r);
-       Grob *col = note_columns[i]->get_column ();
-
-       if (!g)
-        g = Note_column::first_head (note_columns[i]);
-
-       /*
-        Ugh. If Stem is switched off, we don't know what the
-        first note head will be.
-       */
-       if (g)
-        {
-          if (g->common_refpoint (col, X_AXIS) != col)
-            programming_error ("Note_spacing::get_spacing (): Common refpoint incorrect");
-          else
-            left_head_end = g->extent (col, X_AXIS)[RIGHT];
-        }
+      SCM r = note_columns[i]->get_object ("rest");
+      Grob *g = unsmob_grob (r);
+      Grob *col = note_columns[i]->get_column ();
+
+      if (!g)
+       g = Note_column::first_head (note_columns[i]);
+
+      /*
+       Ugh. If Stem is switched off, we don't know what the
+       first note head will be.
+      */
+      if (g)
+       {
+         if (g->common_refpoint (col, X_AXIS) != col)
+           programming_error ("Note_spacing::get_spacing (): Common refpoint incorrect");
+         else
+           left_head_end = g->extent (col, X_AXIS)[RIGHT];
+       }
     }
 
   /*
@@ -97,7 +91,7 @@ Note_spacing::get_spacing (Grob *me, Item *right_col,
     {
       Grob *bar = Pointer_group_interface::find_grob (right_col,
                                                      ly_symbol2scm ("elements"),
-                                                     non_empty_barline);
+                                                     Bar_line::non_empty_barline);
 
       if (bar)
        {
@@ -125,7 +119,7 @@ knee_correction (Grob *note_spacing, Grob *right_stem, Real increment)
 {
   Real note_head_width = increment;
   Grob *head = right_stem ? Stem::support_head (right_stem) : 0;
-  Grob *rcolumn = dynamic_cast<Item*> (head)->get_column ();
+  Grob *rcolumn = dynamic_cast<Item *> (head)->get_column ();
 
   Interval head_extent;
   if (head)
@@ -170,44 +164,43 @@ same_direction_correction (Grob *note_spacing, Drul_array<Interval> head_posns)
 {
   /*
     Correct for the following situation:
-    
+
     X      X
     |      |
     |      |
     |   X  |
     |  |   |
     ========
-    
+
     ^ move the center one to the left.
-    
-    
+
+
     this effect seems to be much more subtle than the
     stem-direction stuff (why?), and also does not scale with the
     difference in stem length.
-    
+
   */
 
   Interval hp = head_posns[LEFT];
   hp.intersect (head_posns[RIGHT]);
   if (!hp.is_empty ())
     return 0;
-  
+
   Direction lowest
     = (head_posns[LEFT][DOWN] > head_posns[RIGHT][UP]) ? RIGHT : LEFT;
-  
+
   Real delta = head_posns[-lowest][DOWN] - head_posns[lowest][UP];
   Real corr = robust_scm2double (note_spacing->get_property ("same-direction-correction"), 0);
-  
+
   return (delta > 1) ? -lowest * corr : 0;
 }
 
-
 /*
-   Correct for optical illusions. See [Wanske] p. 138. The combination
-   up-stem + down-stem should get extra space, the combination
-   down-stem + up-stem less.
+  Correct for optical illusions. See [Wanske] p. 138. The combination
+  up-stem + down-stem should get extra space, the combination
+  down-stem + up-stem less.
 
-   TODO: have to check whether the stems are in the same staff.
+  TODO: have to check whether the stems are in the same staff.
 */
 void
 Note_spacing::stem_dir_correction (Grob *me, Item *rcolumn,
@@ -235,12 +228,12 @@ Note_spacing::stem_dir_correction (Grob *me, Item *rcolumn,
   Grob *bar = Spacing_interface::extremal_break_aligned_grob (me, RIGHT,
                                                              rcolumn->break_status_dir (),
                                                              &bar_xextent);
-  if (bar && dynamic_cast<Item*> (bar)->get_column () == rcolumn)
+  if (bar && dynamic_cast<Item *> (bar)->get_column () == rcolumn)
     bar_yextent = Staff_spacing::bar_y_positions (bar);
 
   do
     {
-      vector<Grob*> const &items (ly_scm2link_array (props [d]));
+      vector<Grob *> const &items (ly_scm2link_array (props [d]));
       for (vsize i = 0; i < items.size (); i++)
        {
          Item *it = dynamic_cast<Item *> (items[i]);
@@ -252,8 +245,8 @@ Note_spacing::stem_dir_correction (Grob *me, Item *rcolumn,
          /*
            Find accidentals which are sticking out of the right side.
          */
-        if (d == RIGHT)
-            acc_right = acc_right || Note_column::accidentals (it);
+         if (d == RIGHT)
+           acc_right = acc_right || Note_column::accidentals (it);
 
          Grob *stem = Note_column::get_stem (it);
 
@@ -286,8 +279,8 @@ Note_spacing::stem_dir_correction (Grob *me, Item *rcolumn,
                can't look at stem-end-position, since that triggers
                beam slope computations.
              */
-             Real stem_end = hp[stem_dir] +
-               stem_dir * robust_scm2double (stem->get_property ("length"), 7);
+             Real stem_end = hp[stem_dir]
+               stem_dir * robust_scm2double (stem->get_property ("length"), 7);
 
              stem_posns[d] = Interval (min (chord_start, stem_end),
                                        max (chord_start, stem_end));
index 252bcd2f199dd3f1e09f91e147486e48d74bf112..1d94cba652706ccbff3c741687459895c6b46230 100644 (file)
@@ -42,7 +42,7 @@ Output_def::Output_def ()
 
   smobify_self ();
 
-  scope_ = ly_make_anonymous_module (false);
+  scope_ = ly_make_module (false);
 }
 
 Output_def::Output_def (Output_def const &s)
@@ -52,7 +52,7 @@ Output_def::Output_def (Output_def const &s)
   smobify_self ();
 
   input_origin_ = s.input_origin_;
-  scope_ = ly_make_anonymous_module (false);
+  scope_ = ly_make_module (false);
   if (ly_is_module (s.scope_))
     ly_module_copy (scope_, s.scope_);
 }
index 83ffd90fd584a5e4f6a708ca0ac8f7d0137a74f3..aeeb7bb1b7eb555db4f37ea162524178d72c8050 100644 (file)
@@ -100,17 +100,17 @@ compress_lines (const vector<Line_details> &orig)
          Line_details const &old = ret.back ();
          Line_details compressed = orig[i];
          /*
-           "padding" is the padding below the current line.  The padding below
-           "old" (taking into account whether "old" is a title) is already
-           accounted for in the extent of the compressed line.  The padding
-           below the compressed line, therefore, should depend on whether its
-           bottom-most line is a title or not.
+           We must account for the padding between the lines that we are compressing.
+           The padding values come from "old," which is the upper system here. Note
+           the meaning of tight-spacing: if a system has tight-spacing, then the padding
+           _before_ it is ignored.
          */
          Real padding = 0;
          if (!orig[i].tight_spacing_)
            padding = orig[i].title_ ? old.title_padding_ : old.padding_;
 
          compressed.shape_ = old.shape_.piggyback (orig[i].shape_, padding);
+         compressed.first_refpoint_offset_ += compressed.shape_.rest_[UP] - old.shape_.rest_[UP];
          compressed.space_ += old.space_;
          compressed.inverse_hooke_ += old.inverse_hooke_;
 
@@ -858,19 +858,38 @@ Page_breaking::compute_line_heights ()
   Real prev_hanging = 0;
   Real prev_hanging_begin = 0;
   Real prev_hanging_rest = 0;
+  Real prev_refpoint_hanging = 0;
   for (vsize i = 0; i < cached_line_details_.size (); i++)
     {
       Line_shape shape = cached_line_details_[i].shape_;
       Real a = shape.begin_[UP];
       Real b = shape.rest_[UP];
-      Real midline_hanging = max (prev_hanging_begin + a, prev_hanging_rest + b);
-      Real hanging_begin = midline_hanging - shape.begin_[DOWN];
-      Real hanging_rest = midline_hanging - shape.rest_[DOWN];
+      bool title = cached_line_details_[i].title_;
+      Real refpoint_hanging = max (prev_hanging_begin + a, prev_hanging_rest + b);
+
+      if (i > 0)
+       {
+         Real padding = 0;
+         if (!cached_line_details_[i].tight_spacing_)
+           padding = title
+             ? cached_line_details_[i-1].title_padding_
+             : cached_line_details_[i-1].padding_;
+         Real min_dist = title
+           ? cached_line_details_[i-1].title_min_distance_
+           : cached_line_details_[i-1].min_distance_;
+         refpoint_hanging = max (refpoint_hanging + padding,
+                                 prev_refpoint_hanging + min_dist
+                                 + cached_line_details_[i].first_refpoint_offset_);
+       }
+
+      Real hanging_begin = refpoint_hanging - shape.begin_[DOWN];
+      Real hanging_rest = refpoint_hanging - shape.rest_[DOWN];
       Real hanging = max (hanging_begin, hanging_rest);
       cached_line_details_[i].tallness_ = hanging - prev_hanging;
       prev_hanging = hanging;
       prev_hanging_begin = hanging_begin;
       prev_hanging_rest = hanging_rest;
+      prev_refpoint_hanging = refpoint_hanging;
     }
 }
 
@@ -892,21 +911,13 @@ Page_breaking::min_page_count (vsize configuration, vsize first_page_num)
 
   for (vsize i = 0; i < cached_line_details_.size (); i++)
     {
-      Real padding = 0;
       Real ext_len;
       if (cur_rod_height > 0)
-        {
-          if (!cached_line_details_[i].tight_spacing_)
-            padding = (cached_line_details_[i].title_
-                      ? cached_line_details_[i - 1].title_padding_
-                      : cached_line_details_[i - 1].padding_);
-          ext_len = cached_line_details_[i].tallness_;
-        }
+       ext_len = cached_line_details_[i].tallness_;
       else
-        {
-          ext_len = cached_line_details_[i].full_height();
-        }
-      Real next_rod_height = cur_rod_height + ext_len + padding;
+       ext_len = cached_line_details_[i].full_height();
+
+      Real next_rod_height = cur_rod_height + ext_len;
       Real next_spring_height = cur_spring_height + cached_line_details_[i].space_;
       Real next_height = next_rod_height + (ragged () ? next_spring_height : 0)
        + min_whitespace_at_bottom_of_page (cached_line_details_[i]);
index 4120afb514116df57c7ecd5450f2a11ee4680120..33cf18a3fe8a64f52821229f96a3bd73e407ab1c 100644 (file)
@@ -56,8 +56,7 @@ Page_spacing::append_system (const Line_details &line)
       rod_height_ += line.full_height ();
       first_line_ = line;
     }
-  if (!line.tight_spacing_)
-    rod_height_ += line.title_ ? last_line_.title_padding_ : last_line_.padding_;
+
   spring_len_ += line.space_;
   inverse_spring_k_ += line.inverse_hooke_;
 
@@ -69,9 +68,7 @@ Page_spacing::append_system (const Line_details &line)
 void
 Page_spacing::prepend_system (const Line_details &line)
 {
-  if (rod_height_ && !first_line_.tight_spacing_)
-    rod_height_ += first_line_.title_ ? line.title_padding_ : line.padding_;
-  else
+  if (!rod_height_)
     last_line_ = line;
 
   rod_height_ -= first_line_.full_height ();
index 24d76a163abbacbafa63eabc06948b0a08da79b2..ac0e1fbde66b1adb2cabd745ddb90e1273d706f8 100644 (file)
@@ -20,6 +20,7 @@
 #include "paper-column.hh"
 
 #include "axis-group-interface.hh"
+#include "bar-line.hh"
 #include "break-align-interface.hh"
 #include "font-interface.hh"
 #include "grob-array.hh"
@@ -96,20 +97,20 @@ Paper_column::Paper_column (Paper_column const &src)
 }
 
 int
-Paper_column::compare (Grob * const &a,
-                      Grob * const &b)
+Paper_column::compare (Grob *const &a,
+                      Grob *const &b)
 {
-  return sign (dynamic_cast<Paper_column*> (a)->rank_
-              - dynamic_cast<Paper_column*> (b)->rank_);
+  return sign (dynamic_cast<Paper_column *> (a)->rank_
+              - dynamic_cast<Paper_column *> (b)->rank_);
 }
 
 bool
 Paper_column::less_than (Grob *const &a,
                         Grob *const &b)
 {
-  Paper_column *pa = dynamic_cast<Paper_column*> (a);
-  Paper_column *pb = dynamic_cast<Paper_column*> (b);
-  
+  Paper_column *pa = dynamic_cast<Paper_column *> (a);
+  Paper_column *pb = dynamic_cast<Paper_column *> (b);
+
   return pa->rank_ < pb->rank_;
 }
 
@@ -142,7 +143,7 @@ Paper_column::is_used (Grob *me)
   extract_grob_set (me, "bounded-by-me", bbm);
   if (bbm.size ())
     return true;
-  
+
   if (Paper_column::is_breakable (me))
     return true;
 
@@ -160,7 +161,7 @@ Paper_column::is_breakable (Grob *me)
 Real
 Paper_column::minimum_distance (Grob *left, Grob *right)
 {
-  Drul_array<Grob*> cols (left, right);
+  Drul_array<Grob *> cols (left, right);
   Drul_array<Skyline> skys = Drul_array<Skyline> (Skyline (RIGHT), Skyline (LEFT));
 
   Direction d = LEFT;
@@ -178,18 +179,37 @@ Paper_column::minimum_distance (Grob *left, Grob *right)
 }
 
 Interval
-Paper_column::break_align_width (Grob *me)
+Paper_column::break_align_width (Grob *me, SCM align_sym)
 {
   Grob *p = me->get_parent (X_AXIS);
 
   if (is_musical (me))
     {
-      me->programming_error ("tried to get break-align-width of a non-musical column");
+      me->programming_error ("tried to get break-align-width of a musical column");
       return Interval (0, 0) + me->relative_coordinate (p, X_AXIS);
     }
 
-  Grob *align = Pointer_group_interface::find_grob (me, ly_symbol2scm ("elements"),
-                                                   Break_alignment_interface::has_interface);
+  Grob *align = 0;
+  if (align_sym == ly_symbol2scm ("staff-bar")
+      || align_sym == ly_symbol2scm ("break-alignment"))
+    align
+      = Pointer_group_interface::find_grob (me, ly_symbol2scm ("elements"),
+                                           (align_sym == ly_symbol2scm ("staff-bar")
+                                            ? Bar_line::non_empty_barline
+                                            : Break_alignment_interface::has_interface));
+  else
+    {
+      extract_grob_set (me, "elements", elts);
+      for (vsize i = 0; i < elts.size (); i++)
+       {
+         if (elts[i]->get_property ("break-align-symbol") == align_sym)
+           {
+             align = elts[i];
+             break;
+           }
+       }
+    }
+
   if (!align)
     return Interval (0, 0) + me->relative_coordinate (p, X_AXIS);
 
@@ -203,7 +223,7 @@ MAKE_SCHEME_CALLBACK (Paper_column, print, 1);
 SCM
 Paper_column::print (SCM p)
 {
-  Paper_column *me = dynamic_cast<Paper_column*> (unsmob_grob (p));
+  Paper_column *me = dynamic_cast<Paper_column *> (unsmob_grob (p));
 
   string r = to_string (Paper_column::get_rank (me));
 
@@ -226,11 +246,11 @@ Paper_column::print (SCM p)
 
   Stencil l = Lookup::filled_box (Box (Interval (-0.01, 0.01),
                                       Interval (-2, -1)));
-  
+
   SCM small_letters = scm_cons (scm_acons (ly_symbol2scm ("font-size"),
                                           scm_from_int (-6), SCM_EOL),
                                properties);
-  
+
   int j = 0;
   for (SCM s = me->get_object ("ideal-distances");
        scm_is_pair (s); s = scm_cdr (s))
@@ -239,7 +259,7 @@ Paper_column::print (SCM p)
       if (!unsmob_grob (scm_cdar (s))
          || !unsmob_grob (scm_cdar (s))->get_system ())
        continue;
-      
+
       j++;
       Real y = -j * 1 -3;
       vector<Offset> pts;
@@ -247,30 +267,30 @@ Paper_column::print (SCM p)
 
       Offset p2 (sp->distance (), y);
       pts.push_back (p2);
-      
+
       Stencil id_stencil = Lookup::points_to_line_stencil (0.1, pts);
       Stencil head (musfont->find_by_name ("arrowheads.open.01"));
 
       SCM distance_stc = Text_interface::interpret_markup (me->layout ()->self_scm (),
                                                           small_letters,
                                                           ly_string2scm (String_convert::form_string ("%5.2lf", sp->distance ())));
-      
-      id_stencil.add_stencil (unsmob_stencil (distance_stc)->translated (Offset (sp->distance ()/3, y+1)));
+
+      id_stencil.add_stencil (unsmob_stencil (distance_stc)->translated (Offset (sp->distance () / 3, y + 1)));
       id_stencil.add_stencil (head.translated (p2));
       id_stencil = id_stencil.in_color (0,0,1);
       l.add_stencil (id_stencil);
     }
-   
+
   for (SCM s = me->get_object ("minimum-distances");
        scm_is_pair (s); s = scm_cdr (s))
     {
       Real dist = scm_to_double (scm_cdar (s));
-      Grob *other =  unsmob_grob (scm_caar (s));
+      Grob *other = unsmob_grob (scm_caar (s));
       if (!other || other->get_system () != me->get_system ())
        continue;
 
       j++;
-      
+
       Real y = -j * 1.0 -3.5;
       vector<Offset> pts;
       pts.push_back (Offset (0, y));
@@ -287,10 +307,9 @@ Paper_column::print (SCM p)
                                                           small_letters,
                                                           ly_string2scm (String_convert::form_string ("%5.2lf",
                                                                                                       dist)));
-          
-      id_stencil.add_stencil (unsmob_stencil (distance_stc)->translated (Offset (dist/3, y-1)));
-       
+
+      id_stencil.add_stencil (unsmob_stencil (distance_stc)->translated (Offset (dist / 3, y - 1)));
+
       id_stencil = id_stencil.in_color (1,0,0);
       l.add_stencil (id_stencil);
     }
@@ -317,7 +336,7 @@ Paper_column::before_line_breaking (SCM grob)
   if (!ga)
     return SCM_UNSPECIFIED;
 
-  vector<Grob*> &array (ga->array_reference ());
+  vector<Grob *> &array (ga->array_reference ());
 
   for (vsize i = array.size (); i--;)
     {
@@ -351,14 +370,13 @@ Paper_column::is_extraneous_column_from_ligature (Grob *me)
       if (Rhythmic_head::has_interface (elts[i]))
        {
          has_notehead = true;
-         if (dynamic_cast<Item*> (elts[i])->get_column () == me)
+         if (dynamic_cast<Item *> (elts[i])->get_column () == me)
            return false;
        }
     }
   return has_notehead;
 }
 
-
 ADD_INTERFACE (Paper_column,
               "@code{Paper_column} objects form the top-most X@tie{}parents"
               " for items.  There are two types of columns: musical and"
@@ -392,6 +410,5 @@ ADD_INTERFACE (Paper_column,
               "shortest-starter-duration "
               "spacing "
               "used "
-              "when "
-              );
+              "when ");
 
index fb537a3db299c83d0860b7f85991d7a006662555..31550fbbe7c9cac93c55e6ed8c355b96de0d7219 100644 (file)
@@ -94,7 +94,7 @@ Score::Score (Score const &s)
   error_found_ = s.error_found_;
 
   smobify_self ();
-  input_location_ = make_input (*s.origin ()); 
+  input_location_ = make_input (*s.origin ());
 
   Music *m = unsmob_music (s.music_);
   if (m)
@@ -111,7 +111,7 @@ Score::Score (Score const &s)
       defs_.push_back (copy);
       copy->unprotect ();
     }
-  header_ = ly_make_anonymous_module (false);
+  header_ = ly_make_module (false);
   if (ly_is_module (s.header_))
     ly_module_copy (header_, s.header_);
 }
diff --git a/lily/self-aligment-interface.cc b/lily/self-aligment-interface.cc
deleted file mode 100644 (file)
index 47607b0..0000000
+++ /dev/null
@@ -1,176 +0,0 @@
-/*
-  This file is part of LilyPond, the GNU music typesetter.
-
-  Copyright (C) 2004--2010 Han-Wen Nienhuys <hanwen@xs4all.nl>
-
-  LilyPond is free software: you can redistribute it and/or modify
-  it under the terms of the GNU General Public License as published by
-  the Free Software Foundation, either version 3 of the License, or
-  (at your option) any later version.
-
-  LilyPond is distributed in the hope that it will be useful,
-  but WITHOUT ANY WARRANTY; without even the implied warranty of
-  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-  GNU General Public License for more details.
-
-  You should have received a copy of the GNU General Public License
-  along with LilyPond.  If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#include "self-alignment-interface.hh"
-
-#include "warn.hh"
-#include "paper-column.hh"
-#include "grob.hh"
-
-MAKE_SCHEME_CALLBACK (Self_alignment_interface, y_aligned_on_self, 1);
-SCM
-Self_alignment_interface::y_aligned_on_self (SCM element)
-{
-  return aligned_on_self (unsmob_grob (element), Y_AXIS, false, 0, 0);
-}
-
-MAKE_SCHEME_CALLBACK (Self_alignment_interface, x_aligned_on_self, 1);
-SCM
-Self_alignment_interface::x_aligned_on_self (SCM element)
-{
-  return aligned_on_self (unsmob_grob (element), X_AXIS, false, 0, 0);
-}
-
-MAKE_SCHEME_CALLBACK (Self_alignment_interface, pure_y_aligned_on_self, 3);
-SCM
-Self_alignment_interface::pure_y_aligned_on_self (SCM smob, SCM start, SCM end)
-{
-  return aligned_on_self (unsmob_grob (smob), Y_AXIS, true, robust_scm2int (start, 0), robust_scm2int (end, INT_MAX));
-}
-
-SCM
-Self_alignment_interface::aligned_on_self (Grob *me, Axis a, bool pure, int start, int end)
-{
-  SCM sym = (a == X_AXIS) ? ly_symbol2scm ("self-alignment-X")
-    : ly_symbol2scm ("self-alignment-Y");
-
-  SCM align (me->internal_get_property (sym));
-  if (scm_is_number (align))
-    {
-      Interval ext (me->maybe_pure_extent (me, a, pure, start, end));
-      if (ext.is_empty ())
-       programming_error ("cannot align on self: empty element");
-      else
-       return scm_from_double (- ext.linear_combination (scm_to_double (align)));
-    }
-  return scm_from_double (0.0);
-}
-
-
-
-SCM
-Self_alignment_interface::centered_on_object (Grob *him, Axis a)
-{
-  return scm_from_double (robust_relative_extent (him, him, a).center ());
-}
-
-
-MAKE_SCHEME_CALLBACK (Self_alignment_interface, centered_on_x_parent, 1);
-SCM
-Self_alignment_interface::centered_on_x_parent (SCM smob)
-{
-  return centered_on_object (unsmob_grob (smob)->get_parent (X_AXIS), X_AXIS);
-}
-
-
-MAKE_SCHEME_CALLBACK (Self_alignment_interface, centered_on_y_parent, 1);
-SCM
-Self_alignment_interface::centered_on_y_parent (SCM smob)
-{
-  return centered_on_object (unsmob_grob (smob)->get_parent (Y_AXIS), Y_AXIS);
-}
-
-
-MAKE_SCHEME_CALLBACK (Self_alignment_interface, x_centered_on_y_parent, 1);
-SCM
-Self_alignment_interface::x_centered_on_y_parent (SCM smob)
-{
-  return centered_on_object (unsmob_grob (smob)->get_parent (Y_AXIS), X_AXIS);
-}
-
-MAKE_SCHEME_CALLBACK (Self_alignment_interface, aligned_on_x_parent,1);
-SCM
-Self_alignment_interface::aligned_on_x_parent (SCM smob)
-{
-  return aligned_on_parent (unsmob_grob (smob), X_AXIS);
-}
-
-MAKE_SCHEME_CALLBACK (Self_alignment_interface, aligned_on_y_parent,1);
-SCM
-Self_alignment_interface::aligned_on_y_parent (SCM smob)
-{
-  return aligned_on_parent (unsmob_grob (smob), Y_AXIS);
-}
-
-SCM
-Self_alignment_interface::aligned_on_parent (Grob *me, Axis a)
-{
-  Grob *him = me->get_parent (a);
-  if (Paper_column::has_interface (him))
-    return scm_from_double (0.0);
-    
-  Interval he = him->extent (him, a);
-
-  SCM sym = (a == X_AXIS) ? ly_symbol2scm ("self-alignment-X")
-    : ly_symbol2scm ("self-alignment-Y");
-  SCM align_prop (me->internal_get_property (sym));
-
-  if (!scm_is_number (align_prop))
-    return scm_from_int (0);
-
-  Real x = 0.0;
-  Real align = scm_to_double (align_prop);
-
-  Interval ext (me->extent (me, a));
-  if (ext.is_empty ())
-    programming_error ("cannot align on self: empty element");
-  else
-    x -= ext.linear_combination (align);
-
-  if (!he.is_empty ())
-    x += he.linear_combination (align);
-
-  return scm_from_double (x);
-}
-
-void
-Self_alignment_interface::set_center_parent (Grob *me, Axis a)
-{
-  add_offset_callback (me,
-                      (a==X_AXIS) ? centered_on_x_parent_proc : centered_on_y_parent_proc,
-                      a);
-}
-
-void
-Self_alignment_interface::set_align_self (Grob *me, Axis a)
-{
-  add_offset_callback (me,
-                      (a==X_AXIS) ? x_aligned_on_self_proc : y_aligned_on_self_proc,
-                      a);
-}
-
-ADD_INTERFACE (Self_alignment_interface,
-              "Position this object on itself and/or on its parent.  To this"
-              " end, the following functions are provided:\n"
-              "\n"
-              "@table @code\n"
-              "@item Self_alignment_interface::[xy]_aligned_on_self\n"
-              "Align self on reference point, using"
-              " @code{self-alignment-X} and @code{self-alignment-Y}."
-              "@item Self_alignment_interface::aligned_on_[xy]_parent\n"
-              "@item Self_alignment_interface::centered_on_[xy]_parent\n"
-              "Shift the object so its own reference point is centered on"
-              " the extent of the parent\n"
-              "@end table\n",
-
-              /* properties */
-              "self-alignment-X "
-              "self-alignment-Y "
-              );
-
diff --git a/lily/self-alignment-interface.cc b/lily/self-alignment-interface.cc
new file mode 100644 (file)
index 0000000..e339e80
--- /dev/null
@@ -0,0 +1,171 @@
+/*
+  This file is part of LilyPond, the GNU music typesetter.
+
+  Copyright (C) 2004--2010 Han-Wen Nienhuys <hanwen@xs4all.nl>
+
+  LilyPond is free software: you can redistribute it and/or modify
+  it under the terms of the GNU General Public License as published by
+  the Free Software Foundation, either version 3 of the License, or
+  (at your option) any later version.
+
+  LilyPond is distributed in the hope that it will be useful,
+  but WITHOUT ANY WARRANTY; without even the implied warranty of
+  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+  GNU General Public License for more details.
+
+  You should have received a copy of the GNU General Public License
+  along with LilyPond.  If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#include "self-alignment-interface.hh"
+
+#include "grob.hh"
+#include "paper-column.hh"
+#include "warn.hh"
+
+MAKE_SCHEME_CALLBACK (Self_alignment_interface, y_aligned_on_self, 1);
+SCM
+Self_alignment_interface::y_aligned_on_self (SCM element)
+{
+  return aligned_on_self (unsmob_grob (element), Y_AXIS, false, 0, 0);
+}
+
+MAKE_SCHEME_CALLBACK (Self_alignment_interface, x_aligned_on_self, 1);
+SCM
+Self_alignment_interface::x_aligned_on_self (SCM element)
+{
+  return aligned_on_self (unsmob_grob (element), X_AXIS, false, 0, 0);
+}
+
+MAKE_SCHEME_CALLBACK (Self_alignment_interface, pure_y_aligned_on_self, 3);
+SCM
+Self_alignment_interface::pure_y_aligned_on_self (SCM smob, SCM start, SCM end)
+{
+  return aligned_on_self (unsmob_grob (smob), Y_AXIS, true, robust_scm2int (start, 0), robust_scm2int (end, INT_MAX));
+}
+
+SCM
+Self_alignment_interface::aligned_on_self (Grob *me, Axis a, bool pure, int start, int end)
+{
+  SCM sym = (a == X_AXIS) ? ly_symbol2scm ("self-alignment-X")
+    : ly_symbol2scm ("self-alignment-Y");
+
+  SCM align (me->internal_get_property (sym));
+  if (scm_is_number (align))
+    {
+      Interval ext (me->maybe_pure_extent (me, a, pure, start, end));
+      if (ext.is_empty ())
+       programming_error ("cannot align on self: empty element");
+      else
+       return scm_from_double (- ext.linear_combination (scm_to_double (align)));
+    }
+  return scm_from_double (0.0);
+}
+
+
+SCM
+Self_alignment_interface::centered_on_object (Grob *him, Axis a)
+{
+  return scm_from_double (robust_relative_extent (him, him, a).center ());
+}
+
+MAKE_SCHEME_CALLBACK (Self_alignment_interface, centered_on_x_parent, 1);
+SCM
+Self_alignment_interface::centered_on_x_parent (SCM smob)
+{
+  return centered_on_object (unsmob_grob (smob)->get_parent (X_AXIS), X_AXIS);
+}
+
+MAKE_SCHEME_CALLBACK (Self_alignment_interface, centered_on_y_parent, 1);
+SCM
+Self_alignment_interface::centered_on_y_parent (SCM smob)
+{
+  return centered_on_object (unsmob_grob (smob)->get_parent (Y_AXIS), Y_AXIS);
+}
+
+MAKE_SCHEME_CALLBACK (Self_alignment_interface, x_centered_on_y_parent, 1);
+SCM
+Self_alignment_interface::x_centered_on_y_parent (SCM smob)
+{
+  return centered_on_object (unsmob_grob (smob)->get_parent (Y_AXIS), X_AXIS);
+}
+
+MAKE_SCHEME_CALLBACK (Self_alignment_interface, aligned_on_x_parent,1);
+SCM
+Self_alignment_interface::aligned_on_x_parent (SCM smob)
+{
+  return aligned_on_parent (unsmob_grob (smob), X_AXIS);
+}
+
+MAKE_SCHEME_CALLBACK (Self_alignment_interface, aligned_on_y_parent,1);
+SCM
+Self_alignment_interface::aligned_on_y_parent (SCM smob)
+{
+  return aligned_on_parent (unsmob_grob (smob), Y_AXIS);
+}
+
+SCM
+Self_alignment_interface::aligned_on_parent (Grob *me, Axis a)
+{
+  Grob *him = me->get_parent (a);
+  if (Paper_column::has_interface (him))
+    return scm_from_double (0.0);
+
+  Interval he = him->extent (him, a);
+
+  SCM sym = (a == X_AXIS) ? ly_symbol2scm ("self-alignment-X")
+    : ly_symbol2scm ("self-alignment-Y");
+  SCM align_prop (me->internal_get_property (sym));
+
+  if (!scm_is_number (align_prop))
+    return scm_from_int (0);
+
+  Real x = 0.0;
+  Real align = scm_to_double (align_prop);
+
+  Interval ext (me->extent (me, a));
+  if (ext.is_empty ())
+    programming_error ("cannot align on self: empty element");
+  else
+    x -= ext.linear_combination (align);
+
+  if (!he.is_empty ())
+    x += he.linear_combination (align);
+
+  return scm_from_double (x);
+}
+
+void
+Self_alignment_interface::set_center_parent (Grob *me, Axis a)
+{
+  add_offset_callback (me,
+                      (a == X_AXIS) ? centered_on_x_parent_proc : centered_on_y_parent_proc,
+                      a);
+}
+
+void
+Self_alignment_interface::set_align_self (Grob *me, Axis a)
+{
+  add_offset_callback (me,
+                      (a == X_AXIS) ? x_aligned_on_self_proc : y_aligned_on_self_proc,
+                      a);
+}
+
+ADD_INTERFACE (Self_alignment_interface,
+              "Position this object on itself and/or on its parent.  To this"
+              " end, the following functions are provided:\n"
+              "\n"
+              "@table @code\n"
+              "@item Self_alignment_interface::[xy]_aligned_on_self\n"
+              "Align self on reference point, using"
+              " @code{self-alignment-X} and @code{self-alignment-Y}."
+              "@item Self_alignment_interface::aligned_on_[xy]_parent\n"
+              "@item Self_alignment_interface::centered_on_[xy]_parent\n"
+              "Shift the object so its own reference point is centered on"
+              " the extent of the parent\n"
+              "@end table\n",
+
+              /* properties */
+              "self-alignment-X "
+              "self-alignment-Y "
+              );
index dc57a2320491d4b5175cd9ddd165f2d8f5ee0b28..30def52f2881ea93c9610461bbab3d7146a8eb49 100644 (file)
@@ -208,6 +208,24 @@ Staff_symbol::on_line (Grob *me, int pos)
     return ((abs (pos + line_count (me)) % 2) == 1);
 }
 
+Interval
+Staff_symbol::line_span (Grob *me)
+{
+  SCM line_positions = me->get_property ("line-positions");
+  Interval iv;
+
+  if (scm_is_pair (line_positions))
+    for (SCM s = line_positions; scm_is_pair (s); s = scm_cdr (s))
+      iv.add_point (scm_to_double (scm_car (s)));
+  else
+    {
+      int count = line_count (me);
+      return Interval (-count + 1, count - 1);
+    }
+
+  return iv;
+}
+
 ADD_INTERFACE (Staff_symbol,
               "This spanner draws the lines of a staff.  A staff symbol"
               " defines a vertical unit, the @emph{staff space}.  Quantities"
index 563e2ca938873c06e4876586552f81112f2cd207..a3083a1d7c36fc0892bfb373654dcce70c3833e7 100644 (file)
@@ -74,12 +74,18 @@ Tie::head (Grob *me, Direction d)
 int
 Tie::get_column_rank (Grob *me, Direction d)
 {
+  Grob *col = 0;
   Spanner *span = dynamic_cast<Spanner *> (me);
-  Grob *h = head (me, d);
-  if (!h)
-    h = span->get_bound (d);
+  if (!span)
+    col = dynamic_cast<Item *> (me)->get_column ();
+  else
+    {
+      Grob *h = head (me, d);
+      if (!h)
+        h = span->get_bound (d);
 
-  Grob *col = dynamic_cast<Item *> (h)->get_column ();
+      col = dynamic_cast<Item *> (h)->get_column ();
+    }
   return Paper_column::get_rank (col);
 }
 
index 1252c2e577dca1db80cebb4059651deb289b3635..a7f986fb1089deae7cd017fbd14492f3c9824f31 100644 (file)
@@ -59,7 +59,7 @@ Timing_translator::initialize ()
   */
   context ()->set_property ("measureLength",
                            Moment (Rational (1)).smobbed_copy ());
-  context ()->set_property ("beatLength",
+  context ()->set_property ("baseMoment",
                            Moment (Rational (1, 4)).smobbed_copy ());
 }
 
@@ -151,7 +151,10 @@ ADD_TRANSLATOR (Timing_translator,
                "measurePosition ",
 
                /* write */
-               "internalBarNumber "
+               "baseMoment "
                "currentBarNumber "
+               "internalBarNumber "
+               "measureLength "
                "measurePosition "
+               "timeSignatureFraction "
                );
index cfe1ec14506acdecc228ee75750ac3497a9382e5..0b53e9ad292860242073999b79afba585090ebdc 100644 (file)
@@ -1,15 +1,15 @@
 %{
   Bagpipe music settings for LilyPond.
   This file builds on work by Andrew McNabb (http://www.mcnabbs.org/andrew/)
-  
-  Substantial changes and additions made by 
+
+  Substantial changes and additions made by
   Sven Axelsson, the Murray Pipes & Drums of Gothenburg
   (http://www.murrays.nu)
-  
+
   $Id: bagpipe.ly,v 1.12 2006/03/16 14:39:46 hanwen Exp $
 %}
 
-\version "2.12.0"
+\version "2.13.29"
 
 % Notes of the scale of the Great Highland Bagpipe. Extra high notes for bombarde.
 % Flat notes used mainly in some modern music.
@@ -69,22 +69,20 @@ showKeySignature = {
 % Sets the autobeamer to span quarter notes only. Use for fast music.
 % TODO: Needs more tweaking
 quarterBeaming = {
-  \overrideBeamSettings #'Staff #'(4 . 4) #'end
-    #'((* . (1 1 1 1)) ; could omit this and use beatLength
-       ((1 . 32) . (4 4 4 4 4 4 4 4)))
-  \overrideBeamSettings #'Staff #'(2 . 4) #'end
-    #'((* . (1 1))
-       ((1 . 32) . (4 4 4 4)))
+  \set Staff.beamExceptions = #'()
 }
+
 halfBeaming = {
-  \overrideBeamSettings #'Staff #'(2 . 2) #'end
-    #'((* . (1 1))) % could omit this and use beatLength
+  \set Staff.beamExceptions = #'((end . (((1 . 8) . (4 4))
+                                         ((1 . 12) . (3 3)))))
 }
+
 % Reels are in allabreve time with half note beaming.
 reelTime = {
   \time 2/2
   \halfBeaming
 }
+
 % 4/4 marches are written with numerical time signature and with quarter beaming.
 marchTime = {
   \time 4/4
@@ -266,12 +264,12 @@ pthrwd  = { \grace { \small G16[ d32 c] } }
 darodo  = { \grace { \small G32[ d G c G] } }
 Gdarodo = { \grace { \small d32[ G c G] } }
 % Non-gracenote piobaireachd markup.
-trebling = \markup { 
+trebling = \markup {
   \override #'(baseline-skip . 0.3)
-  \column { 
-    \musicglyph #"scripts.tenuto" 
-    \musicglyph #"scripts.tenuto" 
-    \musicglyph #"scripts.tenuto" 
+  \column {
+    \musicglyph #"scripts.tenuto"
+    \musicglyph #"scripts.tenuto"
+    \musicglyph #"scripts.tenuto"
   }
 }
 % Abbreviated notation common in piobaireachd scores.
index a07294f753cf50f28c6e2b1abb2d3f32e3529f84..8522001347483a13b834f34ea04dcc2d21922dac 100644 (file)
@@ -16,7 +16,7 @@
 %%%% You should have received a copy of the GNU General Public License
 %%%% along with LilyPond.  If not, see <http://www.gnu.org/licenses/>.
 
-\version "2.13.10"
+\version "2.13.27"
 
 \context {
   \name "Global"
@@ -405,7 +405,10 @@ printing of a single line of lyrics."
   \override VerticalAxisGroup #'remove-empty = ##t
   \override VerticalAxisGroup #'staff-affinity = #UP
   \override VerticalAxisGroup #'inter-staff-spacing = #'((space . 5.5) (stretchability . 1) (padding . 0.5))
-  \override VerticalAxisGroup #'inter-loose-line-spacing = #'((space . 0) (stretchability . 0) (padding . 0.2))
+  \override VerticalAxisGroup #'inter-loose-line-spacing = #'((space . 0)
+                                                             (stretchability . 0)
+                                                             (padding . 0.2)
+                                                             (minimum-distance . 2.8))
   \override VerticalAxisGroup #'non-affinity-spacing #'padding = #1.0
   \override InstrumentName #'self-alignment-Y = ##f
 
@@ -549,9 +552,19 @@ automatically when an output definition (a @code{\score} or
 
   repeatCountVisibility = #all-repeat-counts-visible
 
-  beamSettings = #default-beam-settings
+  timeSignatureSettings = #default-time-signature-settings
+  timeSignatureFraction = #'(4 . 4)
+
+%% These defaults should be the same as the rules established in
+%%   scm/time-signature-settings.scm for 4/4 time
+  measureLength = #(ly:make-moment 4 4)
+  baseMoment = #(ly:make-moment 1  4)
+  beatStructure = #'(1 1 1 1)
+  beamExceptions = #'((end . (((1 . 8) . (4 4))
+                              ((1 . 12) . (3 3 3 3)))))
   autoBeaming = ##t
   autoBeamCheck = #default-auto-beam-check
+
   scriptDefinitions = #default-script-alist
 
   pedalSustainStrings = #'("Ped." "*Ped." "*")
index 52299a036176b3210a42314b26f9be03af591f17..f26e0a1154fc698174c88b8910e73d3bcf0161e1 100644 (file)
@@ -18,7 +18,7 @@
 %%%% You should have received a copy of the GNU General Public License
 %%%% along with LilyPond.  If not, see <http://www.gnu.org/licenses/>.
 
-\version "2.12.0"
+\version "2.13.29"
 
 
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -409,29 +409,19 @@ ottava =
    (_i "Set the octavation.")
    (make-ottava-set octave))
 
-overrideBeamSettings =
+overrideTimeSignatureSettings =
 #(define-music-function
-   (parser location context time-signature rule-type grouping-rule)
-   (symbol? pair? symbol? pair?)
-
-   (_i "Override beamSettings in @var{context}
-for time signatures of @var{time-signature} and rules of type
-@var{rule-type} to have a grouping rule alist
-@var{grouping-rule}.
-@var{rule-type} can be @code{end} or @code{subdivide},
-with a potential future value of @code{begin}.
-@var{grouping-rule} is an alist of @var{(beam-type . grouping)}
-entries.  @var{grouping} is in units of @var{beam-type}.  If
-@var{beam-type} is @code{*}, grouping is in units of the denominator
-of @var{time-signature}.")
+   (parser location context time-signature base-moment beat-structure beam-exceptions)
+   (symbol? pair? pair? cheap-list? cheap-list?)
+
+   (_i "Override @code{timeSignatureSettings} in @var{context}
+for time signatures of @var{time-signature} to have settings
+of @var{base-moment}, @var{beat-structure}, and @var{beam-exceptions}.")
 
    ;; TODO -- add warning if largest value of grouping is
    ;;      greater than time-signature.
-
-   #{
-     #(override-beam-setting
-       $time-signature $rule-type $grouping-rule $context)
-   #})
+  (let ((setting (make-setting base-moment beat-structure beam-exceptions)))
+    (override-time-signature-setting time-signature setting context)))
 
 overrideProperty =
 #(define-music-function (parser location name property value)
@@ -675,18 +665,14 @@ resetRelativeOctave =
 
      reference-note))
 
-revertBeamSettings =
+revertTimeSignatureSettings =
 #(define-music-function
-   (parser location context time-signature rule-type)
-   (symbol? pair? symbol?)
+   (parser location context time-signature)
+   (symbol? pair?)
 
-   (_i "Revert beam settings in @var{context} for time signatures of
-@var{time-signature} and groups of type
-@var{group-type}.  @var{group-type} can be @code{end}
-or @code{subdivide}.")
-   #{
-     #(revert-beam-setting $time-signature $rule-type $context)
-   #})
+   (_i "Revert @code{timeSignatureSettings} in @var{context}
+for time signatures of @var{time-signature}.")
+     (revert-time-signature-setting time-signature context))
 
 rightHandFinger =
 #(define-music-function (parser location finger) (number-or-string?)
@@ -710,26 +696,6 @@ scaleDurations =
    (ly:music-compress music
                      (ly:make-moment (car fraction) (cdr fraction))))
 
-setBeatGrouping =
-#(define-music-function (parser location grouping) (pair?)
-   (_i "Set the beat grouping in the current time signature to
-@var{grouping}.")
-   (define (default-group-setting c)
-     (let* ((context-time-signature
-            (ly:context-property c 'timeSignatureFraction))
-           (time-signature (if (null? context-time-signature)
-                               '(4 . 4)
-                               context-time-signature)))
-       (override-property-setting
-       c
-       'beamSettings
-       (list time-signature 'end)
-       (list (cons '* grouping)))))
-
-   (context-spec-music
-    (make-apply-context default-group-setting)
-    'Score))
-
 shiftDurations =
 #(define-music-function (parser location dur dots arg)
    (integer? integer? ly:music?)
diff --git a/make/lilypond-book-rules.make b/make/lilypond-book-rules.make
new file mode 100644 (file)
index 0000000..e5a0379
--- /dev/null
@@ -0,0 +1,56 @@
+.SUFFIXES: .html .xml .lytex .tex .latex .lyxml .tely .texi .texinfo
+
+############## HTML #########################
+
+$(outdir)/%.html:  %.html
+       $(LILYPOND_BOOK_COMMAND) -o $(outdir) $<
+
+$(outdir)/%.html:  %.htmly
+       $(LILYPOND_BOOK_COMMAND) -o $(outdir) $<
+
+$(outdir)/%.html:  %.xml
+       $(LILYPOND_BOOK_COMMAND) -o $(outdir) $<
+
+
+############## LaTeX ########################
+
+$(outdir)/%.tex:  %.lytex
+       $(LILYPOND_BOOK_COMMAND) --pdf -o $(outdir) $<
+
+$(outdir)/%.tex:  %.tex
+       $(LILYPOND_BOOK_COMMAND) --pdf -o $(outdir) $<
+
+$(outdir)/%.tex:  %.latex
+       $(LILYPOND_BOOK_COMMAND) --pdf -o $(outdir) $<
+
+# Add the tex => pdf rule only if we have dblatex
+ifeq (,$(findstring pdflatex,$(MISSING_OPTIONAL)))
+$(outdir)/%.pdf:  $(outdir)/%.tex
+       cd $(outdir) && $(PDFLATEX) $(notdir $<)
+endif
+
+############## Texinfo ######################
+
+$(outdir)/%.texi:  %.texi
+       $(LILYPOND_BOOK_COMMAND) -o $(outdir) $<
+
+$(outdir)/%.texi:  %.itexi
+       $(LILYPOND_BOOK_COMMAND) -o $(outdir) $<
+
+$(outdir)/%.texi:  %.texinfo
+       $(LILYPOND_BOOK_COMMAND) -o $(outdir) $<
+
+$(outdir)/%.texi:  %.tely
+       $(LILYPOND_BOOK_COMMAND) -o $(outdir) $<
+
+
+############## DocBook ######################
+
+$(outdir)/%.xml:  %.lyxml
+       $(LILYPOND_BOOK_COMMAND) --pdf -o $(outdir) $<
+
+# Add the xml => pdf rule only if we have dblatex
+ifeq (,$(findstring dblatex,$(MISSING_OPTIONAL)))
+$(outdir)/%.pdf:  $(outdir)/%.xml
+       cd $(outdir) && $(DBLATEX) $(notdir $<)
+endif
diff --git a/make/lilypond-book-targets.make b/make/lilypond-book-targets.make
new file mode 100644 (file)
index 0000000..0f63330
--- /dev/null
@@ -0,0 +1 @@
+default:
diff --git a/make/lilypond-book-vars.make b/make/lilypond-book-vars.make
new file mode 100644 (file)
index 0000000..3627b50
--- /dev/null
@@ -0,0 +1,62 @@
+# rules for directories with html files.
+
+LILYPOND_BOOK_COMMAND = LILYPOND_VERSION=$(TOPLEVEL_VERSION) \
+       $(PYTHON) $(LILYPOND_BOOK) $(LILYPOND_BOOK_INCLUDES) \
+       --process='$(LILYPOND_BOOK_PROCESS) \
+       $(LILYPOND_BOOK_LILYPOND_FLAGS)' --output=$(outdir) \
+       $(LILYPOND_BOOK_FLAGS)
+
+HTML_FILES = $(call src-wildcard,*.html)
+HTMLY_FILES = $(call src-wildcard,*.htmly)
+XML_FILES = $(call src-wildcard,*.xml)
+LYTEX_FILES = $(call src-wildcard,*.lytex)
+LATEX_FILES = $(call src-wildcard,*.latex)
+TEX_FILES = $(call src-wildcard,*.tex)
+TEXI_FILES = $(call src-wildcard,*.texi)
+TEXINFO_FILES = $(call src-wildcard,*.texinfo)
+TELY_FILES = $(call src-wildcard,*.tely)
+DOCBOOK_FILES = $(call src-wildcard,*.lyxml)
+
+OUT_HTML_FILES = ${HTML_FILES:%.html=$(outdir)/%.html}
+OUT_HTMLY_FILES = ${HTML_FILES:%.htmly=$(outdir)/%.html}
+OUT_XML_FILES = ${XML_FILES:%.xml=$(outdir)/%.html}
+# If we have pdflatex, create the pdf, otherwise only the .tex file!
+ifeq (,$(findstring dblatex,$(MISSING_OPTIONAL)))
+OUT_LYTEX_FILES = ${LYTEX_FILES:%.lytex=$(outdir)/%.pdf}
+OUT_LATEX_FILES = ${LATEX_FILES:%.latex=$(outdir)/%.pdf}
+OUT_TEX_FILES = ${TEX_FILES:%.tex=$(outdir)/%.pdf}
+else
+OUT_LYTEX_FILES = ${LYTEX_FILES:%.lytex=$(outdir)/%.tex}
+OUT_LATEX_FILES = ${LATEX_FILES:%.latex=$(outdir)/%.tex}
+OUT_TEX_FILES = ${TEX_FILES:%.tex=$(outdir)/%.tex}
+endif
+OUT_TEXI_FILES = ${TEXI_FILES:%.texi=$(outdir)/%.html}
+OUT_TEXINFO_FILES = ${TEXINFO_FILES:%.texinfo=$(outdir)/%.html}
+OUT_TELY_FILES = ${TELY_FILES:%.tely=$(outdir)/%.html}
+# If we have dblatex, create the pdf, otherwise only the .xml file!
+ifeq (,$(findstring dblatex,$(MISSING_OPTIONAL)))
+OUT_DOCBOOK_FILES = ${DOCBOOK_FILES:%.lyxml=$(outdir)/%.pdf}
+else
+OUT_DOCBOOK_FILES = ${DOCBOOK_FILES:%.lyxml=$(outdir)/%.xml}
+endif
+
+OUT_FILES = $(sort $(OUT_HTML_FILES) \
+                            $(OUT_HTMLY_FILES) \
+                            $(OUT_XML_FILES) \
+                            $(OUT_LYTEX_FILES) \
+                            $(OUT_LATEX_FILES) \
+                            $(OUT_TEX_FILES) \
+                            $(OUT_TEXI_FILES) \
+                            $(OUT_TEXINFO_FILES) \
+                            $(OUT_TELY_FILES) \
+                            $(OUT_DOCBOOK_FILES))
+
+ALL_SOURCES +=\
+ $(HTML_FILES)\
+ $(HTMLY_FILES)\
+ $(XML_FILES)\
+ $(LYTEX_FILES)\
+ $(LATEX_FILES)\
+ $(TEX_FILES)\
+ $(TEXINFO_FILES)\
+ $(DOCBOOK_FILES)
index cfaabe3355f1d6b05d2bddcb4a2fcaca9da18d6a..5c38f7d4ab33e3bf6db41eb100b61f9804877da4 100644 (file)
@@ -1,2 +1,2 @@
 $(outdir)/collated-files.tely: $(COLLATED_FILES)
-       $(LYS_TO_TELY) --name=$(outdir)/collated-files.tely --title="$(TITLE)" $^
+       $(LYS_TO_TELY) --name=$(outdir)/collated-files.tely --title="$(TITLE)" --author="$(AUTHOR)" $^
index 5cbc61717c7c1274227f6ac1acb43f736847f860..337460c3da1ae494f868813a5f251e81bb7a071e 100644 (file)
@@ -1,4 +1,5 @@
 TITLE=LYs Doc
+AUTHOR=Han-Wen Nienhuys and Jan Nieuwenhuizen
 
 
 ifeq ($(COLLATED_FILES),)
index d05179fd4ed718512dc73bfb70cd207c9ac852d4..8967ca4a2d5feb55780009fede1a706ce7e74366 100644 (file)
@@ -8,13 +8,4 @@ EXTRA_DIST_FILES = $(PS_FILES)
 INSTALLATION_DIR=$(local_lilypond_datadir)/ps/
 INSTALLATION_FILES=$(PS_FILES)
 
-# teTeX-3.0 compatibility.
-local-install:
-       -$(INSTALL) -d $(DESTDIR)$(local_lilypond_datadir)/dvips
-       (cd $(DESTDIR)$(local_lilypond_datadir)/dvips && ln -sf ../ps .)
-
-local-uninstall:
-       -rm -f $(DESTDIR)$(local_lilypond_datadir)/dvips/ps
-       -rmdir $(DESTDIR)$(local_lilypond_datadir)/dvips
-
 include $(depth)/make/stepmake.make
index 465eead803e645a7d86f28e114aeacf093dde8a5..673d04d478091097bf5daf543d230c038a44be15 100644 (file)
@@ -3005,6 +3005,31 @@ def conv (str):
     str = re.sub (r'\\(cresc|dim|endcresc|enddim)\b', r'\\deprecated\1', str)
     return str
 
+@rule ((2, 13, 29),
+       _ ("Eliminate beamSettings, beatLength, \setBeatGrouping, \overrideBeamSettings and \revertBeamSettings"))
+def conv(str):
+    if re.search(r'overrideBeamSettings', str):
+        stderr_write("\n")
+        stderr_write(NOT_SMART % _("\overrideBeamSettings.  Use \set beamExceptions or \overrideTimeSignatureSettings.\n"))
+        stderr_write(UPDATE_MANUALLY)
+    if re.search(r'revertBeamSettings', str):
+        stderr_write("\n")
+        stderr_write(NOT_SMART % _("\revertBeamSettings. Use \set beamExceptions or \revertTimeSignatureSettings.\n"))
+        stderr_write(UPDATE_MANUALLY)
+    if re.search(r'beamSettings', str):
+        stderr_write("\n")
+        stderr_write(NOT_SMART % _("beamSettings. Use baseMoment, beatStructure, and beamExceptions.\n"))
+        stderr_write(UPDATE_MANUALLY)
+    if re.search(r'beatLength', str):
+        stderr_write("\n")
+        stderr_write(NOT_SMART % _("beatLength. Use baseMoment and beatStructure.\n"))
+        stderr_write(UPDATE_MANUALLY)
+    if re.search(r'setBeatGrouping', str):
+        stderr_write("\n")
+        stderr_write(NOT_SMART % _("setbeatGrouping. Use baseMoment and beatStructure.\n"))
+        stderr_write(UPDATE_MANUALLY)
+    return str
+
 # Guidelines to write rules (please keep this at the end of this file)
 #
 # - keep at most one rule per version; if several conversions should be done,
index 9dc4f3e498e72f75d007d2858c6450f9c6950d10..4bf4e1ceebc23c0d281ecbb2b137932938659cc2 100644 (file)
@@ -258,4 +258,5 @@ class NonDentedHeadingFormatter (optparse.IndentedHelpFormatter):
 def get_option_parser (*args, **kwargs):
     p = optparse.OptionParser (*args, **kwargs)
     p.formatter = NonDentedHeadingFormatter ()
+    p.formatter.set_parser (p)
     return p
index 43ec64e9b4e82e1a2b431d36935f16b9ec3a0209..c8877ecd7ae1b46b82c1992e8ae7ec7fa968e3ab 100644 (file)
 ;;;; You should have received a copy of the GNU General Public License
 ;;;; along with LilyPond.  If not, see <http://www.gnu.org/licenses/>.
 
-;;  Determine end moment for auto beaming (or begin moment, but mostly
-;;  0== anywhere).  We only consider the current time signature.
-;;  In order of decreasing priority:
+;;  Determine whether an auto beam should be extended to the right
+;;  of the current stem.  We start anywhere except on the last note
+;;  of a beat.  We end according to the follwing rules, in order
+;;  of decreasing priority:
 ;;
 ;;  1. end <type>
-;;  2. end   *
-;;  3. if 1-2 not specified, begin anywhere, end at beatLength intervals
+;;  2. end <greater type>
+;;  3. if 1-2 not specified,  end at beatStructure intervals
 ;;
 ;;  Rationale:
 ;;
 ;;  [user override]
 ;;  1. override for specific duration type
-;;  2. override for all duration types in a time signature.
+;;  2. overrides apply to shorter durations
 ;;
-;;  defined in scm/beam-settings.scm:
+;;  defined in scm/time-signature-settings.scm:
 ;;  1. Default grouping for common time signatures
-;;  2. exceptions for specific time signature, for specific duration type
-
 
 (define-public (default-auto-beam-check context dir measure-pos test-beam)
   (define (get name default)
     (let ((value (ly:context-property context name)))
       (if (not (null? value)) value default)))
 
-  (define (ending-moments group-list start-beat beat-length)
+  (define (beaming<? a b)
+    (ly:moment<? (fraction->moment (car a))
+                 (fraction->moment (car b))))
+
+  (define (ending-moments group-list start-beat base-moment)
     (if (null? group-list)
         '()
         (let ((new-start (+ start-beat (car group-list))))
-          (cons (ly:moment-mul (ly:make-moment new-start 1) beat-length)
-                (ending-moments (cdr group-list) new-start beat-length)))))
+          (cons (ly:moment-mul (ly:make-moment new-start 1) base-moment)
+                (ending-moments (cdr group-list) new-start base-moment)))))
+
+  (define (larger-setting test-beam sorted-alist)
+   (if (null? sorted-alist)
+       '()
+       (let* ((first-key (caar sorted-alist))
+              (first-moment (fraction->moment first-key)))
+         (if (moment<=? test-beam first-moment)
+             (car sorted-alist)
+             (larger-setting test-beam (cdr sorted-alist))))))
+
+  (define (beat-end? moment beat-structure)
+    (pair? (member moment beat-structure)))  ;; member returns a list if found, not #t
 
   ;; Start of actual auto-beam test routine
   ;;
   (if (and (!= (ly:moment-grace-numerator (ly:context-now context)) 0)
            (= dir START))
       #f
-      (if (= dir START)
-          ;; start anywhere is currently implemented
-          #t
-          (let* ((beat-length (get 'beatLength (ly:make-moment 1 4)))
-                 (measure-length (get 'measureLength (ly:make-moment 1 1)))
-                 (time-signature-fraction
-                   (get 'timeSignatureFraction '(4 . 4)))
-                 (settings (get 'beamSettings '()))
-                 (function (if (= dir START) 'begin 'end))
-                 (type (cons (ly:moment-main-numerator test-beam)
-                             (ly:moment-main-denominator test-beam)))
-                 (pos (if (>= (ly:moment-main-numerator measure-pos) 0)
-                        measure-pos
-                        (ly:moment-add measure-length measure-pos)))
-                 (type-grouping (ly:beam-grouping
-                                  settings
-                                  time-signature-fraction
-                                  function
-                                  type))
-                 (default-grouping (ly:beam-grouping
-                                     settings
-                                     time-signature-fraction
-                                     function
-                                     '*))
-                 (beat-grouping (if (null? type-grouping)
-                                  default-grouping
-                                  type-grouping))
-                 (grouping-moment (if (null? type-grouping)
-                                    beat-length
-                                    test-beam))
-                 (grouping-moments (ending-moments
-                                      beat-grouping 0 grouping-moment)))
-           (if (null? beat-grouping)
-               ;; no rule applies, so end at beatLength
-               (= (ly:moment-main-denominator
-                   (ly:moment-div pos beat-length)) 1)
-               ;; otherwise, end at beginning of measure or
-               ;; at specified moment
-               (or
-                ;; start/end at beginning of measure
-                (= (ly:moment-main-numerator pos) 0)
-                ;; end if measure-pos matches a specified ending moment
-                (member pos grouping-moments)))))))
+      (let* ((base-moment (get 'baseMoment (ly:make-moment 1 4)))
+             (measure-length (get 'measureLength (ly:make-moment 1 1)))
+             (time-signature-fraction
+               (get 'timeSignatureFraction '(4 . 4)))
+             (beat-structure (get 'beatStructure '(1 1 1 1)))
+             (beat-endings (ending-moments beat-structure 0 base-moment))
+             (exceptions (sort (assoc-get 'end
+                                          (get 'beamExceptions '())
+                                          '())
+                               beaming<?))
+             (function (if (= dir START) 'begin 'end))
+             (type (moment->fraction test-beam))
+             (non-grace (ly:make-moment
+                          (ly:moment-main-numerator measure-pos)
+                          (ly:moment-main-denominator measure-pos)))
+             (pos (if (ly:moment<? non-grace ZERO-MOMENT)
+                      (ly:moment-add measure-length non-grace)
+                      non-grace))
+             (type-grouping (assoc-get type exceptions '()))
+             (default-rule (if (null? type-grouping)
+                               (larger-setting test-beam exceptions)
+                               '()))
+             (default-grouping (if (pair? default-rule)
+                                   (cdr default-rule)
+                                   '()))
+             (default-beat-length (if (pair? default-rule)
+                                      (car default-rule)
+                                      '()))
+             (exception-grouping (if (null? type-grouping)
+                                default-grouping
+                                type-grouping))
+             (grouping-moment (if (null? type-grouping)
+                                  (fraction->moment default-beat-length)
+                                  test-beam))
+             (exception-moments (ending-moments
+                                  exception-grouping 0 grouping-moment)))
+
+        (if (= dir START)
+            ;; Start rules
+            (or (not (equal? time-signature-fraction '(3 . 4))) ;; start anywher if not 3/4
+                (beat-end? pos beat-endings)  ;; are we at start of beat?
+                (and (not (equal? test-beam base-moment)) ;; is beat split?
+                     (not (beat-end? (ly:moment-add pos test-beam)
+                                     beat-endings))))  ;; will this note end the beat
+            ;; End rules
+            (or (= (ly:moment-main-numerator pos) 0) ;; end at measure beginning
+                (if (null? exception-grouping)
+                    (beat-end? pos beat-endings) ;; no exception, so check beat ending
+                    (member pos exception-moments))))))) ;; check exception rule
+
diff --git a/scm/beam-settings.scm b/scm/beam-settings.scm
deleted file mode 100644 (file)
index ecc7c8e..0000000
+++ /dev/null
@@ -1,240 +0,0 @@
-;;;; This file is part of LilyPond, the GNU music typesetter.
-;;;;
-;;;; Copyright (C) 2009--2010 Carl Sorensen <c_sorensen@byu.edu>
-;;;;
-;;;; LilyPond is free software: you can redistribute it and/or modify
-;;;; it under the terms of the GNU General Public License as published by
-;;;; the Free Software Foundation, either version 3 of the License, or
-;;;; (at your option) any later version.
-;;;;
-;;;; LilyPond is distributed in the hope that it will be useful,
-;;;; but WITHOUT ANY WARRANTY; without even the implied warranty of
-;;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-;;;; GNU General Public License for more details.
-;;;;
-;;;; You should have received a copy of the GNU General Public License
-;;;; along with LilyPond.  If not, see <http://www.gnu.org/licenses/>.
-
-;;; specify default beaming rules
-
-;;; format:
-;;;
-;;; alist of
-;;;   ((time-signature function) . (beam-type . grouping)) entries
-;;;
-;;; where
-;;;
-;;;     time-signature = time signature fraction (pair of numbers, (4 . 4) )
-;;;     function = 'end or 'subdivide (possibly implement 'begin in the future)
-;;;     beam-type = '* or (numerator . denominator); e.g. (1 . 16)
-;;;       NOTE: numerator is kept in beam-type because of
-;;;             tuplets, e.g. (2 . 24) = (2 . 3) * (1 . 8)
-;;;             for eighth-note triplets.
-;;;     grouping = a list of groups, in units of time signature denominator
-;;;         (for default rules) or beam-type (for explicit rules)
-;;;
-
-(define-public default-beam-settings
- `(
-   ;; in 2 2 time:
-   ;;   default: end beams on 1 2 note boundaries
-   ;;   end beams with 32nd notes each 1 4 beat
-   (((2 . 2) end) .
-    ((* . (1 1))
-    ((1 . 32) . (8 8 8 8))))
-
-   ;; in 2 4, 2 8 and 2 16 time:
-   ;;   default: end beams on beats
-   (((2 . 4) end) . ((* . (1 1))))
-   (((2 . 8) end) . ((* . (1 1))))
-   (((2 . 16) end) . ((* . (1 1))))
-
-   ;; in 3 2 time:
-   ;;   default: end beams on beats
-   ;;   end beams with 32nd notes each 1 4 beat
-   (((3 . 2) end) .
-    ((* . (1 1 1))
-     ((1 . 32) . (8 8 8 8 8 8))))
-
-    ;; in 3 4 time:
-    ;;   default: set grouping to (3) so we'll get
-    ;;     the proper measure grouping symbol
-    ;;
-    ;;   set all beams to end on beats, but 1 8 to beam entire measure
-   (((3 . 4) end) .((* . (3))
-                    ((1 . 8) . (6))
-                    ((1 . 16) . (4 4 4))
-                    ((1 . 32) . (8 8 8))
-                    ((1 . 64) . (16 16 16))
-                    ((1 . 128) . (32 32 32))))
-
-    ;; in 3 8 and 3 16 time time:
-    ;;   default: group on 3
-   (((3 . 8) end) . ((* . (3))))
-   (((3 . 16) end) . ((* . (3))))
-
-    ;; in 4 2 time:
-    ;;   default: end beams on beats
-    ;;   end beams with 16th notes each 1 4 beat
-    ;;   end beams with 32nd notes each 1 8 beat
-   (((4 . 2) end) .
-    ((* . (1 1 1 1))
-     ((1 . 16) . (4 4 4 4 4 4 4 4))
-     ((1 . 32) . (4 4 4 4
-                  4 4 4 4
-                  4 4 4 4
-                  4 4 4 4))))
-
-    ;; in 4 4 (common) time:
-    ;;   default: end beams on beats
-    ;;   end beams with 8th notes each 1 2 beat
-   (((4 . 4) end) .
-    ((* . (1 1 1 1))
-     ((1 . 8) . (4 4))))
-
-    ;; in 4 8 time:
-    ;;   default: group on 1 4 notes
-   (((4 . 8) end) . ((* . (2 2))))
-
-    ;; in 4 16 time:
-    ;;   default: group on beats
-   (((4 . 16) end) . ((* . (1 1 1 1))))
-
-    ;; in 6 4 time:
-    ;;   default group at 3 4
-    ;;   end beams with 16th or 32nd notes each 1 4 beat
-   (((6 . 4) end) .
-    ((* . (3 3))
-     ((1 . 16) . (4 4 4 4 4 4))
-     ((1 . 32) . (8 8 8 8 8 8))))
-
-    ;; in 6 8 time:
-    ;;   default: group at 3 8
-    ;;   end beams with 32nd notes each 1 8 beat
-   (((6 . 8) end) .
-    ((* . (3 3))
-     ((1 . 32) . (4 4 4 4 4 4))))
-
-    ;; in 6 16 time:
-    ;;   default: group at 3 16
-   (((6 . 16) end) . ((* . (3 3))))
-
-    ;; in 9 4 time:
-    ;;   default: group at 3 4
-    ;;   end beams with 16th or 32nd notes each 1 4 beat
-   (((9 . 4) end) .
-    ((* . (3 3 3))
-     ((1 . 16) . (4 4 4 4 4 4 4 4 4))
-     ((1 . 32) . (8 8 8 8 8 8 8 8 8))))
-
-    ;; in 9 8 time:
-    ;;   default: group at 3 8
-    ;;   use beatGrouping for all except 32nd notes
-    ;;   end beams with 32nd notes each 1 8 beat
-   (((9 . 8) end) .
-    ((* . (3 3 3))
-     ((1 . 32) . (4 4 4 4 4 4 4 4 4))))
-
-    ;; in 9 16 time
-    ;;   default: group at 3 8
-   (((9 . 16) end) . ((* . (3 3 3))))
-
-    ;; in 12 4 time:
-    ;;   default: group at 3 4
-    ;;   end beams with 16th or 32nd notes each 1 4 beat
-   (((12 . 4) end) .
-    ((* . (3 3 3 3))
-     ((1 . 16) . (4 4 4 4 4 4 4 4 4 4 4 4 4))
-     ((1 . 32) . (8 8 8 8 8 8 8 8 8 8 8 8 8))))
-
-    ;; in 12 8 time:
-    ;;   default: group at 3 8
-    ;;   end beams with 32nd notes each 1 8 beat
-   (((12 . 8) end) .
-    ((* . (3 3 3 3))
-     ((1 . 32) . (4 4 4 4 4 4 4 4 4 4 4 4 4))))
-
-    ;; in 12 16 time:
-    ;;   default: group at 3 16
-   (((12 . 16) end) . ((* . (3 3 3 3))))
-
-    ;; in 5 8 time:
-    ;;   default: group (3 2)
-   (((5 . 8) end) . ((* . (3 2))))
-
-    ;; in 8 8 time:
-    ;;   default: group (3 3 2)
-   (((8 . 8) end) . ((* . (3 3 2))))
-  ))  ; end of alist definition
-
-;;; Functions for overriding beam settings
-;;;
-
-(define (overridden-property-alist context property setting value)
-  "Return an alist containing the current @{context} value of
-@code{property} overriden by @code{(setting . value)}. "
-  (cons (cons setting value) (ly:context-property context property)))
-
-(define-public (override-property-setting context property setting value)
-  "Like the C++ code that executes \\override, but without type
-checking. "
-  (ly:context-set-property!
-    context property
-    (overridden-property-alist context property setting value)))
-
-(define (revert-property-setting context property setting)
-  "Like the C++ code that executes \revert, but without type
-checking. "
-
-  (define (revert-member alist entry new)
-    "Return ALIST, with ENTRY removed.  ALIST is not modified, instead
-a fresh copy of the list-head is made."
-    (cond
-      ((null? alist) new)
-      ((equal? (car alist) entry) (revert-member (cdr alist) entry new))
-      (else (revert-member (cdr alist) entry (cons (car alist) new)))))
-
-  (ly:context-set-property!
-    context property
-    (revert-member (ly:context-property context property) setting '())))
-
-(define-public (override-beam-setting
-                  time-signature rule-type rule . rest)
-  "Override the beam settings for the context in @var{rest},
-for @var{time-signature} and  @var{rule-type}, with the
-new rule alist @var{rule}. "
-  (define (make-setting c)
-    (let ((new-settings
-            (overridden-property-alist
-              c
-              'beamSettings
-              (list time-signature rule-type)
-              rule)))
-      (ly:context-set-property! c 'beamSettings new-settings)))
-
-  (let ((music-to-export
-          (context-spec-music
-            (make-apply-context make-setting)
-              (if (and (pair? rest) (symbol? (car rest)))
-                  (car rest)
-                  'Voice))))
-    (ly:export music-to-export)))
-
-(define-public (score-override-beam-setting
-                 time-signature rule-type rule)
-  (override-beam-setting
-    time-signature rule-type rule 'Score))
-
-(define-public (revert-beam-setting
-                  time-signature rule-type . rest)
-  (ly:export
-    (context-spec-music
-      (make-apply-context
-        (lambda (c)
-          (revert-property-setting
-            c
-            'beamSettings
-            (list time-signature rule-type))))
-      (if (and (pair? rest) (symbol? (car rest)))
-          (car rest)
-          'Voice))))
index 1da05b637a1e2f5c8215ac2deb21235d9bccb47c..755c9fdf344728213ea2e47201b90efcc401291d 100644 (file)
@@ -121,6 +121,8 @@ each note.")
      (barNumberVisibility ,procedure? "A Procedure that takes an
 integer and returns whether the corresponding bar number should be
 printed.")
+     (baseMoment ,ly:moment? "Smallest unit of time that will stand on its
+own as a subdivided section.")
      (bassFigureFormatFunction ,procedure? "A procedure that is
 called to produce the formatting for a @code{BassFigure} grob.  It
 takes a list of @code{BassFigureEvent}s, a context, and the grob to
@@ -128,13 +130,10 @@ format.")
      (bassStaffProperties ,list? "An alist of property settings to
 apply for the down staff of @code{PianoStaff}.  Used by
 @code{\\autochange}.")
-     (beamSettings ,list? "Specifies when automatically generated
-beams should begin and end, as well as beam subdivision behavior.
-See @ruser{Setting automatic beam
-behavior} for more information.")
-     (beatLength ,ly:moment? "The length of one beat in this time
-signature.")
-
+     (beamExceptions ,list? "An alist of exceptions to autobeam rules
+that normally end on beats.")
+     (beatStructure ,list? "List of @code{baseMoment}s that are combined
+to make beats.")
 
      (chordChanges ,boolean? "Only show changes in chords scheme?")
      (chordNameExceptions ,list? "An alist of chord exceptions.
@@ -442,7 +441,7 @@ one).")
      (strokeFingerOrientations ,list? "See
 @code{fingeringOrientations}.")
      (subdivideBeams ,boolean? "If set, multiple beams will be
-subdivided at beat positions by only drawing one beam over the beat.")
+subdivided at @code{baseMoment} positions by only drawing one beam over the beat.")
      (suggestAccidentals ,boolean? "If set, accidentals are typeset as
 cautionary suggestions over the note.")
      (systemStartDelimiter ,symbol? "Which grob to make for the start
@@ -470,6 +469,10 @@ arpeggios.")
      (timeSignatureFraction ,number-pair? "A pair of numbers,
 signifying the time signature.  For example, @code{#'(4 . 4)} is a
 4/4 time signature.")
+     (timeSignatureSettings ,cheap-list? "A nested alist of settings for
+time signatures.  Contains elements for various time signatures.  The
+element for each time signature contains entries for @code{baseMoment},
+@code{beatStructure}, and @code{beamExceptions}.")
      (timing ,boolean? "Keep administration of measure length,
 position, bar number, etc.?  Switch off for cadenzas.")
      (tonic ,ly:pitch? "The tonic of the current scale.")
index f66884edd047b54920b9e5f7921daf4669661993..b3401d2261db7c3365b4898faa4ea54688df2539 100644 (file)
@@ -502,9 +502,11 @@ correction and @code{1} for full correction.")
 ;; l
 ;;
      (labels ,list? "List of labels (symbols) placed on a column.")
-     (layer ,integer? "The output layer (a value between 0
-and@tie{}2): Layers define the order of printing objects.  Objects in
-lower layers are overprinted by objects in higher layers.")
+     (layer ,integer? "An integer which determines the order of printing
+objects.  Objects with the lowest value of layer are drawn first, then
+objects with progressively higher values are drawn, so objects with
+higher values overwrite objects with lower values.  By default most
+objects are assigned a layer value of 1.")
      (ledger-line-thickness ,number-pair? "The thickness of ledger
 lines.  It is the sum of 2@tie{}numbers: The first is the factor for
 line thickness, and the second for staff space.  Both contributions
@@ -753,6 +755,16 @@ there.")
      (spacing-increment ,number? "Add this much space for a doubled
 duration.  Typically, the width of a note head.  See also
 @rinternals{spacing-spanner-interface}.")
+     (spacing-pair ,pair? "A pair of alignment symbols which set an object's
+spacing relative to its left and right @code{BreakAlignment}s.
+
+For example, a @code{MultiMeasureRest} will ignore prefatory items at its
+bounds (i.e., clefs, key signatures and time signatures) using the following
+override:
+
+@example
+\\override MultiMeasureRest #'spacing-pair = #'(staff-bar . staff-bar)
+@end example")
      (springs-and-rods ,boolean? "Dummy variable for triggering
 spacing routines.")
      (stacking-dir ,ly:dir? "Stack objects in which direction?")
@@ -991,7 +1003,7 @@ objects.")
      (adjacent-pure-heights ,pair? "A pair of vectors.  Used by a
 @code{VerticalAxisGroup} to cache the @code{Y-extent}s of different column
 ranges.")
-     
+
      (bar-extent ,number-pair? "The Y-extent of the actual bar line.
 This may differ from @code{Y-extent} because it does not include the dots in
 a repeat bar line.")
index 174ad039bf23f4ffd0c7ed2491b765fe12d7f16d..15d0b0d9086f2a7c02d99c8c36d21db634c21808 100644 (file)
        (expand-limit . 10)
        (hair-thickness . 2.0)
        (padding . 1)
+       (spacing-pair . (break-alignment . staff-bar))
        (springs-and-rods . ,ly:multi-measure-rest::set-spacing-rods)
        (staff-position . 0)
        (stencil . ,ly:multi-measure-rest::print)
     (NoteHead
      . (
        (duration-log . ,note-head::calc-duration-log)
+       (extra-spacing-height . ,ly:note-head::include-ledger-line-height)
        (glyph-name . ,note-head::calc-glyph-name)
        (stem-attachment . ,ly:note-head::calc-stem-attachment)
        (stencil . ,ly:note-head::print)
        (dot-negative-kern . 0.75)
        (font-encoding . fetaMusic)
        (slope . 1.0)
+       (spacing-pair . (break-alignment . staff-bar))
        (springs-and-rods . ,ly:multi-measure-rest::set-spacing-rods)
        (stencil . ,ly:multi-measure-rest::percent)
        (thickness . 0.48)
index 53bddaac9359616232bfa2943c4241bec3029b19..f3304dadabdabd41cd6514007a8de0c1b7ac2642 100644 (file)
@@ -1001,7 +1001,7 @@ Otherwise, return #f.  Note: default grouping is not available."
     (> (length ?elts) 2)
     (with-music-match ((cadr ?elts)
                        (music 'PropertySet
-                              symbol 'beatLength))
+                              symbol 'baseMoment))
        #t)
     (with-music-match ((caddr ?elts)
                        (music 'PropertySet
index a179295cf5087f168f9999645d6c46b594e9a867..8949fec9457d46e24b2e4173b7be5d4a9040635a 100644 (file)
@@ -593,9 +593,8 @@ fonts inline."
 
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 
-(define-public (convert-to-pdf book name)
-  (let* ((defs (ly:paper-book-paper book))
-        (landscape (ly:output-def-lookup defs 'landscape))
+(define (output-width-height defs)
+  (let* ((landscape (ly:output-def-lookup defs 'landscape))
         (output-scale (ly:output-def-lookup defs 'output-scale))
         (convert (lambda (x)
                    (* x output-scale (/ (ly:bp 1)))))
@@ -603,25 +602,35 @@ fonts inline."
         (paper-height (convert (ly:output-def-lookup defs 'paper-height)))
         (w (if landscape paper-height paper-width))
         (h (if landscape paper-width paper-height)))
-    (if (equal? (basename name ".ps") "-")
-       (set! name (string-append "./" name)))
-    (postscript->pdf w h name)))
+    (cons w h)))
+
+(define (output-resolution defs)
+  (let ((defs-resolution (ly:output-def-lookup defs 'pngresolution)))
+    (if (number? defs-resolution)
+       defs-resolution
+       (ly:get-option 'resolution))))
+
+(define (output-filename name)
+  (if (equal? (basename name ".ps") "-")
+      (string-append "./" name)
+      name))
+
+(define-public (convert-to-pdf book name)
+  (let* ((defs (ly:paper-book-paper book))
+        (width-height (output-width-height defs))
+        (width (car width-height))
+        (height (cdr width-height))
+        (filename (output-filename name)))
+    (postscript->pdf width height filename)))
 
 (define-public (convert-to-png book name)
   (let* ((defs (ly:paper-book-paper book))
-        (defs-resolution (ly:output-def-lookup defs 'pngresolution))
-        (resolution (if (number? defs-resolution)
-                        defs-resolution
-                        (ly:get-option 'resolution)))
-        (paper-width (ly:output-def-lookup defs 'paper-width))
-        (paper-height (ly:output-def-lookup defs 'paper-height))
-        (output-scale (ly:output-def-lookup defs 'output-scale)))
-    (if (equal? (basename name ".ps") "-")
-       (set! name (string-append "./" name)))
-    (postscript->png resolution
-                    (* paper-width output-scale (/ (ly:bp 1)))
-                    (* paper-height output-scale (/ (ly:bp 1)))
-                    name)))
+        (resolution (output-resolution defs))
+        (width-height (output-width-height defs))
+        (width (car width-height))
+        (height (cdr width-height))
+        (filename (output-filename name)))
+    (postscript->png resolution width height filename)))
 
 (define-public (convert-to-ps book name)
   #t)
index 8958c81cc1897d6e88cc9bc632434ccef93200e7..254fb397d9ec91229351b2d45a1b85c909954c41 100644 (file)
   (or (equal? a b)
       (ly:moment<? a b)))
 
+(define-public (fraction->moment fraction)
+  (if (null? fraction)
+      ZERO-MOMENT
+      (ly:make-moment (car fraction) (cdr fraction))))
+
+(define-public (moment->fraction moment)
+  (cons (ly:moment-main-numerator moment)
+        (ly:moment-main-denominator moment)))
+
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;; arithmetic
 (define-public (average x . lst)
index 67958290d837f8bc76f5d328f4d60992bd1c5151..14c283a3e5a50bdb14b45578b11699de5d36d537 100644 (file)
@@ -375,7 +375,7 @@ LilyPond safe mode.  The syntax is the same as `define*-public'."
     "part-combiner.scm"
     "autochange.scm"
     "define-music-properties.scm"
-    "beam-settings.scm"
+    "time-signature-settings.scm"
     "auto-beam.scm"
     "chord-name.scm"
     "bezier-tools.scm"
@@ -682,7 +682,7 @@ PIDs or the number of the process."
   (eval-string (ly:command-line-code))
   (if (ly:get-option 'help)
       (begin (ly:option-usage)
-            (ly:exit 0 #t )))
+            (ly:exit 0 #t)))
   (if (ly:get-option 'show-available-fonts)
       (begin (ly:font-config-display-fonts)
             (ly:exit 0 #t)))
@@ -798,7 +798,6 @@ PIDs or the number of the process."
         (for-each (lambda (s)
                     (ly:set-option (car s) (cdr s)))
                   all-settings)
-        (ly:clear-anonymous-modules)
         (ly:set-option 'debug-gc-assert-parsed-dead #t)
         (gc)
         (ly:set-option 'debug-gc-assert-parsed-dead #f)
index 57f17baaa2a6588777d535457f07c06ab2ae4d47..011cdaf2abc27eeb3b784bd7c019185b4b66683b 100644 (file)
@@ -265,9 +265,19 @@ through MUSIC."
     (set! (ly:music-property r 'element) main)
     (set! (ly:music-property r 'repeat-count) (max times 1))
     (set! (ly:music-property r 'elements) talts)
-    (if (equal? name "tremolo")
-       (let* ((dots (1- (logcount times)))
-              (mult (/ (* times (ash 1 dots)) (1- (ash 2 dots))))
+    (if (and (equal? name "tremolo")
+            (pair? (ly:music-property main 'elements)))
+       ;; This works for single-note and multi-note tremolos!
+       (let* ((children (if (music-is-of-type? main 'sequential-music)
+                            ;; \repeat tremolo n { ... }
+                            (length (ly:music-property main 'elements))
+                            ;; \repeat tremolo n c4
+                            1))
+              ;; # of dots is equal to the 1 in bitwise representation (minus 1)!
+              (dots (1- (logcount (* times children))))
+              ;; The remaining missing multiplicator to scale the notes by 
+              ;; times * children
+              (mult (/ (* times children (ash 1 dots)) (1- (ash 2 dots))))
               (shift (- (ly:intlog2 (floor mult))))
               (note-duration (first-note-duration r))
               (duration-log (if (ly:duration? note-duration)
@@ -277,20 +287,10 @@ through MUSIC."
          (set! (ly:music-property r 'tremolo-type) tremolo-type)
          (if (not (integer?  mult))
               (ly:warning (_ "invalid tremolo repeat count: ~a") times))
-         (if (memq 'sequential-music (ly:music-property main 'types))
-             ;; \repeat "tremolo" { c4 d4 }
-             (let ((children (length (ly:music-property main 'elements))))
-
-               ;; fixme: should be more generic.
-               (if (and (not (= children 2))
-                        (not (= children 1)))
-                   (ly:warning (_ "expecting 2 elements for chord tremolo, found ~a") children))
-               (ly:music-compress r (ly:make-moment 1 children))
-               (shift-duration-log r
-                                   (if (= children 2)  (1- shift) shift)
-                                   dots))
-             ;; \repeat "tremolo" c4
-             (shift-duration-log r shift dots)))
+         ;; Adjust the time of the notes
+         (ly:music-compress r (ly:make-moment 1 children))
+         ;; Adjust the displayed note durations
+         (shift-duration-log r shift dots))
        r)))
 
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
@@ -521,8 +521,8 @@ OTTAVATION to `8va', or whatever appropriate."
 ;;; 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 make a default
-@code{beamSetting} rule."
+If @var{rest} is present, it is used to set
+@code{beatStructure}."
  (ly:export (apply make-beam-rule-time-signature-set
                     (list num den rest))))
 
@@ -530,30 +530,32 @@ If @var{rest} is present, it is used to make a default
   "Implement settings for new time signature.  Can be
 called from either make-time-signature-set (used by \time
 in parser) or set-time-signature (called from scheme code
-included in .ly file."
-
-  (define (make-default-beaming-rule context)
-   (override-property-setting
-    context
-    'beamSettings
-    (list (cons num den) 'end)
-    (list (cons '* (car rest)))))
-
-  (let* ((set1 (make-property-set 'timeSignatureFraction (cons num den)))
-        (beat (ly:make-moment 1 den))
-        (len  (ly:make-moment num den))
-        (set2 (make-property-set 'beatLength beat))
-        (set3 (make-property-set 'measureLength len))
-         (beaming-rule
-          (if (null? rest)
-              '()
-              (list (make-apply-context make-default-beaming-rule))))
-         (output (cons* set1 set2 set3 beaming-rule)))
-    (descend-to-context
-     (context-spec-music
-      (make-sequential-music output)
-       'Timing)
-     'Score)))
+included in .ly file)."
+
+  (let ((m (make-music 'ApplyContext)))
+    (define (make-time-settings context)
+      (let* ((fraction (cons num den))
+             (time-signature-settings (ly:context-property context 'timeSignatureSettings))
+             (my-base-fraction (base-fraction fraction time-signature-settings))
+             (my-beat-structure (if (null? rest)
+                                    (beat-structure my-base-fraction
+                                                    fraction
+                                                    time-signature-settings)
+                                    (car rest)))
+             (beaming-exception
+               (beam-exceptions fraction time-signature-settings))
+            (new-measure-length (ly:make-moment num den)))
+         (ly:context-set-property! context 'timeSignatureFraction fraction)
+         (ly:context-set-property!
+           context 'baseMoment (fraction->moment my-base-fraction))
+         (ly:context-set-property! context 'beatStructure my-beat-structure)
+         (ly:context-set-property! context 'beamExceptions beaming-exception)
+         (ly:context-set-property! context 'measureLength new-measure-length)))
+     (set! (ly:music-property m 'procedure) make-time-settings)
+     (descend-to-context
+      (context-spec-music m 'Timing)
+      'Score)))
+
 
 (define-public (make-mark-set label)
   "Make the music for the \\mark command."
index 9004694a058d7e3b71c2dc12bfe9b2fe81c5d72e..654c3a36a1c9d4514c3959b3b1404ce0efe2be9f 100644 (file)
                 (* (* x-radius x-radius)
                    (* (sin angle) (sin angle)))))))
   (let*
-    ((dummy (format #t "INFO XR ~a YR ~a SA ~a EA ~a\n" x-radius y-radius start-angle end-angle))
-     (new-start-angle (* PI-OVER-180 (angle-0-360 start-angle)))
+    ((new-start-angle (* PI-OVER-180 (angle-0-360 start-angle)))
      (start-radius (make-ellipse-radius x-radius y-radius new-start-angle))
      (new-end-angle (* PI-OVER-180 (angle-0-360 end-angle)))
      (end-radius (make-ellipse-radius x-radius y-radius new-end-angle))
      (x-end (- (* end-radius (cos new-end-angle))
                (* start-radius (cos new-start-angle))))
      (y-end (- (* end-radius (sin new-end-angle))
-               (* start-radius (sin new-start-angle))))
-     (dummy (format #t "INFO NSA ~a SR ~a NEA ~a ER ~a\n" new-start-angle start-radius new-end-angle end-radius)))
+               (* start-radius (sin new-start-angle)))))
    (if (and (< (abs x-end) epsilon) (< (abs y-end) epsilon))
     (entity
       'ellipse ""
    (ec 'a)))
 
 (define (utf-8-string pango-font-description string)
-  (dispatch `(fontify ,pango-font-description ,(entity 'tspan string))))
+  (let ((escaped-string (string-regexp-substitute
+                         "<" "&lt;"
+                         (string-regexp-substitute "&" "&amp;" string))))
+  (dispatch `(fontify ,pango-font-description
+                     ,(entity 'tspan escaped-string)))))
index 2f17701d4672f6d492885368207f3bf8fd716cd2..757a1876defd38f44c724c9b84ef8daf07c4d0d8 100644 (file)
   (let ((e '())
        (c0 0)
        (oct 0)
-       (match (string-match "^(.*)([_^])([0-9]+)$" clef-name)))
+       (match (string-match "^(.*)([_^])([1-9][0-9]*)$" clef-name)))
     (if match
        (begin
          (set! clef-name (match:substring match 1))
diff --git a/scm/time-signature-settings.scm b/scm/time-signature-settings.scm
new file mode 100644 (file)
index 0000000..dbca769
--- /dev/null
@@ -0,0 +1,299 @@
+;;;; This file is part of LilyPond, the GNU music typesetter.
+;;;;
+;;;; Copyright (C) 2009--2010 Carl Sorensen <c_sorensen@byu.edu>
+;;;;
+;;;; LilyPond is free software: you can redistribute it and/or modify
+;;;; it under the terms of the GNU General Public License as published by
+;;;; the Free Software Foundation, either version 3 of the License, or
+;;;; (at your option) any later version.
+;;;;
+;;;; LilyPond is distributed in the hope that it will be useful,
+;;;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;;;; GNU General Public License for more details.
+;;;;
+;;;; You should have received a copy of the GNU General Public License
+;;;; along with LilyPond.  If not, see <http://www.gnu.org/licenses/>.
+
+;;; specify time signature default settings
+
+;;; format:
+;;;
+;;; alist of
+;;;   (time-signature . default-properties) entries.
+;;;
+;;; where default-properties is an alist containing information about the
+;;; time signature.  Each default-properties set can contain the
+;;; following entries:
+;;;
+;;;   (baseMoment . (numerator . denominator))
+;;;   (beatStructure . structure-list)
+;;;   (beamExceptions . (alist of beam exceptions that don't follow beats))
+;;;
+;;; The alist of beam exceptions has the following entries:
+;;;
+;;;   (end . grouping-rules)
+;;;   (subdivide . grouping-rules)  (not yet implemented, reserved for future use)
+;;;
+;;;   grouping-rules is an alist containing (beam-type . grouping-list) entries
+;;;
+;;;     beam-type is (numerator . denominator)
+;;;     grouping-list is a list that specifies the
+;;;     number of stems of the given duration that are grouped in a beamed unit.
+;;;     For an exception, the duration used is beam-type.  For measureBeats,
+;;;     the duration used is baseMoment.
+;;;
+;;;     If an exception is specified for a given beam-type, it will apply to all
+;;;     beams of shorter durations that don't have an individual exception, so
+;;;     ((1 . 8) . (3 3 2))
+;;;     will cause all primary beams to be broken at 3/8, 5/8, and 8/8.
+;;;
+;;;     ((1. 32) . (16 8 4 4))
+;;;     will cause all 1/32, 1/64, and 1/128 beams to be broken at 1/2, 3/4,
+;;;     7/8, and 8/8.
+;;;
+;;; If no values are given for baseMoment and measureBeats, default values
+;;;   will be assigned:
+;;;   baseMoment gets the value (ly:make-moment 1  time-signature-denominator)
+;;;   beatStructure gets a list of (3 3 3 ...), where the number of entries is the
+;;;     number of beats, each containing 3 base-moments, if the time
+;;;     signature numerator is greater than 3 and divisible by 3, and
+;;;     a list of (1 1 1 ...), where the number of entries is the
+;;;     number of base moments in a measure otherwise.
+;;;
+;;; If no value is given for beatCombinations, no beats will be combined without
+;;;   beamExceptions rules.
+;;;
+;;;       NOTE: numerator is kept in beam-type because of
+;;;             tuplets, e.g. (2 . 24) = (2 . 3) * (1 . 8)
+;;;             for eighth-note triplets.
+
+(define-public default-time-signature-settings
+  '(
+    ;; in 2/2 time:
+    ;;   use defaults, but end beams with 32nd notes each 1 4 beat
+    ((2 . 2) .
+             ((beamExceptions . ((end . (((1 . 32) . (8 8 8 8))))))))
+
+    ;; in 2/4, 2/8 and 2/16 time:
+    ;;   use defaults, so no entries are necessary
+
+    ;; in 3 2 time:
+    ;;   use defaults, but end beams with 32nd notes and higher each 1 4 beat
+
+    ((3 . 2) .
+             ((beamExceptions . ((end .  (((1 . 32) . (8 8 8 8 8 8))))))))
+
+    ;; in 3 4 time:
+    ;;   use defaults, but combine all beats into a unit if possible
+    ;;
+    ;;   set all beams to end on beats, but 1 8 to beam entire measure
+    ;;   in order to avoid beaming every beat for entier measure, we set
+    ;;   triplets back to every beat.
+    ((3 . 4) .
+             ((beamExceptions . ((end . (((1 . 8) . (6))
+                                         ((1 . 12) . (3 3 3))))))))
+
+    ;; in 3 8  time:
+    ;;   beam entire measure together
+    ((3 . 8) . ((beamExceptions . ((end . (((1 . 8) . (3))))))))
+
+    ;; in 3 16 time:
+    ;;   use defaults -- no entries necessary
+
+    ;; in 4 2 time:
+    ;;   use defaults, but end beams with 16th notes or finer each 1 4 beat
+    ((4 . 2) .
+             ((beamExceptions . ((end . (((1 . 16) . (4 4 4 4 4 4 4 4))))))))
+
+    ;; in 4 4 (common) time:
+    ;;   use defaults, but combine beats 1,2 and 3,4 if only 8th notes
+    ;;   NOTE: Any changes here need to be duplicated in
+    ;;         ly/engraver-init.ly where the default time signature is set
+    ;;         are set
+    ((4 . 4) .
+             ((beamExceptions . ((end . (((1 . 8) . (4 4))
+                                         ((1 . 12) . (3 3 3 3))))))))
+
+    ;; in 4/8 time:
+    ;;   combine beats 1 and 2, so beam in 2
+    ((4 . 8) . ((beatStructure . (2 2))))
+
+    ;; in 4/8 and 4/16 time:
+    ;;   use defaults, so no entries necessary
+
+    ;; in 6 4 time:
+    ;;   use defaults, but end beams with 32nd or finer each 1/4 beat
+    ((6 . 4) .
+             ((beamExceptions . ((end .  (((1 . 16) . (4 4 4 4 4 4))))))))
+
+    ;; in 6 8 time:
+    ;;   use defaults, but end beams with 32nd or finer each 1 8 beat
+    ((6 . 8) .
+             ((beamExceptions . ((end .  (((1 . 32) . (4 4 4 4 4 4))))))))
+
+    ;; in 6 16 time:
+    ;;   use defaults, so no entry necessary
+
+    ;; in 9 4 time:
+    ;;   use defaults, but end beams with 32nd or finer each 1 4 beat
+    ((9 . 4) .
+             ((beamExceptions . ((end . (((1 . 32) . (8 8 8 8 8 8 8 8))))))))
+
+    ;; in 9 8 time
+    ;;   use defaults, but end beams with 32nd notes each 1 8 beat
+    ((9 . 8) .
+             ((beamExceptions . ((end . (((1 . 32) . (4 4 4 4 4 4 4 4 4))))))))
+
+    ;; in 9 16 time
+    ;;   use defaults, so no entry necessary
+
+    ;; in 12 4 time:
+    ;;   use defaults, but end beams with 32nd or finer notes each 1 4 beat
+    ((12 . 4) .
+              ((beamExceptions . ((end . (((1 . 32) . (8 8 8 8 8 8 8 8 8 8 8 8))))))))
+
+    ;; in 12 8 time:
+    ;;   use defaults, but end beams with 32nd notes each 1 8 beat
+    ((12 . 8) .
+              ((beamExceptions . ((end . (((1 . 32) . (4 4 4 4 4 4 4 4 4 4 4 4))))))))
+
+    ;; in 12 16 time:
+    ;;   use defaults; no entry needed
+
+    ;; in 5 8 time:
+    ;;   default: group (3 2)
+    ((5 . 8) .
+             ((baseMoment . (1 . 8))
+              (beatStructure . (3 2))))
+
+    ;; in 8 8 time:
+    ;;   default: group (3 3 2)
+    ((8 . 8) .
+             ((baseMoment . (1 . 8))
+              (beatStructure . (3 3 2))))
+
+    ))  ; end of alist definition
+
+;;;
+;;;  Accessor and constructor functions
+;;;
+
+(define (get-setting my-symbol time-signature time-signature-settings)
+  "Get setting @code{my-symbol} for @code{time-signature} from
+@code{time-signature-settings}."
+  (let ((my-time-signature-settings
+          (assoc-get time-signature time-signature-settings '())))
+   (assoc-get my-symbol my-time-signature-settings '())))
+
+(define-public (make-setting base-fraction
+                             beat-structure
+                             beam-exceptions)
+  (list
+    (cons 'baseMoment base-fraction)
+    (cons 'beatStructure beat-structure)
+    (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}."
+   (let ((return-value (get-setting 'baseMoment
+                                    time-signature
+                                    time-signature-settings)))
+     (if (null? return-value)
+         (cons 1 (cdr time-signature))
+         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}."
+  (define (fraction-divide numerator denominator)
+    (/ (* (car numerator) (cdr denominator))
+       (* (cdr numerator) (car denominator))))
+
+  (let ((return-value (get-setting 'beatStructure
+                                   time-signature
+                                   time-signature-settings)))
+    (if (null? return-value)
+        ;; calculate default beatStructure
+        (let* ((numerator (car time-signature))
+               (group-size (if (and (> numerator 3)
+                                    (zero? (remainder numerator 3)))
+                               3
+                               1))
+               (beat-length (cons (* group-size (car base-fraction))
+                                  (cdr base-fraction)))
+               (beat-count (fraction-divide time-signature beat-length)))
+          (if (integer? beat-count)
+              (make-list beat-count group-size)
+              '()))
+        ;; use value obtained from time-signature-settings
+        return-value)))
+
+(define-public (beam-exceptions time-signature time-signature-settings)
+  "Get beamExceptions value for @code{time-signature} from
+@code{time-signature-settings}."
+   (get-setting 'beamExceptions time-signature time-signature-settings))
+
+
+;;; Functions for overriding time-signature settings
+;;;
+
+(define (override-property-setting context property setting value)
+  "Like the C++ code that executes \\override, but without type
+checking. "
+  (begin
+     (revert-property-setting context property setting)
+     (ly:context-set-property!
+       context
+       property
+       (cons (cons setting value) (ly:context-property context property)))))
+
+(define (revert-property-setting context property setting)
+  "Like the C++ code that executes \revert, but without type
+checking. "
+
+  (define (revert-member alist entry new)
+    "Return ALIST, with ENTRY removed.  ALIST is not modified, instead
+a fresh copy of the list-head is made."
+    (cond
+      ((null? alist) new)
+      ((equal? (car alist) entry) (revert-member (cdr alist) entry new))
+      (else (revert-member (cdr alist) entry (cons (car alist) new)))))
+
+  (ly:context-set-property!
+    context property
+    (revert-member (ly:context-property context property) setting '())))
+
+(define-public (override-time-signature-setting time-signature setting . rest)
+  "Override the time signature settings for the context in @var{rest},
+with the new setting alist @var{setting}. "
+    (context-spec-music
+      (make-apply-context
+        (lambda (c) (override-property-setting
+                      c
+                      'timeSignatureSettings
+                      time-signature
+                      setting)))
+      (if (and (pair? rest) (symbol? (car rest)))
+          (car rest)
+          'Voice)))
+
+(define-public (score-override-time-signature-setting
+                 time-signature setting)
+  (override-time-signature-setting
+    time-signature setting 'Score))
+
+(define-public (revert-time-signature-setting
+                  time-signature . rest)
+  (context-spec-music
+    (make-apply-context
+      (lambda (c)
+        (revert-property-setting
+          c
+          'timeSignatureSettings
+          time-signature)))
+    (if (and (pair? rest) (symbol? (car rest)))
+        (car rest)
+        'Voice)))
index 520c3ecce8d239b7cb9eb72aa9e25e02cc4268ed..a7005ec150b28041022073a4259604cc8cf06970 100644 (file)
@@ -53,7 +53,7 @@ body = re.sub ('(?ms)<DD>(.*?)(</DD>)', r'\1', body)
 body = re.sub ('(?ms)<STRONG>(.*?)(</STRONG>)', r'@strong{\1}', body)
 body = re.sub ('(?ms)<EM>(.*?)(</EM>)', r'@emph{\1}', body)
 
-body = re.sub ('(?ms)&nbsp', r'@tie{}', body)
+body = re.sub ('(?ms)&nbsp;', r'@tie{}', body)
 
 body = re.sub ('(?ms)\cite{(.*?)}', r'[\1]', body)
 body = re.sub ('(?ms)\cite{(.*?)}', r'[\1]', body)
index 0eb12047e697537e146e8fe065072e4815b1d195..c4e387547b18563b5fe6ba81e4f05fbf90e61129 100644 (file)
@@ -27,6 +27,7 @@ Options:
    options
  -o, --output=NAME              write tely doc to NAME
  -t, --title=TITLE              set tely doc title TITLE
+ -a, --author=AUTHOR            set tely author AUTHOR
      --template=TEMPLATE        use TEMPLATE as Texinfo template file,
    instead of standard template; TEMPLATE should contain a command
    '%(include_snippets)s' to tell where to insert LY-FILEs.  When this
@@ -38,10 +39,11 @@ def help (text):
     sys.exit (0)
 
 (options, files) = getopt.getopt (sys.argv[1:], 'f:hn:t:',
-                     ['fragment-options=', 'help', 'name=', 'title=', 'template='])
+                     ['fragment-options=', 'help', 'name=', 'title=', 'author=', 'template='])
 
 name = "ly-doc"
 title = "Ly Doc"
+author = "Han-Wen Nienhuys and Jan Nieuwenhuizen"
 template = '''\input texinfo
 @setfilename %%(name)s.info
 @settitle %%(title)s
@@ -55,7 +57,7 @@ template = '''\input texinfo
 
 @c fool ls-latex
 @ignore
-@author Han-Wen Nienhuys and Jan Nieuwenhuizen
+@author %%(author)s
 @title %%(title)s
 @end ignore
 
@@ -71,14 +73,16 @@ for opt in options:
     o = opt[0]
     a = opt[1]
     if o == '-h' or o == '--help':
-        # We can't use vars () inside a function, as that only contains all 
-        # local variables and none of the global variables! Thus we have to 
+        # We can't use vars () inside a function, as that only contains all
+        # local variables and none of the global variables! Thus we have to
         # generate the help text here and pass it to the function...
         help (help_text % vars ())
     elif o == '-n' or o == '--name':
         name = a
     elif o == '-t' or o == '--title':
         title = a
+    elif o == '-a' or o == '--author':
+        author = a
     elif o == '-f' or o == '--fragment-options':
         fragment_options = a
     elif o == '--template':
@@ -87,11 +91,26 @@ for opt in options:
         raise Exception ('unknown option: ' + o)
 
 texi_file_re = re.compile ('.*\.i?te(ly|xi)$')
+html_file_re = re.compile ('.*\.i?htm(l)?$')
+xml_file_re = re.compile ('.*\.i?xml$')
+tex_file_re = re.compile ('.*\.i?(la)?tex$')
+pdf_file_re = re.compile ('.*\.i?pdf$')
 
 def name2line (n):
     if texi_file_re.match (n):
         # We have a texi include file, simply include it:
         s = r"@include %s" % os.path.basename (n)
+    elif (html_file_re.match (n) or pdf_file_re.match (n) or
+          xml_file_re.match (n) or tex_file_re.match (n)):
+        s = r"""
+@ifhtml
+@html
+<a href="%s">%s</a>
+<br/>
+@end html
+@end ifhtml
+""" % (os.path.basename (n), os.path.basename (n))
+        return s
     else:
         # Assume it's a lilypond file -> create image etc.
         s = r"""
index 88058b17d01eea5341de741ffed52300c1c50252..7e8dbbae023eb40083e442800ccf8fc37b168798 100644 (file)
@@ -165,7 +165,7 @@ compoundMeter =
 \set Timing.measureLength = $mlen
 \set Timing.timeSignatureFraction = #(cons (ly:moment-main-numerator $mlen)
                                            (ly:moment-main-denominator $mlen))
-\set Timing.beatLength = $beat
+\set Timing.baseMoment = $beat
 
 % TODO: Implement beatGrouping and auto-beam-settings!!!
 #} ))
index 2fd8bebd5a533bcaf7e9b932c0b0bf4fd6e5919d..34c022e0825ff602da60fd86aa9ac3f0ba951ce5 100755 (executable)
@@ -18,26 +18,6 @@ if [ ! -f autogen.sh -o stepmake/autogen.sh -nt autogen.sh ]; then
     exec ./autogen.sh "$@"
 fi
 
-# Be paranoid: check for autoconf >= 2.50
-# Some setups have both autoconf 2.13 and 2.5x available through
-# a wrapper script: /usr/bin/autoconf.
-# This wrapper may incorrectly autoselect autoconf 2.50, but it
-# advertises itself as autoconf 2.13.
-# If you have such a setup, invoke this script as:
-#   autoconf=autoconf2.50 ./autogen.sh
-for i in autoconf2.50 autoconf-2.50 autoconf  false; do
-  version=`$i --version 2>/dev/null | head -n 1 | awk '{print $NF}' | awk -F. '{print $1 * 100 + $2}'`
-  if test "0$version" -ge 250; then
-    autoconf=$i
-    break
-  fi
-done
-
-if test -z "$autoconf"; then
-    echo "ERROR: Please install autoconf 2.50 or newer"
-    exit 1
-fi
-
 for i in $srcdir/configure.in #`find $srcdir -name configure.in -print`
 do 
   dir=`dirname $i`
@@ -45,8 +25,11 @@ do
   (
       cd $dir
       echo "Running autoconf ..."
-      $autoconf
+      autoconf || exit 1
   )
+  # Autoconf automatically checks its own minimum required
+  # version, and it aborts when the check fails.
+  test "$?" -eq 1 && exit 1
 done
 
 #conf_flags="--enable-maintainer-mode --enable-compile-warnings" #--enable-iso-c
index ae35431611ba3de4b598b889720db6735074c1c8..204218c07382772bc2e9ad083f9dd766af90fb36 100755 (executable)
@@ -4,7 +4,7 @@
 #   2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
 #   Free Software Foundation, Inc.
 
-timestamp='2010-03-22'
+timestamp='2010-05-21'
 
 # This file is (in principle) common to ALL GNU software.
 # The presence of a machine in this file suggests that SOME GNU software
@@ -124,8 +124,9 @@ esac
 # Here we must recognize all the valid KERNEL-OS combinations.
 maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'`
 case $maybe_os in
-  nto-qnx* | linux-gnu* | linux-dietlibc | linux-newlib* | linux-uclibc* | \
-  uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* | \
+  nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc | linux-newlib* | \
+  linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | \
+  knetbsd*-gnu* | netbsd*-gnu* | \
   kopensolaris*-gnu* | \
   storm-chaos* | os2-emx* | rtmk-nova*)
     os=-$maybe_os
@@ -1307,7 +1308,8 @@ case $os in
              | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \
              | -chorusos* | -chorusrdb* | -cegcc* \
              | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
-             | -mingw32* | -linux-gnu* | -linux-newlib* | -linux-uclibc* \
+             | -mingw32* | -linux-gnu* | -linux-android* \
+             | -linux-newlib* | -linux-uclibc* \
              | -uxpv* | -beos* | -mpeix* | -udk* \
              | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \
              | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \