]> git.donarmstrong.com Git - lilypond.git/commitdiff
Merge remote-tracking branch 'origin' into translation
authorDavid Kastrup <dak@gnu.org>
Mon, 16 Jun 2014 11:17:57 +0000 (13:17 +0200)
committerDavid Kastrup <dak@gnu.org>
Mon, 16 Jun 2014 11:17:57 +0000 (13:17 +0200)
1255 files changed:
.mailmap
Documentation/changes.tely
Documentation/contributor.texi
Documentation/contributor/doc-work.itexi
Documentation/contributor/issues.itexi
Documentation/contributor/programming-work.itexi
Documentation/contributor/release-work.itexi
Documentation/cs/learning.tely
Documentation/cs/learning/common-notation.itely
Documentation/cs/learning/fundamental.itely
Documentation/cs/learning/tweaks.itely
Documentation/cs/web.texi
Documentation/css/lilypond-manuals.css
Documentation/de/essay.tely
Documentation/de/essay/engraving.itely
Documentation/de/extending.tely
Documentation/de/extending/programming-interface.itely
Documentation/de/learning.tely
Documentation/de/learning/common-notation.itely
Documentation/de/learning/fundamental.itely
Documentation/de/learning/tweaks.itely
Documentation/de/notation.tely
Documentation/de/notation/changing-defaults.itely
Documentation/de/notation/fretted-strings.itely
Documentation/de/notation/input.itely
Documentation/de/notation/percussion.itely
Documentation/de/notation/pitches.itely
Documentation/de/notation/repeats.itely
Documentation/de/notation/rhythms.itely
Documentation/de/notation/simultaneous.itely
Documentation/de/notation/staff.itely
Documentation/de/notation/vocal.itely
Documentation/de/search-box.ihtml
Documentation/de/usage.tely
Documentation/de/web.texi
Documentation/es/essay.tely
Documentation/es/essay/engraving.itely
Documentation/es/extending.tely
Documentation/es/extending/programming-interface.itely
Documentation/es/learning.tely
Documentation/es/learning/common-notation.itely
Documentation/es/learning/fundamental.itely
Documentation/es/learning/tweaks.itely
Documentation/es/notation.tely
Documentation/es/notation/changing-defaults.itely
Documentation/es/notation/fretted-strings.itely
Documentation/es/notation/input.itely
Documentation/es/notation/percussion.itely
Documentation/es/notation/pitches.itely
Documentation/es/notation/repeats.itely
Documentation/es/notation/rhythms.itely
Documentation/es/notation/simultaneous.itely
Documentation/es/notation/staff.itely
Documentation/es/notation/vocal.itely
Documentation/es/search-box.ihtml
Documentation/es/usage.tely
Documentation/es/web.texi
Documentation/essay.tely
Documentation/essay/engraving.itely
Documentation/extending.tely
Documentation/extending/programming-interface.itely
Documentation/extending/scheme-tutorial.itely
Documentation/fr/essay.tely
Documentation/fr/essay/engraving.itely
Documentation/fr/extending.tely
Documentation/fr/extending/programming-interface.itely
Documentation/fr/learning.tely
Documentation/fr/learning/common-notation.itely
Documentation/fr/learning/fundamental.itely
Documentation/fr/learning/tweaks.itely
Documentation/fr/notation.tely
Documentation/fr/notation/changing-defaults.itely
Documentation/fr/notation/fretted-strings.itely
Documentation/fr/notation/input.itely
Documentation/fr/notation/percussion.itely
Documentation/fr/notation/pitches.itely
Documentation/fr/notation/repeats.itely
Documentation/fr/notation/rhythms.itely
Documentation/fr/notation/simultaneous.itely
Documentation/fr/notation/staff.itely
Documentation/fr/notation/vocal.itely
Documentation/fr/search-box.ihtml
Documentation/fr/usage.tely
Documentation/fr/web.texi
Documentation/hu/learning.tely
Documentation/hu/learning/common-notation.itely
Documentation/hu/learning/fundamental.itely
Documentation/hu/search-box.ihtml
Documentation/hu/usage.tely
Documentation/hu/web.texi
Documentation/included/authors.itexi
Documentation/included/generating-output.itexi
Documentation/included/note-head-style.ly
Documentation/it/learning.tely
Documentation/it/learning/common-notation.itely
Documentation/it/learning/fundamental.itely
Documentation/it/learning/tweaks.itely
Documentation/it/notation.tely
Documentation/it/notation/pitches.itely
Documentation/it/notation/repeats.itely
Documentation/it/notation/rhythms.itely
Documentation/it/notation/simultaneous.itely
Documentation/it/notation/staff.itely
Documentation/it/search-box.ihtml
Documentation/it/usage.tely
Documentation/it/web.texi
Documentation/ja/learning.tely
Documentation/ja/learning/common-notation.itely
Documentation/ja/learning/fundamental.itely
Documentation/ja/learning/tweaks.itely
Documentation/ja/notation.tely
Documentation/ja/notation/changing-defaults.itely
Documentation/ja/notation/fretted-strings.itely
Documentation/ja/notation/input.itely
Documentation/ja/notation/percussion.itely
Documentation/ja/notation/pitches.itely
Documentation/ja/notation/repeats.itely
Documentation/ja/notation/rhythms.itely
Documentation/ja/notation/simultaneous.itely
Documentation/ja/notation/staff.itely
Documentation/ja/notation/vocal.itely
Documentation/ja/usage.tely
Documentation/ja/web.texi
Documentation/learning.tely
Documentation/learning/common-notation.itely
Documentation/learning/fundamental.itely
Documentation/learning/templates.itely
Documentation/learning/tweaks.itely
Documentation/lilypond-texi2html.init
Documentation/ly-examples/Stockhausen_Klavierstueck2.ly [new file with mode: 0644]
Documentation/ly-examples/aucun-snippet.ly
Documentation/ly-examples/bach-bwv610.ly
Documentation/ly-examples/cary.ly
Documentation/ly-examples/orchestra.ly
Documentation/ly-examples/sesto-full.ly
Documentation/ly-examples/sesto-piano.ly
Documentation/ly-examples/sesto.ily
Documentation/ly-examples/tab-example.ly
Documentation/music-glossary.tely
Documentation/nl/learning.tely
Documentation/nl/learning/common-notation.itely
Documentation/nl/learning/fundamental.itely
Documentation/nl/learning/tweaks.itely
Documentation/nl/search-box.ihtml
Documentation/nl/web.texi
Documentation/notation.tely
Documentation/notation/changing-defaults.itely
Documentation/notation/editorial.itely
Documentation/notation/expressive.itely
Documentation/notation/fretted-strings.itely
Documentation/notation/input.itely
Documentation/notation/percussion.itely
Documentation/notation/pitches.itely
Documentation/notation/repeats.itely
Documentation/notation/rhythms.itely
Documentation/notation/simultaneous.itely
Documentation/notation/spacing.itely
Documentation/notation/staff.itely
Documentation/notation/text.itely
Documentation/notation/vocal.itely
Documentation/pictures/logo-debian.png
Documentation/po/it.po
Documentation/search-box.ihtml
Documentation/snippets/aligning-syllables-with-melisma.ly
Documentation/snippets/broken-crescendo-hairpin.ly
Documentation/snippets/changing-midi-output-to-one-channel-per-voice.ly
Documentation/snippets/defining-an-engraver-in-scheme--ambitus-engraver.ly
Documentation/snippets/engravers-one-by-one.ly
Documentation/snippets/figured-bass-headword.ly
Documentation/snippets/flat-flags-and-beam-nibs.ly
Documentation/snippets/hiding-accidentals-on-tied-notes-at-the-start-of-a-new-system.ly
Documentation/snippets/how-to-change-fret-diagram-position.ly
Documentation/snippets/makam-example.ly
Documentation/snippets/making-an-object-invisible-with-the-transparent-property.ly
Documentation/snippets/modifying-default-values-for-articulation-shorthand-notation.ly
Documentation/snippets/modifying-tuplet-bracket-length.ly
Documentation/snippets/new/broken-crescendo-hairpin.ly
Documentation/snippets/new/defining-an-engraver-in-scheme--ambitus-engraver.ly
Documentation/snippets/new/flat-flags-and-beam-nibs.ly [new file with mode: 0644]
Documentation/snippets/new/making-an-object-invisible-with-the-transparent-property.ly
Documentation/snippets/new/modifying-tuplet-bracket-length.ly [new file with mode: 0644]
Documentation/snippets/new/non-traditional-key-signatures.ly [new file with mode: 0644]
Documentation/snippets/new/printing-a-repeat-sign-at-the-beginning-of-a-piece.ly [deleted file]
Documentation/snippets/new/staff-headword.ly
Documentation/snippets/new/unfretted-headword.ly
Documentation/snippets/non-traditional-key-signatures.ly
Documentation/snippets/printing-a-repeat-sign-at-the-beginning-of-a-piece.ly [deleted file]
Documentation/snippets/repeats.snippet-list
Documentation/snippets/rhythms-headword.ly
Documentation/snippets/satb-choir-template---four-staves.ly
Documentation/snippets/simultaneous-headword.ly
Documentation/snippets/single-staff-template-with-notes-and-chords.ly
Documentation/snippets/staff-headword.ly
Documentation/snippets/tweaks-and-overrides.snippet-list
Documentation/snippets/unfretted-headword.ly
Documentation/snippets/using-arpeggiobracket-to-make-divisi-more-visible.ly
Documentation/snippets/vocal-headword.ly
Documentation/usage.tely
Documentation/usage/external.itely
Documentation/usage/running.itely
Documentation/usage/updating.itely
Documentation/web.texi
Documentation/web/download.itexi
Documentation/web/introduction.itexi
Documentation/web/news-front.itexi
Documentation/web/news.itexi
Documentation/web/server/lilypond.org.htaccess
Documentation/web/server/robots.txt
Documentation/web/server/tweets.xml
Documentation/zh/search-box.ihtml
Documentation/zh/web.texi
LICENSE.OFL
VERSION
elisp/lilypond-mode.el
flower/cpu-timer.cc
flower/file-name.cc
flower/file-path.cc
flower/getopt-long.cc
flower/include/arithmetic-operator.hh
flower/include/axis.hh
flower/include/compare.hh
flower/include/cpu-timer.hh
flower/include/direction.hh
flower/include/drul-array.hh
flower/include/file-name.hh
flower/include/file-path.hh
flower/include/flower-proto.hh
flower/include/guile-compatibility.hh
flower/include/international.hh
flower/include/interval-set.hh
flower/include/interval.hh
flower/include/interval.tcc
flower/include/libc-extension.hh
flower/include/matrix.hh
flower/include/memory-stream.hh
flower/include/offset.hh
flower/include/parray.hh
flower/include/polynomial.hh
flower/include/pqueue.hh
flower/include/rational.hh
flower/include/real.hh
flower/include/std-string.hh
flower/include/std-vector.hh
flower/include/tuple.hh
flower/include/virtual-methods.hh
flower/include/warn.hh
flower/international.cc
flower/interval-set.cc
flower/interval.cc
flower/libc-extension.cc
flower/memory-stream.cc
flower/offset.cc
flower/polynomial.cc
flower/rational.cc
flower/std-string.cc
flower/string-convert.cc
flower/warn.cc
input/regression/accidental-tie.ly
input/regression/auto-beam-exceptions.ly
input/regression/baerenreiter-sarabande.ly
input/regression/beam-multiplicity-over-rests.ly
input/regression/chord-changes-alternative.ly [new file with mode: 0644]
input/regression/chord-dots.ly [new file with mode: 0644]
input/regression/clefs.ly
input/regression/completion-heads-factor.ly
input/regression/completion-heads-tie.ly
input/regression/completion-rest.ly
input/regression/display-lily-tests.ly
input/regression/dynamics-avoid-cross-staff-stem.ly [deleted file]
input/regression/grace-slashed-no-slur.ly
input/regression/hara-kiri-stanza-number.ly
input/regression/header-score-reordered.ly [new file with mode: 0644]
input/regression/key-signature-padding.ly
input/regression/key-signature-scordatura-persist.ly
input/regression/key-signature-scordatura.ly
input/regression/keys.ly
input/regression/les-nereides.ly
input/regression/lyric-combine-empty-warning.ly
input/regression/lyric-combine-new.ly
input/regression/lyric-combine-polyphonic.ly
input/regression/lyric-extender-broken.ly
input/regression/lyric-extender-completion.ly
input/regression/lyric-extender-no-heads.ly
input/regression/lyric-phrasing.ly
input/regression/lyrics-after-grace.ly
input/regression/lyrics-melisma-beam.ly
input/regression/magnifyMusic-stem-beam-spacing.ly [new file with mode: 0644]
input/regression/make-relative-copies.ly [new file with mode: 0644]
input/regression/make-relative-music.ly [new file with mode: 0644]
input/regression/make-relative.ly
input/regression/midi-grace-after-rest.ly [new file with mode: 0644]
input/regression/midi-lyric-barcheck.ly
input/regression/morgenlied.ly
input/regression/mozart-hrn3-allegro.ily
input/regression/mozart-hrn3-romanze.ily
input/regression/mozart-hrn3-rondo.ily
input/regression/optional-args.ly
input/regression/page-spacing-nonstaff-lines-and-markup.ly
input/regression/page-spacing-nonstaff-lines-independent.ly
input/regression/part-combine-global.ly
input/regression/part-combine-solo.ly
input/regression/part-combine.ly
input/regression/property-nested-override.ly
input/regression/quote-tie.ly
input/regression/repeat-percent.ly
input/regression/rhythmic-sequence.ly [new file with mode: 0644]
input/regression/scheme-text-spanner.ly
input/regression/score-lines.ly [new file with mode: 0644]
input/regression/script-tie-collision.ly
input/regression/slur-broken-trend.ly
input/regression/slur-scoring.ly
input/regression/song-melisma.ly
input/regression/song-repetition.ly
input/regression/spacing-multi-tuplet.ly
input/regression/span-bar-allow-span-bar.ly
input/regression/spanner-alignment.ly
input/regression/staff-online-symbol-absence.ly
input/regression/stem-direction.ly
input/regression/tablature-chord-repetition-finger.ly
input/regression/tablature-chord-repetition.ly
input/regression/tablature-full-notation.ly
input/regression/tablature-slurs-with-beams.ly
input/regression/tablature-tie-behaviour.ly
input/regression/tablature-tie-spanner.ly
input/regression/tag-multiple.ly
input/regression/tie-dash.ly
input/regression/tie-dot.ly
input/regression/tie-grace.ly
input/regression/tie-single-manual.ly
input/regression/tie-single.ly
input/regression/tie-unterminated.ly
input/regression/time-signature-midmeasure.ly [new file with mode: 0644]
input/regression/tuplet-number-french-kneed-beams.ly [new file with mode: 0644]
input/regression/tuplet-number-kneed-beam-even-stem-count.ly [new file with mode: 0644]
input/regression/tuplet-number-kneed-beam-horizontal-fit.ly [new file with mode: 0644]
input/regression/tuplet-number-kneed-beam-ledger-lines.ly [new file with mode: 0644]
input/regression/tuplet-number-kneed-beam-positions.ly [new file with mode: 0644]
input/regression/tuplet-number-shift-along-kneed-beam.ly [new file with mode: 0644]
input/regression/tuplet-numbers-kneed-beams-accidentals.ly [new file with mode: 0644]
input/regression/tuplet-numbers-kneed-beams.ly [new file with mode: 0644]
input/regression/typography-demo.ly
input/regression/unset-once.ly [new file with mode: 0644]
lily/accidental-engraver.cc
lily/accidental-placement.cc
lily/accidental.cc
lily/align-interface.cc
lily/all-font-metrics-scheme.cc
lily/all-font-metrics.cc
lily/ambitus-engraver.cc
lily/apply-context-iterator.cc
lily/arpeggio-engraver.cc
lily/arpeggio.cc
lily/articulations.cc
lily/audio-column.cc
lily/audio-element-info.cc
lily/audio-element.cc
lily/audio-item.cc
lily/audio-staff.cc
lily/auto-beam-engraver.cc
lily/auto-change-iterator.cc
lily/axis-group-engraver.cc
lily/axis-group-interface-scheme.cc
lily/axis-group-interface.cc
lily/balloon-engraver.cc
lily/balloon.cc
lily/bar-check-iterator.cc
lily/bar-engraver.cc
lily/bar-line.cc
lily/bar-number-engraver.cc
lily/beam-collision-engraver.cc
lily/beam-engraver.cc
lily/beam-performer.cc
lily/beam-quanting.cc
lily/beam.cc
lily/beaming-pattern.cc
lily/bend-engraver.cc
lily/bezier-bow.cc
lily/bezier.cc
lily/book-scheme.cc
lily/book.cc
lily/box.cc
lily/break-align-engraver.cc
lily/break-alignment-interface.cc
lily/break-substitution.cc
lily/breathing-sign-engraver.cc
lily/breathing-sign.cc
lily/change-iterator.cc
lily/chord-name-engraver.cc
lily/chord-name.cc
lily/chord-tremolo-engraver.cc
lily/chord-tremolo-iterator.cc
lily/clef-engraver.cc
lily/clef.cc
lily/cluster-engraver.cc
lily/cluster.cc
lily/coherent-ligature-engraver.cc
lily/collision-engraver.cc
lily/column-x-positions.cc
lily/completion-note-heads-engraver.cc
lily/completion-rest-engraver.cc
lily/concurrent-hairpin-engraver.cc
lily/constrained-breaking.cc
lily/context-def.cc
lily/context-handle.cc
lily/context-mod-scheme.cc
lily/context-mod.cc
lily/context-property.cc
lily/context-scheme.cc
lily/context-specced-music-iterator.cc
lily/context.cc
lily/cue-clef-engraver.cc
lily/custos-engraver.cc
lily/custos.cc
lily/default-bar-line-engraver.cc
lily/dimension-cache.cc
lily/dimensions-scheme.cc
lily/directional-element-interface.cc
lily/dispatcher-scheme.cc
lily/dispatcher.cc
lily/dot-column-engraver.cc
lily/dot-column.cc
lily/dot-configuration.cc
lily/dot-formatting-problem.cc
lily/dots-engraver.cc
lily/dots.cc
lily/double-percent-repeat-engraver.cc
lily/drum-note-engraver.cc
lily/drum-note-performer.cc
lily/duration-scheme.cc
lily/duration.cc
lily/dynamic-align-engraver.cc
lily/dynamic-engraver.cc
lily/dynamic-performer.cc
lily/enclosing-bracket.cc
lily/engraver-group.cc
lily/engraver-scheme.cc
lily/engraver.cc
lily/episema-engraver.cc
lily/event-chord-iterator.cc
lily/event-iterator.cc
lily/extender-engraver.cc
lily/figured-bass-continuation.cc
lily/figured-bass-engraver.cc
lily/figured-bass-position-engraver.cc
lily/file-name-map.cc
lily/fingering-engraver.cc
lily/flag.cc
lily/font-config-scheme.cc
lily/font-config.cc
lily/font-interface.cc
lily/font-metric-scheme.cc
lily/font-metric.cc
lily/font-select.cc
lily/font-size-engraver.cc
lily/footnote-engraver.cc
lily/freetype-error.cc
lily/freetype.cc
lily/fretboard-engraver.cc
lily/function-documentation.cc
lily/general-scheme.cc
lily/glissando-engraver.cc
lily/global-context-scheme.cc
lily/global-context.cc
lily/global-ctor.cc
lily/global-vars.cc
lily/grace-engraver.cc
lily/grace-iterator.cc
lily/grace-music.cc
lily/grace-spacing-engraver.cc
lily/gregorian-ligature-engraver.cc
lily/gregorian-ligature.cc
lily/grid-line-interface.cc
lily/grid-line-span-engraver.cc
lily/grid-point-engraver.cc
lily/grob-array-scheme.cc
lily/grob-array.cc
lily/grob-info.cc
lily/grob-interface-scheme.cc
lily/grob-interface.cc
lily/grob-pq-engraver.cc
lily/grob-property.cc
lily/grob-scheme.cc
lily/grob-smob.cc
lily/grob.cc
lily/guile-init.cc
lily/hairpin.cc
lily/hara-kiri-group-spanner.cc
lily/horizontal-bracket-engraver.cc
lily/horizontal-bracket.cc
lily/hyphen-engraver.cc
lily/includable-lexer.cc
lily/include/accidental-interface.hh
lily/include/accidental-placement.hh
lily/include/align-interface.hh
lily/include/all-font-metrics.hh
lily/include/arpeggio.hh
lily/include/articulations.hh
lily/include/audio-column.hh
lily/include/audio-element-info.hh
lily/include/audio-element.hh
lily/include/audio-item.hh
lily/include/audio-staff.hh
lily/include/axis-group-interface.hh
lily/include/bar-line.hh
lily/include/beam-scoring-problem.hh
lily/include/beam.hh
lily/include/beaming-pattern.hh
lily/include/bezier.hh
lily/include/book.hh
lily/include/break-align-interface.hh
lily/include/breathing-sign.hh
lily/include/change-iterator.hh
lily/include/chord-name.hh
lily/include/chord-tremolo-iterator.hh
lily/include/clef.hh
lily/include/cluster.hh
lily/include/coherent-ligature-engraver.hh
lily/include/column-x-positions.hh
lily/include/constrained-breaking.hh
lily/include/context-def.hh
lily/include/context-handle.hh
lily/include/context-mod.hh
lily/include/context.hh
lily/include/custos.hh
lily/include/dimension-cache.hh
lily/include/directional-element-interface.hh
lily/include/dot-column.hh
lily/include/dot-configuration.hh
lily/include/dots.hh
lily/include/duration.hh
lily/include/engraver-group.hh
lily/include/engraver.hh
lily/include/event-chord-iterator.hh
lily/include/event-iterator.hh
lily/include/file-name-map.hh
lily/include/fingering-column.hh
lily/include/font-interface.hh
lily/include/font-metric.hh
lily/include/freetype.hh
lily/include/global-context.hh
lily/include/global-ctor.hh
lily/include/grace-fixup.hh
lily/include/grace-iterator.hh
lily/include/gregorian-ligature-engraver.hh
lily/include/gregorian-ligature.hh
lily/include/grid-line-interface.hh
lily/include/grob-array.hh
lily/include/grob-info.hh
lily/include/grob-interface.hh
lily/include/grob.hh
lily/include/group-interface.hh
lily/include/hairpin.hh
lily/include/hara-kiri-group-spanner.hh
lily/include/horizontal-bracket.hh
lily/include/includable-lexer.hh
lily/include/input.hh
lily/include/interval-minefield.hh
lily/include/item.hh
lily/include/keyword.hh
lily/include/kievan-ligature.hh
lily/include/least-squares.hh
lily/include/ligature-engraver.hh
lily/include/lily-guile-macros.hh
lily/include/lily-guile.hh
lily/include/lily-lexer.hh
lily/include/lily-parser.hh
lily/include/lily-proto.hh
lily/include/lily-version.hh
lily/include/lilypond-version.hh
lily/include/line-interface.hh
lily/include/lookup.hh
lily/include/ly-module.hh
lily/include/ly-smobs.icc
lily/include/lyric-extender.hh
lily/include/lyric-hyphen.hh
lily/include/main.hh
lily/include/measure-grouping-spanner.hh
lily/include/melody-spanner.hh
lily/include/mensural-ligature.hh
lily/include/midi-chunk.hh
lily/include/midi-item.hh
lily/include/midi-stream.hh
lily/include/midi-walker.hh
lily/include/mingw-compatibility.hh
lily/include/minimal-page-breaking.hh
lily/include/misc.hh
lily/include/modified-font-metric.hh
lily/include/moment.hh
lily/include/multi-measure-rest.hh
lily/include/music-function.hh
lily/include/music-iterator.hh
lily/include/music-output.hh
lily/include/music-sequence.hh
lily/include/music-wrapper-iterator.hh
lily/include/music-wrapper.hh
lily/include/music.hh
lily/include/note-collision.hh
lily/include/note-column.hh
lily/include/note-head.hh
lily/include/note-spacing.hh
lily/include/open-type-font.hh
lily/include/optimal-page-breaking.hh
lily/include/output-def.hh
lily/include/page-breaking.hh
lily/include/page-layout-problem.hh
lily/include/page-marker.hh
lily/include/page-spacing-result.hh
lily/include/page-spacing.hh
lily/include/page-turn-page-breaking.hh
lily/include/pango-font.hh
lily/include/paper-book.hh
lily/include/paper-column-engraver.hh
lily/include/paper-column.hh
lily/include/paper-outputter.hh
lily/include/paper-score.hh
lily/include/paper-system.hh
lily/include/parse-scm.hh
lily/include/percent-repeat-item.hh
lily/include/performance.hh
lily/include/performer-group.hh
lily/include/performer.hh
lily/include/pitch-interval.hh
lily/include/pitch.hh
lily/include/pointer-group-interface.hh
lily/include/prob.hh
lily/include/profile.hh
lily/include/program-option.hh
lily/include/property-iterator.hh
lily/include/protected-scm.hh
lily/include/pure-from-neighbor-interface.hh
lily/include/relocate.hh
lily/include/repeated-music.hh
lily/include/rest-collision.hh
lily/include/rest.hh
lily/include/rhythmic-head.hh
lily/include/rod.hh
lily/include/scale.hh
lily/include/scheme-engraver.hh
lily/include/scheme-listener.hh
lily/include/scm-hash.hh
lily/include/score-engraver.hh
lily/include/score-performer.hh
lily/include/score.hh
lily/include/script-column.hh
lily/include/script-interface.hh
lily/include/self-alignment-interface.hh
lily/include/semi-tie-column.hh
lily/include/semi-tie.hh
lily/include/separation-item.hh
lily/include/sequential-iterator.hh
lily/include/side-position-interface.hh
lily/include/simple-closure.hh
lily/include/simple-music-iterator.hh
lily/include/simple-spacer.hh
lily/include/simultaneous-music-iterator.hh
lily/include/skyline-pair.hh
lily/include/skyline.hh
lily/include/slur-configuration.hh
lily/include/slur-proto-engraver.hh
lily/include/slur-score-parameters.hh
lily/include/slur-scoring.hh
lily/include/slur.hh
lily/include/smobs.hh
lily/include/source-file.hh
lily/include/sources.hh
lily/include/spaceable-grob.hh
lily/include/spacing-interface.hh
lily/include/spacing-options.hh
lily/include/spacing-spanner.hh
lily/include/spanner.hh
lily/include/spring.hh
lily/include/staff-grouper-interface.hh
lily/include/staff-spacing.hh
lily/include/staff-symbol-referencer.hh
lily/include/staff-symbol.hh
lily/include/stem-info.hh
lily/include/stem-tremolo.hh
lily/include/stem.hh
lily/include/stencil.hh
lily/include/stream-event.hh
lily/include/system-start-delimiter.hh
lily/include/system.hh
lily/include/text-interface.hh
lily/include/tie-column.hh
lily/include/tie-configuration.hh
lily/include/tie-details.hh
lily/include/tie-formatting-problem.hh
lily/include/tie-specification.hh
lily/include/tie.hh
lily/include/time-scaled-music-iterator.hh
lily/include/time-signature.hh
lily/include/timing-translator.hh
lily/include/translator-dispatch-list.hh
lily/include/translator-group.hh
lily/include/translator.hh
lily/include/translator.icc
lily/include/tuplet-bracket.hh
lily/include/tuplet-number.hh [new file with mode: 0644]
lily/include/unpure-pure-container.hh
lily/include/vaticana-ligature.hh
lily/include/volta-bracket.hh
lily/input-scheme.cc
lily/input-smob.cc
lily/input.cc
lily/instrument-name-engraver.cc
lily/instrument-switch-engraver.cc
lily/interval-minefield.cc
lily/item-scheme.cc
lily/item.cc
lily/keep-alive-together-engraver.cc
lily/key-engraver.cc
lily/key-performer.cc
lily/key-signature-interface.cc
lily/kievan-ligature-engraver.cc
lily/kievan-ligature.cc
lily/laissez-vibrer-engraver.cc
lily/least-squares.cc
lily/ledger-line-engraver.cc
lily/ledger-line-spanner.cc
lily/lexer.ll
lily/ligature-bracket-engraver.cc
lily/ligature-engraver.cc
lily/lily-guile.cc
lily/lily-lexer-scheme.cc
lily/lily-lexer.cc
lily/lily-parser-scheme.cc
lily/lily-parser.cc
lily/lily-version.cc
lily/lilypond-version.cc
lily/lilypond.rc.in
lily/line-interface.cc
lily/line-spanner.cc
lily/lookup.cc
lily/ly-module.cc
lily/lyric-combine-music-iterator.cc
lily/lyric-combine-music.cc
lily/lyric-engraver.cc
lily/lyric-extender.cc
lily/lyric-hyphen.cc
lily/lyric-performer.cc
lily/main.cc
lily/mark-engraver.cc
lily/measure-grouping-engraver.cc
lily/measure-grouping-spanner.cc
lily/melody-engraver.cc
lily/melody-spanner.cc
lily/mensural-ligature-engraver.cc
lily/mensural-ligature.cc
lily/metronome-engraver.cc
lily/midi-chunk.cc
lily/midi-control-function-performer.cc
lily/midi-item.cc
lily/midi-stream.cc
lily/midi-walker.cc
lily/minimal-page-breaking.cc
lily/misc.cc
lily/modified-font-metric.cc
lily/module-scheme.cc
lily/moment-scheme.cc
lily/moment.cc
lily/multi-measure-rest-engraver.cc
lily/multi-measure-rest.cc
lily/music-function.cc
lily/music-iterator.cc
lily/music-output.cc
lily/music-scheme.cc
lily/music-sequence.cc
lily/music-wrapper-iterator.cc
lily/music-wrapper.cc
lily/music.cc
lily/new-fingering-engraver.cc
lily/note-collision.cc
lily/note-column-scheme.cc
lily/note-column.cc
lily/note-head-line-engraver.cc
lily/note-head-scheme.cc
lily/note-head.cc
lily/note-heads-engraver.cc
lily/note-name-engraver.cc
lily/note-performer.cc
lily/note-spacing-engraver.cc
lily/note-spacing.cc
lily/open-type-font-scheme.cc
lily/open-type-font.cc
lily/optimal-page-breaking.cc
lily/ottava-bracket.cc
lily/ottava-engraver.cc
lily/output-def-scheme.cc
lily/output-def.cc
lily/output-property-engraver.cc
lily/page-breaking-scheme.cc
lily/page-breaking.cc
lily/page-layout-problem-scheme.cc
lily/page-layout-problem.cc
lily/page-marker-scheme.cc
lily/page-marker.cc
lily/page-spacing-result.cc
lily/page-spacing.cc
lily/page-turn-engraver.cc
lily/page-turn-page-breaking.cc
lily/pango-font-scheme.cc
lily/pango-font.cc
lily/pango-select-scheme.cc
lily/pango-select.cc
lily/paper-book-scheme.cc
lily/paper-book.cc
lily/paper-column-engraver.cc
lily/paper-column.cc
lily/paper-def.cc
lily/paper-outputter-scheme.cc
lily/paper-outputter.cc
lily/paper-score-scheme.cc
lily/paper-score.cc
lily/paper-system-scheme.cc
lily/paper-system.cc
lily/parenthesis-engraver.cc
lily/parse-scm.cc
lily/parser.yy
lily/part-combine-engraver.cc
lily/part-combine-iterator.cc
lily/partial-iterator.cc
lily/pdf-scheme.cc
lily/percent-repeat-engraver.cc
lily/percent-repeat-item.cc
lily/percent-repeat-iterator.cc
lily/performance-scheme.cc
lily/performance.cc
lily/performer-group.cc
lily/performer.cc
lily/pfb.cc
lily/phrasing-slur-engraver.cc
lily/piano-pedal-align-engraver.cc
lily/piano-pedal-bracket.cc
lily/piano-pedal-engraver.cc
lily/piano-pedal-performer.cc
lily/pitch-interval.cc
lily/pitch-scheme.cc
lily/pitch-squash-engraver.cc
lily/pitch.cc
lily/pitched-trill-engraver.cc
lily/pointer-group-interface-scheme.cc
lily/pointer-group-interface.cc
lily/prob-scheme.cc
lily/prob.cc
lily/profile.cc
lily/program-option-scheme.cc
lily/program-option.cc
lily/property-iterator.cc
lily/protected-scm.cc
lily/pure-from-neighbor-engraver.cc
lily/pure-from-neighbor-interface.cc
lily/quote-iterator.cc
lily/relative-octave-check.cc
lily/relative-octave-music.cc
lily/relocate.cc
lily/repeat-acknowledge-engraver.cc
lily/repeat-tie-engraver.cc
lily/repeated-music.cc
lily/rest-collision-engraver.cc
lily/rest-collision.cc
lily/rest-engraver.cc
lily/rest.cc
lily/rhythmic-column-engraver.cc
lily/rhythmic-head.cc
lily/rod.cc
lily/scale.cc
lily/scheme-engraver.cc
lily/scheme-listener-scheme.cc
lily/scheme-listener.cc
lily/scm-hash.cc
lily/score-engraver.cc
lily/score-performer.cc
lily/score-scheme.cc
lily/score.cc
lily/script-column-engraver.cc
lily/script-column.cc
lily/script-engraver.cc
lily/script-interface.cc
lily/script-row-engraver.cc
lily/self-alignment-interface.cc
lily/semi-tie-column.cc
lily/semi-tie.cc
lily/separating-line-group-engraver.cc
lily/separation-item.cc
lily/sequential-iterator.cc
lily/side-position-interface.cc
lily/simple-closure.cc
lily/simple-music-iterator.cc
lily/simple-spacer-scheme.cc
lily/simple-spacer.cc
lily/simultaneous-music-iterator.cc
lily/skyline-pair.cc
lily/skyline.cc
lily/slash-repeat-engraver.cc
lily/slur-configuration.cc
lily/slur-engraver.cc
lily/slur-performer.cc
lily/slur-proto-engraver.cc
lily/slur-score-parameters.cc
lily/slur-scoring.cc
lily/slur.cc
lily/smobs.cc
lily/source-file.cc
lily/sources.cc
lily/spaceable-grob.cc
lily/spacing-basic.cc
lily/spacing-determine-loose-columns.cc
lily/spacing-engraver.cc
lily/spacing-interface.cc
lily/spacing-loose-columns.cc
lily/spacing-options.cc
lily/spacing-spanner.cc
lily/span-arpeggio-engraver.cc
lily/span-bar-engraver.cc
lily/span-bar-stub-engraver.cc
lily/spanner-break-forbid-engraver.cc
lily/spanner-scheme.cc
lily/spanner.cc
lily/spring-smob.cc
lily/spring.cc
lily/staff-collecting-engraver.cc
lily/staff-grouper-interface.cc
lily/staff-performer.cc
lily/staff-spacing.cc
lily/staff-symbol-engraver.cc
lily/staff-symbol-referencer-scheme.cc
lily/staff-symbol-referencer.cc
lily/staff-symbol.cc
lily/stanza-number-align-engraver.cc
lily/stanza-number-engraver.cc
lily/stem-engraver.cc
lily/stem-tremolo.cc
lily/stem.cc
lily/stencil-expression.cc
lily/stencil-interpret.cc
lily/stencil-scheme.cc
lily/stencil.cc
lily/stream-event-scheme.cc
lily/stream-event.cc
lily/sustain-pedal.cc
lily/system-start-delimiter-engraver.cc
lily/system-start-delimiter.cc
lily/system.cc
lily/tab-note-heads-engraver.cc
lily/tab-staff-symbol-engraver.cc
lily/tab-tie-follow-engraver.cc
lily/template5.cc
lily/tempo-performer.cc
lily/text-engraver.cc
lily/text-interface.cc
lily/text-spanner-engraver.cc
lily/tie-column.cc
lily/tie-configuration.cc
lily/tie-details.cc
lily/tie-engraver.cc
lily/tie-formatting-problem.cc
lily/tie-performer.cc
lily/tie.cc
lily/time-signature-engraver.cc
lily/time-signature-performer.cc
lily/time-signature.cc
lily/timing-translator.cc
lily/translator-ctors.cc
lily/translator-dispatch-list.cc
lily/translator-group-ctors.cc
lily/translator-group.cc
lily/translator-scheme.cc
lily/translator.cc
lily/trill-spanner-engraver.cc
lily/ttf.cc
lily/tuplet-bracket.cc
lily/tuplet-engraver.cc
lily/tuplet-iterator.cc
lily/tuplet-number.cc
lily/tweak-engraver.cc
lily/unfolded-repeat-iterator.cc
lily/unpure-pure-container.cc
lily/vaticana-ligature-engraver.cc
lily/vaticana-ligature.cc
lily/vertical-align-engraver.cc
lily/volta-bracket.cc
lily/volta-engraver.cc
lily/volta-repeat-iterator.cc
lily/warn-scheme.cc
ly/Welcome-to-LilyPond-MacOS.ly
ly/Welcome_to_LilyPond.ly
ly/bagpipe.ly
ly/catalan.ly
ly/context-mods-init.ly
ly/declarations-init.ly
ly/deutsch.ly
ly/english.ly
ly/engraver-init.ly
ly/espanol.ly
ly/event-listener.ly
ly/guile-debugger.ly
ly/italiano.ly
ly/midi-init.ly
ly/music-functions-init.ly
ly/nederlands.ly
ly/norsk.ly
ly/paper-defaults-init.ly
ly/performer-init.ly
ly/portugues.ly
ly/predefined-fretboards-init.ly
ly/predefined-guitar-fretboards.ly
ly/predefined-guitar-ninth-fretboards.ly
ly/predefined-mandolin-fretboards.ly
ly/predefined-ukulele-fretboards.ly
ly/property-init.ly
ly/satb.ly [new file with mode: 0644]
ly/script-init.ly
ly/string-tunings-init.ly
ly/suomi.ly
ly/svenska.ly
ly/text-replacements.ly
ly/vlaams.ly
mf/GNUmakefile
mf/common-modules-and-initialization.mf [new file with mode: 0644]
mf/debugging-settings.mf [new file with mode: 0644]
mf/declare-autometric-parameters.mf [new file with mode: 0644]
mf/feta-accidentals.mf
mf/feta-accordion.mf
mf/feta-alphabet-generic.mf [new file with mode: 0644]
mf/feta-alphabet.mf [deleted file]
mf/feta-alphabet11.mf
mf/feta-alphabet13.mf
mf/feta-alphabet14.mf
mf/feta-alphabet16.mf
mf/feta-alphabet18.mf
mf/feta-alphabet20.mf
mf/feta-alphabet23.mf
mf/feta-alphabet26.mf
mf/feta-arrow.mf [new file with mode: 0644]
mf/feta-arrowheads.mf
mf/feta-autometric.mf
mf/feta-braces-a.mf
mf/feta-braces-b.mf
mf/feta-braces-c.mf
mf/feta-braces-d.mf
mf/feta-braces-e.mf
mf/feta-braces-f.mf
mf/feta-braces-g.mf
mf/feta-braces-generic.mf [new file with mode: 0644]
mf/feta-braces-h.mf
mf/feta-braces-i.mf
mf/feta-braces.mf
mf/feta-brackettips.mf
mf/feta-clefs.mf
mf/feta-dots.mf
mf/feta-dynamics.mf
mf/feta-flags-generic.mf
mf/feta-flags.mf
mf/feta-flags11.mf
mf/feta-flags13.mf
mf/feta-flags14.mf
mf/feta-flags16.mf
mf/feta-flags18.mf
mf/feta-flags20.mf
mf/feta-flags23.mf
mf/feta-flags26.mf
mf/feta-flats.mf [new file with mode: 0644]
mf/feta-generic.mf [deleted file]
mf/feta-macros.mf
mf/feta-naturals.mf [new file with mode: 0644]
mf/feta-noteheads-generic.mf
mf/feta-noteheads.mf
mf/feta-noteheads11.mf
mf/feta-noteheads13.mf
mf/feta-noteheads14.mf
mf/feta-noteheads16.mf
mf/feta-noteheads18.mf
mf/feta-noteheads20.mf
mf/feta-noteheads23.mf
mf/feta-noteheads26.mf
mf/feta-numbers.mf
mf/feta-other-generic.mf [new file with mode: 0644]
mf/feta-params.mf
mf/feta-parenthesis.mf [new file with mode: 0644]
mf/feta-pedals.mf
mf/feta-rests.mf
mf/feta-scripts.mf
mf/feta-sharps.mf [new file with mode: 0644]
mf/feta-test-generic.mf [deleted file]
mf/feta-test11.mf [deleted file]
mf/feta-test13.mf [deleted file]
mf/feta-test16.mf [deleted file]
mf/feta-test20.mf [deleted file]
mf/feta-test23.mf [deleted file]
mf/feta-test26.mf [deleted file]
mf/feta-ties.mf
mf/feta-timesignatures.mf
mf/feta-trills.mf
mf/feta11.mf
mf/feta13.mf
mf/feta14.mf
mf/feta16.mf
mf/feta18.mf
mf/feta20.mf
mf/feta23.mf
mf/feta26.mf
mf/parmesan-accidentals.mf
mf/parmesan-clefs.mf
mf/parmesan-custodes.mf
mf/parmesan-dots.mf
mf/parmesan-flags.mf
mf/parmesan-generic.mf [deleted file]
mf/parmesan-macros.mf
mf/parmesan-noteheads-generic.mf
mf/parmesan-noteheads.mf
mf/parmesan-noteheads11.mf
mf/parmesan-noteheads13.mf
mf/parmesan-noteheads14.mf
mf/parmesan-noteheads16.mf
mf/parmesan-noteheads18.mf
mf/parmesan-noteheads20.mf
mf/parmesan-noteheads23.mf
mf/parmesan-noteheads26.mf
mf/parmesan-other-generic.mf [new file with mode: 0644]
mf/parmesan-rests.mf
mf/parmesan-scripts.mf
mf/parmesan-timesignatures.mf
mf/parmesan11.mf
mf/parmesan13.mf
mf/parmesan14.mf
mf/parmesan16.mf
mf/parmesan18.mf
mf/parmesan20.mf
mf/parmesan23.mf
mf/parmesan26.mf
po/ca.po
po/cs.po
po/de.po
po/el.po
po/eo.po
po/es.po
po/fr.po
po/it.po
po/ja.po
po/lilypond.pot
po/nl.po
po/sv.po
ps/music-drawing-routines.ps
python/book_latex.py
python/convertrules.py
python/lilylib.py
python/midi.c
python/musicexp.py
scm/auto-beam.scm
scm/backend-library.scm
scm/bar-line.scm
scm/bezier-tools.scm
scm/c++.scm
scm/chord-entry.scm
scm/chord-generic-names.scm
scm/chord-ignatzek-names.scm
scm/chord-name.scm
scm/clip-region.scm
scm/define-context-properties.scm
scm/define-event-classes.scm
scm/define-grob-interfaces.scm
scm/define-grob-properties.scm
scm/define-grobs.scm
scm/define-markup-commands.scm
scm/define-music-callbacks.scm
scm/define-music-display-methods.scm
scm/define-music-properties.scm
scm/define-music-types.scm
scm/define-note-names.scm
scm/define-stencil-commands.scm
scm/define-woodwind-diagrams.scm
scm/display-lily.scm
scm/display-woodwind-diagrams.scm
scm/document-backend.scm
scm/document-context-mods.scm
scm/document-functions.scm
scm/document-identifiers.scm
scm/document-markup.scm
scm/document-music.scm
scm/document-translation.scm
scm/document-type-predicates.scm
scm/documentation-generate.scm
scm/documentation-lib.scm
scm/editor.scm
scm/encoding.scm
scm/file-cache.scm
scm/flag-styles.scm
scm/font.scm
scm/framework-eps.scm
scm/framework-ps.scm
scm/framework-svg.scm
scm/fret-diagrams.scm
scm/graphviz.scm
scm/guile-debugger.scm
scm/harp-pedals.scm
scm/layout-beam.scm
scm/layout-slur.scm
scm/lily-library.scm
scm/lily-sort.scm
scm/lily.scm
scm/ly-syntax-constructors.scm
scm/markup-macros.scm
scm/markup.scm
scm/midi.scm
scm/modal-transforms.scm
scm/music-functions.scm
scm/output-lib.scm
scm/output-ps.scm
scm/output-svg.scm
scm/page.scm
scm/paper-system.scm
scm/paper.scm
scm/parser-clef.scm
scm/parser-ly-from-scheme.scm
scm/part-combiner.scm
scm/predefined-fretboards.scm
scm/ps-to-png.scm
scm/safe-lily.scm
scm/safe-utility-defs.scm
scm/script.scm
scm/skyline.scm
scm/standalone.scm
scm/stencil.scm
scm/tablature.scm
scm/text.scm
scm/time-signature-settings.scm
scm/titling.scm
scm/to-xml.scm
scm/translation-functions.scm
scm/x11-color.scm
scripts/auxiliar/fixcc.py
scripts/auxiliar/lily-git.tcl
scripts/auxiliar/update-with-convert-ly.sh
scripts/build/gen-emmentaler-scripts.py
scripts/build/grand-replace.py
scripts/build/mf-to-table.py
scripts/build/pytt.py
scripts/convert-ly.py
scripts/etf2ly.py
scripts/lilymidi.py
scripts/lilypond-book.py
scripts/lilypond-invoke-editor.scm
scripts/lilysong.py
scripts/midi2ly.py
scripts/musicxml2ly.py
stepmake/stepmake/executable-rules.make
stepmake/stepmake/generic-vars.make
stepmake/stepmake/help2man-rules.make
stepmake/stepmake/library-rules.make
stepmake/stepmake/metafont-rules.make
stepmake/stepmake/metafont-vars.make
stepmake/stepmake/po-targets.make
stepmake/stepmake/shared-library-rules.make
stepmake/stepmake/test-rules.make
vim/lilypond-ftplugin.vim

index 78d92e31a2903b3d08f7571f28e43ffacea05a86..29cc670935e2e7405e4648261997171a8fb32584 100644 (file)
--- a/.mailmap
+++ b/.mailmap
@@ -133,8 +133,9 @@ John Mandereau <lilydev@freemousse.(none)>
 Jonathan Kulp <jon@bashtop.(none)>
 Jonathan Kulp <jonlancekulp@gmail.com>
 Joseph Wakeling <joseph.wakeling@webdrake.net>
-Jürgen Reuter <reuter>
-Jürgen Reuter <reuter@ipd.uka.de>
+Jürgen Reuter <reuter_j@web.de> <reuter>
+Jürgen Reuter <reuter_j@web.de> <reuter@ipd.uka.de>
+Jürgen Reuter <reuter_j@web.de> <j@web.de>
 Keith OHara <k-ohara5a5a@oco.net>
 Kevin Dalley <kevin@kelphead.org>
 Kieren MacMillan <kieren_macmillan@sympatico.ca>
index d985b534cd0beaa4eb1112e6416591ec375067ed..71320d7ea56c5fecb0540a710c69eb0cbf5a9cf0 100644 (file)
@@ -36,7 +36,7 @@ See user manual, \NAME\
 @finalout
 
 @node Top
-@top New features in 2.18 since 2.16
+@top New features in 2.20 since 2.18
 
 @allowcodebreaks false
 
@@ -60,463 +60,277 @@ which scares away people.
 * only show user-visible changes.
 
 @end ignore
-
-@item
-The PostScript functionality of stroke adjustment is no longer
-applied automatically but left to the discretion of the PostScript
-device (by default, Ghostscript uses it for resolutions up to
-150dpi when generating raster images).  When it is enabled, a more
-complex drawing algorithm designed to benefit from stroke
-adjustment is employed mostly for stems and bar lines.
-
-Stroke adjustment can be forced by specifying the command line
-option @samp{-dstrokeadjust} to LilyPond.  When generating
-@code{PDF} files, this will usually result in markedly better
-looking @code{PDF} previews but significantly larger file size.
-Print quality at high resolutions will be unaffected.
-
-@item
-There is now a new context type called @code{NullVoice} which, while not
-appearing in the printed output, can be used to align lyrics.  This can
-be particularly convenient when used in parallel with a
-@code{\partcombine} construct.
-
-@lilypond[verbatim,quote]
-soprano = \relative c' { c e g c }
-alto = \relative c' { a c e g }
-verse = \lyricmode { This is my song }
-
-\score {
-  \new Staff <<
-    \partcombine \soprano \alto
-    \new NullVoice = "aligner" \soprano
-    \new Lyrics \lyricsto "aligner" \verse
-  >>
-  \layout {}
-}
-@end lilypond
-
-
 @item
-Several articulations can be put into a single variable or
-returned from an event function:
+A new command @code{\magnifyMusic} has been added, which allows
+the notation size to be changed without changing the staff size,
+while automatically scaling stems, beams, and horizontal spacing.
 
 @lilypond[verbatim,quote]
-sempreStacc = -. ^\markup \italic sempre
-\relative { c''4\sempreStacc c c c }
-@end lilypond
-
-@item
-The baseline of score markups is now taken from the reference
-point (usually the middle of the staff) of the first bottom system
-rather than the top of the bounding rectangle.  The following
-@lilypond[verbatim,quote]
-\markup {
-  violin: \score { \new Staff { <g d' a' e''>1 }
-                   \layout { indent=0 } } ,
-  cello: \score { \new Staff { \clef "bass" <c, g, d a> }
-                  \layout { indent=0 } }
-}
-@end lilypond
-previously looked like
-@lilypond[quote]
-\markup {
-  violin: \general-align #Y #UP
-          \score { \new Staff { <g d' a' e''>1 }
-                   \layout { indent=0 } } ,
-  cello:  \general-align #Y #UP
-          \score { \new Staff { \clef "bass" <c, g, d a> }
-                  \layout { indent=0 } }
-}
-@end lilypond
-without a reliable way to get both scores to line up.
-
-@item
-LilyPond no longer automatically infers a @samp{\defaultchild}
-context in a context definition with @samp{\accepts} clauses.  Any
-context definition without an explicit or inherited
-@samp{\defaultchild} definition counts as a @samp{Bottom} context
-and will be eligible for rhythmic events and overrides without
-causing the implicit creation of other contexts.  Be sure to
-specify a @samp{\defaultchild} for non-@samp{Bottom} contexts when
-defining them from scratch.
-
-@item
-There is now extensive support for both discant and bass accordion
-register symbols in the @samp{scm accreg} module, see
-@ruser{Accordion Registers}.
-@lilypond[verbatim,quote]
-#(use-modules (scm accreg))
-\new PianoStaff
-<<
-  \new Staff \relative
-  { \clef "treble"  \discant "10"
-    r8 s32 f'[ bes f] s e[ a e] s d[ g d] s16 e32[ a]
-    \discant "121"
-    << { r16 <f bes> r <e a> r <d g> } \\
-       { d r a r bes r } >> |
-    <cis e a>1
+\new Staff <<
+  \new Voice \relative {
+    \voiceOne
+    <e' e'>4 <f f'>8. <g g'>16 <f f'>8 <e e'>4 r8
   }
-  \new Staff \relative
-  { \clef "treble"  \freeBass "1"
-    r8 d'32 s16. c32 s16. bes32 s16. a32[ cis] s16
-    \clef "bass"  \stdBass "Master"
-    << { r16 <f, bes d>^"b" r <e a c>^"am" r <d g bes>^"gm" |
-         <e a cis>1^"a" } \\
-       { d8_"D" c_"C" bes_"B" | a1_"A" }
-    >>
+  \new Voice \relative {
+    \voiceTwo
+    \magnifyMusic 0.63 {
+      r32 c'' a c a c a c r c a c a c a c
+      r c a c a c a c a c a c a c a c
+    }
   }
 >>
 @end lilypond
 
 @item
-New commands @code{markLengthOn} and @code{markLengthOff} control
-the allowance of horizontal space for tempo and rehearsal marks.
-
-@lilypond[quote,relative=2]
-\markLengthOn
-\compressFullBarRests
-\tempo "Molto vivace" c2 c'
-\mark\default
-\tempo "Meno mosso" R1*16
-\mark\default
-g,2 g
-\bar "||"
-\markLengthOff
-\tempo "Molto vivace" c2 c'
-\mark#1
-\tempo "Meno mosso" R1*16
-\mark\default
-g,2 g
+A new flexible template suitable for a range of choral music, is now
+provided.  This may be used to create simple choral music, with or
+without piano accompaniment, in two or four staves. Unlike other
+templates, this template is @q{built-in}, which means it does not
+need to be copied and edited: instead it is simply @code{\include}'d
+in the input file.  For details, see @rlearning{Built-in templates}.
+
+@item
+The positioning of tuplet numbers for kneed beams has been significantly
+improved.  Previously, tuplet numbers were placed according to the
+position of the tuplet bracket, even if it was not printed.  This could
+lead to stranded tuplet numbers.  Now they are now positioned
+closer to the kneed-beam when an appropriate beam segment exists for its
+placement and when the the bracket is not drawn.
+
+Collision detection is also added, offsetting horizontally if too close
+to an adjoining note column but preserving the number's vertical
+distance from the kneed beam.  If the number itself is too large to
+fit in the available space the original, bracket-based, positioning
+system is used instead; and in the event of a collision (e.g. with an
+accidental) the tuplet number is moved vertically away instead.
+
+@lilypond[verbatim,fragment,quote,relative=1]
+\time 3/4
+\override Beam.auto-knee-gap = 3
+\tuplet 3/2 4 {
+  g8 c'' e,
+  c'8 g,, e''
+  g,,8 e''' c,,
+}
 @end lilypond
 
-@item
-Rehearsal marks at the beginning of a line are now placed to the right
-of the clef and key signature by default.  As in previous versions, the
-@code{break-alignable-interface} controls the behavior.
-
-@lilypond[quote,relative=2]
-\set Score.barNumberVisibility = #all-bar-numbers-visible
-\set Timing.currentBarNumber = #72
-\bar"||" \time 3/4 \key e\major \mark#10 \tempo "Adagio" b2.
+@noindent
+The original kneed-beam tuplet behavior is still available through an
+@code{\override} via a new, @code{knee-to-beam} property.
+
+@lilypond[verbatim,fragment,quote,relative=1]
+\time 3/4
+\override Beam.auto-knee-gap = 3
+\override TupletNumber.knee-to-beam = ##f
+\tuplet 3/2 4 {
+  g8 c'' e,
+  c'8 g,, e''
+  g,,8 e''' c,,
+}
 @end lilypond
 
 @item
-Decimal numbers can now be written directly in music,
-without a hash sign.  Together with the previous change
-in the way object properties are specified, the code to
-change the length of stems has changed from this:
-@example
-\override Stem #'length = #5.6
-e' f' g' a'
-@end example
-to this:
-@example
-\override Stem.length = 5.6
-e' f' g' a'
-@end example
-
-One has to write a digit on both sides of the dot -- values like
-@code{4.} or @code{-.3} are not allowed.
-
-Decimal fractions are also not accepted in @code{\chordmode}.
+@code{\lyricsto} and @code{\addLyrics} have been @q{harmonized}.  Both
+now accept the same kind of delimited argument list that @code{\lyrics}
+and @code{\chords} accept.  Backward compatibility has been added so
+music identifiers (i.e. @code{\mus}) are permitted as arguments.  A
+@code{convert-ly} rule has been added that removes redundant uses of
+@code{\lyricmode} and rearranges combinations with context starters such
+that @code{\lyricsto} in general is applied last (i.e. like
+@code{\lyricmode} would be).
 
 @item
-A number of shorthands like @code{(}, @code{)}, @code{|},
-@code{[}, @code{]}, @code{~}, @code{\(}, @code{\)} and others can
-now freely be redefined like normal commands.  An example would be
-@lilypond[verbatim,quote]
-"\\{" = (
-"\\}" = )
-"(" = \melisma
-")" = \melismaEnd
-
-\new Staff <<
-  \relative c' {
-    c8 \{ d e f \} % slurred
-    g ( a b c ) % no slur, but with melisma
-    c,1 \bar "|."
-   }
-   \addlyrics { Li -- ly -- pond. }
->>
-@end lilypond
+Scheme functions and identifiers can now be used as output definitions.
 
 @item
-The articulation shorthand for @code{\staccatissimo} has been
-renamed from @code{-|} to@tie{}@code{-!}.
+Scheme expressions can now be used as chord constituents.
 
 @item
-Tempo change ranges are now written as @code{\tempo 4 = 60 - 68}
-rather than @code{\tempo 4 = 60 ~ 68}.
+Improved visual spacing of small and regular @q{MI} Funk and Walker
+noteheads so they are now the same width as other shaped notes in
+their respective sets.  @code{SOL} noteheads are also now visually
+improved when used with both the normal Aiken and Sacred Harp heads, as
+well as with the thin variants.
 
 @item
-Grob @code{OctavateEight} was renamed to @code{ClefModifier}.
-Related context properties were renamed from @code{xxxOctavationyyy}
-to @code{xxxTranspositionyyy}.
+@code{LeftEdge} now has a definable @code{Y-extent} (i.e.vertical).  See
+@rinternals{LeftEdge}.
 
 @item
-There is a new @code{\absolute} command explicitly marking music
-as being entered in absolute pitch.  While this has been the
-default previously, an explicit @code{\absolute} also prevents
-reinterpretation when the passage is placed inside of
-@code{\relative}:
-@lilypond[verbatim,quote]
-\relative c { c'4 \absolute { f'' g'' } c }
-@end lilypond
+Added a new @code{make-path-stencil} function that supports all
+@code{path} commands both relative and absolute:
 
-@item
-When @code{\relative} is used without an explicit reference pitch,
-the reference pitch now is the middle of the first octave, making
-the first entered pitch indistinguishable from absolute pitch.
-Previously, omitting the reference pitch would have lead to a
-default of @code{c'}.  Since that choice was somewhat arbitrary,
-recommended usage was to always specify the reference pitch.
+@code{lineto}, @code{rlineto}, @code{curveto}, @code{rcurveto},
+@code{moveto}, @code{rmoveto}, @code{closepath}.  The function also
+supports @q{single-letter} syntax used in standard SVG path commands:
+
+@code{L}, @code{l}, @code{C}, @code{c}, @code{M}, @code{m}, @code{Z} and
+@code{z}.  The new command is also backward-compatible with the original
+@code{make-connected-path-stencil} function.  Also see
+@file{scm/stencil.scm}.
 
 @item
-A new command @code{\single} can be used for converting a property
-override into a tweak to be applied on a single music expression:
+Context properties named in the @samp{alternativeRestores} property are
+restored to their value at the start of the @emph{first} alternative in
+all subsequent alternatives.
 
-@lilypond[quote,verbatim,relative=2]
-<a \single\voiceTwoStyle e' a>1
-@end lilypond
+Currently the default set restores @q{current meter};
 
-@item
-Two ways of letting graphical objects not appear in the output are
-overriding its @code{transparent} property with @code{#t}
-(retaining the original spacing) or overriding its @code{stencil}
-property with @code{#f} (not using any space at all).  Those two
-operations now have the shorthands @code{\hide} and @code{\omit},
-respectively.  They can either be given a music expression to
-tweak, or the name of a graphical object for which an override
-should be created (for specifying both, use @code{\single} on the
-override form):
-
-@lilypond[quote,verbatim]
-\new Staff \with { \omit Clef }
-\relative c'' <a e' \hide a>1
+@lilypond[verbatim,fragment,quote,relative=2]
+\time 3/4
+\repeat volta 2 { c2 e4 | }
+\alternative {
+  { \time 4/4 f2 d | }
+  { f2 d4 | }
+}
+g2. |
 @end lilypond
 
-@item
-A new command @code{\temporary} can be applied to overrides in
-order to not have them replace previous property settings.  If a
-@code{\revert} is applied to the same property subsequently, the
-previous setting reappears:
-
-@lilypond[quote,verbatim,relative=2]
-\override NoteHead.color = #red c4
-\override NoteHead.color = #green d
-\revert NoteHead.color e2
-\override NoteHead.color = #red c4
-\temporary\override NoteHead.color = #green d
-\revert NoteHead.color e
-\revert NoteHead.color c
+@noindent
+@q{measure position};
+
+@lilypond[verbatim,fragment,quote,relative=2]
+\time 3/4
+\repeat volta 2 { c2 e4 | }
+\alternative {
+  { \time 4/4
+    \set Timing.measurePosition = #(ly:make-moment -1/2)
+    f2 | }
+  { f2 d4 | }
+}
+g2. |
 @end lilypond
 
-This is mainly useful for writing music functions that need to
-have some property changed just for the duration of the function.
-
-@item
-@code{\tag}, @code{\removeWithTag}, and @code{\keepWithTag} can
-now accept a list of symbols rather than just a single symbol for
-marking, removing, and keeping music with any of multiple tags.
-This is particularly important for @code{\keepWithTag} since one
-cannot achieve the same effect by using multiple consecutive
-@code{\keepWithTag} commands.
+@noindent
+and @q{chord changes};
 
-@item
-The @samp{-d old-relative} option has been removed.  Not actually
-accessible from the command line any more, its remaining use was
-for interpretating @code{\relative} in LilyPond files converted
-automatically from version@tie{}1.8 or older.  It is unclear how
-much of this was actually still operative.
+@lilypond[verbatim,fragment,quote]
+<<
+  \new ChordNames {
+    \set chordChanges = ##t
+    \chordmode { c1:m d:m c:m d:m }
+  }
+  \new Staff {
+    \repeat volta 2 { \chordmode { c1:m } }
+    \alternative {
+      { \chordmode { d:m } }
+      { \chordmode { c:m } }
+    }
+  \chordmode { d:m }
+}
+>>
+@end lilypond
 
 @item
-The meaning of @code{instrumentTransposition} has been reversed.
-After
-@example
-\set instrumentTransposition = #@{ b #@}
-@end example
-a written @code{c'} now sounds like @code{b}.  Previously, this
-would have been the other way round.  This and the following change
-should make dealing with transposing instruments more
-straightforward.
+Improved MIDI output for breathe marks.  After tied notes, breaths take
+time @emph{only} from the last note of the tie; e.g.
+@code{@{ c4~ c8 \breathe @}} performs as @code{@{ c4~ c16 r @}} instead
+of @code{@{ c4 r8 @}}.  This is more consistent with articulations and
+how humans interpret breaths after ties.  It now also makes it easier to
+align simultaneous breathe marks over multiple parts, all with different
+note lengths.
 
 @item
-The music generated by @code{\set} and @code{\override} commands
-is no longer affected by @code{\transpose}.  The main consequence
-is that @code{\transpose} will transpose audible/@/concert pitch and
-printed pitch by the same amount even when the transposed music
-contains @code{\transposition}.  Previously,
-@example
-\transpose c' f' \transposition bes'
-@end example
-was equivalent to @code{\transposition f'}.  Now it stays
-equivalent to @code{\transposition bes'}.
+A new note head style for Tabulature has been added;
+@code{TabNoteHead.style = #'slash}.
 
 @item
-When checking for collisions, LilyPond no longer treats objects as
-rectangles.  Instead, the actual shape of objects is approximated
-using an integral-like approach.  This generally results in more
-even and snug positioning of objects and systems:
-
-@lilypond[relative=1]
-#(ly:set-option 'debug-skylines #t)
-\dynamicUp
-c'4\f a4\f d\f( f)
-a,4\< c c c\!
-d4-.\downbow a4^"r'venu..." c \tempo "T1" e
-@end lilypond
+Four new Clefs have been added.  @emph{Double G}, @emph{Tenor G},
+@emph{Varpercussion} and @emph{varC}.
+@lilypond[verbatim,quote,fragment]
+  \override Staff.Clef.full-size-change = ##t
 
-Previously, the above snippet looked like this:
-
-@lilypond[relative=1]
-#(ly:set-option 'debug-skylines #t)
-\override Hairpin #'vertical-skylines = #'()
-\override DynamicText #'vertical-skylines = #'()
-\override TextScript #'vertical-skylines = #'()
-\override Score.MetronomeMark #'vertical-skylines = #'()
-\override Staff.Clef #'vertical-skylines = #'()
-\dynamicUp
-c'4\f a4\f d\f( f)
-a,4\< c c c\!
-d4-.\downbow a4^"r'venu..." c \tempo "T1" e
-@end lilypond
+  \clef "GG" c c c c
+  \clef "tenorG" c c c c
+  \clef "varC" c c c c
+  \clef "varpercussion" c c c c
 
-Affected objects include @code{Accidentals}, @code{Beams}, @code{Clefs},
-@code{Dynamics}, @code{FiguredBass}, @code{Flags}, @code{Glissandos},
-@code{Lyrics}, @code{MetronomeMarks}, @code{OttavaBrackets},
-@code{Pedals}, @code{RehearsalMarks}, @code{Rests}, @code{Scripts},
-@code{TextScripts}, @code{Ties}, @code{Tuplets} and @code{VoltaBrackets}.
+  \break
+  \override Staff.Clef.full-size-change = ##f
 
-@item
-Tuplets are now created with the @code{\tuplet} command, which
-takes a fraction @code{@var{t}/@var{n}} to specify that @var{t}
-notes are played in the time usually allowed for @var{n}. One
-@code{\tuplet} command can create several tuplet groups if their
-duration is typed after the fraction.
-@lilypond[quote,verbatim,relative=2]
-\tuplet 3/2 { c8 d e } \tuplet 3/2 { f e d } c2
-\tuplet 3/2 4 { c8 d e f e d } c2
+  \clef "GG" c c c c
+  \clef "tenorG" c c c c
+  \clef "varC" c c c c
+  \clef "varpercussion" c c c c
 @end lilypond
-The @code{\times} command with its inverted fraction order
-@code{@var{n}/@var{t}} is still available.
 
 @item
-Introducing two new markup-commands; @code{\draw-dashed-line} and
-@code{\draw-dotted-line}.
-
-@noindent
-The dashed-line extends to the whole length given by @var{dest}, if
-@code{full-length} is set to @code{#t} (this is the default) without any
-space at the beginning or end.  @code{off} will then be altered to fit.
-To insist on the given (or default) values of @code{on}, @code{off} use
-@code{\override #'(full-length . #f)}.  Manual settings for @code{on},
-@code{off} and @code{phase} are possible.
-
-@noindent
-The dotted-line always extends to the whole length given by @var{dest},
-without any space at the beginning or end.  Manual settings for
-@code{off} are possible to get larger or smaller space between the dots.
-The given (or default) value of @code{off} will be altered to fit the
-line-length.
+Isolated durations in music sequences now stand for unpitched
+notes.  This may be useful for specifying rhythms to music or
+scheme functions.  When encountered in the final score, the
+pitches are provided by the preceding note or chord.  Here are two
+examples where this makes for readable input:
 
 @lilypond[verbatim,quote]
-\markup {
-  \draw-dashed-line #'(5.1 . 2.3)
-  \override #'(on . 0.3)
-  \override #'(off . 0.5)
-  \draw-dashed-line #'(5.1 . 2.3)
-  \draw-dotted-line #'(5.1 . 2.3)
-  \override #'(thickness . 2)
-  \override #'(off . 0.2)
-  \draw-dotted-line #'(5.1 . 2.3)
+\new DrumStaff \with { \override StaffSymbol.line-count = 1 }
+\drummode {
+  \time 3/4
+  tambourine 8 \tuplet 3/2 { 16 16 16 }
+             8 \tuplet 3/2 { 16 16 16 } 8 8 |
 }
 @end lilypond
 
-@item
-Starting with version@tie{}2.17.10, error messages or the
-@code{textedit} @acronym{URI} used for point-and-click
-functionality specify column numbers starting with@tie{}1 rather
-than@tie{}0.  The byte offset (also part of @code{textedit}
-@acronym{URI}s) still starts at@tie{}0.
+@lilypond[verbatim,quote]
+\new Staff { r16 c'16 ~ 8 ~ 4 ~ 2 | }
+@end lilypond
 
 @item
-The @code{\clef} command supports optional transposition:
+Beaming exceptions can now be constructed using the
+@code{\beamExceptions} scheme function.  One can now write
+
 @lilypond[verbatim,quote,relative=1]
-\clef "treble_(8)"
-c2 c
-\clef "bass^[15]"
-c2 c
+\time #'(2 1) 3/16
+\set Timing.beamExceptions =
+  \beamExceptions { 32[ 32] 32[ 32] 32[ 32] }
+c16 c c |
+\repeat unfold 6 { c32 } |
 @end lilypond
 
-@item
-The LilyPond syntax of dot-separated words @code{Voice.Accidental}
-has been made interchangeable with @code{#'(Voice Accidental)}, a
-Scheme list of symbols.  As one result, code like
-@example
-\override Voice.TextSpanner #'(bound-details left text) = "rit."
-@end example
-is now equivalent to
-@example
-\override Voice.TextSpanner bound-details.left.text = "rit."
-@end example
-or even
-@example
-\override #'(Voice TextSpanner) bound-details.left.text = "rit."
-@end example
+@noindent
+with multiple exceptions separated with @code{|} bar checks
+(writing the exception pattern without pitches is convenient but
+not mandatory).  Previously, setting the beam exceptions would
+have required writing
 
-@item
-Grob and grob property path no longer need to be specified as two
-separate arguments to commands like @samp{\override} and
-@code{\revert}, allowing for the syntax
 @example
-\override Voice.TextSpanner.bound-details.left.text = "rit."
+\set Timing.beamExceptions =
+#'(                         ;start of alist
+   (end .                   ;entry for end of beams
+    (                       ;start of alist of end points
+     ((1 . 32) . (2 2 2))   ;rule for 1/32 beams -- end each 1/16
+    )))
 @end example
-Since complementary music functions like @samp{\overrideProperty}
-cannot support forms with and without separating space at the same
-time, using a single dotted path is now the preferred form.
-Specifying grob path and grob property path separately, currently
-still supported with @samp{\override} and @samp{\revert} for
-compatibility reasons, is deprecated.
 
 @item
-Due to words now being accepted as symbol function arguments, the
-interfaces of @samp{\accidentalStyle}, @samp{\alterBroken},
-@samp{\footnote} and @samp{\tweak} had to be redesigned where
-optional symbol arguments were involved.  Please check the
-respective music function documentation for details.
+The most common articulations are now reflected in MIDI output.
+Accent and marcato make notes louder; staccato, staccatissimo and
+portato make them shorter. Breath marks shorten the previous
+note.
 
-@item
-Several commands now accept symbol lists (conveniently entered as
-dot-separated words) for various kinds of arguments.  These
-include @samp{\accidentalStyle}, @samp{\alterBroken},
-@samp{\footnote}, @samp{\hide}, @samp{\omit},
-@samp{\overrideProperty}, @samp{\shape}, and @samp{\tweak}.
+This behavior is customizable through the @code{midiLength} and
+@code{midiExtraVelocity} properties on @code{ArticulationEvent}.
+See @file{script-init.ly} for examples.
 
 @item
-The bar line user interface has changed. Bar glyphs now resemble the
-appearance of the bar line, so a left repeat sign has to be coded
-as @code{.|:}. The command @code{\defineBarLine} provides an easy way
-to define additional bar line styles.
+The PostScript functionality of stroke adjustment is no longer
+applied automatically but left to the discretion of the PostScript
+device (by default, Ghostscript uses it for resolutions up to
+150dpi when generating raster images).  When it is enabled, a more
+complex drawing algorithm designed to benefit from stroke
+adjustment is employed mostly for stems and bar lines.
 
-@item
-Accidentals in the key signature may be printed in octaves other
-than their traditional positions, or in multiple octaves.
-@lilypond[quote,relative=0]
-\override Staff.KeySignature #'flat-positions = #'((-5 . 5))
-\override Staff.KeyCancellation #'flat-positions = #'((-5 . 5))
-\clef bass \key es \major es g bes d
-\clef treble \bar "||" \key es \major es g bes d
-\override Staff.KeySignature #'sharp-positions = #'(2)
-\bar "||" \key d \major b fis b2
-@end lilypond
+Stroke adjustment can be forced by specifying the command line
+option @samp{-dstrokeadjust} to LilyPond.  When generating
+@code{PDF} files, this will usually result in markedly better
+looking @code{PDF} previews but significantly larger file size.
+Print quality at high resolutions will be unaffected.
 
 @end itemize
 
 @ifhtml
 For older news, go to
+@uref{http://lilypond.org/doc/v2.18/Documentation/changes/},
 @uref{http://lilypond.org/doc/v2.16/Documentation/changes/},
-@uref{http://lilypond.org/doc/v2.14/Documentation/changes/},
 or @uref{../,go back} to the Documentation index.
 
 
index 9541883b74a8cec3fd307c3d70ba3cc59ee6ebc2..f7dc2dd6e817d29ca1403c9fcf8cc145b6cbf2c8 100644 (file)
@@ -25,7 +25,7 @@ information about different jobs, see @rweb{Help us}.
 
 @c `Contributor's Guide' was born 2007-09-15 with git commit 48f3356...
 @macro copyrightDeclare
-Copyright @copyright{} 2007--2012 by the authors.
+Copyright @copyright{} 2007--2014 by the authors.
 @end macro
 
 @set FDL
index 680522cbc9a79466fd9a404887e326bc21bace0c..f0bb52e8affd176264abb1003bea3364c2c41aee 100644 (file)
@@ -14,6 +14,7 @@ Version Control System (VCS) called git, previously discussed in
 
 @menu
 * Introduction to documentation work::
+* version in documentation files::
 * Documentation suggestions::
 * Texinfo introduction and usage policy::
 * Documentation policy::
@@ -66,6 +67,41 @@ Before undertaking any large documentation work, contributors are
 encouraged to contact the @ref{Meisters, Documentation Meister}.
 
 
+@node version in documentation files
+@section @code{\version} in documentation files
+
+Every documentation file which includes LilyPond code must begin
+with a @code{\version} statement, since the build procedure
+explicitly tests for its presence and will not continue otherwise.
+The @code{\version} statement should reference a version of LilyPond
+consistent with the syntax of the contained code.
+
+Since the @code{\version} statement is not valid Texinfo input it
+must be commented out like this:
+
+@example
+@@c \version "2.19.1"
+@end example
+
+So, if you are adding LilyPond code which is not consistent with the
+current version header, you should
+
+@enumerate
+
+@item
+run convert-ly on the file using the latest version of LilyPond
+(which should, if everybody has done proper maintenance, not change
+anything);
+
+@item
+add the new code;
+
+@item
+modify the version number to match the new code.
+
+@end enumerate
+
+
 @node Documentation suggestions
 @section Documentation suggestions
 
@@ -464,7 +500,7 @@ to get users accustomed to this scheme construct, i.e. @code{\set
 Staff.instrumentName = #"cello"}
 
 @item
-Try to avoid using @code{#'} or @code{#`} within when describing
+Try to avoid using @code{#'} or @code{#`} when describing
 context or layout properties outside of an @code{@@example} or @code{@@lilypond}, unless
 the description explicitly requires it.
 
@@ -482,8 +518,8 @@ checks.
 @item
 Tweaks should, if possible, also occur on their own line.
 @example
-not:          \override TextScript #'padding = #3 c1^"hi"
-but instead:  \override TextScript #'padding = #3
+not:          \override TextScript.padding = #3 c1^"hi"
+but instead:  \override TextScript.padding = #3
               c1^"hi"
 @end example
 
@@ -1445,7 +1481,7 @@ good example of this.
 On the other side of this,
 
 @example
-\override Score.Hairpin #'after-line-breaking = ##t
+\override Score.Hairpin.after-line-breaking = ##t
 @end example
 
 clearly belongs in LSR.
index 01cce81411de184e9b780b2883a34bd27e29bf61..d534b073e45b7ecc73427ca9301e6424fbf53325 100644 (file)
@@ -187,12 +187,12 @@ the currently-active Bug Squad member(s) can handle the message.
 
 @example
 Monday:    Eluze
-Tuesday:   Ralph
-Wednesday: Marek
-Thursday:  Joe Wakeling (soon)
-Friday:    Colin H
-Saturday:  Colin H
-Sunday:    Federico
+Tuesday:   Ralph Palmer
+Wednesday: Marek Klein
+Thursday:  Eluze
+Friday:
+Saturday:  Colin Campbell
+Sunday:    Federico Bruni
 @end example
 
 
index 819534b4ad0b23127f1ff304da1e4a56473fa558..447f553ea4cf2b1f57e5c736f4794aee06392112 100644 (file)
@@ -1888,55 +1888,8 @@ of a spanner broken at given starting and ending columns.
 
 @node How purity is defined and stored
 @subsection How purity is defined and stored
-Purity can currently be defined two different ways in LilyPond that
-correspond to two types of scenarios.  In one scenario, we know that a
-callback is pure, but we are not necessarily certain what properties
-will use this callback.  In another, we want a property to be pure, but
-we don't want to guarantee that its callback function will be pure in
-all circumstances.
-
-In the first scenario, we register the callback in define-grobs.scm in
-one of four places depending on what the function does.
-
-@itemize
-@item @code{pure-print-functions}: If finding a print function's vertical
-extent does not have any @q{side effects} we register it here. We then
-don't have to set the pure Y-extent property, which will be taken from the
-stencil.
-
-@item @code{pure-print-to-height-conversions}: If a stencil can
-eventually be used to glean a grob's Y-extent but is not pure (meaning
-it will have a different height at different stages of the compilation
-process), we add it to this list along with a function for the pure
-Y-extent.
-
-@item @code{pure-conversions-alist}: This list contains pairs of
-functions and their pure equivalents.  It is onto but not one-to-one.
-
-@item @code{pure-functions}: Like pure-print-functions in that they work
-for both pure and impure values, but they do not return a stencil.
-@end itemize
-
-At all stages of the compilation process, when LilyPond wants the pure
-version of a property, it will consult these lists and see if it can get
-this property for a given Grob.  Note that you do @emph{not} need to
-register the pure property in the grob itself.  For example, there is no
-property @q{pure-Y-extent}.  Rather, by registering these functions as
-defined above, every time LilyPond needs a pure property, it will check
-to see if a Grob contains one of these functions and, if so, will use
-its value.  If LilyPond cannot get a pure function, it will return a
-value of @code{##f} for the property.
-
-LilyPond is smart enough to know if a series of chained functions are
-pure.  For example, if a Y-offset property has four chained functions
-and all of them have pure equivalents, LilyPond will read the four pure
-equivalents when calculating the pure property.  However, if even one is
-impure, LilyPond will not return a pure property for the offset (instead
-returning something like @code{#f} or @code{'()}) and will likely wreak
-havoc on your score.
-
-In the second scenario, we create an unpure-pure-container (unpure is
-not a word, but hey, neither was Lilypond until the 90s).  For example:
+Purity is defined in LilyPond with the creation of an unpure-pure container
+(unpure is not a word, but hey, neither was Lilypond until the 90s).  For example:
 
 @example
 #(define (foo grob)
@@ -1948,23 +1901,8 @@ not a word, but hey, neither was Lilypond until the 90s).  For example:
 \override Stem #'length = #(ly:make-unpure-pure-container foo bar)
 @end example
 
-This is useful if we want to:
-
-@itemize
-@item create overrides that have pure alternatives (should not be used
-in development, but useful for users)
-
-@item use return values that are not functions (i.e. pairs or booleans)
-for either pure or unpure values.
-
-@item allow a function to be considered pure in a limited amount of
-circumstances.  This is useful if we are sure that, when associated with
-one grob a function will be pure but not necessarily with another grob
-that has different callbacks.
-@end itemize
-
-Items can only ever have two pure heights: their actual pure height if
-they are between @q{start} and @q{end}, or an empty interval if they are
+Note that items can only ever have two pure heights: their actual pure height
+if they are between @q{start} and @q{end}, or an empty interval if they are
 not.  Thus, their pure property is cached to speed LilyPond up.  Pure
 heights for spanners are generally not cached as they change depending
 on the start and end values.  They are only cached in certain particular
index 2bd0b68f8d52ae2fafb2bee3a8a5657b3a6364a8..4dc75330d8203b9caec327d4cdc7b39c925968d0 100644 (file)
@@ -109,11 +109,18 @@ VERSION_STABLE = the current stable version (probably no change here)
 
 @end itemize
 
+@item
+Manually edit the two files @file{../ly/Welcome_to_LilyPond.ly} and
+@file{../ly/Welcome-to-LilyPond-MacOS.ly} such that the hard coded
+@code{\version} number reflects the version number about to be released.
+
 @item
 Commit, push, switch back to master (or wherever else):
 
 @example
 git commit -m "Release: bump VERSION_DEVEL." VERSION
+git commit -m "Release: bump VERSION_DEVEL." ly/Welcome_to_LilyPond.ly
+git commit -m "Release: bump VERSION_DEVEL." ly/Welcome-to-LilyPond-MacOS.ly
 git commit -m "PO: update template." po/lilypond.pot
 git commit -m "Release: update news." Documentation/web/
 git push origin HEAD:release/unstable
index 9d54eea0ae172ec1723d43860a5aa951a30669c7..4043e3e10b1ea5c4e9a7b157d50c868fedada76c 100644 (file)
@@ -19,7 +19,7 @@ Tento soubor poskytuje úvod pro LilyPond verze
 
 @c `Learning Manual' was born 1999-10-10 with git commit b9abaac...
 @macro copyrightDeclare
-Autorské právo @copyright{} 1999--2012 autoři.
+Autorské právo @copyright{} 1999--2014 autoři.
 @end macro
  
 @set FDL
index 258e2ce108a780f17bd5dbc0461e3e775d41135e..49e1325d2c96755b0401b8876676fc5ebecb269f 100644 (file)
@@ -8,7 +8,7 @@
     Guide, node Updating translation committishes.
 @end ignore
 
-@c \version "2.17.28"
+@c \version "2.19.2"
 
 @ignore
 Tutorial guidelines:
@@ -243,7 +243,7 @@ Slovníček: @rglos{tie}.
 spojit, připojí vlnovka @code{~}.
 
 @lilypond[verbatim,quote,relative=2]
-g4~ g c2~ | c4~ c8 a~ a2
+g4~ 4 c2~ | 4~ 8 a~ 2
 @end lilypond
 
 
@@ -288,7 +288,7 @@ zapsány pro větší skupiny not. Ligatury a legatové obloučky mohou
 být naskládány do sebe.
 
 @lilypond[verbatim,quote,relative=2]
-c4~( c8 d~ d4 e)
+c4~( c8 d~ 4 e)
 @end lilypond
 
 
@@ -1205,7 +1205,7 @@ ve Figarově árii @notation{Largo al factotum}.
     \clef "bass"
     \key c \major
     \time 6/8
-    c4.~ c8 d b | c8([ d]) b c d b | c8
+    c4.~ 8 d b | c8([ d]) b c d b | c8
   }
   \addlyrics {
     Lar -- go_al fac -- | to -- tum del -- la cit -- | tà
@@ -1236,7 +1236,7 @@ Händelova díla @notation{Judas Maccabeus}:
     \key f \major
     \time 6/8
     \partial 8
-    c8 | c8([ bes]) a a([ g]) f | f'4. b, | c4.~ c4
+    c8 | c8([ bes]) a a([ g]) f | f'4. b, | c4.~ 4
   }
   \addlyrics {
     Let | flee -- cy flocks the | hills a -- | dorn, __
index 2f8cc035d2ccae84bd89952432019d1f0c74a9f2..ea58f708d4c39262c58bd724d46f7f851eb58fc3 100644 (file)
@@ -8,7 +8,7 @@
     Guide, node Updating translation committishes.
 @end ignore
 
-@c \version "2.17.29"
+@c \version "2.19.2"
 @c Translators: Pavel Fric
 
 @node Základní pojmy
@@ -767,7 +767,7 @@ ligatur, značek pro dynamiku atd. tak, jak se patří.
   c16 d e f
   %    Voice "1"     Voice "2"                Voice "3"
   << { g4 f e } \\ { r8 e4 d c8~ } >> |
-  << { d2 e }   \\ { c8 b16 a b8 g~ g2 } \\ { s4 b c2 } >> |
+  << { d2 e }   \\ { c8 b16 a b8 g~ 2 } \\ { s4 b c2 } >> |
 }
 @end lilypond
 
@@ -805,7 +805,7 @@ do dvou staveb, jak je to ukázáno zde na modrém trojúhelníkovém hlase.
     { d2 e }
   \\
      % Voice 2 continues
-    { c8 b16 a b8 g~ g2 }
+    { c8 b16 a b8 g~ 2 }
   \\
     {
       \voiceThreeStyle
@@ -1088,25 +1088,25 @@ mají příkazy @code{\oneVoice}, @code{\voiceOne} a @code{voiceTwo}
 @lilypond[quote,ragged-right,verbatim]
 \relative c' {
   % Default behavior or behavior after \oneVoice
-  c4 d8~ d e4( f | g4 a) b-> c |
+  c4 d8~ 8 e4( f | g4 a) b-> c |
 }
 @end lilypond
 
 @lilypond[quote,ragged-right,verbatim]
 \relative c' {
   \voiceOne
-  c4 d8~ d e4( f | g4 a) b-> c |
+  c4 d8~ 8 e4( f | g4 a) b-> c |
   \oneVoice
-  c,4 d8~ d e4( f | g4 a) b-> c |
+  c,4 d8~ 8 e4( f | g4 a) b-> c |
 }
 @end lilypond
 
 @lilypond[quote,ragged-right,verbatim]
 \relative c' {
   \voiceTwo
-  c4 d8~ d e4( f | g4 a) b-> c |
+  c4 d8~ 8 e4( f | g4 a) b-> c |
   \oneVoice
-  c,4 d8~ d e4( f | g4 a) b-> c |
+  c,4 d8~ 8 e4( f | g4 a) b-> c |
 }
 @end lilypond
 
@@ -1134,7 +1134,7 @@ jednotlivého hlasu. Tím se může frázovací oblouček malovat nad ně.
     \new Voice {
       % Set stems, etc., down
       \voiceTwo
-      r8 e4 d c8~ | c8 b16 a b8 g~ g2 |
+      r8 e4 d c8~ | 8 b16 a b8 g~ 2 |
     }
     % Initiate third voice
     \new Voice {
@@ -1167,7 +1167,7 @@ sázení not:
       \voiceTwo
       r8 e4 d c8~
       <<
-        { c8 b16 a b8 g~ g2 | }
+        { c8 b16 a b8 g~ 2 | }
         \new Voice {
           \voiceThree
           s4 b4 c2 |
@@ -1199,7 +1199,7 @@ jako je tomu zde:
   \new Voice {
     % Set stems, etc, down
     \voiceTwo
-    s4 r8 e4 d c8~ | c8 b16 a b8 g~ g2 |
+    s4 r8 e4 d c8~ | 8 b16 a b8 g~ 2 |
   }
   % Initiate third voice
   \new Voice {
@@ -1335,7 +1335,7 @@ ne jako noty.
 global = { \key f \major \time 6/8 \partial 8 }
 
 SopOneMusic = \relative c'' {
-  c8 | c8([ bes)] a a([ g)] f | f'4. b, | c4.~ c4
+  c8 | c8([ bes)] a a([ g)] f | f'4. b, | c4.~ 4
 }
 SopOneLyrics = \lyricmode {
   Let | flee -- cy flocks the | hills a -- dorn, __
@@ -3137,15 +3137,15 @@ ManualOneVoiceOneMusic = \relative g' {
   d2 c2 |
 }
 ManualOneVoiceTwoMusic = \relative c' {
-  ees16 d ees8~ ees16 f ees d c8 d~ d c~ |
-  c8 c4 b8 c8. g16 c b c d |
+  ees16 d ees8~ 16 f ees d c8 d~ d c~ |
+  8 c4 b8 c8. g16 c b c d |
 }
 ManualTwoMusic = \relative c' {
-  c16 b c8~ c16 b c g a8 g~ g16 g aes ees |
-  f16 ees f d g aes g f ees d e8~ ees16 f ees d |
+  c16 b c8~ 16 b c g a8 g~ 16 g aes ees |
+  f16 ees f d g aes g f ees d e8~ 8es16 f ees d |
 }
 PedalOrganMusic = \relative c {
-  r8 c16 d ees d ees8~ ees16 a, b g c b c8 |
+  r8 c16 d ees d ees8~ 16 a, b g c b c8 |
   r16 g ees f g f g8 c,2 |
 }
 
index de1f0e9aa7e679ab6c6eec21b9cf7dfb175e20ca..0338933cfa7de53923f51a489d81c2372ddb42e6 100644 (file)
@@ -8,7 +8,7 @@
     Guide, node Updating translation committishes.
 @end ignore
 
-@c \version "2.17.20"
+@c \version "2.19.2"
 
 @node Ladění výstupu
 @chapter Ladění výstupu
@@ -3322,7 +3322,7 @@ rhMusic = \relative c'' {
       { c,8 d fis bes a }  % continuation of main voice
       \new Voice {
         \voiceTwo
-        c,8~ c2
+        c,8~ 2
       }
       \new Voice {
         \voiceThree
@@ -3383,7 +3383,7 @@ rhMusic = \relative c'' {
       { c,8 d fis bes a }  % continuation of main voice
       \new Voice {
         \voiceTwo
-        c,8~ c2
+        c,8~ 2
       }
       \new Voice {
         \voiceThree
@@ -3459,7 +3459,7 @@ rhMusic = \relative c'' {
       { c,8 d fis bes a }  % continuation of main voice
       \new Voice {
         \voiceTwo
-        c,8~ c2
+        c,8~ 2
       }
       \new Voice {
         \voiceThree
@@ -3545,7 +3545,7 @@ rhMusic = \relative c'' {
       { c,8 d fis bes a }  % continuation of main voice
       \new Voice {
         \voiceTwo
-        c,8~ c2
+        c,8~ 2
       }
       \new Voice {
         \voiceThree
@@ -3777,7 +3777,7 @@ man zwei Stimmen benutzt, wobei die überbundenen Noten
 sich in der selben befinden,
 
 @lilypond[quote,fragment,relative=2]
-<< { b8~ b8\noBeam } \\ { b[ g8] } >>
+<< { b8~ 8\noBeam } \\ { b[ g8] } >>
 @end lilypond
 
 @noindent
@@ -3793,7 +3793,7 @@ den Stimmen stattfindet:
 <<
   {
     \once \override Stem.transparent = ##t
-    b8~ b\noBeam
+    b8~ 8\noBeam
   }
 \\
   { b8[ g] }
@@ -3810,7 +3810,7 @@ gesetzt wird:
   {
     \once \override Stem.transparent = ##t
     \once \override Stem.length = #8
-    b8~ b\noBeam
+    b8~ 8\noBeam
   }
 \\
   { b[ g8] }
index 6e32322872de94fc58ef75d22f0f70362d447cf4..71f313adffe6e35b321dcd4c427f52e6f8eb8f0b 100644 (file)
@@ -17,7 +17,7 @@
 
 @c `Web' was imported 2009-08-05 with git commit b938d71...
 @c @macro copyrightDeclare
-@c Copyright @copyright{} 2009--2012 by the authors.
+@c Copyright @copyright{} 2009--2014 by the authors.
 @c @end macro
 
 @set FDL
index 995c2173c6e586d111e6318fc79df08bf15363b2..8950b847a712bdf7f169793a833c5ebe7ec57fee 100644 (file)
@@ -1,3 +1,27 @@
+/**********************************************************/
+/*                  GENERAL INFORMATION                   */
+/**********************************************************/
+
+/* It has been requested that each web manual be styled using a
+   different color. To faciliate that, each manual is being
+   assigned a hue value on the HSB color chart. All specific
+   colors for a manual will be shades and tints of that hue.
+
+   Manual            Color          Hue
+   learning          green          120
+   music-glossary
+   essay
+
+   notation          blue           205
+   usage             yellow         50
+   snippets
+
+   changes
+   extending         red            0
+   internals         purple         280
+
+   contributor       black          doesn't matter - desat
+
 /**********************************************************/
 /*                  PAGE-WIDE SETTINGS                    */
 /**********************************************************/
@@ -24,7 +48,7 @@ body {
 .appendix, .appendixsec, .appendixsubsec,
 .unnumbered, .unnumberedsec, .unnumberedsubsec, .unnumberedsubsubsec,
 .subheading, .subsubheading {
-  color: #204a87;
+  color: #black;
   border-bottom: 1px dashed black;
   padding-bottom: 0.15em;
   margin-top: 0.6em;
@@ -32,15 +56,23 @@ body {
 }
 
 .settitle {
-  background: #b1d281;
+  background: #657f40;
+  color: white;
   font-size: 2em;
   text-align: center;
   padding: 0.4em 0.5em;
-  border: solid #7b925a;
+  border: solid black;
   border-width: 1px 0;
-  margin: 0;
+  margin: 0 0 10px 0;
 }
 
+body.learning    .settitle { background-color: #407f40; }
+body.notation    .settitle { background-color: #40657f; }
+body.usage       .settitle { background-color: #7f7f33; }
+body.extending   .settitle { background-color: #7f4040; }
+body.internals   .settitle { background-color: #6a407f; }
+body.contributor .settitle { background-color: #000000; }
+
 .chapter, .appendix, .unnumbered {
   font-size: 1.8em;
 }
@@ -99,8 +131,16 @@ blockquote, .smallexample {
   border: solid #b1d281;
   border-width: 1px 1px 1px 5px;
   margin: 1em auto;
+  background-color: white;
 }
 
+body.learning    blockquote, body.learning .smallexample { border-color: #00ff00; }
+body.notation    blockquote, body.notation .smallexample { border-color: #0095ff; }
+body.usage       blockquote, body.usage .smallexample { border-color: #ffff00; }
+body.extending   blockquote, body.extending .smallexample { border-color: #ff0000; }
+body.internals   blockquote, body.internals .smallexample { border-color: #aa00ff; }
+body.contributor blockquote, body.contributor .smallexample { border-color: #000000; }
+
 blockquote p, pre.smallexample {
   padding: 1em;
   margin: 0;
@@ -133,6 +173,13 @@ table.cartouche {
   margin: 0 auto 1em;
 }
 
+body.learning    table.cartouche { background-color: #cfe5cf; border: 2px solid #7db27d; }
+body.notation    table.cartouche { background-color: #cfdce5; border: 2px solid #7d9cb2; }
+body.usage       table.cartouche { background-color: #e5e2b8; border: 2px solid #b2b27d; }
+body.extending   table.cartouche { background-color: #e5cfcf; border: 2px solid #b27d7d; }
+body.internals   table.cartouche { background-color: #decfe5; border: 2px solid #a17db2; }
+body.contributor table.cartouche { background-color: #e5e5e5; border: 2px solid #b2b2b2; }
+
 table.cartouche p {
   padding: 1em;
   margin: 0;
@@ -208,13 +255,20 @@ div#tocframe {
   padding: 0;
   margin: 0;
   overflow: auto;
-  background: #f5f5dc;
+  background: #dce35cf;
   z-index: 100;
   list-style-type: none;
   font-size: 0.83em;
   line-height: 1.3;
 }
 
+body.learning    div#tocframe { background-color: #cfe5cf; }
+body.notation    div#tocframe { background-color: #cfdce5; }
+body.usage       div#tocframe { background-color: #e5e5b8; }
+body.extending   div#tocframe { background-color: #e5cfcf; }
+body.internals   div#tocframe { background-color: #decfe5; }
+body.contributor div#tocframe { background-color: #e5e5e5; }
+
 @media screen {
   body > div#tocframe {
     position: fixed
@@ -222,12 +276,12 @@ div#tocframe {
 }
 
 div#tocframe a:link, div#tocframe a:visited {
-  color: #454532;
+  color: black;
   text-decoration: none;
 }
 
 div#tocframe a:hover {
-  color: #232b16;
+  color: #666666;
   text-decoration: underline;
 }
 
@@ -236,7 +290,7 @@ div#tocframe p.toc_uplink {
   line-height: 1.125;
   background: #c9ccc4;
   padding: 0.25em 1em 0.25em 0.5em;
-  border-bottom: 1px solid #a0a087;
+  border-bottom: 1px solid black;
   margin: 0;
 }
 
@@ -382,16 +436,24 @@ table .title {
 }
 
 .footer {
-  background: #e5f5ce;
+  background: #657f40;
   font-size: 0.8em;
   padding: 0.2em 0;
-  border: solid #b1d281;
+  border: solid white;
   border-width: 0 0 5px 0;
   margin: 0;
+  color: white;
 }
 
+body.learning    .footer { background-color: #407f40; }
+body.notation    .footer { background-color: #40657f; }
+body.usage       .footer { background-color: #7f7f33; }
+body.extending   .footer { background-color: #7f4040; }
+body.internals   .footer { background-color: #6a407f; }
+body.contributor .footer { background-color: #000000; }
+
 .footer a:link {
-  color: #0308fc;
+  color: white;
 }
 
 .footer p {
@@ -456,6 +518,14 @@ div#search p, div#search form {
   margin: 1em;
 }
 
+body.learning    .warning { border-color: #00ff00; }
+body.notation    .warning { border-color: #0095ff; }
+body.usage       .warning { border-color: #ffff00; }
+body.extending   .warning { border-color: #ff0000; }
+body.internals   .warning { border-color: #aa00ff; }
+body.contributor .warning { border-color: #000000; }
+
+
 .advanced {
   background: #eeffcc;
   text-align: left;
index adf0ff03e6020e7cf74b08747e9b9faa532066b3..4630d98414292fed729949c8a42ad17643e1896f 100644 (file)
@@ -23,7 +23,7 @@ LilyPond Version @version{}.
 
 @c `Essay' was born 2002-06-03 with git commit e38f5fc...
 @macro copyrightDeclare
-Copyright @copyright{} 2002--2012 bei den Autoren.
+Copyright @copyright{} 2002--2014 bei den Autoren.
 @end macro
 
 @set FDL
index 0affa3b9e5edcb7774f0a686f8e71375fb76bfdb..fbc27ef8fe2c5f5e7c29c6118b919aafdfb11adf 100644 (file)
@@ -9,7 +9,7 @@
     Guide, node Updating translation committishes..
 @end ignore
 
-@c \version "2.17.30"
+@c \version "2.19.2"
 
 @c Translators: Till Paala
 
@@ -919,7 +919,7 @@ collide = \once \override NoteColumn.force-hshift = #0
         \new Voice { \voiceTwo bes \collide bes }
       >>
     }
-    \new Lyrics \lyricsto "sample" \lyricmode { "good " " bad" }
+    \new Lyrics \lyricsto "sample" { "good " " bad" }
   >>
 }
 @end lilypond
@@ -1756,9 +1756,9 @@ partI = \relative c' {
   fis8 d' ees g, fis4 g
   r8 a16 bes c8 bes16 a d8 r r4
   r2 r8 d16 ees f8 ees16 d
-  ees4 ~ ees16 d c bes a4 r8 ees'16 d
+  ees4 ~ 16 d c bes a4 r8 ees'16 d
   c8 d16 ees d8 e16 fis g8 fis16 g a4 ~
-  a8 d, g f ees d c bes
+  8 d, g f ees d c bes
   a2 g\fermata \bar "|."
 }
 
@@ -1767,7 +1767,7 @@ partII = \relative c' {
   d4 r4 r8 d'16 c bes8 c16 d
   ees8 d c ees a, r r4
   r8 fis16 g a8 g16 fis g2 ~
-  g2 r8 d' ees g,
+  2 r8 d' ees g,
   fis4 g r8 a16 bes c8 bes16 a
   bes4. <g b>8 <a c> r <d, g> r
   <ees g>4 <d fis> d2
@@ -1775,7 +1775,7 @@ partII = \relative c' {
 partIII = \relative c' {
   \voiceOne
   r2 r8 d ees g, fis4 g r8 a16 bes c8 bes16 a
-  bes2 ~ bes8 b16 a g8 a16 b
+  bes2 ~ 8 b16 a g8 a16 b
   c4 r r2
   R1
   r8 d ees g, fis4 g
@@ -1786,7 +1786,7 @@ partIV = \relative c {
   d4 r r2
   r8 d ees g, fis4 a
   d,8 d'16 c bes8 c16 d ees2 ~
-  ees8 ees16 d c8 d16 ees fis,8 a16 g fis8 g16 a
+  8 ees16 d c8 d16 ees fis,8 a16 g fis8 g16 a
   d,8 d'16 c bes8 c16 d ees8 c a fis'
   g f ees d c bes a g
   c a d d, g2\fermata
index b3f6f7c5f6c27b8b01b510cff4bed8a14cfd1f39..ebe3462692fc5a4ee5721deceddfb35c5854a840 100644 (file)
@@ -22,7 +22,7 @@ LilyPond Version @version{} erweitern kann.
 
 @c `Extending' was born 2003-04-23 with git commit c08f6e8...
 @macro copyrightDeclare
-Copyright @copyright{} 2003--2012 bei den Autoren.
+Copyright @copyright{} 2003--2014 bei den Autoren.
 @end macro
 
 @set FDL
index 4b1b43a00646d3cebdcfdb3248d87cd0fcaaadc1..6ee61875f0d4103de7a2109277e1da775506cb8d 100644 (file)
@@ -8,7 +8,7 @@
     Guide, node Updating translation committishes..
 @end ignore
 
-@c \version "2.17.6"
+@c \version "2.19.2"
 
 @c Translators: Till Paala
 
@@ -1399,7 +1399,7 @@ neu ausgerichtet wird.
 \relative c'' {
   \override Tie.after-line-breaking =
   #my-callback
-  c1 ~ \break c2 ~ c
+  c1 ~ \break c2 ~ 2
 }
 @end lilypond
 
index ce9c6926b625f1d5f55b9f49d78a14319ba0e2a6..b17c6ec512398baf7db7329f622699c774f5cc01 100644 (file)
@@ -19,7 +19,7 @@ Diese Datei stellt eine Einleitung für LilyPond Version
 
 @c `Learning Manual' was born 1999-10-10 with git commit b9abaac...
 @macro copyrightDeclare
-Copyright @copyright{} 1999--2012 bei den Autoren.
+Copyright @copyright{} 1999--2014 bei den Autoren.
 @end macro
  
 @set FDL
index e108d0b0c08902561a21f56c943d41a49263b719..649683986a726feb6fdf92ade1023d8802c23da5 100644 (file)
@@ -8,7 +8,7 @@
     Guide, node Updating translation committishes.
 @end ignore
 
-@c \version "2.17.28"
+@c \version "2.19.2"
 
 @ignore
 Tutorial guidelines:
@@ -250,7 +250,7 @@ Ein @notation{Bindebogen} wird geschrieben, indem man eine Tilde @code{~}
 an die erste der zu verbindenden Noten hängt.
 
 @lilypond[verbatim,quote,relative=2]
-g4~ g c2~ | c4~ c8 a~ a2
+g4~ 4 c2~ | 4~ 8 a~ 2
 @end lilypond
 
 
@@ -296,7 +296,7 @@ für größere Notengruppen gesetzt werden. Binde- und Legatobögen können
 geschachtelt werden.
 
 @lilypond[verbatim,quote,relative=2]
-c4~( c8 d~ d4 e)
+c4~( c8 d~ 4 e)
 @end lilypond
 
 
@@ -1201,7 +1201,7 @@ in Figaros Arie @notation{Largo al factotum} gesungen werden muss.
     \clef "bass"
     \key c \major
     \time 6/8
-    c4.~ c8 d b | c8([ d]) b c d b | c8
+    c4.~ 8 d b | c8([ d]) b c d b | c8
   }
   \addlyrics {
     Lar -- go_al fac -- | to -- tum del -- la cit -- | tà
@@ -1232,7 +1232,7 @@ aus Händels @notation{Judas Maccabäus}:
     \key f \major
     \time 6/8
     \partial 8
-    c8 | c8([ bes]) a a([ g]) f | f'4. b, | c4.~ c4
+    c8 | c8([ bes]) a a([ g]) f | f'4. b, | c4.~ 4
   }
   \addlyrics {
     Let | flee -- cy flocks the | hills a -- | dorn, __
index 77e3112483a18b7dadcabcd43184808172909c11..595a7f5ab076ad4f8b27211708d5e7cf8ca30578 100644 (file)
@@ -8,7 +8,7 @@
     Guide, node Updating translation committishes.
 @end ignore
 
-@c \version "2.17.29"
+@c \version "2.19.2"
 @c Translators: Till Paala, Reinhold Kainhofer
 
 @node Grundbegriffe
@@ -778,7 +778,7 @@ Dynamik usw. entsprechend eingestellt.
   c16 d e f
   %    Voice "1"     Voice "2"                Voice "3"
   << { g4 f e } \\ { r8 e4 d c8~ } >> |
-  << { d2 e }   \\ { c8 b16 a b8 g~ g2 } \\ { s4 b c2 } >> |
+  << { d2 e }   \\ { c8 b16 a b8 g~ 2 } \\ { s4 b c2 } >> |
 }
 @end lilypond
 
@@ -817,7 +817,7 @@ hier an der blauen Dreieckstimme gezeigt.
     { d2 e }
   \\
      % Voice 2 continues
-    { c8 b16 a b8 g~ g2 }
+    { c8 b16 a b8 g~ 2 }
   \\
     {
       \voiceThreeStyle
@@ -1105,25 +1105,25 @@ mit Text, Bögen und Dynamikbezeichnung anstellen:
 @lilypond[quote,ragged-right,verbatim]
 \relative c' {
   % Default behavior or behavior after \oneVoice
-  c4 d8~ d e4( f | g4 a) b-> c |
+  c4 d8~ 8 e4( f | g4 a) b-> c |
 }
 @end lilypond
 
 @lilypond[quote,ragged-right,verbatim]
 \relative c' {
   \voiceOne
-  c4 d8~ d e4( f | g4 a) b-> c |
+  c4 d8~ 8 e4( f | g4 a) b-> c |
   \oneVoice
-  c,4 d8~ d e4( f | g4 a) b-> c |
+  c,4 d8~ 8 e4( f | g4 a) b-> c |
 }
 @end lilypond
 
 @lilypond[quote,ragged-right,verbatim]
 \relative c' {
   \voiceTwo
-  c4 d8~ d e4( f | g4 a) b-> c |
+  c4 d8~ 8 e4( f | g4 a) b-> c |
   \oneVoice
-  c,4 d8~ d e4( f | g4 a) b-> c |
+  c,4 d8~ 8 e4( f | g4 a) b-> c |
 }
 @end lilypond
 
@@ -1153,7 +1153,7 @@ Phrasierungsbogen ober sie gesetzt werden.
     \new Voice {
       % Set stems, etc., down
       \voiceTwo
-      r8 e4 d c8~ | c8 b16 a b8 g~ g2 |
+      r8 e4 d c8~ | 8 b16 a b8 g~ 2 |
     }
     % Initiate third voice
     \new Voice {
@@ -1186,7 +1186,7 @@ sein, Noten zu setzen:
       \voiceTwo
       r8 e4 d c8~
       <<
-        { c8 b16 a b8 g~ g2 | }
+        { c8 b16 a b8 g~ 2 | }
         \new Voice {
           \voiceThree
           s4 b4 c2 |
@@ -1219,7 +1219,7 @@ an denen die Stimme nicht auftaucht, wie etwa hier:
   \new Voice {
     % Set stems, etc, down
     \voiceTwo
-    s4 r8 e4 d c8~ | c8 b16 a b8 g~ g2 |
+    s4 r8 e4 d c8~ | 8 b16 a b8 g~ 2 |
   }
   % Initiate third voice
   \new Voice {
@@ -1368,7 +1368,7 @@ nicht als Noten interpretiert werden kann.
 global = { \key f \major \time 6/8 \partial 8 }
 
 SopOneMusic = \relative c'' {
-  c8 | c8([ bes)] a a([ g)] f | f'4. b, | c4.~ c4
+  c8 | c8([ bes)] a a([ g)] f | f'4. b, | c4.~ 4
 }
 SopOneLyrics = \lyricmode {
   Let | flee -- cy flocks the | hills a -- dorn, __
@@ -3172,15 +3172,15 @@ ManualOneVoiceOneMusic = \relative g' {
   d2 c2 |
 }
 ManualOneVoiceTwoMusic = \relative c' {
-  ees16 d ees8~ ees16 f ees d c8 d~ d c~ |
-  c8 c4 b8 c8. g16 c b c d |
+  ees16 d ees8~ 16 f ees d c8 d~ d c~ |
+  8 c4 b8 c8. g16 c b c d |
 }
 ManualTwoMusic = \relative c' {
-  c16 b c8~ c16 b c g a8 g~ g16 g aes ees |
-  f16 ees f d g aes g f ees d e8~ ees16 f ees d |
+  c16 b c8~ 16 b c g a8 g~ 16 g aes ees |
+  f16 ees f d g aes g f ees d e8~ 8es16 f ees d |
 }
 PedalOrganMusic = \relative c {
-  r8 c16 d ees d ees8~ ees16 a, b g c b c8 |
+  r8 c16 d ees d ees8~ 16 a, b g c b c8 |
   r16 g ees f g f g8 c,2 |
 }
 
index 0c64ba246970f8c0315c480b0c3ffb215daa1cc2..0d407cbb59e747ab267d56ddd350cda0e8e34dc7 100644 (file)
@@ -8,7 +8,7 @@
     Guide, node Updating translation committishes.
 @end ignore
 
-@c \version "2.17.20"
+@c \version "2.19.2"
 
 @node Die Ausgabe verändern
 @chapter Die Ausgabe verändern
@@ -3119,12 +3119,12 @@ stößt der Balken mit den oberen Bögen zusammen:
 {
   \time 4/2
   <<
-    { c'1 ~ c'2. e'8 f' }
+    { c'1 ~ 2. e'8 f' }
     \\
     { e''8 e'' e'' e''  e'' e'' e'' e''  f''2 g'' }
   >>
   <<
-    { c'1 ~ c'2. e'8 f' }
+    { c'1 ~ 2. e'8 f' }
     \\
     { e''8 e'' e'' e''  e'' e'' e'' e''  f''2 g'' }
   >>
@@ -3144,7 +3144,7 @@ hochgeschoben werden, etwa auf 1:
 {
   \time 4/2
   <<
-    { c'1 ~ c'2. e'8 f' }
+    { c'1 ~ 2. e'8 f' }
     \\
     {
       \override Beam.positions = #'(-1 . -1)
@@ -3152,7 +3152,7 @@ hochgeschoben werden, etwa auf 1:
     }
   >>
   <<
-    { c'1 ~ c'2. e'8 f' }
+    { c'1 ~ 2. e'8 f' }
     \\
     { e''8 e'' e'' e''  e'' e'' e'' e''  f''2 g'' }
   >>
@@ -3347,7 +3347,7 @@ rhMusic = \relative c'' {
       { c,8 d fis bes a }  % continuation of main voice
       \new Voice {
         \voiceTwo
-        c,8~ c2
+        c,8~ 2
       }
       \new Voice {
         \voiceThree
@@ -3408,7 +3408,7 @@ rhMusic = \relative c'' {
       { c,8 d fis bes a }  % continuation of main voice
       \new Voice {
         \voiceTwo
-        c,8~ c2
+        c,8~ 2
       }
       \new Voice {
         \voiceThree
@@ -3484,7 +3484,7 @@ rhMusic = \relative c'' {
       { c,8 d fis bes a }  % continuation of main voice
       \new Voice {
         \voiceTwo
-        c,8~ c2
+        c,8~ 2
       }
       \new Voice {
         \voiceThree
@@ -3570,7 +3570,7 @@ rhMusic = \relative c'' {
       { c,8 d fis bes a }  % continuation of main voice
       \new Voice {
         \voiceTwo
-        c,8~ c2
+        c,8~ 2
       }
       \new Voice {
         \voiceThree
@@ -3802,7 +3802,7 @@ man zwei Stimmen benutzt, wobei die überbundenen Noten
 sich in der selben befinden,
 
 @lilypond[quote,fragment,relative=2]
-<< { b8~ b8\noBeam } \\ { b[ g8] } >>
+<< { b8~ 8\noBeam } \\ { b[ g8] } >>
 @end lilypond
 
 @noindent
@@ -3818,7 +3818,7 @@ den Stimmen stattfindet:
 <<
   {
     \tweak Stem.transparent ##t
-    b8~ b\noBeam
+    b8~ 8\noBeam
   }
 \\
   { b8[ g] }
@@ -3835,7 +3835,7 @@ gesetzt wird:
   {
     \tweak Stem.transparent ##t
     \tweak Stem.length #8
-    b8~ b\noBeam
+    b8~ 8\noBeam
   }
 \\
   { b[ g8] }
index 966c0b6c6b26e949804003578495baa1e3ed0510..63b5fa743861b566ed098b500a0089518dac7c42 100644 (file)
@@ -24,7 +24,7 @@ dem @rlearningnamed{Top, Handbuch zum Lernen} vertraut ist.
 
 @c `Notation Reference' was born 1999-10-11 with git commit 940dda0...
 @macro copyrightDeclare
-Copyright @copyright{} 1999--2012 bei den Autoren.
+Copyright @copyright{} 1999--2014 bei den Autoren.
 @end macro
 
 
index e528f8ae6a4ecd4197603087d1236cb934bfefd7..f505579762270384f1a70dfce0946a2fe41131e1 100644 (file)
@@ -8,7 +8,7 @@
     Guide, node Updating translation committishes..
 @end ignore
 
-@c \version "2.17.30"
+@c \version "2.19.7"
 
 @c Translators: Till Paala
 
@@ -1817,7 +1817,7 @@ werden muss.
 
 Kontexteigenschaften werden üblicherweise mit @code{kleinGroßbuchstabe}
 benannt.  Sie kontrollieren vor allem die Übersetzung von Musik in
-Notation, wie etwa @code{localKeySignature}, welche bestimmt, wann
+Notation, wie etwa @code{localAlterations}, welche bestimmt, wann
 ein Taktstrich gesetzt werden muss.  Kontexteigenschaften können
 ihren Wert mit der Zeit ändern, während eine Notationsdatei interpretiert
 wird.  Ein gutes Beispiel dafür ist @code{measurePosition}, was die
@@ -2306,7 +2306,7 @@ unterschiedliche Arten von Eigenschaften.
 Kontexte können Eigenschaften haben, deren Bezeichnungen
 üblicherweise dem Schema @code{kleinGroß} folgen.  Derartige
 Eigenschaften sind vor allen Dingen für die Übersetzung der
-Musik in Notation zuständig, beispielsweise @code{localKeySignature}
+Musik in Notation zuständig, beispielsweise @code{localAlterations}
 (um zu bestimmen, ob Versetzungszeichen ausgegeben werden
 müssen), @code{measurePosition} (um zu bestimmen, ob eine
 Taktlinie gesetzt werden muss).  Kontexteigenschaften können
@@ -2467,7 +2467,7 @@ Es ist also sicherer, geschachtelte Aufrufe zu benutzen, wenn man nicht
 bewusst alle Werte zurücksetzen will.
 
 @warning{Geschachtelte Aufrufe funktionieren nicht mit
-Kontexteigenschaften (wie etwa @code{beamExceptions}, @code{keySignature},
+Kontexteigenschaften (wie etwa @code{beamExceptions}, @code{keyAlterations},
 @code{timeSignatureSettings}, usw.)  Diese Eigenschaften können
 nur verändert werden, indem man sie vollständig als Alisten umdefiniert.}
 
@@ -4115,7 +4115,7 @@ lösen würde.
 
 @lilypond[verbatim,quote,relative=1]
 <<
-  { e1~ e }
+  { e1~ 1 }
 \\
   { r4 <g c,> <g c,> <g c,> }
 >>
@@ -4151,7 +4151,7 @@ wird.
 <<
   {
   \once \override Tie.control-points = #'((1 . -1) (3 . 0.6) (12.5 . 0.6) (14.5 . -1))
-  e1~ e1
+  e1~ 1
   }
 \\
   { r4 <g c,> <g c,> <g c,>  }
index 58e9539e728562f67c8e0425573c51c40c73f65e..226e13fa4962f5d3d9533f16933dacf4b5ccd7f0 100644 (file)
@@ -8,7 +8,7 @@
     Guide, node Updating translation committishes.
 @end ignore
 
-@c \version "2.17.30"
+@c \version "2.19.2"
 
 @c Translators: Till Paala
 
@@ -191,7 +191,7 @@ symbols = {
   c4-.^"Allegro" d( e)
   f4-.\f g a^\fermata
   \mark \default
-  c8_.\<\( c16 c~ c2\!
+  c8_.\<\( c16 c~ 2\!
   c'2.\prall\)
 }
 
@@ -218,7 +218,7 @@ symbols = {
   c4-.^"Allegro" d( e)
   f4-.\f g a^\fermata
   \mark \default
-  c8_.\<\( c16 c~ c2\!
+  c8_.\<\( c16 c~ 2\!
   c'2.\prall\)
 }
 
@@ -288,7 +288,7 @@ dass er durch @code{\tabChordRepeats} zur Verfügung gestellt wird.
 
 @lilypond[quote,verbatim]
 guitar = \relative c' {
-  r8 <gis-2 cis-3 b-0>~ q4 q8~ q q4
+  r8 <gis-2 cis-3 b-0>~ q4 q8~ 8 q4
 }
 
 \new StaffGroup <<
@@ -309,7 +309,7 @@ gesetzt.  Das gilt auch für die zweite Klammer einer Wiederholung.
 ties = \relative c' {
   \repeat volta 2 {
     e2. f4~
-    f2 g2~
+    2 g2~
   }
   \alternative {
      { g4 f2. }
@@ -349,7 +349,7 @@ Bundnummern in Klammern gesetzt werden:
 ties = \relative c' {
   \repeat volta 2 {
     e2. f4~
-    f2 g2~ }
+    2 g2~ }
   \alternative {
     { g4 f2. }
     { g4\repeatTie c,2. }
index 5b159b1a059ec71b79f54fec030254d15032ff5d..ff1b13fba2340aca0251e74e5d8d3d5cccba0dba 100644 (file)
@@ -8,7 +8,7 @@
     Guide, node Updating translation committishes.
 @end ignore
 
-@c \version "2.17.6"
+@c \version "2.19.2"
 
 @c Translators: Till Paala
 
@@ -2266,7 +2266,7 @@ im Gesangstext und als normaler Text außerhalb der Partitur.
   }
   \addlyrics { O \markup { \concat { Ph \char ##x0153 be! } } }
 }
-\markup { "Copyright 2008--2012" \char ##x00A9 }
+\markup { "Copyright 2008--2014" \char ##x00A9 }
 @end lilypond
 
 @cindex Copyright-Zeichen
@@ -2919,8 +2919,8 @@ auf den Bereich zwischen 0.2 und 0.5 eingeschränkt.
       \set Staff.midiInstrument = #"flute"
       \new Voice \relative c''' {
         r2 g\mp g fis~
-        fis4 g8 fis e2~
-        e4 d8 cis d2
+        4 g8 fis e2~
+        4 d8 cis d2
       }
     }
     \new Staff {
@@ -2970,8 +2970,8 @@ diese Einstellung korrekt funktioniert.
       \set Staff.midiMaximumVolume = #0.9
       \new Voice \relative c''' {
         r2 g\mp g fis~
-        fis4 g8 fis e2~
-        e4 d8 cis d2
+        4 g8 fis e2~
+        4 d8 cis d2
       }
     }
     \new Staff {
@@ -3043,8 +3043,8 @@ Lautstärkewerte, die denen des vorigen Beispiels entsprechen.
       \set Staff.midiInstrument = #"flute"
       \new Voice \relative c''' {
         r2 g\mp g fis~
-        fis4 g8 fis e2~
-        e4 d8 cis d2
+        4 g8 fis e2~
+        4 d8 cis d2
       }
     }
     \new Staff {
index 786ba54c4f90618eabf378ff6428d2e63d987f2f..02e265c921e385f9ff4994d3328cc8b1a0b37216 100644 (file)
@@ -8,7 +8,7 @@
     Guide, node Updating translation committishes.
 @end ignore
 
-@c \version "2.17.30"
+@c \version "2.19.2"
 
 @c Translators: Till Paala
 
@@ -517,7 +517,7 @@ bellstaff = {
   \drummode {
     \time 2/4
     rb8 rb cb cb16 rb-> ~ |
-    rb16 rb8 rb16 cb8 cb |
+    16 rb8 rb16 cb8 cb |
   }
 }
 @end lilypond
index 70129c81c7a99470407b8a187a39180503e351fa..bfe3fa73c7b58d58c58ac158b422616b21f83864 100644 (file)
@@ -7,7 +7,7 @@
     Guide, node Updating translation committishes..
 @end ignore
 
-@c \version "2.17.18"
+@c \version "2.19.2"
 
 @c Translators: Till Paala
 
@@ -417,7 +417,7 @@ Versetzungzeichen von übergebundenen Noten werden nur
 dann gesetzt, wenn ein neues System begonnen wird:
 
 @lilypond[verbatim,quote,relative=2]
-cis1~ cis~
+cis1~ 1~
 \break
 cis
 @end lilypond
@@ -3066,8 +3066,8 @@ benutzt werden:
   e8 e g a a16( bes) a8 g
   \improvisationOn
   e8 ~
-  e2 ~ e8 f4 f8 ~
-  f2
+  2 ~ 8 f4 f8 ~
+  2
   \improvisationOff
   a16( bes) a8 g e
 }
index 2e2d5198cfeae725d2937b7cf8d891881163b715..25c3c7c0427a3930b0da0070b013476fc22e4548 100644 (file)
@@ -459,12 +459,6 @@ voltaAdLib = \markup { 1. 2. 3... \text \italic { ad lib. } }
 @end lilypond
 
 
-@snippets
-
-@lilypondfile[verbatim,quote,texidoc,doctitle]
-{printing-a-repeat-sign-at-the-beginning-of-a-piece.ly}
-
-
 @seealso
 Notationsreferenz:
 @ref{Taktstriche},
index 5a8bb1adc8e70833aff2676b4b32d8ec55838248..e1d0ea5e935b7cbe332e8f22ba2622100e86b766 100644 (file)
@@ -7,7 +7,7 @@
     Guide, node Updating translation committishes.
 @end ignore
 
-@c \version "2.17.30"
+@c \version "2.19.2"
 
 @c Translators: Till Paala
 
@@ -434,7 +434,7 @@ Ein Bindebogen wird mit der
 Tilde @code{~} (AltGr++) notiert.
 
 @lilypond[quote,verbatim,relative=2]
-a2 ~ a
+a2 ~ 2
 @end lilypond
 
 Bindebögen werden eingesetzt, wenn die Note entweder über eine
@@ -445,8 +445,8 @@ inneren Unterteilungen von Takten hinüberreichen:
 
 @lilypond[quote]
 \relative c' {
-  r8 c8 ~ c2 r4 |
-  r8^"not" c2 ~ c8 r4
+  r8 c8 ~ 2 r4 |
+  r8^"not" c2 ~ 8 r4
 }
 @end lilypond
 
@@ -537,26 +537,26 @@ von Strichen und durchgehender Linie definiert werden.
 
 @lilypond[quote, verbatim, relative=1]
 \tieDotted
-c2 ~ c
+c2 ~ 2
 \tieDashed
-c2 ~ c
+c2 ~ 2
 \tieHalfDashed
-c2 ~ c
+c2 ~ 2
 \tieHalfSolid
-c2 ~ c
+c2 ~ 2
 \tieSolid
-c2 ~ c
+c2 ~ 2
 @end lilypond
 
 Eigene Strichelungsmuster können definiert werden:
 
 @lilypond[quote, verbatim, relative=1]
 \tieDashPattern #0.3 #0.75
-c2 ~ c
+c2 ~ 2
 \tieDashPattern #0.7 #1.5
-c2 ~ c
+c2 ~ 2
 \tieSolid
-c2 ~ c
+c2 ~ 2
 @end lilypond
 
 Die Definition von Muster für die Strichelung der Bindebögen hat
index 1eb7afce45af6402bbdb8da7e623846f1ef8b846..d55ef16849ec5b21988d5d9cc4b0fd7228c36a75 100644 (file)
@@ -7,7 +7,7 @@
     Guide, node Updating translation committishes.
 @end ignore
 
-@c \version "2.17.28"
+@c \version "2.19.2"
 
 @c Translators: Till Paala
 
@@ -418,7 +418,7 @@ ist im Beispiel unten dargestellt:
   \new Voice = "first"
     { \voiceOne r8 r16 g e8. f16 g8[ c,] f e16 d }
   \new Voice= "second"
-    { \voiceTwo d16 c d8~ d16 b c8~ c16 b c8~ c16 b8. }
+    { \voiceTwo d16 c d8~ 16 b c8~ 16 b c8~ 16 b8. }
 >>
 @end lilypond
 
@@ -499,7 +499,7 @@ Das erste Beispiel könnte also auch wie folgt notiert werden:
 <<
   { r8 r16 g e8. f16 g8[ c,] f e16 d }
   \\
-  { d16 c d8~ d16 b c8~ c16 b c8~ c16 b8. }
+  { d16 c d8~ 16 b c8~ 16 b c8~ 16 b8. }
 >>
 @end lilypond
 
@@ -1154,12 +1154,12 @@ die Takte müssen die gleiche Länge haben.}
 \parallelMusic #'(voiceA voiceB voiceC) {
   % Bar 1
   r8 g'16 c'' e'' g' c'' e'' r8 g'16 c'' e'' g' c'' e'' |
-  r16 e'8.~   e'4            r16 e'8.~   e'4            |
+  r16 e'8.~   4              r16 e'8.~   4              |
   c'2                        c'2                        |
 
   % Bar 2
   r8 a'16 d'' f'' a' d'' f'' r8 a'16 d'' f'' a' d'' f'' |
-  r16 d'8.~   d'4            r16 d'8.~   d'4            |
+  r16 d'8.~   4              r16 d'8.~   4              |
   c'2                        c'2                        |
 
 }
@@ -1180,12 +1180,12 @@ relative Noten von @code{voiceA} die Noten von @code{voiceB}.
 \parallelMusic #'(voiceA voiceB voiceC) {
   % Bar 1
   r8 g16 c e g, c e r8 g,16 c e g, c e  |
-  r16 e8.~ e4       r16 e8.~  e4        |
+  r16 e8.~ 4        r16 e8.~  4         |
   c2                c                   |
 
   % Bar 2
   r8 a,16 d f a, d f r8 a,16 d f a, d f |
-  r16 d8.~  d4       r16 d8.~  d4       |
+  r16 d8.~  4        r16 d8.~  4        |
   c2                 c                  |
 
  }
index 1c694be3a401ce6368cf2189c29c48044a21cd39..e2e8895aad4e39058ce8a3781913608f92a04315 100644 (file)
@@ -7,7 +7,7 @@
     Guide, node Updating translation committishes.
 @end ignore
 
-@c \version "2.17.30"
+@c \version "2.19.2"
 
 @c Translators: Till Paala
 
@@ -1087,7 +1087,7 @@ wird dann benutzt, um den Wechsel vorzunehmen:
   R1*16
   \instrumentSwitch "contrabassoon"
   c,,2 g \break
-  c,1 ~ | c1
+  c,1 ~ | 1
 }
 @end lilypond
 
index 5e81851fe6cd53adbf5b980683a3766e66357ed0..79428ef579ccfacd516e4af33d7e40f0aea378a3 100644 (file)
@@ -7,7 +7,7 @@
     Guide, node Updating translation committishes.
 @end ignore
 
-@c \version "2.17.30"
+@c \version "2.19.2"
 
 @c Translators: Till Paala
 
@@ -677,8 +677,8 @@ Melismen werden automatisch zu Noten erstellt, die übergebunden sind:
   \new Voice = "melody" {
     \time 3/4
     f4 g2 ~ |
-    g4 e2 ~ |
-    e8
+    4 e2 ~ |
+    8
   }
   \new Lyrics \lyricsto "melody" {
     Ky -- ri -- e __
@@ -780,7 +780,7 @@ benutzen, ohne dass sie Melismen bezeichnen, wenn
     \time 3/4
     \set melismaBusyProperties = #'()
     c4 d ( e )
-    g8 [ f ] f4 ~ f
+    g8 [ f ] f4 ~ 4
   }
   \new Lyrics \lyricsto "melody" {
     Ky -- ri -- e e -- le -- i -- son
@@ -808,7 +808,7 @@ angegeben werden:
     \time 3/4
     \set melismaBusyProperties = #'()
     c4 d ( e )
-    g8 [ f ] ~ f4 ~ f
+    g8 [ f ] ~ 4 ~ f
   }
   \new Lyrics \lyricsto "melody" {
     Ky -- ri -- _ e __ _ _ _
index 452f275938a829b2fc40a61dd604410c00f5e628..5e7222b839d3fb302cead0d2bed49de6ea45fd85 100644 (file)
@@ -16,11 +16,11 @@ search for a while and have a redirection from "v2.15" to "v2.17".
 <form action="http://google.com/search"
       method="get"
       name="search"
-      onSubmit="search.q.value='site:lilypond.org/doc/v2.17 '
+      onSubmit="search.q.value='site:lilypond.org/doc/v2.19 '
                + search.brute_query.value"
-      onMouseMove="search.q.value='site:lilypond.org/doc/v2.17 '
+      onMouseMove="search.q.value='site:lilypond.org/doc/v2.19 '
                   + search.brute_query.value"
-      onKeyUp="search.q.value='site:lilypond.org/doc/v2.17 '
+      onKeyUp="search.q.value='site:lilypond.org/doc/v2.19 '
               + search.brute_query.value">
   <input type="hidden" name="btnG" value="Mit Google suchen">
   <input type="text" name="brute_query" onfocus="this.value=''" value="Suche">
index b448e74e9009a88c1d4ed52290efcff2010c3c7e..3bb9e68a01a73eb0224e3b90f93ce41a0dcd8548 100644 (file)
@@ -23,7 +23,7 @@ vorgestellt.
 
 @c `Usage' was born 1999-10-10 with git commit c82c30c...
 @macro copyrightDeclare
-Copyright @copyright{} 1999--2012 bei den Autoren.
+Copyright @copyright{} 1999--2014 bei den Autoren.
 @end macro
 
 @set FDL
index c830355094d986413722befb8c558c42892b6d09..b8fa61a886b1a366154bb56e06a3f497ba20e7b6 100644 (file)
@@ -17,7 +17,7 @@
 
 @c `Web' was imported 2009-08-05 with git commit b938d71...
 @c @macro copyrightDeclare
-@c Copyright @copyright{} 2009--2012 by the authors.
+@c Copyright @copyright{} 2009--2014 by the authors.
 @c @end macro
 
 @set FDL
@@ -37,7 +37,7 @@
 @end ignore
 
 @copying
-Copyright @copyright{} 2009--2012 by the authors.
+Copyright @copyright{} 2009--2014 by the authors.
 
 @c next line is necessary for broken pre-4.13 texinfo's
 @c install-info, so leave it there until we officially
index 4b8372865b66da634f736a028bfeacd986800e79..7a61fa28768c377d84b63b55a6c53384228ed99b 100644 (file)
@@ -22,7 +22,7 @@ dentro de LilyPond version @version{}.
 
 @c `Essay' was born 2002-06-03 with git commit e38f5fc...
 @macro copyrightDeclare
-Copyright @copyright{} 2002--2012 por los autores.
+Copyright @copyright{} 2002--2014 por los autores.
 @end macro
 
 @set FDL
index 46431c73f7f387b672aa40a98d80fc07678f64c8..7f78637b789147f276e917721c795583e548d44f 100644 (file)
@@ -8,7 +8,7 @@
     Guide, node Updating translation committishes..
 @end ignore
 
-@c \version "2.17.30"
+@c \version "2.19.2"
 
 @node Grabado musical
 @chapter Grabado musical
@@ -922,7 +922,7 @@ collide = \once \override NoteColumn.force-hshift = #0
         \new Voice { \voiceTwo bes \collide bes }
       >>
     }
-    \new Lyrics \lyricsto "sample" \lyricmode { "bien " " mal" }
+    \new Lyrics \lyricsto "sample" { "bien " " mal" }
   >>
 }
 @end lilypond
@@ -1772,9 +1772,9 @@ partI = \relative c' {
   fis8 d' ees g, fis4 g
   r8 a16 bes c8 bes16 a d8 r r4
   r2 r8 d16 ees f8 ees16 d
-  ees4 ~ ees16 d c bes a4 r8 ees'16 d
+  ees4 ~ 16 d c bes a4 r8 ees'16 d
   c8 d16 ees d8 e16 fis g8 fis16 g a4 ~
-  a8 d, g f ees d c bes
+  8 d, g f ees d c bes
   a2 g\fermata \bar "|."
 }
 
@@ -1783,7 +1783,7 @@ partII = \relative c' {
   d4 r4 r8 d'16 c bes8 c16 d
   ees8 d c ees a, r r4
   r8 fis16 g a8 g16 fis g2 ~
-  g2 r8 d' ees g,
+  2 r8 d' ees g,
   fis4 g r8 a16 bes c8 bes16 a
   bes4. <g b>8 <a c> r <d, g> r
   <ees g>4 <d fis> d2
@@ -1791,7 +1791,7 @@ partII = \relative c' {
 partIII = \relative c' {
   \voiceOne
   r2 r8 d ees g, fis4 g r8 a16 bes c8 bes16 a
-  bes2 ~ bes8 b16 a g8 a16 b
+  bes2 ~ 8 b16 a g8 a16 b
   c4 r r2
   R1
   r8 d ees g, fis4 g
@@ -1802,7 +1802,7 @@ partIV = \relative c {
   d4 r r2
   r8 d ees g, fis4 a
   d,8 d'16 c bes8 c16 d ees2 ~
-  ees8 ees16 d c8 d16 ees fis,8 a16 g fis8 g16 a
+  8 ees16 d c8 d16 ees fis,8 a16 g fis8 g16 a
   d,8 d'16 c bes8 c16 d ees8 c a fis'
   g f ees d c bes a g
   c a d d, g2\fermata
index 9d7b9071a58a2ce73b7a331f6153d57139142edd..6a53d656b00f456b06006369385c4dd942c0b93d 100644 (file)
@@ -22,7 +22,7 @@ LilyPond versión @version{}.
 
 @c `Extending' was born 2003-04-23 with git commit c08f6e8...
 @macro copyrightDeclare
-Copyright @copyright{} 2003--2012 por los autores.
+Copyright @copyright{} 2003--2014 por los autores.
 @end macro
 
 @set FDL
index 9130771ab4ec27ead47c23550ecc41a7a051ea44..726f316dca0bb50be996b35a9d612911d8e27fef 100644 (file)
@@ -7,7 +7,7 @@
     version that you are working on.  See TRANSLATION for details.
 @end ignore
 
-@c \version "2.17.6"
+@c \version "2.19.2"
 
 @node Interfaces para programadores
 @chapter Interfaces para programadores
@@ -1537,7 +1537,7 @@ arriba.
   \override Tie.after-line-breaking =
   #my-callback
   c1 ~ \break
-  c2 ~ c
+  c2 ~ 2
 }
 @end lilypond
 
index 8472fd6f5bd233b3e19362db646534c5cf4369f8..5f63dc4e46e6ce9552723f95f55ad6908bf8c641 100644 (file)
@@ -20,7 +20,7 @@ Este archivo ofrece una introducción al programa LilyPond versión
 
 @c `Learning Manual' was born 1999-10-10 with git commit b9abaac...
 @macro copyrightDeclare
-Copyright @copyright{} 1999--2012 por los autores.
+Copyright @copyright{} 1999--2014 por los autores.
 @end macro
 
 @set FDL
index 487ce0e3daa77f03aeb04725283a6b5b7ede192f..7e9e8a4e76457a56a34be42769ad57a3a56ad9b2 100644 (file)
@@ -7,7 +7,7 @@
     version that you are working on.  See TRANSLATION for details.
 @end ignore
 
-@c \version "2.17.28"
+@c \version "2.19.2"
 
 @ignore
 Tutorial guidelines:  (different from policy.txt!)
@@ -309,7 +309,7 @@ Una @notation{ligadura de unión} se crea adjuntando un carácter de
 tilde curva @code{~} a la primera nota ligada:
 
 @lilypond[verbatim,quote,relative=2]
-g4~ g c2~ | c4~ c8 a~ a2 |
+g4~ 4 c2~ | 4~ 8 a~ 2 |
 @end lilypond
 
 @node Ligaduras de expresión
@@ -367,7 +367,7 @@ sobre grupos mayores de notas.  Las ligaduras de unión y de expresión
 se pueden anidar unas dentro de otras.
 
 @lilypond[verbatim,quote,relative=2]
-c4~( c8 d~ d4 e)
+c4~( c8 d~ 4 e)
 @end lilypond
 
 
@@ -1279,7 +1279,7 @@ el aria de Fígaro @notation{Largo al factotum}:
     \clef "bass"
     \key c \major
     \time 6/8
-    c4.~ c8 d b | c8([ d]) b c d b | c8
+    c4.~ 8 d b | c8([ d]) b c d b | c8
   }
   \addlyrics {
     Lar -- go_al fac -- | to -- tum del -- la cit -- | tà
@@ -1310,7 +1310,7 @@ del @notation{Judas Macabeo} de Haendel:
     \key f \major
     \time 6/8
     \partial 8
-    c8 | c8([ bes]) a a([ g]) f | f'4. b, | c4.~ c4
+    c8 | c8([ bes]) a a([ g]) f | f'4. b, | c4.~ 4
   }
   \addlyrics {
     Let | flee -- cy flocks the | hills a -- | dorn, __
index e954d9710e0562252b53fd574115a8602bfaaa40..d4b4ae4dad6e668fb5f4a3c52378c5678eddab56 100644 (file)
@@ -8,7 +8,7 @@
     Guide, node Updating translation committishes..
 @end ignore
 
-@c \version "2.17.29"
+@c \version "2.19.2"
 
 @node Conceptos fundamentales
 @chapter Conceptos fundamentales
@@ -726,7 +726,7 @@ correcta.
   c16 d e f
   %    Voice "1"     Voice "2"                Voice "3"
   << { g4 f e } \\ { r8 e4 d c8~ } >> |
-  << { d2 e }   \\ { c8 b16 a b8 g~ g2 } \\ { s4 b c2 } >> |
+  << { d2 e }   \\ { c8 b16 a b8 g~ 2 } \\ { s4 b c2 } >> |
 }
 @end lilypond
 
@@ -765,7 +765,7 @@ construcciones, como se indica aquí en la voz de triángulos azules.
     { d2 e }
   \\
      % Voice 2 continues
-    { c8 b16 a b8 g~ g2 }
+    { c8 b16 a b8 g~ 2 }
   \\
     {
       \voiceThreeStyle
@@ -1050,25 +1050,25 @@ las ligaduras de unión y de expresión y las indicaciones de dinámica:
 @lilypond[quote,ragged-right,verbatim]
 \relative c' {
   % Default behavior or behavior after \oneVoice
-  c4 d8~ d e4( f | g4 a) b-> c |
+  c4 d8~ 8 e4( f | g4 a) b-> c |
 }
 @end lilypond
 
 @lilypond[quote,ragged-right,verbatim]
 \relative c' {
   \voiceOne
-  c4 d8~ d e4( f | g4 a) b-> c |
+  c4 d8~ 8 e4( f | g4 a) b-> c |
   \oneVoice
-  c,4 d8~ d e4( f | g4 a) b-> c |
+  c,4 d8~ 8 e4( f | g4 a) b-> c |
 }
 @end lilypond
 
 @lilypond[quote,ragged-right,verbatim]
 \relative c' {
   \voiceTwo
-  c4 d8~ d e4( f | g4 a) b-> c |
+  c4 d8~ 8 e4( f | g4 a) b-> c |
   \oneVoice
-  c,4 d8~ d e4( f | g4 a) b-> c |
+  c,4 d8~ 8 e4( f | g4 a) b-> c |
 }
 @end lilypond
 
@@ -1098,7 +1098,7 @@ pueda trazar una ligadura por encima de ellas.
     \new Voice {
       % Set stems, etc., down
       \voiceTwo
-      r8 e4 d c8~ | c8 b16 a b8 g~ g2 |
+      r8 e4 d c8~ | 8 b16 a b8 g~ 2 |
     }
     % Initiate third voice
     \new Voice {
@@ -1129,7 +1129,7 @@ de tipografiar la música.
       \voiceTwo
       r8 e4 d c8~ |
       <<
-        { c8 b16 a b8 g~ g2 | }
+        { c8 b16 a b8 g~ 2 | }
         \new Voice {
           \voiceThree
           s4 b c2 |
@@ -1159,7 +1159,7 @@ que una voz está en silencio, como aquí:
   \new Voice {
     % Set stems, etc, down
     \voiceTwo
-    s4 r8 e4 d c8~ | c8 b16 a b8 g~ g2 |
+    s4 r8 e4 d c8~ | 8 b16 a b8 g~ 2 |
   }
   % Initiate third voice
   \new Voice {
@@ -1301,7 +1301,7 @@ no como música.
 global = { \key f \major \time 6/8 \partial 8 }
 
 SopOneMusic = \relative c'' {
-  c8 | c8([ bes)] a a([ g)] f | f'4. b, | c4.~ c4
+  c8 | c8([ bes)] a a([ g)] f | f'4. b, | c4.~ 4
 }
 SopOneLyrics = \lyricmode {
   Let | flee -- cy flocks the | hills a -- dorn, __
@@ -3029,15 +3029,15 @@ ManualOneVoiceOneMusic = \relative g' {
   d2 c |
 }
 ManualOneVoiceTwoMusic = \relative c' {
-  ees16 d ees8~ ees16 f ees d c8 d~ d c~ |
-  c8 c4 b8 c8. g16 c b c d |
+  ees16 d ees8~ 16 f ees d c8 d~ d c~ |
+  8 c4 b8 c8. g16 c b c d |
 }
 ManualTwoMusic = \relative c' {
-  c16 b c8~ c16 b c g a8 g~ g16 g aes ees |
-  f16 ees f d g aes g f ees d ees8~ ees16 f ees d |
+  c16 b c8~ 16 b c g a8 g~ 16 g aes ees |
+  f16 ees f d g aes g f ees d ees8~ 16 f ees d |
 }
 PedalOrganMusic = \relative c {
-  r8 c16 d ees d ees8~ ees16 a, b g c b c8 |
+  r8 c16 d ees d ees8~ 16 a, b g c b c8 |
   r16 g ees f g f g8 c,2 |
 }
 
index 87be1fdb1e1eb52aa8aa076ac359d5b141eb16ac..20a4baf477fa5e7ee4af820d79a6e67b62f43172 100644 (file)
@@ -8,7 +8,7 @@
     Guide, node Updating translation committishes..
 @end ignore
 
-@c \version "2.17.20"
+@c \version "2.19.2"
 
 @node Trucar la salida
 @chapter Trucar la salida
@@ -3353,12 +3353,12 @@ choca con las ligaduras:
 {
   \time 4/2
   <<
-    { c'1 ~ c'2. e'8 f' }
+    { c'1 ~ 2. e'8 f' }
     \\
     { e''8 e'' e'' e''  e'' e'' e'' e''  f''2 g'' }
   >>
   <<
-    { c'1 ~ c'2. e'8 f' }
+    { c'1 ~ 2. e'8 f' }
     \\
     { e''8 e'' e'' e''  e'' e'' e'' e''  f''2 g'' }
   >>
@@ -3377,7 +3377,7 @@ central hasta, digamos, 1 espacio:
 {
   \time 4/2
   <<
-    { c'1 ~ c'2. e'8 f' }
+    { c'1 ~ 2. e'8 f' }
     \\
     {
       \override Beam.positions = #'(-1 . -1)
@@ -3385,7 +3385,7 @@ central hasta, digamos, 1 espacio:
     }
   >>
   <<
-    { c'1 ~ c'2. e'8 f' }
+    { c'1 ~ 2. e'8 f' }
     \\
     { e''8 e'' e'' e''  e'' e'' e'' e''  f''2 g'' }
   >>
@@ -3579,7 +3579,7 @@ rhMusic = \relative c'' {
       { c,8 d fis bes a }  % continuation of main voice
       \new Voice {
         \voiceTwo
-        c,8~ c2
+        c,8~ 2
       }
       \new Voice {
         \voiceThree
@@ -3637,7 +3637,7 @@ rhMusic = \relative c'' {
       { c,8 d fis bes a }  % continuation of main voice
       \new Voice {
         \voiceTwo
-        c,8~ c2
+        c,8~ 2
       }
       \new Voice {
         \voiceThree
@@ -3713,7 +3713,7 @@ rhMusic = \relative c'' {
       { c,8 d fis bes a }  % continuation of main voice
       \new Voice {
         \voiceTwo
-        c,8~ c2
+        c,8~ 2
       }
       \new Voice {
         \voiceThree
@@ -3796,7 +3796,7 @@ rhMusic = \relative c'' {
       { c,8 d fis bes a }  % continuation of main voice
       \new Voice {
         \voiceTwo
-        c,8~ c2
+        c,8~ 2
       }
       \new Voice {
         \voiceThree
@@ -4035,7 +4035,7 @@ pueden conectar mediante ligaduras de unión dos notas que estén en la
 misma voz.  Usando dos voces, con las notas ligadas en una de ellas:
 
 @lilypond[quote,fragment,relative=2]
-<< { b8~ b\noBeam } \\ { b8[ g] } >>
+<< { b8~ 8\noBeam } \\ { b8[ g] } >>
 @end lilypond
 
 @noindent
@@ -4049,7 +4049,7 @@ de que la ligadura se cruza entre las voces:
 <<
   {
     \tweak Stem.transparent ##t
-    b8~ b\noBeam
+    b8~ 8\noBeam
   }
 \\
   { b8[ g] }
@@ -4065,7 +4065,7 @@ valor de longitud @code{length} a @code{8},
   {
     \tweak Stem.transparent ##t
     \tweak Stem.length #8
-    b8~ b\noBeam
+    b8~ 8\noBeam
   }
 \\
   { b8[ g] }
@@ -4089,7 +4089,7 @@ volver a escribir el ejemplo anterior como
     \single \hide Stem
     \single \hide Flag
     \tweak Stem.length #8
-    b8~ b\noBeam
+    b8~ 8\noBeam
   }
 \\
   { b8[ g] }
index 502355754a6dec2011b97e8d3631d34caf2e46ee..e70bbd7eac5ae41c9e3793c82070fa1d036e6f9d 100644 (file)
@@ -22,7 +22,7 @@ lector está familiarizado con el material que hay en
 
 @c `Notation Reference' was born 1999-10-11 with git commit 940dda0...
 @macro copyrightDeclare
-Copyright @copyright{} 1999--2012 por los autores.
+Copyright @copyright{} 1999--2014 por los autores.
 @end macro
 
 
index 040403915e0d1f31ea08de123ab89f8c5ff97c09..d872f33819f09f295f8618322017eed9414dde3c 100644 (file)
@@ -8,7 +8,7 @@ Translation of GIT committish: a43fe59b0205af99f84532935b103d0c064b4526
     Guide, node Updating translation committishes..
 @end ignore
 
-@c \version "2.17.30"
+@c \version "2.19.7"
 
 @node Cambiar los valores por omisión
 @chapter Cambiar los valores por omisión
@@ -1959,7 +1959,7 @@ carácter almohadilla,@tie{}@code{#}.
 
 El nombre de las propiedades de contexto suele ir en minúsculas con
 mayúscula en medio.  Controlan sobre todo la traducción de la música a
-la notación, p.ej. @code{localKeySignature} (para determinar si hay
+la notación, p.ej. @code{localAlterations} (para determinar si hay
 que impriir alteraciones o no), o @code{measurePosition} (para
 determinar cuándo hay que imprimir una línea divisoria).  El valor de
 las propiedades de contexto puede modifcarse con el tiempo durante la
@@ -2629,7 +2629,7 @@ individualmente con una declaración anidada.
 
 @warning{Las declaraciones anidadas no funcionan para las listas-A de
 propiedades de contexto (como @code{beamExceptions},
-@code{keySignature}, @code{timeSignatureSettings}, etc.).  Estas
+@code{keyAlterations}, @code{timeSignatureSettings}, etc.).  Estas
 propiedades sólo se pueden modificar redefiniéndolas completamente
 como listas-A.}
 
@@ -4346,7 +4346,7 @@ resulta óptima, y @code{\tieDown} no es la solución.
 
 @lilypond[verbatim,quote,relative=1]
 <<
-  { e1~ e }
+  { e1~ 1 }
 \\
   { r4 <g c,> <g c,> <g c,> }
 >>
@@ -4393,7 +4393,7 @@ mitad de un espacio de pentagrama:
 <<
   {
     \shape #'((0 . 0.5) (0 . 0.5) (0 . 0.5) (0 . 0.5)) Tie
-    e1~ e
+    e1~ 1
   }
 \\
   { r4 <g c,> <g c,> <g c,> }
index 1a5699dd5dfd64ce8788a208d183aaf2cc8c9d0a..27ef24f0b2f7904043c25a85e270c7e029bfed9e 100644 (file)
@@ -8,7 +8,7 @@
     Guide, node Updating translation committishes..
 @end ignore
 
-@c \version "2.17.30"
+@c \version "2.19.2"
 
 @node Instrumentos de cuerda con trastes
 @section Instrumentos de cuerda con trastes
@@ -195,7 +195,7 @@ symbols = {
   c4-.^"Allegro" d( e)
   f4-.\f g a^\fermata
   \mark \default
-  c8_.\<\( c16 c~ c2\!
+  c8_.\<\( c16 c~ 2\!
   c'2.\prall\)
 }
 
@@ -221,7 +221,7 @@ symbols = {
   c4-.^"Allegro" d( e)
   f4-.\f g a^\fermata
   \mark \default
-  c8_.\<\( c16 c~ c2\!
+  c8_.\<\( c16 c~ 2\!
   c'2.\prall\)
 }
 
@@ -290,7 +290,7 @@ es tan común que está disponible como @code{\tabChordRepeats}.
 
 @lilypond[quote,verbatim]
 guitar = \relative c' {
-  r8 <gis-2 cis-3 b-0>~ q4 q8~ q q4
+  r8 <gis-2 cis-3 b-0>~ q4 q8~ 8 q4
 }
 
 \new StaffGroup <<
@@ -312,7 +312,7 @@ una repetición.
 ties = \relative c' {
   \repeat volta 2 {
     e2. f4~
-    f2 g2~
+    2 g2~
   }
   \alternative {
      { g4 f2. }
@@ -352,7 +352,7 @@ de imprimir los números de traste entre paréntesis:
 ties = \relative c' {
   \repeat volta 2 {
     e2. f4~
-    f2 g2~ }
+    2 g2~ }
   \alternative {
     { g4 f2. }
     { g4\repeatTie c,2. }
index 8d44e209eb8867ac78f51f93139e1ad08d3120d5..1a8d64e760bd224249a45afae7d5ae30197342d9 100644 (file)
@@ -8,7 +8,7 @@
     Guide, node Updating translation committishes..
 @end ignore
 
-@c \version "2.17.6"
+@c \version "2.19.2"
 
 @node Entrada y salida generales
 @chapter Entrada y salida generales
@@ -2543,7 +2543,7 @@ partitura:
   }
   \addlyrics { O \markup { \concat { Ph \char ##x0153 be! } } }
 }
-\markup { "Copyright 2008--2012" \char ##x00A9 }
+\markup { "Copyright 2008--2014" \char ##x00A9 }
 @end lilypond
 
 @cindex copyright, símbolo de
@@ -3194,8 +3194,8 @@ volumen general MIDI está limitado al intervalo desde 0.2 hasta
       \set Staff.midiInstrument = #"flute"
       \new Voice \relative c''' {
         r2 g\mp g fis~
-        fis4 g8 fis e2~
-        e4 d8 cis d2
+        4 g8 fis e2~
+        4 d8 cis d2
       }
     }
     \new Staff {
@@ -3244,8 +3244,8 @@ de la flauta.
       \set Staff.midiMaximumVolume = #0.9
       \new Voice \relative c''' {
         r2 g\mp g fis~
-        fis4 g8 fis e2~
-        e4 d8 cis d2
+        4 g8 fis e2~
+        4 d8 cis d2
       }
     }
     \new Staff {
@@ -3319,8 +3319,8 @@ anterior.
       \set Staff.midiInstrument = #"flute"
       \new Voice \relative c''' {
         r2 g\mp g fis~
-        fis4 g8 fis e2~
-        e4 d8 cis d2
+        4 g8 fis e2~
+        4 d8 cis d2
       }
     }
     \new Staff {
index 45be96ecd9458262b4097ad6d50887b2ed2d2ccd..c83c4a4c934325eee52fdbe662b7db4213965100 100644 (file)
@@ -8,7 +8,7 @@
     Guide, node Updating translation committishes..
 @end ignore
 
-@c \version "2.17.30"
+@c \version "2.19.2"
 
 @node Percusión
 @section Percusión
@@ -527,7 +527,7 @@ bellstaff = {
   \drummode {
     \time 2/4
     rb8 rb cb cb16 rb-> ~ |
-    rb16 rb8 rb16 cb8 cb |
+    16 rb8 rb16 cb8 cb |
   }
 }
 @end lilypond
index da52953fd269f06245c27dab651aa077f50de8f9..86c17e91e8a00e895a0bc209fa8bd7acd1b5605e 100644 (file)
@@ -7,7 +7,7 @@
     Guide, node Updating translation committishes..
 @end ignore
 
-@c \version "2.17.18"
+@c \version "2.19.2"
 
 
 @node Alturas
@@ -412,7 +412,7 @@ Las alteraciones sobre notas unidas por ligadura sólo se imprimen al
 comienzo de un sistema:
 
 @lilypond[verbatim,quote,relative=2,ragged-right]
-cis1~ cis~
+cis1~ 1~
 \break
 cis
 @end lilypond
@@ -3102,8 +3102,8 @@ pero con el ritmo especificado.  Estas cabezas de nota se crean así:
   e8 e g a a16( bes) a8 g
   \improvisationOn
   e8 ~
-  e2 ~ e8 f4 f8 ~
-  f2
+  2 ~ 8 f4 f8 ~
+  2
   \improvisationOff
   a16( bes) a8 g e
 }
index 8bddbed0ab11b8718a828355d5bbeaa9b9e98762..c13b47241b18d7777595f8a983bfdae563474e81 100644 (file)
@@ -547,11 +547,6 @@ voltaAdLib = \markup { 1. 2. 3... \text \italic { ad lib. } }
 @end lilypond
 
 
-@snippets
-
-@lilypondfile[verbatim,quote,texidoc,doctitle]
-{printing-a-repeat-sign-at-the-beginning-of-a-piece.ly}
-
 @seealso
 Referencia de la notación:
 @ref{Barras de compás},
index 9b1454e5845706b4ffc4964d8b15db4a624a67c8..3401297548c0f805cd91113b66500c99332ce385 100644 (file)
@@ -7,7 +7,7 @@
     Guide, node Updating translation committishes..
 @end ignore
 
-@c \version "2.17.30"
+@c \version "2.19.2"
 
 @node Duraciones
 @section Duraciones
@@ -439,7 +439,7 @@ notas que se quieren unir.  Esto indica que la nota se une a la
 siguiente, que debe tener la misma altura.
 
 @lilypond[quote,verbatim,relative=2]
-a2~ a4~ a16 r r8
+a2~ 4~ 16 r r8
 @end lilypond
 
 Se usan ligaduras de unión bien cuando la nota atraviesa la barra de
@@ -450,8 +450,8 @@ subdivisiones del compás de mayor duración:
 @c KEEP LY
 @lilypond[verbatim,quote]
 \relative c' {
-  r8^"sí" c~ c2 r4 |
-  r8^"no" c2~ c8 r4
+  r8^"sí" c~ 2 r4 |
+  r8^"no" c2~ 8 r4
 }
 @end lilypond
 
@@ -539,26 +539,26 @@ punteadas o una combinación de continuas y discontinuas.
 
 @lilypond[quote, verbatim, relative=1]
 \tieDotted
-c2~ c
+c2~ 2
 \tieDashed
-c2~ c
+c2~ 2
 \tieHalfDashed
-c2~ c
+c2~ 2
 \tieHalfSolid
-c2~ c
+c2~ 2
 \tieSolid
-c2~ c
+c2~ 2
 @end lilypond
 
 Se pueden especificar patrones de discontinuidad personalizados:
 
 @lilypond[quote, verbatim, relative=1]
 \tieDashPattern #0.3 #0.75
-c2~ c
+c2~ 2
 \tieDashPattern #0.7 #1.5
-c2~ c
+c2~ 2
 \tieSolid
-c2~ c
+c2~ 2
 @end lilypond
 
 Las definiciones de patrones de discontinuidad para las ligaduras de
index 3bd67079ad679234bba55ebc1a5079f209a1f03f..f156efd7e21f03ec631452c639dc32b0df04c458 100644 (file)
@@ -7,7 +7,7 @@
     Guide, node Updating translation committishes..
 @end ignore
 
-@c \version "2.17.28"
+@c \version "2.19.2"
 
 @c Translation status: post-GDP
 
@@ -412,7 +412,7 @@ siguiente:
   \new Voice = "first"
     { \voiceOne r8 r16 g e8. f16 g8[ c,] f e16 d }
   \new Voice= "second"
-    { \voiceTwo d16 c d8~ d16 b c8~ c16 b c8~ c16 b8. }
+    { \voiceTwo d16 c d8~ 16 b c8~ 16 b c8~ 16 b8. }
 >>
 @end lilypond
 
@@ -491,7 +491,7 @@ El primer ejemplo podría haberse tipografiado de la manera siguiente:
 <<
   { r8 r16 g e8. f16 g8[ c,] f e16 d }
   \\
-  { d16 c d8~ d16 b c8~ c16 b c8~ c16 b8. }
+  { d16 c d8~ 16 b c8~ 16 b c8~ 16 b8. }
 >>
 @end lilypond
 
@@ -1157,12 +1157,12 @@ los compases deben tener la misma longitud.}
 \parallelMusic #'(voiceA voiceB voiceC) {
   % Bar 1
   r8 g'16 c'' e'' g' c'' e'' r8 g'16 c'' e'' g' c'' e'' |
-  r16 e'8.~   e'4            r16 e'8.~   e'4            |
+  r16 e'8.~   4              r16 e'8.~   4              |
   c'2                        c'2                        |
 
   % Bar 2
   r8 a'16 d'' f'' a' d'' f'' r8 a'16 d'' f'' a' d'' f'' |
-  r16 d'8.~   d'4            r16 d'8.~   d'4            |
+  r16 d'8.~   4              r16 d'8.~   4              |
   c'2                        c'2                        |
 
 }
@@ -1183,12 +1183,12 @@ ignoran a las notas que hay en @code{vozB}.
 \parallelMusic #'(voiceA voiceB voiceC) {
   % Bar 1
   r8 g16 c e g, c e r8 g,16 c e g, c e  |
-  r16 e8.~ e4       r16 e8.~  e4        |
+  r16 e8.~ 4        r16 e8.~  4         |
   c2                c                   |
 
   % Bar 2
   r8 a,16 d f a, d f r8 a,16 d f a, d f |
-  r16 d8.~  d4       r16 d8.~  d4       |
+  r16 d8.~  4        r16 d8.~  4        |
   c2                 c                  |
 
  }
index c642b6e3892f09ce988d3248c4108d2c58f54efa..deb2c4b0c5ebfb5b4b9f68062f770179240f1265 100644 (file)
@@ -7,7 +7,7 @@
     Guide, node Updating translation committishes..
 @end ignore
 
-@c \version "2.17.30"
+@c \version "2.19.2"
 
 @node Notación de los pentagramas
 @section Notación de los pentagramas
@@ -1061,7 +1061,7 @@ musical para declarar el cambio de instrumento:
   R1*16
   \instrumentSwitch "contrabassoon"
   c,,2 g \break
-  c,1 ~ | c1
+  c,1 ~ | 1
 }
 @end lilypond
 
index b03d0e0aff25d39f6dee6b6503be5126b91c1ce3..02082914d769ea2745ce40d64f3ff6aad32eb702 100644 (file)
@@ -8,7 +8,7 @@
     Guide, node Updating translation committishes..
 @end ignore
 
-@c \version "2.17.30"
+@c \version "2.19.2"
 
 @node Música vocal
 @section Música vocal
@@ -683,8 +683,8 @@ ligadura de unión:
   \new Voice = "melody" {
     \time 3/4
     f4 g2 ~ |
-    g4 e2 ~ |
-    e8
+    4 e2 ~ |
+    8
   }
   \new Lyrics \lyricsto "melody" {
     Ky -- ri -- e __
@@ -785,7 +785,7 @@ de @code{melismaBusyProperties}:
     \time 3/4
     \set melismaBusyProperties = #'()
     c4 d ( e )
-    g8 [ f ] f4 ~ f
+    g8 [ f ] f4 ~ 4
   }
   \new Lyrics \lyricsto "melody" {
     Ky -- ri -- e e -- le -- i -- son
@@ -814,7 +814,7 @@ dentro del melisma:
     \time 3/4
     \set melismaBusyProperties = #'()
     c4 d ( e )
-    g8 [ f ] ~ f4 ~ f
+    g8 [ f ] ~ 4 ~ f
   }
   \new Lyrics \lyricsto "melody" {
     Ky -- ri -- _ e __ _ _ _
index 51674e2cf1ee1ab0e71d2566f1805ba50a8c94fa..2a2d0b9866653ca45a3f9d7d39f0fbc02882cd8d 100644 (file)
@@ -14,11 +14,11 @@ search for a while and have a redirection from "v2.15" to "v2.17".
 <form action="http://google.com/search"
       method="get"
       name="search"
-      onSubmit="search.q.value='site:lilypond.org/doc/v2.17 '
+      onSubmit="search.q.value='site:lilypond.org/doc/v2.19 '
                + search.brute_query.value"
-      onMouseMove="search.q.value='site:lilypond.org/doc/v2.17 '
+      onMouseMove="search.q.value='site:lilypond.org/doc/v2.19 '
                   + search.brute_query.value"
-      onKeyUp="search.q.value='site:lilypond.org/doc/v2.17 '
+      onKeyUp="search.q.value='site:lilypond.org/doc/v2.19 '
               + search.brute_query.value">
   <input type="hidden" name="btnG" value="Búsqueda en Google">
   <input type="text" name="brute_query" onfocus="this.value=''" value="Buscar">
index e967ffcd6f8e686fa0381fe97a38784de9acb934..fc7af74960d23e656821001496ffc8e10715d7c7 100644 (file)
@@ -23,7 +23,7 @@ prácticas} para una utilización eficiente.
 
 @c `Usage' was born 1999-10-10 with git commit c82c30c...
 @macro copyrightDeclare
-Copyright @copyright{} 1999--2012 por los autores.
+Copyright @copyright{} 1999--2014 por los autores.
 @end macro
 
 @set FDL
index 0a7d72b1b9d9a56c0eeff6158ae39923675da84b..043631e7990e6c57a394d56407b5f2c7e3196e86 100644 (file)
@@ -15,7 +15,7 @@
 
 @c `Web' was imported 2009-08-05 with git commit b938d71...
 @c @macro copyrightDeclare
-@c Copyright @copyright{} 2009--2012 by the authors.
+@c Copyright @copyright{} 2009--2014 by the authors.
 @c @end macro
 
 @set FDL
@@ -35,7 +35,7 @@
 @c Translators: Francisco Vila
 
 @copying
-Copyright @copyright{} 2009--2012 por los autores.
+Copyright @copyright{} 2009--2014 por los autores.
 
 @c next line is necessary for broken pre-4.13 texinfo's
 @c install-info, so leave it there until we officially
index 66d5b5be1ba31a0667ee4022436546b99846493a..2bd95e7571f6c9c339c30c55983ada3b59c6a2aa 100644 (file)
@@ -20,7 +20,7 @@ LilyPond version @version{}.
 
 @c `Essay' was born 2002-06-03 with git commit e38f5fc...
 @macro copyrightDeclare
-Copyright @copyright{} 2002--2012 by the authors.
+Copyright @copyright{} 2002--2014 by the authors.
 @end macro
 
 @set FDL
index 16f3518d56192b8e8f3b916c3473bab2b37d2df9..5040f2771b64d67fffad9e73b2fa46626789700a 100644 (file)
@@ -8,7 +8,7 @@
     Guide, node Updating translation committishes..
 @end ignore
 
-@c \version "2.17.30"
+@c \version "2.19.2"
 
 @node Music engraving
 @chapter Music engraving
@@ -860,7 +860,7 @@ collide = \once \override NoteColumn.force-hshift = #0
         \new Voice { \voiceTwo bes \collide bes }
       >>
     }
-    \new Lyrics \lyricsto "sample" \lyricmode { "good " " bad" }
+    \new Lyrics \lyricsto "sample" { "good " " bad" }
   >>
 }
 @end lilypond
@@ -1664,9 +1664,9 @@ partI = \relative c' {
   fis8 d' ees g, fis4 g
   r8 a16 bes c8 bes16 a d8 r r4
   r2 r8 d16 ees f8 ees16 d
-  ees4 ~ ees16 d c bes a4 r8 ees'16 d
+  ees4 ~ 16 d c bes a4 r8 ees'16 d
   c8 d16 ees d8 e16 fis g8 fis16 g a4 ~
-  a8 d, g f ees d c bes
+  8 d, g f ees d c bes
   a2 g\fermata \bar "|."
 }
 
@@ -1675,7 +1675,7 @@ partII = \relative c' {
   d4 r4 r8 d'16 c bes8 c16 d
   ees8 d c ees a, r r4
   r8 fis16 g a8 g16 fis g2 ~
-  g2 r8 d' ees g,
+  2 r8 d' ees g,
   fis4 g r8 a16 bes c8 bes16 a
   bes4. <g b>8 <a c> r <d, g> r
   <ees g>4 <d fis> d2
@@ -1683,7 +1683,7 @@ partII = \relative c' {
 partIII = \relative c' {
   \voiceOne
   r2 r8 d ees g, fis4 g r8 a16 bes c8 bes16 a
-  bes2 ~ bes8 b16 a g8 a16 b
+  bes2 ~ 8 b16 a g8 a16 b
   c4 r r2
   R1
   r8 d ees g, fis4 g
@@ -1694,7 +1694,7 @@ partIV = \relative c {
   d4 r r2
   r8 d ees g, fis4 a
   d,8 d'16 c bes8 c16 d ees2 ~
-  ees8 ees16 d c8 d16 ees fis,8 a16 g fis8 g16 a
+  8 ees16 d c8 d16 ees fis,8 a16 g fis8 g16 a
   d,8 d'16 c bes8 c16 d ees8 c a fis'
   g f ees d c bes a g
   c a d d, g2\fermata
index 6de5dbb4eaa1c8aa2095059fc6016a79f65d471d..3a65c0d30b9e31fea905b9162cf639883b427a68 100644 (file)
@@ -20,7 +20,7 @@ LilyPond version @version{}.
 
 @c `Extending' was born 2003-04-23 with git commit c08f6e8...
 @macro copyrightDeclare
-Copyright @copyright{} 2003--2012 by the authors.
+Copyright @copyright{} 2003--2014 by the authors.
 @end macro
 
 @set FDL
index e580f29b63878b555603d9ac128a1540a8c1189f..3494a5fdd1fff9747d7b6cea26772bb5b7c66937 100644 (file)
@@ -8,7 +8,7 @@
     Guide, node Updating translation committishes..
 @end ignore
 
-@c \version "2.17.6"
+@c \version "2.19.2"
 
 @node Interfaces for programmers
 @chapter Interfaces for programmers
@@ -25,7 +25,6 @@ not familiar with Scheme, you may wish to read our
 * Markup functions::
 * Contexts for programmers::
 * Callback functions::
-* Inline Scheme code::
 * Difficult tweaks::
 @end menu
 
@@ -179,13 +178,7 @@ strings (with or without quotes), numbers, full markups and markup
 lists, score, book, bookpart, context definition and output definition
 blocks.
 
-For some kinds of expression (like most music not enclosed in braces)
-LilyPond needs to look further than the expression itself in order to
-determine its end.  If such an expression were considered for an
-optional argument by evaluating its predicate, LilyPond would not be
-able to @q{backup} when it decides the expression does not fit the
-parameter.  So some forms of music might need to be enclosed in braces
-to make them acceptable in some circumstances.  Some other
+Some
 ambiguities LilyPond sorts out by checking with predicate
 functions: is @samp{-3} a fingering postevent or a negative number?  Is
 @code{"a" 4} in lyric mode a string followed by a number, or a lyric
@@ -196,8 +189,8 @@ lookahead.
 
 For example, a predicate accepting both music expressions and
 pitches will consider @code{c''} to be a pitch rather than a music
-expression.  Immediately following durations or postevents might
-not work with that interpretation.  So it's best to avoid overly
+expression.  Immediately following durations or postevents will
+change that interpretation.  It's best to avoid overly
 permissive predicates like @code{scheme?} when the application
 rather calls for more specific argument types.
 
@@ -1310,8 +1303,10 @@ my-callback = #(lambda (grob)
                  (grob-interpret-markup grob (markup "foo")))
 @end example
 
-@node Inline Scheme code
-@section Inline Scheme code
+@ignore
+
+@n ode Inline Scheme code
+@s ection Inline Scheme code
 
 TODO: after this section had been written, LilyPond has improved
 to the point that finding a @emph{simple} example where one would
@@ -1358,6 +1353,7 @@ font size is prepended to the property list with the
 written back with @code{set!}.  The last element of the
 @code{let} block is the return value, @code{m} itself.
 
+@end ignore
 
 
 @node Difficult tweaks
@@ -1422,7 +1418,7 @@ of the broken tie is repositioned.
   \override Tie.after-line-breaking =
   #my-callback
   c1 ~ \break
-  c2 ~ c
+  c2 ~ 2
 }
 @end lilypond
 
index bad8d261b214cd4e6fc1aff56dafbed1af3b6938..7503306b1fa56f3e8c16b0f6d25b5f5e8d8f28a6 100644 (file)
@@ -1134,23 +1134,30 @@ will display
 
 By default, LilyPond will print these messages to the console along
 with all the other messages.  To split up these messages and save
-the results of @code{\display@{STUFF@}}, redirect the output to
-a file.
+the results of @code{\display@{STUFF@}}, you can specify an optional
+output port to use:
 
 @example
-lilypond file.ly >display.txt
+@{
+  \displayMusic #(open-output-file "display.txt") @{ c'4\f @}
+@}
 @end example
 
-With a combined bit of Lilypond and Scheme magic, you can actually
-let Lilypond direct just this output to a file of its own:
-
+This will overwrite a previous output file whenever it is called; if you
+need to write more than one expression, you would use a variable for
+your port and reuse it:
 @example
 @{
-  #(with-output-to-file "display.txt"
-      (lambda () #@{ \displayMusic @{ c'4\f @} #@}))
+  port = #(open-output-file "display.txt")
+  \displayMusic \port @{ c'4\f @}
+  \displayMusic \port @{ d'4 @}
+  #(close-output-port port)
 @}
 @end example
 
+Guile's manual describes ports in detail.  Closing the port is actually
+only necessary if you need to read the file before Lilypond finishes; in
+the first example, we did not bother to do so.
 
 A bit of reformatting makes the above information easier to read:
 
index 8d57136cb67263b9c9cdfd827cda66fcabe84fa7..e74dde1f5487437bb60b81b5154c2a9ac35ac169 100644 (file)
@@ -23,7 +23,7 @@ par ordinateur à l'aide de LilyPond version @version{}.
 
 @c `Essay' was born 2002-06-03 with git commit e38f5fc...
 @macro copyrightDeclare
-Copyright @copyright{} 2002--2012 par les auteurs.
+Copyright @copyright{} 2002--2014 par les auteurs.
 @end macro
 
 @set FDL
index 79e8815656c2e144ad7d3ab1ae5a281cfb625423..43243a89bdd1cfe0b044460364ac23ef9f65eb67 100644 (file)
@@ -8,7 +8,7 @@
     Guide, node Updating translation committishes..
 @end ignore
 
-@c \version "2.17.30"
+@c \version "2.19.2"
 
 @c Translators: Jean-Charles Malahieude, John Mandereau, Gauvain Pocentek
 
@@ -934,7 +934,7 @@ collide = \once \override NoteColumn.force-hshift = #0
         \new Voice { \voiceTwo bes \collide bes }
       >>
     }
-    \new Lyrics \lyricsto "sample" \lyricmode { "bien " " mauvais" }
+    \new Lyrics \lyricsto "sample" { "bien " " mauvais" }
   >>
 }
 @end lilypond
@@ -1776,9 +1776,9 @@ partI = \relative c' {
   fis8 d' ees g, fis4 g
   r8 a16 bes c8 bes16 a d8 r r4
   r2 r8 d16 ees f8 ees16 d
-  ees4 ~ ees16 d c bes a4 r8 ees'16 d
+  ees4 ~ 16 d c bes a4 r8 ees'16 d
   c8 d16 ees d8 e16 fis g8 fis16 g a4 ~
-  a8 d, g f ees d c bes
+  8 d, g f ees d c bes
   a2 g\fermata \bar "|."
 }
 
@@ -1787,7 +1787,7 @@ partII = \relative c' {
   d4 r4 r8 d'16 c bes8 c16 d
   ees8 d c ees a, r r4
   r8 fis16 g a8 g16 fis g2 ~
-  g2 r8 d' ees g,
+  2 r8 d' ees g,
   fis4 g r8 a16 bes c8 bes16 a
   bes4. <g b>8 <a c> r <d, g> r
   <ees g>4 <d fis> d2
@@ -1795,7 +1795,7 @@ partII = \relative c' {
 partIII = \relative c' {
   \voiceOne
   r2 r8 d ees g, fis4 g r8 a16 bes c8 bes16 a
-  bes2 ~ bes8 b16 a g8 a16 b
+  bes2 ~ 8 b16 a g8 a16 b
   c4 r r2
   R1
   r8 d ees g, fis4 g
@@ -1806,7 +1806,7 @@ partIV = \relative c {
   d4 r r2
   r8 d ees g, fis4 a
   d,8 d'16 c bes8 c16 d ees2 ~
-  ees8 ees16 d c8 d16 ees fis,8 a16 g fis8 g16 a
+  8 ees16 d c8 d16 ees fis,8 a16 g fis8 g16 a
   d,8 d'16 c bes8 c16 d ees8 c a fis'
   g f ees d c bes a g
   c a d d, g2\fermata
index 221ce450bda26bc44ba9eabdbe78a1d22f8c9c31..aaa16e70f924f31c20025701c258140a223ebcdf 100644 (file)
@@ -22,7 +22,7 @@ fonctionnalités de LilyPond@tie{}version @version{}.
 
 @c `Extending' was born 2003-04-23 with git commit c08f6e8...
 @macro copyrightDeclare
-Copyright @copyright{} 2003--2012 by par les auteurs.
+Copyright @copyright{} 2003--2014 by par les auteurs.
 @end macro
 
 @set FDL
index c19026199b4e75c9ac84501c2c02fd00b95a0027..32d07e53ef5e78bd296b52c3de9f80d2bde2421d 100644 (file)
@@ -8,7 +8,7 @@
     Guide, node Updating translation committishes..
 @end ignore
 
-@c \version "2.17.6"
+@c \version "2.19.2"
 
 @c Translators: Valentin Villenave, Jean-Charles Malahieude
 @c Translation checkers: Gilles Thibault
@@ -1565,7 +1565,7 @@ rehaussé.
   \override Tie.after-line-breaking =
   #my-callback
   c1 ~ \break
-  c2 ~ c
+  c2 ~ 2
 }
 @end lilypond
 
index 248ab04fe4f16b305439c3a3e2bbd32b568b8cd1..4ae8bada5e4a58054a07f54cbf7391878c466a58 100644 (file)
@@ -20,7 +20,7 @@ Ce document constitue le manuel d'initiation à GNU LilyPond
 
 @c `Learning Manual' was born 1999-10-10 with git commit b9abaac...
 @macro copyrightDeclare
-Copyright @copyright{} 1999--2012 par les auteurs.
+Copyright @copyright{} 1999--2014 par les auteurs.
 @end macro
 
 @set FDL
index 7ce9e53cc1fa00a1bd9c50be01a44c074d800d1d..46548572f025f97c2a27939bb48d404832087c04 100644 (file)
@@ -26,7 +26,7 @@ Tutorial guidelines:  (different from policy.txt!)
 
 @end ignore
 
-@c \version "2.17.28"
+@c \version "2.19.2"
 
 @c Translators: Nicolas Grandclaude, Ludovic Sardain, Gauvain Pocentek
 @c Translation checkers: Jean-Charles Malahieude, Valentin Villenave, John Mandereau
@@ -313,7 +313,7 @@ liaison de tenue --, on ajoute un tilde @code{~} à la première note
 liée.
 
 @lilypond[verbatim,quote,relative=2]
-g4~ g c2~ | c4 ~ c8 a8 ~ a2 |
+g4~ 4 c2~ | 4 ~ 8 a8 ~ 2 |
 @end lilypond
 
 
@@ -381,7 +381,7 @@ le @emph{legato} indique une articulation de plusieurs notes,
 enchâssées dans un @emph{legato} ou un phrasé.
 
 @lilypond[verbatim,quote,relative=2]
-c4~( c8 d~ d4 e)
+c4~( c8 d~ 4 e)
 @end lilypond
 
 @seealso
@@ -1289,7 +1289,7 @@ la syllabe @emph{al} est chantée sur la même note que @emph{go}.
     \clef bass
     \key c \major
     \time 6/8
-    c4.~ c8 d b | c8([ d]) b c d b | c8
+    c4.~ 8 d b | c8([ d]) b c d b | c8
   }
   \addlyrics {
     Lar -- go_al fac -- | to -- tum del -- la cit -- | tà
@@ -1319,7 +1319,7 @@ L'exemple suivant est extrait de @emph{Judas Macchabée} de Händel.
     \key f \major
     \time 6/8
     \partial 8
-    c8 | c8([ bes]) a a([ g]) f | f'4. b, | c4.~ c4
+    c8 | c8([ bes]) a a([ g]) f | f'4. b, | c4.~ 4
   }
   \addlyrics {
     Let | flee -- cy flocks the | hills a -- | dorn, __
index 2c5d287a5a0eadfe20b2e7eb26d0c42c0474cbe9..b838285a19382e4883ddbbb7fcbf8d652269f3f6 100644 (file)
@@ -8,7 +8,7 @@
     Guide, node Updating translation committishes..
 @end ignore
 
-@c \version "2.17.29"
+@c \version "2.19.2"
 
 @c Translators: Valentin Villenave, Jean-Charles Malahieude
 @c Translation checkers: John Mandereau
@@ -710,7 +710,7 @@ automatiquement.
   c16 d e f
   %    Voice "1"     Voice "2"                Voice "3"
   << { g4 f e } \\ { r8 e4 d c8~ } >> |
-  << { d2 e }   \\ { c8 b16 a b8 g~ g2 } \\ { s4 b c2 } >> |
+  << { d2 e }   \\ { c8 b16 a b8 g~ 2 } \\ { s4 b c2 } >> |
 }
 @end lilypond
 
@@ -749,7 +749,7 @@ liaison de prolongation entre deux constructions.
     { d2 e }
   \\
      % Voice 2 continues
-    { c8 b16 a b8 g~ g2 }
+    { c8 b16 a b8 g~ 2 }
   \\
     {
       \voiceThreeStyle
@@ -1032,25 +1032,25 @@ annotations, liaisons de prolongation ou de phrasé, et sur les nuances.
 @lilypond[quote,ragged-right,verbatim]
 \relative c' {
   % Default behavior or behavior after \oneVoice
-  c4 d8~ d e4( f | g4 a) b-> c |
+  c4 d8~ 8 e4( f | g4 a) b-> c |
 }
 @end lilypond
 
 @lilypond[quote,ragged-right,verbatim]
 \relative c' {
   \voiceOne
-  c4 d8~ d e4( f | g4 a) b-> c |
+  c4 d8~ 8 e4( f | g4 a) b-> c |
   \oneVoice
-  c,4 d8~ d e4( f | g4 a) b-> c |
+  c,4 d8~ 8 e4( f | g4 a) b-> c |
 }
 @end lilypond
 
 @lilypond[quote,ragged-right,verbatim]
 \relative c' {
   \voiceTwo
-  c4 d8~ d e4( f | g4 a) b-> c |
+  c4 d8~ 8 e4( f | g4 a) b-> c |
   \oneVoice
-  c,4 d8~ d e4( f | g4 a) b-> c |
+  c,4 d8~ 8 e4( f | g4 a) b-> c |
 }
 @end lilypond
 
@@ -1080,7 +1080,7 @@ liaison de phrasé à l'ensemble.
     \new Voice {
       % Set stems, etc., down
       \voiceTwo
-      r8 e4 d c8~ | c8 b16 a b8 g~ g2 |
+      r8 e4 d c8~ | 8 b16 a b8 g~ 2 |
     }
     % Initiate third voice
     \new Voice {
@@ -1110,7 +1110,7 @@ plus naturelle de saisir la musique :
       \voiceTwo
       r8 e4 d c8~ |
       <<
-        { c8 b16 a b8 g~ g2 | }
+        { c8 b16 a b8 g~ 2 | }
         \new Voice {
           \voiceThree
           s4 b c2 |
@@ -1141,7 +1141,7 @@ voix.
   \new Voice {
     % Set stems, etc, down
     \voiceTwo
-    s4 r8 e4 d c8 ~ | c8 b16 a b8 g ~ g2 |
+    s4 r8 e4 d c8 ~ | 8 b16 a b8 g ~ 2 |
   }
   % Initiate third voice
   \new Voice {
@@ -1289,7 +1289,7 @@ seront interprétées comme telles, et non comme de la musique.
 global = { \key f \major \time 6/8 \partial 8 }
 
 SopOneMusic = \relative c'' {
-  c8 | c8([ bes)] a a([ g)] f | f'4. b, | c4.~ c4
+  c8 | c8([ bes)] a a([ g)] f | f'4. b, | c4.~ 4
 }
 SopOneLyrics = \lyricmode {
   Let | flee -- cy flocks the | hills a -- dorn, __
@@ -2994,15 +2994,15 @@ ManualOneVoiceOneMusic = \relative g' {
   d2 c |
 }
 ManualOneVoiceTwoMusic = \relative c' {
-  ees16 d ees8~ ees16 f ees d c8 d~ d c~ |
-  c8 c4 b8 c8. g16 c b c d |
+  ees16 d ees8~ 16 f ees d c8 d~ d c~ |
+  8 c4 b8 c8. g16 c b c d |
 }
 ManualTwoMusic = \relative c' {
-  c16 b c8~ c16 b c g a8 g~ g16 g aes ees |
-  f16 ees f d g aes g f ees d ees8~ ees16 f ees d |
+  c16 b c8~ 16 b c g a8 g~ 16 g aes ees |
+  f16 ees f d g aes g f ees d ees8~ 16 f ees d |
 }
 PedalOrganMusic = \relative c {
-  r8 c16 d ees d ees8~ ees16 a, b g c b c8 |
+  r8 c16 d ees d ees8~ 16 a, b g c b c8 |
   r16 g ees f g f g8 c,2 |
 }
 
index 65a6c2223d68ba42d68e3916c6efda6592aa27f6..616c31fe4895a2dd38c4c291ed1afb7bb78a7057 100644 (file)
@@ -8,7 +8,7 @@
     Guide, node Updating translation committishes..
 @end ignore
 
-@c \version "2.17.20"
+@c \version "2.19.2"
 
 @c Translators: Valentin Villenave, Nicolas Klutchnikoff, Damien Heurtebise
 @c Translation checkers: Jean-Charles Malahieude, John Mandereau
@@ -3323,12 +3323,12 @@ ligature chevauchent les liaisons de tenue :
 {
   \time 4/2
   <<
-    { c'1 ~ c'2. e'8 f' }
+    { c'1 ~ 2. e'8 f' }
     \\
     { e''8 e'' e'' e''  e'' e'' e'' e''  f''2 g'' }
   >>
   <<
-    { c'1 ~ c'2. e'8 f' }
+    { c'1 ~ 2. e'8 f' }
     \\
     { e''8 e'' e'' e''  e'' e'' e'' e''  f''2 g'' }
   >>
@@ -3347,7 +3347,7 @@ au-dessous de la ligne médiane mais, disons, à 1 :
 {
   \time 4/2
   <<
-    { c'1 ~ c'2. e'8 f' }
+    { c'1 ~ 2. e'8 f' }
     \\
     {
       \override Beam.positions = #'(-1 . -1)
@@ -3355,7 +3355,7 @@ au-dessous de la ligne médiane mais, disons, à 1 :
     }
   >>
   <<
-    { c'1 ~ c'2. e'8 f' }
+    { c'1 ~ 2. e'8 f' }
     \\
     { e''8 e'' e'' e''  e'' e'' e'' e''  f''2 g'' }
   >>
@@ -3550,7 +3550,7 @@ rhMusic = \relative c'' {
       { c,8 d fis bes a }  % continuation of main voice
       \new Voice {
         \voiceTwo
-        c,8~ c2
+        c,8~ 2
       }
       \new Voice {
         \voiceThree
@@ -3610,7 +3610,7 @@ rhMusic = \relative c'' {
       { c,8 d fis bes a }  % continuation of main voice
       \new Voice {
         \voiceTwo
-        c,8~ c2
+        c,8~ 2
       }
       \new Voice {
         \voiceThree
@@ -3684,7 +3684,7 @@ rhMusic = \relative c'' {
       { c,8 d fis bes a }  % continuation of main voice
       \new Voice {
         \voiceTwo
-        c,8~ c2
+        c,8~ 2
       }
       \new Voice {
         \voiceThree
@@ -3767,7 +3767,7 @@ rhMusic = \relative c'' {
       { c,8 d fis bes a }  % continuation of main voice
       \new Voice {
         \voiceTwo
-        c,8~ c2
+        c,8~ 2
       }
       \new Voice {
         \voiceThree
@@ -4008,7 +4008,7 @@ peuvent être ainsi liées.  La solution consiste à utiliser deux voix,
 dont l'une avec les notes liées
 
 @lilypond[quote,fragment,relative=2]
-<< { b8~ b8\noBeam } \\ { b[ g8] } >>
+<< { b8~ 8\noBeam } \\ { b[ g8] } >>
 @end lilypond
 
 @noindent
@@ -4022,7 +4022,7 @@ on a alors l'impression que la liaison couvre les deux voix.
 <<
   {
     \tweak Flag.transparent ##t
-    b8~ b\noBeam
+    b8~ 8\noBeam
   }
 \\
   { b8[ g] }
@@ -4038,7 +4038,7 @@ réglant la longueur (@code{length}) sur @code{8},
   {
     \tweak Flag.transparent ##t
     \tweak Stem.length #8
-    b8~ b8\noBeam
+    b8~ 8\noBeam
   }
 \\
   { b[ g8] }
@@ -4063,7 +4063,7 @@ l'exemple précédent de cette manière :
     \single \hide Stem
     \single \hide Flag
     \tweak Stem.length #8
-    b8~ b\noBeam
+    b8~ 8\noBeam
   }
 \\
   { b8[ g] }
index f76b7c3bfd811ec903f9340104fa2738bcc0da4c..749936a9f1e3135c916692880509d7a01d73935f 100644 (file)
@@ -21,7 +21,7 @@ présenté dans le @rlearningnamed{Top, Manuel d'initiation}.
 
 @c `Notation Reference' was born 1999-10-11 with git commit 940dda0...
 @macro copyrightDeclare
-Copyright @copyright{} 1999--2012 par les auteurs.
+Copyright @copyright{} 1999--2014 par les auteurs.
 @end macro
 
 @set FDL
index f18c85a0ca615cd1ff9243e94e959908acf440a4..e866031266bdb225591789424995eb73164dc2fc 100644 (file)
@@ -8,7 +8,7 @@
     Guide, node Updating translation committishes..
 @end ignore
 
-@c \version "2.17.30"
+@c \version "2.19.7"
 
 @c Translators: Valentin Villenave, Jean-Charles Malahieude
 @c Translation checkers: Gilles Thibault
@@ -2099,7 +2099,7 @@ doit être précédée du caractère @code{#}.
 
 Les propriétés des contextes se libellent sous la forme
 @code{minusculeMajuscule}.  Leur rôle consiste principalement à traduire
-la musique en notation : par exemple, @code{localKeySignature}
+la musique en notation : par exemple, @code{localAlterations}
 déterminera quand imprimer une altération accidentelle, et
 @code{measurePosition} quand imprimer une barre de mesure.  La valeur
 des propriétés des contextes peuvent évoluer au fur et à mesure que l'on
@@ -2773,7 +2773,7 @@ valeur des clés individuellement par des déclarations imbriquées.
 
 @warning{Les déclarations imbriquées ne sont pas fonctionnelles dans le
 cas des listes associatives des propriétés de contexte -- telles
-@code{beamExceptions}, @code{keySignature},
+@code{beamExceptions}, @code{keyAlterations},
 @code{timeSignatureSettings}, etc.  Ces propriétés ne sont modifiables
 qu'au travers d'une complète redéfinition de leur liste associative.}
 
@@ -4465,7 +4465,7 @@ des plus heureuses, même en optant pour un @code{\tieDown}.
 
 @lilypond[verbatim,quote,relative=1]
 <<
-  { e1~ e }
+  { e1~ 1 }
 \\
   { r4 <g c,> <g c,> <g c,> }
 >>
@@ -4513,7 +4513,7 @@ de portée :
 <<
   {
     \shape #'((0 . 0.5) (0 . 0.5) (0 . 0.5) (0 . 0.5)) Tie
-    e1~ e
+    e1~ 1
   }
 \\
   { r4 <g c,> <g c,> <g c,> }
index d12922abcf1dd5da34f4b1217383ccfb6ec330d6..e8f891d7eceed3d6c022f7fb20d1ee8af6a646bc 100644 (file)
@@ -8,7 +8,7 @@
     Guide, node Updating translation committishes..
 @end ignore
 
-@c \version "2.17.30"
+@c \version "2.19.2"
 
 @c Translators: Matthieu Jacquot
 @c Translation checkers: Jean-Charles Malahieude
@@ -194,7 +194,7 @@ symbols = {
   c4-.^"Allegro" d( e)
   f4-.\f g a^\fermata
   \mark \default
-  c8_.\<\( c16 c ~ c2\!
+  c8_.\<\( c16 c ~ 2\!
   c'2.\prall\)
 }
 
@@ -220,7 +220,7 @@ symbols = {
   c4-.^"Allegro" d( e)
   f4-.\f g a^\fermata
   \mark \default
-  c8_.\<\( c16 c ~ c2\!
+  c8_.\<\( c16 c ~ 2\!
   c'2.\prall\)
 }
 
@@ -290,7 +290,7 @@ instruction est abrégée en @code{\tabChordRepeats}.
 
 @lilypond[quote,verbatim]
 guitar = \relative c' {
-  r8 <gis-2 cis-3 b-0>~ q4 q8~ q q4
+  r8 <gis-2 cis-3 b-0>~ q4 q8~ 8 q4
 }
 
 \new StaffGroup <<
@@ -312,7 +312,7 @@ seconde alternative d'une répétition.
 ties = \relative c' {
   \repeat volta 2 {
     e2. f4~
-    f2 g2~
+    2 g2~
   }
   \alternative {
      { g4 f2. }
@@ -352,7 +352,7 @@ ces cases entre parenthèses.
 ties = \relative c' {
   \repeat volta 2 {
     e2. f4~
-    f2 g2~ }
+    2 g2~ }
   \alternative {
     { g4 f2. }
     { g4\repeatTie c,2. }
index 4997c79fd7ed77dd03bbebc8b26a309038f7ad6f..bf14fda1916ca74372d6d9250473d2086ab7422d 100644 (file)
@@ -8,7 +8,7 @@
     Guide, node Updating translation committishes..
 @end ignore
 
-@c \version "2.17.11"
+@c \version "2.19.2"
 
 @c Translators: Jean-Charles Malahieude, Valentin Villenave
 
@@ -2546,7 +2546,7 @@ dans des paroles et dans du texte indépendant.
   }
   \addlyrics { O \markup { \concat { Ph \char ##x0153 be! } } }
 }
-\markup { "Copyright 2008--2012" \char ##x00A9 }
+\markup { "Copyright 2008--2014" \char ##x00A9 }
 @end lilypond
 
 @cindex copyright
@@ -3227,8 +3227,8 @@ entre 0,2 et 0,5 :
       \set Staff.midiInstrument = #"flute"
       \new Voice \relative c''' {
         r2 g\mp g fis~
-        fis4 g8 fis e2~
-        e4 d8 cis d2
+        4 g8 fis e2~
+        4 d8 cis d2
       }
     }
     \new Staff {
@@ -3279,8 +3279,8 @@ indication de nuance.
       \set Staff.midiMaximumVolume = #0.9
       \new Voice \relative c''' {
         r2 g\mp g fis~
-        fis4 g8 fis e2~
-        e4 d8 cis d2
+        4 g8 fis e2~
+        4 d8 cis d2
       }
     }
     \new Staff {
@@ -3351,8 +3351,8 @@ flûte et de la clarinette -- au même niveau que dans le précédent.
       \set Staff.midiInstrument = #"flute"
       \new Voice \relative c''' {
         r2 g\mp g fis~
-        fis4 g8 fis e2~
-        e4 d8 cis d2
+        4 g8 fis e2~
+        4 d8 cis d2
       }
     }
     \new Staff {
index efd35e268a8a2eeb348971c58ab472c0c6e2ea5f..c7fddc6dd71c4aef5693732d7743c26dcb44aafe 100644 (file)
@@ -8,7 +8,7 @@
     Guide, node Updating translation committishes..
 @end ignore
 
-@c \version "2.17.30"
+@c \version "2.19.2"
 
 @c Translators: Valentin Villenave, Jean-Charles Malahieude
 @c Translation checkers: John Mandereau
@@ -532,7 +532,7 @@ bellstaff = {
   \drummode {
     \time 2/4
     rb8 rb cb cb16 rb-> ~ |
-    rb16 rb8 rb16 cb8 cb |
+    16 rb8 rb16 cb8 cb |
   }
 }
 @end lilypond
index f468db5728b65ac7f4e06d6bb07f394e743f4855..1bf14e83c93aa6802130afe6c630ad10692b9d45 100644 (file)
@@ -8,7 +8,7 @@
     Guide, node Updating translation committishes.
 @end ignore
 
-@c \version "2.17.18"
+@c \version "2.19.2"
 
 @c Translators: Frédéric Chiasson
 @c Translation checkers: Valentin Villenave, Jean-Charles Malahieude
@@ -403,7 +403,7 @@ Lorsqu'une note est prolongée par une liaison de tenue, l'altération ne
 sera réimprimée que s'il y a un saut de ligne.
 
 @lilypond[verbatim,quote,relative=2,ragged-right]
-cis1 ~ cis ~
+cis1 ~ 1 ~
 \break
 cis
 @end lilypond
@@ -3027,8 +3027,8 @@ créées ainsi :
   e8 e g a a16( bes) a8 g
   \improvisationOn
   e8 ~
-  e2 ~ e8 f4 f8 ~
-  f2
+  2 ~ 8 f4 f8 ~
+  2
   \improvisationOff
   a16( bes) a8 g e
 }
index b385226f2e2ef73073543d523d9aae549dc8309a..2854b175c513a8cbaa83492b30c4158598c3dfc3 100644 (file)
@@ -515,10 +515,6 @@ voltaAdLib = \markup { 1. 2. 3... \text \italic { ad lib. } }
 }
 @end lilypond
 
-@snippets
-@lilypondfile[verbatim,quote,texidoc,doctitle]
-{printing-a-repeat-sign-at-the-beginning-of-a-piece.ly}
-
 @seealso
 Manuel de notation :
 @ref{Barres de mesure},
index a3c19f20e5d439c1f017e0f9ad88e27656c4e90d..6f9bb8c17b0acc6c84f8b362329b319d78dd15d8 100644 (file)
@@ -8,7 +8,7 @@
     Guide, node Updating translation committishes..
 @end ignore
 
-@c \version "2.17.30"
+@c \version "2.19.2"
 
 @c Translators: Frédéric Chiasson, Jean-Charles Malahieude
 @c Translation checkers: Valentin Villenave, François Martin, Xavier Scheuer
@@ -443,7 +443,7 @@ notes à lier.  Ceci indique que la note en question sera liée à la
 suivante, qui doit être de la même hauteur.
 
 @lilypond[quote,verbatim,relative=2]
-a2~ a4~ a16 r r8
+a2~ 4~ 16 r r8
 @end lilypond
 
 Les liaisons de tenue sont utilisées soit lorsque la note dépasse de la
@@ -454,8 +454,8 @@ longues doivent s'aligner sur les subdivisions de la mesure, comme ici :
 @c KEEP LY
 @lilypond[verbatim,quote]
 \relative c' {
-  r8^"oui" c8~ c2 r4 |
-  r8^"non" c2~ c8 r4
+  r8^"oui" c8~ 2 r4 |
+  r8^"non" c2~ 8 r4
 }
 @end lilypond
 
@@ -543,26 +543,26 @@ continue, discontinue ou pointillée.
 
 @lilypond[quote, verbatim, relative=1]
 \tieDotted
-c2~ c
+c2~ 2
 \tieDashed
-c2~ c
+c2~ 2
 \tieHalfDashed
-c2~ c
+c2~ 2
 \tieHalfSolid
-c2~ c
+c2~ 2
 \tieSolid
-c2~ c
+c2~ 2
 @end lilypond
 
 Il est même possible d'en personnaliser l'allure :
 
 @lilypond[quote, verbatim, relative=1]
 \tieDashPattern #0.3 #0.75
-c2~ c
+c2~ 2
 \tieDashPattern #0.7 #1.5
-c2~ c
+c2~ 2
 \tieSolid
-c2~ c
+c2~ 2
 @end lilypond
 
 Que ce soit pour une tenue ou un phrasé, le motif d'une ligne
index d923420e91c40eab1e8bbe88b380d748d3b997a2..dcb65711c392ca26bb900fb35433ab96dc6b8cec 100644 (file)
@@ -7,7 +7,7 @@
     Guide, node Updating translation committishes..
 @end ignore
 
-@c \version "2.17.28"
+@c \version "2.19.2"
 
 @c Translators: Frédéric Chiasson, Valentin Villenave, Jean-Charles Malahieude
 @c Translation checkers: Jean-Charles Malahieude, John Mandereau
@@ -423,7 +423,7 @@ sur une portée est la suivante@tie{}:
   \new Voice = "first"
     { \voiceOne r8 r16 g e8. f16 g8[ c,] f e16 d }
   \new Voice= "second"
-    { \voiceTwo d16 c d8~ d16 b c8~ c16 b c8~ c16 b8. }
+    { \voiceTwo d16 c d8~ 16 b c8~ 16 b c8~ 16 b8. }
 >>
 @end lilypond
 
@@ -504,7 +504,7 @@ sont réglés de manière appropriée. En voici un exemple :
 <<
   { r8 r16 g e8. f16 g8[ c,] f e16 d }
   \\
-  { d16 c d8~ d16 b c8~ c16 b c8~ c16 b8. }
+  { d16 c d8~ 16 b c8~ 16 b c8~ 16 b8. }
 >>
 @end lilypond
 
@@ -1154,12 +1154,12 @@ les mesures doivent être de longueur identique.}
 \parallelMusic #'(voiceA voiceB voiceC) {
   % Bar 1
   r8 g'16 c'' e'' g' c'' e'' r8 g'16 c'' e'' g' c'' e'' |
-  r16 e'8.~   e'4            r16 e'8.~   e'4            |
+  r16 e'8.~   4              r16 e'8.~   4              |
   c'2                        c'2                        |
 
   % Bar 2
   r8 a'16 d'' f'' a' d'' f'' r8 a'16 d'' f'' a' d'' f'' |
-  r16 d'8.~   d'4            r16 d'8.~   d'4            |
+  r16 d'8.~   4              r16 d'8.~   4              |
   c'2                        c'2                        |
 
 }
@@ -1179,12 +1179,12 @@ des lignes saisies@tie{}; en d'autres termes, les notes de la
 \parallelMusic #'(voiceA voiceB voiceC) {
   % Bar 1
   r8 g16 c e g, c e r8 g,16 c e g, c e  |
-  r16 e8.~ e4       r16 e8.~  e4        |
+  r16 e8.~ 4        r16 e8.~  4         |
   c2                c                   |
 
   % Bar 2
   r8 a,16 d f a, d f r8 a,16 d f a, d f |
-  r16 d8.~  d4       r16 d8.~  d4       |
+  r16 d8.~  4        r16 d8.~  4        |
   c2                 c                  |
 
  }
index cfa27825a54a63eabdafcc4629f281e2ce71d950..923cb212a0f4111de90416cd7471f591d3959702 100644 (file)
@@ -8,7 +8,7 @@
     Guide, node Updating translation committishes..
 @end ignore
 
-@c \version "2.17.30"
+@c \version "2.19.2"
 
 @c Translators: Valentin Villenave, Jean-Charles Malahieude
 @c Translation checkers: John Mandereau
@@ -1063,7 +1063,7 @@ substitution :
   R1*16
   \instrumentSwitch "contrabassoon"
   c,,2 g \break
-  c,1 ~ | c1
+  c,1 ~ | 1
 }
 @end lilypond
 
index cd0b35afe90dfbe713341e74566db99175c086a0..5a8811d76c6f6a77002c94b2c249b18de3592ae8 100644 (file)
@@ -8,7 +8,7 @@
     Guide, node Updating translation committishes..
 @end ignore
 
-@c \version "2.17.30"
+@c \version "2.19.2"
 
 @c Translators: Valentin Villenave, Jean-Charles Malahieude
 @c Translation checkers: Jean-Jacques Gerbaud
@@ -663,8 +663,8 @@ Une liaison de prolongation constitue de fait un mélisme :
   \new Voice = "melody" {
     \time 3/4
     f4 g2 ~ |
-    g4 e2 ~ |
-    e8
+    4 e2 ~ |
+    8
   }
   \new Lyrics \lyricsto "melody" {
     Ky -- ri -- e __
@@ -768,7 +768,7 @@ définir @code{melismaBusyProperties} :
     \time 3/4
     \set melismaBusyProperties = #'()
     c4 d ( e )
-    g8 [ f ] f4 ~ f
+    g8 [ f ] f4 ~ 4
   }
   \new Lyrics \lyricsto "melody" {
     Ky -- ri -- e e -- le -- i -- son
@@ -797,7 +797,7 @@ par un simple caractère souligné pour chaque note à inclure :
     \time 3/4
     \set melismaBusyProperties = #'()
     c4 d ( e )
-    g8 [ f ] ~ f4 ~ f
+    g8 [ f ] ~ 4 ~ f
   }
   \new Lyrics \lyricsto "melody" {
     Ky -- ri -- _ e __ _ _ _
index 4ea2fffbf035436db1c578d9e14c24a0f7fdcdcd..ebc76b4c4765527c8c5dd4d33c007e366d3b688f 100644 (file)
@@ -16,11 +16,11 @@ search for a while and have a redirection from "v2.15" to "v2.17".
 <form action="http://google.com/search"
       method="get"
       name="search"
-      onSubmit="search.q.value='site:lilypond.org/doc/v2.17 '
+      onSubmit="search.q.value='site:lilypond.org/doc/v2.19 '
                + search.brute_query.value"
-      onMouseMove="search.q.value='site:lilypond.org/doc/v2.17 '
+      onMouseMove="search.q.value='site:lilypond.org/doc/v2.19 '
                   + search.brute_query.value"
-      onKeyUp="search.q.value='site:lilypond.org/doc/v2.17 '
+      onKeyUp="search.q.value='site:lilypond.org/doc/v2.19 '
               + search.brute_query.value">
   <input type="hidden" name="btnG" value="Recherche sur Google">
   <input type="text" name="brute_query" onfocus="this.value=''" value="Rechercher">
index 5cc71f37d710e30dbff2c2f83db18e9c736cd2fe..9b40f59eac03a43ac1d58a2cd175eb536ffa8c19 100644 (file)
@@ -23,7 +23,7 @@ pratiques} pour une utilisation plus efficace.
 
 @c `Usage' was born 1999-10-10 with git commit c82c30c...
 @macro copyrightDeclare
-Copyright @copyright{} 1999--2012 par les auteurs.
+Copyright @copyright{} 1999--2014 par les auteurs.
 @end macro
 
 @set FDL
index 9f158a8c3db2bfa3a3b612849ecd1b4806a3c7b2..4688a5df927108a7d331a42698b273c85a705c75 100644 (file)
@@ -15,7 +15,7 @@
 
 @c `Web' was imported 2009-08-05 with git commit b938d71...
 @c @macro copyrightDeclare
-@c Copyright @copyright{} 2009--2012 par les auteurs.
+@c Copyright @copyright{} 2009--2014 par les auteurs.
 @c @end macro
 
 @set FDL
@@ -37,7 +37,7 @@
 @c Translators checkers: Jean-Charles Malahieude
 
 @copying
-Copyright @copyright{} 2009--2012 par les auteurs.
+Copyright @copyright{} 2009--2014 par les auteurs.
 
 @c next line is necessary for broken pre-4.13 texinfo's
 @c install-info, so leave it there until we officially
index 3477a361cc3af763e31884e539658eaad7b1280d..6f026cc378ee276a79847ff7a0397ba5c70b63b1 100644 (file)
@@ -20,7 +20,7 @@ Ez a tankönyv a LilyPond @version{} verziójába nyújt bevezetést.
 @end macro
 
 @macro copyrightDeclare
-Copyright @copyright{} 1999--2012 a szerzők.
+Copyright @copyright{} 1999--2014 a szerzők.
 @end macro
 
 @set FDL
index 29fb660a1a5c2175fe40d76da5ba890afc171ada..95cebd4e56cd7ccb90f7a7307e64260ba09b1eba 100644 (file)
@@ -9,7 +9,7 @@
 @end ignore
 
 
-@c \version "2.17.28"
+@c \version "2.19.2"
 
 @node Elemi kottaírás
 @chapter Elemi kottaírás
@@ -188,8 +188,8 @@ Fogalomtár: @rglos{tie}.
 karaktert írunk.
 
 @lilypond[verbatim,quote,relative=2]
-g4~ g c2~
-c4 ~ c8 a8 ~ a2
+g4~ 4 c2~
+4 ~ 8 a8 ~ 2
 @end lilypond
 
 @subheading Kötőív
@@ -230,7 +230,7 @@ meg, és több hangot átívelhet. Természetesen egy kötőíven belül lehetne
 átkötött hangok.
 
 @lilypond[verbatim,quote,relative=2]
-c2~( c8 fis fis4 ~ fis2 g2)
+c2~( c8 fis fis4 ~ 2 g2)
 @end lilypond
 
 
@@ -1017,7 +1017,7 @@ kezdetű áriájában a @notation{Largo} szó @notation{go} szótagját és az
     \clef bass
     \key c \major
     \time 6/8
-    c4.~ c8 d b c([ d]) b c d b c
+    c4.~ 8 d b c([ d]) b c d b c
   }
   \addlyrics {
     Lar -- go_al fac -- to -- tum del -- la cit -- tà
@@ -1046,7 +1046,7 @@ mely Händel @notation{Júdás Makkabeus} c. oratóriumából való:
     \key f \major
     \time 6/8
     \partial 8
-    c8 c([ bes]) a a([ g]) f f'4. b, c4.~ c4
+    c8 c([ bes]) a a([ g]) f f'4. b, c4.~ 4
   }
   \addlyrics {
     Let flee -- cy flocks the hills a -- dorn, __
index 06ed20b8e0d6d52f787e3aa6952eabe6ea8797fa..69104f29c657e618c9afdfefb1a97d3a5b6c1ab0 100644 (file)
@@ -10,7 +10,7 @@
 
 
 @c -*- coding: utf-8; mode: texinfo; -*-
-@c \version "2.17.29"
+@c \version "2.19.2"
 @node Alapfogalmak
 @chapter Alapfogalmak
 @translationof Fundamental concepts
@@ -636,7 +636,7 @@ stems, ties, dynamics etc., is set appropriately.
   c16 d e f
   %    Voice "1"     Voice "2"                 Voice "3"
   << { g4 f e } \\ { r8 e4 d c8~ } >>
-  << { d2 e2 }  \\ { c8 b16 a b8 g~ g2 } \\ { s4 b4 c2 } >>
+  << { d2 e2 }  \\ { c8 b16 a b8 g~ 2 } \\ { s4 b4 c2 } >>
 }
 @end lilypond
 
@@ -674,7 +674,7 @@ blue triangle voice.
     { d2 e2 }
   \\
      % Voice 2 continues
-    { c8 b16 a b8 g ~ g2 }
+    { c8 b16 a b8 g ~ 2 }
   \\
     {
       \voiceThreeStyle
@@ -955,25 +955,25 @@ markup, ties, slurs, and dynamics:
 @lilypond[quote,ragged-right,verbatim]
 \relative c'{
   % Default behavior or behavior after \oneVoice
-  c d8~ d e4( f g a) b-> c
+  c d8~ 8 e4( f g a) b-> c
 }
 @end lilypond
 
 @lilypond[quote,ragged-right,verbatim]
 \relative c'{
   \voiceOne
-  c d8~ d e4( f g a) b-> c
+  c d8~ 8 e4( f g a) b-> c
   \oneVoice
-  c, d8~ d e4( f g a) b-> c
+  c, d8~ 8 e4( f g a) b-> c
 }
 @end lilypond
 
 @lilypond[quote,ragged-right,verbatim]
 \relative c'{
   \voiceTwo
-  c d8~ d e4( f g a) b-> c
+  c d8~ 8 e4( f g a) b-> c
   \oneVoice
-  c, d8~ d e4( f g a) b-> c
+  c, d8~ 8 e4( f g a) b-> c
 }
 @end lilypond
 
@@ -1002,7 +1002,7 @@ permitting a phrasing slur to be drawn over them.
     \new Voice {
       % Set stems, etc., down
       \voiceTwo
-      r8 e4 d c8~ | c8 b16 a b8 g~ g2 |
+      r8 e4 d c8~ | 8 b16 a b8 g~ 2 |
     }
     % Initiate third voice
     \new Voice {
@@ -1033,7 +1033,7 @@ typeset the music:
       \voiceTwo
       r8 e4 d c8~
       <<
-        { c8 b16 a b8 g~ g2 }
+        { c8 b16 a b8 g~ 2 }
         \new Voice {
           \voiceThree
           s4 b4 c2
@@ -1064,7 +1064,7 @@ as here:
   \new Voice {
     % Set stems, etc, down
     \voiceTwo
-    s4 r8 e4 d c8~ | c8 b16 a b8 g~ g2 |
+    s4 r8 e4 d c8~ | 8 b16 a b8 g~ 2 |
   }
   % Initiate third voice
   \new Voice {
@@ -1195,7 +1195,7 @@ rather than music.
 @lilypond[quote,verbatim]
 global = { \time 6/8 \partial 8 \key f \major}
 SopOneMusic = \relative c'' {
-  c8 | c([ bes)] a a([ g)] f | f'4. b, | c4.~ c4 | }
+  c8 | c([ bes)] a a([ g)] f | f'4. b, | c4.~ 4 | }
 SopTwoMusic = \relative c' {
   r8 | r4. r4 c8 | a'([ g)] f f([ e)] d | e([ d)] c bes' | }
 SopOneLyrics = \lyricmode {
@@ -2979,15 +2979,15 @@ ManualOneVoiceOneMusic = \relative g' {
   d2 c2
 }
 ManualOneVoiceTwoMusic = \relative c' {
-  ees16 d ees8~ ees16 f ees d c8 d~ d c~
+  ees16 d ees8~ 16 f ees d c8 d~ d c~
   c c4 b8 c8. g16 c b c d
 }
 ManualTwoMusic = \relative c' {
-  c16 b c8~ c16 b c g a8 g~ g16 g aes ees
-  f ees f d g aes g f ees d e8~ ees16 f ees d
+  c16 b c8~ 16 b c g a8 g~ 16 g aes ees
+  f ees f d g aes g f ees d e8~ 8es16 f ees d
 }
 PedalOrganMusic = \relative c {
-  r8 c16 d ees d ees8~ ees16 a, b g c b c8
+  r8 c16 d ees d ees8~ 16 a, b g c b c8
   r16 g ees f g f g8 c,2
 }
 
index 6dc413f820c2a06d230636c9fbab2f5fea990b31..4b10a397f5ca502073047df8f95c075b93d78a77 100644 (file)
@@ -1,11 +1,11 @@
 <form action="http://google.com/search"
       method="get"
       name="search"
-      onSubmit="search.q.value='site:lilypond.org +v2.17 '
+      onSubmit="search.q.value='site:lilypond.org/doc/v2.19 '
                + search.brute_query.value"
-      onMouseMove="search.q.value='site:lilypond.org +v2.17 '
+      onMouseMove="search.q.value='site:lilypond.org/doc/v2.19 '
                   + search.brute_query.value"
-      onKeyUp="search.q.value='site:lilypond.org +v2.17 '
+      onKeyUp="search.q.value='site:lilypond.org/doc/v2.19 '
               + search.brute_query.value">
   <input type="hidden" name="btnG" value="Google keresés">
   <input type="text" name="brute_query" onfocus="this.value=''" value="Keresés">
index c5763118448689fd32da94a6b04f3c170534748b..a8c50de969628b9e7a93503d01732efd780c5af5 100644 (file)
@@ -23,7 +23,7 @@ használatához.
 
 @c `Usage' was born 1999-10-10 with git commit c82c30c...
 @macro copyrightDeclare
-Copyright @copyright{} 1999--2012 a szerzők.
+Copyright @copyright{} 1999--2014 a szerzők.
 @end macro
 
 @set FDL
index b3136d49a311968d2ce2264f077114284a46686e..f440ea23d72913a42c4c8db9b887a8e4f85ca878 100644 (file)
@@ -17,7 +17,7 @@
 
 @c `Web' was imported 2009-08-05 with git commit b938d71...
 @c @macro copyrightDeclare
-@c Copyright @copyright{} 2009--2012 by the authors.
+@c Copyright @copyright{} 2009--2014 by the authors.
 @c @end macro
 
 @set FDL
@@ -37,7 +37,7 @@
 @end ignore
 
 @copying
-Copyright @copyright{} 2009--2012 by the authors.
+Copyright @copyright{} 2009--2014 by the authors.
 
 @c next line is necessary for broken pre-4.13 texinfo's
 @c install-info, so leave it there until we officially
index f0528c2df65028dd73f5c3993db20fd51d9039be..fa67b32769a47c1fd1e406d8565710b2bbb9a22d 100644 (file)
 
 @itemize
 
-@item Bertrand Bordage:
-@email{bordage.bertrand@@gmail.com},
-Core developer, font designer
-
 @item Trevor Daniels:
 @email{t.daniels@@treda.co.uk},
 Assistant documentation editor
@@ -64,30 +60,15 @@ Build unentangler, Bug squad member
 @item Ian Hulin:
 Core developer
 
-@item Reinhold Kainhofer:
-@email{reinhold@@kainhofer.com},
-@uref{http://reinhold.kainhofer.com},
-Core developer, Music2xml wrangler
-
 @item David Kastrup:
 @email{dak@@gnu.org},
 hard core developer, user and programming interfaces, bug squashing and
 swamp drainage.
 
-@item Jonathan Kulp:
-Assistant documentation editor
-
 @item Werner Lemberg,
 @email{wl@@gnu.org},
 Fonts, bug squasher
 
-@item John Mandereau:
-@email{john.mandereau@@free.fr},
-Translations
-
-@item Patrick McCarty:
-SVG guru, bug squad member, bug squasher, text handling
-
 @item Joe Neeman:
 Core developer
 
@@ -102,16 +83,6 @@ Main author
 @uref{http://AvatarAcademy.nl},
 Main author
 
-@item Graham Percival:
-@uref{http://percival-music.ca},
-Project manager, Documentation Editor
-
-@item Mark Polesky:
-Assistant documentation editor, Code cleanup
-
-@item Neil Puttock:
-Core developer
-
 @item Mike Solomon:
 @email{mike@@mikesolomon.org},
 Core developer, Frog meister
@@ -123,9 +94,6 @@ Core developer
 @item Francisco Vila:
 Translation Meister
 
-@item Valentin Villenave:
-LSR editor and Bug squad member
-
 @item Janek Warchoł:
 happy nitpicker
 
@@ -145,17 +113,38 @@ happy nitpicker
 @uref{https://www.kth.se/profile/matben/},
 Support guru
 
+@item Bertrand Bordage:
+@email{bordage.bertrand@@gmail.com},
+Core developer, font designer
+
+@item Reinhold Kainhofer:
+@email{reinhold@@kainhofer.com},
+@uref{http://reinhold.kainhofer.com},
+Core developer, Music2xml wrangler
+
 @item Pedro Kroeger:
 Build meister
 
+@item Jonathan Kulp:
+Assistant documentation editor
+
 @item John Mandereau:
 @email{john.mandereau@@free.fr},
 Translation meister
 
+@item Patrick McCarty:
+SVG guru, bug squad member, bug squasher, text handling
+
 @item Graham Percival:
 @uref{http://percival-music.ca},
 Bug meister, Grand Documentation Project leader
 
+@item Mark Polesky:
+Assistant documentation editor, Code cleanup
+
+@item Neil Puttock:
+Core developer
+
 @item Jürgen Reuter:
 @email{reuter_j@@web.de},
 @uref{http://www.juergen-reuter.de},
@@ -167,6 +156,9 @@ Bug meister
 @item Nicolas Sceaux:
 Core developer, Schemer extraordinaire
 
+@item Valentin Villenave:
+LSR editor and Bug squad member
+
 @end itemize
 @end macro
 
@@ -190,6 +182,7 @@ Benkő Pál,
 Anders Pilegaard,
 Julien Rioux,
 Johannes Rohrer,
+Devon Schudy,
 Adam Spiers,
 Heikki Tauriainen
 
@@ -234,9 +227,9 @@ Rodolfo Zitellini
 
 @c use commas not colons
 
+Federico Bruni,
 Colin Campbell,
 Eluze,
-Marc Hohl,
 Phil Holmes,
 Marek Klein,
 Ralph Palmer
@@ -254,6 +247,7 @@ Colin Campbell,
 Eluze,
 Marc Hohl,
 Marek Klein,
+Alex Loomis,
 Kieren MacMillan,
 Urs Liska,
 Ralph Palmer
index 9fd3c62c7f342c1a54f0547a7ddce57c457f48ba..21969bf4f0564e8c41787db1f233a8f6ce239c6c 100644 (file)
@@ -9,8 +9,8 @@
 @macro lilypadOSX
 @warning{These instructions assume that you are using the LilyPond
 application.  If you are using any of the programs described in
-@rweb{Easier editing}, please consult the documentation for
-those programs if you have any problems.}
+@rweb{Easier editing}, consult the documentation for those
+programs should you have any problems.}
 
 
 @subsubheading Step 1. Create your @file{.ly} file
@@ -80,8 +80,8 @@ may fail to generate an update PDF until you close the original.
 @macro lilypadWindows
 @warning{These instructions assume that you are using the built-in
 LilyPad editor.  If you are using any of the programs described in
-@rweb{Easier editing}, please consult the documentation for
-those programs if you have any problems compiling a file.}
+@rweb{Easier editing}, consult the documentation for those programs
+should you have any problems.}
 
 
 @subsubheading Step 1. Create your @file{.ly} file
@@ -163,10 +163,9 @@ while it is still being viewed.
 @c not lilypad at all, but I ran out of names.  :(
 @macro lilypadCommandLine
 @warning{These instructions assume that you are familiar with
-command-line programs.  If you are using any of the programs
-described in @rweb{Easier editing}, please consult the
-documentation for those programs if you have any problems
-compiling a file.}
+command-line programs.  If you are using any of the programs described
+in @rweb{Easier editing}, consult the documentation for those programs
+should you have any problems.}
 
 
 @subsubheading Step 1. Create your @file{.ly} file
index a78697873446f8fa68061e011f436b7b89c13275..0d2cabfcdac63dbe67ad5d40d14241f5376cff57 100644 (file)
@@ -1,4 +1,4 @@
-\version "2.17.6"
+\version "2.19.0"
 
 \header {
   texidoc="
@@ -25,11 +25,11 @@ dimensions.
 pattern = <<
   \new Voice {
     \override Stem.direction = #UP
-    e'4 e'2. e'1 e'\breve*1/2 e'\longa*1/4 \bar "||"
+    e'4 2. 1 \breve*1/2 \longa*1/4 \bar "||"
   }
   \new Voice {
     \override Stem.direction = #DOWN
-    a4 a2. a1 a\breve*1/2 a\longa*1/4 \bar "||"
+    a4  2. 1 \breve*1/2 \longa*1/4 \bar "||"
   }
 >>
 
index c47302550fd46c51330cd0713fa238c2d4795bd2..7f2b491c66789f2fddd577bb98df6175b8e88a3a 100644 (file)
@@ -20,7 +20,7 @@ Questo file fornisce un'introduzione alla versione di LilyPond
 
 @c `Learning Manual' was born 1999-10-10 with git commit b9abaac...
 @macro copyrightDeclare
-Copyright @copyright{} 1999--2012 by the authors.
+Copyright @copyright{} 1999--2014 by the authors.
 @end macro
 
 @set FDL
index f7b7fa20db3bc40bd0fb46410378602238043221..787d3826438810a1bb9ea6fc533fd59e21a5c49b 100644 (file)
@@ -9,7 +9,7 @@
 @end ignore
 
 
-@c \version "2.17.28"
+@c \version "2.19.2"
 
 @ignore
 Tutorial guidelines:  (different from policy.txt!)
@@ -286,7 +286,7 @@ Una @notation{legatura di valore} si ottiene apponendo una tilde @code{~} alla
 prima nota della legatura.
 
 @lilypond[verbatim,quote,relative=2]
-g4~ g c2~ | c4~ c8 a~ a2 |
+g4~ 4 c2~ | 4~ 8 a~ 2 |
 @end lilypond
 
 @node Legature di portamento
@@ -339,7 +339,7 @@ con ampi gruppi di note.  Legature di valore e legature di portamento
 possono essere annidate le une dentro le altre.
 
 @lilypond[verbatim,quote,relative=2]
-c4~( c8 d~ d4 e)
+c4~( c8 d~ 4 e)
 @end lilypond
 
 
@@ -1219,7 +1219,7 @@ Ecco un esempio tratto dal @notation{Figaro} di Rossini, dove
     \clef "bass"
     \key c \major
     \time 6/8
-    c4.~ c8 d b | c8([ d]) b c d b | c8
+    c4.~ 8 d b | c8([ d]) b c d b | c8
   }
   \addlyrics {
     Lar -- go_al fac -- | to -- tum del -- la cit -- | tà
@@ -1250,7 +1250,7 @@ più semplice, ovvero @code{\addlyrics}.  Ecco un esempio tratto dal
     \key f \major
     \time 6/8
     \partial 8
-    c8 | c8([ bes]) a a([ g]) f | f'4. b, | c4.~ c4
+    c8 | c8([ bes]) a a([ g]) f | f'4. b, | c4.~ 4
   }
   \addlyrics {
     Let | flee -- cy flocks the | hills a -- | dorn, __
index cdfbc30146c1b92b091a1d4f0bce6cadf515e325..d52aabefec4ad965ac3efbcb2b9bd8688ce240b5 100644 (file)
@@ -8,7 +8,7 @@
     Guide, node Updating translation committishes..
 @end ignore
 
-@c \version "2.17.29"
+@c \version "2.19.2"
 
 @node Concetti fondamentali
 @chapter Concetti fondamentali
@@ -685,7 +685,7 @@ legature di valore, dinamica, etc., è impostata correttamente.
   c16 d e f
   %    Voice "1"     Voice "2"                Voice "3"
   << { g4 f e } \\ { r8 e4 d c8~ } >> |
-  << { d2 e }   \\ { c8 b16 a b8 g~ g2 } \\ { s4 b c2 } >> |
+  << { d2 e }   \\ { c8 b16 a b8 g~ 2 } \\ { s4 b c2 } >> |
 }
 @end lilypond
 
@@ -723,7 +723,7 @@ voce con i triangoli blu.
     { d2 e }
   \\
      % Voice 2 continues
-    { c8 b16 a b8 g~ g2 }
+    { c8 b16 a b8 g~ 2 }
   \\
     {
       \voiceThreeStyle
@@ -1001,25 +1001,25 @@ markup, legature di valore, legature di portamento, e dinamica:
 @lilypond[quote,ragged-right,verbatim]
 \relative c'{
   % Default behavior or behavior after \oneVoice
-  c4 d8~ d e4( f | g4 a) b-> c |
+  c4 d8~ 8 e4( f | g4 a) b-> c |
 }
 @end lilypond
 
 @lilypond[quote,ragged-right,verbatim]
 \relative c' {
   \voiceOne
-  c4 d8~ d e4( f | g4 a) b-> c |
+  c4 d8~ 8 e4( f | g4 a) b-> c |
   \oneVoice
-  c,4 d8~ d e4( f | g4 a) b-> c |
+  c,4 d8~ 8 e4( f | g4 a) b-> c |
 }
 @end lilypond
 
 @lilypond[quote,ragged-right,verbatim]
 \relative c' {
   \voiceTwo
-  c4 d8~ d e4( f | g4 a) b-> c |
+  c4 d8~ 8 e4( f | g4 a) b-> c |
   \oneVoice
-  c,4 d8~ d e4( f | g4 a) b-> c |
+  c,4 d8~ 8 e4( f | g4 a) b-> c |
 }
 @end lilypond
 
@@ -1048,7 +1048,7 @@ sì che sia possibile disegnare una legatura di frase sopra di esse.
     \new Voice {
       % Set stems, etc., down
       \voiceTwo
-      r8 e4 d c8~ | c8 b16 a b8 g~ g2 |
+      r8 e4 d c8~ | 8 b16 a b8 g~ 2 |
     }
     % Initiate third voice
     \new Voice {
@@ -1079,7 +1079,7 @@ di scrivere lo spartito:
       \voiceTwo
       r8 e4 d c8~ |
       <<
-        { c8 b16 a b8 g~ g2 | }
+        { c8 b16 a b8 g~ 2 | }
         \new Voice {
           \voiceThree
           s4 b c2 |
@@ -1109,7 +1109,7 @@ come nel seguente esempio:
   \new Voice {
     % Set stems, etc, down
     \voiceTwo
-    s4 r8 e4 d c8~ | c8 b16 a b8 g~ g2 |
+    s4 r8 e4 d c8~ | 8 b16 a b8 g~ 2 |
   }
   % Initiate third voice
   \new Voice {
@@ -1244,7 +1244,7 @@ invece che come musica.
 global = { \key f \major \time 6/8 \partial 8 }
 
 SopOneMusic = \relative c'' {
-  c8 | c8([ bes)] a a([ g)] f | f'4. b, | c4.~ c4
+  c8 | c8([ bes)] a a([ g)] f | f'4. b, | c4.~ 4
 }
 SopOneLyrics = \lyricmode {
   Let | flee -- cy flocks the | hills a -- dorn, __
@@ -2922,15 +2922,15 @@ ManualOneVoiceOneMusic = \relative g' {
   d2 c |
 }
 ManualOneVoiceTwoMusic = \relative c' {
-  ees16 d ees8~ ees16 f ees d c8 d~ d c~ |
-  c8 c4 b8 c8. g16 c b c d |
+  ees16 d ees8~ 16 f ees d c8 d~ d c~ |
+  8 c4 b8 c8. g16 c b c d |
 }
 ManualTwoMusic = \relative c' {
-  c16 b c8~ c16 b c g a8 g~ g16 g aes ees |
-  f16 ees f d g aes g f ees d ees8~ ees16 f ees d |
+  c16 b c8~ 16 b c g a8 g~ 16 g aes ees |
+  f16 ees f d g aes g f ees d ees8~ 16 f ees d |
 }
 PedalOrganMusic = \relative c {
-  r8 c16 d ees d ees8~ ees16 a, b g c b c8 |
+  r8 c16 d ees d ees8~ 16 a, b g c b c8 |
   r16 g ees f g f g8 c,2 |
 }
 
index b0f47e69267743113e40541143158cb73bdce896..ea4ef460e1d82a1b2c60003a84a16032a35684f2 100644 (file)
@@ -8,7 +8,7 @@
     Guide, node Updating translation committishes..
 @end ignore
 
-@c \version "2.17.20"
+@c \version "2.19.2"
 
 @node Modifica dell'output
 @chapter Modifica dell'output
@@ -3254,12 +3254,12 @@ con le legature di valore:
 {
   \time 4/2
   <<
-    { c'1 ~ c'2. e'8 f' }
+    { c'1 ~ 2. e'8 f' }
     \\
     { e''8 e'' e'' e''  e'' e'' e'' e''  f''2 g'' }
   >>
   <<
-    { c'1 ~ c'2. e'8 f' }
+    { c'1 ~ 2. e'8 f' }
     \\
     { e''8 e'' e'' e''  e'' e'' e'' e''  f''2 g'' }
   >>
@@ -3279,7 +3279,7 @@ centrale a, per esempio, 1:
 {
   \time 4/2
   <<
-    { c'1 ~ c'2. e'8 f' }
+    { c'1 ~ 2. e'8 f' }
     \\
     {
       \override Beam.positions = #'(-1 . -1)
@@ -3287,7 +3287,7 @@ centrale a, per esempio, 1:
     }
   >>
   <<
-    { c'1 ~ c'2. e'8 f' }
+    { c'1 ~ 2. e'8 f' }
     \\
     { e''8 e'' e'' e''  e'' e'' e'' e''  f''2 g'' }
   >>
@@ -3478,7 +3478,7 @@ rhMusic = \relative c'' {
       { c,8 d fis bes a }  % continuazione della voce principale
       \new Voice {
         \voiceTwo
-        c,8~ c2
+        c,8~ 2
       }
       \new Voice {
         \voiceThree
@@ -3536,7 +3536,7 @@ rhMusic = \relative c'' {
       { c,8 d fis bes a }  % continuazione della voce principale
       \new Voice {
         \voiceTwo
-        c,8~ c2
+        c,8~ 2
       }
       \new Voice {
         \voiceThree
@@ -3608,7 +3608,7 @@ rhMusic = \relative c'' {
       { c,8 d fis bes a }  % continuazione della voce principale
       \new Voice {
         \voiceTwo
-        c,8~ c2
+        c,8~ 2
       }
       \new Voice {
         \voiceThree
@@ -3690,7 +3690,7 @@ rhMusic = \relative c'' {
       { c,8 d fis bes a }  % continuazione della voce principale
       \new Voice {
         \voiceTwo
-        c,8~ c2
+        c,8~ 2
       }
       \new Voice {
         \voiceThree
@@ -3929,7 +3929,7 @@ stessa voce possono essere unite da una legatura di valore.
 Se si usano due voci con le note legate in una voce
 
 @lilypond[quote,fragment,relative=2]
-<< { b8~ b\noBeam } \\ { b8[ g] } >>
+<< { b8~ 8\noBeam } \\ { b8[ g] } >>
 @end lilypond
 
 @noindent
@@ -3944,7 +3944,7 @@ attraversare le voci:
 <<
   {
     \tweak Stem.transparent ##t
-    b8~ b\noBeam
+    b8~ 8\noBeam
   }
 \\
   { b8[ g] }
@@ -3960,7 +3960,7 @@ possiamo allungarlo impostando la proprietà
   {
     \tweak Stem.transparent ##t
     \tweak Stem.length #8
-    b8~ b\noBeam
+    b8~ 8\noBeam
   }
 \\
   { b8[ g] }
@@ -3984,7 +3984,7 @@ in questo modo
     \single \hide Stem
     \single \hide Flag
     \tweak Stem.length #8
-    b8~ b\noBeam
+    b8~ 8\noBeam
   }
 \\
   { b8[ g] }
index 4b681a834485d65c13f10dcb27d0e31aef0f0e30..1ce4fec62d6dbedcc94fa86c624a456ea48f38e0 100644 (file)
@@ -22,7 +22,7 @@ presuppone che il lettore conosca il materiale esposto nel
 
 @c `Notation Reference' was born 1999-10-11 with git commit 940dda0...
 @macro copyrightDeclare
-Copyright @copyright{} 1999--2012 degli autori.
+Copyright @copyright{} 1999--2014 degli autori.
 @end macro
 
 
index 822968c6601e543467a89228918ea1071e5a095e..bb3566adb01aa8f3439aaaff0611bf791544020d 100644 (file)
@@ -7,7 +7,7 @@
     Guide, node Updating translation committishes..
 @end ignore
 
-@c \version "2.17.18"
+@c \version "2.19.2"
 
 @c Translators: Federico Bruni
 @c Translation checkers: Luca Rossetto Casel
@@ -411,7 +411,7 @@ Se una nota è prolungata attraverso una legatura di valore, l'alterazione
 viene ripetuta solo all'inizio di un nuovo sistema:
 
 @lilypond[verbatim,quote,relative=2,ragged-right]
-cis1~ cis~
+cis1~ 1~
 \break
 cis
 @end lilypond
@@ -3082,8 +3082,8 @@ indicato.  Si possono creare queste teste:
   e8 e g a a16( bes) a8 g
   \improvisationOn
   e8 ~
-  e2 ~ e8 f4 f8 ~
-  f2
+  2 ~ 8 f4 f8 ~
+  2
   \improvisationOff
   a16( bes) a8 g e
 }
index 3f935a41eb7cccff200892e22d8f0f1add1a1f45..274a706498ef32a41b4211e3c20ddd3fb90d74a0 100644 (file)
@@ -538,11 +538,6 @@ voltaAdLib = \markup { 1. 2. 3... \text \italic { ad lib. } }
 @end lilypond
 
 
-@snippets
-
-@lilypondfile[verbatim,quote,texidoc,doctitle]
-{printing-a-repeat-sign-at-the-beginning-of-a-piece.ly}
-
 @seealso
 Guida alla notazione:
 @ref{Bar lines},
index 269c6c332cc9ae4e2759c4ede26141b582dd11f2..e134f9b733ab5f9391e70e3f2dca22691fd41e1a 100644 (file)
@@ -7,7 +7,7 @@
     Guide, node Updating translation committishes..
 @end ignore
 
-@c \version "2.17.30"
+@c \version "2.19.2"
 
 @c Translators: Federico Bruni
 @c Translation checkers: Luca Rossetto Casel
@@ -433,7 +433,7 @@ alla prima di ogni coppia di note legate.  Esso indica che la nota deve
 essere legata alla nota successiva, che deve essere della stessa altezza.
 
 @lilypond[quote,verbatim,relative=2]
-a2~ a4~ a16 r r8
+a2~ 4~ 16 r r8
 @end lilypond
 
 Le legature di valore si usano per unire due note a cavallo di una
@@ -443,8 +443,8 @@ unire note dalle durate superiori all'unità di suddivisione della misura:
 
 @lilypond[verbatim,quote]
 \relative c' {
-  r8 c~ c2 r4 |
-  r8^"non" c2~ c8 r4
+  r8 c~ 2 r4 |
+  r8^"non" c2~ 8 r4
 }
 @end lilypond
 
@@ -529,26 +529,26 @@ successione di tratti continui e tratti interrotti.
 
 @lilypond[quote, verbatim, relative=1]
 \tieDotted
-c2~ c
+c2~ 2
 \tieDashed
-c2~ c
+c2~ 2
 \tieHalfDashed
-c2~ c
+c2~ 2
 \tieHalfSolid
-c2~ c
+c2~ 2
 \tieSolid
-c2~ c
+c2~ 2
 @end lilypond
 
 Si possono specificare modelli di tratteggiatura personalizzati:
 
 @lilypond[quote, verbatim, relative=1]
 \tieDashPattern #0.3 #0.75
-c2~ c
+c2~ 2
 \tieDashPattern #0.7 #1.5
-c2~ c
+c2~ 2
 \tieSolid
-c2~ c
+c2~ 2
 @end lilypond
 
 Le definizioni dei modelli di tratteggiatura delle legature di valore hanno la
index 46e13fd5eab30e41314e802193f217165196081a..18fbf44508ff37cf7a812808a6d09d16566b30a8 100644 (file)
@@ -7,7 +7,7 @@
     Guide, node Updating translation committishes..
 @end ignore
 
-@c \version "2.17.28"
+@c \version "2.19.2"
 
 @c Translators: Federico Bruni
 @c Translation checkers: Luca Rossetto Casel
@@ -403,7 +403,7 @@ solo rigo è illustrata nell'esempio seguente:
   \new Voice = "prima"
     { \voiceOne r8 r16 g e8. f16 g8[ c,] f e16 d }
   \new Voice= "seconda"
-    { \voiceTwo d16 c d8~ d16 b c8~ c16 b c8~ c16 b8. }
+    { \voiceTwo d16 c d8~ 16 b c8~ 16 b c8~ 16 b8. }
 >>
 @end lilypond
 
@@ -479,7 +479,7 @@ Il primo esempio potrebbe essere riscritto nel modo seguente:
 <<
   { r8 r16 g e8. f16 g8[ c,] f e16 d }
   \\
-  { d16 c d8~ d16 b c8~ c16 b c8~ c16 b8. }
+  { d16 c d8~ 16 b c8~ 16 b c8~ 16 b8. }
 >>
 @end lilypond
 
@@ -1128,12 +1128,12 @@ devono avere la stessa durata.}
 \parallelMusic #'(voiceA voiceB voiceC) {
   % Battuta 1
   r8 g'16 c'' e'' g' c'' e'' r8 g'16 c'' e'' g' c'' e'' |
-  r16 e'8.~   e'4            r16 e'8.~   e'4            |
+  r16 e'8.~   4              r16 e'8.~   4              |
   c'2                        c'2                        |
 
   % Battuta 2
   r8 a'16 d'' f'' a' d'' f'' r8 a'16 d'' f'' a' d'' f'' |
-  r16 d'8.~   d'4            r16 d'8.~   d'4            |
+  r16 d'8.~   4              r16 d'8.~   4              |
   c'2                        c'2                        |
 
 }
@@ -1152,12 +1152,12 @@ parole, le note relative di @code{voiceA} ignorano le note in @code{voiceB}.
 \parallelMusic #'(voiceA voiceB voiceC) {
   % Battuta 1
   r8 g16 c e g, c e r8 g,16 c e g, c e  |
-  r16 e8.~ e4       r16 e8.~  e4        |
+  r16 e8.~ 4        r16 e8.~  4         |
   c2                c                   |
 
   % Battuta 2
   r8 a,16 d f a, d f r8 a,16 d f a, d f |
-  r16 d8.~  d4       r16 d8.~  d4       |
+  r16 d8.~  4        r16 d8.~  4        |
   c2                 c                  |
 
  }
index 5555f21d5618f0da08d71a5f0605ac0a80beff5b..cc3dfb4285c30f8f7a5d981a11130550b723350d 100644 (file)
@@ -7,7 +7,7 @@
     Guide, node Updating translation committishes..
 @end ignore
 
-@c \version "2.17.30"
+@c \version "2.19.2"
 
 @c Translators: Federico Bruni
 @c Translation checkers:
@@ -1045,7 +1045,7 @@ dell'espressione musicale, :
   R1*16
   \instrumentSwitch "contrabassoon"
   c,,2 g \break
-  c,1 ~ | c1
+  c,1 ~ | 1
 }
 @end lilypond
 
index 1562b0b428c6f3315d76a56e9083eda91624055b..778c26fc576e92edc0d5c629da16432cb724d000 100644 (file)
@@ -15,11 +15,11 @@ search for a while and have a redirection from "v2.15" to "v2.17".
 <form action="http://google.com/search"
       method="get"
       name="search"
-      onSubmit="search.q.value='site:lilypond.org/doc/v2.17 '
+      onSubmit="search.q.value='site:lilypond.org/doc/v2.19 '
                + search.brute_query.value"
-      onMouseMove="search.q.value='site:lilypond.org/doc/v2.17 '
+      onMouseMove="search.q.value='site:lilypond.org/doc/v2.19 '
                   + search.brute_query.value"
-      onKeyUp="search.q.value='site:lilypond.org/doc/v2.17 '
+      onKeyUp="search.q.value='site:lilypond.org/doc/v2.19 '
               + search.brute_query.value">
   <input type="hidden" name="btnG" value="Cerca con Google">
   <input type="text" name="brute_query" onfocus="this.value=''" value="Cerca">
index bb46a612adcd724ef865e416aec4b07ff525e907..e659f7d55eefcb9410f70066e1bafa063257a909 100644 (file)
@@ -24,7 +24,7 @@ LilyPond versione @version{}.  Inoltre, suggerisce alcune delle
 
 @c `Usage' was born 1999-10-10 with git commit c82c30c...
 @macro copyrightDeclare
-Copyright @copyright{} 1999--2012 degli autori.
+Copyright @copyright{} 1999--2014 degli autori.
 @end macro
 
 @set FDL
index bf3f9167cf528d69ea847f59e25569be2470dc75..50e55171d3fa4cf7ba989fa4cffcea7727b6834a 100644 (file)
@@ -15,7 +15,7 @@
 
 @c `Web' was imported 2009-08-05 with git commit b938d71...
 @c @macro copyrightDeclare
-@c Copyright @copyright{} 2009--2012 by the authors.
+@c Copyright @copyright{} 2009--2014 by the authors.
 @c @end macro
 
 @set FDL
@@ -37,7 +37,7 @@
 @c Translation checkers: Luca Rossetto Casel
 
 @copying
-Copyright @copyright{} 2009--2012 degli autori.
+Copyright @copyright{} 2009--2014 degli autori.
 
 @quotation
 Permission is granted to copy, distribute and/or modify this
index d7782a25236356648d92730f136f766c488dc7fc..ea80ad84612a84ede807e428c71d43cbda1d6310 100644 (file)
@@ -20,7 +20,7 @@
 
 @c `Learning Manual' was born 1999-10-10 with git commit b9abaac...
 @macro copyrightDeclare
-Copyright @copyright{} 1999--2012 by the authors.
+Copyright @copyright{} 1999--2014 by the authors.
 @end macro
 
 @set FDL
index 989f0443cd808a58efc7a7c2482624e7c9504971..6e58b30222db1cb70b9b1c94ca2cf140bd92dc76 100644 (file)
@@ -8,7 +8,7 @@
     Guide, node Updating translation committishes..
 @end ignore
 
-@c \version "2.17.28"
+@c \version "2.19.2"
 
 @ignore
 Tutorial guidelines:  (different from policy.txt!)
@@ -256,7 +256,7 @@ aes4 c b c
 付加することによって作成されます。
 
 @lilypond[verbatim,quote,relative=2]
-g4~ g c2~ | c4~ c8 a~ a2 |
+g4~ 4 c2~ | 4~ 8 a~ 2 |
 @end lilypond
 
 
@@ -301,7 +301,7 @@ g4\( g8( a) b( c) b4\)
 スラーとタイはネストさせることができます。
 
 @lilypond[verbatim,quote,relative=2]
-c4~( c8 d~ d4 e)
+c4~( c8 d~ 4 e)
 @end lilypond
 
 @seealso
@@ -941,7 +941,7 @@ LilyPond での多声音楽はまだ説明していないコンセプトを用
 
 @lilypond[verbatim,quote,relative=2]
 <<
-  { a4 g2 f4~ f4 } \\
+  { a4 g2 f4~ 4 } \\
   { r4 g4 f2 f4 }
 >>
 @end lilypond
@@ -954,7 +954,7 @@ LilyPond での多声音楽はまだ説明していないコンセプトを用
 
 @lilypond[verbatim,quote,relative=2]
 <<
-  { a4 g2 f4~ f4 } \\
+  { a4 g2 f4~ 4 } \\
   { s4 g4 f2 f4 }
 >>
 @end lilypond
@@ -965,13 +965,13 @@ LilyPond での多声音楽はまだ説明していないコンセプトを用
 @lilypond[verbatim,quote,relative=2]
 <<
   \new Staff <<
-    { a4 g2 f4~ f4 } \\
+    { a4 g2 f4~ 4 } \\
     { s4 g4 f2 f4 }
   >>
   \new Staff <<
     \clef bass
     { <c g>1 ~ <c g>4 } \\
-    { e,,4 d e2 ~ e4}
+    { e,,4 d e2 ~ 4}
   >>
 >>
 @end lilypond
@@ -1215,7 +1215,7 @@ song.ly:12:46: warning: barcheck failed at: 3/8
     \clef "bass"
     \key c \major
     \time 6/8
-    c4.~ c8 d b | c8([ d]) b c d b | c8
+    c4.~ 8 d b | c8([ d]) b c d b | c8
   }
   \addlyrics {
     Lar -- go_al fac -- | to -- tum del -- la cit -- | tÃ
@@ -1246,7 +1246,7 @@ song.ly:12:46: warning: barcheck failed at: 3/8
     \key f \major
     \time 6/8
     \partial 8
-    c8 | c8([ bes]) a a([ g]) f | f'4. b, | c4.~ c4
+    c8 | c8([ bes]) a a([ g]) f | f'4. b, | c4.~ 4
   }
   \addlyrics {
     Let | flee -- cy flocks the | hills a -- | dorn, __
index 5122a524b8a8888b2ce01acae971114414d17d2a..975505a86faa79f2737975227cd9cff66fb47255 100644 (file)
@@ -8,7 +8,7 @@
     Guide, node Updating translation committishes..
 @end ignore
 
-@c \version "2.17.29"
+@c \version "2.19.2"
 
 @c Translators: Yoshiki Sawada
 @c Translation status: post-GDP
@@ -744,7 +744,7 @@ LilyPond の楽譜の中で最も低レベルで、最も基礎的であり、
   c16 d e f
   %    Voice "1"     Voice "2"                 Voice "3"
   << { g4 f e } \\ { r8 e4 d c8 ~ } >> |
-  << { d2 e2 }  \\ { c8 b16 a b8 g ~ g2 } \\ { s4 b4 c2 } >> |
+  << { d2 e2 }  \\ { c8 b16 a b8 g ~ 2 } \\ { s4 b4 c2 } >> |
 }
 @end lilypond
 
@@ -783,7 +783,7 @@ LilyPond の楽譜の中で最も低レベルで、最も基礎的であり、
     { d2 e }
   \\
      % Voice 2 continues
-    { c8 b16 a b8 g~ g2 }
+    { c8 b16 a b8 g~ 2 }
   \\
     {
       \voiceThreeStyle
@@ -1061,25 +1061,25 @@ LilyPond は音符の水平方向の位置を調節するための手段をい
 @lilypond[quote,ragged-right,verbatim]
 \relative c' {
   % Default behavior or behavior after \oneVoice
-  c4 d8~ d e4( f | g4 a) b-> c |
+  c4 d8~ 8 e4( f | g4 a) b-> c |
 }
 @end lilypond
 
 @lilypond[quote,ragged-right,verbatim]
 \relative c' {
   \voiceOne
-  c4 d8~ d e4( f | g4 a) b-> c |
+  c4 d8~ 8 e4( f | g4 a) b-> c |
   \oneVoice
-  c,4 d8~ d e4( f | g4 a) b-> c |
+  c,4 d8~ 8 e4( f | g4 a) b-> c |
 }
 @end lilypond
 
 @lilypond[quote,ragged-right,verbatim]
 \relative c' {
   \voiceTwo
-  c4 d8~ d e4( f | g4 a) b-> c |
+  c4 d8~ 8 e4( f | g4 a) b-> c |
   \oneVoice
-  c,4 d8~ d e4( f | g4 a) b-> c |
+  c,4 d8~ 8 e4( f | g4 a) b-> c |
 }
 @end lilypond
 
@@ -1108,7 +1108,7 @@ LilyPond は音符の水平方向の位置を調節するための手段をい
     \new Voice {
       % Set stems, etc., down
       \voiceTwo
-      r8 e4 d c8~ | c8 b16 a b8 g~ g2 |
+      r8 e4 d c8~ | 8 b16 a b8 g~ 2 |
     }
     % Initiate third voice
     \new Voice {
@@ -1135,7 +1135,7 @@ LilyPond は音符の水平方向の位置を調節するための手段をい
       \voiceTwo
       r8 e4 d c8~ |
       <<
-        { c8 b16 a b8 g~ g2 | }
+        { c8 b16 a b8 g~ 2 | }
         \new Voice {
           \voiceThree
           s4 b c2 |
@@ -1165,7 +1165,7 @@ LilyPond は音符の水平方向の位置を調節するための手段をい
   \new Voice {
     % Set stems, etc, down
     \voiceTwo
-    s4 r8 e4 d c8~ | c8 b16 a b8 g~ g2 |
+    s4 r8 e4 d c8~ | 8 b16 a b8 g~ 2 |
   }
   % Initiate third voice
   \new Voice {
@@ -1301,7 +1301,7 @@ LilyPond がデフォルトで使用する自動連桁は楽器だけの音楽
 global = { \key f \major \time 6/8 \partial 8 }
 
 SopOneMusic = \relative c'' {
-  c8 | c8([ bes)] a a([ g)] f | f'4. b, | c4.~ c4
+  c8 | c8([ bes)] a a([ g)] f | f'4. b, | c4.~ 4
 }
 SopOneLyrics = \lyricmode {
   Let | flee -- cy flocks the | hills a -- dorn, __
@@ -3019,15 +3019,15 @@ ManualOneVoiceOneMusic = \relative g' {
   d2 c |
 }
 ManualOneVoiceTwoMusic = \relative c' {
-  ees16 d ees8~ ees16 f ees d c8 d~ d c~ |
-  c8 c4 b8 c8. g16 c b c d |
+  ees16 d ees8~ 16 f ees d c8 d~ d c~ |
+  8 c4 b8 c8. g16 c b c d |
 }
 ManualTwoMusic = \relative c' {
-  c16 b c8~ c16 b c g a8 g~ g16 g aes ees |
-  f16 ees f d g aes g f ees d ees8~ ees16 f ees d |
+  c16 b c8~ 16 b c g a8 g~ 16 g aes ees |
+  f16 ees f d g aes g f ees d ees8~ 16 f ees d |
 }
 PedalOrganMusic = \relative c {
-  r8 c16 d ees d ees8~ ees16 a, b g c b c8 |
+  r8 c16 d ees d ees8~ 16 a, b g c b c8 |
   r16 g ees f g f g8 c,2 |
 }
 
index ff31215f2d54618bb50ce48119e2e5c080753b6a..d6a5117a925bbc6ed8b9bb076d6cf43e5299ce5f 100644 (file)
@@ -8,7 +8,7 @@
     Guide, node Updating translation committishes..
 @end ignore
 
-@c \version "2.17.20"
+@c \version "2.19.2"
 
 @c Translators: Yoshiki Sawada
 @c Translation status: post-GDP
@@ -3100,12 +3100,12 @@ a8 \( ( a'16 ) a \)
 {
   \time 4/2
   <<
-    { c'1 ~ c'2. e'8 f' }
+    { c'1 ~ 2. e'8 f' }
     \\
     { e''8 e'' e'' e''  e'' e'' e'' e''  f''2 g'' }
   >>
   <<
-    { c'1 ~ c'2. e'8 f' }
+    { c'1 ~ 2. e'8 f' }
     \\
     { e''8 e'' e'' e''  e'' e'' e'' e''  f''2 g'' }
  >>
@@ -3123,7 +3123,7 @@ a8 \( ( a'16 ) a \)
 {
   \time 4/2
   <<
-    { c'1 ~ c'2. e'8 f' }
+    { c'1 ~ 2. e'8 f' }
     \\
     {
       \override Beam.positions = #'(-1 . -1)
@@ -3131,7 +3131,7 @@ a8 \( ( a'16 ) a \)
     }
   >>
   <<
-    { c'1 ~ c'2. e'8 f' }
+    { c'1 ~ 2. e'8 f' }
     \\
     { e''8 e'' e'' e''  e'' e'' e'' e''  f''2 g'' }
   >>
@@ -3327,7 +3327,7 @@ rhMusic = \relative c'' {
       { c,8 d fis bes a }  % メイン ボイスの続き
       \new Voice {
         \voiceTwo
-        c,8~ c2
+        c,8~ 2
       }
       \new Voice {
         \voiceThree
@@ -3388,7 +3388,7 @@ rhMusic = \relative c'' {
       { c,8 d fis bes a }  % メイン ボイスの続き
       \new Voice {
         \voiceTwo
-        c,8~ c2
+        c,8~ 2
       }
       \new Voice {
         \voiceThree
@@ -3466,7 +3466,7 @@ rhMusic = \relative c'' {
       { c,8 d fis bes a }  % メイン ボイスの続き
       \new Voice {
         \voiceTwo
-        c,8~ c2
+        c,8~ 2
       }
       \new Voice {
         \voiceThree
@@ -3550,7 +3550,7 @@ rhMusic = \relative c'' {
       { c,8 d fis bes a }  % メイン ボイスの続き
       \new Voice {
         \voiceTwo
-        c,8~ c2
+        c,8~ 2
       }
       \new Voice {
         \voiceThree
@@ -3794,7 +3794,7 @@ lhMusic = \relative c' {
 2 つのボイスを使い、そのうちの 1 つにタイで結んだ音符を置きます:
 
 @lilypond[quote,fragment,relative=2]
-<< { b8~ b\noBeam } \\ { b8[ g] } >>
+<< { b8~ 8\noBeam } \\ { b8[ g] } >>
 @end lilypond
 
 @noindent
@@ -3808,7 +3808,7 @@ lhMusic = \relative c' {
 <<
   {
     \tweak Stem.transparent ##t
-    b8~ b\noBeam
+    b8~ 8\noBeam
   }
 \\
   { b8[ g] }
@@ -3823,7 +3823,7 @@ lhMusic = \relative c' {
   {
     \tweak Stem.transparent ##t
     \tweak Stem.length #8
-    b8~ b\noBeam
+    b8~ 8\noBeam
   }
 \\
   { b8[ g] }
@@ -3846,7 +3846,7 @@ lhMusic = \relative c' {
     \single \hide Stem
     \single \hide Flag
     \tweak Stem.length #8
-    b8~ b\noBeam
+    b8~ 8\noBeam
   }
 \\
   { b8[ g] }
index 0afb531979aa576b72ee3553cbe5a8366e03c56c..d714899256618f68b8d522a9e69bbd3bf2b9afca 100644 (file)
@@ -21,7 +21,7 @@
 
 @c `Notation Reference' was born 1999-10-11 with git commit 940dda0...
 @macro copyrightDeclare
-Copyright @copyright{} 1999--2012 by 著作者一同
+Copyright @copyright{} 1999--2014 by 著作者一同
 @end macro
 
 
index 8d3c5b837ceed3e5b51209d119aa199a45b56eb5..5217952593ea4b2b8849df6d1cfc33777ab239ed 100644 (file)
@@ -8,7 +8,7 @@
     Guide, node Updating translation committishes..
 @end ignore
 
-@c \version "2.17.30"
+@c \version "2.19.7"
 
 @c Translators: Yoshiki Sawada
 @c Translation status: post-GDP
@@ -1963,7 +1963,7 @@ Scheme 値の循環参照は、ハング アップまたはクラッシュ、@c
 通常、コンテキスト プロパティの名前は、@c
 小文字で始まる単語に大文字で始まる単語をつなげたものです。@c
 これらはたいてい音楽から記譜への翻訳を制御します
--- 例えば、@code{localKeySignature} (臨時記号を表示するかどうかを決定します)
+-- 例えば、@code{localAlterations} (臨時記号を表示するかどうかを決定します)
 や、@code{measurePosition} (小節線を表示するタイミングを決定します) です。@c
 コンテキスト プロパティは、楽曲の解釈をしている間、@c
 ずっと値を変更しておくことができます。@c
@@ -2575,7 +2575,7 @@ property (modified with @code{\set}) was created.
 ネストされた宣言を用いてキー値を個々に更新する方が安全です。
 
 @warning{ネストされた宣言は、コンテキスト プロパティ連想配列
-(@code{beamExceptions}, @code{keySignature}, @code{timeSignatureSettings} 等)
+(@code{beamExceptions}, @code{keyAlterations}, @code{timeSignatureSettings} 等)
 に対しては機能しません。@c
 これらのプロパティを変更するには、@c
 連想配列として丸ごと再定義するしかありません。}
@@ -4274,7 +4274,7 @@ Web でベジエ曲線が描かれる様子を示すアニメーションを@c
 
 @lilypond[verbatim,quote,relative=1]
 <<
-  { e1 ~ e }
+  { e1 ~ 1 }
 \\
   { r4 <g c,> <g c,> <g c,> }
 >>
@@ -4316,7 +4316,7 @@ Web でベジエ曲線が描かれる様子を示すアニメーションを@c
 <<
   {
     \shape #'((0 . 0.5) (0 . 0.5) (0 . 0.5) (0 . 0.5)) Tie
-    e1~ e
+    e1~ 1
   }
 \\
   { r4 <g c,> <g c,> <g c,> }
index 016491cf3e7452dfee4f254e1a55dcfd1e1974f2..b4df2c0fa7f1ffce628c0afc572bb70232f5a6da 100644 (file)
@@ -7,7 +7,7 @@
     Guide, node Updating translation committishes..
 @end ignore
 
-@c \version "2.17.30"
+@c \version "2.19.2"
 
 @c Translators: Yoshiki Sawada
 @c Translation status: post-GDP
@@ -184,7 +184,7 @@ symbols = {
   c4-.^"Allegro" d( e)
   f4-.\f g a^\fermata
   \mark \default
-  c8_.\<\( c16 c~ c2\!
+  c8_.\<\( c16 c~ 2\!
   c'2.\prall\)
 }
 
@@ -210,7 +210,7 @@ symbols = {
   c4-.^"Allegro" d( e)
   f4-.\f g a^\fermata
   \mark \default
-  c8_.\<\( c16 c~ c2\!
+  c8_.\<\( c16 c~ 2\!
   c'2.\prall\)
 }
 
@@ -279,7 +279,7 @@ symbols = {
 
 @lilypond[quote,verbatim]
 guitar = \relative c' {
-  r8 <gis-2 cis-3 b-0>~ q4 q8~ q q4
+  r8 <gis-2 cis-3 b-0>~ q4 q8~ 8 q4
 }
 
 \new StaffGroup <<
@@ -300,7 +300,7 @@ guitar = \relative c' {
 ties = \relative c' {
   \repeat volta 2 {
     e2. f4~
-    f2 g2~
+    2 g2~
   }
   \alternative {
      { g4 f2. }
@@ -340,7 +340,7 @@ ties = \relative c' {
 ties = \relative c' {
   \repeat volta 2 {
     e2. f4~
-    f2 g2~ }
+    2 g2~ }
   \alternative {
     { g4 f2. }
     { g4\repeatTie c,2. }
index 0f02c9a92200136003834bd0e996791261aabab6..6ed135dd7af9a3222e4ff3e4d1a5271141a13c66 100644 (file)
@@ -7,7 +7,7 @@
     Guide, node Updating translation committishes..
 @end ignore
 
-@c \version "2.17.15"
+@c \version "2.19.2"
 
 
 @c Translators: Yoshiki Sawada
@@ -2286,7 +2286,7 @@ Unicode U+03BE の文字を入力します
   }
   \addlyrics { O \markup { \concat { Ph \char ##x0153 be! } } }
 }
-\markup { "Copyright 2008--2012" \char ##x00A9 }
+\markup { "Copyright 2008--2014" \char ##x00A9 }
 @end lilypond
 
 @cindex copyright sign (著作権記号)
@@ -2961,8 +2961,8 @@ midiMinimumVolume + (midiMaximumVolume - midiMinimumVolume) * fraction
       \set Staff.midiInstrument = #"flute"
       \new Voice \relative c''' {
         r2 g\mp g fis~
-        fis4 g8 fis e2~
-        e4 d8 cis d2
+        4 g8 fis e2~
+        4 d8 cis d2
       }
     }
     \new Staff {
@@ -3012,8 +3012,8 @@ MIDI 出力の品質を著しく高めることができます。
       \set Staff.midiMaximumVolume = #0.9
       \new Voice \relative c''' {
         r2 g\mp g fis~
-        fis4 g8 fis e2~
-        e4 d8 cis d2
+        4 g8 fis e2~
+        4 d8 cis d2
       }
     }
     \new Staff {
@@ -3081,8 +3081,8 @@ MIDI 最小/最大ボリューム プロパティが設定されていない場
       \set Staff.midiInstrument = #"flute"
       \new Voice \relative c''' {
         r2 g\mp g fis ~
-        fis4 g8 fis e2 ~
-        e4 d8 cis d2
+        4 g8 fis e2 ~
+        4 d8 cis d2
       }
     }
     \new Staff {
index 9968a12829fd92e88880a39e9677ffad317c452f..b3082440156c9d9021a6fe7575417c7c9097139c 100644 (file)
@@ -7,7 +7,7 @@
     Guide, node Updating translation committishes..
 @end ignore
 
-@c \version "2.17.30"
+@c \version "2.19.2"
 
 @c Translators: Yoshiki Sawada
 @c Translation status: post-GDP
@@ -523,7 +523,7 @@ bellstaff = {
   \drummode {
     \time 2/4
     rb8 rb cb cb16 rb-> ~ |
-    rb16 rb8 rb16 cb8 cb |
+    16 rb8 rb16 cb8 cb |
   }
 }
 @end lilypond
index eb6713859b40136017293d04a7e7bacbb800b5a3..5e64e0153dbdd75e637fee2fdaf8486d89d2babf 100644 (file)
@@ -6,7 +6,7 @@
     version that you are working on.  See TRANSLATION for details.
 @end ignore
 
-@c \version "2.17.18"
+@c \version "2.19.2"
 
 @c Translators: Yoshiki Sawada
 @c Translation status: post-GDP
@@ -390,7 +390,7 @@ cis cis cis! cis? c c c! c?
 新しいシステム (訳者: 譜 1 行分のこと) の開始点でのみ譜刻されます:
 
 @lilypond[verbatim,quote,relative=2]
-cis1 ~ cis ~
+cis1 ~ 1 ~
 \break
 cis
 @end lilypond
@@ -3081,8 +3081,8 @@ a2 b c d \break
   e8 e g a a16( bes) a8 g
   \improvisationOn
   e8 ~
-  e2 ~ e8 f4 f8 ~
-  f2
+  2 ~ 8 f4 f8 ~
+  2
   \improvisationOff
   a16( bes) a8 g e
 }
index 9df79cd8f14d4919eb1f2270d36338f99d2c6ead..5c506a6e27724590b38359eaa5c218343660d98c 100644 (file)
@@ -476,11 +476,6 @@ voltaAdLib = \markup { 1. 2. 3... \text \italic { ad lib. } }
 @end lilypond
 
 
-@snippets
-
-@lilypondfile[verbatim,quote,texidoc,doctitle]
-{printing-a-repeat-sign-at-the-beginning-of-a-piece.ly}
-
 @seealso
 記譜法リファレンス:
 @ref{Bar lines},
index fdffd7a251bd85bbd604f3e3211d46f49b3092e4..7317cd0ef6b09a5accfb34c690670ca854ade2d4 100644 (file)
@@ -6,7 +6,7 @@
     version that you are working on.  See TRANSLATION for details.
 @end ignore
 
-@c \version "2.17.30"
+@c \version "2.19.2"
 
 @c Translators: Yoshiki Sawada
 @c Translation status: post-GDP
@@ -408,7 +408,7 @@ b16*4 c4
 タイはチルド記号 @code{~} を使って入力します:
 
 @lilypond[quote,verbatim,relative=2]
-a2 ~ a
+a2 ~ 2
 @end lilypond
 
 タイは、音符が小節線をまたがる場合か、リズムを表すためにドットを@c
@@ -421,8 +421,8 @@ a2 ~ a
 @c KEEP LY
 @lilypond[verbatim,quote]
 \relative c' {
-  r8 c8 ~ c2 r4 |
-  r8^"こうすべきではありません" c2 ~ c8 r4
+  r8 c8 ~ 2 r4 |
+  r8^"こうすべきではありません" c2 ~ 8 r4
 }
 @end lilypond
 
@@ -508,26 +508,26 @@ L.v. タイは以下のように入力します:
 
 @lilypond[quote, verbatim, relative=1]
 \tieDotted
-c2 ~ c
+c2 ~ 2
 \tieDashed
-c2 ~ c
+c2 ~ 2
 \tieHalfDashed
-c2 ~ c
+c2 ~ 2
 \tieHalfSolid
-c2 ~ c
+c2 ~ 2
 \tieSolid
-c2 ~ c
+c2 ~ 2
 @end lilypond
 
 破線パターンのカスタマイズを指定することができます:
 
 @lilypond[quote, verbatim, relative=1]
 \tieDashPattern #0.3 #0.75
-c2 ~ c
+c2 ~ 2
 \tieDashPattern #0.7 #1.5
-c2 ~ c
+c2 ~ 2
 \tieSolid
-c2 ~ c
+c2 ~ 2
 @end lilypond
 
 タイの破線パターン定義の構造は、スラーの破線パターン定義と同じです。@c
index b88b36a3197404c792a68e8949b75118e7da4729..3c673471c5dd081fa4ae2f071ac3e5a8ace8e853 100644 (file)
@@ -6,7 +6,7 @@
     version that you are working on.  See TRANSLATION for details.
 @end ignore
 
-@c \version "2.17.28"
+@c \version "2.19.2"
 
 
 @c Translators: Yoshiki Sawada
@@ -409,7 +409,7 @@ warning: ignoring too many clashing note columns
   \new Voice = "first"
     { \voiceOne r8 r16 g e8. f16 g8[ c,] f e16 d }
   \new Voice= "second"
-    { \voiceTwo d16 c d8~ d16 b c8~ c16 b c8~ c16 b8. }
+    { \voiceTwo d16 c d8~ 16 b c8~ 16 b c8~ 16 b8. }
 >>
 @end lilypond
 
@@ -486,7 +486,7 @@ warning: ignoring too many clashing note columns
 <<
   { r8 r16 g e8. f16 g8[ c,] f e16 d }
   \\
-  { d16 c d8~ d16 b c8~ c16 b c8~ c16 b8. }
+  { d16 c d8~ 16 b c8~ 16 b c8~ 16 b8. }
 >>
 @end lilypond
 
@@ -1129,12 +1129,12 @@ instrumentTwo = \relative c' {
 \parallelMusic #'(voiceA voiceB voiceC) {
   % Bar 1
   r8 g'16 c'' e'' g' c'' e'' r8 g'16 c'' e'' g' c'' e'' |
-  r16 e'8.~   e'4            r16 e'8.~   e'4            |
+  r16 e'8.~   4              r16 e'8.~   4              |
   c'2                        c'2                        |
 
   % Bar 2
   r8 a'16 d'' f'' a' d'' f'' r8 a'16 d'' f'' a' d'' f'' |
-  r16 d'8.~   d'4            r16 d'8.~   d'4            |
+  r16 d'8.~   4              r16 d'8.~   4              |
   c'2                        c'2                        |
 
 }
@@ -1154,12 +1154,12 @@ instrumentTwo = \relative c' {
 \parallelMusic #'(voiceA voiceB voiceC) {
   % Bar 1
   r8 g16 c e g, c e r8 g,16 c e g, c e  |
-  r16 e8.~ e4       r16 e8.~  e4        |
+  r16 e8.~ 4        r16 e8.~  4         |
   c2                c                   |
 
   % Bar 2
   r8 a,16 d f a, d f r8 a,16 d f a, d f |
-  r16 d8.~  d4       r16 d8.~  d4       |
+  r16 d8.~  4        r16 d8.~  4        |
   c2                 c                  |
 
  }
index 7f048afa84f778516834e13f59a4dac364e8586d..4b181ae65b1cea3b2d6cb4ab556b3aa1d5ee3dfe 100644 (file)
@@ -6,7 +6,7 @@
     version that you are working on.  See TRANSLATION for details.
 @end ignore
 
-@c \version "2.17.30"
+@c \version "2.19.2"
 
 
 @c Translators: Yoshiki Sawada
@@ -1043,7 +1043,7 @@ d4 e f g
   R1*16
   \instrumentSwitch "contrabassoon"
   c,,2 g \break
-  c,1 ~ | c1
+  c,1 ~ | 1
 }
 @end lilypond
 
index 0878902eb92a2f9f36e9f1da936d3fbb2cb93324..bb6a93e570b43808d63bf956441bc5ace8e9d864 100644 (file)
@@ -8,7 +8,7 @@
     Guide, node Updating translation committishes..
 @end ignore
 
-@c \version "2.17.30"
+@c \version "2.19.2"
 
 @c Translators: Yoshiki Sawada
 @c Translation status: post-GDP
   \new Voice = "melody" {
     \time 3/4
     f4 g2 ~ |
-    g4 e2 ~ |
-    e8
+    4 e2 ~ |
+    8
   }
   \new Lyrics \lyricsto "melody" {
     Ky -- ri -- e __
     \time 3/4
     \set melismaBusyProperties = #'()
     c4 d ( e )
-    g8 [ f ] f4 ~ f
+    g8 [ f ] f4 ~ 4
   }
   \new Lyrics \lyricsto "melody" {
     Ky -- ri -- e e -- le -- i -- son
     \time 3/4
     \set melismaBusyProperties = #'()
     c4 d ( e )
-    g8 [ f ] ~ f4 ~ f
+    g8 [ f ] ~ 4 ~ f
   }
   \new Lyrics \lyricsto "melody" {
     Ky -- ri -- _ e __ _ _ _
index 3fa8d617f3c269e798c7fcebb4735d6ba5c72cfe..bf2dc399a0537828de91c3423a2413db6ca13e41 100644 (file)
@@ -21,7 +21,7 @@
 
 @c `Usage' was born 1999-10-10 with git commit c82c30c...
 @macro copyrightDeclare
-Copyright @copyright{} 1999--2012 by the authors.
+Copyright @copyright{} 1999--2014 by the authors.
 @end macro
 
 @set FDL
index a44e2854be363a83d6d09656b8459a5a1f6a1cf5..9cde7d4904b0b844aa69cf14038f0834b0438736 100644 (file)
@@ -15,7 +15,7 @@
 
 @c `Web' was imported 2009-08-05 with git commit b938d71...
 @c @macro copyrightDeclare
-@c Copyright @copyright{} 2009--2012 by the authors.
+@c Copyright @copyright{} 2009--2014 by the authors.
 @c @end macro
 
 @set FDL
@@ -35,7 +35,7 @@
 @c Translators: Yoshiki Sawada, Yoshinobu Ishizaki
 
 @copying
-Copyright @copyright{} 2009--2012 by the authors.
+Copyright @copyright{} 2009--2014 by the authors.
 
 @c next line is necessary for broken pre-4.13 texinfo's
 @c install-info, so leave it there until we officially
index 98b329cc49e6a16a507b6adc60d5a299399ae1fc..c602d27799462a42a719bff8e957d6fad9db474d 100644 (file)
@@ -20,7 +20,7 @@ This file provides an introduction to LilyPond version
 
 @c `Learning Manual' was born 1999-10-10 with git commit b9abaac...
 @macro copyrightDeclare
-Copyright @copyright{} 1999--2012 by the authors.
+Copyright @copyright{} 1999--2014 by the authors.
 @end macro
 
 @set FDL
index 8c833c76f56e81f2d5e91456ba0dc422125dd185..7b07c8e959fb6047acbfb238c1cf898e2236cafd 100644 (file)
@@ -8,7 +8,7 @@
     Guide, node Updating translation committishes..
 @end ignore
 
-@c \version "2.17.28"
+@c \version "2.19.2"
 
 @ignore
 Tutorial guidelines:  (different from policy.txt!)
@@ -281,7 +281,7 @@ A @notation{tie} is created by appending a tilde @code{~} to the
 first note being tied.
 
 @lilypond[verbatim,quote,relative=2]
-g4~ g c2~ | c4~ c8 a~ a2 |
+g4~ 4 c2~ | 4~ 8 a~ 2 |
 @end lilypond
 
 @node Slurs
@@ -330,7 +330,7 @@ indicate the @notation{articulation} of notes, and can be used on
 larger groups of notes.  Slurs and ties can be nested.
 
 @lilypond[verbatim,quote,relative=2]
-c4~( c8 d~ d4 e)
+c4~( c8 d~ 4 e)
 @end lilypond
 
 
@@ -1194,7 +1194,7 @@ Here's an example from Rossini's @notation{Figaro}, where
     \clef "bass"
     \key c \major
     \time 6/8
-    c4.~ c8 d b | c8([ d]) b c d b | c8
+    c4.~ 8 d b | c8([ d]) b c d b | c8
   }
   \addlyrics {
     Lar -- go_al fac -- | to -- tum del -- la cit -- | tà
@@ -1224,7 +1224,7 @@ example from Handel's @notation{Judas Maccabæus}:
     \key f \major
     \time 6/8
     \partial 8
-    c8 | c8([ bes]) a a([ g]) f | f'4. b, | c4.~ c4
+    c8 | c8([ bes]) a a([ g]) f | f'4. b, | c4.~ 4
   }
   \addlyrics {
     Let | flee -- cy flocks the | hills a -- | dorn, __
index 9a2f1e824f5635bd494326d7e0cf2a89bdd23ca5..60e67ee1358a51eb8b88b5100d5ca4cff4a71150 100644 (file)
@@ -8,7 +8,7 @@
     Guide, node Updating translation committishes..
 @end ignore
 
-@c \version "2.17.29"
+@c \version "2.19.2"
 
 @node Fundamental concepts
 @chapter Fundamental concepts
@@ -125,10 +125,9 @@ advisable to always create staves and voices explicitly.}
 For now, though, let us return to the first example and examine the
 @code{\score} command, leaving the others to default.
 
-A @code{\score} block must always contain just one music expression,
-and this must appear immediately after the @code{\score} command.
-Remember that a music expression could be anything from a single
-note to a huge compound expression like
+A @code{\score} block must always contain exactly one music
+expression.  Remember that a music expression could be anything
+from a single note to a huge compound expression like
 
 @example
 @{
@@ -269,11 +268,11 @@ We didn't skip over it at all.  The big mystery is simply that
 there @emph{is} no mystery.  This line explains it all:
 
 @quotation
-@emph{A @code{\score} block must begin with a compound music expression.}
+@emph{A @code{\score} block must contain exactly one music expression.}
 @end quotation
 
 @noindent
-To understand what is meant by a music expression and a compound
+To understand what is meant by a
 music expression, you may find it useful to review the tutorial,
 @ref{Music expressions explained}.  In that section, we saw how to
 build big music expressions from small pieces -- we started from
@@ -684,7 +683,7 @@ of slurs, stems, ties, dynamics etc., is set appropriately.
   c16 d e f
   %    Voice "1"     Voice "2"                Voice "3"
   << { g4 f e } \\ { r8 e4 d c8~ } >> |
-  << { d2 e }   \\ { c8 b16 a b8 g~ g2 } \\ { s4 b c2 } >> |
+  << { d2 e }   \\ { c8 b16 a b8 g~ 2 } \\ { s4 b c2 } >> |
 }
 @end lilypond
 
@@ -722,7 +721,7 @@ blue triangle voice.
     { d2 e }
   \\
      % Voice 2 continues
-    { c8 b16 a b8 g~ g2 }
+    { c8 b16 a b8 g~ 2 }
   \\
     {
       \voiceThreeStyle
@@ -1005,25 +1004,25 @@ markup, ties, slurs, and dynamics:
 @lilypond[quote,ragged-right,verbatim]
 \relative c' {
   % Default behavior or behavior after \oneVoice
-  c4 d8~ d e4( f | g4 a) b-> c |
+  c4 d8~ 8 e4( f | g4 a) b-> c |
 }
 @end lilypond
 
 @lilypond[quote,ragged-right,verbatim]
 \relative c' {
   \voiceOne
-  c4 d8~ d e4( f | g4 a) b-> c |
+  c4 d8~ 8 e4( f | g4 a) b-> c |
   \oneVoice
-  c,4 d8~ d e4( f | g4 a) b-> c |
+  c,4 d8~ 8 e4( f | g4 a) b-> c |
 }
 @end lilypond
 
 @lilypond[quote,ragged-right,verbatim]
 \relative c' {
   \voiceTwo
-  c4 d8~ d e4( f | g4 a) b-> c |
+  c4 d8~ 8 e4( f | g4 a) b-> c |
   \oneVoice
-  c,4 d8~ d e4( f | g4 a) b-> c |
+  c,4 d8~ 8 e4( f | g4 a) b-> c |
 }
 @end lilypond
 
@@ -1051,7 +1050,7 @@ permitting a phrasing slur to be drawn over them.
     \new Voice {
       % Set stems, etc., down
       \voiceTwo
-      r8 e4 d c8~ | c8 b16 a b8 g~ g2 |
+      r8 e4 d c8~ | 8 b16 a b8 g~ 2 |
     }
     % Initiate third voice
     \new Voice {
@@ -1082,7 +1081,7 @@ typeset the music:
       \voiceTwo
       r8 e4 d c8~ |
       <<
-        { c8 b16 a b8 g~ g2 | }
+        { c8 b16 a b8 g~ 2 | }
         \new Voice {
           \voiceThree
           s4 b c2 |
@@ -1113,7 +1112,7 @@ as here:
   \new Voice {
     % Set stems, etc, down
     \voiceTwo
-    s4 r8 e4 d c8~ | c8 b16 a b8 g~ g2 |
+    s4 r8 e4 d c8~ | 8 b16 a b8 g~ 2 |
   }
   % Initiate third voice
   \new Voice {
@@ -1250,7 +1249,7 @@ rather than music.
 global = { \key f \major \time 6/8 \partial 8 }
 
 SopOneMusic = \relative c'' {
-  c8 | c8([ bes)] a a([ g)] f | f'4. b, | c4.~ c4
+  c8 | c8([ bes)] a a([ g)] f | f'4. b, | c4.~ 4
 }
 SopOneLyrics = \lyricmode {
   Let | flee -- cy flocks the | hills a -- dorn, __
@@ -2439,7 +2438,15 @@ lower = \relative c, {
 }
 @end lilypond
 
-None of the templates provides this layout exactly.  The nearest is
+@warning{This layout can be achieved very easily using the built-in
+template: @code{satb.ly}, see @ref{Built-in templates}.  But for ease
+of use this template deliberately hides the necessary context
+structure, instead providing it automatically.  So for purposes of
+learning let us see how to build this up from scratch.  You may need
+to do this if the built-in template does not meet your needs
+adequately.}
+
+The nearest copy-and-edit template to this layout is
 @ref{SATB vocal score and automatic piano reduction} -- but we need
 to change the layout and add a piano
 accompaniment which is not derived automatically from the vocal parts.
@@ -2915,15 +2922,15 @@ ManualOneVoiceOneMusic = \relative g' {
   d2 c |
 }
 ManualOneVoiceTwoMusic = \relative c' {
-  ees16 d ees8~ ees16 f ees d c8 d~ d c~ |
-  c8 c4 b8 c8. g16 c b c d |
+  ees16 d ees8~ 16 f ees d c8 d~ d c~ |
+  8 c4 b8 c8. g16 c b c d |
 }
 ManualTwoMusic = \relative c' {
-  c16 b c8~ c16 b c g a8 g~ g16 g aes ees |
-  f16 ees f d g aes g f ees d ees8~ ees16 f ees d |
+  c16 b c8~ 16 b c g a8 g~ 16 g aes ees |
+  f16 ees f d g aes g f ees d ees8~ 16 f ees d |
 }
 PedalOrganMusic = \relative c {
-  r8 c16 d ees d ees8~ ees16 a, b g c b c8 |
+  r8 c16 d ees d ees8~ 16 a, b g c b c8 |
   r16 g ees f g f g8 c,2 |
 }
 
index 2370ff1f3b77c72dbb21b3b28e7e00ef2948f1a1..cc35e50da7c4c7827b407d35f1e5b621df466b71 100644 (file)
@@ -8,7 +8,7 @@
     Guide, node Updating translation committishes..
 @end ignore
 
-@c \version "2.16.0"
+@c \version "2.19.2"
 
 @node Templates
 @appendix Templates
@@ -18,6 +18,7 @@ already set up for you.  Just add notes, run LilyPond, and enjoy
 beautiful printed scores!
 
 @menu
+* Built-in templates::
 * Single staff templates::
 * Piano templates::
 * String quartet templates::
@@ -28,6 +29,177 @@ beautiful printed scores!
 @end menu
 
 
+@node Built-in templates
+@appendixsec Built-in templates
+
+A template, suitable for a range of choral music, is built into
+LilyPond.  This may be used to create simple choral music, with or
+without piano accompaniment, in two or four staves.  Unlike other
+templates, this template is @q{built-in}, which means it does not
+need to be copied and edited:  instead it is simply 
+@code{\include}'d in the input file.
+
+@warning {Unlike most included files, this built-in template must be
+@code{\include}'d at the @emph{end} of the input file.}
+
+The required music expressions are entered by defining values for
+specific variables.  These definition must come before the
+@code{\include}'d file.
+
+The music may be set out with one or two voices per staff by setting
+@code{TwoVoicesPerStaff} to @code{##f} or @code{##t} respectively.
+
+Here's the complete input file for producing a full four-part SATB
+arrangement with individual lyrics and piano accompaniment:
+
+@lilypond[verbatim, quote]
+  SopranoMusic = \relative { a'4\f a8 a a4 a }
+  SopranoLyrics = \lyricmode { Sop -- ra -- no ly -- rics }
+  AltoMusic = \relative { d'4\f d d d }
+  AltoLyrics = \lyricmode { Al -- to ly -- rics }
+  TenorMusic = \relative { a4\p a a a }
+  TenorLyrics = \lyricmode { Te -- nor ly -- rics }
+  BassMusic = \relative { c2\p c4 c }
+  BassLyrics = \lyricmode { Bass ly -- rics }
+  PianoRHMusic = \relative { c' e g c }
+  PianoDynamics = { s2\mp s4 s4 }
+  PianoLHMusic = \relative { c e g c }
+  \include "satb.ly"
+@end lilypond
+
+The same input can be used to produce a score with two voices
+per staff just by setting @code{TwoVoicesPerStaff} to @code{##t}.
+Again, each voice has individual lyrics.
+
+
+@lilypond[verbatim, quote]
+  SopranoMusic = \relative { a'4\f a8 a a4 a }
+  SopranoLyrics = \lyricmode { Sop -- ra -- no ly -- rics }
+  AltoMusic = \relative { d'4\f d d d }
+  AltoLyrics = \lyricmode { Al -- to ly -- rics }
+  TenorMusic = \relative { a4\p a a a }
+  TenorLyrics = \lyricmode { Te -- nor ly -- rics }
+  BassMusic = \relative { c2\p c4 c }
+  BassLyrics = \lyricmode { Bass ly -- rics }
+  PianoRHMusic = \relative { c' e g c }
+  PianoDynamics = { s2\mp s4 s4 }
+  PianoLHMusic = \relative { c e g c }
+  TwoVoicesPerStaff = ##t
+  \include "satb.ly"
+@end lilypond
+
+When @code{TwoVoicesPerStaff} is set to false or allowed to default,
+any of the music variables may be omitted to produce arrangements
+with fewer voices.  Here, for example, is how the input file for a
+Soprano/Bass duet might be written:
+
+@lilypond[verbatim,quote]
+  SopranoMusic = \relative { c'' c c c }
+  SopranoLyrics = \lyricmode { High voice ly -- rics }
+  BassMusic = \relative { a a a a }
+  BassLyrics = \lyricmode { Low voice ly -- rics }
+  \include "satb.ly"
+@end lilypond
+
+A second verse or alternative lyrics may be added to each of the
+parts:
+
+@lilypond[verbatim, quote]
+  SopranoMusic = \relative { a'4 a a a }
+  SopranoLyricsOne = \lyricsto "Soprano" {
+    \set stanza = "1."
+    Words to verse one
+  }
+  SopranoLyricsTwo = \lyricsto "Soprano" {
+    \set stanza = "2."
+    Words to verse two
+  }
+  \include "satb.ly"
+@end lilypond
+
+When the lyrics and rhythms are the same for every part, the vocal
+music is best arranged on two staves with two voices in each.  Up to
+nine verses may be provided.  Here's an unaccompanied example with
+just three verses.
+
+@lilypond[verbatim, quote]
+  SopranoMusic = \relative { a' a a a }
+  AltoMusic = \relative { f' f f f }
+  VerseOne = \lyricmode {
+    \set stanza = "1."
+    Words to verse one
+  }
+  VerseTwo = \lyricmode {
+    \set stanza = "2."
+    Words to verse two
+  }
+  VerseThree = \lyricmode {
+    \set stanza = "3."
+    Words to verse three
+  }
+  TenorMusic = \relative { a a a a }
+  BassMusic = \relative { f f f f }
+  TwoVoicesPerStaff = ##t
+  \include "satb.ly"
+@end lilypond
+
+Other variables may be given values.  The key signature and
+the time signature may be changed from the default:
+
+@lilypond[verbatim, quote]
+  Key = \key a \major
+  Time = {
+    \time 5/4
+    \tempo "Allegro" 4 = 144
+  }
+  SopranoMusic = \relative { gis' gis gis gis gis }
+  AltoMusic = \relative { cis' cis cis cis cis }
+  VerseOne = \lyricmode { Words to this du -- et }
+  TwoVoicesPerStaff = ##t
+  \include "satb.ly"
+@end lilypond
+
+The instrument names and/or the short instrument names may be
+changed:
+
+@lilypond[verbatim,quote]
+  SopranoMusic = \relative { c'' c c c }
+  SopranoLyrics = \lyricmode { High voice ly -- rics }
+  SopranoInstrumentName = "Soprano 1"
+  SopranoShortInstrumentName = "S1"
+  AltoMusic = \relative { a' a a a }
+  AltoLyrics = \lyricmode { Low voice ly -- rics }
+  AltoInstrumentName = "Soprano 2"
+  AltoShortInstrumentName = "S2"
+  \include "satb.ly"
+@end lilypond
+
+A descant may be added by defining values for the variable
+@code{DescantMusic} and descant lyrics may be provided by
+defining values for @code{DescantLyrics}.
+
+@code{\header} and @code{\paper} blocks may be added as normal.
+A @code{\layout} block may be provided as the value of the
+@code{Layout} variable:
+
+@example
+Layout = \layout @{ ... @}
+@end example
+
+The complete set of variables which may be changed can be seen by
+examining the file @file{ly/satb.ly}.
+
+@seealso
+Learning Manual:
+@ref{Organizing pieces with variables},
+@ref{Vocal ensembles templates},
+@ref{Extending the templates}.
+
+@knownissues
+More complex arrangements of SATB choral music are not possible with
+these simple built-in templates.
+
+
 @node Single staff templates
 @appendixsec Single staff templates
 
@@ -115,6 +287,11 @@ beautiful printed scores!
 @node Vocal ensembles templates
 @appendixsec Vocal ensembles templates
 
+The templates shown below should be copied into your score and edited
+there.  If you have a relatively simple SATB layout you may prefer to
+use the built-in templates, which can simply be @code{\include}'d, see
+@ref{Built-in templates}.
+
 @menu
 * SATB vocal score::
 * SATB vocal score and automatic piano reduction::
@@ -240,7 +417,7 @@ violin concerto as TchaikovskyPI, whereas perhaps you wish to print
 
 @ The `line-width' is for \header.
 @li lypond[quote,verbatim,ragged-right,line-width]
-\version "2.16.0"
+\version "2.19.2"
 \header {
   dedication = "dedication"
   title = "Title"
index 7d428a57a8c685adfe65b02c8e03782a3c4e3b2c..137a49828600a5900da1b9ffcf8bbb425a41829a 100644 (file)
@@ -8,7 +8,7 @@
     Guide, node Updating translation committishes..
 @end ignore
 
-@c \version "2.17.20"
+@c \version "2.19.2"
 
 @node Tweaking output
 @chapter Tweaking output
@@ -3150,12 +3150,12 @@ collide with the ties:
 {
   \time 4/2
   <<
-    { c'1 ~ c'2. e'8 f' }
+    { c'1 ~ 2. e'8 f' }
     \\
     { e''8 e'' e'' e''  e'' e'' e'' e''  f''2 g'' }
   >>
   <<
-    { c'1 ~ c'2. e'8 f' }
+    { c'1 ~ 2. e'8 f' }
     \\
     { e''8 e'' e'' e''  e'' e'' e'' e''  f''2 g'' }
   >>
@@ -3174,7 +3174,7 @@ say, 1:
 {
   \time 4/2
   <<
-    { c'1 ~ c'2. e'8 f' }
+    { c'1 ~ 2. e'8 f' }
     \\
     {
       \override Beam.positions = #'(-1 . -1)
@@ -3182,7 +3182,7 @@ say, 1:
     }
   >>
   <<
-    { c'1 ~ c'2. e'8 f' }
+    { c'1 ~ 2. e'8 f' }
     \\
     { e''8 e'' e'' e''  e'' e'' e'' e''  f''2 g'' }
   >>
@@ -3286,7 +3286,7 @@ rhMusic = \relative c'' {
     \time 6/4
     \mergeDifferentlyHeadedOn
     \mergeDifferentlyDottedOn
-    bes2.^\markup { \bold "Moderato" } r8
+    bes2.\tempo "Moderato" r8
     <<
       { c,8 d fis bes a }
       \new Voice {
@@ -3371,7 +3371,7 @@ rhMusic = \relative c'' {
       { c,8 d fis bes a }  % continuation of main voice
       \new Voice {
         \voiceTwo
-        c,8~ c2
+        c,8~ 2
       }
       \new Voice {
         \voiceThree
@@ -3428,7 +3428,7 @@ rhMusic = \relative c'' {
       { c,8 d fis bes a }  % continuation of main voice
       \new Voice {
         \voiceTwo
-        c,8~ c2
+        c,8~ 2
       }
       \new Voice {
         \voiceThree
@@ -3500,7 +3500,7 @@ rhMusic = \relative c'' {
       { c,8 d fis bes a }  % continuation of main voice
       \new Voice {
         \voiceTwo
-        c,8~ c2
+        c,8~ 2
       }
       \new Voice {
         \voiceThree
@@ -3538,8 +3538,8 @@ lhMusic = \relative c' {
 @end lilypond
 
 On to bar three and the start of the Moderato section.  The tutorial
-showed how to add bold text with the @code{\markup} command, so
-adding @qq{Moderato} in bold is easy.  But how do we merge notes in
+showed how to add a tempo indication with the @code{\tempo} command, so
+adding @qq{Moderato} 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
@@ -3573,7 +3573,7 @@ rhMusic = \relative c'' {
     bes1~ |
     \bar "||"
     \time 6/4
-    bes2.^\markup { \bold "Moderato" } r8
+    bes2.\tempo "Moderato" r8
     \mergeDifferentlyHeadedOn
     \mergeDifferentlyDottedOn
     % Start polyphonic section of four voices
@@ -3581,7 +3581,7 @@ rhMusic = \relative c'' {
       { c,8 d fis bes a }  % continuation of main voice
       \new Voice {
         \voiceTwo
-        c,8~ c2
+        c,8~ 2
       }
       \new Voice {
         \voiceThree
@@ -3647,7 +3647,7 @@ rhMusic = \relative c'' {
     bes1~ |
     \bar "||"
     \time 6/4
-    bes2.^\markup { \bold "Moderato" } r8
+    bes2.\tempo "Moderato" r8
     \mergeDifferentlyHeadedOn
     \mergeDifferentlyDottedOn
     % Start polyphonic section of four voices
@@ -3717,7 +3717,7 @@ rhMusic = \relative c'' {
     bes1~ |
     \bar "||"
     \time 6/4
-    bes2.^\markup { \bold "Moderato" } r8
+    bes2.\tempo "Moderato" r8
     \mergeDifferentlyHeadedOn
     \mergeDifferentlyDottedOn
     % Start polyphonic section of four voices
@@ -3815,7 +3815,7 @@ same voice can be connected with ties.  By using two voices,
 with the tied notes in one of them
 
 @lilypond[quote,fragment,relative=2]
-<< { b8~ b\noBeam } \\ { b8[ g] } >>
+<< { b8~ 8\noBeam } \\ { b8[ g] } >>
 @end lilypond
 
 @noindent
@@ -3829,7 +3829,7 @@ cross voices:
 <<
   {
     \tweak Stem.transparent ##t
-    b8~ b\noBeam
+    b8~ 8\noBeam
   }
 \\
   { b8[ g] }
@@ -3845,7 +3845,7 @@ too much, we can lengthen the stem by setting the
   {
     \tweak Stem.transparent ##t
     \tweak Stem.length #8
-    b8~ b\noBeam
+    b8~ 8\noBeam
   }
 \\
   { b8[ g] }
@@ -3867,7 +3867,7 @@ possible to rewrite the above example as
     \single \hide Stem
     \single \hide Flag
     \tweak Stem.length #8
-    b8~ b\noBeam
+    b8~ 8\noBeam
   }
 \\
   { b8[ g] }
index b9daceacd33aba69e0ce5ee01acc63d61898116b..1ae43523cf9b7569facdee873e38018564fccf83 100644 (file)
@@ -1234,6 +1234,25 @@ sub lilypond_css_lines ($$)
       $Texi2HTML::THISDOC{'CSS_LINES'} .= "<script language=\"JavaScript\" src=\"${reldir}lily_search.js\"></script>\n";
     }
   }
+
+  ## This section makes the manual name visible to CSS through the body tag
+  ## so that styles can be applied per manual. It will add the manual
+  ## directory name (e.g., 'notation' or 'learning') as a CSS class, as well
+  ## as a development status.
+
+  # Parse the input file name to determine the manual we're dealing with.
+  my ($docu_dir, $docu_name) = split_texi_filename ($Texi2HTML::THISDOC{'input_file_name'});
+
+  # Hard-coded value to indicate if this is a development version
+  # ('devStatus') or stable version ('stableStatus')
+  # TODO: Figure out how to automatically set this value based on the even/odd minor revision number or some other mechanism.
+  $documentstatus = 'devStatus';
+
+  # Create the extra information for the <body> tag.
+  # For example, the development Notation reference in English
+  # will output in HTML as <body lang='en' class='notation devStatus'>
+  $Texi2HTML::Config::BODYTEXT = 'lang="' . $Texi2HTML::THISDOC{current_lang} . '" class="' . $docu_name . ' ' . $documentstatus . '"';
+
 }
 
 
diff --git a/Documentation/ly-examples/Stockhausen_Klavierstueck2.ly b/Documentation/ly-examples/Stockhausen_Klavierstueck2.ly
new file mode 100644 (file)
index 0000000..048833c
--- /dev/null
@@ -0,0 +1,189 @@
+\version "2.18.0"
+
+\paper {
+  tagline = ##f
+  paper-height = 70\mm
+}
+
+measIu = {
+  \override TupletBracket.outside-staff-priority = #500
+  \set subdivideBeams = ##t
+  \tupletUp
+  \tweak style #'dashed-line
+  \tuplet 3/2 {
+    \tuplet 3/2 {
+        \override NoteHead.color = #red
+        \once \override DynamicLineSpanner.outside-staff-priority = ##f
+        d'4 -\tweak X-offset #-2 -\tweak Y-offset #0 ^\ff r8
+      }
+   r8
+  }
+}
+
+measIl = {
+  \set subdivideBeams = ##t
+  \tupletDown
+  \override NoteHead.color = #red
+  <<
+    {
+      \voiceOne
+      \override NoteHead.color = #red
+      ees4 ^\f
+    }
+    \new Voice {
+      \voiceTwo
+      \override NoteHead.color = #red
+      \override TupletBracket.outside-staff-priority = #500
+      \tweak style #'dashed-line
+      \tuplet 3/2 {
+        f,4~ -\tweak X-offset #-2 _\f
+        \tuplet 3/2 {
+          f,16 r8
+        }
+      }
+    }
+  >>
+  \oneVoice
+  | %1
+}
+
+measIIu = {
+  \override TupletBracket.positions = #'(10.5 . 10.5)
+  \tupletUp
+  \tuplet 5/4 {
+    \override NoteHead.color = #blue
+    b'''16[ -\tweak X-offset #-4.5 ^\mf
+    a''16.~^\ff
+  }
+  \tuplet 5/4 {
+    \override NoteHead.color = #blue
+    a''32
+    \override NoteHead.color = #red
+    d'''8^\ff
+  }
+  \tuplet 5/4 {
+    \override NoteHead.color = #blue
+    r16. << g''16] aes'''16]^\p >>
+  }
+  | % 2
+}
+
+measIIl = {
+  \set subdivideBeams = ##t
+  \tupletUp
+  \clef treble
+  \tuplet 5/4 {
+    \override NoteHead.color = #blue
+    \set stemRightBeamCount = #1
+    r16.[ gis'16~_\f
+  }
+  \tuplet 5/4 {
+    gis'32
+    \override NoteHead.color = #red
+    c'8_\pp
+  }
+  \tuplet 5/4 {
+    cis''16. _\mf
+    \override NoteHead.color = #blue
+    fis'16] _\p
+  }
+}
+
+measIIIu = {
+  \tupletUp
+  \override TupletBracket.bracket-visibility = ##t
+  \tweak style #'dashed-line
+  \tweak text #tuplet-number::calc-fraction-text
+  \tweak positions #'(20 . 20)
+  \tuplet 4/3 {
+    \tweak positions #'(17.5 . 17.5)
+    \tuplet 5/4 {
+      \override NoteHead.color = #red
+      \change Staff = lower
+      \voiceOne
+      <d'' es'> 8[ _\laissezVibrer
+      \change Staff = upper
+      \voiceTwo
+      f''32^\f\laissezVibrer
+    }
+    \override NoteHead.color = #blue
+    b''32^\ff\laissezVibrer
+    a'16.^\ff\laissezVibrer
+    gis''8^\ff\laissezVibrer
+    \change Staff = lower
+    \voiceOne
+    \clef bass
+    \override NoteHead.color = #red
+    cis'8]_\pp
+    \oneVoice
+  }
+}
+
+measIIIl = {
+  \textSpannerDown
+  \override TextSpanner.bound-details.left.text = \markup { \musicglyph #"pedal.Ped" }
+  \override TextSpanner.bound-details.right.text = \markup { \musicglyph #"pedal.*" }
+  \override TextSpanner.dash-fraction = #0.05
+  \override TextSpanner.dash-period = #1
+  s8 _\pp\startTextSpan s8
+  s16 s32 s32 \stopTextSpan
+}
+
+measIVu = {
+  \revert TupletBracket.positions
+  \override NoteHead.color = #red
+  \change Staff = upper
+  \tupletUp
+  c''4.~_\p
+  \tuplet 5/4 {
+    c''32 r8
+  }
+}
+
+measIVl = {
+  \override NoteHead.color = #red
+  d,4.~_\mf
+  \tuplet 5/4 {
+    d,32 r8
+  }
+}
+
+\score {
+  \new PianoStaff <<
+    \new Staff = "upper"
+    {
+      \override Staff.TimeSignature #'transparent = ##t
+      \override Staff.TimeSignature #'extra-spacing-width = #'(0.0 . 3.0)
+      \accidentalStyle dodecaphonic
+      \autoBeamOff
+      \clef treble
+      \measIu
+      \measIIu
+      \measIIIu
+      \measIVu
+    }
+    \new Dynamics \with { \consists "Time_signature_engraver" }
+    {
+      \override Dynamics.TimeSignature.font-size = #4
+      \override Dynamics.TimeSignature.font-name = "New Century Schoolbook"
+      \time 2/8
+      s4 |
+      \time 3/8
+      s4. |
+      s4. |
+      \time 4/8
+      s2
+    }
+    \new Staff = "lower"
+    {
+      \override Staff.TimeSignature #'transparent = ##t
+      \accidentalStyle dodecaphonic
+      \autoBeamOff
+      \clef bass
+      \measIl
+      \measIIl
+      \measIIIl
+      \measIVl
+    }
+  >>
+}
index 4ee9f6fd214b52f369073fc5558ac6128e4f4f30..23e89447aa6add3eea34037a6681d7ec45de51e6 100644 (file)
@@ -1,4 +1,4 @@
-\version "2.17.30"
+\version "2.19.2"
 \include "example-header.ily"
 
 \paper {
@@ -188,7 +188,7 @@ triplumNotes = \relative c' {
        % the \scaleDurations command below makes 5 notes last the
        % duration of a dotted quarter
        e8 c4 \scaleDurations 3/2 {     \tuplet 5/4{e16[ d e d e]} } e8 f4 | % 2
-  g2. ~ g4. | % 3
+  g2. ~ 4. | % 3
        f8 d4 f4. \scaleDurations 3/2 { \tuplet 6/4{ g16[ f e f e f]}} % 4
        g8 g4 g4. e4. | % 5
        fis8 d4 e8\startGroup g4\stopGroup f8[ e d] | % 6
@@ -205,7 +205,7 @@ motetusNotes = \relative c' {
   c2. c8\startGroup b8 \slash c\stopGroup | % 1
        a2. c4. | d2. e4. | % 2-3
   f2. f8 e d | % 4
-       c2. ~ c4. | r2. r4. | % 5-6
+       c2. ~ 4. | r2. r4. | % 5-6
        g'4. g g8 f e | % 7
 }
 
index 863c8594e644f9b2087b596d7a393fe50bdaa024..c50f6ab342a72840a9c65f1dad4e01942eee613c 100644 (file)
@@ -1,4 +1,4 @@
-\version "2.17.6"
+\version "2.19.2"
 %\include "example-header.ily"
 
 
@@ -99,22 +99,22 @@ alt = {
       \global
       \halsdown
       \repeat volta 2 {
-         es16 d es8~ es16 f es d c8 d~ d c
+         es16 d es8~ 16 f es d c8 d~ d c
          c8 c4 h8 c8. \staffdown g16 \staffup c h c d
-         es16 d es8~ es16 f es d c8 d16 es f as g f~
-         f16 e f8~ f16 g f es d es d8~ d16 es f d
+         es16 d es8~ 16 f es d c8 d16 es f as g f~
+         16 e f8~ 16 g f es d es d8~ 16 es f d
          %% Takt 5 ==============================================
          g8 f es16 g as es f es f d g as g f
-         e8 f16 g as g as e f g f8~ f16 f es d
+         e8 f16 g as g as e f g f8~ 16 f es d
       }
-      es16 d es8~ es16 f es des c8 \staffdown b~ b16 b c g
-      as16 g as f b c b as g f g8~ g16 b \staffup c d
-      es16 d es8~ es16 f es d c8 d16 es f as g f
+      es16 d es8~ 16 f es des c8 \staffdown b~ 16 b c g
+      as16 g as f b c b as g f g8~ 16 b \staffup c d
+      es16 d es8~ 16 f es d c8 d16 es f as g f
       %% Takt 10 =============================================
       es16 d es8 d g~g g4 fis8
       g16 d es c \staffdown d h c a h a h c d h g h
-      c16 h c \staffup d es d es8~ es d4 c8~
-      c16 h c8~ c h c16 \staffdown g as8 g4\fermata
+      c16 h c \staffup d es d es8~ 8 d4 c8~
+      16 h c8~ 8 h c16 \staffdown g as8 g4\fermata
    }
 }
 
@@ -122,22 +122,22 @@ tenor = {
    \new Voice \relative c' {
       \global
       \repeat volta 2 {
-         c16 h c8~ c16 h c g a8 g~ g16 g as es
-         f16 es f d g as g f es d \tieDown es8~ es16 \tieNeutral f es d
+         c16 h c8~ 16 h c g a8 g~ 16 g as es
+         f16 es f d g as g f es d \tieDown es8~ 16 \tieNeutral f es d
          c16 h c g' c h c c, f8. g16 as!4~
-         as16 g as b c h c8 d8. c16 h c d h
+         16 g as b c h c8 d8. c16 h c d h
          %% Takt 5 ==============================================
-         es16 d es d~ d8 c~c c4 h8
-         c4~ c8. b16 as b as8 g16 as g f
+         es16 d es d~ 8 c~c c4 h8
+         c4~ 8. b16 as b as8 g16 as g f
       }
-      \halsdown es16 f g as b des c b as g f8~ f es
+      \halsdown es16 f g as b des c b as g f8~ 8 es
       es8 es4 d8 es8. b16 es d es f
-      es16 f g8 c16 d c b a g f8~ f4
+      es16 f g8 c16 d c b a g f8~ 4
       %% Takt 10 =============================================
       g16 fis g a b a b g c b c a d es d c
       h8 c16 a h g a fis g8 d16 es f es f8~
-      f16 d es h c h c8 r16 f g d es g as fis
-      g16 d f! es f as g f e8. f16~ f d e8\fermata
+      16 d es h c h c8 r16 f g d es g as fis
+      g16 d f! es f as g f e8. f16~ 16 d e8\fermata
    }
 }
 
@@ -161,18 +161,18 @@ pedal = {
    \clef "bass"
    \relative c {
       \repeat volta 2 {
-         r8 c16 d es d es8~ es16 a, h g c h c8
+         r8 c16 d es d es8~ 16 a, h g c h c8
          r16 g as f g f g8 c,2
-         r8 c'16 d es d es8~ es16 c f es d c d8
-         c8 f16 g as g as8~ as16 d, fis d g fis g8
+         r8 c'16 d es d es8~ 16 c f es d c d8
+         c8 f16 g as g as8~ 16 d, fis d g fis g8
          %% Takt 5 ==============================================
          r8 a16 h c h c8
          r16 g as f g f g8
          r16 g as e f e f8 r16 e f h, c h c8
       }
-      r8 es16  f g f g8~ g16 c, d! b es d es8
+      r8 es16  f g f g8~ 16 c, d! b es d es8
       r16 b c as b as b8 es,2
-      r8 c'16 d es d es8~ es16 c f es d c d8
+      r8 c'16 d es d es8~ 16 c f es d c d8
       %% Takt 10 =============================================
       c8 es16 f! g fis g8 r16 d es c d c d8
       g,1
index 1e1d98d461de612fa0f34cd475c86495256787c1..15494cf51d5254150eaf3fecb4fc63eee1849cf3 100644 (file)
@@ -46,7 +46,7 @@
             \override Score.MetronomeMark.extra-offset = #'(0 . 6)
             \override Score.MetronomeMark.font-size = #3
             \tempo 8=42
-                               \time 5/16       s4 ~ s16       \noBreak                 % measure 6
+                               \time 5/16       s4 s16                 \noBreak                 % measure 6
                                \time 4/8        s2                     \noBreak                 % measure 7
                                \time 4/8        s2                     \noBreak                 % measure 8
 
index 6b205af903f8f9f53582db839243310e42982c51..d784dfd6af3147c224b797ab7e7678fdb3007f31 100644 (file)
@@ -1,4 +1,4 @@
-\version "2.17.6"
+\version "2.19.0"
 
 \header {
   tagline = ##f
@@ -271,49 +271,49 @@ R2. |
     ees r r r4 r8 r4 r8 |
   }
 
-  trian = \relative c' {
+  trian = {
     \clef percussion \time 6/8
     R2.*4 |
     \time 9/8
     R1*9/8 |
   }
 
-  cym = \relative c' {
+  cym = {
     \clef percussion \time 6/8
     R2.*4 |
     \time 9/8
     R1*9/8 |
   }
 
-  tamt = \relative c' {
+  tamt = {
     \clef percussion \time 6/8
 R2. |
     r4 r8 r c4\mf\<^"*" ~ |
-    c8\!\ff r r r4 r8 | R2. |
+    8\!\ff r r r4 r8 | R2. |
     \time 9/8
     R1*9/8 |
   }
 
-  tamb = \relative c' {
+  tamb = {
     \clef percussion \time 6/8
     R2.*4 |
     \time 9/8
     R1*9/8 |
   }
 
-  snare = \relative c' {
+  snare = {
     \clef percussion \time 6/8
     R2.*4 |
     \time 9/8
-    c8\pp c c c c c c c c |
+    c8\pp 8 8 8 8 8 8 8 8 |
   }
 
-  bsdrum = \relative c' {
+  bsdrum = {
     \clef percussion \time 6/8
-    c2.:32\pp\< ~ | c: ~ |
-    c8\!\ff \offCr r r r4 r8 | R2. |
+    c2.:32\pp\< ~ | 2.: ~ |
+    8\!\ff \offCr r r r4 r8 | R2. |
     \time 9/8
-    c2.:32\pp ~ c4.: |
+    2.:32\pp ~ 4.: |
   }
 
   harprh = \relative c'' {
index 6f109646166b13d92f82dfe86a221da2c51161ce..52c6327349263ef6cdd1f4831c86091ebc1edd58 100644 (file)
@@ -4,7 +4,7 @@
 %%%
 %%% Nicolas Sceaux <nicolas.sceaux@free.fr>
 
-\version "2.16.0"
+\version "2.19.2"
 \include "sesto.ily"
 
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -34,7 +34,7 @@
           \set Staff.instrumentName = \markup \smallCaps Sesto.
           \global \clef treble \sesto
         >>
-        \lyricsto "sesto" \new Lyrics \sestoLyrics
+        \new Lyrics \lyricsto "sesto" \sestoLyrics
       >>
       \new Staff <<
         \set Staff.instrumentName = "Bassi."
index 286746b16d9525711b264f7fdf6d1e10370db379..223040e600ae6bd0af666505a57fb3ce4148bf48 100644 (file)
@@ -4,7 +4,7 @@
 %%%
 %%% Nicolas Sceaux <nicolas.sceaux@free.fr>
 
-\version "2.16.0"
+\version "2.19.2"
 \include "sesto.ily"
 
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -25,7 +25,7 @@
           \set Staff.instrumentName = \markup \smallCaps Sesto.
           \global \clef treble \sesto
         >>
-        \lyricsto "sesto" \new Lyrics \sestoLyrics
+        \new Lyrics \lyricsto "sesto" \sestoLyrics
       >>
       \new PianoStaff <<
         \new Staff <<
index e2c4d9e88d8cab92ece937e8d2400cf87b500f8c..8ab9e4b990860280d24ed043ae568df4ff81bc61 100644 (file)
@@ -4,7 +4,7 @@
 %%%
 %%% Nicolas Sceaux <nicolas.sceaux@free.fr>
 
-\version "2.16.0"
+\version "2.19.2"
 \header {
   title = "Giulio Cesare in Egitto"
   subtitle = "Sesto: Svegliatevi nel core, furie d'un alma offesa (excerpt)"
@@ -19,7 +19,7 @@
 sesto = {
   R1*6 |
   r4 r8 g' c''  ees''16[ d''] c''8 c'' |
-  c'' g' ees''4 ~ ees''8 d''16 ees'' f''8 aes' |
+  c'' g' ees''4 ~ 8 d''16 ees'' f''8 aes' |
   aes' g' r c'' c''  b'16[ c''] d''8 g' |
 
 %{
@@ -39,12 +39,12 @@ sesto = {
   c'' c'' r c'' f'  f''16[ ees''] d''8 c'' |
   b'16[ a'] g'8 r4 ees''8 ees''16 d'' c''8 bes' |
   aes' g' r g' aes' f' d'' b' |
-  f''2 ~ f''8 d'' b' g' |
+  f''2 ~ 8 d'' b' g' |
   ees'4 r8 d'' ees''  d''16[ c''] b'4 |
   %%25
   c'' r8 g' c'' g' ees' g' |
   c'4 r8 g' aes' f' d'' b' |
-  f''2 ~ f''8 d'' b' g' |
+  f''2 ~ 8 d'' b' g' |
   ees'4 r8 g'' ees''  d''16[ c''] b'4 |
   c''2 r |
   %%30
@@ -77,14 +77,14 @@ sestoLyrics = \lyricmode {
 
 violinoI = {
   r4 r8 g' c'' ees''16 d'' c''8 c'' |
-  c'' c' ees''4 ~ ees''8 d''16 ees'' f''8 aes' |
+  c'' c' ees''4 ~ 8 d''16 ees'' f''8 aes' |
   aes' g' r c'' c''8.^\trill b'32 c'' d''8 g' |
   f'4. d''8 ees'' d''16 c'' b'4 |
   %%5
   c''16 g'' f'' g'' ees'' g'' f'' g'' ees'' g'' f'' g'' ees'' g'' f'' g'' |
   c'' g'' f'' g'' ees'' g'' f'' g'' aes''8 g''16 f'' f''4^\trill |
   ees'' r8 g'_\p c'' ees''16 d'' c''8 c'' |
-  c'' g' ees''4 ~ ees''8 d''16 ees'' f''8 aes' |
+  c'' g' ees''4 ~ 8 d''16 ees'' f''8 aes' |
   aes' g' r c'' c'' b'16 c'' d''8 g' |
 %{
   %%10
@@ -103,18 +103,18 @@ violinoI = {
   c'' ees'' ees'' f'' g'' ees'' f'' g'' aes'' f'' g'' ees'' f'' d'' ees'' c'' |
   \tag #'violin { g'' g' g'' g'' } \tag #'reduction { g'' d'' g'' g'' } g'' b' g'' g'' g'' f'' ees'' d'' c''8 bes' |
   aes' g' r g' aes' f' d'' b' |
-  f''2 ~ f''8 d'' b' g' |
+  f''2 ~ 8 d'' b' g' |
   ees'16 c' g' ees' c'' g' g'' d'' g'4 r |
   %%25
   c'''16 ees''' d''' ees''' c''' ees''' d''' ees''' g'' c''' b'' c''' g'' c''' b'' c''' |
   ees'' g'' f'' g'' ees'' g'' f'' g'' \tag #'violin { aes'8 f' } \tag #'reduction { c''8 aes' } d'' b' |
-  f''2 ~ f''8 d'' b' g' |
+  f''2 ~ 8 d'' b' g' |
   ees'4^\fermata r r2 |
   r4 r8 c'_\f c'' ees''16 d'' c''8 c'' |
   %%30
-  c'' c' ees''4 ~ ees''8 d''16 ees'' f''8 aes' |
+  c'' c' ees''4 ~ 8 d''16 ees'' f''8 aes' |
   aes' g' r g' aes' f' d'' b' |
-  f''2 ~ f''8 d'' b' g' |
+  f''2 ~ 8 d'' b' g' |
   c''16 g'' f'' g'' ees'' g'' f'' g'' c'' g'' f'' g'' ees'' g'' f'' g'' |
   b'8 c''16 d'' ees''8 d'' c''4^\fermata r
 %}
@@ -122,14 +122,14 @@ violinoI = {
 
 violinoII = {
   r4 r8 g' c'' ees''16 d'' c''8 c'' |
-  c'' c' ees''4 ~ ees''8 d''16 ees'' f''8 aes' |
+  c'' c' ees''4 ~ 8 d''16 ees'' f''8 aes' |
   aes' g' r c'' c''8.^\trill b'32 c'' d''8 g' |
   f'4. d''8 ees'' d''16 c'' b'4 |
   %%5
   c''16 ees'' d'' ees'' c'' ees'' d'' ees'' c'' ees'' d'' ees'' c'' ees'' d'' ees'' |
   c'' ees'' d'' ees'' c'' ees'' d'' ees'' d''8[ ees''] ees'' d'' |
   ees''4 r8 g' c'' ees''16 d'' c''8 c'' |
-  c'' g' ees''4 ~ ees''8 d''16 ees'' f''8 aes' |
+  c'' g' ees''4 ~ 8 d''16 ees'' f''8 aes' |
   aes' g' r c'' c'' b'16 c'' d''8 g' |
 %{
   %%10
@@ -148,18 +148,18 @@ violinoII = {
   aes' c'' c'' d'' ees'' c'' d'' ees'' f'' d'' ees'' c'' d'' b' c'' a' |
   \tag #'violin { b' d' d' b' } \tag #'reduction { b' g' d'' b' } b' g' b' d'' g'' f'' ees'' d'' c''8 bes' |
   d' ees' r g' aes' f' d'' b' |
-  f''2 ~ f''8 d'' b' g' |
+  f''2 ~ 8 d'' b' g' |
   ees'16 c' g' ees' c'' g' g'' d'' g'4 r |
   %%25
   ees''16 g'' f'' g'' ees'' g'' f'' g'' ees'' ees'' d'' ees'' c'' ees'' d'' ees'' |
   g' ees'' d'' ees'' c'' ees'' d'' ees'' \tag #'violin { c''8 aes' } \tag #'reduction { aes'8 f' } f' d' |
-  f''2 ~ f''8 d'' b' g' |
+  f''2 ~ 8 d'' b' g' |
   ees'4^\fermata r r2 |
   r4 r8 c' c'' ees''16 d'' c''8 c'' |
   %%30
-  c'' c' ees''4 ~ ees''8 d''16 ees'' f''8 aes' |
+  c'' c' ees''4 ~ 8 d''16 ees'' f''8 aes' |
   aes' g' r g' aes' f' d'' b' |
-  f''2 ~ f''8 d'' b' g' |
+  f''2 ~ 8 d'' b' g' |
   c''16 ees'' d'' ees'' c'' ees'' d'' ees'' c'' ees'' d'' ees'' c'' ees'' d'' ees'' |
   d'8 ees'16 f' g'8 b' c''4^\fermata r
 %}
index fbccc1f5585f627428c04821041a71a2136ede7e..36615cf0dbe8c85722139cba20136d83b8c002e1 100644 (file)
@@ -1,4 +1,4 @@
-\version "2.17.30"
+\version "2.19.2"
 
 #(define (glissando::calc-extra-dy grob)
    (let* ((original (ly:grob-original grob))
@@ -32,7 +32,7 @@ lower= \relative c {
   s4 e,4 s2
   s2 s8 < e'-3 >4. ~
   e4 \hideNotes \grace { b8 \glissando s4 } \unHideNotes < e-2 >4\5 e,2 ~
-  e2 < e'\6\harmonic >
+  2 < e'\6\harmonic >
 }
 
 \score {
index 7d198504b7dc8773ba6a50ab6ccc986b397f76f5..a58b49971ba2a011a8dfab4e5d458edab486fa0a 100644 (file)
@@ -14,7 +14,7 @@ terms used in the documentation manuals for LilyPond version
 
 @c `Music Glossary' was born 1999-10-04 with git commit 280a0bb...
 @macro copyrightDeclare
-Copyright @copyright{} 1999--2012 by the authors
+Copyright @copyright{} 1999--2014 by the authors
 @end macro
 
 @set FDL
index 25f36cfcbaf0fbfc07a2981f5538cad7d53e0120..bd45b542b403c218e0991800393b928abd2dda61 100644 (file)
@@ -26,7 +26,7 @@ This file provides an introduction to LilyPond version
 
 @c `Learning Manual' was born 1999-10-10 with git commit b9abaac...
 @macro copyrightDeclare
-Copyright @copyright{} 1999--2012 door de auteurs.
+Copyright @copyright{} 1999--2014 door de auteurs.
 @end macro
 
 @set FDL
index ae89bdba9c5a2bcacb14b8a8b710b9c24bb1256a..8bb4361689aece2a92b569da618d2ac1496db13e 100644 (file)
@@ -12,7 +12,7 @@
 @c Translation checker:
 @c Translation checker committish:
 
-@c \version "2.17.28"
+@c \version "2.19.2"
 
 @ignore
 Tutorial guidelines:  (different from policy.txt!)
@@ -263,7 +263,7 @@ een tilde @code{~} aan de eerste noot die overgebonden
 wordt.
 
 @lilypond[verbatim,quote,relative=2]
-g4~ g c2~ | c4~ c8 a~ a2 |
+g4~ 4 c2~ | 4~ 8 a~ 2 |
 @end lilypond
 
 @subheading Legatobogen
@@ -310,7 +310,7 @@ gebruikt over grotere nootgroepen.  Legatobogen en
 overbindingen kunnen worden genest.
 
 @lilypond[verbatim,quote,relative=2]
-c4~( c8 d~ d4 e)
+c4~( c8 d~ 4 e)
 @end lilypond
 
 
@@ -1217,7 +1217,7 @@ in Figaro's aria @notation{Largo al factotum}:
     \clef "bass"
     \key c \major
     \time 6/8
-    c4.~ c8 d b | c8([ d]) b c d b | c8
+    c4.~ 8 d b | c8([ d]) b c d b | c8
   }
   \addlyrics {
     Lar -- go_al fac -- | to -- tum del -- la cit -- | tà
@@ -1249,7 +1249,7 @@ notenbalk.  Hier is een voorbeeld uit Handels
     \key f \major
     \time 6/8
     \partial 8
-    c8 | c8([ bes]) a a([ g]) f | f'4. b, | c4.~ c4
+    c8 | c8([ bes]) a a([ g]) f | f'4. b, | c4.~ 4
   }
   \addlyrics {
     Let | flee -- cy flocks the | hills a -- | dorn, __
index c68c506cf2865542d0f421e70676099f4cda896c..a129a464ff89b79c8612786e9a46b80d110f4d94 100644 (file)
@@ -12,7 +12,7 @@
 @c Translation checker:
 @c Translation checker committish:
 
-@c \version "2.17.29"
+@c \version "2.19.2"
 
 @node Fundamentele concepten
 @translationof Fundamental concepts
@@ -709,7 +709,7 @@ of slurs, stems, ties, dynamics etc., is set appropriately.
   c16 d e f
   %    Voice "1"     Voice "2"                Voice "3"
   << { g4 f e } \\ { r8 e4 d c8~ } >> |
-  << { d2 e }   \\ { c8 b16 a b8 g~ g2 } \\ { s4 b c2 } >> |
+  << { d2 e }   \\ { c8 b16 a b8 g~ 2 } \\ { s4 b c2 } >> |
 }
 @end lilypond
 
@@ -747,7 +747,7 @@ blue triangle voice.
     { d2 e }
   \\
      % Voice 2 continues
-    { c8 b16 a b8 g~ g2 }
+    { c8 b16 a b8 g~ 2 }
   \\
     {
       \voiceThreeStyle
@@ -1030,25 +1030,25 @@ markup, ties, slurs, and dynamics:
 @lilypond[quote,ragged-right,verbatim]
 \relative c' {
   % Default behavior or behavior after \oneVoice
-  c4 d8~ d e4( f | g4 a) b-> c |
+  c4 d8~ 8 e4( f | g4 a) b-> c |
 }
 @end lilypond
 
 @lilypond[quote,ragged-right,verbatim]
 \relative c' {
   \voiceOne
-  c4 d8~ d e4( f | g4 a) b-> c |
+  c4 d8~ 8 e4( f | g4 a) b-> c |
   \oneVoice
-  c,4 d8~ d e4( f | g4 a) b-> c |
+  c,4 d8~ 8 e4( f | g4 a) b-> c |
 }
 @end lilypond
 
 @lilypond[quote,ragged-right,verbatim]
 \relative c' {
   \voiceTwo
-  c4 d8~ d e4( f | g4 a) b-> c |
+  c4 d8~ 8 e4( f | g4 a) b-> c |
   \oneVoice
-  c,4 d8~ d e4( f | g4 a) b-> c |
+  c,4 d8~ 8 e4( f | g4 a) b-> c |
 }
 @end lilypond
 
@@ -1076,7 +1076,7 @@ permitting a phrasing slur to be drawn over them.
     \new Voice {
       % Set stems, etc., down
       \voiceTwo
-      r8 e4 d c8~ | c8 b16 a b8 g~ g2 |
+      r8 e4 d c8~ | 8 b16 a b8 g~ 2 |
     }
     % Initiate third voice
     \new Voice {
@@ -1107,7 +1107,7 @@ typeset the music:
       \voiceTwo
       r8 e4 d c8~ |
       <<
-        { c8 b16 a b8 g~ g2 | }
+        { c8 b16 a b8 g~ 2 | }
         \new Voice {
           \voiceThree
           s4 b c2 |
@@ -1138,7 +1138,7 @@ as here:
   \new Voice {
     % Set stems, etc, down
     \voiceTwo
-    s4 r8 e4 d c8~ | c8 b16 a b8 g~ g2 |
+    s4 r8 e4 d c8~ | 8 b16 a b8 g~ 2 |
   }
   % Initiate third voice
   \new Voice {
@@ -1271,7 +1271,7 @@ rather than music.
 global = { \key f \major \time 6/8 \partial 8 }
 
 SopOneMusic = \relative c'' {
-  c8 | c8([ bes)] a a([ g)] f | f'4. b, | c4.~ c4
+  c8 | c8([ bes)] a a([ g)] f | f'4. b, | c4.~ 4
 }
 SopOneLyrics = \lyricmode {
   Let | flee -- cy flocks the | hills a -- dorn, __
@@ -2936,15 +2936,15 @@ ManualOneVoiceOneMusic = \relative g' {
   d2 c |
 }
 ManualOneVoiceTwoMusic = \relative c' {
-  ees16 d ees8~ ees16 f ees d c8 d~ d c~ |
-  c8 c4 b8 c8. g16 c b c d |
+  ees16 d ees8~ 16 f ees d c8 d~ d c~ |
+  8 c4 b8 c8. g16 c b c d |
 }
 ManualTwoMusic = \relative c' {
-  c16 b c8~ c16 b c g a8 g~ g16 g aes ees |
-  f16 ees f d g aes g f ees d ees8~ ees16 f ees d |
+  c16 b c8~ 16 b c g a8 g~ 16 g aes ees |
+  f16 ees f d g aes g f ees d ees8~ 16 f ees d |
 }
 PedalOrganMusic = \relative c {
-  r8 c16 d ees d ees8~ ees16 a, b g c b c8 |
+  r8 c16 d ees d ees8~ 16 a, b g c b c8 |
   r16 g ees f g f g8 c,2 |
 }
 
index 80881daf55fa29652e328bdf6dbaee213a2a3803..9abaa16d9b3864c565c399c608086b00a1d66a30 100644 (file)
@@ -8,7 +8,7 @@
     Guide, node Updating translation committishes..
 @end ignore
 
-@c \version "2.17.20"
+@c \version "2.19.2"
 
 @node Tweaking output
 @chapter Tweaking output
@@ -2922,12 +2922,12 @@ collide with the ties:
 {
   \time 4/2
   <<
-    { c'1 ~ c'2. e'8 f' }
+    { c'1 ~ 2. e'8 f' }
     \\
     { e''8 e'' e'' e''  e'' e'' e'' e''  f''2 g'' }
   >>
   <<
-    { c'1 ~ c'2. e'8 f' }
+    { c'1 ~ 2. e'8 f' }
     \\
     { e''8 e'' e'' e''  e'' e'' e'' e''  f''2 g'' }
   >>
@@ -2946,7 +2946,7 @@ say, 1:
 {
   \time 4/2
   <<
-    { c'1 ~ c'2. e'8 f' }
+    { c'1 ~ 2. e'8 f' }
     \\
     {
       \override Beam.positions = #'(-1 . -1)
@@ -2954,7 +2954,7 @@ say, 1:
     }
   >>
   <<
-    { c'1 ~ c'2. e'8 f' }
+    { c'1 ~ 2. e'8 f' }
     \\
     { e''8 e'' e'' e''  e'' e'' e'' e''  f''2 g'' }
   >>
@@ -3143,7 +3143,7 @@ rhMusic = \relative c'' {
       { c,8 d fis bes a }  % continuation of main voice
       \new Voice {
         \voiceTwo
-        c,8~ c2
+        c,8~ 2
       }
       \new Voice {
         \voiceThree
@@ -3200,7 +3200,7 @@ rhMusic = \relative c'' {
       { c,8 d fis bes a }  % continuation of main voice
       \new Voice {
         \voiceTwo
-        c,8~ c2
+        c,8~ 2
       }
       \new Voice {
         \voiceThree
@@ -3272,7 +3272,7 @@ rhMusic = \relative c'' {
       { c,8 d fis bes a }  % continuation of main voice
       \new Voice {
         \voiceTwo
-        c,8~ c2
+        c,8~ 2
       }
       \new Voice {
         \voiceThree
@@ -3353,7 +3353,7 @@ rhMusic = \relative c'' {
       { c,8 d fis bes a }  % continuation of main voice
       \new Voice {
         \voiceTwo
-        c,8~ c2
+        c,8~ 2
       }
       \new Voice {
         \voiceThree
@@ -3587,7 +3587,7 @@ same voice can be connected with ties.  By using two voices,
 with the tied notes in one of them
 
 @lilypond[quote,fragment,relative=2]
-<< { b8~ b\noBeam } \\ { b8[ g] } >>
+<< { b8~ 8\noBeam } \\ { b8[ g] } >>
 @end lilypond
 
 @noindent
@@ -3601,7 +3601,7 @@ cross voices:
 <<
   {
     \tweak Stem.transparent ##t
-    b8~ b\noBeam
+    b8~ 8\noBeam
   }
 \\
   { b8[ g] }
@@ -3617,7 +3617,7 @@ too much, we can lengthen the stem by setting the
   {
     \tweak Stem.transparent ##t
     \tweak Stem.length #8
-    b8~ b\noBeam
+    b8~ 8\noBeam
   }
 \\
   { b8[ g] }
@@ -3639,7 +3639,7 @@ possible to rewrite the above example as
     \single \hide Stem
     \single \hide Flag
     \tweak Stem.length #8
-    b8~ b\noBeam
+    b8~ 8\noBeam
   }
 \\
   { b8[ g] }
index 33e6c1062a769fa3a56d9e214ac46643e52eda46..588bf20e56a0a960dc223669a798f8e089271387 100644 (file)
@@ -16,11 +16,11 @@ search for a while and have a redirection from "v2.15" to "v2.17".
 <form action="http://google.com/search"
       method="get"
       name="search"
-      onSubmit="search.q.value='site:lilypond.org +v2.17 '
+      onSubmit="search.q.value='site:lilypond.org/doc/v2.19 '
                + search.brute_query.value"
-      onMouseMove="search.q.value='site:lilypond.org +v2.17 '
+      onMouseMove="search.q.value='site:lilypond.org/doc/v2.19 '
                   + search.brute_query.value"
-      onKeyUp="search.q.value='site:lilypond.org +v2.17 '
+      onKeyUp="search.q.value='site:lilypond.org/doc/v2.19 '
               + search.brute_query.value">
   <input type="hidden" name="btnG" value="Zoek met Google">
   <input type="text" name="brute_query" onfocus="this.value=''" value="Zoek">
index b682396f9fc8f9a06c15bdf7b12a819ed490d5b8..d8a686b558f7bdab42e96fe0adb881c2673eae4b 100644 (file)
@@ -35,7 +35,7 @@
 
 
 @copying
-Copyright @copyright{} 2009--2012 by the authors.
+Copyright @copyright{} 2009--2014 by the authors.
 
 @c next line is necessary for broken pre-4.13 texinfo's
 @c install-info, so leave it there until we officially
index 517c4dc0463a1dcb6185c2b5332fcc78b0fd9be1..e770728ccafc386f5d536899b0029b61ac34af5c 100644 (file)
@@ -22,7 +22,7 @@ the reader is familiar with the material in the
 
 @c `Notation Reference' was born 1999-10-11 with git commit 940dda0...
 @macro copyrightDeclare
-Copyright @copyright{} 1999--2012 by the authors.
+Copyright @copyright{} 1999--2014 by the authors.
 @end macro
 
 
index 39928b6061692c0bd164cb56bede2f4891342522..70ffece67ecc5ee67b01ce3e6d866f78420f5457 100644 (file)
@@ -8,7 +8,7 @@
     Guide, node Updating translation committishes..
 @end ignore
 
-@c \version "2.17.30"
+@c \version "2.19.7"
 
 @node Changing defaults
 @chapter Changing defaults
@@ -1939,7 +1939,7 @@ the @code{#}@tie{}character.
 
 Contexts properties are usually named in
 @code{studlyCaps}.  They mostly control the translation from
-music to notation, e.g. @code{localKeySignature} (for determining
+music to notation, e.g. @code{localAlterations} (for determining
 whether to print accidentals), or @code{measurePosition} (for
 determining when to print a bar line).  Context properties can
 change value over time while interpreting a piece of music;
@@ -2573,7 +2573,7 @@ values.  Unless this is the intended result, it is safer to update
 key-values individually with a nested declaration.
 
 @warning{Nested declarations will not work for context property
-alists (such as @code{beamExceptions}, @code{keySignature},
+alists (such as @code{beamExceptions}, @code{keyAlterations},
 @code{timeSignatureSettings}, etc.).  These properties can only be
 modified by completely re-defining them as alists.}
 
@@ -4202,7 +4202,7 @@ and @code{\tieDown} would not help.
 
 @lilypond[verbatim,quote,relative=1]
 <<
-  { e1~ e }
+  { e1~ 1 }
 \\
   { r4 <g c,> <g c,> <g c,> }
 >>
@@ -4244,7 +4244,7 @@ form of @code{\shape}, this will raise the tie by half a staff-space:
 <<
   {
     \shape #'((0 . 0.5) (0 . 0.5) (0 . 0.5) (0 . 0.5)) Tie
-    e1~ e
+    e1~ 1
   }
 \\
   { r4 <g c,> <g c,> <g c,> }
index 630aa6690f568cfeba446583e8791e7f476249bf..34822b3da70912c770cad3c12cf66cfc99052d8b 100644 (file)
@@ -49,62 +49,207 @@ inside the staff.
 
 @funindex fontSize
 @funindex font-size
+@funindex magnification->font-size
 @funindex magstep
-@funindex \huge
-@funindex \large
+@funindex magnifyMusic
+@funindex teeny
+@funindex tiny
+@funindex small
+@funindex normalsize
+@funindex large
+@funindex huge
+@funindex \magnifyMusic
+@funindex \teeny
+@funindex \tiny
 @funindex \normalsize
 @funindex \small
-@funindex \tiny
-@funindex \teeny
-@funindex huge
-@funindex large
-@funindex normalsize
-@funindex small
-@funindex tiny
-@funindex teeny
+@funindex \large
+@funindex \huge
+
+@warning{@*
+For font sizes of text, see @ref{Selecting font and font size}.@*
+For staff size, see @ref{Setting the staff size}.@*
+For cue notes, see @ref{Formatting cue notes}.@*
+For ossia staves, see @ref{Ossia staves}.}
 
-The font size of notation elements may be altered.  It does not
-change the size of variable symbols, such as beams or slurs.
+To change the size of the notation without changing the staff
+size, specify a magnification factor with the @code{\magnifyMusic}
+command:
+
+@c Grieg Piano Concerto (mvt.1 cadenza)
+@lilypond[verbatim,quote]
+\new Staff <<
+  \new Voice \relative {
+    \voiceOne
+    <e' e'>4 <f f'>8. <g g'>16 <f f'>8 <e e'>4 r8
+  }
+  \new Voice \relative {
+    \voiceTwo
+    \magnifyMusic 0.63 {
+      r32 c'' a c a c a c r c a c a c a c
+      r c a c a c a c a c a c a c a c
+    }
+  }
+>>
+@end lilypond
 
-@warning{For font sizes of text, see
-@ref{Selecting font and font size}.}
+If a normal sized note head is merged with a smaller one, the size
+of the smaller note may need to be reset (with
+@w{@samp{\once@tie{}\normalsize}}) so that the stems and
+accidentals align properly:
+
+@c Chopin Prelude op.28 no.8
+@lilypond[verbatim,quote]
+\new Staff <<
+  \key fis \minor
+  \mergeDifferentlyDottedOn
+  \new Voice \relative {
+    \voiceOne
+    \magnifyMusic 0.63 {
+      \once \normalsize cis'32( cis' gis b a fis \once \normalsize d d'
+      \once \normalsize cis, cis' gis b a gis \once \normalsize fis fis'
+      \once \normalsize fis, fis' ais, cis b gis \once \normalsize eis eis'
+      \once \normalsize a, a' bis, d cis b \once \normalsize gis gis')
+    }
+  }
+  \new Voice \relative {
+    \voiceTwo
+    cis'8. d16 cis8. fis16 fis8. eis16 a8. gis16
+  }
+>>
+@end lilypond
+
+The @code{\magnifyMusic} command is not intended for cue notes,
+grace notes, or ossia staves---there are more appropriate methods
+of entering each of those constructs.  Instead, it is useful when
+the notation size changes in a single instrumental part on one
+staff, and where grace notes are not appropriate, such as in
+cadenza-like passages or in cases such as the above examples.
+Setting the @code{\magnifyMusic} value to 0.63 duplicates the
+dimensions of the @code{CueVoice} context.
+
+@warning{The @code{@bs{}magnifyMusic} command should @i{not} be
+used when also resizing the staff.  See @ref{Setting the staff
+size}.}
+
+
+@subsubsubheading Resizing individual layout objects
+
+An individual layout object can be resized by using the
+@code{\tweak} or @code{\override} commands to adjust its
+@code{font-size} property:
+
+@lilypond[quote,verbatim,relative=1]
+% resize a note head
+<f \tweak font-size -4 b e>-5
+% resize a fingering
+bes-\tweak font-size 0 -3
+% resize an accidental
+\once \override Accidental.font-size = -4 bes!-^
+% resize an articulation
+\once \override Script.font-size = 4 bes!-^
+@end lilypond
+
+The default @code{font-size} value for each layout object is
+listed in the Internals Reference.  The @code{font-size} property
+can only be set for layout objects that support the
+@code{font-interface} layout interface.  If @code{font-size} is
+not specified in the object's @q{Standard@tie{}settings} list, its
+value is 0.  See @rinternals{All layout objects}.
+
+
+@subsubsubheading Understanding the @code{fontSize} property
+
+The @code{fontSize} context property adjusts the relative size of
+all glyph-based notational elements in a context:
 
 @lilypond[verbatim,quote,relative=2]
-\huge
-c4.-> d8---3
-\large
-c4.-> d8---3
-\normalsize
-c4.-> d8---3
-\small
-c4.-> d8---3
-\tiny
-c4.-> d8---3
-\teeny
-c4.-> d8---3
+\time 3/4
+d4---5 c8( b a g) |
+\set fontSize = -6
+e'4-- c!8-4( b a g) |
+\set fontSize = 0
+fis4---3 e8( d) fis4 |
+g2.
+@end lilypond
+
+The @code{fontSize} value is a number indicating the size relative
+to the standard size for the current staff height.  The default
+@code{fontSize} is 0; adding 6 to any @code{fontSize} value
+doubles the printed size of the glyphs, and subtracting 6 halves
+the size.  Each step increases the size by approximately 12%.
+
+The scheme function @code{magnification->font-size} is provided
+for convenience since the logarithmic units of the
+@code{font-size} property are not entirely intuitive.  For
+example, to adjust the musical notation to 75% of the default
+size, use:
+
+@example
+\set fontSize = #(magnification->font-size 0.75)
+@end example
+
+The scheme function @code{magstep} does the opposite: it converts
+a @code{font-size} value into a magnification factor.
+
+The @code{fontSize} property will only affect notational elements
+that are drawn with glyphs, such as noteheads, accidentals,
+scripts, etc.  It will not affect the size of the staff itself,
+nor will it scale stems, beams, or horizontal spacing.  To scale
+stems, beams, and horizontal spacing along with the notation size
+(without changing the staff size), use the @code{\magnifyMusic}
+command discussed above.  To scale everything, including the staff
+size, see @ref{Setting the staff size}.
+
+Whenever the @code{fontSize} @i{context property} is set, its
+value is added to the value of the @code{font-size} @i{grob
+property} for individual layout objects, before any glyphs are
+printed.  This can cause confusion when setting individual
+@code{font-size} properties while @code{fontSize} is already set:
+
+@lilypond[verbatim,quote,relative=2]
+% the default font-size for NoteHead is 0
+% the default font-size for Fingering is -5
+c4-3
+
+\set fontSize = -3
+% the effective font size for NoteHead is now -3
+% the effective font size for Fingering is now -8
+c4-3
+
+\override Fingering.font-size = 0
+% the effective font size for Fingering is now -3
+c4-3
 @end lilypond
 
-Internally, this sets the @code{fontSize} property.  This in turn
-causes the @code{font-size} property to be set in all layout
-objects.  The value of @code{font-size} is a number indicating the
-size relative to the standard size for the current staff height.
-Each step up is an increase of approximately 12% of the font size.
-Six steps is exactly a factor of two.  The Scheme function
-@code{magstep} converts a @code{font-size} number to a scaling
-factor.  The @code{font-size} property can also be set directly,
-so that only certain layout objects are affected.
+The following shorthand commands are also available:
+
+@multitable @columnfractions .2 .4 .4
+@item @b{Command} @tab @b{Equivalent to} @tab @b{Relative size}
+@item @code{\teeny}      @tab @code{\set fontSize = -3} @tab 71%
+@item @code{\tiny}       @tab @code{\set fontSize = -2} @tab 79%
+@item @code{\small}      @tab @code{\set fontSize = -1} @tab 89%
+@item @code{\normalsize} @tab @code{\set fontSize = 0} @tab 100%
+@item @code{\large}      @tab @code{\set fontSize = 1} @tab 112%
+@item @code{\huge}       @tab @code{\set fontSize = 2} @tab 126%
+@end multitable
 
 @lilypond[verbatim,quote,relative=2]
-\set fontSize = #3
+\teeny
 c4.-> d8---3
-\override NoteHead.font-size = #-4
+\tiny
 c4.-> d8---3
-\override Script.font-size = #2
+\small
 c4.-> d8---3
-\override Stem.font-size = #-5
+\normalsize
+c4.-> d8---3
+\large
+c4.-> d8---3
+\huge
 c4.-> d8---3
 @end lilypond
 
+
 @cindex standard font size (notation)
 @cindex font size (notation), standard
 
@@ -113,15 +258,12 @@ c4.-> d8---3
 
 Font size changes are achieved by scaling the design size that is
 closest to the desired size.  The standard font size (for
-@w{@code{font-size = #0}}) depends on the standard staff height.
+@w{@code{font-size = 0}}) depends on the standard staff height.
 For a 20pt staff, a 10pt font is selected.
 
-The @code{font-size} property can only be set on layout objects
-that use fonts.  These are the ones supporting the
-@code{font-interface} layout interface.
-
 
 @predefined
+@code{\magnifyMusic},
 @code{\teeny},
 @code{\tiny},
 @code{\small},
@@ -131,6 +273,16 @@ that use fonts.  These are the ones supporting the
 @endpredefined
 
 @seealso
+Notation Reference:
+@ref{Selecting font and font size},
+@ref{Setting the staff size},
+@ref{Formatting cue notes},
+@ref{Ossia staves}.
+
+Installed Files:
+@file{ly/music-functions-init.ly},
+@file{ly/property-init.ly}.
+
 Snippets:
 @rlsr{Editorial annotations}.
 
index 96c1449e9143af64d2732aa19e6a94952595b1f0..40326a0eddf7700193bcb6e7cc75d2c36ee785a2 100644 (file)
@@ -7,7 +7,7 @@
     Guide, node Updating translation committishes..
 @end ignore
 
-@c \version "2.17.25"
+@c \version "2.18.0"
 
 @node Expressive marks
 @section Expressive marks
@@ -960,6 +960,12 @@ Breath marks are entered using @code{\breathe}:
 c2. \breathe d4
 @end lilypond
 
+Unlike other expressive marks, a breath mark is not associated with
+the preceding note but is a separate music event.  So all the
+expressive marks which are attached to the preceding note, any square
+brackets indicating manual beams, and any brackets indicating slurs
+and phrasing slurs must be placed before @code{\breathe}.
+
 A breath mark will end an automatic beam; to override this behavior, see
 @ref{Manual beams}.
 
index 121dfc0580d83731a42bb7f340ae8243f50cfd90..f8461b4ada4139feb0bf57c228d123e9571e00a1 100644 (file)
@@ -7,7 +7,7 @@
     Guide, node Updating translation committishes..
 @end ignore
 
-@c \version "2.17.30"
+@c \version "2.19.2"
 
 @node Fretted string instruments
 @section Fretted string instruments
@@ -180,7 +180,7 @@ symbols = {
   c4-.^"Allegro" d( e)
   f4-.\f g a^\fermata
   \mark \default
-  c8_.\<\( c16 c~ c2\!
+  c8_.\<\( c16 c~ 2\!
   c'2.\prall\)
 }
 
@@ -206,7 +206,7 @@ symbols = {
   c4-.^"Allegro" d( e)
   f4-.\f g a^\fermata
   \mark \default
-  c8_.\<\( c16 c~ c2\!
+  c8_.\<\( c16 c~ 2\!
   c'2.\prall\)
 }
 
@@ -258,8 +258,9 @@ to @code{#t}.
 
 @funindex \tabChordRepeats
 @funindex \chordRepeats
-@cindex Chord, repetition
+@cindex chord, repetition
 @cindex repetition, using @code{q}
+@cindex @code{q}, chord repetition
 
 Chord constructs can be repeated by the chord repetition symbol
 @code{q}.  In combination with tabulatures, its behavior of removing
@@ -274,7 +275,7 @@ as @code{\tabChordRepeats}.
 
 @lilypond[quote,verbatim]
 guitar = \relative c' {
-  r8 <gis-2 cis-3 b-0>~ q4 q8~ q q4
+  r8 <gis-2 cis-3 b-0>~ q4 q8~ 8 q4
 }
 
 \new StaffGroup <<
@@ -295,7 +296,7 @@ the second alternative of a repeat.
 ties = \relative c' {
   \repeat volta 2 {
     e2. f4~
-    f2 g2~
+    2 g2~
   }
   \alternative {
      { g4 f2. }
@@ -335,7 +336,7 @@ engraving fret numbers in parentheses:
 ties = \relative c' {
   \repeat volta 2 {
     e2. f4~
-    f2 g2~ }
+    2 g2~ }
   \alternative {
     { g4 f2. }
     { g4\repeatTie c,2. }
index 0663c9c617dd348505dbf5542bc8b6007e6f0b71..fc2ead626d388a27ad52491105450a6ac0c5dfd9 100644 (file)
@@ -8,7 +8,7 @@
     Guide, node Updating translation committishes..
 @end ignore
 
-@c \version "2.17.6"
+@c \version "2.19.2"
 
 @node General input and output
 @chapter General input and output
@@ -2405,7 +2405,7 @@ lyrics and as stand-alone text below the score:
   }
   \addlyrics { O \markup { \concat { Ph \char ##x0153 be! } } }
 }
-\markup { "Copyright 2008--2012" \char ##x00A9 }
+\markup { "Copyright 2008--2014" \char ##x00A9 }
 @end lilypond
 
 @cindex copyright sign
@@ -2624,16 +2624,15 @@ Gonville.
 @cindex Sound
 @cindex MIDI
 
-MIDI (Musical Instrument Digital Interface) is a standard for
-connecting and controlling digital instruments.  A MIDI file is a
-series of notes in a number of tracks.  It is not an actual
-sound file; you need special software to translate between the
-series of notes and actual sounds.
+MIDI (Musical Instrument Digital Interface) is a standard for connecting
+and controlling digital instruments.  A MIDI file is a series of notes
+in a number of tracks.  It is not an actual sound file; you need special
+software to translate between the series of notes and actual sounds.
 
 Pieces of music can be converted to MIDI files, so you can listen to
 what was entered.  This is convenient for checking the music; octaves
-that are off or accidentals that were mistyped stand out very much
-when listening to the MIDI output.
+that are off or accidentals that were mistyped stand out very much when
+listening to the MIDI output.
 
 Standard MIDI output is somewhat crude; optionally, an enhanced and
 more realistic MIDI output is available by means of
@@ -2689,11 +2688,10 @@ All @code{\tempo} indications, including all subsequent tempo changes,
 specified within the music notation will be reflected in the MIDI
 output.
 
-Usually it is enough to leave the @code{\midi} block empty, but it
-can contain context rearrangements, new context definitions or code
-to set the values of properties.  Here the tempo is set to 72
-quarter-note beats per minute, but @emph{only} for the MIDI's
-audio playback.
+Usually it is enough to leave the @code{\midi} block empty, but it can
+contain context rearrangements, new context definitions or code to set
+the values of properties.  Here the tempo is set to 72 quarter-note
+beats per minute, but @emph{only} for the MIDI's audio playback.
 
 @example
 \score @{
@@ -2705,8 +2703,9 @@ audio playback.
 @end example
 
 Note that @code{\tempo} is actually a command for setting properties
-during the interpretation of the music and in the context of output definitions, like a @code{\midi} block, is reinterpreted as if it
-were a context modification.
+during the interpretation of the music and in the context of output
+definitions, like a @code{\midi} block, is reinterpreted as if it were a
+context modification.
 
 @cindex MIDI context definitions
 
@@ -2728,17 +2727,31 @@ block;
 removes the effect of dynamics from the MIDI output.  Translation
 modules for sound are called @q{performers}.
 
-
 @snippets
-
 @lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle]
 {changing-midi-output-to-one-channel-per-voice.ly}
 
-@knownissues
+@seealso
+Learning Manual:
+@rlearning{Other sources of information}.
+
+Notation Reference:
+@ref{Expressive marks},
+@ref{Score layout}.
+
+Installed Files:
+@file{ly/performer-init.ly}.
 
-Some operating systems require a @emph{specific} file extension for
-MIDI files.  If a different extension is preferred insert the following
-line at the top-level of the input file, before the start of any
+Snippets:
+@rlsr{MIDI}.
+
+Internals Reference:
+@rinternals{Dynamic_performer}.
+
+@knownissues
+Some operating systems require a @emph{specific} file extension for MIDI
+files.  If a different extension is preferred insert the following line
+at the top-level of the input file, before the start of any
 @code{\book}, @code{\bookpart} or @code{\score} blocks;
 
 @example
@@ -2759,12 +2772,8 @@ crescendi and decrescendi cannot affect the volume of a single note.
 Some MIDI players may not always correctly handle tempo changes in the
 midi output.
 
-@seealso
-Installed Files:
-@file{../ly/performer-init.ly}.
-
-Learning Manual:
-@rlearning{Other sources of information}.
+Changes to @code{midiInstrument} (and other MIDI options) at the
+beginning of a staff may appear twice in the MIDI output.
 
 
 @node MIDI Instruments
@@ -2775,8 +2784,8 @@ Learning Manual:
 @funindex Staff.midiInstrument
 
 The MIDI instrument to be used is specified by setting the
-@code{Staff.midiInstrument} property to the instrument name.
-The name should be chosen from the list in @ref{MIDI instruments}.
+@code{Staff.midiInstrument} property to the instrument name.  The name
+should be chosen from the list in @ref{MIDI instruments}.
 
 @example
 \new Staff @{
@@ -2795,6 +2804,13 @@ If the selected instrument does not exactly match an instrument from
 the list of MIDI instruments, the Grand Piano (@code{"acoustic grand"})
 instrument is used.
 
+@seealso
+Notation Reference:
+@ref{MIDI instruments}.
+
+Internals Reference:
+@rinternals{Dynamic_performer}.
+
 
 @node What goes into the MIDI output?
 @subsection What goes into the MIDI output?
@@ -2842,37 +2858,53 @@ player that supports pitch bend.)
 @item Crescendi, decrescendi over multiple notes
 @item Tempo changes entered with a tempo marking
 @item Lyrics
+@item Simple articulations: staccato, staccatissimo, accent, marcato, portato
+@item @ref{Breath marks}
 @end itemize
 
-Using @ref{The Articulate script}, a number of items are added to the
-above list:
+There is a script that adds the following items; see
+@ref{The Articulate script}:
 
 @itemize
-@item Articulations (slurs, staccato, etc)
-@item Trills, turns
-@item Rallentando and accelerando
+@item Slurs and phrasing slurs
+@item Ornaments (mordents, trills, turns, etc.)
+@item Rallentando, accelerando, ritard, and a tempo
 @end itemize
 
+@seealso
+Notation Reference:
+@ref{Accidentals},
+@ref{Breath marks},
+@ref{Expressive marks}.
+
+Installed Files:
+@file{ly/articulate.ly}.
+
 
 @node Unsupported in MIDI
 @unnumberedsubsubsec Unsupported in MIDI
 
 @c TODO index as above
 
-The following items of notation have no effect on the MIDI output,
-unless you use @ref{The Articulate script}:
+The following items of notation have no effect on the MIDI output, even
+if you use @ref{The Articulate script}:
 
 @itemize
 @item Rhythms entered as annotations, e.g. swing
 @item Tempo changes entered as annotations with no tempo marking
-@item Staccato and other articulations and ornamentations
-@item Slurs and Phrasing slurs
+@item Fermatas
+@item Other articulations
 @item Crescendi, decrescendi over a single note
 @item Tremolos entered with @q{@code{:}[@var{number}]}
 @item Figured bass
 @item Microtonal chords
+@item Glissandi, falls and doits
 @end itemize
 
+@seealso
+Installed Files:
+@file{ly/articulate.ly}.
+
 
 @node Repeats in MIDI
 @subsection Repeats in MIDI
@@ -2880,10 +2912,9 @@ unless you use @ref{The Articulate script}:
 @cindex repeats in MIDI
 @funindex \unfoldRepeats
 
-With a few minor additions, all types of repeats can be represented
-in the MIDI output.  This is achieved by applying the
-@code{\unfoldRepeats} music function.  This function changes all
-repeats to unfold repeats.
+With a few minor additions, all types of repeats can be represented in
+the MIDI output.  This is achieved by applying the @code{\unfoldRepeats}
+music function.  This function changes all repeats to unfold repeats.
 
 @lilypond[quote,verbatim]
 \unfoldRepeats {
@@ -2902,10 +2933,10 @@ In scores containing multiple voices, unfolding of repeats in MIDI
 output will only occur correctly if @emph{each} voice contains fully
 notated repeat indications.
 
-When creating a score file using @code{\unfoldRepeats} for MIDI,
-it is necessary to make two @code{\score} blocks: one for MIDI
-(with unfolded repeats) and one for notation (with volta, tremolo,
-and percent repeats).  For example,
+When creating a score file using @code{\unfoldRepeats} for MIDI, it is
+necessary to make two @code{\score} blocks: one for MIDI (with unfolded
+repeats) and one for notation (with volta, tremolo, and percent
+repeats):
 
 @example
 \score @{
@@ -2918,13 +2949,21 @@ and percent repeats).  For example,
 @}
 @end example
 
+@seealso
+Notation Reference:
+@ref{Score layout}.
+
+Installed Files:
+@file{ly/articulate.ly}.
+
+
 @node Controlling MIDI dynamics
 @subsection Controlling MIDI dynamics
 
-MIDI dynamics are implemented by the Dynamic_performer which lives
-by default in the Voice context.  It is possible to control the
-overall MIDI volume, the relative volume of dynamic markings and
-the relative volume of different instruments.
+MIDI dynamics are implemented by the Dynamic_performer which lives by
+default in the Voice context.  It is possible to control the overall
+MIDI volume, the relative volume of dynamic markings and the relative
+volume of different instruments.
 
 @menu
 * Dynamic marks::
@@ -2936,8 +2975,8 @@ the relative volume of different instruments.
 @node Dynamic marks
 @unnumberedsubsubsec Dynamic marks
 
-Dynamic marks are translated to a fixed fraction of the available
-MIDI volume range.  The default fractions range from 0.25 for
+Dynamic marks are translated to a fixed fraction of the available MIDI
+volume range.  The default fractions range from 0.25 for
 @notation{ppppp} to 0.95 for @notation{fffff}.  The set of dynamic
 marks and the associated fractions can be seen in
 @file{../scm/midi.scm}, see @rlearning{Other sources of information}.
@@ -2946,15 +2985,15 @@ function which takes a dynamic mark as its argument and returns the
 required fraction, and setting
 @code{Score.dynamicAbsoluteVolumeFunction} to this function.
 
-For example, if a @notation{rinforzando} dynamic marking,
-@code{\rfz}, is required, this will not by default
-have any effect on the MIDI volume, as this dynamic marking is not
-included in the default set.  Similarly, if a new dynamic marking
-has been defined with @code{make-dynamic-script} that too will not
-be included in the default set.  The following example shows how the
-MIDI volume for such dynamic markings might be added.  The Scheme
-function sets the fraction to 0.9 if a dynamic mark of rfz is
-found, or calls the default function otherwise.
+For example, if a @notation{rinforzando} dynamic marking, @code{\rfz},
+is required, this will not by default have any effect on the MIDI
+volume, as this dynamic marking is not included in the default set.
+Similarly, if a new dynamic marking has been defined with
+@code{make-dynamic-script} that too will not be included in the default
+set.  The following example shows how the MIDI volume for such dynamic
+markings might be added.  The Scheme function sets the fraction to 0.9
+if a dynamic mark of @code{rfz} is found, or calls the default function
+otherwise.
 
 @lilypond[verbatim,quote]
 #(define (myDynamics dynamic)
@@ -2977,12 +3016,24 @@ found, or calls the default function otherwise.
 }
 @end lilypond
 
-Alternatively, if the whole table of fractions needs to be
-redefined, it would be better to use the
-@notation{default-dynamic-absolute-volume} procedure in
-@file{../scm/midi.scm} and the associated table as a model.
+Alternatively, if the whole table of fractions needs to be redefined, it
+would be better to use the @notation{default-dynamic-absolute-volume}
+procedure in @file{../scm/midi.scm} and the associated table as a model.
 The final example in this section shows how this might be done.
 
+@seealso
+Notation Reference:
+@ref{Expressive marks},
+@ref{Score layout}.
+
+Installed Files:
+@file{scm/midi.scm}.
+
+Internals Reference:
+@rinternals{Dynamic_performer}.
+
+
+
 @node Overall MIDI volume
 @unnumberedsubsubsec Overall MIDI volume
 
@@ -3009,8 +3060,8 @@ volume is limited to the range 0.2 - 0.5.
       \set Staff.midiInstrument = #"flute"
       \new Voice \relative c''' {
         r2 g\mp g fis~
-        fis4 g8 fis e2~
-        e4 d8 cis d2
+        4 g8 fis e2~
+        4 d8 cis d2
       }
     }
     \new Staff {
@@ -3035,17 +3086,25 @@ volume is limited to the range 0.2 - 0.5.
 }
 @end lilypond
 
+@seealso
+Notation Reference:
+@ref{Score layout}.
+
+Internals Reference:
+@rinternals{Dynamic_performer}.
+
+
+
 @node Equalizing different instruments (i)
 @unnumberedsubsubsec Equalizing different instruments (i)
 
-If the minimum and maximum MIDI volume properties are set in
-the @code{Staff} context the relative volumes of the MIDI
-instruments can be controlled.  This gives a basic instrument
-equalizer, which can enhance the quality of the MIDI output
-remarkably.
+If the minimum and maximum MIDI volume properties are set in the
+@code{Staff} context the relative volumes of the MIDI instruments can be
+controlled.  This gives a basic instrument equalizer, which can enhance
+the quality of the MIDI output remarkably.
 
-In this example the volume of the clarinet is reduced relative
-to the volume of the flute.
+In this example the volume of the clarinet is reduced relative to the
+volume of the flute.
 
 @lilypond[verbatim,quote]
 \score {
@@ -3058,8 +3117,8 @@ to the volume of the flute.
       \set Staff.midiMaximumVolume = #0.9
       \new Voice \relative c''' {
         r2 g\mp g fis~
-        fis4 g8 fis e2~
-        e4 d8 cis d2
+        4 g8 fis e2~
+        4 d8 cis d2
       }
     }
     \new Staff {
@@ -3081,28 +3140,32 @@ to the volume of the flute.
 }
 @end lilypond
 
+@seealso
+Notation Reference:
+@ref{Score layout}.
+
 
 @node Equalizing different instruments (ii)
 @unnumberedsubsubsec Equalizing different instruments (ii)
 
-If the MIDI minimum and maximum volume properties are not set
-LilyPond will, by default, apply a small degree of equalization
-to a few instruments.  The instruments and the equalization
-applied are shown in the table @notation{instrument-equalizer-alist}
-in @file{../scm/midi.scm}.
+If the MIDI minimum and maximum volume properties are not set LilyPond
+will, by default, apply a small degree of equalization to a few
+instruments.  The instruments and the equalization applied are shown in
+the table @notation{instrument-equalizer-alist} in
+@file{../scm/midi.scm}.
 
 This basic default equalizer can be replaced by setting
-@code{instrumentEqualizer} in the @code{Score} context to a new
-Scheme procedure which accepts a MIDI instrument name as its only
-argument and returns a pair of fractions giving the minimum and
-maximum volumes to be applied to that instrument.  This replacement
-is done in the same way as shown for resetting the
-@code{dynamicAbsoluteVolumeFunction} at the start of this section.
-The default equalizer, @notation{default-instrument-equalizer}, in
-@file{../scm/midi.scm} shows how such a procedure might be written.
-
-The following example sets the relative flute and clarinet volumes
-to the same values as the previous example.
+@code{instrumentEqualizer} in the @code{Score} context to a new Scheme
+procedure which accepts a MIDI instrument name as its only argument and
+returns a pair of fractions giving the minimum and maximum volumes to be
+applied to that instrument.  This replacement is done in the same way as
+shown for resetting the @code{dynamicAbsoluteVolumeFunction} at the
+start of this section. The default equalizer,
+@notation{default-instrument-equalizer}, in @file{../scm/midi.scm} shows
+how such a procedure might be written.
+
+The following example sets the relative flute and clarinet volumes to
+the same values as the previous example.
 
 @lilypond[verbatim,quote]
 #(define my-instrument-equalizer-alist '())
@@ -3128,8 +3191,8 @@ to the same values as the previous example.
       \set Staff.midiInstrument = #"flute"
       \new Voice \relative c''' {
         r2 g\mp g fis~
-        fis4 g8 fis e2~
-        e4 d8 cis d2
+        4 g8 fis e2~
+        4 d8 cis d2
       }
     }
     \new Staff {
@@ -3149,6 +3212,13 @@ to the same values as the previous example.
 }
 @end lilypond
 
+@seealso
+Installed Files:
+@file{scm/midi.scm}.
+
+Internals Reference:
+@rinternals{Dynamic_performer}.
+
 @ignore
 @c Delete when satisfied this is adequately covered elsewhere -td
 
@@ -3184,43 +3254,51 @@ copied out and compiled to test microtones in your MIDI player.
 @subsection Percussion in MIDI
 
 Percussion instruments are generally notated in a @code{DrumStaff}
-context and when notated in this way they are outputted correctly
-to MIDI channel@tie{}10, but some pitched percussion instruments,
-like the xylophone, marimba, vibraphone, timpani, etc., are
-treated like @qq{normal} instruments and music for these instruments
-should be entered in a normal @code{Staff} context, not a
-@code{DrumStaff} context, to obtain the correct MIDI output.
+context and when notated in this way they are outputted correctly to
+MIDI channel@tie{}10, but some pitched percussion instruments, like the
+xylophone, marimba, vibraphone, timpani, etc., are treated like
+@qq{normal} instruments and music for these instruments should be
+entered in a normal @code{Staff} context, not a @code{DrumStaff}
+context, to obtain the correct MIDI output.
 
 Some non-pitched percussion sounds included in the general MIDI
-standard, like melodic tom, taiko drum, synth drum, etc., cannot
-be reached via MIDI channel@tie{}10, so the notation for such
-instruments should also be entered in a normal @code{Staff}
-context, using suitable normal pitches.
+standard, like melodic tom, taiko drum, synth drum, etc., cannot be
+reached via MIDI channel@tie{}10, so the notation for such instruments
+should also be entered in a normal @code{Staff} context, using suitable
+normal pitches.
 
 Many percussion instruments are not included in the general MIDI
-standard, e.g. castanets.  The easiest, although unsatisfactory,
-method of producing some MIDI output when writing for such
-instruments is to substitute the nearest sound from the standard
-set.
+standard, e.g. castanets.  The easiest, although unsatisfactory, method
+of producing some MIDI output when writing for such instruments is to
+substitute the nearest sound from the standard set.
 
 @c TODO Expand with examples, and any other issues
 
-@knownissues
+@seealso
+Notation Reference:
+@ref{Percussion},
+@ref{Score layout}.
+
+Internals Reference:
+@rinternals{Dynamic_performer}.
 
+@knownissues
 Because the general MIDI standard does not contain rim shots, the
 sidestick is used for this purpose instead.
 
+
+
 @node The Articulate script
 @subsection The Articulate script
 
 A more realistic MIDI output is possible when using the Articulate
 script.  It tries to take articulations (slurs, staccato, etc) into
 account, by replacing notes with sequential music of suitably
-time-scaled note plus skip.  It also tries to unfold trills turns
-etc., and take rallentando and accelerando into account.
+time-scaled note plus skip.  It also tries to unfold trills turns etc.,
+and take rallentando and accelerando into account.
 
-To use the Articulate script, you have to include it at the top of
-your input file,
+To use the Articulate script, you have to include it at the top of your
+input file,
 
 @example
 \include "articulate.ly"
@@ -3230,7 +3308,7 @@ and in the @code{\score} section do
 
 @example
 \unfoldRepeats \articulate <<
-       all the rest of the score@dots{}
+  all the rest of the score@dots{}
 >>
 @end example
 
@@ -3243,8 +3321,17 @@ to insert the @code{\unfoldRepeats} command as it appears in the
 example shown above as it enables performing abbreviatures such as
 @notation{trills}.
 
-@knownissues
+@seealso
+Notation Reference:
+@ref{Score layout}.
 
+Installed Files:
+@file{ly/articulate.ly}.
+
+Internals Reference:
+@rinternals{UnfoldedRepeatedMusic}.
+
+@knownissues
 Articulate shortens chords and some music (esp. organ music) could
 sound worse.
 
index f97af1ccefc85bb6cfc774049b7759838351846a..c44799e1756d4acb047a7ac2c86627aa6776c27e 100644 (file)
@@ -100,9 +100,9 @@ be set explicitly.  Other clefs may be used as well.
 @lilypond[quote,ragged-right,verbatim]
 \drums {
   \clef percussion
-  bd4 bd bd bd
+  bd4 4 4 4
   \clef treble
-  hh4 hh hh hh
+  hh4 4 4 4
 }
 @end lilypond
 
@@ -135,10 +135,10 @@ as described in @ref{Tremolo repeats}.
 @lilypond[quote,verbatim]
 \drums {
   \time 2/4
-  sn16 sn8 sn16 sn8 sn8:32 ~
-  sn8 sn8 sn4:32 ~
-  sn4 sn8 sn16 sn16
-  sn4 r4
+  sn16 8 16 8 8:32 ~
+  8 8 4:32 ~
+  4 8 16 16
+  4 r4
 }
 @end lilypond
 
@@ -150,9 +150,9 @@ may be overridden to achieve a pleasing baseline.
 @lilypond[quote,verbatim]
 \drums {
   \repeat unfold 2 {
-    sn16^"L" sn^"R" sn^"L" sn^"L" sn^"R" sn^"L" sn^"R" sn^"R"
+    sn16^"L" 16^"R" 16^"L" 16^"L" 16^"R" 16^"L" 16^"R" 16^"R"
     \stemUp
-    sn16_"L" sn_"R" sn_"L" sn_"L" sn_"R" sn_"L" sn_"R" sn_"R"
+    sn16_"L" 16_"R" 16_"L" 16_"L" 16_"R" 16_"L" 16_"R" 16_"R"
   }
 }
 @end lilypond
@@ -426,8 +426,8 @@ woodstaff = {
 
   \drummode {
     \time 2/4
-    wbl8 wbl16 wbl wbh8-> wbl |
-    wbl8 wbl16 wbh-> ~ wbh wbl16 r8 |
+    wbl8 16 16 8-> 8 |
+    wbl8 16 16-> ~ 16 16 r8 |
   }
 }
 @end lilypond
@@ -455,8 +455,8 @@ tambustaff = {
 
   \drummode {
     \time 6/8
-    tamb8. tamb16 tamb8 tamb tamb tamb |
-    tamb4. tamb8 tamb tamb |
+    tamb8. 16 8 8 8 8 |
+    tamb4. 8 8 8 |
     % the trick with the scaled duration and the shorter rest
     % is neccessary for the correct ending of the trill-span!
     tamb2.*5/6 \startTrillSpan s8 \stopTrillSpan |
@@ -502,8 +502,8 @@ bellstaff = {
   \bellstaff
   \drummode {
     \time 2/4
-    rb8 rb cb cb16 rb-> ~ |
-    rb16 rb8 rb16 cb8 cb |
+    rb8 8 cb8 16 rb16-> ~ |
+    16 8 16 cb8 8 |
   }
 }
 @end lilypond
@@ -593,12 +593,12 @@ Ghost notes for drums and percussion may be created using the
   \drummode {
     <<
       {
-        hh8[ hh] <hh sn> hh16
+        hh8[ 8] <hh sn> hh16
         \parenthesize sn  hh
         \parenthesize sn  hh8 <hh sn> hh
       } \\
       {
-        bd4 r4 bd8 bd r8 bd
+        bd4 r4 bd8 8 r8 bd
       }
     >>
   }
index 4c41302c4f273657cdba7d58c4e7d03494c6ee6d..b5cc66246d5856e4f609528fb5aa964d587bc704 100644 (file)
@@ -7,7 +7,7 @@
     Guide, node Updating translation committishes..
 @end ignore
 
-@c \version "2.17.18"
+@c \version "2.19.2"
 
 
 @node Pitches
@@ -405,7 +405,7 @@ Accidentals on tied notes are only printed at the beginning of a
 new system:
 
 @lilypond[verbatim,quote,relative=2,ragged-right]
-cis1~ cis~
+cis1~ 1~
 \break
 cis
 @end lilypond
@@ -1225,10 +1225,10 @@ any @code{\override} done to the @var{Clef} will also need to be
 applied, as a separate @code{\override}, to the @var{ClefModifier}
 grob.
 
-@lilypond[fragment,quote,relative=1]
+@lilypond[fragment,quote,verbatim,relative=1]
 \new Staff \with {
-  \override ClefModifier.color = #red
   \override Clef.color = #blue
+  \override ClefModifier.color = #red
 }
 
 \clef "treble_8" c4
@@ -2443,6 +2443,124 @@ musicB = {
 }
 @end lilypond
 
+@item dodecaphonic-no-repeat
+
+@cindex dodecaphonic accidental style
+@cindex dodecaphonic style, neo-modern
+
+@funindex dodecaphonic-no-repeat
+
+Like with the dodecaphonic accidental style @emph{every} note
+gets an accidental sign by default, but accidentals are
+suppressed for pitches immediately repeated within one voice.
+
+@lilypond[quote]
+musicA = {
+  <<
+    \relative c' {
+      cis'8 fis, bes4 <a cis>8 f bis4 |
+      cis2. <c, g'>4 |
+    }
+    \\
+    \relative c' {
+      ais'2 cis, |
+      fis8 b a4 cis2 |
+    }
+  >>
+}
+
+musicB = {
+  \clef bass
+  \new Voice {
+    \voiceTwo \relative c' {
+      <fis, a cis>8[ <fis a cis>
+      \change Staff = up
+      cis' cis
+      \change Staff = down
+      <fis, a> <fis a>]
+      \showStaffSwitch
+      \change Staff = up
+      dis'4 |
+      \change Staff = down
+      <fis, a cis>4 gis <f a d>2 |
+    }
+  }
+}
+
+\new PianoStaff {
+  <<
+    \context Staff = "up" {
+      \accidentalStyle dodecaphonic-no-repeat
+      \musicA
+    }
+    \context Staff = "down" {
+      \accidentalStyle dodecaphonic-no-repeat
+      \musicB
+    }
+  >>
+}
+@end lilypond
+
+
+@item dodecaphonic-first
+
+@cindex dodecaphonic accidental style
+@cindex dodecaphonic style, neo-modern
+
+@funindex dodecaphonic-first
+
+Similar to the dodecaphonic accidental style @emph{every} pitch
+gets an accidental sign, but only the first time it is encountered
+in a measure.  Accidentals are only remembered for the actual octave
+but throughout voices.
+
+@lilypond[quote]
+musicA = {
+  <<
+    \relative c' {
+      cis'8 fis, bes4 <a cis>8 f bis4 |
+      cis2. <c, g'>4 |
+    }
+    \\
+    \relative c' {
+      ais'2 cis, |
+      fis8 b a4 cis2 |
+    }
+  >>
+}
+
+musicB = {
+  \clef bass
+  \new Voice {
+    \voiceTwo \relative c' {
+      <fis, a cis>8[ <fis a cis>
+      \change Staff = up
+      cis' cis
+      \change Staff = down
+      <fis, a> <fis a>]
+      \showStaffSwitch
+      \change Staff = up
+      dis'4 |
+      \change Staff = down
+      <fis, a cis>4 gis <f a d>2 |
+    }
+  }
+}
+
+\new PianoStaff {
+  <<
+    \context Staff = "up" {
+      \accidentalStyle dodecaphonic-first
+      \musicA
+    }
+    \context Staff = "down" {
+      \accidentalStyle dodecaphonic-first
+      \musicB
+    }
+  >>
+}
+@end lilypond
+
 
 @item teaching
 
@@ -3072,8 +3190,8 @@ rhythm.  Such note heads can be created:
   e8 e g a a16( bes) a8 g
   \improvisationOn
   e8 ~
-  e2 ~ e8 f4 f8 ~
-  f2
+  2 ~ 8 f4 f8 ~
+  2
   \improvisationOff
   a16( bes) a8 g e
 }
index f3c4c5ac6c14d530bf6be0273c183be445388743..332887d5439a23ba38d48fb8339460d6a9345388 100644 (file)
@@ -94,6 +94,16 @@ c2 d
 \repeat volta 2 { d4 e f g }
 @end lilypond
 
+An @q{opening} repeat mark is not, by default, printed in the first full
+measure.  However it is possible to add one by using @code{\bar ".|:"}
+before the first note.
+
+@lilypond[verbatim,fragment,quote,relative=2]
+\repeat volta 2 { \bar ".|:" c4 d e f }
+c2 d
+\repeat volta 2 { d4 e f g }
+@end lilypond
+
 Alternative endings can be produced using @code{\alternative}.  Each
 group of alternatives must be themselves, enclosed in a set of braces.
 
@@ -204,41 +214,6 @@ a2 a |
 g1 |
 @end lilypond
 
-When alternate endings are added to a repeat that begins with an
-incomplete measure, it becomes necessary to set the
-@code{Timing.measureLength} context property manually, in the
-following specific places:
-
-@itemize
-@item
-at the start of any incomplete measures in the @code{\alternative}
-block, which normally occur at the end of each alternative, except
-(in most cases) the last.
-
-@item
-at the start of each alternative, except the first.
-@end itemize
-
-@lilypond[verbatim,quote,relative=1]
-\partial 4
-\repeat volta 2 { e4 | c2 e | }
-\alternative {
-  {
-    f2 d |
-    \set Timing.measureLength = #(ly:make-moment 3/4)
-    g4 g g  % optional bar check is allowed here
-  }
-  {
-    \set Timing.measureLength = #(ly:make-moment 4/4)
-    a2 a |
-  }
-}
-g1 |
-@end lilypond
-
-The @code{measureLength} property is described in @ref{Time
-administration}.
-
 @cindex repeats, with ties
 @cindex alternative endings, with ties
 @cindex ties, in repeats
@@ -360,6 +335,9 @@ Notation Reference:
 @ref{Modifying ties and slurs},
 @ref{Time administration}.
 
+Installed Files:
+@file{ly/engraver-init.ly}.
+
 Snippets:
 @rlsr{Repeats}.
 
@@ -519,12 +497,6 @@ voltaAdLib = \markup { 1. 2. 3... \text \italic { ad lib. } }
 }
 @end lilypond
 
-
-@snippets
-
-@lilypondfile[verbatim,quote,texidoc,doctitle]
-{printing-a-repeat-sign-at-the-beginning-of-a-piece.ly}
-
 @seealso
 Notation Reference:
 @ref{Bar lines},
@@ -801,14 +773,13 @@ the note should not be surrounded by braces:
 @end lilypond
 
 @cindex tremolo marks
-@funindex tremoloFlags
 @funindex :
 
 The same output can be obtained by adding @code{:@var{N}} after
 the note, where @code{@var{N}} indicates the duration of the
 subdivision (it must be at least 8).  If @code{@var{N}} is 8, one
 beam is added to the note's stem.  If @code{@var{N}} is omitted,
-the last value (stored in @code{tremoloFlags}) is used:
+the last value is used:
 
 @lilypond[quote,verbatim,relative=2]
 c2:8 c:32
index a32975c1a86d5d0f036734a72c9ea54860b39828..72c963cdb7d84b3e3c2baea0968984a27ce2cbbf 100644 (file)
@@ -7,7 +7,7 @@
     Guide, node Updating translation committishes..
 @end ignore
 
-@c \version "2.17.30"
+@c \version "2.19.2"
 
 @node Rhythms
 @section Rhythms
@@ -93,6 +93,15 @@ note.
 a a a2 a a4 a a1 a
 @end lilypond
 
+Durations occuring on their own within a music sequence will take
+their pitches from the preceding note or chord.
+
+@lilypond[quote,verbatim,relative=2]
+\time 8/1
+c \longa \breve 1 2
+4 8 16 32 64 128 128
+@end lilypond
+
 @cindex notes, dotted
 @cindex dotted notes
 @cindex notes, double-dotted
@@ -204,7 +213,7 @@ tuplets are triplets: 3@tie{}notes sound within the duration
 normally allowed for@tie{}2:
 
 @lilypond[quote,verbatim,relative=2]
-a2 \tuplet 3/2 { b4 b b }
+a2 \tuplet 3/2 { b4 4 4 }
 c4 c \tuplet 3/2 { b4 a g }
 @end lilypond
 
@@ -422,7 +431,14 @@ of each pair of notes being tied.  This indicates that the note
 should be tied to the following note, which must be at the same pitch.
 
 @lilypond[quote,verbatim,relative=2]
-a2~ a4~ a16 r r8
+a2~ 4~ 16 r r8
+@end lilypond
+
+Ties can make use of the @q{last explicit pitch} interpretation of
+isolated durations:
+
+@lilypond[quote,verbatim,relative=2]
+a2~ 4~ 16 r r8
 @end lilypond
 
 Ties are used either when the note crosses a bar line, or when
@@ -431,8 +447,8 @@ used when note values cross larger subdivisions of the measure:
 
 @lilypond[verbatim,quote]
 \relative c' {
-  r8 c~ c2 r4 |
-  r8^"not" c2~ c8 r4
+  r8 c~ 2 r4 |
+  r8^"not" c2~ 8 r4
 }
 @end lilypond
 
@@ -450,7 +466,8 @@ created.  Chords may be partially tied by placing the ties inside
 the chord.
 
 @lilypond[quote,verbatim,relative=1]
-<c e g>~ <c e g c>
+<c e g>2 ~ 2
+<c e g>4~ <c e g c>
 <c~ e g~ b> <c e g b>
 @end lilypond
 
@@ -519,26 +536,26 @@ dashed.
 
 @lilypond[quote, verbatim, relative=1]
 \tieDotted
-c2~ c
+c2~ 2
 \tieDashed
-c2~ c
+c2~ 2
 \tieHalfDashed
-c2~ c
+c2~ 2
 \tieHalfSolid
-c2~ c
+c2~ 2
 \tieSolid
-c2~ c
+c2~ 2
 @end lilypond
 
 Custom dash patterns can be specified:
 
 @lilypond[quote, verbatim, relative=1]
 \tieDashPattern #0.3 #0.75
-c2~ c
+c2~ 2
 \tieDashPattern #0.7 #1.5
-c2~ c
+c2~ 2
 \tieSolid
-c2~ c
+c2~ 2
 @end lilypond
 
 Dash pattern definitions for ties have the same structure as dash
@@ -1412,12 +1429,29 @@ So the first example above could be written:
 e8 | a4 c8 b c4 |
 @end lilypond
 
-The property @code{measurePosition} contains a rational number, which
-is usually positive and indicates how much of the measure has passed
-at this point.  The @code{\partial @var{duration}} command sets it to
-a negative number, when it has a different meaning: it then says that
-the current (first) bar will be @emph{preceded} by a bar 0 (the partial
-bar) with a duration given by @var{duration}.
+The property @code{measurePosition} contains a rational number,
+which is usually positive and indicates how much of the measure
+has passed at this point.  @code{\partial @var{duration}} is
+defined such that no numbered bar gets created: when used at the
+beginning of a score, @code{measurePosition} is set to a
+negative number, implying that the current bar will be
+@emph{preceded} by additional material.  When used elsewhere, it
+moves the requested distance before the @emph{end} of the bar.
+
+@lilypond[quote,verbatim,relative=1]
+\set Score.barNumberVisibility = #all-bar-numbers-visible
+\override Score.BarNumber.break-visibility =
+          #end-of-line-invisible
+\time 6/8
+\partial 8
+e8 | a4 c8 b[ c b] |
+\partial 4
+r8 e,8 | a4 \bar "||"
+\partial 4
+r8 e8 | a4
+c8 b[ c b] |
+@end lilypond
+
 
 @seealso
 Music Glossary:
@@ -1432,19 +1466,6 @@ Snippets:
 Internal Reference:
 @rinternals{Timing_translator}.
 
-@knownissues
-The @code{\partial} command should be used only at the beginning of a
-piece.  If you use it after the beginning, warnings or problems may
-occur, so use @code{\set Timing.measurePosition} instead.
-
-@lilypond[quote,verbatim,relative=1]
-\time 6/8
-\partial 8
-e8 | a4 c8 b[ c b] |
-\set Timing.measurePosition = #(ly:make-moment -1/4)
-r8 e,8 | a4 c8 b[ c b] |
-@end lilypond
-
 
 @node Unmetered music
 @unnumberedsubsubsec Unmetered music
@@ -1788,6 +1809,37 @@ inserts ties for notes.  One of its uses is to debug complex scores: if
 the measures are not entirely filled, then the ties show exactly how
 much each measure is off.
 
+The property @code{completionUnit} sets a preferred duration for
+the split notes.
+
+@lilypond[quote,verbatim,relative=2]
+\new Voice \with {
+  \remove "Note_heads_engraver"
+  \consists "Completion_heads_engraver"
+} {
+  \time 9/8 g\breve. d4. \bar "||"
+  \set completionUnit = #(ly:make-moment 3 8)
+  g\breve. d4.
+}
+@end lilypond
+
+These engravers split notes with scaled duration, such as those in tuplets,
+into notes with the same scale-factor as in the input note.
+
+@lilypond[quote,verbatim,relative=2]
+\new Voice \with {
+  \remove "Note_heads_engraver"
+  \consists "Completion_heads_engraver"
+} {
+  \time 2/4 r4
+  \tuplet 3/2 {g4 a b}
+  \scaleDurations 2/3 {g a b}
+  g4*2/3 a b
+  \tuplet 3/2 {g4 a b}
+  r4
+}
+@end lilypond
+
 @seealso
 Music Glossary:
 @rglos{tie}
@@ -1807,12 +1859,12 @@ Internals Reference:
 @rinternals{Forbid_line_break_engraver}.
 
 @knownissues
-Not all durations (especially those containing tuplets) can be
-represented exactly with normal notes and dots, but the
-@code{Completion_heads_engraver} will not insert tuplets.
-
-The @code{Completion_heads_engraver} only affects notes; it does not
-split rests.
+For consistency with previous behavior, notes and rests with
+duration longer than a measure, such as @code{c1*2}, are split into
+notes without any scale factor, @code{@{ c1 c1 @}}.  The property
+@code{completionFactor} controls this behavior, and setting it to
+@code{#f} cause split notes and rest to have the scale factor
+of the input durations.
 
 
 @node Showing melody rhythms
@@ -2015,6 +2067,7 @@ new beam starts.
 @funindex autoBeaming
 @funindex baseMoment
 @funindex beamExceptions
+@funindex \beamExceptions
 @funindex beatStructure
 @funindex measureLength
 @funindex \time
@@ -2156,42 +2209,24 @@ the time signature. Any exceptions to this default can be found in
 Special autobeaming rules (other than ending a beam on a beat)
 are defined in the @code{beamExceptions} property.
 
+The value for @code{beamExceptions}, a somewhat complex Scheme
+data structure, is easiest generated with the
+@code{\beamExceptions} function.  This function is given one or
+more manually beamed measure-length rhythmic patterns (measures
+have to be separated by a bar check@tie{}@code{|} since the
+function has no other way to discern the measure length).  Here is
+a simple example:
+
 @lilypond[quote,relative=2,verbatim]
 \time 3/16
 \set Timing.beatStructure = #'(2 1)
 \set Timing.beamExceptions =
-  #'(                         ;start of alist
-     (end .                   ;entry for end of beams
-      (                       ;start of alist of end points
-       ((1 . 32) . (2 2 2))   ;rule for 1/32 beams -- end each 1/16
-      )))                     %close all entries
+  \beamExceptions { 32[ 32] 32[ 32] 32[ 32] }
 c16 c c |
 \repeat unfold 6 { c32 } |
 @end lilypond
 
-@code{beamExceptions} is an alist with a key of rule-type and a value
-of beaming-rules.
-
-At this time the only available value of rule-type is
-@code{'end} for beam ending.
-
-Beaming-rules is a scheme alist (or list of pairs) that indicates the
-beam type and the grouping to be applied to beams containing notes with
-a shortest duration of that beam type.
-
-@example
-#'((beam-type1 . grouping-1)
-   (beam-type2 . grouping-2)
-   (beam-type3 . grouping-3))
-@end example
-
-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.  The grouping is in units of the beam type.
-
-@warning{ A @code{beamExceptions} value must be @emph{complete}
+@warning{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,
@@ -3476,6 +3511,12 @@ durations in the other staves.  For the above example
 >>
 @end lilypond
 
+Please make sure that you use the @code{\grace} command for the
+spacer part, even if the visual part uses @code{\acciaccatura} or
+@code{\appoggiatura} because otherwise an ugly slur fragment will
+be printed, connecting the invisible grace note with the following
+note.
+
 The use of grace notes within voice contexts confuses the way the voice
 is typeset. This can be overcome by inserting a rest or note between the
 voice command and the grace note.
index 4725ecf0dee3c913de583cde1eab149c96dfb2ea..c139853fc1d3b10e2f2b6c6b39c2c61817382a11 100644 (file)
@@ -7,7 +7,7 @@
     Guide, node Updating translation committishes..
 @end ignore
 
-@c \version "2.17.28"
+@c \version "2.19.2"
 
 
 @node Simultaneous notes
@@ -152,8 +152,9 @@ enharmonic transcription of one or more pitches,
 @node Chord repetition
 @unnumberedsubsubsec Chord repetition
 
-@cindex Chord, repetition
+@cindex chord, repetition
 @cindex repetition, using @code{q}
+@cindex @code{q}, chord repetition
 
 In order to save typing, a shortcut can be used to repeat the preceding
 chord.  The chord repetition symbol is @code{q}:
@@ -394,7 +395,7 @@ voices in a single staff is illustrated in the following example:
   \new Voice = "first"
     { \voiceOne r8 r16 g e8. f16 g8[ c,] f e16 d }
   \new Voice= "second"
-    { \voiceTwo d16 c d8~ d16 b c8~ c16 b c8~ c16 b8. }
+    { \voiceTwo d16 c d8~ 16 b c8~ 16 b c8~ 16 b8. }
 >>
 @end lilypond
 
@@ -471,7 +472,7 @@ The first example could be typeset as follows:
 <<
   { r8 r16 g e8. f16 g8[ c,] f e16 d }
   \\
-  { d16 c d8~ d16 b c8~ c16 b c8~ c16 b8. }
+  { d16 c d8~ 16 b c8~ 16 b c8~ 16 b8. }
 >>
 @end lilypond
 
@@ -1111,12 +1112,12 @@ be of the same length.}
 \parallelMusic #'(voiceA voiceB voiceC) {
   % Bar 1
   r8 g'16 c'' e'' g' c'' e'' r8 g'16 c'' e'' g' c'' e'' |
-  r16 e'8.~   e'4            r16 e'8.~   e'4            |
+  r16 e'8.~   4              r16 e'8.~   4              |
   c'2                        c'2                        |
 
   % Bar 2
   r8 a'16 d'' f'' a' d'' f'' r8 a'16 d'' f'' a' d'' f'' |
-  r16 d'8.~   d'4            r16 d'8.~   d'4            |
+  r16 d'8.~   4              r16 d'8.~   4              |
   c'2                        c'2                        |
 
 }
@@ -1136,12 +1137,12 @@ note in the input -- in other words, relative notes for
 \parallelMusic #'(voiceA voiceB voiceC) {
   % Bar 1
   r8 g16 c e g, c e r8 g,16 c e g, c e  |
-  r16 e8.~ e4       r16 e8.~  e4        |
+  r16 e8.~ 4        r16 e8.~  4         |
   c2                c                   |
 
   % Bar 2
   r8 a,16 d f a, d f r8 a,16 d f a, d f |
-  r16 d8.~  d4       r16 d8.~  d4       |
+  r16 d8.~  4        r16 d8.~  4        |
   c2                 c                  |
 
  }
index 73b431dd799a0af5ffde402bcf3d164a5b13cff9..3ee12b679876fdc986ccaabbbb78690b2d7cd06a 100644 (file)
@@ -21,30 +21,6 @@ Negative numbers are allowed:
 > and prints page number -1 on the second page, for example.
 
 
-In 5.2.1 the @refbugs (line 495 in spacing.itely on master) it
-states:
-
-"@code{layout-set-staff-size} does not change the distance between
-the
-staff lines."
-
-Could we add a sentence:
-"Use instead the pair               fontSize = #@var{N}
-            \override StaffSymbol.staff-space = #(magstep
-@var{N})
-inside the Staff context to change the size of the font and the
-distance between
-staff lines accordingly."
-
-Actually I found, that the @internalsref{StaffSymbol} at line 481
-sends to an incomplete
-documentation.  The property staff-space is not explained here.  I
-thought Y-extent might be of
-help, but it is in turn explained by x-space which again is
-missing from the list.  Who has the
-knowledge to fix this?
-
-
 Clarify
 http://code.google.com/p/lilypond/issues/detail?id=68
 
@@ -394,18 +370,16 @@ default value is scaled accordingly.
 @item ragged-bottom
 @funindex ragged-bottom
 
-If set to true, systems will not spread vertically down the page.
-This does not affect the last page.  This should be set to true
-for pieces that have only two or three systems per page, for
-example orchestral scores.
+If this is set to true,
+systems will be set at their natural spacing, neither compressed
+nor stretched vertically to fit the page.
 
 @item ragged-last-bottom
 @funindex ragged-last-bottom
 
-If set to false, systems will spread vertically down the last
-page.  Pieces that amply fill two pages or more should have this
-set to false.  It also affects the last page of book parts, i.e.
-parts of a book created with @code{\bookpart} blocks.
+If this is set to false, then the last page,
+and the last page in each section created with a @code{\bookpart} block,
+will be vertically justified in the same way as the earlier pages.
 
 @end table
 
@@ -1269,92 +1243,109 @@ Snippets:
 @cindex font size, setting
 @cindex staff size, setting
 @funindex layout file
+@funindex magnification->font-size
+@funindex magstep
+@funindex set-global-staff-size
+@funindex layout-set-staff-size
 
-The default @strong{staff size} is set to 20 points.
-This may be changed in two ways:
+The default @strong{staff size} is 20 points, which corresponds to
+a staff height of 7.03mm (one point is equal to 100/7227 of an
+inch, or 2540/7227 mm).  The staff size may be changed in three
+ways:
 
-To set the staff size globally for all scores in a file (or
-in a @code{book} block, to be precise), use @code{set-global-staff-size}.
+@enumerate
+
+@item
+To set the staff size globally for all scores in a file (or in a
+@code{\book} block, to be precise), use
+@code{set-global-staff-size}:
 
 @example
 #(set-global-staff-size 14)
 @end example
 
 @noindent
-This sets the global default size to 14pt staff height and scales all
-fonts accordingly.
+The above example sets the global default staff size to 14pt
+(4.92mm) and scales all fonts accordingly.
+
+@item
+To set the staff size for a single score within a book, use
+@code{layout-set-staff-size} inside that score's @code{\layout}
+block:
 
-To set the staff size individually for each score, use
 @example
-\score@{
+\score @{
   @dots{}
   \layout @{
-    #(layout-set-staff-size 15)
+    #(layout-set-staff-size 14)
   @}
 @}
 @end example
 
+@item
+To set the staff size for a single staff within a system, set the
+staff's font-size and staff-space using units relative to the
+score's default staff size.  Using relative units prevents the
+proportion of staff sizes from being altered if the default staff
+size is modified with @code{set-global-staff-size} or
+@code{layout-set-staff-size}.
+
+For example, traditionally engraved chamber music scores with
+piano often used 7mm piano staves while the other staves were up
+to 5/7 as large (if space allowed), or down to 3/5 as large (if
+space was cramped).  To achieve the 5/7 proportion, use:
+
+@example
+\score @{
+  <<
+    \new Staff \with @{
+      fontSize = #(magnification->font-size 5/7)
+      \override StaffSymbol.staff-space = #5/7
+    @} @{ @dots{} @}
+    \new PianoStaff @{ @dots{} @}
+  >>
+@}
+@end example
+
+If you happen to know which @code{fontSize} you wish to use, you
+could use the following form:
+
+@example
+\score @{
+  <<
+    \new Staff \with @{
+      fontSize = -3
+      \override StaffSymbol.staff-space = #(magstep -3)
+    @} @{ @dots{} @}
+    \new PianoStaff @{ @dots{} @}
+  >>
+@}
+@end example
+
+To emulate the look of traditional engraving, it is best to avoid
+reducing the thickness of the staff lines.
+
+@end enumerate
+
+
+@subheading Automatic font weight at different sizes
+
 The Feta font provides musical symbols at eight different
 sizes.  Each font is tuned for a different staff size: at a smaller size
 the font becomes heavier, to match the relatively heavier staff lines.
 The recommended font sizes are listed in the following table:
 
-@quotation
 @multitable @columnfractions .15 .2 .22 .2
-
-@item @b{font name}
-@tab @b{staff height (pt)}
-@tab @b{staff height (mm)}
-@tab @b{use}
-
-@item feta11
-@tab 11.22
-@tab 3.9
-@tab pocket scores
-
-@item feta13
-@tab 12.60
-@tab 4.4
-@tab
-
-@item feta14
-@tab 14.14
-@tab 5.0
-@tab
-
-@item feta16
-@tab 15.87
-@tab 5.6
-@tab
-
-@item feta18
-@tab 17.82
-@tab 6.3
-@tab song books
-
-@item feta20
-@tab 20
-@tab 7.0
-@tab standard parts
-
-@item feta23
-@tab 22.45
-@tab 7.9
-@tab
-
-@item feta26
-@tab 25.2
-@tab 8.9
-@tab
-@c modern rental material?
-
+@item @b{font name} @tab @b{staff height (pt)} @tab @b{staff height (mm)} @tab @b{use}
+@item feta11 @tab 11.22 @tab 3.9 @tab pocket scores
+@item feta13 @tab 12.60 @tab 4.4 @tab
+@item feta14 @tab 14.14 @tab 5.0 @tab
+@item feta16 @tab 15.87 @tab 5.6 @tab
+@item feta18 @tab 17.82 @tab 6.3 @tab song books
+@item feta20 @tab 20 @tab 7.0 @tab standard parts
+@item feta23 @tab 22.45 @tab 7.9 @tab
+@item feta26 @tab 25.2 @tab 8.9 @tab @c modern rental material?
 @end multitable
-@end quotation
-
-These fonts are available in any sizes.  The context property
-@code{fontSize} and the layout property @code{staff-space} (in
-@rinternals{StaffSymbol}) can be used to tune the size for individual
-staves.  The sizes of individual staves are relative to the global size.
 
 @seealso
 Notation Reference:
@@ -1521,10 +1512,12 @@ The @code{\pageBreak} and @code{\noPageBreak} commands may also be
 inserted at top-level, between scores and top-level markups.
 
 There are also analogous settings to @code{ragged-right} and
-@code{ragged-last} which have the same effect on vertical spacing:
-@code{ragged-bottom} and @code{ragged-last-bottom}.  If set to
-@code{#t} the systems on all pages or just the last page
-respectively will not be justified vertically.  See
+@code{ragged-last} which have the same effect on vertical spacing.
+If @code{ragged-bottom} is set to @code{#t} the systems will not
+be justified vertically.  When @code{ragged-last-bottom} is set
+to @code{#t}, as it is by default, empty space is allowed at the
+bottom of the final page (or the final page in each
+@code{\bookpart}).  See
 @ref{Fixed vertical spacing paper variables,,Fixed vertical spacing @code{@bs{}paper} variables}.
 
 Page breaks are computed by the @code{page-breaking} function.  LilyPond
@@ -2768,8 +2761,7 @@ more space, shorter durations get less.  The shortest durations get a
 fixed amount of space (which is controlled by
 @code{shortest-duration-space} in the @rinternals{SpacingSpanner}
 object).  The longer the duration, the more space it gets: doubling a
-duration adds a fixed amount (this amount is controlled by
-@code{spacing-increment}) of space to the note.
+duration adds @code{spacing-increment} of space to the note.
 
 For example, the following piece contains lots of half, quarter, and
 8th notes; the eighth note is followed by 1 note head width (NHW).
@@ -3089,11 +3081,14 @@ proportional notation settings and examine how these settings interact.
 We start with the following one-measure example, which uses classical
 spacing with ragged-right turned on.
 
+@c The initial pitch is not necessary as long as RhythmicStaff is
+@c not preceded by other material in the score, but we don't want
+@c to explain that.
 @lilypond[quote,verbatim,ragged-right]
 \score {
   <<
     \new RhythmicStaff {
-      c'2 c'16 c' c' c' \tuplet 5/4 { c'16 c' c' c' c' }
+      c2 16 16 16 16 \tuplet 5/4 { 16 16 16 16 16 }
     }
   >>
 }
@@ -3118,7 +3113,7 @@ setting.
 \score {
   <<
     \new RhythmicStaff {
-      c'2 c'16 c' c' c' \tuplet 5/4 { c'16 c' c' c' c' }
+      c2 16 16 16 16 \tuplet 5/4 { 16 16 16 16 16 }
     }
   >>
  \layout {
@@ -3162,7 +3157,7 @@ larger reference durations space music tightly.
 \score {
   <<
     \new RhythmicStaff {
-      c'2 c'16 c' c' c' \tuplet 5/4 { c'16 c' c' c' c' }
+      c2 16 16 16 16 \tuplet 5/4 { 16 16 16 16 16 }
     }
   >>
   \layout {
@@ -3176,7 +3171,7 @@ larger reference durations space music tightly.
 \score {
   <<
     \new RhythmicStaff {
-      c'2 c'16 c' c' c' \tuplet 5/4 { c'16 c' c' c' c' }
+      c2 16 16 16 16 \tuplet 5/4 { 16 16 16 16 16 }
     }
   >>
   \layout {
@@ -3190,7 +3185,7 @@ larger reference durations space music tightly.
 \score {
   <<
     \new RhythmicStaff {
-      c'2 c'16 c' c' c' \tuplet 5/4 { c'16 c' c' c' c' }
+      c2 16 16 16 16 \tuplet 5/4 { 16 16 16 16 16 }
     }
   >>
   \layout {
@@ -3218,10 +3213,10 @@ tuplet.
 \score {
   <<
     \new RhythmicStaff {
-      c'2 c'16 c' c' c' \tuplet 5/4 { c'16 c' c' c' c' }
+      c2 16 16 16 16 \tuplet 5/4 { 16 16 16 16 16 }
     }
     \new RhythmicStaff {
-      \tuplet 9/8 { c'8 c' c' c' c' c' c' c' c' }
+      \tuplet 9/8 { c8 8 8 8 8 8 8 8 8 }
     }
   >>
 }
@@ -3236,10 +3231,10 @@ result.  Setting @code{proportionalNotationDuration} fixes this.
 \score {
   <<
     \new RhythmicStaff {
-      c'2 c'16 c' c' c' \tuplet 5/4 { c'16 c' c' c' c' }
+      c2 16 16 16 16 \tuplet 5/4 { 16 16 16 16 16 }
     }
     \new RhythmicStaff {
-      \tuplet 9/8 { c'8 c' c' c' c' c' c' c' c' }
+      \tuplet 9/8 { c8 8 8 8 8 8 8 8 8 }
     }
   >>
   \layout {
@@ -3261,10 +3256,10 @@ turn on @code{uniform-stretching}, which is a property of
 \score {
   <<
     \new RhythmicStaff {
-      c'2 c'16 c' c' c' \tuplet 5/4 { c'16 c' c' c' c' }
+      c2 16 16 16 16 \tuplet 5/4 { 16 16 16 16 16 }
     }
     \new RhythmicStaff {
-      \tuplet 9/8 { c'8 c' c' c' c' c' c' c' c' }
+      \tuplet 9/8 { c8 8 8 8 8 8 8 8 8 }
     }
   >>
   \layout {
@@ -3360,13 +3355,13 @@ property of @code{SpacingSpanner}.  Compare the two scores below:
 @lilypond[quote,verbatim,ragged-right]
 \new Staff {
   \set Score.proportionalNotationDuration = #(ly:make-moment 1/16)
-  c''8 c'' c'' \clef alto d' d'2
+  c''8 8 8 \clef alto d'2 2
 }
 
 \new Staff {
   \set Score.proportionalNotationDuration = #(ly:make-moment 1/16)
   \override Score.SpacingSpanner.strict-note-spacing = ##t
-  c''8 c'' c'' \clef alto d' d'2
+  c''8 8 8 \clef alto d'2 2
 }
 @end lilypond
 
index e7133e3d4f6f9ffb34f84b0c3cc4712d86744e1e..1462d0996e6b07cbec99d08948c1e07c4cb315a6 100644 (file)
@@ -7,7 +7,7 @@
     Guide, node Updating translation committishes..
 @end ignore
 
-@c \version "2.17.30"
+@c \version "2.19.2"
 
 @node Staff notation
 @section Staff notation
@@ -1029,7 +1029,7 @@ expression to declare the instrument switch:
   R1*16
   \instrumentSwitch "contrabassoon"
   c,,2 g \break
-  c,1 ~ | c1
+  c,1 ~ | 1
 }
 @end lilypond
 
index 62aac77931fc2a33268c62ae90dfb67f065952d1..739abbdf4956a1dd25d75fe6f1188b7b85e52f92 100644 (file)
@@ -1486,8 +1486,8 @@ a1_\markup {
 
 @funindex show-available-fonts
 
-The following command displays a list of all available fonts on the
-operating system:
+Running lilypond with the following option displays a list of all
+available fonts on the operating system:
 
 @example
 lilypond -dshow-available-fonts x
index 06aa65d46d7133a6933f31facc9e9f91b438d5b2..62600cf5478aa0f2d27d84db3a5453d6119183d5 100644 (file)
@@ -7,7 +7,7 @@
     Guide, node Updating translation committishes..
 @end ignore
 
-@c \version "2.17.30"
+@c \version "2.19.2"
 
 @node Vocal music
 @section Vocal music
@@ -654,8 +654,8 @@ together:
   \new Voice = "melody" {
     \time 3/4
     f4 g2 ~ |
-    g4 e2 ~ |
-    e8
+    4 e2 ~ |
+    8
   }
   \new Lyrics \lyricsto "melody" {
     Ky -- ri -- e __
@@ -755,7 +755,7 @@ without their indicating melismata.  To do this, set
     \time 3/4
     \set melismaBusyProperties = #'()
     c4 d ( e )
-    g8 [ f ] f4 ~ f
+    g8 [ f ] f4 ~ 4
   }
   \new Lyrics \lyricsto "melody" {
     Ky -- ri -- e e -- le -- i -- son
@@ -783,7 +783,7 @@ should be included in the melisma:
     \time 3/4
     \set melismaBusyProperties = #'()
     c4 d ( e )
-    g8 [ f ] ~ f4 ~ f
+    g8 [ f ] ~ 4 ~ f
   }
   \new Lyrics \lyricsto "melody" {
     Ky -- ri -- _ e __ _ _ _
@@ -2282,6 +2282,8 @@ Several common topics in choral music are described fully elsewhere:
 @item
 An introduction to creating an SATB vocal score can be found in
 the Learning Manual, see @rlearning{Four-part SATB vocal score}.
+There is also a built-in template which simplifies the entry of
+SATB vocal music, see @rlearning{Built-in templates}.
 
 @item
 Several templates suitable for various styles of choral music can
index d163414d3b0f29612102322f8cc99cb3918196a2..2a1dc1853bb4247c1b3caf52b57d6418be6915d8 100644 (file)
Binary files a/Documentation/pictures/logo-debian.png and b/Documentation/pictures/logo-debian.png differ
index 4304b738197a9fd00219fb5ff4ed733417f6eacb..1737322565afba535ec7c6f9c54883c24713ffbd 100644 (file)
@@ -1,5 +1,5 @@
 # translation of LilyPond documentation to Italian
-# Copyright (C) 2009--2012 Han-Wen Nienhuys, Jan Nieuwenhuizen
+# Copyright (C) 2009--2014 Han-Wen Nienhuys, Jan Nieuwenhuizen
 # This file is distributed under the same license as the lilypond package.
 # Federico Bruni <fedelogy@gmail.com>, 2009, 2012.
 #
index 9f48bc6f56489ed97948262193d18eed5f44b2f5..988033c8a63e46da0ef05c42feec58407fdd00e7 100644 (file)
@@ -9,11 +9,11 @@ search for a while and have a redirection from "v2.15" to "v2.17".
 <form action="http://google.com/search"
       method="get"
       name="search"
-      onSubmit="search.q.value='site:lilypond.org/doc/v2.17 '
+      onSubmit="search.q.value='site:lilypond.org/doc/v2.19 '
                + search.brute_query.value"
-      onMouseMove="search.q.value='site:lilypond.org/doc/v2.17 '
+      onMouseMove="search.q.value='site:lilypond.org/doc/v2.19 '
                   + search.brute_query.value"
-      onKeyUp="search.q.value='site:lilypond.org/doc/v2.17 '
+      onKeyUp="search.q.value='site:lilypond.org/doc/v2.19 '
               + search.brute_query.value">
   <input type="hidden" name="btnG" value="Google Search">
   <input type="text" name="brute_query" onfocus="this.value=''" value="Search">
index 7acef57d5632dd4aaa82da8f14945e4dfe1c6abb..ae3f731ed209b4fc9ed41e74115daee09b6da878 100644 (file)
@@ -4,7 +4,7 @@
 %% and then run scripts/auxiliar/makelsr.py
 %%
 %% This file is in the public domain.
-\version "2.16.0"
+\version "2.19.2"
 
 \header {
   lsrtags = "text, vocal-music"
@@ -29,7 +29,7 @@ their note.  The alignment can be altered using the
         c d~^\markup "reset to default" d e
       }
     }
-    \new Lyrics \lyricsto "vocal" \lyricmode {
+    \new Lyrics \lyricsto "vocal" {
       word word word
       \set lyricMelismaAlignment = #RIGHT
       word word word
index 68960a584034a088585dece16ea64f49fadc32f0..1515b52fa33484719226a9b74237278c66160d21 100644 (file)
@@ -4,8 +4,8 @@
 % and then run scripts/auxiliar/makelsr.py
 %
 % This file is in the public domain.
-%% Note: this file works from version 2.17.27
-\version "2.17.27"
+%% Note: this file works from version 2.19.2
+\version "2.19.2"
 
 \header {
   lsrtags = "contemporary-notation, expressive-marks, symbols-and-glyphs"
@@ -44,7 +44,7 @@ draw the rectangle over the hairpin.
       des16_\markup \with-dimensions #'(2 . 7) #'(0 . 0)
                     \with-color #white
                     \filled-box #'(2 . 7) #'(0 . 2) #0
-      r8. des4 ~ des16->\sff
+      r8. des4 ~ 16->\sff
     }
   >>
 }
index aded2070cb32726066a534e4bed17bde00ecdd19..1cd549b7423c67693d033dad8c382395f8bff0b1 100644 (file)
@@ -4,7 +4,7 @@
 %% and then run scripts/auxiliar/makelsr.py
 %%
 %% This file is in the public domain.
-\version "2.16.0"
+\version "2.19.2"
 
 \header {
   lsrtags = "contexts-and-engravers, midi, real-music"
@@ -36,8 +36,8 @@ two MIDI channels are created, each with a different
       \time 2/2
       r2 g-"Flute" ~
       g fis ~
-      fis4 g8 fis e2 ~
-      e4 d8 cis d2
+      4 g8 fis e2 ~
+      4 d8 cis d2
     }
     \new Voice \relative c'' {
       \set midiInstrument = #"clarinet"
index 88efc8c20f6c8bdca90cd4a1bf4edeab90fb6b8c..4deb652211edfdfb1a1323fcb1dfeedad0429015 100644 (file)
@@ -5,7 +5,7 @@
 %
 % This file is in the public domain.
 %% Note: this file works from version 2.16.0
-\version "2.16.0"
+\version "2.19.7"
 
 \header {
 
@@ -184,7 +184,7 @@ position of middle C and key signature from @var{translator}'s context."
                                     0))
          (set! (ambitus-start-key-sig ambitus)
                (ly:context-property (ly:translator-context translator)
-                                    'keySignature)))))
+                                    'keyAlterations)))))
 
 #(define-method (update-ambitus-notes (ambitus <ambitus>) note-grob)
    "Update the upper and lower ambitus pithes of @var{ambitus}, using
index bae30fb4402be3b6b3d429f0a94ee7a0f3dd603a..68cadaf2230f1ae4a6520c76212d466fe847df42 100644 (file)
@@ -4,7 +4,7 @@
 %% and then run scripts/auxiliar/makelsr.py
 %%
 %% This file is in the public domain.
-\version "2.17.29"
+\version "2.19.7"
 
 \header {
   lsrtags = "contexts-and-engravers, specific-notation"
@@ -109,7 +109,7 @@ MyStaff = \context {
 
   \consists "Pitch_squash_engraver"
 
-  localKeySignature = #'()
+  localAlterations = #'()
 
   % explicitly set instrumentName, so we don't get
   % weird effects when doing instrument names for
@@ -135,7 +135,7 @@ MyVoice = \context {
     You have to instantiate this explicitly if you want to have
     multiple voices on the same staff."
 
-  localKeySignature = #'()
+  localAlterations = #'()
   \consists "Font_size_engraver"
 
   % must come before all
index 8b76e0204d938fa0f8990644f6b9a19060c51a7d..018a27b61cfede0130b916f8eca955a0b06738a0 100644 (file)
@@ -4,7 +4,7 @@
 %% and then run scripts/auxiliar/makelsr.py
 %%
 %% This file is in the public domain.
-\version "2.17.6"
+\version "2.19.2"
 
 \header {
   lsrtags = "headword"
@@ -78,7 +78,7 @@ extendOff = \bassFigureExtendersOff
       r16 d16 |
       d4 bes,4 a,4 f4 |
       g8 f16 g16 a8 a,8 d4 d'4 ~ |
-      d'8 c'8 b4 c'8 c'16 bes16 a4 |
+      8 c'8 b4 c'8 c'16 bes16 a4 |
       bes8 bes16 a16 g4 a8 a,4 a16 g16 |
       fis8 d8 e8 fis8 g8 g,4 g16 f16 |
       e8 c8 d8 e8 f8 f,4 a,8 |
index 9657cfe775b0845a1eae4f61a86475282d3df652..96a6bcc153de26b30a0e29441ae687847c003706 100644 (file)
@@ -1,10 +1,11 @@
-%% DO NOT EDIT this file manually; it is automatically
-%% generated from LSR http://lsr.dsi.unimi.it
-%% Make any changes in LSR itself, or in Documentation/snippets/new/ ,
-%% and then run scripts/auxiliar/makelsr.py
-%%
-%% This file is in the public domain.
-\version "2.16.0"
+% DO NOT EDIT this file manually; it is automatically
+% generated from Documentation/snippets/new
+% Make any changes in Documentation/snippets/new/
+% and then run scripts/auxiliar/makelsr.py
+%
+% This file is in the public domain.
+%% Note: this file works from version 2.19.0
+\version "2.19.0"
 
 \header {
   lsrtags = "contemporary-notation, rhythms"
@@ -47,7 +48,7 @@ carry both a left- and right-pointing flat flag. Do this with paired
 (Note that @code{\\set stemLeftBeamCount} is always equivalent to
 @code{\\once \\set}.  In other words, the beam count settings are not
 @qq{sticky}, so the pair of flat flags attached to the lone
-@code{c'16[]} in the last example have nothing to do with the
+@code{16[]} in the last example have nothing to do with the
 @code{\\set} two notes prior.)
 
 
@@ -69,25 +70,25 @@ carry both a left- and right-pointing flat flag. Do this with paired
     \new RhythmicStaff {
       r8.
       \set stemRightBeamCount = #0
-      c16[]
+      16[]
     }
     % Example 3
     \new RhythmicStaff {
-      c16 c
+      16 16
       \set stemRightBeamCount = #2
-      c16 r r
+      16 r r
       \set stemLeftBeamCount = #2
-      c16 c c
+      16 16 16
     }
     % Example 4
     \new RhythmicStaff {
-      c16 c
+      16 16
       \set stemRightBeamCount = #2
-      c16 r
-      c16[]
+      16 r16
+      16[]
       r16
       \set stemLeftBeamCount = #2
-      c16 c
+      16 16
     }
   >>
 }
index 1c3c4ea4ea590867214e11a58917e8ad840b1301..7cb8869e0afd7cbd90cd056a12f689fff3f2708e 100644 (file)
@@ -4,7 +4,7 @@
 %% and then run scripts/auxiliar/makelsr.py
 %%
 %% This file is in the public domain.
-\version "2.17.6"
+\version "2.19.2"
 
 \header {
   lsrtags = "pitches"
@@ -19,7 +19,7 @@ system.
 
 \relative c'' {
   \override Accidental.hide-tied-accidental-after-break = ##t
-  cis1~ cis~
+  cis1~ 1~
   \break
   cis
 }
index cbcd2bc9c724c931b57be795526ef4f3feb74547..da24c5a5dda064c02dbe9cc86f0adebdd7e1e3cd 100644 (file)
@@ -4,7 +4,7 @@
 %% and then run scripts/auxiliar/makelsr.py
 %%
 %% This file is in the public domain.
-\version "2.17.6"
+\version "2.19.2"
 
 \header {
   lsrtags = "fretted-strings, specific-notation, tweaks-and-overrides"
@@ -51,7 +51,7 @@ harmonies = \chordmode
      b4.~^\markup { \fret-diagram  #"6-x;5-2;4-4;3-2;2-2;1-4;"  } b4. a8\break
 % HERE IS THE SECOND METHOD
      <<
-       { a8 b4.~ b4. a8}
+       { a8 b4.~ 4. a8}
        { s4 s4 s4^\markup { \fret-diagram  #"6-x;5-2;4-4;3-2;2-2;1-4;"  }
        }
      >>
index b170052daa9296edff0149500c3a76cf46ed6984..0b0b6bba2186ae88cce8d9bc196c3f148ca9b5eb 100644 (file)
@@ -4,7 +4,7 @@
 %% and then run scripts/auxiliar/makelsr.py
 %%
 %% This file is in the public domain.
-\version "2.16.0"
+\version "2.19.7"
 
 \header {
   lsrtags = "pitches, version-specific, world-music"
@@ -23,7 +23,7 @@ details of pitch names and alterations.
 \include "makam.ly"
 
 \relative c' {
-  \set Staff.keySignature = #`((6 . ,(- KOMA)) (3 . ,BAKIYE))
+  \set Staff.keyAlterations = #`((6 . ,(- KOMA)) (3 . ,BAKIYE))
   c4 cc db fk
   gbm4 gfc gfb efk
   fk4 db cc c
index c7ad7b10a5585dd30f10c28a4fa5182ccf0a36e0..8ff1608b09eff34b55c3d9e6ebd180b6cd52db91 100644 (file)
@@ -4,8 +4,8 @@
 % and then run scripts/auxiliar/makelsr.py
 %
 % This file is in the public domain.
-%% Note: this file works from version 2.17.30
-\version "2.17.30"
+%% Note: this file works from version 2.19.2
+\version "2.19.2"
 
 \header {
   lsrtags = "rhythms, simultaneous-notes, tweaks-and-overrides"
@@ -33,10 +33,10 @@ in that voice, the tie appears to cross voices.
     {
       \once \hide Stem
       \once \override Stem.length = #8
-      b8 ~ b\noBeam
+      b8 ~ 8\noBeam
       \once \hide Stem
       \once \override Stem.length = #8
-      g8 ~ g\noBeam
+      g8 ~ 8\noBeam
     }
     \\
     {
index a2553ad84ec7c4e2a761471ce2c7bd208c55f8f7..1c1fcd1019ff14d8805e1b1f9ba1a401f56f6bd7 100644 (file)
@@ -14,9 +14,9 @@ The shorthands are defined in @samp{ly/script-init.ly}, where the
 variables @code{dashHat}, @code{dashPlus}, @code{dashDash},
 @code{dashBang}, @code{dashLarger}, @code{dashDot}, and
 @code{dashUnderscore} are assigned default values.  The default values
-for the shorthands can be modified. For example, to associate the
-@code{-+} (@code{dashPlus}) shorthand with the trill symbol instead of
-the default + symbol, assign the value @code{trill} to the variable
+for the shorthands can be modified. For example, to make the @code{-+}
+(@code{dashPlus}) shorthand create a trill instead of the default +
+(@code{stopped}), assign the value of @code{trill} to the variable
 @code{dashPlus}:
 
 "
@@ -26,6 +26,6 @@ the default + symbol, assign the value @code{trill} to the variable
 
 \relative c'' { c1-+ }
 
-dashPlus = "trill"
+dashPlus = \trill
 
 \relative c'' { c1-+ }
index bde66e61680a96f7a3d805cd5941149b5e0f8c71..f19f6bc318e0c8922cf079b8fbf223f7fec960c0 100644 (file)
@@ -1,10 +1,11 @@
-%% DO NOT EDIT this file manually; it is automatically
-%% generated from LSR http://lsr.dsi.unimi.it
-%% Make any changes in LSR itself, or in Documentation/snippets/new/ ,
-%% and then run scripts/auxiliar/makelsr.py
-%%
-%% This file is in the public domain.
-\version "2.17.11"
+% DO NOT EDIT this file manually; it is automatically
+% generated from Documentation/snippets/new
+% Make any changes in Documentation/snippets/new/
+% and then run scripts/auxiliar/makelsr.py
+%
+% This file is in the public domain.
+%% Note: this file works from version 2.19.0
+\version "2.19.0"
 
 \header {
   lsrtags = "really-simple, rhythms"
@@ -30,11 +31,11 @@ modify what material they cover.
   % ...to cover all items up to the next note
   \set tupletFullLengthNote = ##t
   \time 2/4
-  \tuplet 3/2 { c4 c c }
+  \tuplet 3/2 { c4 4 4 }
   % ...or to cover just whitespace
   \set tupletFullLengthNote = ##f
   \time 4/4
-  \tuplet 5/4 { c4 c1 }
+  \tuplet 5/4 { 1 }
   \time 3/4
-  c2.
+  2.
 }
index 27df9446add062c78f7e3f9a8371dc8f29429250..f14c983eeaad2b5f494d329f022b7ec72f3b9a2d 100644 (file)
@@ -1,4 +1,4 @@
-\version "2.17.27"
+\version "2.19.2"
 
 \header {
   lsrtags = "contemporary-notation, expressive-marks, symbols-and-glyphs"
@@ -36,7 +36,7 @@ draw the rectangle over the hairpin.
       des16_\markup \with-dimensions #'(2 . 7) #'(0 . 0)
                     \with-color #white
                     \filled-box #'(2 . 7) #'(0 . 2) #0
-      r8. des4 ~ des16->\sff
+      r8. des4 ~ 16->\sff
     }
   >>
 }
index 84642a20da45a56d535e4af283b7717711ad7061..16758381c3148e15ea602122d50980c2ce6450e6 100644 (file)
@@ -1,4 +1,4 @@
-\version "2.16.0"
+\version "2.19.7"
 
 \header {
 
@@ -176,7 +176,7 @@ position of middle C and key signature from @var{translator}'s context."
                                     0))
          (set! (ambitus-start-key-sig ambitus)
                (ly:context-property (ly:translator-context translator)
-                                    'keySignature)))))
+                                    'keyAlterations)))))
 
 #(define-method (update-ambitus-notes (ambitus <ambitus>) note-grob)
    "Update the upper and lower ambitus pithes of @var{ambitus}, using
diff --git a/Documentation/snippets/new/flat-flags-and-beam-nibs.ly b/Documentation/snippets/new/flat-flags-and-beam-nibs.ly
new file mode 100644 (file)
index 0000000..754394b
--- /dev/null
@@ -0,0 +1,86 @@
+\version "2.19.0"
+
+\header {
+  lsrtags = "contemporary-notation, rhythms"
+
+  texidoc = "
+ Flat flags on lone notes and beam nibs at the ends of beamed figures
+are both possible with a combination of @code{stemLeftBeamCount},
+@code{stemRightBeamCount} and paired @code{[]} beam indicators.
+
+
+
+
+For right-pointing flat flags on lone notes, use paired @code{[]} beam
+indicators and set @code{stemLeftBeamCount} to zero (see Example 1).
+
+
+
+
+For left-pointing flat flags, set @code{stemRightBeamCount} instead
+(Example 2).
+
+
+
+
+For right-pointing nibs at the end of a run of beamed notes, set
+@code{stemRightBeamCount} to a positive value. And for left-pointing
+nibs at the start of a run of beamed notes, set
+@code{stemLeftBeamCount} instead (Example 3).
+
+
+
+
+Sometimes it may make sense for a lone note surrounded by rests to
+carry both a left- and right-pointing flat flag. Do this with paired
+@code{[]} beam indicators alone (Example 4).
+
+
+
+
+(Note that @code{\\set stemLeftBeamCount} is always equivalent to
+@code{\\once \\set}.  In other words, the beam count settings are not
+@qq{sticky}, so the pair of flat flags attached to the lone
+@code{16[]} in the last example have nothing to do with the
+@code{\\set} two notes prior.)
+
+
+
+
+"
+  doctitle = "Flat flags and beam nibs"
+}
+\score {
+  <<
+    % Example 1
+    \new RhythmicStaff {
+      \set stemLeftBeamCount = #0
+      c16[]
+      r8.
+    }
+    % Example 2
+    \new RhythmicStaff {
+      r8.
+      \set stemRightBeamCount = #0
+      16[]
+    }
+    % Example 3
+    \new RhythmicStaff {
+      16 16
+      \set stemRightBeamCount = #2
+      16 r r
+      \set stemLeftBeamCount = #2
+      16 16 16
+    }
+    % Example 4
+    \new RhythmicStaff {
+      16 16
+      \set stemRightBeamCount = #2
+      16 r16
+      16[]
+      r16
+      \set stemLeftBeamCount = #2
+      16 16
+    }
+  >>
+}
index 70b3bf144edf0660ae248641b494b9c190f54ac4..2596aebc36c98d0d8768035295fd4e5a0fa42d7b 100644 (file)
@@ -1,4 +1,4 @@
-\version "2.17.30"
+\version "2.19.2"
 
 \header {
   lsrtags = "rhythms, simultaneous-notes, tweaks-and-overrides"
@@ -25,10 +25,10 @@ in that voice, the tie appears to cross voices.
     {
       \once \hide Stem
       \once \override Stem.length = #8
-      b8 ~ b\noBeam
+      b8 ~ 8\noBeam
       \once \hide Stem
       \once \override Stem.length = #8
-      g8 ~ g\noBeam
+      g8 ~ 8\noBeam
     }
     \\
     {
diff --git a/Documentation/snippets/new/modifying-tuplet-bracket-length.ly b/Documentation/snippets/new/modifying-tuplet-bracket-length.ly
new file mode 100644 (file)
index 0000000..6ee36e8
--- /dev/null
@@ -0,0 +1,33 @@
+\version "2.19.0"
+
+\header {
+  lsrtags = "really-simple, rhythms"
+
+  texidoc = "
+Tuplet brackets can be made to run to prefatory matter or the next
+note. Default tuplet brackets end at the right edge of the final note
+of the tuplet; full-length tuplet brackets extend farther to the right,
+either to cover all the non-rhythmic notation up to the following note,
+or to cover only the whitespace before the next item of notation, be
+that a clef, time signature, key signature, or another note.  The
+example shows how to switch tuplets to full length mode and how to
+modify what material they cover.
+
+"
+  doctitle = "Modifying tuplet bracket length"
+}
+
+\new RhythmicStaff {
+  % Set tuplets to be extendable...
+  \set tupletFullLength = ##t
+  % ...to cover all items up to the next note
+  \set tupletFullLengthNote = ##t
+  \time 2/4
+  \tuplet 3/2 { c4 4 4 }
+  % ...or to cover just whitespace
+  \set tupletFullLengthNote = ##f
+  \time 4/4
+  \tuplet 5/4 { 4 1 }
+  \time 3/4
+  2.
+}
diff --git a/Documentation/snippets/new/non-traditional-key-signatures.ly b/Documentation/snippets/new/non-traditional-key-signatures.ly
new file mode 100644 (file)
index 0000000..5559898
--- /dev/null
@@ -0,0 +1,44 @@
+\version "2.19.7"
+
+\header {
+  lsrtags = "contemporary-notation, pitches, really-cool, staff-notation, version-specific"
+
+  texidoc = "
+The commonly used @code{\\key} command sets the @code{keyAlterations}
+property, in the @code{Staff} context.
+
+To create non-standard key signatures, set this property directly. The
+format of this command is a list:
+
+@code{ \\set Staff.keyAlterations = #`(((octave . step) . alter) ((octave
+. step) . alter) ...) } where, for each element in the list,
+@code{octave} specifies the octave (0 being the octave from middle C to
+the B above), @code{step} specifies the note within the octave (0 means
+C and 6 means B), and @code{alter} is @code{,SHARP ,FLAT ,DOUBLE-SHARP}
+etc. (Note the leading comma.)
+
+
+Alternatively, for each item in the list, using the more concise format
+@code{(step . alter)} specifies that the same alteration should hold in
+all octaves.
+
+
+For microtonal scales where a @qq{sharp} is not 100 cents, @code{alter}
+refers to the alteration as a proportion of a 200-cent whole tone.
+
+
+Here is an example of a possible key signature for generating a
+whole-tone scale:
+
+"
+  doctitle = "Non-traditional key signatures"
+}
+
+
+\relative c' {
+  \set Staff.keyAlterations = #`((6 . ,FLAT)
+                                 (5 . ,FLAT)
+                                 (3 . ,SHARP))
+  c4 d e fis
+  aes4 bes c2
+}
diff --git a/Documentation/snippets/new/printing-a-repeat-sign-at-the-beginning-of-a-piece.ly b/Documentation/snippets/new/printing-a-repeat-sign-at-the-beginning-of-a-piece.ly
deleted file mode 100644 (file)
index 1bdd351..0000000
+++ /dev/null
@@ -1,36 +0,0 @@
-\version "2.17.6"
-
-\header {
-  lsrtags = "repeats, tweaks-and-overrides"
-
-  texidoc = "
-A @code{.|:} bar line can be printed at the beginning of a piece, by
-overriding the relevant property:
-
-"
-  doctitle = "Printing a repeat sign at the beginning of a piece"
-}
-
-
-\relative c'' {
-  \once \override Score.BreakAlignment.break-align-orders =
-    #(make-vector 3 '(instrument-name
-                      left-edge
-                      ambitus
-                      breathing-sign
-                      clef
-                      key-signature
-                      time-signature
-                      staff-bar
-                      custos))
-  \once \override Staff.TimeSignature.space-alist =
-    #'((first-note . (fixed-space . 2.0))
-       (right-edge . (extra-space . 0.5))
-       ;; free up some space between time signature
-       ;; and repeat bar line
-       (staff-bar . (extra-space . 1)))
-  \bar ".|:"
-  c1
-  d1
-  d4 e f g
-}
index 67bc0f628684fcf2648bf96d944b717286113f70..a23b5cb06323cb9f337bc8f8b4f8789e6efad74c 100644 (file)
@@ -35,22 +35,13 @@ trompette = \relative do'' {
   do8-. r8 sib4-> |
 }
 
-tambourin = \relative do' {
+tambourin = \drummode {
   \time 2/4
-  r8 do16 do do8 do |
-  r8 do16 do do8 do |
-  r8 do r do |
-  r8 do16 do do8 do |
-  r8 do r do |
-}
-
-tambourinMidi = \drummode {
-  \time 2/4
-  r8 tamb16 tamb tamb8 tamb |
-  r8 tamb16 tamb tamb8 tamb |
-  r8 tamb r tamb |
-  r8 tamb16 tamb tamb8 tamb |
-  r8 tamb r tamb |
+  r8 tamb16 16 8 8 |
+  r8 16 16 8 8 |
+  r8 8 r8 8 |
+  r8 16 16 8 8 |
+  r8 8 r8 8 |
 }
 
 upper = \relative do' {
@@ -102,7 +93,7 @@ lower = \relative do {
       \trompette
     }
     \context DrumStaff = "tambourin" {
-      \tambourinMidi
+      \tambourin
     }
     \context Staff = "piano" <<
       \upper
@@ -113,4 +104,3 @@ lower = \relative do {
     \tempo 4 = 72
   }
 }
-
index 5c3f8a05dcb891afffcbfb4b588846c0d5a188d4..34397fb8e20bd5e96f758446d072702ab60dd613 100644 (file)
@@ -1,4 +1,4 @@
-\version "2.17.30"
+\version "2.19.2"
 
 \header {
   lsrtags = "headword"
@@ -146,7 +146,7 @@ ViolinSolo = \relative c' {
   \time 15/4
   <<
     { \shift d2 \glissando ^\markup \colmark { \quatre \dubetc \pvib \norm } \shifta e1 \glissando d2 } \\
-    { d2 \open \mf \< ~ d1 ~ d2 \ff  ~ d1 \> ~ d2 ^\markup \colmark { " " " " \svib } ~ d4 \pp}
+    { d2 \open \mf \< ~ d1 ~ 2 \ff  ~ d1 \> ~ d2 ^\markup \colmark { " " " " \svib } ~ d4 \pp}
   >>
   \break
 
index 188f72b3d6a315cf9a972152a4a13aa8fd2e5883..de513d1681cfb3972fb32442bc6cbfbd52b43930 100644 (file)
@@ -1,28 +1,28 @@
-%% DO NOT EDIT this file manually; it is automatically
-%% generated from LSR http://lsr.dsi.unimi.it
-%% Make any changes in LSR itself, or in Documentation/snippets/new/ ,
-%% and then run scripts/auxiliar/makelsr.py
-%%
-%% This file is in the public domain.
-\version "2.16.0"
+% DO NOT EDIT this file manually; it is automatically
+% generated from Documentation/snippets/new
+% Make any changes in Documentation/snippets/new/
+% and then run scripts/auxiliar/makelsr.py
+%
+% This file is in the public domain.
+%% Note: this file works from version 2.19.7
+\version "2.19.7"
 
 \header {
   lsrtags = "contemporary-notation, pitches, really-cool, staff-notation, version-specific"
 
   texidoc = "
-The commonly used @code{\\key} command sets the @code{keySignature}
+The commonly used @code{\\key} command sets the @code{keyAlterations}
 property, in the @code{Staff} context.
 
 To create non-standard key signatures, set this property directly. The
 format of this command is a list:
 
-@code{ \\set Staff.keySignature = #`(((octave . step) . alter) ((octave
+@code{ \\set Staff.keyAlterations = #`(((octave . step) . alter) ((octave
 . step) . alter) ...) } where, for each element in the list,
 @code{octave} specifies the octave (0 being the octave from middle C to
 the B above), @code{step} specifies the note within the octave (0 means
 C and 6 means B), and @code{alter} is @code{,SHARP ,FLAT ,DOUBLE-SHARP}
-etc. (Note the leading comma.) The accidentals in the key signature
-will appear in the reverse order to that in which they are specified.
+etc. (Note the leading comma.)
 
 
 Alternatively, for each item in the list, using the more concise format
@@ -42,10 +42,11 @@ whole-tone scale:
 } % begin verbatim
 
 
+
 \relative c' {
-  \set Staff.keySignature = #`(((0 . 6) . ,FLAT)
-                               ((0 . 5) . ,FLAT)
-                               ((0 . 3) . ,SHARP))
+  \set Staff.keyAlterations = #`((6 . ,FLAT)
+                                 (5 . ,FLAT)
+                                 (3 . ,SHARP))
   c4 d e fis
   aes4 bes c2
 }
diff --git a/Documentation/snippets/printing-a-repeat-sign-at-the-beginning-of-a-piece.ly b/Documentation/snippets/printing-a-repeat-sign-at-the-beginning-of-a-piece.ly
deleted file mode 100644 (file)
index b8590ed..0000000
+++ /dev/null
@@ -1,44 +0,0 @@
-% DO NOT EDIT this file manually; it is automatically
-% generated from Documentation/snippets/new
-% Make any changes in Documentation/snippets/new/
-% and then run scripts/auxiliar/makelsr.py
-%
-% This file is in the public domain.
-%% Note: this file works from version 2.17.6
-\version "2.17.6"
-
-\header {
-  lsrtags = "repeats, tweaks-and-overrides"
-
-  texidoc = "
-A @code{.|:} bar line can be printed at the beginning of a piece, by
-overriding the relevant property:
-
-"
-  doctitle = "Printing a repeat sign at the beginning of a piece"
-} % begin verbatim
-
-
-
-\relative c'' {
-  \once \override Score.BreakAlignment.break-align-orders =
-    #(make-vector 3 '(instrument-name
-                      left-edge
-                      ambitus
-                      breathing-sign
-                      clef
-                      key-signature
-                      time-signature
-                      staff-bar
-                      custos))
-  \once \override Staff.TimeSignature.space-alist =
-    #'((first-note . (fixed-space . 2.0))
-       (right-edge . (extra-space . 0.5))
-       ;; free up some space between time signature
-       ;; and repeat bar line
-       (staff-bar . (extra-space . 1)))
-  \bar ".|:"
-  c1
-  d1
-  d4 e f g
-}
index 3b55be22a85c818a8d458590c6bf421500ffbb2c..d3fa46c992d25b0266a26c630f09713e82d5fddc 100644 (file)
@@ -8,7 +8,6 @@ numbering-groups-of-measures.ly
 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
index b0c99b7dc44a2f58ce2a80def71f777893a30d5c..5bf703a5d0f5c6a93d0e451abaaf00c02804c070 100644 (file)
@@ -4,7 +4,7 @@
 %% and then run scripts/auxiliar/makelsr.py
 %%
 %% This file is in the public domain.
-\version "2.17.11"
+\version "2.19.2"
 
 \header {
   lsrtags = "headword"
@@ -82,7 +82,7 @@ Rhythms headword
       c'''32 ) \!
       g''8 (
       ~
-      g''32 [
+      32 [
       a''64
       g''64 ) ]
 
index 99d40cc6c6b64dc743d2df1d0ec71ea84b69a90d..8df49621015116ca335a7c364461d29d1538e22e 100644 (file)
@@ -4,7 +4,7 @@
 %% and then run scripts/auxiliar/makelsr.py
 %%
 %% This file is in the public domain.
-\version "2.16.0"
+\version "2.19.2"
 
 \header {
   lsrtags = "template, vocal-music"
@@ -48,28 +48,28 @@ basswords = \lyricmode { mi mi mi mi }
         \global
         \sopranonotes
       >>
-      \lyricsto "soprano" \new Lyrics \sopranowords
+      \new Lyrics \lyricsto "soprano" \sopranowords
     >>
     \new Staff <<
       \new Voice = "alto" <<
         \global
         \altonotes
       >>
-      \lyricsto "alto" \new Lyrics \altowords
+      \new Lyrics \lyricsto "alto" \altowords
     >>
     \new Staff <<
       \new Voice = "tenor" <<
         \global
         \tenornotes
       >>
-      \lyricsto "tenor" \new Lyrics \tenorwords
+      \new Lyrics \lyricsto "tenor" \tenorwords
     >>
     \new Staff <<
       \new Voice = "bass" <<
         \global
         \bassnotes
       >>
-      \lyricsto "bass" \new Lyrics \basswords
+      \new Lyrics \lyricsto "bass" \basswords
     >>
   >>
 }
index a08838f8f8ac03b15539a0538e3e89c3380c526c..3afcc2a30ffc31804ac24d7dc12b2b21623bf672 100644 (file)
@@ -4,7 +4,7 @@
 %% and then run scripts/auxiliar/makelsr.py
 %%
 %% This file is in the public domain.
-\version "2.17.11"
+\version "2.19.2"
 
 \header {
   lsrtags = "headword"
@@ -67,10 +67,10 @@ trillFlat =
       \trillFlat
       af''4.~ \startTrillSpan
       af''8.~ |
-      af''4.~ af''8.~ |
+      4.~ 8.~ |
       \oneVoice
       <af'' d''>8.[ a''8. \p \< bf''8.]~ |
-      bf''8.[ b''8. c'''8.]~
+      8.[ b''8. c'''8.]~
       \bar "||"
       \key ef \major
       c'''8.[ cs'''8.] \f \stopTrillSpan
@@ -83,17 +83,17 @@ trillFlat =
       \override Voice.TrillSpanner.direction = #DOWN
       d''4.~ \f \startTrillSpan
       d''8.~ |
-      d''4.~ d''8.~ |
-      d''8. \stopTrillSpan
+      4.~ 8.~ |
+      8. \stopTrillSpan
       \trillFlat
       d''4.~ \startTrillSpan |
-      d''4.~ d''8.~ |
-      d''4.~ d''8.~ |
-      d''4.~ d''8.~ \stopTrillSpan |
+      d''4.~ 8.~ |
+      4.~ 8.~ |
+      4.~ 8.~ \stopTrillSpan |
       \trillFlat
       d''4.~ \startTrillSpan
       d''8. ~ |
-      d''4.~ d''8.~ |
+      4.~ 8.~ |
       \once \override NoteColumn.ignore-collision = ##t
       \hideNotes
       d''8. \stopTrillSpan
@@ -126,8 +126,8 @@ trillFlat =
         \override Voice.TrillSpanner.direction = #UP
         f'4.~ \startTrillSpan
         f'8.~ |
-        f'4.~ f'8.~ |
-        f'8. \stopTrillSpan
+        4.~ 8.~ |
+        8. \stopTrillSpan
       }
       \new Voice {
         \voiceTwo
index 75272f52f753c1690199ce0cd93fe5164c5fffa5..4ba723b5160d6da198b40b6157cf5c3f565f8634 100644 (file)
@@ -4,7 +4,7 @@
 %% and then run scripts/auxiliar/makelsr.py
 %%
 %% This file is in the public domain.
-\version "2.16.0"
+\version "2.19.2"
 
 \header {
   lsrtags = "chords, really-simple, template"
@@ -24,7 +24,7 @@ melody = \relative c' {
   \time 4/4
 
   f4 e8[ c] d4 g
-  a2 ~ a
+  a2 ~ 2
 }
 
 harmonies = \chordmode {
index 6e81017f846d1341681d00a4d094468feac10a01..952b5d833f3119e982a25913472060be5c53cf39 100644 (file)
@@ -43,22 +43,13 @@ trompette = \relative do'' {
   do8-. r8 sib4-> |
 }
 
-tambourin = \relative do' {
+tambourin = \drummode {
   \time 2/4
-  r8 do16 do do8 do |
-  r8 do16 do do8 do |
-  r8 do r do |
-  r8 do16 do do8 do |
-  r8 do r do |
-}
-
-tambourinMidi = \drummode {
-  \time 2/4
-  r8 tamb16 tamb tamb8 tamb |
-  r8 tamb16 tamb tamb8 tamb |
-  r8 tamb r tamb |
-  r8 tamb16 tamb tamb8 tamb |
-  r8 tamb r tamb |
+  r8 tamb16 16 8 8 |
+  r8 16 16 8 8 |
+  r8 8 r8 8 |
+  r8 16 16 8 8 |
+  r8 8 r8 8 |
 }
 
 upper = \relative do' {
@@ -110,7 +101,7 @@ lower = \relative do {
       \trompette
     }
     \context DrumStaff = "tambourin" {
-      \tambourinMidi
+      \tambourin
     }
     \context Staff = "piano" <<
       \upper
index 2e71f5f6e3a59b32d4f57fb93421472c766275a8..872f35a91d2b69ff04a1f9817b724e328c4c2cc9 100644 (file)
@@ -62,7 +62,6 @@ percent-repeat-count-visibility.ly
 positioning-arpeggios.ly
 positioning-multi-measure-rests.ly
 positioning-text-markups-inside-slurs.ly
-printing-a-repeat-sign-at-the-beginning-of-a-piece.ly
 printing-bar-numbers-inside-boxes-or-circles.ly
 printing-metronome-and-rehearsal-marks-below-the-staff.ly
 printing-note-names-with-and-without-an-octave-marker.ly
index 6cc02b677d2b580cf2caf29708c8e82d3af7a543..99e129afbf5ad387ad81463e299ba368c52c5c1e 100644 (file)
@@ -4,8 +4,8 @@
 % and then run scripts/auxiliar/makelsr.py
 %
 % This file is in the public domain.
-%% Note: this file works from version 2.17.30
-\version "2.17.30"
+%% Note: this file works from version 2.19.2
+\version "2.19.2"
 
 \header {
   lsrtags = "headword"
@@ -154,7 +154,7 @@ ViolinSolo = \relative c' {
   \time 15/4
   <<
     { \shift d2 \glissando ^\markup \colmark { \quatre \dubetc \pvib \norm } \shifta e1 \glissando d2 } \\
-    { d2 \open \mf \< ~ d1 ~ d2 \ff  ~ d1 \> ~ d2 ^\markup \colmark { " " " " \svib } ~ d4 \pp}
+    { d2 \open \mf \< ~ d1 ~ 2 \ff  ~ d1 \> ~ d2 ^\markup \colmark { " " " " \svib } ~ d4 \pp}
   >>
   \break
 
index c316d29d9355c9c557a19e0cbddc93310c47fe85..3eacc6132b32419ab90e50ba9217d35628bc996f 100644 (file)
@@ -4,7 +4,7 @@
 %% and then run scripts/auxiliar/makelsr.py
 %%
 %% This file is in the public domain.
-\version "2.16.0"
+\version "2.19.2"
 
 \header {
   lsrtags = "expressive-marks, vocal-music"
@@ -39,9 +39,9 @@ often seen in choral music.
       \new Voice = "lower"
       { \voiceTwo
         a1 ~
-        a
+        1
         a ~
-        a4 \bar "|."
+        4 \bar "|."
       }
     >>
   }
index d09d784396542d4ca302646832e24d999b191deb..454daf765d2f6d9b82dc3c4e699bca185a4cdeac 100644 (file)
@@ -4,7 +4,7 @@
 %% and then run scripts/auxiliar/makelsr.py
 %%
 %% This file is in the public domain.
-\version "2.17.6"
+\version "2.19.2"
 
 \header {
   lsrtags = "headword"
@@ -39,7 +39,7 @@ Vocal headword
     \autoBeamOff
     r4^\markup { \small Baritono } r a
     \appoggiatura a8 e'2. ~
-    e4 d8[ cis d e]
+    4 d8[ cis d e]
     e4 g, r8 g
     bes2 a8 e
     g4 f r
index cd13e6550c5fc01d531e38d806f2bcf4111435cb..f4cce23c110835a2a009b35f227860557a2b477d 100644 (file)
@@ -21,7 +21,7 @@ LilyPond version @version{}.  In addition, it suggests some
 
 @c `Usage' was born 1999-10-10 with git commit c82c30c...
 @macro copyrightDeclare
-Copyright @copyright{} 1999--2012 by the authors.
+Copyright @copyright{} 1999--2014 by the authors.
 @end macro
 
 @set FDL
index 7c386ae733f802bb898d9944a068a5fbc2385fa0..3b4ff955b9b8ecbce4f97aff73c04f09772971e2 100644 (file)
@@ -29,8 +29,8 @@ LilyPond can interact with other programs in various ways.
 @cindex point and click
 
 Point and click lets you find notes in the input by clicking on them
-in the PDF viewer.  This makes it easier to find input that causes
-some error in the sheet music.
+in the PDF viewer.  This makes it easier to find input that causes some
+error in the sheet music.
 
 @menu
 * Configuring the system for point and click::
@@ -41,10 +41,10 @@ some error in the sheet music.
 @node Configuring the system for point and click
 @subsection Configuring the system
 
-When this functionality is active, LilyPond adds hyperlinks to the
-PDF file.  These hyperlinks are sent to a @q{URI helper} or a
-web-browser, which opens a text-editor with the cursor in the
-right place.
+When this functionality is active, LilyPond adds hyperlinks to PDF and
+SVG files.  These hyperlinks are sent to a @q{URI helper} or a
+web-browser, which opens a text-editor with the cursor in the right
+place.
 
 To make this chain work, you should configure your PDF viewer to
 follow hyperlinks using the @file{lilypond-invoke-editor} script
@@ -205,11 +205,11 @@ likely that similar configurations will work for other viewers.
 @cindex file size, output
 
 Point and click functionality is enabled by default when creating
-PDF files.
+PDF or SVG files.
 
 The point and click links enlarge the output files significantly.  For
-reducing the size of PDF and PS files, point and click may be switched
-off by issuing
+reducing the size of these (and PS) files, point and click may
+be switched off by issuing
 
 @example
 \pointAndClickOff
@@ -231,7 +231,7 @@ lilypond -dno-point-and-click file.ly
 
 @warning{You should always turn off point and click in any LilyPond
 files to be distributed to avoid including path information about
-your computer in the .pdf file, which can pose a security risk.}
+your computer in the PDF file, which can pose a security risk.}
 
 @node Selective point-and-click
 @unnumberedsubsec Selective point-and-click
index 7e7692c86dff6d536474f45c3a507457c1263af9..b9d5b22601f8548b698065b87ed10e4a78d3f51c 100644 (file)
@@ -400,15 +400,14 @@ file with all pages (systems) including fonts.  Used as default by
 
 @item
 @tab @code{svg}
-@tab Scalable Vector Graphics.  This creates a single @code{SVG} file,
+@tab Scalable Vector Graphics.  This creates a single SVG file,
 without embedded fonts, for every page of output.  It is recommended to
 install the Century Schoolbook fonts, included with your LilyPond
 installation, for optimal rendering.  Under UNIX, simply copy these
 fonts from the LilyPond directory (typically
-@file{/usr/share/lilypond/VERSION/fonts/otf/}) to @file{~/.fonts/}.  The
-@code{SVG} output should be compatible with any SVG editor or user
-agent. There is also an option @code{svg-woff} (below) for use of woff
-font files in the SVG backend.
+@file{/usr/share/lilypond/VERSION/fonts/otf/}) to @file{~/.fonts/}.
+There is also an option @code{svg-woff} (below) for use of woff font
+files in the SVG backend.
 
 @item
 @tab @code{scm}
@@ -551,9 +550,9 @@ escaped double quotes.
 @tab Set GhostScript's output format for pixel images.
 
 @item @code{point-and-click}
-@tab @code{#f}
-@tab Add @q{point & click} links to @code{PDF} output. See
-@ref{Point and click}.
+@tab @code{#t}
+@tab Add @q{point & click} links to PDF and SVG output.
+See @ref{Point and click}.
 
 @item @code{preview}
 @tab @code{#f}
@@ -616,9 +615,9 @@ havoc, e.g,
 
 @quotation
 @verbatim
-#(system "rm -rf /")
+#(s ystem "rm -rf /")  % too dangerous to write correctly
 {
-  c4^$(ly:gulp-file "/etc/passwd")
+  c4^$(ly:gulp-file "/etc/passwd") % malicious but not destructive
 }
 @end verbatim
 @end quotation
@@ -667,13 +666,12 @@ file names.
 @item @code{strokeadjust}
 @tab @code{#f}
 @tab Force PostScript stroke adjustment.  This option is mostly
-relevant when @code{PDF} is generated from PostScript output
-(stroke adjustment is usually enabled automatically for
-low-resolution bitmap devices).  Without this option,
-@code{PDF}@tie{}previewers tend to produce widely inconsistent
-stem widths at resolutions typical for screen display.  The option
-does not noticeably affect print quality and causes large file
-size increases in @code{PDF} files.
+relevant when a PDF is generated from PostScript output (stroke
+adjustment is usually enabled automatically for low-resolution bitmap
+devices).  Without this option, PDF previewers tend to produce widely
+inconsistent stem widths at resolutions typical for screen display.  The
+option does not noticeably affect print quality and causes large file
+size increases in PDF files.
 
 @item @code{svg-woff}
 @tab @code{#f}
index 06a960ac8a866faff27da9fece4208a96d395a78..ad92a834e35db8307521379f9dc4bd9789e6ce09 100644 (file)
@@ -151,8 +151,11 @@ The following options can be given:
 @item -d, --diff-version-update
 increase the @code{\version} string only if the file has actually
 been changed.  In that case, the version header will correspond to
-the version after the last actual change.  Without that option,
-the version will reflect the last @emph{attempted} conversion.
+the version after the last actual change.  An unstable version
+number will be rounded up to the next stable version number unless
+that would exceed the target version number.  Without this option,
+the version will instead reflect the last @emph{attempted}
+conversion.
 
 @item -e, --edit
 Apply the conversions direct to the input file, modifying it
index 621488e92f53b98df0714c4fc46b49335a220d71..e33f0f7a5e6f901f921e125be267e1ac83e39b08 100644 (file)
@@ -15,7 +15,7 @@
 
 @c `Web' was imported 2009-08-05 with git commit b938d71...
 @c @macro copyrightDeclare
-@c Copyright @copyright{} 2009--2012 by the authors.
+@c Copyright @copyright{} 2009--2014 by the authors.
 @c @end macro
 
 @set FDL
@@ -34,7 +34,7 @@
 @end ignore
 
 @copying
-Copyright @copyright{} 2009--2012 by the authors.
+Copyright @copyright{} 2009--2014 by the authors.
 
 @c next line is necessary for broken pre-4.13 texinfo's
 @c install-info, so leave it there until we officially
index 4781d161b7134486f7d446c0246a6614000d8407..b4c6e2f13bb5a07736c1258e75b7ae42a672ac25 100644 (file)
@@ -142,13 +142,12 @@ acknowledged.
 @divClass{column-center-top}
 @subheading Generic Packages or Distribution-Specific Packages?
 
-Many distributions already include LilyPond within their normal
-package repositories and these are often much easier to install than the
-generic packages found here.  However the version of LilyPond in those
-repositories may be @emph{significantly} older than the current stable
-version.  If you wish to use our generic packages, please check that
-your LilyPond editor is using the correct version of lilypond.  See
-@ref{Easier editing}.
+Many distributions include LilyPond within their normal package
+repositories that are often @emph{significantly} older than the current
+stable version.  While these older packages may be easier to install, we
+@emph{strongly} recommend that you use our generic packages.  In this
+case, check that your LilyPond editor is using the correct version.
+See @ref{Easier editing}.
 
 @divEnd
 
@@ -168,12 +167,12 @@ your LilyPond editor is using the correct version of lilypond.  See
 @ifset web_version
   @downloadStableLinuxNormal
 @end ifset
-
-(if in doubt, use this)
+32bit Systems.
 
 @item
 @sourceimage{logo-linux,,,}
 @downloadStableLinuxBig
+64bit Systems.
 
 @item
 @sourceimage{logo-linux,,,}
@@ -182,10 +181,12 @@ your LilyPond editor is using the correct version of lilypond.  See
 @item
 @sourceimage{logo-freebsd,,,}
 @downloadStableFreeBSDNormal
+32bit Systems.
 
 @item
 @sourceimage{logo-freebsd,,,}
 @downloadStableFreeBSDBig
+64bit Systems
 
 @end itemize
 
@@ -220,44 +221,6 @@ sh lilypond-@versionStable{}-OS-TYPE.sh --help
 
 
 @divClass{column-right-top}
-@subheading Distribution-specific Packages
-
-Please use your distribution's package manager to install or
-upgrade to these versions.
-
-@itemize
-
-@item
-@sourceimage{logo-fedora,,,}
-@uref{http://koji.fedoraproject.org/koji/packageinfo?packageID=2447,
-Fedora: LilyPond 2.14.2}
-
-@item
-@sourceimage{logo-ubuntu,,,}
-@uref{http://packages.ubuntu.com/search?keywords=lilypond,
-Ubuntu: LilyPond 2.14.2}
-
-@item
-@sourceimage{logo-slackware,,,}
-@uref{http://www.johannes-schoepfer.de/lilypond/,
-Slackware: LilyPond 2.14.2}
-
-@item
-@sourceimage{logo-debian,,,}
-@uref{http://packages.debian.org/search?keywords=lilypond,
-Debian: LilyPond 2.12.3}
-
-@item
-@sourceimage{logo-suse,,,}
-@uref{http://software.opensuse.org/search?baseproject=openSUSE%3A11.2&p=1&q=lilypond,
-openSUSE: LilyPond 2.12.3}
-
-@end itemize
-
-@divEnd
-
-
-@divClass{column-center-top}
 @subheading Compiling a file
 
 @lilypadCommandLine
index 76d7e693123b2c5f1db919434c3df54b174b49ce..512559a6b4dba7f3119b7ee5542f66fba19ef27c 100644 (file)
@@ -20,10 +20,14 @@ soulless look of computer-printed sheet music.  Musicians prefer
 reading beautiful music, so why couldn't programmers write
 software to produce elegant printed parts?
 
-The result is a system which frees musicians from the details of
-layout, allowing them to focus on making music.  LilyPond works
-with them to create publication-quality parts, crafted in the best
-traditions of classical music engraving.
+The result is a program that creates beautiful sheet music
+following the best traditions of classical music engraving.
+It takes care of the details of layout programmatically,
+allowing composers, transcribers and publishers to focus
+on the @emph{music} instead of improving their software's
+default output.  Performers will get parts that let them
+concentrate on @emph{playing} music instead of @emph{reading} it.
+
 
 @divEnd
 
@@ -100,8 +104,7 @@ traditions of classical music engraving.
 @divClass{column-center-top}
 
 
-@subheading Elegance
-@subsubheading Excellent classical engraving
+@subheading Excellent classical engraving
 
 @imageFloat{flat-design,png,right}
 
@@ -115,35 +118,67 @@ best-engraved classical scores.  This is further explained in our
 @ref{Essay}.
 
 
+@divEnd
 
-@subsubheading Effective layout choices
+@divClass{column-center-top}
+@subheading Text input
 
-Spend less time with tweaking the output; LilyPond gets the
-formatting correct right from the start.  It determines spacing by
-itself, and breaks lines and pages to provide a tight and uniform
-layout.  Clashes between lyrics, notes, and chords are resolved
-and slurs and beams are sloped, automatically!
+@subsubheading Everything is explicit
+
+LilyPond processes text input, which contains all information
+about the @emph{content} of your score and can easily be read
+by any human or another program. There are no obscure
+settings hidden behind menu items and binary file storage.
+
+Read more about this concept on @ref{Text input}.
 
 
+@subsubheading Tweaks are robust and traceable
+
+If you have to change anything in the layout this tweak will
+also be explicitly visible in the input file in human-readable
+form, so you will always be able to retrace what you've done.
+If you should accidentally break anything you can easily revert
+or modify any decision without being at the mercy of an
+@emph{Undo} function.
+
+
+@subsubheading Text files are failure- and future-proof
+
+Text files are very robust against file corruption. And as they are
+human-readable, you will always be able to interpret them even if
+you don't have access to the programs that created them.
+
+
+@subsubheading Manage your scores with version control
+
+Text files are applicable to be managed by version control. Go
+for it and experience infinite and selective undo/redo mechanisms
+and the full development history of your scores. Version control
+may also open up new (collaborative) workflows for you.
+
 @divEnd
 
-@divClass{color2}
-@subheading Ease of use
+@divClass{column-center-top}
+@subheading Usability
 
 @imageFloat{lilypond-book,png,right}
 
-@subsubheading Text-based input
 
-LilyPond takes ASCII input, which you can produce in your favorite
-text editor, quickly and comfortably.  The input contains all the
-information, so there is no need to remember complex command sequences:
-simply save a file for later reference.
+@subsubheading Effective layout choices
+
+Spend less time with tweaking the output; LilyPond gets the
+formatting correct right from the start.  It determines spacing by
+itself, and breaks lines and pages to provide a tight and uniform
+layout.  Clashes between lyrics, notes, and chords are resolved
+and slurs and beams are sloped, automatically!
+
 
 @subsubheading Mix music and text
 
 Put fragments of music into texts without cutting and pasting
-pictures.  Integrate music into @LaTeX{} and HTML seamlessly, or add
-music to OpenOffice.org or LibreOffice with OOoLilyPond.  Plugins are
+pictures.  Integrate music into @LaTeX{} or HTML seamlessly, or add
+music to OpenOffice.org/LibreOffice with OOoLilyPond.  Plugins are
 also available to allow LilyPond code in various blogs and wikis, making
 online collaboration possible.
 
@@ -157,32 +192,74 @@ speech-recognition software to edit LilyPond files.  Even users
 who are totally blind can use screen-reading software to write
 LilyPond files -- an impossible task in graphical-based
 score-writing programs.
+You can see a spectacular score on @ref{Examples}.
+
+@subsubheading Editor diversity
 
-@subsubheading Extensible design
+Several developers, themselves active LilyPond users,
+have written tools specifically aimed at making the process of editing
+LilyPond files faster and more effective; you are not tied to
+a single user interface but can use different tools for different tasks.
+You can even use a full-fledged LilyPond editor at home and use your
+mobile phone's notepad app to edit the files on the go. For some examples,
+see @ref{Easier editing}.
+@c TODO: Change this when the new pages have been written and pushed
 
-All settings can be changed to suit your personal typographical
-taste.  If that still is not enough, there is always the built-in
-scripting language Scheme, a dialect of the powerful language
-LISP.  Settings, variables and functions are all documented in the
+
+@divEnd
+
+@divClass{column-center-top}
+
+@subheading Extensible design
+
+@subsubheading Easy management of style sheets
+
+All layout settings can be changed to suit your personal typographical
+taste. So you can easily write style sheets that change every aspect of
+LilyPond scores' default appearance. As these are also written as text
+and can be stored in separate files you can simply switch between two
+stylesheets to produce scores with a completely different appearance or
+layout.
+You want to print a score on A4 paper and project it with a beamer,
+one system per page? LilyPond's layout engine will effortlessly produce
+both from the same input.
+
+@subsubheading Add your own functions
+
+If that still is not enough, there is always the built-in
+scripting language Scheme, which can access LilyPond's layout
+engine at the same level as LilyPond itself does, making it
+a @emph{very} powerful tool.
+Settings, variables and functions are all documented in the
 comprehensive program reference manual.
 
+@subsubheading Process scores programmatically
+
+LilyPond input files can fully be edited or even generated by programs
+and scripts. This can for example be used for algorithmical composition.
+But you can also access the musical content for analysis, or manage
+input fragments in a database. There are no limitations except your
+imagination.
+
+
+@subsubheading Create new tools using LilyPond
+
+As LilyPond isn't a monolithic GUI program but a command line tool it
+can be used from within other applications too. This way it is possible
+to equip tools like e.g. web applications with LilyPond's engraving
+power. There already exist several online tools using LilyPond.
+
+@c (TBD: Add a link to the new @ref{Applications} page.
+
+
 @divEnd
 
-@divClass{color3}
+@divClass{column-center-top}
 
 @subheading Environment
 
 @imageFloat{frescobaldi-lilypond-editor-small,png,right}
 
-@subsubheading Free software
-
-LilyPond can be downloaded free of charge!  Yep - It's free.  Get
-it from the download page.
-
-It's also free (as in @qq{speech}) software.  It comes with source
-code, and permission to change and copy it.  So, are you irritated
-by a bug, or yearning for a feature? Simply add it yourself, or
-pay someone else to do it.
 
 
 @subsubheading Excellent support
@@ -190,17 +267,24 @@ pay someone else to do it.
 LilyPond runs on all popular platforms: GNU/Linux, MacOS X, and
 Windows.  LilyPond comes with extensive documentation and hundreds
 of example files.  There is an active user community answering
-questions on the lilypond-user mailing list, while the development
-team makes sure that problems are solved quickly.
+questions on the lilypond-user mailing list, offering you friendly
+help. The response time is usually very short, and often brillant
+solutions to reported problems are developed. Thanks to the close
+interaction with the development team such solutions are regularly
+included in LilyPond itself.
+Read more in @ref{Community}.
 
 
-@subsubheading Enhanced editors
+@subsubheading Free software
 
+LilyPond can be downloaded free of charge!  Yep - It's free.  Get
+it from the download page.
 
-Several developers, themselves active LilyPond users, have also
-written tools specifically aimed at making the process of editing
-LilyPond files faster and more effective.  For some examples, see
-@ref{Easier editing}.
+It's also free (as in @qq{speech}) software.  It comes with source
+code, and permission to change and copy it.  So, are you irritated
+by a bug, or yearning for a feature? Simply add it yourself, or
+pay someone else to do it.
+Read more on @ref{Freedom}.
 
 @divEnd
 @divClass{column-center-bottom}
@@ -216,6 +300,10 @@ already decided to try LilyPond, first read about our
 @node Examples
 @unnumberedsec Examples
 
+@divClass{column-center-top}
+
+@subheading Beautiful examples
+
 LilyPond is a powerful and flexible tool for engraving tasks of
 all kinds.  Please browse our gallery of examples and be inspired!
 
@@ -297,6 +385,15 @@ The colors have been added for better visibility.
 @exampleImage{bach-schenker}
 @newsEnd
 
+@newsItem
+@subsubheading Customized Output
+
+A short excerpt from Stockhausen's Klavierstück II to demonstrate
+Lilypond's ability to provide customised output.
+
+@exampleImage{Stockhausen_Klavierstueck2}
+@newsEnd
+
 @newsItem
 @subsubheading Vocal Music
 
@@ -342,6 +439,7 @@ contributed by Hu Haipeng, a blind composer.
 @exampleImage{orchestra}
 @newsEnd
 
+@divEnd
 
 @divClass{column-center-bottom}
 @subheading Where now?
@@ -471,9 +569,11 @@ LilyPond, first read about our @ref{Text input}.
 We have an extensive essay describing computational aesthetics:
 the art of creating beauty with a computer.
 
-If you just want a quick introduction to LilyPond, the essay might
-be too much material to read.  If you would like to read it now,
-please progress to @ref{Essay}.
+This is interesting reading if you are interested in an in-depth
+discussion of our fundamental ideas.  Due to its volume the
+essay is available as a "manual".  If you would like to read
+it now, please progress to @ref{Essay}.  However, if you just
+want a quick introduction to LilyPond, you might skip it for now.
 @divEnd
 
 @divClass{column-center-bottom}
@@ -488,6 +588,16 @@ try LilyPond, first read about our @ref{Text input}.
 @node Productions
 @unnumberedsec Productions
 
+@divClass{column-center-top}
+
+@subheading Productions using LilyPond
+
+Here you can read about people who actually use LilyPond
+in their productions, be it for performances of their
+music or as published scores.
+
+@divEnd
+
 @divClass{column-left-top}
 @subheading Concerts
 
@@ -645,6 +755,12 @@ If you've already decided to try LilyPond, first read about our
 @node Reviews
 @unnumberedsec Reviews
 
+@divClass{column-center-top}
+@subheading What do people say about LilyPond?
+
+@divEnd
+
+
 @divClass{column-left-top}
 @subheading Published articles
 
@@ -1039,9 +1155,9 @@ help new users, beginning with @ref{Learning}.  The Learning
 Manual is the best place to start, as many questions are answered
 before they come up!
 
-Please read the Learning Manual before complaining about bugs!
-New users occasionally believe that LilyPond is not working
-correctly, when in fact it is working precisely as designed.
+Occasionally new users are unnecessarily confused by some aspects
+of LilyPond's behaviour.  Please read this manual before doubting
+whether LilyPond is working correctly.
 
 More in-depth information is available in @ref{Manuals}.
 
index 8d45279fb857c7aee23067d83d36de39f509ca76..54da77f0f59b64422dcdefb16dea849f05dbb357 100644 (file)
 @c used for news about the upcoming release; see CG 10.2
 
 @newsItem
-@subsubheading LilyPond 2.17.95 released!  @emph{November 3, 2013}
-
-We are excited to announce the release of LilyPond@tie{}2.17.95 as
-beta release for the upcoming stable release@tie{}2.18.  The
-developers are still busy finding solutions for some last-minute
-problems, but the release is supposed to be feature-complete, the
-documentation to be accurate, and no important issues to be
-overlooked.  For upgrading the syntax of your input files to the
-latest version, see @rprogram{Updating files with convert-ly}.
-Please test this release and report back any problems, see
-@rweb{Bug reports}.
+@subsubheading LilyPond 2.19.8 released  @emph{June 15, 2014}
+
+We are happy to announce the release of LilyPond 2.19.8.  This
+release includes a number of enhancements, and contains some work
+in progress.  You will have access to the very latest features, but
+some may be incomplete, and you may encounter bugs and crashes.  If you
+require a stable version of Lilypond, we recommend using the 2.18
+version.
+
+@newsEnd
+
+@newsItem
+@subsubheading Lilypond 2.18.2 released!  @emph{March 23, 2014}
+
+We are proud to announce the release of GNU LilyPond 2.18.2.
+LilyPond is a music engraving program devoted to producing the
+highest-quality sheet music possible.  It brings the aesthetics of
+traditionally engraved music to computer printouts.
+
+This version provides a number of updates to 2.18.0, including
+updated manuals.  We recommend all users to upgrade to this version.
+
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond production named BEST EDITION 2014  @emph{March 11, 2014}
+
+We are thrilled to announce that the new edition of the songs of Oskar
+Fried (1871-1941), published recently by our fellow contributors Urs Liska
+and Janek Warchoł [1], will receive the "Musikeditionspreis BEST EDITION
+2014" of the German Music Publishers' Association [2]!  The ceremony will
+take place in a few days at the Frankfurt Musikmesse [3].
+
+We congratulate Janek and Urs for gaining such public recognition of
+typographical and editorial excellence of their work. We are also delighted
+to inform you that they intend to make their work available under a Free
+license as soon as the publisher expenses are covered.  Please support this
+initiative by buying the printed volume through the publisher [4] or by
+pledging a contribution at the Indiegogo campaign [5]!
+
+[1] @uref{http://lilypondblog.org/category/fried-songs}@*
+[2] @uref{http://www.best-edition.de}@*
+[3] @uref{https://musik.messefrankfurt.com/frankfurt/en/besucher/events/awards/best_edition.html}@*
+[4] @uref{http://www.sound-rel.de}@*
+[5] @uref{http://igg.me/at/free-fried}
+
+@newsEnd
+
+
+@newsItem
+@subsubheading Lilypond 2.18.0 released!  @emph{December 29, 2013}
+
+We are proud to announce the release of GNU LilyPond 2.18.0.
+LilyPond is a music engraving program devoted to producing the
+highest-quality sheet music possible.  It brings the aesthetics of
+traditionally engraved music to computer printouts.
+
+Among the numerous improvements and changes, the following might
+be most visible:
+
+@itemize @bullet
+@item
+Many items are now positioned using their actual outline rather
+than a@tie{}rectangular bounding box.  This greatly reduces
+the occurrence of unsightly large gaps.
+
+@item
+Sets and overrides can now use the syntax
+@example
+\override Voice.TextSpanner.bound-details.left.text = "rit."
+@end example
+instead of the previous
+@example
+\override Voice.TextSpanner #'(bound-details left text) = "rit."
+@end example
+
+@item
+Triplets with a given group length can now be written as
+@example
+\tuplet 3/2 4 @{ c8 c c  c c c @}
+@end example
+instead of
+@example
+\times 2/3 @{ c8 c c @}  \times 2/3 @{ c8 c c @}
+@end example
+@end itemize
+
+A full list of noteworthy new features is given in:
+
+@example
+@uref{http://lilypond.org/doc/v2.18/Documentation/changes/index.html}
+@end example
+
+Great thanks go to the large number of LilyPond enthusiasts whose
+financial backing enabled one core developer, David Kastrup, to
+focus exclusively on LilyPond during the entire development cycle.
+
+LilyPond 2.18 has been brought to you by
+
+@table @asis
+@item Main Developers:
+Bertrand Bordage, Trevor Daniels, Colin Hall, Phil Holmes, Ian
+Hulin, Reinhold Kainhofer, David Kastrup, Jonathan Kulp, Werner
+Lemberg, John Mandereau, Patrick McCarty, Joe Neeman, Han-Wen
+Nienhuys, Jan Nieuwenhuizen, Graham Percival, Mark Polesky, Neil
+Puttock, Mike Solomon, Carl Sorensen, Francisco Vila, Valentin
+Villenave, Janek Warchoł
+
+@item Core Contributors:
+Aleksandr Andreev, Frédéric Bron, Torsten Hämmerle, Marc Hohl,
+James Lowe, Andrew Main, Thomas Morley, David Nalesnik, Keith
+OHara, Benkő Pál, Anders Pilegaard, Julien Rioux, Johannes Rohrer,
+Adam Spiers, Heikki Tauriainen
+
+@item Documentation Writers:
+Frédéric Bron, Federico Bruni, Colin Campbell, Urs Liska, James
+Lowe, Thomas Morley, Jean-Charles Malahieude, Guy Stalnaker,
+Martin Tarenskeen, Arnold Theresius, Rodolfo Zitellini
+
+@item Bug Squad:
+Colin Campbell, Eluze, Marc Hohl, Phil Holmes, Marek Klein, Ralph
+Palmer
+
+@item Support Team:
+Colin Campbell, Eluze, Marc Hohl, Marek Klein, Kieren MacMillan,
+Urs Liska, Ralph Palmer
+
+@item Translators:
+Federico Bruni, Luca Rossetto Casel, Felipe Castro, Pavel Fric,
+Jean-Charles Malahieude, Till Paala, Yoshiki Sawada
+
+@end table
+and numerous other contributors.
 
 @newsEnd
 
index 9a548e02d54e96d32a865527d3ed5df0b29ceacd..c01a1ffc9075f9b55959c621ac39c4ac120c3934 100644 (file)
@@ -26,6 +26,153 @@ NOTE:
   * don't duplicate entries from news-front.itexi
 @end ignore
 
+@newsItem
+@subsubheading LilyPond 2.19.7 released  @emph{May 25, 2014}
+
+We are happy to announce the release of LilyPond 2.19.7.  This
+release includes a number of enhancements, and contains some work
+in progress.  You will have access to the very latest features, but
+some may be incomplete, and you may encounter bugs and crashes.  If you
+require a stable version of Lilypond, we recommend using the 2.18
+version.
+
+@newsEnd
+
+@newsItem
+@subsubheading LilyPond 2.19.6 released  @emph{May 11, 2014}
+
+We are happy to announce the release of LilyPond 2.19.6.  This
+release includes a number of enhancements, and contains some work
+in progress.  You will have access to the very latest features, but
+some may be incomplete, and you may encounter bugs and crashes.  If you
+require a stable version of Lilypond, we recommend using the 2.18
+version.
+
+@newsEnd
+
+@newsItem
+@subsubheading LilyPond 2.19.5 released  @emph{April 20, 2014}
+
+We are happy to announce the release of LilyPond 2.19.5.  This
+release includes a number of enhancements, and contains
+some work in progress.  You will have access to the very latest features, but
+some may be incomplete, and you may encounter bugs and crashes.  If you require
+a stable version of Lilypond, we recommend using the 2.18 version.
+
+@newsEnd
+
+@newsItem
+@subsubheading LilyPond 2.19.4 released  @emph{April 6, 2014}
+
+We are happy to announce the release of LilyPond 2.19.4.  This
+release includes a number of enhancements, and contains
+some work in progress.  You will have access to the very latest features, but
+some may be incomplete, and you may encounter bugs and crashes.  If you require
+a stable version of Lilypond, we recommend using the 2.18 version.
+
+@newsEnd
+
+@newsItem
+@subsubheading LilyPond 2.19.3 released  @emph{March 2, 2014}
+
+We are happy to announce the release of LilyPond 2.19.3.  This
+release includes a number of enhancements, and contains
+some work in progress.  You will have access to the very latest features, but
+some may be incomplete, and you may encounter bugs and crashes.  If you require
+a stable version of Lilypond, we recommend using the 2.18 version.
+
+@newsEnd
+
+@newsItem
+@subsubheading LilyPond 2.18.1  @emph{February 16, 2014}
+
+We have released updated manuals for LilyPond's stable version, 2.18.
+The manuals are now for 2.18.1 and have a number of updates and improvements
+over 2.18.0.  There will be a further release of 2.18 in the future (2.18.2),
+and this will include the updates to the manuals as well as some minor
+enhancements to the LilyPond core functionality.
+
+To summarise the current situation: stable LilyPond application: 2.18.0;
+stable LilyPond manuals: 2.18.1; development for both: 2.19.2.
+
+@newsEnd
+
+@newsItem
+@subsubheading LilyPond 2.19.2 released  @emph{February 2, 2014}
+
+We are happy to announce the release of LilyPond 2.19.2.  This
+release includes a number of enhancements, and contains
+some work in progress.  You will have access to the very latest features, but
+some may be incomplete, and you may encounter bugs and crashes.  If you require
+a stable version of Lilypond, we recommend using the 2.18 version.
+
+@newsEnd
+
+@newsItem
+@subsubheading LilyPond 2.19.1 released  @emph{January 19, 2014}
+
+We are happy to announce the release of LilyPond 2.19.1.  This
+release includes a number of enhancements, and contains
+some work in progress.  You will have access to the very latest features, but
+some may be incomplete, and you may encounter bugs and crashes.  If you require
+a stable version of Lilypond, we recommend using the 2.18 version.
+
+@newsEnd
+
+@newsItem
+@subsubheading LilyPond 2.19.0 released  @emph{January 5, 2014}
+
+We are happy to announce the release of LilyPond 2.19.0.  This
+release includes a number of enhancements, and contains
+some work in progress.  You will have access to the very latest features, but
+some may be incomplete, and you may encounter bugs and crashes.  If you require
+a stable version of Lilypond, we recommend using the 2.18 version.
+
+@newsEnd
+
+@newsItem
+@subsubheading LilyPond 2.17.97 released!  @emph{December 8, 2013}
+
+We are excited to announce the release of LilyPond@tie{}2.17.97 as
+a potential final beta release for the upcoming stable release@tie{}2.18.  The
+developers believe this to be feature-complete, the
+documentation to be accurate, and no important issues to be
+overlooked.  For upgrading the syntax of your input files to the
+latest version, see @uref{http://www.lilypond.org/doc/v2.17/Documentation/usage/updating-files-with-convert_002dly, Updating files with convert-ly}.
+Please test this release and report back any problems, see
+@uref{http://www.lilypond.org/website/bug-reports.html, Bug reports}.
+
+@newsEnd
+
+@newsItem
+@subsubheading LilyPond 2.17.96 released!  @emph{November 24, 2013}
+
+We are excited to announce the release of LilyPond@tie{}2.17.96 as
+a further beta release for the upcoming stable release@tie{}2.18.  The
+developers believe the release to be feature-complete, the
+documentation to be accurate, and no important issues to be
+overlooked.  For upgrading the syntax of your input files to the
+latest version, see @uref{http://www.lilypond.org/doc/v2.17/Documentation/usage/updating-files-with-convert_002dly, Updating files with convert-ly}.
+Please test this release and report back any problems, see
+@uref{http://www.lilypond.org/website/bug-reports.html, Bug reports}.
+
+@newsEnd
+
+@newsItem
+@subsubheading LilyPond 2.17.95 released!  @emph{November 3, 2013}
+
+We are excited to announce the release of LilyPond@tie{}2.17.95 as
+beta release for the upcoming stable release@tie{}2.18.  The
+developers are still busy finding solutions for some last-minute
+problems, but the release is supposed to be feature-complete, the
+documentation to be accurate, and no important issues to be
+overlooked.  For upgrading the syntax of your input files to the
+latest version, see @rprogram{Updating files with convert-ly}.
+Please test this release and report back any problems, see
+@rweb{Bug reports}.
+
+@newsEnd
+
 @newsItem
 @subsubheading LilyPond 2.17.29 released!  @emph{October 20, 2013}
 
index 5e7dfae3d98773b58516b45122318f187bfd7716..ce3e70566e15b5c61738284828bb7444de12a152 100644 (file)
@@ -47,13 +47,13 @@ RedirectMatch ^/stable    /doc/stable
 #RedirectMatch ^/development    /doc/development
 
 #old# default doc dir
-RedirectMatch ^/doc/*$ /doc/v2.16
+RedirectMatch ^/doc/*$ /doc/v2.18
 # make attempt at `latest' symlink avoid ^v catch-all doc fix rule below
-RedirectMatch ^/doc//*latest/*(.*)$ /doc/v2.17/$1
-RedirectMatch ^/doc//*development/*(.*)$ /doc/v2.17/$1
-RedirectMatch ^/doc//*stable/*(.*)$ /doc/v2.16/$1
-RedirectMatch ^/doc//*([^v].*)$ /doc/v2.16/$1
-RedirectMatch ^(/Documentation.*)$ /doc/v2.16$1
+RedirectMatch ^/doc//*latest/*(.*)$ /doc/v2.19/$1
+RedirectMatch ^/doc//*development/*(.*)$ /doc/v2.19/$1
+RedirectMatch ^/doc//*stable/*(.*)$ /doc/v2.18/$1
+RedirectMatch ^/doc//*([^v].*)$ /doc/v2.18/$1
+RedirectMatch ^(/Documentation.*)$ /doc/v2.18$1
 RedirectMatch ^/index$ /
 
 # fix root calculation: no double slashes
@@ -61,7 +61,7 @@ RedirectMatch ^/index$ /
 
 ###########################################
 
-## Rewrite all non-existing files at toplevel to the /web/ dir, so our
+## Rewrite all non-existing files at toplevel to the /website/ dir, so our
 ## internal structure for rsync doesn't have to be changed.
 ## This works for the current/old site as well as the new one.
 
@@ -70,7 +70,7 @@ RewriteBase /
 
 SetEnvIf REQUEST_URI .* WEB=/website
 
-# Rewrite empty to /web
+# Rewrite empty to /website
 RewriteCond %{REQUEST_URI} ^/*$
 RewriteRule ^(/*)$ %{ENV:WEB}/ [QSA,L]
 
@@ -80,12 +80,12 @@ RewriteCond %{REQUEST_URI} ^/?[^/]+[.]css$
 RewriteCond %{REQUEST_FILENAME} !-f
 # ...and does not match an existing directory
 RewriteCond %{REQUEST_FILENAME} !-d
-# ...prefix with web
+# ...prefix with website
 RewriteRule ^(.+)$ %{ENV:WEB}/$1 [QSA,L]
 
 # Request without trailing slash
 RewriteCond %{REQUEST_URI} !.*/$
-# ...that would access a directory in /web
+# ...that would access a directory in /website
 RewriteCond %{DOCUMENT_ROOT}%{ENV:WEB}%{REQUEST_URI} -d
 # ...and does not start with /web
 RewriteCond %{REQUEST_URI} !^%{ENV:WEB}
@@ -95,7 +95,7 @@ RewriteCond %{REQUEST_URI} !^/doc$
 # ...add trailing slash for [menu] and to avoid /web/ in browser url
 RewriteRule ^(.+)$ http://%{HTTP_HOST}/$1/ [R,QSA,L]
 
-# Request that does not start with /web
+# Request that does not start with /website
 RewriteCond %{REQUEST_URI} !^/website
 RewriteCond %{REQUEST_URI} !^%{ENV:WEB}
 # ...and does not start with /doc/
@@ -109,6 +109,9 @@ RewriteCond %{REQUEST_FILENAME} !-d
 # ..prefix with /web
 RewriteRule ^(.+)$ %{ENV:WEB}/$1 [QSA,L]
 
+## Redirect the old web/ to the homepage
+RedirectMatch 301 ^/web/.* /
+
 ###########################################
 
 # latin1 version copied to web and doc/2.x
index ccc8ed800dd36032733f74e5ba6d2dad63e61f73..d1879c94ce0ebc7ec22ac1829484779d9f3eca2b 100644 (file)
@@ -21,3 +21,7 @@ Disallow: /doc/v2.12/
 Disallow: /doc/v2.13/
 Disallow: /doc/v2.14/
 Disallow: /doc/v2.15/
+Disallow: /doc/v2.16/
+Disallow: /doc/v2.17/
+
+Disallow: /web/
index 33e761d245c8513b8b85ee1f6fa0c3d247893a15..b3ac8806945dcf678ca69f77d17d0caa06000d0c 100644 (file)
@@ -4,10 +4,10 @@
     href="http://www.lilypondblog.org"&gt;here&lt;/a&gt;! Anyone can
     follow and leave comments on the blog. To contribute,
     contact &lt;a
-    href="mailto:janek.lilypond@gmail.com"&gt;Janek Warcho&#322;&lt;/a&gt;.
+    href="mailto:ul@openlilylib.org"&gt;Urs Liska&lt;/a&gt;.
   </tweet>
   <tweet>
-    Adam Spiers has build a web site which uses LilyPond to dynamically
+    Adam Spiers has built a web site which uses LilyPond to dynamically
     generate images of chords and scales called &lt;a
     href="http://scalematcher.adamspiers.org/"&gt;Scale matcher&lt;/a&gt;.
   </tweet>
     Turkish Ebook &lt;a href="http://acim.name.tr/lilypond/my_EBook_Promotion/index.php"&gt;
     "GNU/LilyPond, &#214;zg&#252;r Bir Nota Yazma Program&#305;"&lt;/a&gt;.
   </tweet>
-    <tweet>
-    Aur&#233;lien Bello, has re-orchestrated a 100-minute version of "Der
-    Ring des Nibelungen" for children, being performed in Berlin on the
-    5th and 6th of April 2014.  Click
-    &lt;a href="http://www.rsb-online.de/content/konzerte/wagnerzyklus-10-13/wagner-fuer-kinder/index_ger.html"&gt;
-    here &lt;/a&gt; for more details.
-   </tweet>
+  <tweet>
+    Aur&#233;lien Bello's 100-minute version of "Der Ring des Nibelungen"
+    for children will be broadcast by Deutschlandradio Kultur on 21st
+    of June 2014.  Click
+    &lt;a href="http://www.deutschlandradiokultur.de/der-ring-in-111-minuten.1091.de.html?dram:article_id=282592"&gt;
+    here &lt;/a&gt; for more details.  Also available as live stream.
+  </tweet>
 </tweets>
index 639cf4d778d1d3acb7ec24debc9606dc949b4c69..8ae6c02b0e51fc1fc05ee59fb17996859bdf265c 100644 (file)
@@ -14,11 +14,11 @@ search for a while and have a redirection from "v2.15" to "v2.17".
 <form action="http://google.com/search"
       method="get"
       name="search"
-      onSubmit="search.q.value='site:lilypond.org/doc/v2.17 '
+      onSubmit="search.q.value='site:lilypond.org/doc/v2.19 '
                + search.brute_query.value"
-      onMouseMove="search.q.value='site:lilypond.org/doc/v2.17 '
+      onMouseMove="search.q.value='site:lilypond.org/doc/v2.19 '
                   + search.brute_query.value"
-      onKeyUp="search.q.value='site:lilypond.org/doc/v2.17 '
+      onKeyUp="search.q.value='site:lilypond.org/doc/v2.19 '
               + search.brute_query.value">
   <input type="hidden" name="btnG" value="Google 搜索">
   <input type="text" name="brute_query" onfocus="this.value=''" value="搜索">
index e0b5afb30a77f5a7e7de3a6f1f35c4de405bf7fb..17c96355a4e12c3e3916c918a7fe1aa5a3cbb2f9 100644 (file)
@@ -15,7 +15,7 @@
 
 @c `Web' was imported 2009-08-05 with git commit b938d71...
 @c @macro copyrightDeclare
-@c Copyright @copyright{} 2009--2012 by the authors.
+@c Copyright @copyright{} 2009--2014 by the authors.
 @c @end macro
 
 @c Translators: Ben Luo, Anthony Fok
@@ -36,7 +36,7 @@
 @end ignore
 
 @copying
-Copyright @copyright{} 2009--2012 by the authors.
+Copyright @copyright{} 2009--2014 by the authors.
 
 @c next line is necessary for broken pre-4.13 texinfo's
 @c install-info, so leave it there until we officially
index 41e80d60392202fa380cbfdd8dfa32c2443a4510..717c3d3967c9ca5b0003f960db03dbd0ea9e9c9b 100644 (file)
@@ -1,5 +1,5 @@
 
-Copyright (c) 1996--2013, The LilyPond authors (lilypond.org) 
+Copyright (c) 1996--2014, The LilyPond authors (lilypond.org) 
 with Reserved Font Name "Emmentaler" and "Feta".
 
 This Font Software is licensed under the SIL Open Font License, Version 1.1.
diff --git a/VERSION b/VERSION
index de031165f0e3616356e5d0cf2e68e9559c1748ab..980df5a24241b958ee12015cd1834f9b5409ca1b 100644 (file)
--- a/VERSION
+++ b/VERSION
@@ -1,7 +1,7 @@
 PACKAGE_NAME=LilyPond
 MAJOR_VERSION=2
-MINOR_VERSION=18
-PATCH_LEVEL=2
+MINOR_VERSION=19
+PATCH_LEVEL=9
 MY_PATCH_LEVEL=
-VERSION_STABLE=2.18.0
-VERSION_DEVEL=2.19.2
+VERSION_STABLE=2.18.2
+VERSION_DEVEL=2.19.8
index be05016071bb46c67686a80c83c8d2a63aad0868..fa7cffc439e85adb0c6ce9147419fc03aa66aa7f 100644 (file)
@@ -1,7 +1,7 @@
 ;;;; lilypond-mode.el -- Major mode for editing GNU LilyPond music scores
 ;;;; This file is part of LilyPond, the GNU music typesetter.
 ;;;;  
-;;;; Copyright (C) 1999--2012 Jan Nieuwenhuizen <janneke@gnu.org>
+;;;; Copyright (C) 1999--2014 Jan Nieuwenhuizen <janneke@gnu.org>
 ;;;; Changed 2001--2003 Heikki Junes <heikki.junes@hut.fi>
 ;;;;    * Add PS-compilation, PS-viewing and MIDI-play (29th Aug 2001)
 ;;;;    * Keyboard shortcuts (12th Sep 2001)
index f4c960196da3c9adfeaf1611d2c36434e74b6378..962cf7825462f78f71fe12942254cefc5806e04a 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1997--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 1997--2014 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
index 1746c2c28d84adc5cbe8cd19f5e8d431dec10383..188056675f94346469256f8112e8d3fbff384f9b 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1997--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 1997--2014 Han-Wen Nienhuys <hanwen@xs4all.nl>
   Jan Nieuwenhuizen <janneke@gnu.org>
 
   LilyPond is free software: you can redistribute it and/or modify
index b19732d15ee43050025792b2098a0b229baee662..660895a1f58bf6703c44b132257887ddac1bc077 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1997--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 1997--2014 Han-Wen Nienhuys <hanwen@xs4all.nl>
   Jan Nieuwenhuizen <janneke@gnu.org>
 
   LilyPond is free software: you can redistribute it and/or modify
index 88c5d92bde26f8185627ea3c7d1dc9635ed39f1e..0d6da2c60e5e9c036c615e321173d0c765679142 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1996--2012 Han-Wen Nienhuys, <hanwen@xs4all.nl>
+  Copyright (C) 1996--2014 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
@@ -103,11 +103,11 @@ Long_option_init::to_string () const
 {
   string str;
   if (shortname_char_)
-    str += "-" + shortname_char_;
+    str += string ("-") + shortname_char_;
   if (shortname_char_ && longname_str0_)
     str += ", ";
   if (longname_str0_)
-    str += string ("`--") + longname_str0_ + "'";
+    str += string ("--") + longname_str0_;
   return str;
 }
 
index 285e9cd350e9158e894581b90556184bf03d47b1..2bd081c990f0912f9daa121827060851603c3b1d 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1997--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 1997--2014 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
index f5ec6ca39a2c2ec4452c16d353a40151e3c68644..12bcf25938d9704149f5a9b1ed4fdccc0ad89a66 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1997--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 1997--2014 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
index 9822526e037dc001d00d66d021894da178dcb56f..929c19d81e5a0f5ad04bae4e59684c5484c5d602 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1996--2012 Han-Wen Nienhuys
+  Copyright (C) 1996--2014 Han-Wen Nienhuys
 
   LilyPond is free software: you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
index b5cf5d07a4111254dc2fa23089bd05719f9e27a7..f4d0be252363968fc951f7c0293983864776577a 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1997--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 1997--2014 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
index dcb794eea169f5225d6a97ac63b4050c8e73c96e..6c6b9a7d0221ef8d0ae7cd21b58ec636634cad61 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1997--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 1997--2014 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
index d84af5a6148789d1ba05062e6ec01fbdcd917ab5..fbb45dfcec0395b0b114df1b707f487764fb3ae3 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1997--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 1997--2014 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
index 4822783fc6b956241c363cbbb0521008234221a6..e0fedd314bbaa7a1e32b0c1f6875bb399e2ffd11 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1997--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 1997--2014 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
index 8c8049391d9b5e1c1834643752b5818cf776c329..62ddf1d53dbac0e2e2689de7966465a0890f408c 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1997--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 1997--2014 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
index 33f67dbb4024815dd10cc988f0e9782104805228..59613cc2799c2c65f7101e1a035d63d70706cf08 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1996--2012 Han-Wen Nienhuys
+  Copyright (C) 1996--2014 Han-Wen Nienhuys
 
   LilyPond is free software: you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
index 3ef0413772f1dd0c03fee0a7d8f0922310ae00f2..d532abbf08d9f057f0ccd4a00de80bb45143e66a 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2004--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 2004--2014 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
index 5797a293f73d29bee72be298877acb5c9064008d..e317efda456b97a4cf53469a5c226f01f02e4f94 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1997--2012 Jan Nieuwenhuizen <janneke@gnu.org>
+  Copyright (C) 1997--2014 Jan Nieuwenhuizen <janneke@gnu.org>
 
   LilyPond is free software: you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
index 6ea7b43173b82d24585eb4cabf6aa2eed8c4b4e4..78507625fb3dded74ed8bc8bc529df24a15cb823 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2004--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 2004--2014 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
index cc6f70a9c82f03ce701885118ce7af1f8a8c0ad2..af277a33b43c84e9371ec86c43fa95bc236a837e 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1996--2012 Han-Wen Nienhuys
+  Copyright (C) 1996--2014 Han-Wen Nienhuys
 
   LilyPond is free software: you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
index 2ad1fa606b7add18165099cde00bd34263af4b93..2fd51b408f7e9464d849c4a7c276bd0ffc13fd52 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1996--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 1996--2014 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
index 726df166ae5f61d62185e2b41ad221ffcd50e945..d2de8252d494b02ceb5b1e6f543ad79c3cbc7ffb 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1997--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 1997--2014 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
index 260f6c06bb129ac640c7c05628eda63821032f52..7b7e8540afc5d6b52cd0957b933bef20e1c0079f 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2006--2012 Joe Neeman <joeneeman@gmail.com>
+  Copyright (C) 2006--2014 Joe Neeman <joeneeman@gmail.com>
 
   LilyPond is free software: you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
index 1dffd7c98aebb8a1755438d820fe4afa6538ac19..98915fea79153dcce17135b5d8129f5a62df0cb5 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2005--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 2005--2014 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
index ba369a5c70124c7d998409ab36292aedd8d5683c..c7f84ddbb9c7b6cc2b775de681de45106561e38b 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1996--2012 Han-Wen Nienhuys
+  Copyright (C) 1996--2014 Han-Wen Nienhuys
 
   LilyPond is free software: you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
index cb3fc24ee8b2ddbaa90bb7624574268e2b661e6d..3c3e4796e7079a0d737fc49ca0f37f4eb092ebd5 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1997--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 1997--2014 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
index 1959688d8d15ce2bf14f1cfe69c2ca44e16947f3..1724ab82a21cd956f816f1348c446319cbfaac7b 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1993--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 1993--2014 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
@@ -24,6 +24,7 @@
 #ifndef POLY_H
 #define POLY_H
 
+#include <sys/types.h>
 #include "std-vector.hh"
 #include "arithmetic-operator.hh"
 #include "real.hh"
index 895ceca03e135f09d4491b54538f1d8013c84e0f..0b15f1fef93a039a246547b6d7d159293fc4bd9e 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1997--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 1997--2014 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
index de1252ec67913f2f178ce1d96eda74a1f680bb14..8583de70e2982368077d2b6575ea112a705a0ffe 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1997--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 1997--2014 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
index ceb1e114f0f8b37a2e78a945267d6c3fb5e0ae50..7345079680082673f73bb85760384ea6c3d3adf1 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1997--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 1997--2014 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
index 6b6e8ef9728ea7ab815b4b3ac1c03804d5eb0819..cc0de9fae8254585e5f74f3862f32956d12b8953 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2006--2012 Jan Nieuwenhuizen <janneke@gnu.org>
+  Copyright (C) 2006--2014 Jan Nieuwenhuizen <janneke@gnu.org>
 
   LilyPond is free software: you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
index e7f29a8fcbb05065e0157f7c60c586b4e2309823..2480ecb93a96754d81fd81fb459334553a46fd60 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2006--2012 Jan Nieuwenhuizen <janneke@gnu.org>
+  Copyright (C) 2006--2014 Jan Nieuwenhuizen <janneke@gnu.org>
 
   LilyPond is free software: you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
@@ -30,6 +30,7 @@
 #endif
 #endif
 
+#include "config.hh"   /* needed at least for HAVE_STL_DATA_METHOD */
 #include <algorithm>   /* find, reverse, sort */
 #include <functional>  /* unary_function */
 #include <cassert>
index c88f1935adf71375fcd58a1c7ac3692c7151eb78..b7f788ee94d18e681d2c0ee23cf923e85d2691c1 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2006--2012 Han-Wen Nienhuys <hanwen@lilypond.org>
+  Copyright (C) 2006--2014 Han-Wen Nienhuys <hanwen@lilypond.org>
 
   LilyPond is free software: you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
index fa084835d3953cc8663840143b090c0806e7ce9f..71deec28b1055f12abffdafe3f653f63fe21a942 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1997--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 1997--2014 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
index 333e95a94e5feece710e71a0a1470603bec63992..8203c2d4e8b5a179043d5ad2f274ba862370c7f5 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1997--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 1997--2014 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
index 2e6a09df9fcaf1456097c0d601a3f06cae34018c..287a490a4c34bab44eae1c6152269ffa3c464d5e 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1997--2012 Jan Nieuwenhuizen <janneke@gnu.org>
+  Copyright (C) 1997--2014 Jan Nieuwenhuizen <janneke@gnu.org>
 
   LilyPond is free software: you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
index f1aaea59fcc67fbc74c0fbd92e3b326c14abd898..f179a86bd8510cec6bf8cc78cbad3d01c2e4e060 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2004--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 2004--2014 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
index 04b141159d6c6c14d2a9245e0d73c0c40c38e458..c9f8829a15193333d233faaaeddc0c1382832596 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1997--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 1997--2014 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
index 59d4a52f13105264cbec3fb73d2e60dc76ac95df..fbb4b61652fe5094f32fee613f4d52f682cce5bf 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1997--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 1997--2014 Han-Wen Nienhuys <hanwen@xs4all.nl>
   Jan Nieuwenhuizen <janneke@gnu.org>
 
   LilyPond is free software: you can redistribute it and/or modify
index 6cce684858cec6e80fc7e2e6604428450e3f671c..71a61d44225fb37e8213846c0cd788dd47945f09 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2005--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 2005--2014 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
index 180f8acc61c102d0e8f5bee99bc82b0e8bc86c32..78c3eeffc3aef9c479cbf13a51dcf7148c557ba1 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1997--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 1997--2014 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
index e3e50d6bc5b297f686b3da9af436359334f43cab..cefb8d1f9778d73ec9f2ef23ff8b0653b9b78b1a 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1993--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 1993--2014 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
index ed3d203b02efaa626e8df2f2c1120c42cb8e0d2f..f6dd6bae12a75a4bcb31599247699abfa050fd0a 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1997--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 1997--2014 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
index 7dc9d47311446f649db2f8d550b7d0ed40801419..277c4747fc6137686911fd9352d0970d222c3997 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2006--2012  Jan Nieuwenhuizen <janneke@gnu.org>
+  Copyright (C) 2006--2014  Jan Nieuwenhuizen <janneke@gnu.org>
 
   LilyPond is free software: you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
index eebcd92708076919e17f874ddab85e8b28474270..745a98ecea6a28bec022316114991f6153eca513 100644 (file)
@@ -37,8 +37,8 @@ string
 String_convert::bin2hex (Byte bin_char)
 {
   string str;
-  str += to_string ((char) nibble2hex_byte ((Byte) (bin_char >> 4)));
-  str += to_string ((char) nibble2hex_byte (bin_char++));
+  str += ::to_string ((char) nibble2hex_byte ((Byte) (bin_char >> 4)));
+  str += ::to_string ((char) nibble2hex_byte (bin_char++));
   return str;
 }
 
@@ -49,8 +49,8 @@ String_convert::bin2hex (const string &bin_string)
   Byte const *byte = (Byte const *)bin_string.data ();
   for (ssize i = 0; i < bin_string.length (); i++)
     {
-      str += to_string ((char)nibble2hex_byte ((Byte) (*byte >> 4)));
-      str += to_string ((char)nibble2hex_byte (*byte++));
+      str += ::to_string ((char)nibble2hex_byte ((Byte) (*byte >> 4)));
+      str += ::to_string ((char)nibble2hex_byte (*byte++));
     }
   return str;
 }
@@ -127,7 +127,7 @@ String_convert::hex2bin (string hex_string, string &bin_string_r)
       int low_i = hex2nibble (*byte++);
       if (high_i < 0 || low_i < 0)
         return 1; // invalid char
-      bin_string_r += to_string ((char) (high_i << 4 | low_i), 1);
+      bin_string_r += ::to_string ((char) (high_i << 4 | low_i), 1);
       i += 2;
     }
   return 0;
@@ -165,10 +165,10 @@ String_convert::int2dec (int i, size_t length_i, char ch)
     fill_char = '0';
 
   // ugh
-  string dec_string = to_string (i);
+  string dec_string = ::to_string (i);
 
   // ugh
-  return to_string (fill_char, ssize_t (length_i - dec_string.length ())) + dec_string;
+  return ::to_string (fill_char, ssize_t (length_i - dec_string.length ())) + dec_string;
 }
 
 // stupido.  Should use int_string ()
@@ -182,14 +182,14 @@ String_convert::unsigned2hex (unsigned u, size_t length, char fill_char)
 #if 1 // both go...
   while (u)
     {
-      str = to_string ((char) ((u % 16)["0123456789abcdef"])) + str;
+      str = ::to_string ((char) ((u % 16)["0123456789abcdef"])) + str;
       u /= 16;
     }
 #else
   str += int_string (u, "%x");  // hmm. %lx vs. %x -> portability?
 #endif
 
-  str = to_string (fill_char, ssize_t (length - str.length ())) + str;
+  str = ::to_string (fill_char, ssize_t (length - str.length ())) + str;
   while ((str.length () > length) && (str[ 0 ] == 'f'))
     str = str.substr (2);
 
@@ -299,7 +299,7 @@ String_convert::pointer_string (void const *l)
 string
 String_convert::precision_string (double x, int n)
 {
-  string format = "%." + to_string (max (0, n - 1)) + "e";
+  string format = "%." + ::to_string (max (0, n - 1)) + "e";
   string str = double_string (abs (x), format.c_str ());
 
   int exp = dec2int (str.substr (str.length () - 3));
@@ -316,9 +316,9 @@ String_convert::precision_string (double x, int n)
   str = str.substr (0, 1) + str.substr (2);
   ssize dot = 1 + exp;
   if (dot <= 0)
-    str = "0." + to_string ('0', -dot) + str;
+    str = "0." + ::to_string ('0', -dot) + str;
   else if (dot >= str.length ())
-    str += to_string ('0', dot - str.length ());
+    str += ::to_string ('0', dot - str.length ());
   else if ((dot > 0) && (dot < str.length ()))
     str = str.substr (0, dot) + "." + str.substr (dot);
   else
index 52e2a425086ed1b42a3eeecd40d0d306f37ee779..9ff173bf358b0d3560d101355f30ff963d60cd22 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1997--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 1997--2014 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
index f69a7a85756d283eb59f973584dcfa00ff0af944..3929e27450dbbe108d6e662963964bb90b6812bc 100644 (file)
@@ -1,4 +1,4 @@
-\version "2.17.6"
+\version "2.19.2"
 
 \header {
   texidoc = "The second and third notes should not get accidentals,
 
 mus =          \relative c' {
   f1~
-  f2~f4 % ~ f8
+  2~4 % ~ f8
   fis8  gis8 ~
   \break
   gis1
   \override Accidental.hide-tied-accidental-after-break = ##t
   f1~
-  f2~f4 % ~ f8
+  2~4 % ~ f8
   fis8  gis8 ~
   \break
   gis1
index 676bb3aafb27846a4aa5215650621a56acb4b177..b7d553b1234e03d6266caf29898b84d543ddb63e 100644 (file)
@@ -1,4 +1,4 @@
-\version "2.16.0"
+\version "2.19.0"
 
 \header {
 
 
 \relative c' {
   \time 2/4
-  \set Score.beamExceptions = #'(
-    ( end .
-      (
-        ( (1 . 32) . (4 4 4 4) )
-      )
-    )
-  )
+  \set Score.beamExceptions =
+    \beamExceptions \repeat unfold 4 { 32[ 32 32 32] }
   \repeat unfold 16 c32
   \time 3/4
-  \set Score.beamExceptions = #'(
-    ( end .
-      (
-        ( (1 . 32) . (4 4 4 4 4 4) )
-      )
-    )
-  )
+  \set Score.beamExceptions =
+    \beamExceptions \repeat unfold 6 { 32[ 32 32 32] }
   \repeat unfold 24 c32
   c8 c32 c32 c32 c32 c16 c16 c32 c32 c32 c32 c16 c32 c32 c32 c32 c32 c32
   \time 4/4
-  \set Score.beamExceptions = #'(
-    ( end .
-      (
-        ( (1 . 32) . (4 4 4 4 4 4 4 4) )
-      )
-    )
-  )
+  \set Score.beamExceptions =
+    \beamExceptions \repeat unfold 8 { 32[ 32 32 32] }
   \repeat unfold 32 c32
   \time 6/8
-  \set Score.beamExceptions = #'(
-    ( end .
-      (
-        ( (1 . 32) . (4 4 4 4 4 4) )
-      )
-    )
-  )
+  \set Score.beamExceptions =
+    \beamExceptions \repeat unfold 6 { 32[ 32 32 32] }
   \repeat unfold 24 c32
 }
index 426bbf4b180e21be52f415b9e271d3d101341038..892359dfc2a060ad5279d13405b85000597dc06c 100644 (file)
@@ -1,6 +1,6 @@
 \version "2.17.6"
 
-forcedLastBreak =  { \break }
+forcedLastBreak =  {} %%  { \break } if needed to match original breaks
 
 %% We want this to perfectly match the Bärenreiter spacing.
 %% If we're not using 6 systems, there's definitely a problem.
@@ -171,10 +171,9 @@ smallerPaper = \layout {
   ragged-bottom = ##t
   indent = 7. \mm
   line-width =183.5 \mm
-  obsolete-between-system-space = 25\mm
-  system-system-spacing #'basic-distance = #(/ obsolete-between-system-space staff-space)
+  system-system-spacing #'basic-distance = 14.22 % 25mm, in staff-spaces
   system-system-spacing #'padding = #0
-  score-system-spacing #'basic-distance = #(/ obsolete-between-system-space staff-space)
+  score-system-spacing #'basic-distance = #0
   score-system-spacing #'padding = #0
   system-count = 6
 
index b8a2b5d997bd27b39e0268156f31d0b9f00324e2..e875bb2c80e2342ac8c3b0304edaa63291cbf58f 100644 (file)
@@ -1,4 +1,4 @@
-\version "2.16.0"
+\version "2.19.2"
 
 \header {
   texidoc = "When a beam goes over a rest, beamlets should be as necessary
@@ -8,7 +8,7 @@
 \relative c' {
   c8[ r16 c32 c32]
   c32[ r16 c32 c8]
-  c32[ r16 c64 c64 ~ c16.. c64]
+  c32[ r16 c64 c64 ~ 16.. c64]
   c32[ c32 r16 c8]
   c16[ r32 c32 r16 c16]
   c16[ r16 c32 r32 c16]
diff --git a/input/regression/chord-changes-alternative.ly b/input/regression/chord-changes-alternative.ly
new file mode 100644 (file)
index 0000000..39f464e
--- /dev/null
@@ -0,0 +1,22 @@
+\version "2.18.0"
+
+\header {
+  texidoc = "Chord change detection in repeat alternatives
+happens in relation to the chord active at the beginning of the
+first alternative.
+"
+}
+
+\score {
+  <<
+    \new ChordNames {
+      \set chordChanges = ##t
+      \chordmode { \repeat volta 3 { g1 | }
+                  \alternative { {c |}  {c4 g c c |} {g2 c |} } } }
+    \new Voice {
+      \relative c'' {
+       \repeat volta 3 { g4 f e d | } 
+       \alternative { {c r r r |} {c g c r |} {b g c2 |} } }
+      \bar "|." }
+  >>
+}
diff --git a/input/regression/chord-dots.ly b/input/regression/chord-dots.ly
new file mode 100644 (file)
index 0000000..957788d
--- /dev/null
@@ -0,0 +1,17 @@
+\version "2.17.16"
+
+\header {
+  texidoc =
+"The column of dots on a chord is limited to the height
+of the chord plus @code{chord-dots-limit} staff-positions."
+}
+
+\layout{ ragged-right = ##t }
+
+\new Staff \transpose c c' {
+  \override Staff.DotColumn.chord-dots-limit = #1
+  <<
+    { <g a b c' d' e'>4. r8 <c' d' e' f' g' a' b'>4. r8 } \\
+    { f4.. r16 <c d e f g a b>4.. r16}
+  >>
+}
index fa08917267df21349e49fc9bce9bc736cc2fc7ca..37ee787cb6f36f79e05cf0b3fee135844d7530bb 100644 (file)
@@ -1,4 +1,4 @@
-\version "2.17.6"
+\version "2.19.2"
 
 \header{
 
@@ -11,20 +11,37 @@ full size."
   ragged-right = ##t
 }
 
+clefs = {
+  \clef "treble"        c'1^"treble"        \bar "||"
+  \clef "french"        c'1^"french"        \bar "||"
+  \clef "soprano"       c'1^"soprano"       \bar "||"
+  \clef "mezzosoprano"  c'1^"mezzosoprano"  \bar "||"
+  \clef "alto"          c'1^"alto"          \bar "||"
+  \clef "varC"          c'1^"varC"          \bar "||"
+  \clef "treble"        c'1^"treble"        \bar "||"
+  \clef "altovarC"      c'1^"altovarC"      \bar "||"
+  \clef "tenor"         c'1^"tenor"         \bar "||"
+  \clef "tenorvarC"     c'1^"tenorvarC"     \bar "||"
+  \clef "tenorG"        c'^"tenorG"         \bar "||"
+  \clef "GG"            c'1^"GG"            \bar "||"
+  \clef "baritone"      c'1^"baritone"      \bar "||"
+  \clef "varbaritone"   c'1^"varbaritone"   \bar "||"
+  \clef "baritonevarC"  c'1^"baritonevarC"  \bar "||"
+  \clef "baritonevarF"  c'1^"baritonevarF"  \bar "||"
+  \clef "bass"          c'1^"bass"          \bar "||"
+  \clef "subbass"       c'1^"subbass"       \bar "||"
+  \clef "percussion"    c'1^"percussion"    \bar "||"
+  \clef "varpercussion" c'1^"varpercussion" \bar "||"
+}
 
 { 
+  \override Score.RehearsalMark.self-alignment-X = #LEFT
   \textLengthOn
-  \clef "treble" c'1^"treble" \bar "||"
-  \clef "french"c'1^"french" \bar "||"
-  \clef "soprano"c'1^"soprano" \bar "||"
-  \clef "mezzosoprano"c'1^"mezzosoprano" \bar "||"
-  \clef "alto"c'1^"alto" \bar "||"
-  \clef "tenor"c'1^"tenor" \bar "||"
-  \clef "baritone"c'1^"baritone" \bar "||"
-  \clef "varbaritone"c'1^"varbaritone" \bar "||"
-  \clef "bass"c'1^"bass" \bar "||"
-  \clef "subbass"c'1^"subbass" \bar "||"
-  \override Staff.Clef.full-size-change = ##t 
-  \clef "treble" c'1^"full-size-change = #t" \bar "|."
+  \mark "clefs:"
+  \clefs
+  \override Staff.Clef.full-size-change = ##t \break
+  \mark "with full-size-change = #t:"
+  \clefs
+  \bar "|."
 }
 
index 79510e1484513a4c2e03097277aa8056cb9de885..cc29f58d4eb1a96f1249907fe6188d66c69ef25a 100644 (file)
@@ -1,12 +1,12 @@
-\version "2.16.0"
+\version "2.19.0"
 
 \header{
 texidoc="
 
 If the @code{Note_heads_engraver} is replaced by the @code{Completion_heads_engraver},
-notes with a duration factor still keep their requested appearance.
-
-"
+long notes, longer than @code{measureLength}, are split into un-scaled notes,
+even if the original note used a scale-factor.
+@code{completionFactor} controls this behavior."
 }
 
 \layout { ragged-right= ##t }
@@ -20,5 +20,11 @@ notes with a duration factor still keep their requested appearance.
   c\breve |
   c1*2 |
   c2*4 |
-  c8*20
+  c8*20 r2 \break
+  \tuplet 3/2 { d1 d d }
+  % \breve*2/3 is longer than a measure, but we want a tuplet, not repeats.
+  \set completionFactor = ##f
+  \tuplet 3/2 { e\breve e e }
+  \set completionFactor = #2/3
+  \tuplet 3/2 { e\breve e e }
 }
index 469305b29c8d7a78bad0077271a0768407808a18..979359bf29cc299c5555fd214bb9cf8aaa3492ed 100644 (file)
@@ -5,7 +5,7 @@
 
   }
 
-\version "2.16.0"
+\version "2.19.2"
 
 \paper{ ragged-right=##t }
 
@@ -13,6 +13,6 @@
   \remove "Note_heads_engraver"
   \consists "Completion_heads_engraver"
 } {
-  \relative c'' { r2 d1 ~ d1 d2 }
+  \relative c'' { r2 d1 ~ 1 d2 }
 }
 
index e39e17aff898419e01a3bd6726af65430e79b3db..365b7372e2a6a1ae1f86367664fc96e0625bdd0f 100644 (file)
@@ -1,12 +1,12 @@
-\version "2.16.0"
+\version "2.19.0"
 
 \header{
 texidoc="
 
 If the @code{Rest_engraver} is replaced by the @code{Completion_rest_engraver},
-rests with a duration factor still keep their requested appearance.
-
-"
+long rests, longer than @code{measureLength}, are split into
+un-scaled rests, even if the original duration used a scale-factor.
+@code{completionFactor} controls this behavior."
 }
 
 \layout { ragged-right= ##t }
@@ -20,5 +20,9 @@ rests with a duration factor still keep their requested appearance.
   r\breve |
   r1*2 |
   r2*4 |
-  r8*20
+  r8*20 r2 \break
+  \bar "||" \time 2/4
+  r\breve.*2/3
+  \set completionFactor = #1/2
+  r\breve.*2/3^"explicity request r1*1/2 rests"
 }
index a4abc604d1c09dbd86791a4e4e0a08caa3c1c4ae..3b99a96bc2ad07b8a3a3cb73c1a360afc826fe1f 100644 (file)
@@ -107,7 +107,7 @@ stderr of this run."
 \test ##[ c4 ~ #]                                      % TieEvent
 \test ##[ c\noBeam #]                                  % BeamForbidEvent
 \test ##[ c\1 #]                                       % StringNumberEvent
-\test ##[ { c: c:1 } #]                                        % TremoloEvent
+\test ##[ { c:8 c:1 } #]                               % TremoloEvent
 \test ##[ { c-^ c^^ c_^ } #]                           % ArticulationEvent
 \test ##[ { c-+ c^+ c_+ } #]
 \test ##[ { c-- c^- c_- } #]
@@ -183,6 +183,9 @@ stderr of this run."
 \test ##[ \tuplet 3/2 { c4 d e \tuplet 5/2 { f4 e d2 d4 } c4 } #]
 \test ##[ \tuplet 3/2 2 { c4 d e \tuplet 5/2 2 { f4 e d2 d4 } c4 } #]
 
+%% pure rhythm
+\test ##[ { 4 4 8 \tuplet 3/2 { 8[ 16] } 16 } #]
+
 %% \relative and \tranpose
 \test #"NOT A BUG" ##[ \relative c' { c b } #] % RelativeOctaveMusic
 \test #"NOT A BUG" ##[ \transpose c d { c d } #]       % TransposedMusic
diff --git a/input/regression/dynamics-avoid-cross-staff-stem.ly b/input/regression/dynamics-avoid-cross-staff-stem.ly
deleted file mode 100644 (file)
index 078d876..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-\version "2.17.10"
-
-\header {
-  texidoc = "Dynamics are correctly nested over/under cross staff stems.
-They are, however, not yet factored into horizontal spacing - the fff
-collides with other grobs.
-"
-}
-
-\new GrandStaff <<
-  \new Staff = "PnRH" {
-    \relative g {
-      \stemDown gis8 \p [ \change Staff = "PnLH" \stemUp a, \fff ]
-      a8 \p [ \change Staff = "PnRH" \stemDown gis'8 \fff ]
-      \change Staff = "PnRH" r4
-    }
-  }
-  \new Staff = "PnLH" { \clef "F" { s2 r4 } }
->>
index f167a9794e10705ad2d4f07d62d7469299873694..450ed819bd08f6b77228d181059801d0a107423d 100644 (file)
@@ -1,4 +1,4 @@
-\version "2.17.15"
+\version "2.19.2"
 
 \header
 {
@@ -7,5 +7,5 @@
 "
 }
 \relative c' {
-  \slashedGrace c16~ c1
+  \slashedGrace c16~ 1
 }
index 66d2bae7012e1a61fb475e1237ad4b81396a94bc..382cb37a2006556bb41c698e453b699c6c30865a 100644 (file)
@@ -11,14 +11,14 @@ lines."
   ragged-right = ##T
 }
 
-\version "2.16.0"
+\version "2.19.2"
 
 <<
   \new Voice = melody \relative c'{
     r2 r4 r8 e8 |\break
     e16 e8. 
   }
-  \lyricsto "melody" \lyrics { 
+  \new Lyrics \lyricsto "melody" { 
     \set stanza = "Verse 2."
     _ bla bla  }
 >>
diff --git a/input/regression/header-score-reordered.ly b/input/regression/header-score-reordered.ly
new file mode 100644 (file)
index 0000000..acbe127
--- /dev/null
@@ -0,0 +1,22 @@
+\version "2.19.0"
+\header {
+  texidoc="
+Header blocks may appear before and after the actual music in a score.
+"
+}
+
+\markup \vspace #3
+\markup { \bold Note: expect piece and opus. }
+\markup \vspace #3
+
+\score {
+  \header {
+    piece = "Piece correct (set in score)"
+    opus = "Opus incorrect (to be superseded at score level)"
+  }
+  \new Staff { c'1 }
+  \header {
+    % This should NOT overwrite the piece from above!
+    opus = "Opus correct (superseded at score level)"
+  }
+}
index 4f46271696a00ccaf8336e4b96e08445997e8bbc..cb7833e4e5481b9354e0b8bedecc8dc9c09ace05 100644 (file)
@@ -5,11 +5,11 @@
 
 }
 
-\version "2.17.6"
+\version "2.19.7"
 
 {
   \override Staff.KeySignature.padding-pairs
     = #'((("accidentals.flat" . "accidentals.sharp.slashslash.stemstemstem") . 0.5))
-    \set Staff.keySignature = #`((4 . ,FLAT) (6 . ,THREE-Q-SHARP) (2 . ,SEMI-FLAT))
+    \set Staff.keyAlterations = #`((4 . ,FLAT) (6 . ,THREE-Q-SHARP) (2 . ,SEMI-FLAT))
   e2
 }
index 6a1e8ffd53df269c06206b0e89cd8c8cb8acb815..1bae1b68fa35afe5a65044a1589e843ce60ad09e 100644 (file)
@@ -1,4 +1,4 @@
-\version "2.16.0"
+\version "2.19.7"
 
 \header {
   texidoc = "When a custom key signature has entries which are
@@ -6,12 +6,12 @@ limited to a particular octave, such alterations should persist
 indefinitely or until a new key signature is set.
 
 Here, only the fis' shows an accidental, since it is outside the
-octave defined in @code{keySignature}.
+octave defined in @code{keyAlterations}.
 "
 }
 
 \relative c' {
-  \set Staff.keySignature = #`(((0 . 3) . ,SHARP)
+  \set Staff.keyAlterations = #`(((0 . 3) . ,SHARP)
                                ((0 . 5) . ,FLAT)
                                ((0 . 6) . ,FLAT))
   fis fis as bes
index fb51ebaf040c0fa705ca42ebb6ae799cfe78f670..547fe7688ed9447ca574a6f2dc704bb115efaf46 100644 (file)
@@ -1,7 +1,7 @@
 
-\version "2.16.0"
+\version "2.19.7"
 
-\header { texidoc = "By setting @code{Staff.keySignature} directly,
+\header { texidoc = "By setting @code{Staff.keyAlterations} directly,
 key signatures can be set invidually per pitch.
 "
 
@@ -11,9 +11,9 @@ key signatures can be set invidually per pitch.
 }
 \relative c'
 \new Staff {
-    \set Staff.keySignature = #`(((0 . 3) . ,FLAT) ((1 .  2) . ,SHARP))
+    \set Staff.keyAlterations = #`(((0 . 3) . ,FLAT) ((1 .  2) . ,SHARP))
     f8 a c e
-    \set Staff.keySignature = #`(((0 . 4) . ,DOUBLE-SHARP) ((1 .  2) . ,FLAT))
+    \set Staff.keyAlterations = #`(((0 . 4) . ,DOUBLE-SHARP) ((1 .  2) . ,FLAT))
     e a, g a
 }
 
index 46079b264fb1bab9d783fe57304ff47a4c7829f8..3ede492846d38b597bf2b82b67afcbbb1f8a33f3 100644 (file)
@@ -1,5 +1,5 @@
 
-\version "2.17.15"
+\version "2.19.7"
 \header{
 texidoc="
 Key signatures may appear on key changes, even without a barline.  
@@ -25,7 +25,7 @@ are created also on a clef change.
     \break
     \key bes \major % \major
     c2 \clef alto c2   \key d \major \clef treble c2
-    \set Staff.keySignature = #`((4 . ,FLAT) (6 . ,THREE-Q-SHARP) (2 . ,SEMI-FLAT))
+    \set Staff.keyAlterations = #`((4 . ,FLAT) (6 . ,THREE-Q-SHARP) (2 . ,SEMI-FLAT))
     e2
 }
 
index c87772419dd455a914c337282834c897bbabd9d4..61b79eccd4d12acdfbecdc6980be62a0018c3f6e 100644 (file)
@@ -1,4 +1,4 @@
-\version "2.17.10"
+\version "2.19.0"
 
 \header {
     composer = "ARTHUR GRAY"
@@ -233,8 +233,9 @@ middleDynamics = {
 theScore = \score{
     \context PianoStaff <<
         \new Staff = "treble" <<
-            \set beamExceptions = #'((end . (((1 . 8) . (2 2 2 2))
-                                           ((1 . 32) . (4 4 4 4 4 4 4 4)))))
+            \set beamExceptions =
+             \beamExceptions { 8[ 8] 8[ 8] 8[ 8] 8[ 8] |
+                               \repeat unfold 8 { 32[ 32 32 32] } }
            \treble
            \trebleTwo
         >>
index 5c35ed00a21432b453164a8e5936c84ed2a91acc..2f3898824376bc09e453d55943332952ed9509b0 100644 (file)
@@ -1,4 +1,4 @@
-\version "2.16.0"
+\version "2.19.2"
 
 #(ly:set-option 'warning-as-error #f)
 #(ly:expect-warning (ly:translate-cpp-warning-scheme "cannot find Voice `%s'") "not-existing-notes")
@@ -17,9 +17,9 @@ no warning should be printed."
       c1
     }
   % This should not give a warning (empty lyrics, existing voice):
-  \new Lyrics \lyricsto "notes" \lyricmode { }
+  \new Lyrics \lyricsto "notes" { }
   % This should give a warning (non-existing voice):
-  \new Lyrics \lyricsto "not-existing-notes" \lyricmode { Test }
+  \new Lyrics \lyricsto "not-existing-notes" { Test }
   % This should NOT give a warning (non-existing voice, but also no lyrics):
-  \new Lyrics \lyricsto "not-existing-notes" \lyricmode { }
+  \new Lyrics \lyricsto "not-existing-notes" { }
 >>
index 053a23e1c4c258ef5184a9b8bcb4950159319d1b..b01227ac9a9ff1c0909ed640d70f64c76ab2731d 100644 (file)
@@ -1,4 +1,4 @@
-\version "2.16.0"
+\version "2.19.2"
 \header {
   texidoc = "With the @code{\\lyricsto} mechanism, individual lyric
     lines can be associated with one melody line. Each lyric line
@@ -11,8 +11,8 @@ can be tuned to either follow or ignore melismata."
     \autoBeamOff
     c2( d4) e8[ c b c] f4
   }
-  \lyricsto "bla"  \new Lyrics  { bla ab blob blob }
-  \lyricsto "bla"  \new Lyrics  {
+  \new Lyrics  \lyricsto "bla"  { bla ab blob blob }
+  \new Lyrics  \lyricsto "bla"  {
     bla 
 
     \set ignoreMelismata = ##t
@@ -26,7 +26,7 @@ can be tuned to either follow or ignore melismata."
     blob
   }
   
-  \lyricsto "bla"  \new Lyrics  {
+  \new Lyrics  \lyricsto "bla"  {
     nes ted lyrics voice with more words than no tes
   }
 >>
index 16285dd6cffa6acce21d423995e5c163170b5c43..0f979840da14b9296e547077acea0df284d506c3 100644 (file)
@@ -1,4 +1,4 @@
-\version "2.16.0"
+\version "2.19.2"
 \header {
 
   texidoc ="Polyphonic rhythms and rests do not disturb
         bes'4 bes'4
         bes'4 bes'4
       }
-      \lyricsto "one"  \context Lyrics = sop {
+      \context Lyrics = sop \lyricsto "one"  {
         Do mi nus ex
       }
       \new Voice = "two" {
         \voiceTwo
         ees'8 r8 r8 r8 ees' r8 r8 r8 
       }
-      \lyricsto "two"  \new Lyrics  {
+      \new Lyrics  \lyricsto "two"  {
         Do na
       }
     >>
index 7d36a12335cefac28757a96d7961c2d8caf4ff8c..0919bfcbbf8cfdde5c94e1522add16e611c0d58b 100644 (file)
@@ -1,4 +1,4 @@
-\version "2.16.0"
+\version "2.19.2"
 \header
 {
 
@@ -18,6 +18,6 @@ of the melisma."
     a) a2( b) \break
     a2 
   }
-  \lyricsto A \context Lyrics \lyricmode { a __ a __ ha }
+  \context Lyrics \lyricsto A { a __ a __ ha }
 >>
 
index fbe84a54222d42aa851a424bf35db044e1cdb60e..66e744594a47a59125b97107a16ee8199c344709 100644 (file)
@@ -1,4 +1,4 @@
-\version "2.16.0"
+\version "2.19.2"
 
 \header {
 
@@ -16,6 +16,6 @@
     d |
   }
 }
-\new Lyrics \lyricsto "upper" \lyricmode { Ah __ }
+\new Lyrics \lyricsto "upper" { Ah __ }
 
 >>
index d99b486108fa59da9a165be5c506277066e3044a..36d4133c0688ae59bc687f65fa807def2335e6fb 100644 (file)
@@ -6,7 +6,7 @@ without a lyric attached."
   
 }
 
-\version "2.16.0"
+\version "2.19.2"
 
 \layout {
   ragged-right = ##t
@@ -14,7 +14,7 @@ without a lyric attached."
 
 \relative c'' {
   \time 3/4
-  d4~ d4 r4
+  d4~ 4 r4
   \grace es8
 
   d4
index ab24aa3b22f230051b49e67ba55d90ea5958b49e..3d16224aeb74a24ddace818d87579c1b9000c0db 100644 (file)
@@ -1,4 +1,4 @@
-\version "2.16.0"
+\version "2.19.2"
 \header {
 
   texidoc = "
@@ -20,7 +20,7 @@
     d16[ e f g]
     
   }
-  \lyricsto "bla" \context Lyrics \lyricmode {
+  \context Lyrics \lyricsto "bla" {
     alllll __ tijd
     izzz
   }
index dafbe7d97680ff0135e55c063200d0bae1a71b4f..ccc72ac1864087545eb7fd9c6935d2b8894292a1 100644 (file)
@@ -5,7 +5,7 @@
 
 }
 
-\version "2.16.0"
+\version "2.19.2"
 \paper {
   ragged-right = ##t
 }
@@ -15,5 +15,5 @@
     \new Voice = "myVoice" {
       \afterGrace c''2 { e''32( } c''2)
     }}
-  \new Lyrics \lyricsto "myVoice" \lyricmode { foo -- bar }
+  \new Lyrics \lyricsto "myVoice" { foo -- bar }
 >>
index ba811ed8a900cdfdd373d6c75f833673ee0699b2..b3f99228b6c8b916086a797cf67e26f1b29a594a 100644 (file)
@@ -1,4 +1,4 @@
-\version "2.16.0"
+\version "2.19.2"
 \header
 {
   texidoc = "Melismata are triggered by manual beams.  Notes in a
@@ -16,7 +16,7 @@
     \set Staff.autoBeaming = ##f
     g4 d8[ b8 d8 g8]  g4
   }
-  \lyricsto "" \new Lyrics \lyricmode { bla blaa -- bla }
+  \new Lyrics \lyricsto "" { bla blaa -- bla }
 >>
 
 
diff --git a/input/regression/magnifyMusic-stem-beam-spacing.ly b/input/regression/magnifyMusic-stem-beam-spacing.ly
new file mode 100644 (file)
index 0000000..2ca1523
--- /dev/null
@@ -0,0 +1,22 @@
+\version "2.19.8"
+
+\header {
+  texidoc = "Stem lengths, beam spacing/thickness, and horizontal
+spacing should be scaled along with notation size when using the
+@code{\magnifyMusic} command."
+}
+
+\layout { ragged-right = ##t }
+
+\relative <<
+  { \repeat unfold 7 { g'32[ a b c] } }
+  {
+    \magnifyMusic 0.50 { s8_"50%" }
+    \magnifyMusic 0.63 { s }
+    \magnifyMusic 0.80 { s }
+    \magnifyMusic 1.00 { s_"100%" }
+    \magnifyMusic 1.26 { s }
+    \magnifyMusic 1.59 { s }
+    \magnifyMusic 2.00 { s_"200%" }
+  }
+>>
diff --git a/input/regression/make-relative-copies.ly b/input/regression/make-relative-copies.ly
new file mode 100644 (file)
index 0000000..926de58
--- /dev/null
@@ -0,0 +1,31 @@
+\version "2.18.0"
+
+\header {
+  texidoc = "@code{make-relative} has to copy its argument expressions
+in case the generated music expression is getting copied and modified.
+
+The code here defines a @code{\\reltranspose} function working inside
+of @code{\\relative} and uses it.  Both staves should appear
+identical."
+}
+
+\layout {
+  ragged-right = ##t
+}
+
+reltranspose =
+#(define-music-function (parser location from to music)
+  (ly:pitch? ly:pitch? ly:music?)
+  (make-relative (music) music
+   #{ \transpose #from #to $music #}))
+
+mus =
+\reltranspose c g {
+  \partial 4. c8 e g |
+  c2 r8 c, e g c1 | \bar "|."
+}
+
+<<
+  \new Staff \relative \mus
+  \new Staff \relative \mus
+>>
diff --git a/input/regression/make-relative-music.ly b/input/regression/make-relative-music.ly
new file mode 100644 (file)
index 0000000..58266b2
--- /dev/null
@@ -0,0 +1,32 @@
+\version "2.19.0"
+
+\header {
+  texidoc = "@code{make-relative} can make relativization on music
+function calls behave as one would expect from looking at the
+function's arguments rather than at the actually resulting
+expressions.  This regtest defines an example function
+@code{\\withOctave} which works equally well inside and outside of
+@code{\\relative}." 
+}
+
+withOctave =
+#(define-music-function (parser location music)
+  (ly:music?)
+  (make-relative
+   (music) music
+   #{ \context Bottom << $music \transpose c c' $music >> #}))
+
+mus = {
+  \partial 4. c'8 e g |
+  c2 e,4 g |
+  c,8 c' b a <g d'> <f c'> <e b'> <d a'> |
+  <c g'>1 | \bar "|."
+}
+
+<<
+  \relative \new Staff { <>^"original" \mus }
+  \relative \new Staff { <>^\markup \typewriter "\\relative \\withOctave"
+                        \withOctave \mus }
+  \new Staff { <>^\markup \typewriter "\\withOctave \\relative"
+              \withOctave \relative \mus }
+>>
index 706bdb9adc3aec8508d29fa938f06931ecef5d2f..c3bf0a01d376325b98e0dfe4fb52d342dd23db3f 100644 (file)
@@ -1,4 +1,4 @@
-\version "2.17.11"
+\version "2.19.2"
 \header {
 
   texidoc = "@code{make-relative} is a Scheme utility macro mainly
@@ -16,7 +16,7 @@ The fragment should appear identical in both cases."
 ph =
 #(define-music-function (parser location p1 p2 p3 p4 p5)
   (ly:pitch? ly:pitch? ly:pitch? ly:pitch? ly:pitch?)
-  (make-relative (p1 p2 p3 p4 p5) p1
+  (make-relative (p1 p2 p3 p4 p5) (make-event-chord (list p1 p2 p3 p4 p5))
    #{
      \repeat unfold 2 { $p1 2 } |
      \repeat unfold 2 { r16 $p2 8. ~ $p2 4 } |
@@ -32,9 +32,9 @@ ph =
   \ph d a d' fis' c''
   \oneVoice R1*21 \voiceTwo | \skip 1*21 | R1*21 |
   \ph c, c g bes e'
-  c,2~ c, | r16 c8. ~ c4 ~ c2
+  c,2~ 2 | r16 c8. ~ 4 ~ 2
   | r8 f16 a c' f' c' a c' a f a f d f d |
-  c,2~ c, | r16 b,8. ~ b,4 ~ b,2
+  c,2~ 2 | r16 b,8. ~ 4 ~ 2
   | r8 g'16 b' d'' f'' d'' b' d'' b' g' b' d' f' e' d' |
   c,1\fermata | c1 | <e' g' c''>1\fermata \bar "|." |
 }
@@ -61,9 +61,9 @@ ph =
   \ph d, a' d fis c'
   \oneVoice R1*21 \voiceTwo | \skip 1*21 | R1*21 |
   \ph c, c' g' bes e
-  c2~ c | r16 c'8. ~ c4 ~ c2
+  c2~ 2 | r16 c'8. ~ 4 ~ 2
   | r8 f16 a c f c' a c a f a f d f d |
-  c,,2~ c | r16 b'8. ~ b4 ~ b2
+  c,,2~ 2 | r16 b'8. ~ 4 ~ 2
   | r8 g'16 b d f d b d b g b d f e d |
   c,,1\fermata | c'1 | <e' g c>1\fermata \bar "|." |
 }
diff --git a/input/regression/midi-grace-after-rest.ly b/input/regression/midi-grace-after-rest.ly
new file mode 100644 (file)
index 0000000..8a99cdd
--- /dev/null
@@ -0,0 +1,14 @@
+\header {
+  texidoc = "Grace notes shorten previous notes only if they'd overlap
+them. The A should be a full quarter note, but the C should be shortened
+to 1/4 - 9/40 * 1/8 = 71/320 (rounded down to 340/384 in MIDI)."
+}
+\version "2.18.0"
+\score {
+ \relative c' {
+   a4 r
+   \grace b8 c8... r64
+   \grace d8 e4
+ }
+ \midi { }
+}
index 16c658e1e96f16e72cc09e18bd6adb7f78d83758..8c6e4c070f0608c3a2c3e7eb9c40f3e1bbc9fa13 100644 (file)
@@ -1,4 +1,4 @@
-\version "2.16.0"
+\version "2.19.2"
 \header {
 
     texidoc = "Lyrics in MIDI are aligned to ties and beams:
@@ -12,12 +12,12 @@ this examples causes no bar checks in MIDI.
     <<\relative c'' \new Voice =  A {
        \autoBeamOff
        c8[ c] c2.
-       c1~c4 c2.
+       c1~4 c2.
        c4 ( d e) d
        c1
 
     }
-    \lyricsto "A" \lyrics { bla bla | bla bla | bla bla | bla }
+    \new Lyrics \lyricsto "A" { bla bla | bla bla | bla bla | bla }
     >>
     \layout {}
       \midi {}
index 2a2e93dca3f4d239d8004f3bc030d55ca83895fa..c33568319802e06e098d82263a2f88cf0c8a6e68 100644 (file)
@@ -27,7 +27,7 @@ been lowered
 
 }
 
-\version "2.17.6"
+\version "2.19.2"
 manuscriptBreak = { \break }
 
 
@@ -64,7 +64,7 @@ melody =    \relative c'' \repeat volta 2 \new Voice = "singer" {
   d4 f8 a16[ g fis g] f[ d] |
   g4. r8 gis gis |
   a4 a16.[ b32] c4 fis,8 |
-  g4.~ g8-\fermata g8 g |
+  g4.~ 8-\fermata g8 g |
   as4 as8 g4 g8 |
   fis4 fis8 r8 g g  |
   a!4 a8 g4 g8 |
@@ -157,8 +157,8 @@ pianoLH =  \relative c'' \repeat volta 2 {
           \new Staff <<
               \context Staff \accidentalStyle modern
               \melody >>
-          \lyricsto "singer" \new Lyrics \firstVerse
-          \lyricsto "singer" \new Lyrics \secondVerse
+          \new Lyrics \lyricsto "singer" \firstVerse
+          \new Lyrics \lyricsto "singer" \secondVerse
           \new PianoStaff << 
               \set PianoStaff.instrumentName = \markup {
                   \bold
index 1494f4e299bb8ad9f005b6f91f927d458e786b9d..48627557ba57d42c559e5ed9f9fbb9b6d459181b 100644 (file)
@@ -1,4 +1,4 @@
-\version "2.17.11"
+\version "2.19.2"
 \include "mozart-hrn3-defs.ily"
 
 allegro = \relative c' {
@@ -26,7 +26,7 @@ allegro = \relative c' {
   d8.[ c16 d8. e16]
   c4 r r2
   R1*3
-  c,2 ~  c8[ e g c]
+  c,2 ~  8[ e g c]
   c[ b ] b4 r2
   c,8[ ( e) g c] e[( g) e c]
   c[( b)] b4 r2
@@ -34,7 +34,7 @@ allegro = \relative c' {
   g'[( d) ] d4 r4 d
   d8[ ( c)] c4.(  d16[ e] d8[  c)]
   c8[(\trill  b)] b4 r2 |
-  d2( ~  d8[ e16 d] c8[  b)] |
+  d2( ~  8[ e16 d] c8[  b)] |
   b[( a)] a4 r8  a[ a a]
   a4( cis e g)
   \appoggiatura g16
@@ -47,7 +47,7 @@ allegro = \relative c' {
   a[( \< b c cis\!\> ]  d4  c\!)
   ais8[( b)] r8 b\cresc b[( c)] r c
   cis[ ( d)] r4 r2
-  g,1\!\f ~ g2 ~  g8[ a16 b] c[( d) e c]
+  g,1\!\f ~ g2 ~  8[ a16 b] c[( d) e c]
   %% 64
   f4-. d-. b-. g-.
   R1
@@ -59,7 +59,7 @@ allegro = \relative c' {
   R1*15
   \mark "D"
   bes2\mf d4 f
-  g,2~  g8[ g' es c]|
+  g,2~  8[ g' es c]|
   bes4(  a4.)  c8[( d es)]
   cis4( d) r8  bes[ (c d)]
   es2 ( d4) r
@@ -67,7 +67,7 @@ allegro = \relative c' {
   c8[( g' es  c)] bes4( c)
   c4.( cis8  d4) r
   R1*2
-  es1~es1|
+  es1~1|
   e!
   d
   c
@@ -98,12 +98,12 @@ allegro = \relative c' {
   c4 r r2
   \mark "F"
   R1*3
-  c,2~ c8[ e g c]
+  c,2~ 8[ e g c]
   c8[( b)] b4 r2
   c,8[ e g c ]  e[ ( g) e c]
   c[( b)] b4 r2
   c2 (bes  a) a8[(b c cis)]
-  d2( ~  d8[ e16 d] \appoggiatura d16
+  d2( ~  8[ e16 d] \appoggiatura d16
   c8[ b16  c)]
   \appoggiatura c16
   b8[( a16  g)] g4 r2 |
@@ -112,16 +112,16 @@ allegro = \relative c' {
   \mark "G"
   d[( c) g'( e)] d[( c) a'( f)]
   e[( d)] d4 r  d8[ d]
-  d4(~  d16[ e d e)] g8[( f) e d] |
+  d4(~  16[ e d e)] g8[( f) e d] |
   c4 r r2
   R1
   c1 ~
-  c |
+  1 |
   c8[-. c-.] r c-. cis[( d)] r d-.\cresc |
   dis[( e)] r e-. e[( f)] r f-. |
   g4-.\f e-. c-. bes-. |
   g-.\ff e-. c-. r |
-  a'2 ~  a8[_\markup { \bold \italic "sempre " \dynamic "f" }  b16 c] d[( e d e)]
+  a'2 ~  8[_\markup { \bold \italic "sempre " \dynamic "f" }  b16 c] d[( e d e)]
 
   f4. ( d8)  f8[ ( d) f d]
   c[ (e] g2) \appoggiatura f16
index 403d7aaf4963518a47c527c20cebe07b0b449bd9..8d4d22f566c6105908ab5c3fb64508aae0bd7d3c 100644 (file)
@@ -1,4 +1,4 @@
-\version "2.17.6"
+\version "2.19.2"
 \include  "mozart-hrn3-defs.ily"
 
 romanze =  \relative c' {
@@ -34,7 +34,7 @@ romanze =  \relative c' {
   f'4.(\p  d8) b4 r8 g
   g'4.( e8) c4 r8 cis |
   % 39
-  d4(~  d16[ e d e)] f8[ ( d) f( d)]
+  d4(~  16[ e d e)] f8[ ( d) f( d)]
   c2( b4) r
   R1*4
   e4. ( g8) c,4 ( cis)
@@ -52,8 +52,8 @@ romanze =  \relative c' {
   \revert DynamicLineSpanner.staff-padding
   R1*3
   r8  c[\p c c] c2~
-  c8[ c' c c] c2~
-  c8[ \< e( g f] e[ d\!\> c bes]
+  8[ c' c c] c2~
+  8[ \< e( g f] e[ d\!\> c bes]
   \mark "D"
   a4\!) r r2
   R1*3
index d3997e7774af950c06b52b2ec33b1314c870c220..7ce852149b3438bf4dae099900173830b4382172 100644 (file)
@@ -1,4 +1,4 @@
-\version "2.16.0"
+\version "2.19.2"
 
 \include "mozart-hrn3-defs.ily"
 
@@ -45,13 +45,13 @@ rondo = \relative c' {
   e4 r8 r4 r8
   g4. e4 c8
   g2.~
-  g8[ a b] c[ d e ]
+  8[ a b] c[ d e ]
   e4.( d8) r r
   R2.*4
   e2.~ |
-  e8[ d c] c[ b a]
+  8[ d c] c[ b a]
   d2.~
-  d8[ c b] b[ a g]
+  8[ c b] b[ a g]
   g'4( e8) b4( cis8)
   \mark "B"
   d4 r8 r4 r8
@@ -75,7 +75,7 @@ rondo = \relative c' {
   r8  g[\f g] g[( b) b-.]
   b[( d) d-.] d[( g) g-.]
   g2.~
-  g8[ \> a g] f[ e d]
+  8[ \> a g] f[ e d]
 
   <<
     \rondotheme
@@ -86,40 +86,40 @@ rondo = \relative c' {
   r4 r8 r4 c8
   \mark "D"
   c4 f8 c4 a8
-  a4.~a4 a8
+  a4.~4 a8
   bes4 c8 d4 bes8
-  g4. ~ g8 r r
+  g4. ~ 8 r r
   R2.*3
   r4 r8 r4 c8
   a4. c
-  f ~  f8.[ e16( d c)]
+  f ~  8.[ e16( d c)]
   bes4 g8 e4 g8
-  c,4. ~ c8 r r
+  c,4. ~ 8 r r
   R2.*3|
   r4 r8 r4 c'8
   b4( c8) b4( c8)
-  bes4. ~ bes4 g8
+  bes4. ~ 4 g8
   a4 ( c8) f4 ( b,8)
   d4. ( c8) r r
   R2.*3|
   r4 r8 r4 c8
   b4( c8) b4( c8)
-  bes4. ~ bes4 g8
+  bes4. ~ 4 g8
   a4 c8  f[ ( d) b!]
   d4. ( c8) r r
   \mark "E"
   R2.*9  |
   \lipbreaker
   c,8[ c' c] c4.~
-  c8[ c d] e[ e fis]
+  8[ c d] e[ e fis]
   g4 r8 r4 r8
   R2.
   r8  g,[ g] g[ g g] |
-  es'4. ~  es8[ d c]
+  es'4. ~  8[ d c]
   b4 r8 r4 r8
   R2. |
   r8  g[ g] g[ g g]
-  es'4. ~  es8[ d c]
+  es'4. ~  8[ d c]
   b4.\cresc c4. d4. e4.
   \mark "F"
   f2.\f ~ |
index 83ebf7886a6201b9e3463c94ec7a1a8ce8576ada..c92c6a143b3d6caa2b2d49938a29ae5a391d3e6c 100644 (file)
@@ -1,4 +1,4 @@
-\version "2.17.15"
+\version "2.19.0"
 
 \header{
   texidoc= "Test optional music function arguments.
@@ -10,23 +10,18 @@ the rest is skipped."
 
 \layout { ragged-right = ##t }
 
-% Get following pitch into Scheme
-pitch = #(define-scheme-function (parser location p) (ly:pitch?) p)
-% The same with a duration
-dur = #(define-scheme-function (parser location p) (ly:duration?) p)
-
 % Just like \relative, but defaulting to f as reference, making the
 % first note of the music the same as if written as absolute pitch
 ablative =
 #(define-music-function (parser location ref music)
-  ((ly:pitch? #{ \pitch f #}) ly:music?)
+  ((ly:pitch? #{ f #}) ly:music?)
   #{ \relative $ref $music #})
 
 % Let's take a duration and four pitches, defaulting to 2 c' d' e'
 zap = 
 #(define-music-function (parser location dur a b c d)
-  ((ly:duration? #{ \dur 2 #}) (ly:pitch? #{ \pitch c' #})
-   (ly:pitch? #{ \pitch d' #}) (ly:pitch? #{ \pitch e' #})
+  ((ly:duration? #{ 2 #}) (ly:pitch? #{ c' #})
+   (ly:pitch? #{ d' #}) (ly:pitch? #{ e' #})
    ly:music?) #{ $a $dur $b $c ^\markup{!} $d  #})
 
 \new Voice { \relative c' e' \relative c' { e' } \ablative c' e' \ablative { e' }
index 1f7f6ef3508a80bdbac9657498788dad82258d37..c0b32e8af0b7185a4525332f36675359bd7c6b96 100644 (file)
@@ -1,4 +1,4 @@
-\version "2.16.0"
+\version "2.19.2"
 
 \header {
   texidoc = "Having markup after a non-staff line doesn't confuse
@@ -13,7 +13,7 @@ the page layout engine."
      \new Staff <<
        \new Voice = "asdf" { c' d' e' f' }
      >>
-     \new Lyrics \lyricsto "asdf" \lyricmode { a b c d }
+     \new Lyrics \lyricsto "asdf" { a b c d }
   >>
   }
   \markup "next song"
index 96f1c1df12dbdf8ae4b6905ea1c528899c6bc970..43a01b7d5af483b0b519f98a36298e5f277183aa 100644 (file)
@@ -1,4 +1,4 @@
-\version "2.17.6"
+\version "2.19.2"
 
 \header {
   texidoc = "Spacing rules between Staves coexist with rules affecting
@@ -12,7 +12,7 @@ staves is larger than the @code{padding} for associated lyrics."
   \new Staff = "bass" \new Voice = "b" { \clef bass c2 c' }
   \new Lyrics \with {
     alignAboveContext = "bass"
-  } \lyricsto "b" \lyricmode { bass \skip2 }
+  } \lyricsto "b" { bass \skip2 }
 >>
 \layout {
   \context {
index bf2afed3eae93ddf5e5f84d5b88f8268456d4b1e..9f99d8993762bb6747b818779d6f24e6f707123c 100644 (file)
@@ -11,7 +11,7 @@ voices.
   
 "
        }
-\version "2.16.0"
+\version "2.19.2"
 
 vone =
 
@@ -25,7 +25,7 @@ vone =
 vtwo =
 \relative c' {
   \time 2/4
-  f8[ f]~ f8[ f] |
+  f8[ f]~ 8[ f] |
   f8[ f]  f8[ f]
 }
 
index 621282709e1d063c39ae834e0b8eb44419d2c858..e29e27b1ba978635a5be8651576887dfc8e60f5c 100644 (file)
@@ -14,10 +14,10 @@ Solo 1/2 can not be used when a spanner is active, so there is no solo
 "
     }
 
-vone =  \relative a' { d4 r8 d8 d8 r8 d8 r8 d2 ~ d2 ~ d4 }
+vone =  \relative a' { d4 r8 d8 d8 r8 d8 r8 d2 ~ 2 ~ 4 }
 vtwo =  \relative g' { g4.   g8 r2          g4 r4 r2  g4 } 
 
-\version "2.16.0"
+\version "2.19.2"
 
 \paper { ragged-right = ##t } 
 
index 8669f5bf127c74c223aac846bd5fc7207f921ec1..8e896cfbc4c5c925f048b83baa2fffacb963295c 100644 (file)
@@ -11,7 +11,7 @@
 
 \layout { ragged-right = ##t }
 
-\version "2.16.0"
+\version "2.19.2"
 
 vone =  \relative a' {
   g2 g    g  g4 g f' c c( c) c c  c ~ c
@@ -19,7 +19,7 @@ vone =  \relative a' {
 }
 vtwo =  \relative a' {
   f2 f4 f f2 g4 g c, f f  f  f f~ f ~ f
-  f4 f2. ~ f4
+  f4 f2. ~ 4
 }
 
 
index d7929a210a55e62f3beec499944e391ecf65e43d..0d8be92357a420c678a2912fee5e14c5f296b24f 100644 (file)
@@ -1,4 +1,4 @@
-\version "2.17.6"
+\version "2.19.2"
 \header {
   texidoc = "Nested properties may be overridden using Scheme list
 syntax.  This test performs two property overrides: the first
@@ -11,10 +11,10 @@ list.
   \once \override TextSpanner.bound-details.left.text = #"foo"
   c4\startTextSpan
   \once \override Tie.details.note-head-gap = #1
-  c4 ~ c c\stopTextSpan
+  c4 ~ 4 c\stopTextSpan
   
   \once \override TextSpanner.bound-details.left.text = #"foo"
   c4\startTextSpan
   \once \override Tie.details.note-head-gap = #1
-  c4 ~ c c\stopTextSpan
+  c4 ~ 4 c\stopTextSpan
 }
index e003ffbdcea45062f68cb098abf191f71c472e82..27982b12e0d84c1105f7d516f64483b92697fa5a 100644 (file)
@@ -1,4 +1,4 @@
-\version "2.16.0"
+\version "2.19.2"
 
 \header {
   texidoc = "Voices from different cues must not be tied together.  In
@@ -11,7 +11,7 @@ since only one @code{CueVoice} context is created
 }
 
 cueI = \relative c'' {
-  a1 ~ | a | a |
+  a1 ~ | 1 | a |
 }
 \addQuote "cueI" { \cueI }
 
index 0146d36c4563750b58186c1563b9f5666d6ddef3..22fa2c3af15096f364a656938583757acbf7b9fd 100644 (file)
@@ -1,4 +1,4 @@
-\version "2.16.0"
+\version "2.19.2"
 \header {
   texidoc = "Measure repeats may be nested with beat repeats."
 }
@@ -10,7 +10,7 @@
   \set Score.skipBars = ##t
   \time 4/4
                                % riff
-  \repeat "percent" 2 { r8. a16 g8. a16 bes8. a16 f8 d |  a c8 ~ c8 d8 ~ d8 r8 r4 }
+  \repeat "percent" 2 { r8. a16 g8. a16 bes8. a16 f8 d |  a c8 ~ 8 d8 ~ 8 r8 r4 }
 
   R1*2
   \repeat "percent" 2 { \repeat "percent" 4 { c8 es } }
diff --git a/input/regression/rhythmic-sequence.ly b/input/regression/rhythmic-sequence.ly
new file mode 100644 (file)
index 0000000..df647ce
--- /dev/null
@@ -0,0 +1,11 @@
+\version "2.19.0"
+
+\header {
+  texidoc = "Durations without pitches are placed into note events
+without pitch information.  Those are directly useful in
+@code{RhythmicStaff}."
+}
+
+\layout { ragged-right = ##t }
+
+\new RhythmicStaff { 4 4. r | 4 \tuplet 3/2 { 2 4 } 4 }
index 14e095e9549fea00fa45554183e33dd510e0b49b..fc60c5b33964bf8eb11cebe61224ae26225d704f 100644 (file)
@@ -60,6 +60,7 @@ in scheme."
              (interfaces . (font-interface
                             line-interface
                             line-spanner-interface
+                            outside-staff-interface
                             side-position-interface))))))
 
 #(define scheme-event-spanner-types
diff --git a/input/regression/score-lines.ly b/input/regression/score-lines.ly
new file mode 100644 (file)
index 0000000..edb300f
--- /dev/null
@@ -0,0 +1,40 @@
+\version "2.19.0"
+
+\header {
+  texidoc = "The @code{\\score-lines} markup returns individual score
+lines as stencils rather than a single stencil.  Calling a function 
+like @code{\\rotate} on @code{\\score-lines} rotates the lines
+individually, as contrasted with rotating an entire @code{\\score}
+markup."
+}
+
+\markup \fill-line {
+  \null
+  \column \rotate #-15 {
+    \score-lines
+    {
+      \new Staff \with { instrumentName = \markup \typewriter
+                        "\\score-lines" }
+      \repeat unfold 16 c'4
+      \layout {
+       short-indent = 0
+       indent = 0
+       line-width = 4\cm
+      }
+    }
+  }
+  \column \rotate #-15 {
+    \score
+    {
+      \new Staff \with { instrumentName = \markup \typewriter
+                        "\\score" }
+      \repeat unfold 16 c'4
+      \layout {
+       short-indent = 0
+       indent = 0
+       line-width = 4\cm
+      }
+    }
+  }
+  \null
+}
index 0b1c837e0eed7878b794cbe9bd1533492055fefe..d85942e1af679b166f55fd89c74fb5296d7f2de6 100644 (file)
@@ -1,4 +1,4 @@
-\version "2.17.2"
+\version "2.19.2"
 
 \header {
   texidoc = "Scripts avoid ties.
@@ -14,9 +14,9 @@
   r2. c4~-> | c-> r2. |
   r2. c4-> | c-> r2. |
   r2. c4~-> | c r2. |
-  r2. c4~ | c-> r2. | \break
+  r2. c4~ | 4-> r2. | \break
   r2. <g-- c-> >4--~ | <g-- c>-> ~ <g c---_>-> r2 |
-  r2. c4~ | c-> ~ c-> r2 |
+  r2. c4~ | 4-> ~ c-> r2 |
   r2. c4~-> | c ~ c-> r2 |
   r2. c4~-> | c-> ~ c r2 |
   r2. c4-> |
index 81f31fc0783afc58ace3ecdc52921bbd907014fb..185cd24159cd9373d0c10be928960d704941d9eb 100644 (file)
@@ -1,5 +1,5 @@
 
-\version "2.17.28"
+\version "2.19.2"
 
 \header{
 texidoc="
@@ -38,12 +38,12 @@ in unbroken state.
     \new Voice \relative c' {
        c'8[( c c c] g2 ~ | \break
        g1) | \break
-       \slurDown c8[( c] g4 ~ g2 ~ | \break
-       g2 ~ g2)
+       \slurDown c8[( c] g4 ~ 2 ~ | \break
+       g2 ~ 2)
     }
     \relative c'' {
        a4( c b4 e, ~ | \break
-       e1 ~ | e1)
+       e1 ~ | 1)
     }
     
 }
index 4c2f6ae7f1b9ade1f7d888fb9da733d3a9f6d4bf..ebcace50e020a4c3b4060c4980fdc304eab16276 100644 (file)
@@ -12,7 +12,7 @@
 
 }
 
-\version "2.17.28"
+\version "2.19.2"
 \layout {
     ragged-right = ##t
 %    #(define debug-slur-scoring #t)
@@ -23,7 +23,7 @@
     \grace e=''16( d8.[) c16]
     d=''8.[ \grace f16( e16)]
     s2
-    << {c=''8.([ es16] bes4~bes )}
+    << {c=''8.([ es16] bes4~4 )}
        \\
        {r8  <as es> r <f des> r }
     >>
index 6a597cb1c42a8034d4c539d61639ea74d8931c49..00949e9f36bbf351f1ca54aba6a6cbe226d64a28 100644 (file)
@@ -1,4 +1,4 @@
-\version "2.16.0"
+\version "2.19.2"
 \header {
   texidoc="Festival song synthesis output supports
 melismas.
@@ -18,7 +18,7 @@ melismas.
     \melismaEnd
     e2
   }
-  \lyricsto "lala" \new Lyrics {
+  \new Lyrics \lyricsto "lala" {
     la di __ daah
   }
 >>
index 1f9ce28c076cb9beb07c3e3d514a9887cf08ba9d..3a8a9f718b55df13b59eaf4788fd320a6474d83d 100644 (file)
@@ -1,4 +1,4 @@
-\version "2.16.0"
+\version "2.19.2"
 \header {
   texidoc="Festival song synthesis output supports
 repeat signs.
@@ -13,12 +13,12 @@ repeat signs.
     c2 e4 r4 | g2 e | c1 |
     \context Voice = verse \repeat volta 2 {c4 d e f | g1 | }
     a2 b | c1}
-  \lyricsto melody  \context Lyrics = mainlyrics \lyricmode {
+  \context Lyrics = mainlyrics \lyricsto melody  {
     do mi sol mi do
     la si do }
-  \lyricsto verse \context Lyrics = mainlyrics \lyricmode {
+  \context Lyrics = mainlyrics \lyricsto verse {
    do re mi fa sol }
-  \lyricsto verse \context Lyrics = repeatlyrics \lyricmode {
+  \context Lyrics = repeatlyrics \lyricsto verse {
    dodo rere mimi fafa solsol }
 >>
 }
index bab9232a8d1b7113ec43676e601aaa1352c96622..4c84dad0d8b90947c91f6e1cc73b03704c73d545 100644 (file)
@@ -2,28 +2,18 @@
 
  \header{
 
-  texidoc = "Concurrent tuplets should be equidistant on all staves.
-Such equidistant spacing is at odds with elegant engraver spacing;
-hence it must be switched on explicitly with the
-@code{uniform-stretching} property of @code{SpacingSpanner}."
+  texidoc = "Concurrent tuplets should be equidistant on all staves."
 }
 
-\layout{
-  \context{
-    \Score
-    \override SpacingSpanner.uniform-stretching = ##t
-  }
-}
+\paper {ragged-right = ##f }
 
 \relative c' { 
   \context StaffGroup << 
     \new Staff  \context Voice { 
-      \tuplet 10/2 {  c8[ c c c c c c c c c] } 
-      \tuplet 10/2 {  c[  c c c c c c c c c] } 
+      \tuplet 10/8 {  c8[ c c c c c c c c c] }
     }
     \new Staff  \context Voice { 
-      \tuplet 11/2 {  c8[ c c c c c c c c c c] } 
-      \tuplet 11/2 {  c[  c c c c c c c c c c] } 
+      \tuplet 8/8 {  c8[ c c c c c c c] }
     }
   >>
 }
index c6fe94815be860a58e0a9f58b3a96e9c86d31ad5..d1525438dc1b32f733ea574869f82cf4dd7f76bf 100644 (file)
@@ -1,5 +1,5 @@
 
-\version "2.17.6"
+\version "2.19.2"
 
 \header {
   texidoc = "The @code{SpanBarStub} grob takes care of horizontal spacing
@@ -24,7 +24,7 @@ span bar were not there.
           \once \override Staff.BarLine.allow-span-bar = ##f
           c2 c c c
         }
-    \new Lyrics \lyricsto "upper" \lyricmode {
+    \new Lyrics \lyricsto "upper" {
       long-syllable a b c long-syllable a b c
       long-syllable a b c long-syllable a b c
     }
@@ -38,7 +38,7 @@ span bar were not there.
           \once \override Staff.BarLine.allow-span-bar = ##f
           c2 c c c
         }
-    \new Lyrics \lyricsto "middle" \lyricmode {
+    \new Lyrics \lyricsto "middle" {
       syllable a b c syllable a b c
       syllable a b c syllable a b c
     }
@@ -51,7 +51,7 @@ span bar were not there.
           c2 c c c
           c2 c c c
         }
-    \new Lyrics \lyricsto "lower" \lyricmode {
+    \new Lyrics \lyricsto "lower" {
       word a b c word a b c
       word a b c word a b c
     }
index 02e04ece7dddd98bf094e30c71f5efa10dc79e31..2b4210841d2c69aebbcf2f0958855e7189abd8cd 100644 (file)
@@ -16,7 +16,7 @@ ignoring things like pedal marks.
       }
       \new Dynamics = "dynamics" {
         \repeat unfold 2 {
-          s1\cresc s1\f s1\dim s1\p
+          s1\cresc s1\f s1\dim s1\p \break
         }
       }
       \new Staff = "down" {
index 6ddbd735e6d7bdabe6c8e9cbac86d2c03af0c2b9..cb2c168f27860ac5b90866fd8df9e896990398c8 100644 (file)
@@ -1,4 +1,4 @@
-\version "2.16.0"
+\version "2.19.2"
 \header {
 
   texidoc = "Symbols that need on-staffline info (like dots and ties)
@@ -11,6 +11,6 @@
 }
 \relative c' {
   \time 5/8
-  f4 ~ f
+  f4 ~ 4 
   f4 f4.
 }
index 16af1ecc73360957adad3a239d181f2658cbbdce..39b6716360ef8f7ed93e48caa42e7e42338b157f 100644 (file)
@@ -1,5 +1,5 @@
 
-\version "2.16.0"
+\version "2.19.2"
 
 \header{
 texidoc="
@@ -13,7 +13,7 @@ notes, and up for low notes.
     ragged-right = ##t
 }  
 \context Voice \relative c {
-    b''4 ~ b8(b8) e4 e,
+    b''4 ~ 8(b8) e4 e,
     
 }
 
index 27b68dbaca5edce3849cfe62604522850202053e..be67208185d11ce19c48dd0ed27df6042e9253b4 100644 (file)
@@ -1,4 +1,4 @@
-\version "2.16.0"
+\version "2.19.2"
 
 \header {
   texidoc = "In a TabStaff, the chord repetition function needs
@@ -8,7 +8,7 @@ on the main staff."
 }
 
 Guitar = \relative c' {
-  r8 < gis-6 cis-6 b-0 > ~ q4 q8 ~ q q4
+  r8 < gis-6 cis-6 b-0 > ~ q4 q8 ~ 8 q4
 }
 
 \score {
index 7fd2a30eefc847e9b16a8e7b805b7910bf6e77c0..0d08b705c57fce3aa97a80c372bcc06350ef1ed2 100644 (file)
@@ -1,4 +1,4 @@
-\version "2.17.30"
+\version "2.19.2"
 
 \header {
   texidoc = "In a TabStaff, the chord repetition function needs
@@ -11,7 +11,7 @@ music in the tabstaff, not affecting other contexts."
 \tabChordRepetition
 
 Guitar = \relative c' {
-  r8 < gis\4 cis\3 b\2 > ~ q4 q8 ~ q q4
+  r8 < gis\4 cis\3 b\2 > ~ q4 q8 ~ 8 q4
 }
 
 \score {
index 55f65479114b503269757d1ad1efbb42c0e6501c..eed3f35a5f790c0623246432027e37879d232884 100644 (file)
@@ -1,4 +1,4 @@
-\version "2.17.11"
+\version "2.19.2"
 
 \header{ texidoc = "As default, tablature staves show only the fret numbers, because
                     in most situations, they are combined with normal staves.
@@ -12,7 +12,7 @@ tabstuff = {
   c4^"test" d( e) |
   f4\f g a^\fermata |
   R2.*3 |
-  c8\<\( c16 c ~ c2\! |
+  c8\<\( c16 c ~ 2\! |
   \mark \default
   c'2.\) |
   \ottava #1
index 1425ed680710cf7be2f5b5daff30d5b0e368b24b..69d68c0fa9e0d94cce7b408f1c7d11777c2f4946 100644 (file)
@@ -1,4 +1,4 @@
-\version "2.17.20"
+\version "2.19.0"
 
 \header
 {
@@ -10,7 +10,8 @@ either automatic or manual beaming.
 
 guitarSolo = {
   \time 3/4
-  \set Timing.beamExceptions = #'((end . (((1 . 8) . (4 2)))))
+  \set Timing.beamExceptions =
+    \beamExceptions { 8[ 8 8 8] 8[ 8] }
   <<
     {bes'2( aes'8-. r)} \\
     {r8 cis(-\tag #'beam [ b f'-\tag #'beam ]) <d f'>-. r}
index a784576ee6d505fd5b80710d3f23da321dfc52c6..06b97dbd1b471ac484c6a7296aa72809a1f075fb 100644 (file)
@@ -1,4 +1,4 @@
-\version "2.17.30"
+\version "2.19.2"
 
 \header{ texidoc = "In tablature, notes that are tied to are invisible
                      except after a line break or within a second volta;
@@ -9,13 +9,13 @@
         }
 
 firstpart = \relative c {
-  f2 ~ f4  e
+  f2 ~   e
   g8 g ~ g g ~ g g~ g g ~
-  g1
+  1
 }
 
 secondpart = \relative c' {
-  c1 ~ \break c2 ~ c
+  c1 ~ \break c2 ~ 2
 }
 
 thirdpart = \relative c' {
index fd3346d7b8392855f9be3d52ad505632adfd97c5..d8f7b47b362c1a059370ad3f483deaa09a62de22 100644 (file)
@@ -1,4 +1,4 @@
-\version "2.16.0"
+\version "2.19.2"
 
 \header {
   texidoc = "
@@ -8,9 +8,9 @@ corresponding fret number is displayed in parentheses.
 }
 
 music = {
-  c'4 ~ c'4 ( d'2 ) |
-  c'4 ~ c'4 \glissando d'2 |
-  c'4 ~ c'4 d'2 |
+  c'4 ~ 4 ( d'2 ) |
+  c'4 ~ 4 \glissando d'2 |
+  c'4 ~ 4 d'2 |
   c'4 \glissando d'2. |
 }
 
index d9d62a0e0d702d5e6e5657fe8fe328ccdf96705b..2f581e12ad7ceade7f71538689896d4416efa74e 100644 (file)
@@ -1,4 +1,4 @@
-\version "2.17.6"
+\version "2.19.2"
 \header {
 
   texidoc = "The @code{\\removeWithTag} and @code{\\keepWithTag}
@@ -12,7 +12,7 @@ music =
 <<
   \tag #'flood \new Voice { \voiceOne \repeat unfold 16 { c'''8 cis'''8 } }
   \tag #'highball \new Voice { \voiceThree \repeat unfold 8 { a'4( as') } }
-  \tag #'buffoon \new Voice { \voiceFour \repeat unfold 2 { f1~ f } }
+  \tag #'buffoon \new Voice { \voiceFour \repeat unfold 2 { f1~ 1 } }
 >>
 
 demo =
index 147d78a160128ee79da74115e443227eb1b9595a..b6de95cc5b3a6a34567b480b989eb015757d7e11 100644 (file)
@@ -1,4 +1,4 @@
-\version "2.17.6"
+\version "2.19.2"
 \header {texidoc = "@cindex Tie, dotted, dashed
 The appearance of ties may be changed from solid to dotted or dashed.
 "
@@ -7,23 +7,23 @@ The appearance of ties may be changed from solid to dotted or dashed.
 
 
 \relative c'{
-  c2 ~ c |
+  c2 ~ 2 |
   \tieDotted
-  c2 ~ c |
+  c2 ~ 2 |
   \tieDashed
-  c2 ~ c |
+  c2 ~ 2 |
   \tieHalfDashed
-  c2 ~ c |
+  c2 ~ 2 |
   \tieHalfSolid
-  c2 ~ c |
+  c2 ~ 2 |
   \tieDashPattern #0.4 #2.0
-  c2 ~ c |
+  c2 ~ 2 |
   \once \override Tie.dash-definition = #'((0 0.25 1 1)
                                              (0.3 0.7 0.4 0.75)
                                              (0.75 1.0 1.0 1.0))
-  c2 ~ c |
+  c2 ~ 2 |
   \tieSolid
-  c2 ~ c |
+  c2 ~ 2 |
 }
 
 
index f595dc582e5ed966b77d5c632dc50e212774c839..57e098e72a67d6f802166d034cd6638f1976fc77 100644 (file)
@@ -3,14 +3,14 @@
   texidoc = "Ties avoid collisions with dots."
 }
 
-\version "2.16.0"
+\version "2.19.2"
 
 \paper { ragged-right = ##T }
 
 \relative c'' {
   \time 12/8
   d4*3/2~ d8[ e] r8
-  d4.~ d8 e f
+  d4.~ 8 e f
 }
 
 
index 3aa59a21e1cf8e2e3360d06a891b1e98192682b5..da27120371f97f241cd43286b1e6f8c0e9748adb 100644 (file)
@@ -1,5 +1,5 @@
 
-\version "2.16.0"
+\version "2.19.2"
 \header {
   texidoc = "Tying a grace to a following grace or main note works."
 }
@@ -7,7 +7,7 @@
 \layout { ragged-right= ##t }
 
 \context Voice \relative c'' {
-  c4 \grace { c8 ~ c16 ~ } c4 
+  c4 \grace { c8 ~ 16 ~ } c4 
 }
 
 
index 23df905a94c1dd5e5aea4b87facdc11c6f6f2970..e937c7c846bc81d8feac0a2ab3a118dcc6aa9443 100644 (file)
@@ -5,7 +5,7 @@ specifying their @code{direction} and/@/or @code{staff-position}."
   
 }
 
-\version "2.17.6"
+\version "2.19.2"
 
 \paper {
   ragged-right = ##t
@@ -13,12 +13,12 @@ specifying their @code{direction} and/@/or @code{staff-position}."
 
 {
   \override Tie.staff-position = #-5.5
-  c'4 ~ c'
+  c'4 ~ 4
   \override Tie.staff-position = #-6.5
-  c'4 ~ c'
+  c'4 ~ 4
   \override Tie.staff-position = #-7.5
-  c'4 ~ c'
+  c'4 ~ 4
   \revert Tie.staff-position
   \override Tie.direction = #UP
-  c'4 ~ c'
+  c'4 ~ 4
 }
index 7dcea62066aa3cfe1d9db8e74943b4323c027e53..59799a215c257d970e089e947f1884c510baa2bf 100644 (file)
@@ -22,12 +22,12 @@ that otherwise don't fit in a space
   ragged-right = ##t
 }
 
-\version "2.16.0"
+\version "2.19.2"
 
 frag =
 \relative c'' {
-  c16 c2...~ c16 ~ c2... |
-  c4~c8 c8~c16 c16~c32 c16.~[ c64]~ c64[ c8..] |
+  c16 c2...~ 16 ~ 2... |
+  c4~8 c8~16 c16~32 c16.~[ c64]~ 64[ c8..] |
 }
 
 
index 8e66e8a2a4e15b48ca82070ec44b76c815b90e40..77049bdf2ab3084e1a794b484fca8ba656af8492 100644 (file)
@@ -1,4 +1,4 @@
-\version "2.16.0"
+\version "2.19.2"
 #(ly:set-option 'warning-as-error #f)
 #(ly:expect-warning (_ "unterminated tie"))
 
@@ -8,7 +8,7 @@
 }
 
 \relative c' {
-  c1~ c |
+  c1~ 1 |
   c1~ <e c> |
   c1~ d |
   <c e>1~ c |
diff --git a/input/regression/time-signature-midmeasure.ly b/input/regression/time-signature-midmeasure.ly
new file mode 100644 (file)
index 0000000..10b5891
--- /dev/null
@@ -0,0 +1,28 @@
+\version "2.19.4"
+
+\header {
+  texidoc = "Time signature changes in midmeasure generate warnings,
+except in an anacrusis or when @code{ignoreBarChecks} is true.
+@code{measurePosition} is reset to 0, so a full measure follows, regardless
+of the original position.
+
+This example should end at bar 3, with no barline before the 2/4."
+}
+
+#(ly:expect-warning (_ "\\time in mid-measure at 1/4"))
+
+\score {
+  \relative {
+    \override Score.BarNumber.break-visibility = #all-visible
+    \partial 8 \time 2/4
+    a'8 | d4
+    \time 6/8 \partial 4.
+    cis8 b a | g4. \barNumberCheck 2
+    \set Timing.ignoreBarChecks = ##t
+    \time 12/8
+    fis4. e d
+    \time 2/4
+    \set Timing.ignoreBarChecks = ##f
+    a'2 | \barNumberCheck 3
+  }
+}
diff --git a/input/regression/tuplet-number-french-kneed-beams.ly b/input/regression/tuplet-number-french-kneed-beams.ly
new file mode 100644 (file)
index 0000000..a69ba52
--- /dev/null
@@ -0,0 +1,42 @@
+\version "2.19.3"
+
+\header {
+  texidoc = "Tuplet numbers are positioned correctly on kneed French-style beams."
+}
+
+\layout {
+  indent = 0
+  ragged-right = ##t
+}
+
+top = \change Staff = "1"
+bottom = \change Staff = "2"
+
+music =
+\relative c' {
+  \time 3/4
+  \override Beam.auto-knee-gap = 1
+  \override Stem.french-beaming = ##t
+  \override TupletBracket.bracket-visibility = ##f
+  \set subdivideBeams = ##t
+  \set baseMoment = #(ly:make-moment 1 8)
+  \tuplet 3/2 8 {
+    g16 e''' c e g,,, c
+    \bottom c,16. \top c''32 \bottom c,,16
+    \top c''16. \bottom c,,32 c,16
+  }
+  \tuplet 5/4 8 {
+    c'32 \top c''' \bottom c,,,, \top c''' \bottom c,,
+    \top c'''32 \bottom c,,,, \top c''' \bottom c,, \top c'''
+  }
+}
+
+\new PianoStaff <<
+  \new Staff = "1" {
+    \music
+  }
+  \new Staff = "2" {
+    \clef bass
+    s2.
+  }
+>>
diff --git a/input/regression/tuplet-number-kneed-beam-even-stem-count.ly b/input/regression/tuplet-number-kneed-beam-even-stem-count.ly
new file mode 100644 (file)
index 0000000..e66bc69
--- /dev/null
@@ -0,0 +1,31 @@
+\version "2.19.3"
+
+\header {
+  texidoc = "In tuplets with an even number of stems, the number
+may be placed on either side of the beam when the central stems
+point in different directions.  The exception to this is when
+there is a fractional beam on one of the central stems, in which
+case the number is placed opposite the partial beam."
+}
+
+\layout {
+  indent = 0
+  ragged-right = ##t
+}
+
+\relative c' {
+  \time 2/4
+  \override Beam.auto-knee-gap = 1
+  \tuplet 6/4 4 {
+    c16 c'' c,, c'' c,, c''
+    \once \override TupletNumber.direction = #UP
+    c,,16 c'' c,, c'' c,, c''
+  }
+  \time 6/16
+  \tuplet 4/3 8. {
+    c,,8. c''16
+    %% The following override has no effect:
+    \override TupletNumber.direction = #DOWN
+    c,,16 c''8.
+  }
+}
diff --git a/input/regression/tuplet-number-kneed-beam-horizontal-fit.ly b/input/regression/tuplet-number-kneed-beam-horizontal-fit.ly
new file mode 100644 (file)
index 0000000..21f17d1
--- /dev/null
@@ -0,0 +1,33 @@
+\version "2.19.3"
+
+\header {
+  texidoc = "Tuplet numbers are placed next to the beam unless there is
+insufficient horizontal space for them, in which case bracket-based
+positioning is used and a programming error is issued.
+
+The first tuplet number should be between stems; the second should be
+below the noteheads."
+}
+
+#(ly:expect-warning (_ "not enough space for tuplet number against beam"))
+#(ly:expect-warning (_ "not enough space for tuplet number against beam"))
+
+\layout {
+  indent = 0
+  ragged-right = ##t
+}
+
+\score {
+  \relative c' {
+    \time 2/4
+    \override Beam.auto-knee-gap = 1
+    \tuplet 6/4 4 {
+      \once \override TupletNumber.text =
+        #tuplet-number::calc-fraction-text
+      c16 c'' c,, c'' c,, c''
+      \once \override TupletNumber.text =
+        #(tuplet-number::fraction-with-notes "16" "16")
+      c,,16 c'' c,, c'' c,, c''
+    }
+  }
+}
diff --git a/input/regression/tuplet-number-kneed-beam-ledger-lines.ly b/input/regression/tuplet-number-kneed-beam-ledger-lines.ly
new file mode 100644 (file)
index 0000000..1ce4201
--- /dev/null
@@ -0,0 +1,25 @@
+\version "2.19.3"
+
+\header {
+  texidoc = "A tuplet number associated with a kneed beam is not placed between
+beam and staff where it may collide with ledger lines."
+}
+
+\layout {
+  indent = 0
+  ragged-right = ##t
+}
+
+\relative c'' {
+  \override Beam.auto-knee-gap = 1
+  \tuplet 3/2 4 {
+    c8 c''' cis,,,
+    c8 c'''' c,,,
+    c''8 c c,,
+    c,8 c,,, c'''
+    c,8 c,, c''
+    c,8 c,, c''
+    \override TupletNumber.font-size = 5
+    c,,8 c c''
+  }
+}
diff --git a/input/regression/tuplet-number-kneed-beam-positions.ly b/input/regression/tuplet-number-kneed-beam-positions.ly
new file mode 100644 (file)
index 0000000..3618ed2
--- /dev/null
@@ -0,0 +1,39 @@
+\version "2.19.4"
+
+\header {
+  texidoc = "Tuplet numbers are placed next to kneed beams when
+@code{Beam.positions} is overridden."
+}
+
+\layout {
+  indent = 0
+  ragged-right = ##t
+}
+
+top = \change Staff = "1"
+bottom = \change Staff = "2"
+
+music = \relative c {
+  \override Beam.auto-knee-gap = 1
+  \tuplet 3/2 4 {
+    c8 \top e'' \bottom g,,
+    \once \override Beam.positions = #'(4.5 . 4.5)
+    c,8 \top e'' \bottom g,,
+    \once \override Beam.positions = #'(-7.0 . -7.0)
+    \top e''8 \bottom c,, c,
+    \once \override Beam.positions = #'(-4.5 . -4.5)
+    \top e'''8 \bottom c,, c,
+  }
+}
+
+\score {
+  \new PianoStaff <<
+    \new Staff = "1" {
+      s1
+    }
+    \new Staff = "2" {
+      \clef bass
+      \music
+    }
+  >>
+}
diff --git a/input/regression/tuplet-number-shift-along-kneed-beam.ly b/input/regression/tuplet-number-shift-along-kneed-beam.ly
new file mode 100644 (file)
index 0000000..b951fa1
--- /dev/null
@@ -0,0 +1,23 @@
+\version "2.19.3"
+
+\header {
+  texidoc = "Tuplet numbers will maintain a constant distance from
+kneed beams when offset horizontally."
+}
+
+\layout {
+  indent = 0
+  ragged-right = ##f
+}
+
+\relative c' {
+  \tuplet 3/2 4 {
+    c8 g''' a
+    \once \offset X-offset 2 TupletNumber
+    c,,, g''' a
+    \once \offset X-offset #-2 TupletNumber
+    c,,, g''' a
+    \once \offset X-offset 6 TupletNumber
+    c,,, g''' a
+  }
+}
diff --git a/input/regression/tuplet-numbers-kneed-beams-accidentals.ly b/input/regression/tuplet-numbers-kneed-beams-accidentals.ly
new file mode 100644 (file)
index 0000000..c00f4e1
--- /dev/null
@@ -0,0 +1,38 @@
+\version "2.19.3"
+
+\header {
+  texidoc = "Tuplet numbers associated with kneed beams will
+avoid accidentals."
+}
+
+\layout {
+  indent = 0
+  ragged-right = ##t
+}
+
+top = \change Staff = "1"
+bottom = \change Staff = "2"
+
+music = \relative c {
+  \override Beam.auto-knee-gap = 1
+  \tuplet 5/4 4 {
+    c16[ \top g'' e' \bottom fis,, \top c']
+    e'16 \bottom g,, c, \top <eis' gis cis> \bottom g,
+  }
+  \tuplet 3/2 4 {
+    \top c8 c'' ceses,,
+    g'' g,, <aeses' ceses eses>
+  }
+}
+
+\score {
+  \new PianoStaff <<
+    \new Staff = "1" {
+      s1
+    }
+    \new Staff = "2" {
+      \clef bass
+      \music
+    }
+  >>
+}
diff --git a/input/regression/tuplet-numbers-kneed-beams.ly b/input/regression/tuplet-numbers-kneed-beams.ly
new file mode 100644 (file)
index 0000000..1286b20
--- /dev/null
@@ -0,0 +1,39 @@
+\version "2.19.3"
+
+\header {
+  texidoc = "Tuplet numbers are positioned next to kneed beams."
+}
+
+\layout {
+  indent = 0
+  ragged-right = ##t
+}
+
+top = \change Staff = "1"
+bottom = \change Staff = "2"
+
+music = \relative c {
+  \time 3/4
+  \override Beam.auto-knee-gap = 1
+  \tuplet 3/2 4 {
+    c8 g' \top e'
+    c'8 e, \bottom g,
+    \top e''8 \bottom c,, \top g''
+    g,8 e''' c,,
+    c''8 g,, e'
+    g,8 c''' e,,
+  }
+}
+
+\score {
+  \new PianoStaff <<
+    \new Staff = "1" {
+      s2.
+      s2.
+    }
+    \new Staff = "2" {
+      \clef bass
+      \music
+    }
+  >>
+}
index 92bab856430f9b76f6032893e8b5d198346e4594..45a9945dfd7f67e4f613014121f0cab9b9a05932 100644 (file)
@@ -8,7 +8,7 @@ heavily mutilated Edition Peters Morgenlied by Schubert"
 
 }
 
-\version "2.17.6"
+\version "2.19.2"
 #(ly:expect-warning (_ "(De)crescendo with unspecified starting volume in MIDI."))
 
 ignoreMelisma =        \set ignoreMelismata = ##t
@@ -47,7 +47,7 @@ melody =    \relative c'' \repeat volta 2 \context Voice = "singer" {
   \transpose a' e' \relative c'' { a16[ g fis! g] f![ d]  } |
   g4. r8 gis gis |
   a4 a16.[ b32] c8[( a]) fis8 |
-  g4.~ g8-\fermata
+  g4.~ 8-\fermata
 }
 
 
@@ -127,8 +127,8 @@ pianoLH =  \relative c'' \repeat volta 2\new Voice {
         } <<
           \context Staff \accidentalStyle modern
           \melody >>
-        \lyricsto "singer" \new Lyrics \firstVerse
-        \lyricsto "singer" \new Lyrics \secondVerse
+        \new Lyrics \lyricsto "singer" \firstVerse
+        \new Lyrics \lyricsto "singer" \secondVerse
         \new PianoStaff << 
           \set PianoStaff.instrumentName = \markup {
             \bold
diff --git a/input/regression/unset-once.ly b/input/regression/unset-once.ly
new file mode 100644 (file)
index 0000000..32fad55
--- /dev/null
@@ -0,0 +1,37 @@
+\version "2.17.15"
+
+\header {
+
+  texidoc = "@code{\\once \\unset} should change a context property
+value for just one timestep and then return to the previous value."
+
+}
+\relative c' {
+  \set fingeringOrientations = #'(left)
+  <e-1>1 |
+  \once \unset fingeringOrientations
+  <e-1>-"default" |
+  <e-1>-"left" |
+
+  \unset fingeringOrientations
+  <e-1>-"default" |
+  \once\unset fingeringOrientations
+  <e-1>-"default" |
+  <e-1>-"default" |
+  \set Score.fingeringOrientations = #'(right)
+  <e-1>-"right"
+  \once\unset fingeringOrientations
+  <e-1>-"right"
+  <e-1>-"right"
+  \once\set fingeringOrientations = #'(left)
+  <e-1>-"left"
+  <e-1>-"right"
+  \set fingeringOrientations = #'(left)
+  <e-1>-"left"
+  \once \unset fingeringOrientations
+  <e-1>-"right"
+  <e-1>-"left"
+  \unset fingeringOrientations
+  \set Score.fingeringOrientations = #'(up down)
+  <e-1>-"default"
+}
index ac525d27de59984baaf236d467f934f9c2236864..0845a66de2da907a2f424082ced7e8cd0a8e178c 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1997--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 1997--2014 Han-Wen Nienhuys <hanwen@xs4all.nl>
   Modified 2001--2002 by Rune Zedeler <rz@daimi.au.dk>
 
   LilyPond is free software: you can redistribute it and/or modify
@@ -99,7 +99,7 @@ public:
 };
 
 /*
-  localKeySignature is changed at runtime, which means that references
+  localAlterations is changed at runtime, which means that references
   in grobs should always store ly_deep_copy ()s of those.
 */
 
@@ -120,7 +120,7 @@ Accidental_engraver::update_local_key_signature (SCM new_sig)
 {
   last_keysig_ = new_sig;
   set_context_property_on_children (context (),
-                                    ly_symbol2scm ("localKeySignature"),
+                                    ly_symbol2scm ("localAlterations"),
                                     new_sig);
 
   Context *trans = context ()->get_parent_context ();
@@ -131,9 +131,9 @@ Accidental_engraver::update_local_key_signature (SCM new_sig)
   */
 
   SCM val;
-  while (trans && trans->where_defined (ly_symbol2scm ("localKeySignature"), &val) == trans)
+  while (trans && trans->where_defined (ly_symbol2scm ("localAlterations"), &val) == trans)
     {
-      trans->set_property ("localKeySignature", ly_deep_copy (last_keysig_));
+      trans->set_property ("localAlterations", ly_deep_copy (last_keysig_));
       trans = trans->get_parent_context ();
     }
 }
@@ -402,7 +402,7 @@ Accidental_engraver::stop_translation_timestep ()
 
       SCM localsig = SCM_EOL;
       while (origin
-             && origin->where_defined (ly_symbol2scm ("localKeySignature"), &localsig))
+             && origin->where_defined (ly_symbol2scm ("localAlterations"), &localsig))
         {
           bool change = false;
           if (accidentals_[i].tied_
@@ -429,7 +429,7 @@ Accidental_engraver::stop_translation_timestep ()
             }
 
           if (change)
-            origin->set_property ("localKeySignature", localsig);
+            origin->set_property ("localAlterations", localsig);
 
           origin = origin->get_parent_context ();
         }
@@ -498,7 +498,7 @@ Accidental_engraver::acknowledge_finger (Grob_info info)
 void
 Accidental_engraver::process_music ()
 {
-  SCM sig = get_property ("keySignature");
+  SCM sig = get_property ("keyAlterations");
   if (last_keysig_ != sig)
     update_local_key_signature (sig);
 }
@@ -530,9 +530,9 @@ ADD_TRANSLATOR (Accidental_engraver,
                 "extraNatural "
                 "harmonicAccidentals "
                 "accidentalGrouping "
-                "keySignature "
-                "localKeySignature ",
+                "keyAlterations "
+                "localAlterations ",
 
                 /* write */
-                "localKeySignature "
+                "localAlterations "
                );
index da23e5719498bfbc97222d4bc90890a2207ccaae..6fa61e967de6a74cf0e62cf89848bab3bbc1259a 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2002--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 2002--2014 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
@@ -418,7 +418,7 @@ position_apes (Grob *me,
         {
           Real mh = ape->horizontal_skylines_[d].max_height ();
           if (!isinf (mh))
-            width.add_point (mh);
+            width.add_point (mh + offset);
         }
 
       last_offset = offset;
index ce05dfff722f6ed9d7847714415000babf2538cb..dc3c873878f095709d4c7187bf37f30bcbbf0849 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2001--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 2001--2014 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
@@ -163,15 +163,17 @@ Accidental_interface::get_stencil (Grob *me)
   SCM alist = me->get_property ("glyph-name-alist");
   SCM alt = me->get_property ("alteration");
   SCM glyph_name = ly_assoc_get (alt, alist, SCM_BOOL_F);
+  Stencil mol;
 
   if (!scm_is_string (glyph_name))
     {
       me->warning (_f ("Could not find glyph-name for alteration %s",
                        ly_scm_write_string (alt).c_str ()));
-      return SCM_EOL;
+      mol = fm->find_by_name ("noteheads.s1cross");
     }
+  else
+    mol = fm->find_by_name (ly_scm2string (glyph_name));
 
-  Stencil mol (fm->find_by_name (ly_scm2string (glyph_name)));
   if (to_boolean (me->get_property ("restore-first")))
     {
       /*
index 8a2a8d9b819a4469f2b60c73f75f1d0899963d91..f9e0e06345187c2534cc69528d130e5bd40359fb 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2000--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 2000--2014 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
@@ -61,85 +61,73 @@ Align_interface::align_to_ideal_distances (SCM smob)
   return SCM_BOOL_T;
 }
 
-/* for each grob, find its upper and lower skylines. If the grob has
-   an empty extent, delete it from the list instead. If the extent is
-   non-empty but there is no skyline available (or pure is true), just
+/* Return upper and lower skylines for VerticalAxisGroup g. If the extent
+   is non-empty but there is no skyline available (or pure is true), just
    create a flat skyline from the bounding box */
 // TODO(jneem): the pure and non-pure parts seem to share very little
 // code. Split them into 2 functions, perhaps?
-static void
-get_skylines (Grob *me,
-              vector<Grob *> *const elements,
+static Skyline_pair
+get_skylines (Grob *g,
               Axis a,
-              bool pure, int start, int end,
-              vector<Skyline_pair> *const ret)
+              Grob *other_common,
+              bool pure, int start, int end)
 {
-  Grob *other_common = common_refpoint_of_array (*elements, me, other_axis (a));
+  Skyline_pair skylines;
 
-  for (vsize i = elements->size (); i--;)
+  if (!pure)
     {
-      Grob *g = (*elements)[i];
-      Skyline_pair skylines;
-
-      if (!pure)
-        {
-          Skyline_pair *skys = Skyline_pair::unsmob (g->get_property (a == Y_AXIS
-                                                                      ? "vertical-skylines"
-                                                                      : "horizontal-skylines"));
-          if (skys)
-            skylines = *skys;
-
-          /* This skyline was calculated relative to the grob g. In order to compare it to
-             skylines belonging to other grobs, we need to shift it so that it is relative
-             to the common reference. */
-          Real offset = g->relative_coordinate (other_common, other_axis (a));
-          skylines.shift (offset);
-        }
-      else
+      Skyline_pair *skys = Skyline_pair::unsmob (g->get_property (a == Y_AXIS
+                                                                  ? "vertical-skylines"
+                                                                  : "horizontal-skylines"));
+      if (skys)
+        skylines = *skys;
+
+      /* This skyline was calculated relative to the grob g. In order to compare it to
+         skylines belonging to other grobs, we need to shift it so that it is relative
+         to the common reference. */
+      Real offset = g->relative_coordinate (other_common, other_axis (a));
+      skylines.shift (offset);
+    }
+  else if (Hara_kiri_group_spanner::request_suicide (g, start, end))
+    return skylines;
+  else
+    {
+      assert (a == Y_AXIS);
+      Interval extent = g->pure_height (g, start, end);
+
+      // This is a hack to get better accuracy on the pure-height of VerticalAlignment.
+      // It's quite common for a treble clef to be the highest element of one system
+      // and for a low note (or lyrics) to be the lowest note on another. The two will
+      // never collide, but the pure-height stuff only works with bounding boxes, so it
+      // doesn't know that. The result is a significant over-estimation of the pure-height,
+      // especially on systems with many staves. To correct for this, we build a skyline
+      // in two parts: the part we did above contains most of the grobs (note-heads, etc.)
+      // while the bit we're about to do only contains the breakable grobs at the beginning
+      // of the system. This way, the tall treble clefs are only compared with the treble
+      // clefs of the other staff and they will be ignored if the staff above is, for example,
+      // lyrics.
+      if (Axis_group_interface::has_interface (g))
         {
-          assert (a == Y_AXIS);
-          Interval extent = g->pure_height (g, start, end);
-
-          // This is a hack to get better accuracy on the pure-height of VerticalAlignment.
-          // It's quite common for a treble clef to be the highest element of one system
-          // and for a low note (or lyrics) to be the lowest note on another. The two will
-          // never collide, but the pure-height stuff only works with bounding boxes, so it
-          // doesn't know that. The result is a significant over-estimation of the pure-height,
-          // especially on systems with many staves. To correct for this, we build a skyline
-          // in two parts: the part we did above contains most of the grobs (note-heads, etc.)
-          // while the bit we're about to do only contains the breakable grobs at the beginning
-          // of the system. This way, the tall treble clefs are only compared with the treble
-          // clefs of the other staff and they will be ignored if the staff above is, for example,
-          // lyrics.
-          if (Axis_group_interface::has_interface (g)
-              && !Hara_kiri_group_spanner::request_suicide (g, start, end))
-            {
-              extent = Axis_group_interface::rest_of_line_pure_height (g, start, end);
-              Interval begin_of_line_extent = Axis_group_interface::begin_of_line_pure_height (g, start);
-              if (!begin_of_line_extent.is_empty ())
-                {
-                  Box b;
-                  b[a] = begin_of_line_extent;
-                  b[other_axis (a)] = Interval (-infinity_f, -1);
-                  skylines.insert (b, other_axis (a));
-                }
-            }
-
-          if (!extent.is_empty ())
+          extent = Axis_group_interface::rest_of_line_pure_height (g, start, end);
+          Interval begin_of_line_extent = Axis_group_interface::begin_of_line_pure_height (g, start);
+          if (!begin_of_line_extent.is_empty ())
             {
               Box b;
-              b[a] = extent;
-              b[other_axis (a)] = Interval (0, infinity_f);
+              b[a] = begin_of_line_extent;
+              b[other_axis (a)] = Interval (-infinity_f, -1);
               skylines.insert (b, other_axis (a));
             }
         }
 
-      if (skylines.is_empty ())
-        elements->erase (elements->begin () + i);
-      else
-        ret->push_back (skylines);
+      if (!extent.is_empty ())
+        {
+          Box b;
+          b[a] = extent;
+          b[other_axis (a)] = Interval (0, infinity_f);
+          skylines.insert (b, other_axis (a));
+        }
     }
-  reverse (*ret);
+  return skylines;
 }
 
 vector<Real>
@@ -177,7 +165,7 @@ Align_interface::get_minimum_translations_without_min_dist (Grob *me,
 //   else centered dynamics will break when there is a fixed alignment).
 vector<Real>
 Align_interface::internal_get_minimum_translations (Grob *me,
-                                                    vector<Grob *> const &all_grobs,
+                                                    vector<Grob *> const &elems,
                                                     Axis a,
                                                     bool include_fixed_spacing,
                                                     bool pure, int start, int end)
@@ -204,15 +192,14 @@ Align_interface::internal_get_minimum_translations (Grob *me,
 
   Direction stacking_dir = robust_scm2dir (me->get_property ("stacking-dir"),
                                            DOWN);
-  vector<Grob *> elems (all_grobs); // writable copy
-  vector<Skyline_pair> skylines;
 
-  get_skylines (me, &elems, a, pure, start, end, &skylines);
+  Grob *other_common = common_refpoint_of_array (elems, me, other_axis (a));
 
   Real where = 0;
   Real default_padding = robust_scm2double (me->get_property ("padding"), 0.0);
   vector<Real> translates;
   Skyline down_skyline (stacking_dir);
+  Grob *last_nonempty_element = 0;
   Real last_spaceable_element_pos = 0;
   Grob *last_spaceable_element = 0;
   Skyline last_spaceable_skyline (stacking_dir);
@@ -222,14 +209,26 @@ Align_interface::internal_get_minimum_translations (Grob *me,
       Real dy = 0;
       Real padding = default_padding;
 
-      if (j == 0)
-        dy = skylines[j][-stacking_dir].max_height () + padding;
+      Skyline_pair skyline = get_skylines (elems[j], a, other_common, pure, start, end);
+
+      if (skyline.is_empty ())
+        {
+          translates.push_back (where);
+          continue;
+        }
+
+      if (!last_nonempty_element)
+        {
+          dy = skyline[-stacking_dir].max_height () + padding;
+          for (vsize k = j; k-- > 0;)
+            translates[k] = stacking_dir * dy;
+        }
       else
         {
-          SCM spec = Page_layout_problem::get_spacing_spec (elems[j - 1], elems[j], pure, start, end);
+          SCM spec = Page_layout_problem::get_spacing_spec (last_nonempty_element, elems[j], pure, start, end);
           Page_layout_problem::read_spacing_spec (spec, &padding, ly_symbol2scm ("padding"));
 
-          dy = down_skyline.distance (skylines[j][-stacking_dir]) + padding;
+          dy = down_skyline.distance (skyline[-stacking_dir]) + padding;
 
           Real spec_distance = 0;
           if (Page_layout_problem::read_spacing_spec (spec, &spec_distance, ly_symbol2scm ("minimum-distance")))
@@ -249,7 +248,7 @@ Align_interface::internal_get_minimum_translations (Grob *me,
               Page_layout_problem::read_spacing_spec (spec,
                                                       &spaceable_padding,
                                                       ly_symbol2scm ("padding"));
-              dy = max (dy, (last_spaceable_skyline.distance (skylines[j][-stacking_dir])
+              dy = max (dy, (last_spaceable_skyline.distance (skyline[-stacking_dir])
                              + stacking_dir * (last_spaceable_element_pos - where) + spaceable_padding));
 
               Real spaceable_min_distance = 0;
@@ -263,12 +262,9 @@ Align_interface::internal_get_minimum_translations (Grob *me,
             }
         }
 
-      if (isinf (dy)) /* if the skyline is empty, maybe max_height is infinity_f */
-        dy = 0.0;
-
       dy = max (0.0, dy);
       down_skyline.raise (-stacking_dir * dy);
-      down_skyline.merge (skylines[j][stacking_dir]);
+      down_skyline.merge (skyline[stacking_dir]);
       where += stacking_dir * dy;
       translates.push_back (where);
 
@@ -279,32 +275,18 @@ Align_interface::internal_get_minimum_translations (Grob *me,
           last_spaceable_element_pos = where;
           last_spaceable_skyline = down_skyline;
         }
-    }
-
-  // So far, we've computed the translates for all the non-empty elements.
-  // Here, we set the translates for the empty elements: an empty element
-  // gets the same translation as the last non-empty element before it.
-  vector<Real> all_translates;
-  if (!translates.empty ())
-    {
-      Real w = translates[0];
-      for (vsize i = 0, j = 0; j < all_grobs.size (); j++)
-        {
-          if (i < elems.size () && all_grobs[j] == elems[i])
-            w = translates[i++];
-          all_translates.push_back (w);
-        }
+      last_nonempty_element = elems[j];
     }
 
   if (pure)
     {
       SCM mta = me->get_property ("minimum-translations-alist");
       mta = scm_cons (scm_cons (scm_cons (scm_from_int (start), scm_from_int (end)),
-                                ly_floatvector2scm (all_translates)),
+                                ly_floatvector2scm (translates)),
                       mta);
       me->set_property ("minimum-translations-alist", mta);
     }
-  return all_translates;
+  return translates;
 }
 
 void
index aef6be4745b87412f88562919db45ef199ecf080..354a2b10d85a8e11130b785b2f30c3db2dc92a50 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2007--2012 Han-Wen Nienhuys <hanwen@lilypond.org>
+  Copyright (C) 2007--2014 Han-Wen Nienhuys <hanwen@lilypond.org>
 
 
   LilyPond is free software: you can redistribute it and/or modify
index cf0d4e90860d79d8268fdd463ed4bf717a3953d9..42b405e11bd44acd2ac74da382ea00992d406252 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1999--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 1999--2014 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
index 99d3f8a3350ce2eee60f67635b3fe8476a472225..f904b877e0baf270d5926f7d3d0ab59fea8eee5b 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2002--2012 Juergen Reuter <reuter@ipd.uka.de>
+  Copyright (C) 2002--2014 Juergen Reuter <reuter@ipd.uka.de>
 
   Han-Wen Nienhuys <hanwen@xs4all.nl
 
@@ -126,7 +126,7 @@ Ambitus_engraver::stop_translation_timestep ()
       int offset = robust_scm2int (get_property ("middleCOffset"), 0);
 
       start_c0_ = clef_pos + offset;
-      start_key_sig_ = get_property ("keySignature");
+      start_key_sig_ = get_property ("keyAlterations");
 
       is_typeset_ = true;
     }
@@ -230,7 +230,7 @@ ADD_TRANSLATOR (Ambitus_engraver,
                 "AmbitusNoteHead ",
 
                 /* read */
-                "keySignature "
+                "keyAlterations "
                 "middleCClefPosition "
                 "middleCOffset ",
 
index 832d74ce1a3795d84f5af172a0b99d3be03ed61b..163eb8f18526a9ce93633033b7beb0658cd09ce1 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2004--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 2004--2014 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
index 2a6d3771d79ac364584aac5c0ff778eac8f9db8c..d2d1ed67b458a21b9a5890f4c738eab4982c6238 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2000--2012 Jan Nieuwenhuizen <janneke@gnu.org>
+  Copyright (C) 2000--2014 Jan Nieuwenhuizen <janneke@gnu.org>
 
   LilyPond is free software: you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
index 018d9cd22df116282bbaff4ef63d62355ebeb195..0d5c36661c2e85d15dedbfc1e70ba51d75219d09 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2000--2012 Jan Nieuwenhuizen <janneke@gnu.org>
+  Copyright (C) 2000--2014 Jan Nieuwenhuizen <janneke@gnu.org>
 
   LilyPond is free software: you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
@@ -163,7 +163,7 @@ Arpeggio::print (SCM smob)
   if (dir)
     {
       Font_metric *fm = Font_interface::get_default_font (me);
-      arrow = fm->find_by_name ("scripts.arpeggio.arrow." + to_string (dir));
+      arrow = fm->find_by_name ("scripts.arpeggio.arrow." + ::to_string (dir));
       heads[dir] -= dir * arrow.extent (Y_AXIS).length ();
     }
 
index 90344949656a7d01d9d06e72c2c3ff5e6e196ee4..164e8e7fa2fa4bb985b20e4a00c2c89f1756d01c 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2010--2012 Carl Sorensen <c_sorensen@byu.edu>
+  Copyright (C) 2010--2014 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
index 64203fd93706a2be02708cf63f77d52427500a8c..60cfe593cf6a06dd2f4b442eac3741810be1d9fa 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1997--2012 Jan Nieuwenhuizen <janneke@gnu.org>
+  Copyright (C) 1997--2014 Jan Nieuwenhuizen <janneke@gnu.org>
 
   LilyPond is free software: you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
index 85a74cccaf47957cb4cf347c03e1b839812939e1..59d34413310acc5532965ed15f743bc712983676 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1997--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 1997--2014 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
index 21105a1eb7ffebca4ebf20329c79e1cafb0e920b..a036100c26e5da5bf710169a692e5721acba3eb4 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1997--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 1997--2014 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
index a41357b28f296239350e38e770af2c01b7df7d21..8204d45d1cb85ed498d0d78feefbb867999832c7 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1997--2012 Jan Nieuwenhuizen <janneke@gnu.org>
+  Copyright (C) 1997--2014 Jan Nieuwenhuizen <janneke@gnu.org>
 
   LilyPond is free software: you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
@@ -44,11 +44,13 @@ Audio_item::Audio_item ()
 {
 }
 
-Audio_note::Audio_note (Pitch p, Moment m, bool tie_event, Pitch transposing)
+Audio_note::Audio_note (Pitch p, Moment m, bool tie_event, Pitch transposing,
+                        int velocity)
   : pitch_ (p),
     length_mom_ (m),
     transposing_ (transposing),
     dynamic_ (0),
+    extra_velocity_ (velocity),
     tied_ (0),
     tie_event_ (tie_event)
 {
index 1877464f4546ee1a8f7c7937a1f63faaa7d4c264..aaab0cf756a3f732bc79ebf1dbbd9a9ba5c2969e 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1997--2012 Jan Nieuwenhuizen <janneke@gnu.org>
+  Copyright (C) 1997--2014 Jan Nieuwenhuizen <janneke@gnu.org>
 
   LilyPond is free software: you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
@@ -35,11 +35,11 @@ Audio_staff::Audio_staff ()
 }
 
 void
-Audio_staff::output (Midi_stream &midi_stream, int track, bool port)
+Audio_staff::output (Midi_stream &midi_stream, int track, bool port, int start_tick)
 {
   Midi_track midi_track (track, port);
 
-  Midi_walker i (this, &midi_track);
+  Midi_walker i (this, &midi_track, start_tick);
   for (; i.ok (); i++)
     i.process ();
 
index b5c7f88ce6f7ecf782f7d2511ce83f25a3a506a6..8b55b44521d6b11fcbe94e110bb0fdd9aa22ed22 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1999--2012 Jan Nieuwenhuizen <janneke@gnu.org>
+  Copyright (C) 1999--2014 Jan Nieuwenhuizen <janneke@gnu.org>
 
   LilyPond is free software: you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
index 1efa379e9d2cc2194e57c97756a7e932ad0466c3..9dcd9993bc193b9d81d6e1fb9eafa05d7b3e1b02 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1999--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 1999--2014 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
index 295ba8b403284ec2d270dfc0435f27c0b855b01d..0b491eefc93f3ce689edcd76475db8d430f4bffa 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1999--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 1999--2014 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
index 68b3dd3746fcf97ebd33d826dfbdc327dc0b2680..ec89e8337cbda15e93de3deffa06d99c30a1cace 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2005--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 2005--2014 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
index 1e945f2f9ec8e58f768dc0ae50932e4f450b70e3..af3ddcb8a310b181e910845d7349e0610bf69f8d 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2000--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 2000--2014 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
@@ -1046,7 +1046,6 @@ ADD_INTERFACE (Axis_group_interface,
                "nonstaff-nonstaff-spacing "
                "nonstaff-relatedstaff-spacing "
                "nonstaff-unrelatedstaff-spacing "
-               "outside-staff-placement-directive "
                "pure-relevant-grobs "
                "pure-relevant-items "
                "pure-relevant-spanners "
@@ -1055,7 +1054,6 @@ ADD_INTERFACE (Axis_group_interface,
                "staff-grouper "
                "staff-staff-spacing "
                "system-Y-offset "
-               "vertical-skyline-elements "
                "X-common "
                "Y-common "
               );
index 4899ab7c50495b8cdb343db439590b8aefbe441b..8c50d2c0a4c35bcd28d16078a8f79f688d56a3f8 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2006--2012 Han-Wen Nienhuys <hanwen@lilypond.org>
+  Copyright (C) 2006--2014 Han-Wen Nienhuys <hanwen@lilypond.org>
 
   LilyPond is free software: you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
index d323121b3e1f1e5bde93b465a6dfb9e1d328664a..ec44f80b378009e991fa1a2e0612f39e6ccac4fb 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2004--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 2004--2014 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
index a0fb8eaee17391231734a889ce2ec7e480615c98..e4d26f8a1a3db33a2f359c9d196c517a361e1a02 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2001--2012  Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 2001--2014  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
index cf217be3b08efbb2baa9e5b949d361f9c38f00a6..b99de3811e0f3bb07029a3c7735f896093bb3163 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1997--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 1997--2014 Han-Wen Nienhuys <hanwen@xs4all.nl>
   Jan Nieuwenhuizen <janneke@gnu.org>
 
   LilyPond is free software: you can redistribute it and/or modify
index fe4406956c2e9b5a531a8d71f86a3f083c80c536..ab6f7f7281f199aac0d002944bc45b68cac25096 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1997--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 1997--2014 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
index f2c287c6291b624ff8b5da892056bcabd079154e..7b6af94f5f205768a4102256c7eba33d37387f7a 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1997--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 1997--2014 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
index 9771799c18338a60d7fc4be6c39edaf698ea8020..35ef3e315184ea06aff9ee872a4a5811bfc73cac 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2011--2012 Mike Solomon <mike@mikesolomon.org>
+  Copyright (C) 2011--2014 Mike Solomon <mike@mikesolomon.org>
 
   LilyPond is free software: you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
index 846e4a245c6d772cb7ec5097fbfe80a626bf33a0..2672a3aff4d091be5af7061073a8b51393eccf76 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1998--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 1998--2014 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
index d723d7a81c864369d2b4272d90620294f74fc31a..15c1872bf95ccd1f280ce9b47d4993d411a64c6e 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1996--2012 Jan Nieuwenhuizen <janneke@gnu.org>
+  Copyright (C) 1996--2014 Jan Nieuwenhuizen <janneke@gnu.org>
 
   LilyPond is free software: you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
index c590802675f8ac188a0c8e6e0df03f5e09a0aed4..b5cf0a2fc0ed359d77132bd67b61374fe0f6e7e1 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1997--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 1997--2014 Han-Wen Nienhuys <hanwen@xs4all.nl>
   Jan Nieuwenhuizen <janneke@gnu.org>
 
   LilyPond is free software: you can redistribute it and/or modify
index fbd158aeca8a33a442f2ece1f15f3990764bd7e2..48d2be1e6e5c6de1be48262ee18d2c29dd13197b 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1997--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 1997--2014 Han-Wen Nienhuys <hanwen@xs4all.nl>
   Jan Nieuwenhuizen <janneke@gnu.org>
 
   LilyPond is free software: you can redistribute it and/or modify
index 088cdc1a65663ccdf907cb18afe26aa48c46c1a4..4415debf98677e04888299dde09e760479b57245 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1999--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 1999--2014 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
index d7ff790ae4a345e46f5fdc28b6e41a1efaf3c15f..341353deb802331fa2ab935b40377f010ae19a8f 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2006--2012 Han-Wen Nienhuys
+  Copyright (C) 2006--2014 Han-Wen Nienhuys
 
   LilyPond is free software: you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
index 9252e288f5ef39d486d5b354dce9a02569fc6fef..967ee36e7228deece28508f893722b6303bc22a6 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1998--2012 Jan Nieuwenhuizen <janneke@gnu.org>
+  Copyright (C) 1998--2014 Jan Nieuwenhuizen <janneke@gnu.org>
 
   LilyPond is free software: you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
index d9267124037f329b37c6a9d2c7a5e68ad521fcfe..7d3ad6af14fff2d8d2a24267f6fc9e9b729dff6b 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1998--2012 Jan Nieuwenhuizen <janneke@gnu.org>
+  Copyright (C) 1998--2014 Jan Nieuwenhuizen <janneke@gnu.org>
 
   LilyPond is free software: you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
index ae505af3184b422f4c34ff9308f984b35acc4f19..9cf9d2281f0359843d3f21bb564f5448e9907af6 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2004--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 2004--2014 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
index 8e19823699f193cdda799d82789d3a1c66eac086..e52da05c93336195baa7014851208eb47016e660 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1997--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 1997--2014 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
index df5ccb75b2649c2e547b976b129ba78cbc5aee0a..68d53b39f69b73e2cf5c783ea96795c552ee3e47 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1996--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 1996--2014 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
index 167f59de843cb95b714c773cae891baee91a4065..1013ac6e7be4b9a2b164f76dfd7e6c62f1a87145 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1999--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 1999--2014 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
index 8e231cf27179fd9511940c02851f9c8134c1f8fc..79f215623f8617dd1a98dd59804033e0f03af29b 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1997--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 1997--2014 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
index a0f03f753cc5b9d873223b9bb61537b3383dd513..75053c34fd00ebe243eb32d23ece6b987b201c17 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2001--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 2001--2014 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
index ff646845462f6543954d89958d9b4c8425ff0eb7..c4a7340adbea55603079262c74a0b1f2aa46c077 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1999--2012 Michael Krause
+  Copyright (C) 1999--2014 Michael Krause
 
   written for the GNU LilyPond music typesetter
 
index e568e358e9ce14071e3970f56e64f188e0f6a3b8..9abe9fe98dfd5eb03a3d67144ff33773b7693892 100644 (file)
@@ -1,8 +1,8 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1999--2012 Michael Krause
-  Extensions for ancient notation (c) 2003--2012 by Juergen Reuter
+  Copyright (C) 1999--2014 Michael Krause
+  Extensions for ancient notation (c) 2003--2014 by Juergen Reuter
 
   LilyPond is free software: you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
index aa505f9fe104f83eee797770447e15fa10fc08c9..631a3333983df6ff641e277dece3ece928629973 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1997--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 1997--2014 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
index 26b4a607bb13bb39fbcd6954da896ab293161625..0057176a9f761c5f6bce9bc17ff419d2a3459c46 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1998--2012 Jan Nieuwenhuizen <janneke@gnu.org>
+  Copyright (C) 1998--2014 Jan Nieuwenhuizen <janneke@gnu.org>
 
   LilyPond is free software: you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
@@ -39,14 +39,12 @@ protected:
   void stop_translation_timestep ();
   void process_music ();
   virtual void finalize ();
-  virtual void derived_mark () const;
   DECLARE_TRANSLATOR_LISTENER (note);
   DECLARE_TRANSLATOR_LISTENER (rest);
 private:
   Item *chord_name_;
   vector<Stream_event *> notes_;
 
-  SCM last_chord_;
   Stream_event *rest_event_;
 };
 
@@ -55,16 +53,9 @@ Chord_name_engraver::finalize ()
 {
 }
 
-void
-Chord_name_engraver::derived_mark () const
-{
-  scm_gc_mark (last_chord_);
-}
-
 Chord_name_engraver::Chord_name_engraver ()
 {
   chord_name_ = 0;
-  last_chord_ = SCM_EOL;
   rest_event_ = 0;
 }
 
@@ -148,11 +139,12 @@ Chord_name_engraver::process_music ()
     markup = maybe_markup;
 
   SCM chord_changes = get_property ("chordChanges");
-  if (to_boolean (chord_changes) && scm_is_pair (last_chord_)
-      && ly_is_equal (markup, last_chord_))
+  SCM last_chord = get_property ("lastChord");
+  if (to_boolean (chord_changes) && scm_is_pair (last_chord)
+      && ly_is_equal (markup, last_chord))
     chord_name_->set_property ("begin-of-line-visible", SCM_BOOL_T);
 
-  last_chord_ = markup;
+  context ()->set_property ("lastChord", markup);
 }
 
 IMPLEMENT_TRANSLATOR_LISTENER (Chord_name_engraver, note);
@@ -195,9 +187,10 @@ ADD_TRANSLATOR (Chord_name_engraver,
                 "chordNoteNamer "
                 "chordRootNamer "
                 "chordNameExceptions "
+                "lastChord "
                 "majorSevenSymbol "
                 "noChordSymbol ",
 
                 /* write */
-                ""
+                "lastChord "
                );
index 9d400a5da5b3ded68c72fc4331e7aebac0784336..21cbcbf4c2c5d9c4cf861dfae0385a077a5db642 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1999--2012 Jan Nieuwenhuizen <janneke@gnu.org>
+  Copyright (C) 1999--2014 Jan Nieuwenhuizen <janneke@gnu.org>
 
   LilyPond is free software: you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
index fd4199527a9c4a27187886690e5293741e1a767f..0e7d79525f4c47027be0e5780e37d129769065d6 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2000--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 2000--2014 Han-Wen Nienhuys <hanwen@xs4all.nl>
                  Erik Sandberg <mandolaerik@gmail.com>
 
   LilyPond is free software: you can redistribute it and/or modify
index 06a201f93729d34cb1744cb138a261ee5e706600..f73e846bcf01ed1250a8467905305f8b5d34f11c 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2000--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 2000--2014 Han-Wen Nienhuys <hanwen@xs4all.nl>
                  Erik Sandberg <mandolaerik@gmail.com>
 
   LilyPond is free software: you can redistribute it and/or modify
@@ -20,9 +20,6 @@
 
 #include "chord-tremolo-iterator.hh"
 
-#include "input.hh"
-#include "international.hh"
-#include "misc.hh"
 #include "repeated-music.hh"
 
 Chord_tremolo_iterator::Chord_tremolo_iterator ()
@@ -33,39 +30,8 @@ SCM
 Chord_tremolo_iterator::get_music_list () const
 {
   Music *mus = get_music ();
-  Input *origin = mus->origin ();
-  Music *body = Repeated_music::body (mus);
-  bool body_is_sequential = body->is_mus_type ("sequential-music");
-
-  int elt_count = body_is_sequential ? scm_ilength (body->get_property ("elements")) : 1;
-
-  if (elt_count <= 0)
-    elt_count = 1;
-
-  if (elt_count == 1)
-    {
-      Music *ev = make_music_by_name (ly_symbol2scm ("TremoloEvent"));
-      ev->set_spot (*origin);
-      ev->set_property ("repeat-count", mus->get_property ("repeat-count"));
-      ev->set_property ("tremolo-type", mus->get_property ("tremolo-type"));
-      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);
-      SCM stop_event_scm = scm_call_2 (ly_lily_module_constant ("make-span-event"), tremolo_symbol, scm_from_int (STOP));
-
-      Music *start_event = unsmob_music (start_event_scm);
-      Music *stop_event = unsmob_music (stop_event_scm);
-      start_event->set_spot (*origin);
-      stop_event->set_spot (*origin);
-      start_event->set_property ("repeat-count", mus->get_property ("repeat-count"));
-      start_event->set_property ("tremolo-type", mus->get_property ("tremolo-type"));
-
-      return scm_list_3 (start_event_scm, body->self_scm (), stop_event_scm);
-    }
+  SCM proc = ly_lily_module_constant ("tremolo::get-music-list");
+  return scm_call_1 (proc, mus->self_scm ());
 }
 
 IMPLEMENT_CTOR_CALLBACK (Chord_tremolo_iterator);
index 9e2a3eaa7f82c9255f4fd3105240dbf4bbf89cc3..6e16d7fde8cf5af036e0880942cb07391493d8ad 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1997--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 1997--2014 Han-Wen Nienhuys <hanwen@xs4all.nl>
   Mats Bengtsson <matsb@s3.kth.se>
 
   LilyPond is free software: you can redistribute it and/or modify
index b58bef99871b15efeccf97dffba8095aa203fc3f..df84074f3af060fbfe970c58fdd358739e9a81f9 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1997--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 1997--2014 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
index 650ce2ba35e1b029ddf114b2d081fddb73461601..0f55248a1beba22cbaeb96de4183132125b4a83d 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2002--2012 Juergen Reuter <reuter@ipd.uka.de>
+  Copyright (C) 2002--2014 Juergen Reuter <reuter@ipd.uka.de>
   Han-Wen Nienhuys <hanwen@xs4all.nl>
 
   LilyPond is free software: you can redistribute it and/or modify
index ac0abc9c74482b6709c773668d727fac2e0c9785..dd16799683e8e2362ee6afa44aaa13236189104d 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2002--2012 Juergen Reuter <reuter@ipd.uka.de>
+  Copyright (C) 2002--2014 Juergen Reuter <reuter@ipd.uka.de>
   Han-Wen Nienhuys <hanwen@xs4all.nl>
 
   LilyPond is free software: you can redistribute it and/or modify
index 3e2915e719674c28021273dad98233b09363c9b2..ea535a3237335f37051b5625ed0b973d39263887 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2003--2012 Juergen Reuter <reuter@ipd.uka.de>
+  Copyright (C) 2003--2014 Juergen Reuter <reuter@ipd.uka.de>
 
   LilyPond is free software: you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
index 4b4d91f2bab0dc5b23500eebbb19042ec2be51b2..a59a35709885e1e0c13968a631a4f1f00e90c203 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1997--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 1997--2014 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
index a5b5c65fb2faaa037704eb0130bffb19ed1a79c7..caaf0895b30688e1e07097d027b26022069df95a 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1997--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 1997--2014 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
index 52a7d6c0bd4d0a64db0fb6610a889c313f9c0781..4192b58be1a9f12696aa2faa8b9f284bdf0e5445 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1997--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 1997--2014 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
@@ -117,6 +117,12 @@ Completion_heads_engraver::next_moment (Rational const &note_len)
     }
 
   Moment result = *l - *e;
+  if (result < 0)
+    {
+      programming_error ("invalid measure position: "
+                         + e->to_string () + " of " + l->to_string ());
+      return 0;
+    }
   Moment const *unit = unsmob_moment (get_property ("completionUnit"));
 
   if (unit)
@@ -188,25 +194,24 @@ Completion_heads_engraver::process_music ()
         note that note_dur may be strictly less than left_to_do_
         (say, if left_to_do_ == 5/8)
       */
-      if (factor_.denominator () == 1 && factor_ > Rational (1, 1))
-        note_dur = Duration (left_to_do_, false);
-      else
-        note_dur = Duration (left_to_do_ / factor_, false).compressed (factor_);
+      note_dur = Duration (left_to_do_ / factor_, false).compressed (factor_);
     }
   else
     {
       orig = unsmob_duration (note_events_[0]->get_property ("duration"));
       note_dur = *orig;
-      factor_ = note_dur.factor ();
+      SCM factor = get_property ("completionFactor");
+      if (ly_is_procedure (factor))
+        factor = scm_call_2 (factor,
+                             context ()->self_scm (),
+                             note_dur.smobbed_copy ());
+      factor_ = robust_scm2rational (factor, note_dur.factor ());
       left_to_do_ = orig->get_length ();
     }
   Moment nb = next_moment (note_dur.get_length ());
   if (nb.main_part_ && nb < note_dur.get_length ())
     {
-      if (factor_.denominator () == 1 && factor_.numerator () > 1)
-        note_dur = Duration (nb.main_part_, false);
-      else
-        note_dur = Duration (nb.main_part_ / factor_, false).compressed (factor_);
+      note_dur = Duration (nb.main_part_ / factor_, false).compressed (factor_);
     }
 
   do_nothing_until_ = now.main_part_ + note_dur.get_length ();
@@ -314,6 +319,7 @@ ADD_TRANSLATOR (Completion_heads_engraver,
                 "TieColumn ",
 
                 /* read */
+                "completionFactor "
                 "completionUnit "
                 "measureLength "
                 "measurePosition "
index 61255226eac4eb53b385f1eadbde873507199bdd..56e11a5d1df0e2185b12e49329f917a74f56fa88 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1997--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 1997--2014 Han-Wen Nienhuys <hanwen@xs4all.nl>
                            Jan Nieuwenhuizen <janneke@gnu.org>
 
   LilyPond is free software: you can redistribute it and/or modify
@@ -184,25 +184,24 @@ Completion_rest_engraver::process_music ()
         note that rest_dur may be strictly less than left_to_do_
         (say, if left_to_do_ == 5/8)
       */
-      if (factor_.denominator () == 1 && factor_ > Rational (1, 1))
-        rest_dur = Duration (left_to_do_, false);
-      else
-        rest_dur = Duration (left_to_do_ / factor_, false).compressed (factor_);
+      rest_dur = Duration (left_to_do_ / factor_, false).compressed (factor_);
     }
   else
     {
       orig = unsmob_duration (rest_events_[0]->get_property ("duration"));
       rest_dur = *orig;
-      factor_ = rest_dur.factor ();
+      SCM factor = get_property ("completionFactor");
+      if (ly_is_procedure (factor))
+        factor = scm_call_2 (factor,
+                             context ()->self_scm (),
+                             rest_dur.smobbed_copy ());
+      factor_ = robust_scm2rational (factor, rest_dur.factor());
       left_to_do_ = orig->get_length ();
     }
   Moment nb = next_moment (rest_dur.get_length ());
   if (nb.main_part_ && nb < rest_dur.get_length ())
     {
-      if (factor_.denominator () == 1 && factor_.numerator () > 1)
-        rest_dur = Duration (nb.main_part_, false);
-      else
-        rest_dur = Duration (nb.main_part_ / factor_, false).compressed (factor_);
+      rest_dur = Duration (nb.main_part_ / factor_, false).compressed (factor_);
     }
 
   do_nothing_until_ = now.main_part_ + rest_dur.get_length ();
@@ -268,6 +267,7 @@ ADD_TRANSLATOR (Completion_rest_engraver,
                 "Rest ",
 
                 /* read */
+                "completionFactor "
                 "completionUnit "
                 "middleCPosition "
                 "measurePosition "
index ec677ec68ca2128c5a346a2f2b485a3fb329a9b6..72490775a20c0758361e654c4420928f3f64689c 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2011--2012 Mike Solomon <mike@mikesolomon.org>
+  Copyright (C) 2011--2014 Mike Solomon <mike@mikesolomon.org>
 
   LilyPond is free software: you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
index f8d4b0f5b2280d10ca669a1cb1678b3bdd5dc7ab..1c4bff82c7b7b695e7d5d1c3a9bf5c72a749b4f6 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2006--2012 Joe Neeman <joeneeman@gmail.com>
+  Copyright (C) 2006--2014 Joe Neeman <joeneeman@gmail.com>
 
   LilyPond is free software: you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
index 9ef10bea966a6f631b2338138cfc46836342dfd1..56da817e105cb322f9b4a6ed70e0dfab9ea498d0 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2000--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 2000--2014 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
@@ -396,9 +396,12 @@ Context_def::is_alias (SCM sym) const
 
 LY_DEFINE (ly_context_def_lookup, "ly:context-def-lookup",
            2, 1, 0, (SCM def, SCM sym, SCM val),
-           "Return the value of @var{sym} in output definition @var{def}"
-           " (e.g., @code{\\paper}).  If no value is found, return"
-           " @var{val} or @code{'()} if @var{val} is undefined.")
+           "Return the value of @var{sym} in context definition @var{def}"
+           " (e.g., @code{\\Voice}).  If no value is found, return"
+           " @var{val} or @code{'()} if @var{val} is undefined."
+           " @var{sym} can be any of @samp{default-child}, @samp{consists},"
+           " @samp{description}, @samp{aliases}, @samp{accepts},"
+           " @samp{property-ops}, @samp{context-name}, @samp{group-type}.")
 {
   LY_ASSERT_SMOB (Context_def, def, 1);
   Context_def *cd = unsmob_context_def (def);
index c115c570d625609f1d865a46ebdebc4e7d9bd1b0..2732915c9f2a35f2216aac78c4d9e98fcade60a4 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1999--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 1999--2014 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
index 5479581b1c14f67d174c67eac28c235a03bdcc3e..6c04c0baf92461d4a4d39b26d2bbbf7f38340062 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2010--2012 Jan Nieuwenhuizen <janneke@gnu.org>
+  Copyright (C) 2010--2014 Jan Nieuwenhuizen <janneke@gnu.org>
   Han-Wen Nienhuys <hanwen@xs4all.nl>
 
   LilyPond is free software: you can redistribute it and/or modify
index cb6cf83562fcd64fe5d8303f3ab4ceb2cd56627b..2d35e05f836b31278e5a376b8c8d0416c2e07c09 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2010--2012 Reinhold Kainhofer <reinhold@kainhofer.com>
+  Copyright (C) 2010--2014 Reinhold Kainhofer <reinhold@kainhofer.com>
 
   LilyPond is free software: you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
index 00108cf3149d8b3966b4c392a2dc523e143849c7..fa77969e1c886f1a3c6a10593655f1d9563cd127 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2004--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 2004--2014 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
index f58a793ed4ef805fcbcf4cd47435e88de47edf82..1559d67e0157255698640830bcd2e15ccb46a504 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1998--2012 Jan Nieuwenhuizen <janneke@gnu.org>
+  Copyright (C) 1998--2014 Jan Nieuwenhuizen <janneke@gnu.org>
   Han-Wen Nienhuys <hanwen@xs4all.nl>
 
   LilyPond is free software: you can redistribute it and/or modify
index e33a8806a6fa4d3b0dce28a92571a4c83856e0b6..81c5f4c854df57cc898dca447ad65265513909af 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2002--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 2002--2014 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
index 491ea8f0d864e4ffc0cbe729f5b0e0d4d8f25b12..a27db01865b92414d07d37752b407df85d26755a 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2004--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 2004--2014 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
index aebf071b9ece7d86b70d40d027c394b47718424b..f2988585cd0d7cbd95bf161b2411f361b0b30d4f 100644 (file)
@@ -1,9 +1,9 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1997--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 1997--2014 Han-Wen Nienhuys <hanwen@xs4all.nl>
                            Mats Bengtsson <matsb@s3.kth.se>
-  Copyright (C) 2010--2012 Reinhold Kainhofer <reinhold@kainhofer.com>
+  Copyright (C) 2010--2014 Reinhold Kainhofer <reinhold@kainhofer.com>
 
   LilyPond is free software: you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
index 6b915f5cb45114851b4a513730048dc6bfe126db..0ebb45cd8c2dc5cbc3999e6ccfa8ebe0ee6a65a9 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2000--2012 Juergen Reuter <reuter@ipd.uka.de>,
+  Copyright (C) 2000--2014 Juergen Reuter <reuter@ipd.uka.de>,
   Han-Wen Nienhuys <hanwen@xs4all.nl>
 
   LilyPond is free software: you can redistribute it and/or modify
index 1366202f725013905fb37844b874628bec5e3bf0..1bbf5f8d7191c1792ae56f9c203da4aea06ce628 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2000--2012 Juergen Reuter <reuter@ipd.uka.de>
+  Copyright (C) 2000--2014 Juergen Reuter <reuter@ipd.uka.de>
 
   LilyPond is free software: you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
index a4c1bf6e2afabd20a5c1ef4e697c3ee7d811e059..49ce6b597e3393316c4519fd8a0bd2b1774cf571 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1997--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 1997--2014 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
index 4538f17bc11a22a2646741d5a14b67de299e7e7c..fe40dc93212364f1da6dd897e4bd8bedb8369007 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1998--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 1998--2014 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
index 6d3b00efe77e4d29be1fcd176b8991ae318cd06a..2eba0eff6d23f07b9acf758516597e513272c1ad 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1997--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 1997--2014 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
index cd8d2c4d98c1b2f8924e6964bdb5746687472055..0e3556ecf711d32225a80ff384416f5d6fec1cc6 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1999--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 1999--2014 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
index 13854b26d783fc5bde1321064831688d2a57077d..f6ef23d120279e8ded3b0e6678c10c899940be7d 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2006--2012 Erik Sandberg  <mandolaerik@gmail.com>
+  Copyright (C) 2006--2014 Erik Sandberg  <mandolaerik@gmail.com>
 
   LilyPond is free software: you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
index eb612d35c4aa223c4bb12f8c3e08091c419bd9f7..915e1eff0aa2db05e40b77499dafeaad2d5737b8 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2005--2012 Erik Sandberg  <mandolaerik@gmail.com>
+  Copyright (C) 2005--2014 Erik Sandberg  <mandolaerik@gmail.com>
 
   LilyPond is free software: you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
index 5a1b0a6759da44d172fabd60190a4c56586e80bf..38beed5d9dc6c84ad85690fcd6c9d802dda92d5f 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1998--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 1998--2014 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
index 6cba432639deb7f8fd899a53a577987253787762..35d3b3f051fa274b14843ae003be53a7151297dc 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1997--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 1997--2014 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
@@ -59,7 +59,7 @@ Dot_column::calc_positioning_done (SCM smob)
   vector<Grob *> dots
     = extract_grob_array (me, "dots");
 
-  vector<Grob *> main_heads;
+  vector<Grob *> parent_stems;
   Real ss = 0;
 
   Grob *commonx = me;
@@ -73,7 +73,7 @@ Dot_column::calc_positioning_done (SCM smob)
           commonx = stem->common_refpoint (commonx, X_AXIS);
 
           if (Stem::first_head (stem) == n)
-            main_heads.push_back (n);
+            parent_stems.push_back (stem);
         }
     }
 
@@ -83,8 +83,8 @@ Dot_column::calc_positioning_done (SCM smob)
   extract_grob_set (me, "side-support-elements", support);
 
   Interval base_x;
-  for (vsize i = 0; i < main_heads.size (); i++)
-    base_x.unite (main_heads[i]->extent (commonx, X_AXIS));
+  for (vsize i = 0; i < parent_stems.size (); i++)
+    base_x.unite (Stem::first_head (parent_stems[i])->extent (commonx, X_AXIS));
 
   for (vsize i = 0; i < support.size (); i++)
     {
@@ -152,6 +152,36 @@ Dot_column::calc_positioning_done (SCM smob)
     we instead must use their pure Y positions.
   */
   vector_sort (dots, pure_position_less);
+
+  SCM chord_dots_limit = me->get_property ("chord-dots-limit");
+  if (scm_is_number (chord_dots_limit))
+    {
+      // Sort dots by stem, then check for dots above the limit for each stem
+      vector <vector <Grob *> > dots_each_stem (parent_stems.size ());
+      for (vsize i = 0; i < dots.size (); i++)
+        if (Grob *stem = unsmob_grob (dots[i]->get_parent (Y_AXIS)
+                                      -> get_object ("stem")))
+          for (vsize j = 0; j < parent_stems.size (); j++)
+            if (stem == parent_stems[j])
+              {
+                dots_each_stem[j].push_back (dots[i]);
+                break;
+              }
+      for (vsize j = 0; j < parent_stems.size (); j++)
+        {
+          Interval chord = Stem::head_positions (parent_stems[j]);
+          int total_room = ((int) chord.length () + 2
+                            + scm_to_int (chord_dots_limit)) / 2;
+          int total_dots = dots_each_stem[j].size ();
+          // remove excessive dots from the ends of the stem
+          for (int first_dot = 0; total_dots > total_room; total_dots--)
+            if (0 == (total_dots - total_room) % 2)
+              dots_each_stem[j][first_dot++]->suicide ();
+            else
+              dots_each_stem[j][first_dot + total_dots - 1]->suicide ();
+        }
+    }
+
   for (vsize i = dots.size (); i--;)
     {
       if (!dots[i]->is_live ())
@@ -236,6 +266,7 @@ ADD_INTERFACE (Dot_column,
                " dots so they do not clash with staff lines.",
 
                /* properties */
+               "chord-dots-limit "
                "dots "
                "positioning-done "
                "direction "
index 940420c31255fa541d07e49a70da595909654fc3..81b8d086084ce63978a1f527162026a51b069b42 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1997--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 1997--2014 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
index 863aa5fc0242395b646abc2365ee6c96246a0670..d1743af7b29f403802596a3a561a9659b84252dd 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2007--2012 Han-Wen Nienhuys <hanwen@lilypond.org>
+  Copyright (C) 2007--2014 Han-Wen Nienhuys <hanwen@lilypond.org>
 
   LilyPond is free software: you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
index d588e5e92b3aa1f782ce5ebaf7d1caf82c82dd64..02569f299b991ee8ba6e6b6726a350d5c980b5cb 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2006--2012 Han-Wen Nienhuys <hanwen@lilypond.org>
+  Copyright (C) 2006--2014 Han-Wen Nienhuys <hanwen@lilypond.org>
 
   LilyPond is free software: you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
index 20503ca5ae4bfc414a3af60abf7190d6ec985f34..0c7d634798a87c2ab26e481f8b3521dd62365045 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1997--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 1997--2014 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
index cd455e008eeb8bcb1dcd3f9db5b8db834d62577b..9dcaf333020e48492ea006847bcbb41d1946350d 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2011--2012 Neil Puttock <n.puttock@gmail.com>
+  Copyright (C) 2011--2014 Neil Puttock <n.puttock@gmail.com>
 
   LilyPond is free software: you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
index 06d24fdea60343494a7aaa7005d5f70aa6654fc6..591fc9d1b6468445c3fa36d9f5ac8cf31c4cdb5d 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1997--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 1997--2014 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
index 94c2d55ea319b0edc6c3e6730a706f323095ffc4..e3371a51c0e0c0fe69469b16988fba46c1a7a5c3 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1996--2012 Jan Nieuwenhuizen <janneke@gnu.org>
+  Copyright (C) 1996--2014 Jan Nieuwenhuizen <janneke@gnu.org>
 
   LilyPond is free software: you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
@@ -62,9 +62,9 @@ Drum_note_performer::process_music ()
         {
           SCM articulations = n->get_property ("articulations");
           Stream_event *tie_event = 0;
-          for (SCM s = articulations;
-               !tie_event && scm_is_pair (s);
-               s = scm_cdr (s))
+          Moment len = get_event_length (n, now_mom ());
+          int velocity = 0;
+          for (SCM s = articulations; scm_is_pair (s); s = scm_cdr (s))
             {
               Stream_event *ev = unsmob_stream_event (scm_car (s));
               if (!ev)
@@ -72,12 +72,16 @@ Drum_note_performer::process_music ()
 
               if (ev->in_event_class ("tie-event"))
                 tie_event = ev;
+              SCM f = ev->get_property ("midi-length");
+              if (ly_is_procedure (f))
+                len = robust_scm2moment (scm_call_2 (f, len.smobbed_copy (),
+                                                     context ()->self_scm ()),
+                                         len);
+              velocity += robust_scm2int (ev->get_property ("midi-extra-velocity"), 0);
             }
 
-          Moment len = get_event_length (n, now_mom ());
-
           Audio_note *p = new Audio_note (*pit, len,
-                                          tie_event, Pitch (0, 0, 0));
+                                          tie_event, Pitch (0, 0, 0), velocity);
           Audio_element_info info (p, n);
           announce_element (info);
         }
index ffb769e2e90f50583de9e00c6d3de88d6957ebc4..152c75e8cc5f9714767b672cb86252876ca8abae 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1997--2012 Jan Nieuwenhuizen <janneke@gnu.org>
+  Copyright (C) 1997--2014 Jan Nieuwenhuizen <janneke@gnu.org>
   Han-Wen Nienhuys <hanwen@xs4all.nl>
 
   LilyPond is free software: you can redistribute it and/or modify
index 782804e9da31d90b610543c2570a2c71d744a3c7..894748f915788a9387add5c8ad5fdeb39d31e9cb 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1997--2012 Jan Nieuwenhuizen <janneke@gnu.org>
+  Copyright (C) 1997--2014 Jan Nieuwenhuizen <janneke@gnu.org>
   Han-Wen Nienhuys <hanwen@xs4all.nl>
 
   LilyPond is free software: you can redistribute it and/or modify
index 37f93cd5c4dce99bae0716661f99beee03440d9c..35083db04344930d31cf19abb37582b712fe4a30 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2008--2012 Han-Wen Nienhuys <hanwen@lilypond.org>
+  Copyright (C) 2008--2014 Han-Wen Nienhuys <hanwen@lilypond.org>
 
 
   LilyPond is free software: you can redistribute it and/or modify
index a4d4e06f5a68fb6d7ceea97e708d3b0950c1ae48..d1b8cf00b52d931605eacb16c9a179d898d74597 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2008--2012 Han-Wen Nienhuys <hanwen@lilypond.org>
+  Copyright (C) 2008--2014 Han-Wen Nienhuys <hanwen@lilypond.org>
 
   LilyPond is free software: you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
@@ -260,7 +260,6 @@ Dynamic_engraver::acknowledge_note_column (Grob_info info)
   if (script_ && !script_->get_parent (X_AXIS))
     {
       extract_grob_set (info.grob (), "note-heads", heads);
-      Grob *stem = unsmob_grob (info.grob ()->get_object ("stem"));
       /*
         Spacing constraints may require dynamics to be aligned on rests,
         so check for a rest if this note column has no note heads.
@@ -273,8 +272,6 @@ Dynamic_engraver::acknowledge_note_column (Grob_info info)
           script_->set_parent (x_parent, X_AXIS);
           Self_alignment_interface::set_center_parent (script_, X_AXIS);
         }
-      if (stem)
-        Pointer_group_interface::add_grob (script_, ly_symbol2scm ("potential-X-colliding-grobs"), stem);
     }
 
   if (current_spanner_ && !current_spanner_->get_bound (LEFT))
index 936060bfc60bf7c4e673c9e699fa150abb2ab5c5..411fbd2f0ad04ebf27dbee70d56b5018c7c66c62 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2000--2012 Jan Nieuwenhuizen <janneke@gnu.org>
+  Copyright (C) 2000--2014 Jan Nieuwenhuizen <janneke@gnu.org>
 
   LilyPond is free software: you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
index 8fe151317012478f836552b4917118db9cadfda1..1a199f43a18c0cca5fd4659013ff19c883ad3725 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2005--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 2005--2014 Han-Wen Nienhuys <hanwen@xs4all.nl>
 
 
   LilyPond is free software: you can redistribute it and/or modify
index 738c465a7abef9a6e255084a77763ca62f24ca51..80da25b478c8a3feba7a74858f80e8f6ecc7dacc 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1997--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 1997--2014 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
index 8789171d7eafdd640c573c5b19cbd46ee3685102..60f08a226a4bf16230b786815be18a1457f693fa 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1997--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 1997--2014 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
index b8bf1234c04d625fe36c635c38aa3bad1a24c85b..ac085bd296e17c21a5538c40da1928122b0aad14 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1997--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 1997--2014 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
index 233de4efbd5e1d40376fdf327faa2a95bf6aa1f8..ca0452932d67eac54926e66b992ea876d8e0bfbd 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2010--2012 Neil Puttock <n.puttock@gmail.com>
+  Copyright (C) 2010--2014 Neil Puttock <n.puttock@gmail.com>
 
   LilyPond is free software: you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
index cab7b259b07223b2b49f430029744ebd6fd741e7..55d43302c556a32afbfe8f38bb76dc22a016fc28 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1997--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 1997--2014 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
index c47dea3ecb4429d7843af5f2e255a638e3e39152..e50e15ad5fc5d0ace4cbd534b22da022de47a413 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1997--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 1997--2014 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
index 19e04062793b19d531f6a73b5b3f646772eaf602..9ffdd234058dd9c6a91662a6ce759774210fa6ee 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1999--2012 Glen Prideaux <glenprideaux@iname.com>,
+  Copyright (C) 1999--2014 Glen Prideaux <glenprideaux@iname.com>,
   Han-Wen Nienhuys <hanwen@xs4all.nl>,
   Jan Nieuwenhuizen <janneke@gnu.org>
 
index bc216a2c4ab7609b222217652e2c20580a3390d5..4b0832627022233e6bfdb62216a8b251d5712960 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2005--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 2005--2014 Han-Wen Nienhuys <hanwen@xs4all.nl>
 
 
   LilyPond is free software: you can redistribute it and/or modify
index 2f8004f84cfa65c713d6386ff504b8803dee3b04..d2eec375dd4b124e0a5d5f4b3745a14bdb611425 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2005--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 2005--2014 Han-Wen Nienhuys <hanwen@xs4all.nl>
 
 
   LilyPond is free software: you can redistribute it and/or modify
index 9b55e04f49cd83360dfbff36c6f8ed6530a4467f..7654208610ea6893fa0b22c307be76d2f35d4e5c 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2005--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 2005--2014 Han-Wen Nienhuys <hanwen@xs4all.nl>
 
 
   LilyPond is free software: you can redistribute it and/or modify
index b124fda9b154d3f00195867223faf9e2c5d8e0b0..54a84dc07aa7bd6b1b8d4cdc061b68cdc683d88d 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2005--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 2005--2014 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
index 56d7b3257eae269451251c1a8926d62e5069a6eb..d23a5e35f81852ab7088c2f451ea2458a91b6140 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1998--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 1998--2014 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
index 31ddf349c92cf1098836fa98b11252ea19cf2b00..58641d37b010d1613d0d7f5d087ea40a8408eac2 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1996--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 1996--2014 Han-Wen Nienhuys <hanwen@xs4all.nl>
   Jan Nieuwenhuizen <janneke@gnu.org>
 
   LilyPond is free software: you can redistribute it and/or modify
@@ -105,7 +105,7 @@ Flag::glyph_name (SCM smob)
 
   char dir = (d == UP) ? 'u' : 'd';
   string font_char = flag_style
-                     + to_string (dir) + staffline_offs + to_string (log);
+                     + ::to_string (dir) + staffline_offs + ::to_string (log);
   return ly_string2scm ("flags." + font_char);
 }
 
@@ -143,11 +143,11 @@ Flag::print (SCM smob)
       string stroke_style = ly_scm2string (stroke_style_scm);
       if (!stroke_style.empty ())
         {
-          string font_char = flag_style + to_string (dir) + stroke_style;
+          string font_char = flag_style + ::to_string (dir) + stroke_style;
           Stencil stroke = fm->find_by_name ("flags." + font_char);
           if (stroke.is_empty ())
             {
-              font_char = to_string (dir) + stroke_style;
+              font_char = ::to_string (dir) + stroke_style;
               stroke = fm->find_by_name ("flags." + font_char);
             }
           if (stroke.is_empty ())
index c759ab901ce3487e9a41822c3d6cc96d3b562f5e..7e91982b85490870a6915c9b73624c7ad03ae6b4 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2005--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 2005--2014 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
index 641192b12c7566d5bdd3056291a551ff22b3779f..11cfed0b403cfc25bc993e2eeae967e102f0808e 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2005--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 2005--2014 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
index 629077415bbfb7dcfd071daa011be50fb3085410..7c3ac5357465e71e5823dd8443702a22dca3b907 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2000--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 2000--2014 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
index 6d225dfeae025fa280f03afdca5434e368f190b3..19afdd698d337b1481e31328399c16a5c194a29e 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2005--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 2005--2014 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
index 892319f3b837668bf404d350605e285aa67e13f5..0eb2b2903c738e1520ba6ed14ccd6b406e422dec 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1999--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 1999--2014 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
index a633e685f2d37fb2626b1310264cb724ddcc482a..6532a7c2869f6b259dbb0e52535a0e6c3e896042 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2003--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 2003--2014 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
index 03802ac2ce2c94c354d5ae73602c2248707e87a7..c489da711f1dd8eba32d082fe4949d3bd736f699 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2001--2012  Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 2001--2014  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
index 20ee7c149fba5eb80f000c94f95b3a6e5f2ab565..fa488b06d42dd0b7ff8389f58f348186273e2e06 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2011--2012 Mike Solomon <mike@mikesolomon.org>
+  Copyright (C) 2011--2014 Mike Solomon <mike@mikesolomon.org>
 
   LilyPond is free software: you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
index 88af76c1ae84ad97b870e016a0c8e1ac432ed90f..4588518d0367b4eeaccdf19d8796e6d589eaa46a 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2007--2012 Han-Wen Nienhuys <hanwen@lilypond.org>
+  Copyright (C) 2007--2014 Han-Wen Nienhuys <hanwen@lilypond.org>
 
 
   LilyPond is free software: you can redistribute it and/or modify
index 55a3fb378095af6a0f7f35f7f3e89d55ad6a550a..f6cdd4ecfde07b17f6d9db2c4a655daee5be1c15 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2004--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 2004--2014 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
index 453064214434cd3f1e5a9ab06362f49134d8d828..27a922339aac23160feb8e2cfbafc7bb31bcb6ee 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2006--2012 Han-Wen Nienhuys
+  Copyright (C) 2006--2014 Han-Wen Nienhuys
 
   LilyPond is free software: you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
index ec2355733387d435b561392f50cf9e0637d515a8..cce8c666475f95b72e90509dbba8a5a1f4e82241 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2004--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 2004--2014 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
index f2b3ff1ae51ec8ca2ae84a94de919c76c9d16ba0..19d0af73caf6a338f7169991d36b32a6bae452be 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1998--2012 Jan Nieuwenhuizen <janneke@gnu.org>
+  Copyright (C) 1998--2014 Jan Nieuwenhuizen <janneke@gnu.org>
   Han-Wen Nienhuys <hanwen@xs4all.nl>
 
   LilyPond is free software: you can redistribute it and/or modify
index 711bb1df81690d7df8d858825c122b1e2b56eec9..40151c29430ed5c74dff02300666c840b7ca2b0f 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2000--2012 Jan Nieuwenhuizen <janneke@gnu.org>
+  Copyright (C) 2000--2014 Jan Nieuwenhuizen <janneke@gnu.org>
 
   LilyPond is free software: you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
index 86ee2b05b963132936020f212fa5ef09a613b5c6..d1cd44201d483d58ce677bf3f278214170421881 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2005--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 2005--2014 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
index 3fa5089e8076ec559395aa159fafb917df32f07b..f0f138f324336c338543c737c924610b0573d0b4 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1997--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 1997--2014 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
@@ -181,9 +181,7 @@ Global_context::apply_finalizations ()
   SCM lst = get_property ("finalizations");
   set_property ("finalizations", SCM_EOL);
   for (SCM s = lst; scm_is_pair (s); s = scm_cdr (s))
-
-    /* TODO: make safe.  */
-    scm_primitive_eval (scm_car (s));
+    scm_apply_0 (scm_caar (s), scm_cdar (s));
 }
 
 /* Add a function to execute before stepping to the next time step.  */
index 80ae93e3614698e155d20e0787da737441251b4f..67931e933cf604b033cb07799017e3347d3fa1d3 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1999--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 1999--2014 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
index f12e957d5e434d4fba54e718d03d14decc34fd0c..dd6c271e477ecf49ae9dcb4ea3ca3640b08992bb 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1997--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 1997--2014 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
index 1ebc6c9a7432987ad49f4768632d7e4caf40628b..b57e284e33545d28c0431c4a0777df6f26538e0d 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2004--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 2004--2014 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
index 5d95fef2e79ca14b244fe791af43fac1e5c3497c..c0c6c6ec2cb2f30c78dc154b54b52bc9ed383c48 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1999--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 1999--2014 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
index b24593aece4c741bf0fcd1e606286892d7c97fdd..ffac90114cb52e0ebfb74bf4d3f7755f912f54b0 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1999--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 1999--2014 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
index fce1f161d08c671e5246bdcde442e4c0982a398b..4e5f33a91c9223b6daf82a49391303d350cbeaae 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2006--2012 Han-Wen <hanwen@lilypond.org>
+  Copyright (C) 2006--2014 Han-Wen <hanwen@lilypond.org>
 
 
   LilyPond is free software: you can redistribute it and/or modify
index bfc7bfd8833674df2a5716e44c6709d0de60a910..9d070ad99782062d50794e45227a768896d70919 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2003--2012 Juergen Reuter <reuter@ipd.uka.de>
+  Copyright (C) 2003--2014 Juergen Reuter <reuter@ipd.uka.de>
 
   LilyPond is free software: you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
index a0f54ed162f3ec2c75a73195bc4d1b37f1557e1d..d5e2798b1f8ca8a70c3e66f59e2d655fd7a50eda 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2003--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 2003--2014 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
index 52c11a4a3a162912a97f584523c6cf8c20e2bba1..5eb566c0eb443e087b08886f9c5a08521c75d456 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2005--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 2005--2014 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
index 43425b6f46568ce2123f1f4330132eeaa2f871ed..170b3c90c3847823c7a49a237d8785f71c0aa245 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2005--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 2005--2014 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
index 471997d48ca23dad1a511196f51c3527f8f9961d..3c326285b611e396da93189cd70664eb9c1b4bf4 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2005--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 2005--2014 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
index 2268ab6edaddbd28a72bcf9dde1a3e042306a3e2..51863dc1c74cdf8331dadf16d905a3ef4ce40c8f 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2005--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 2005--2014 Han-Wen Nienhuys <hanwen@xs4all.nl>
 
 
   LilyPond is free software: you can redistribute it and/or modify
index d0cf11106878b12c73a80d6222cfb7aed955100e..a47d222e8123f6d706c6392a4900d07dd94e552a 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2005--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 2005--2014 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
index 4e5d8889f30fb591b044aa11ebfa386682a90434..2103385880d800267afb5a4846ef395eaeb86d5f 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1997--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 1997--2014 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
index bbbe7cfe8563004cd971444da90994cdb2092677..9c6fbc058ca1d3fb1eddc8eba5e83c595e73b536 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2005--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 2005--2014 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
index ecc2a6e08f619a6aa99734e9c6b999f405ec5106..b353205d84d3e26ab9092c1a799544c76b310848 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2002--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 2002--2014 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
index 6ad7ccf0fa89f9f913b38f04f6bfdb7c538a6657..cd845cdd4a0e0f9351028c77c9ff52cb73f9fd6d 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2001--2012  Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 2001--2014  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
index f9773e5ec5a4878b12f66f1535970a5696e6ff8a..32ff49124dff37919c6e21b5b8778874338c188b 100644 (file)
@@ -197,8 +197,17 @@ SCM
 Grob::internal_get_pure_property (SCM sym, int start, int end) const
 {
   SCM val = internal_get_property_data (sym);
-  if (ly_is_procedure (val) || is_unpure_pure_container (val))
+  if (ly_is_procedure (val))
     return call_pure_function (val, scm_list_1 (self_scm ()), start, end);
+
+  if (is_unpure_pure_container (val)) {
+    // Do cache, if the function ignores 'start' and 'end'
+    if (is_unchanging_unpure_pure_container (val))
+      return internal_get_property (sym);
+    else
+      return call_pure_function (val, scm_list_1 (self_scm ()), start, end);
+  }
+
   if (is_simple_closure (val))
     return evaluate_with_simple_closure (self_scm (),
                                          simple_closure_expression (val),
index 9ae9c14fcbd3698a57adff41dfecf6edb80d5529..1bbc53212ab2b04fa3280fcbd1639d3b2b4a1182 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1998--2012 Jan Nieuwenhuizen <janneke@gnu.org>
+  Copyright (C) 1998--2014 Jan Nieuwenhuizen <janneke@gnu.org>
   Han-Wen Nienhuys <hanwen@xs4all.nl>
 
   LilyPond is free software: you can redistribute it and/or modify
index 853546a8868d547d5836e76514a40908abf43bbe..a201c800438b21fdc262224892bedbb4e3b11a2c 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2005--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 2005--2014 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
index dee7bdaa3cfd5d4506f51b8c11250bbcc1fe95a9..86ec7e4c6be40b7bc16cf7c3a58b6b631d705049 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1997--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 1997--2014 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
@@ -825,9 +825,6 @@ ADD_INTERFACE (Grob,
                "meta "
                "minimum-X-extent "
                "minimum-Y-extent "
-               "outside-staff-horizontal-padding "
-               "outside-staff-padding "
-               "outside-staff-priority "
                "pure-Y-offset-in-progress "
                "rotation "
                "skyline-horizontal-padding "
index 6b27711b9fda2129274d347306c1629b17ceee52..98b779efaa3d2a1afe2a95a76963aa127ca5e64d 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2006--2012 Han-Wen Nienhuys <hanwen@lilypond.org>
+  Copyright (C) 2006--2014 Han-Wen Nienhuys <hanwen@lilypond.org>
 
 
   LilyPond is free software: you can redistribute it and/or modify
index 40e165dd6d0ffe35c9cfff0051e19133129037ed..9e6d179c8b56dd347a3ebdfebdb097125aedeb2c 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1997--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 1997--2014 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
@@ -236,7 +236,8 @@ Hairpin::print (SCM smob)
                 }
               else
                 {
-                  if (Note_column::has_interface (b)
+                  if (d == RIGHT // end at the left edge of a rest
+                      && Note_column::has_interface (b)
                       && Note_column::has_rests (b))
                     x_points[d] = e[-d];
                   else
index 610ab950f4da2b00b6599fa32f83f3b10acd7f6a..ce06c40ee1bfc723f05cdbdf29ce27997b004ef4 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1998--2012 Jan Nieuwenhuizen <janneke@gnu.org>
+  Copyright (C) 1998--2014 Jan Nieuwenhuizen <janneke@gnu.org>
   Han-Wen Nienhuys <hanwen@xs4all.nl>
 
   LilyPond is free software: you can redistribute it and/or modify
index 941f78a172932d57bed20c23a1ced52b958d336d..fdf3669e75ccadb8dadc341031971e760cdc0e9a 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2002--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 2002--2014 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
index 279ee0baf291bf2083f3979cd02704c09179da00..7beaef28208eb10e9c99540617738eb174cfbaa6 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2002--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 2002--2014 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
index c1f2a04e37e1fa35d49af682c0c317b9c6675f31..78470bf2fb1184cf28ac7361b093fa6da2cf201e 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1999--2012 Glen Prideaux <glenprideaux@iname.com>,
+  Copyright (C) 1999--2014 Glen Prideaux <glenprideaux@iname.com>,
   Han-Wen Nienhuys <hanwen@xs4all.nl>,
   Jan Nieuwenhuizen <janneke@gnu.org>
 
index 8c00965744f3c327a5576241fe32a274cb2a08d5..772adeee854d315eda5bc5df5afc43046c589cd3 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1997--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 1997--2014 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
index f58563cbbbd1b4b80986abd678f96933979b1e0f..6b2c8709fb83a67d35108fba7ed56cd5c589225f 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2002--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 2002--2014 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
index 08ba1e163f37053b1c1f0b9b99381d999e6aea11..abbc468279dbb7954b9e1b842915b1842390bcb7 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2002--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 2002--2014 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
index a17f5235511e75c876d3f337ca64d77c3cb33625..655d894d08ac95f122264b60e9ceac41ab65f232 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2000--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 2000--2014 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
index 7f2ca8326ab669b6a4afe7c71a83ddf68202ea62..8ab15cf8ce3b1d421effb17ceddc702f20e17956 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1998--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 1998--2014 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
index 1347219812cef80a9cf5bdb7235d6e28909eec67..6c070e7055f91dc7d69dab4a736a31d7f6174a5e 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2000--2012 Jan Nieuwenhuizen <janneke@gnu.org>
+  Copyright (C) 2000--2014 Jan Nieuwenhuizen <janneke@gnu.org>
 
   LilyPond is free software: you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
index 543c43ebd04adec258621934b3633c502f8fcaec..3cdc1967d60d2bc8243a615a8a5ef091e31d5fe7 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2010--2012 Carl Sorensen <c_sorensen@byu.edu>
+  Copyright (C) 2010--2014 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
index 42899dbd9e79d367c6ec73c109be661173f4c23c..17e0518ed2f2b5757ea5a2be5e18b8cce1803fca 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1997--2012 Jan Nieuwenhuizen <janneke@gnu.org>
+  Copyright (C) 1997--2014 Jan Nieuwenhuizen <janneke@gnu.org>
 
   LilyPond is free software: you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
index e03cceff732b4352f249bb63b6e64ddb6761e666..cd2e560943b0befcdbcb3833e3f2d4c8467bd191 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1999--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 1999--2014 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
index 510d745a6daca53d042878f05cb69314a2bfe994..99f22dabdc471f3e48afc7cb13c812c8c82b6fc5 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1997--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 1997--2014 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
index 43ed2e05a91e6fd8ccb80b8ff351354be927fb02..b70474385329c45437ffaf707abf9db223cedc10 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1996--2012 Jan Nieuwenhuizen <janneke@gnu.org>
+  Copyright (C) 1996--2014 Jan Nieuwenhuizen <janneke@gnu.org>
 
   LilyPond is free software: you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
@@ -82,7 +82,7 @@ public:
 class Audio_note : public Audio_item
 {
 public:
-  Audio_note (Pitch p, Moment m, bool tie_event, Pitch transposition);
+  Audio_note (Pitch p, Moment m, bool tie_event, Pitch transposition, int velocity);
 
   // with tieWaitForNote, there might be a skip between the tied notes!
   void tie_to (Audio_note *, Moment skip = 0);
@@ -93,6 +93,7 @@ public:
   Moment length_mom_;
   Pitch transposing_;
   Audio_dynamic *dynamic_;
+  int extra_velocity_;
 
   Audio_note *tied_;
   bool tie_event_;
index 6fe9b8d6d45582ff007b6903be6f68f785cf9502..f7f42003460eae2870a21807bbe60130c5e27b69 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1996--2012 Jan Nieuwenhuizen <janneke@gnu.org>
+  Copyright (C) 1996--2014 Jan Nieuwenhuizen <janneke@gnu.org>
 
   LilyPond is free software: you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
@@ -27,7 +27,7 @@
 struct Audio_staff : public Audio_element
 {
   void add_audio_item (Audio_item *ai);
-  void output (Midi_stream &midi_stream_r, int track, bool port);
+  void output (Midi_stream &midi_stream_r, int track, bool port, int start_tick);
 
   Audio_staff ();
 
index 5995c70e658f0b5ee29e312828c1f23a3f1eec7f..6a90cf5fcb7e4d4163f36ea59c9ac5bf10d88855 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2000--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 2000--2014 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
index 8f7b1a24dd0a0a9fe23bd04631ea17a88f92d757..100248dc63b338070bd41154cc23eeea0ccd5004 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1996--2012 Han-Wen Nienhuys
+  Copyright (C) 1996--2014 Han-Wen Nienhuys
 
   LilyPond is free software: you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
index 7e77d6794d9bea907c8afa293da73a0eab27a5b2..fc6e2c6942ea28cc3fa81ca875dc4d605db1f433 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1996--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 1996--2014 Han-Wen Nienhuys <hanwen@xs4all.nl>
   Jan Nieuwenhuizen <janneke@gnu.org>
 
   LilyPond is free software: you can redistribute it and/or modify
index 116ae6aa5730a72ad616594c69bc89bb34991672..691c601129e337c12a8892f0f7f474538ebe172f 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1996--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 1996--2014 Han-Wen Nienhuys <hanwen@xs4all.nl>
   Jan Nieuwenhuizen <janneke@gnu.org>
 
   LilyPond is free software: you can redistribute it and/or modify
index 8b9318da5d1ed5e96778a160666752318e70e10a..8210e1e5f8acebb484dbac894875e69412457cf1 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1999--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 1999--2014 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
index d09c0ac8bee4a7870d319ab1b64a240278bbcfbf..88ff5dbbbf6f2c9f69f6496a96383bfc7d996956 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1998--2012 Jan Nieuwenhuizen <janneke@gnu.org>
+  Copyright (C) 1998--2014 Jan Nieuwenhuizen <janneke@gnu.org>
 
   LilyPond is free software: you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
index e5dd86e0419095a32c405c71b5948994cd2b3aa5..efbc3deb00b063725a5721992ae0e1956c85b779 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1997--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 1997--2014 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
index 28ff88b159cb3fc6f2c480cf12ee9db6c0b4ac6f..ceb9580149d954194f4191ea230e54ba5c5b988a 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1997--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 1997--2014 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
index a76b10ed79abaa1db19e2af65ae66b5f28dc5f5d..3a0d6c81bd83924a5a3ee15703066002cb82218e 100644 (file)
@@ -1,7 +1,7 @@
 /*
   breathing-sign.hh
 
-  Copyright (c) 1999--2012 Michael Krause
+  Copyright (c) 1999--2014 Michael Krause
 
   written for the GNU LilyPond music typesetter
 */
index 2c9cb33125a7de97454a9b9500c5c4aebb6daa46..6d040d2fc6ad5bd74975b7ba142110f2a362a85e 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1997--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 1997--2014 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
index f9e82ef41f75705efdf73456ea4cc30c7921fb1d..0f5e4cf197f652d5a25f584bc20881b9454ef7bc 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1999--2012 Jan Nieuwenhuizen <janneke@gnu.org>
+  Copyright (C) 1999--2014 Jan Nieuwenhuizen <janneke@gnu.org>
 
   LilyPond is free software: you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
index dc27f6693f4fa5f15a2234177b83b5f86b9a0017..bb4a11d9655c3e95c7f5560d420e817bbd51e90e 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2000--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 2000--2014 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
index b80093d245c56fea2afce1006c1952ecf30d1f6d..1066097af4dae50519390bd4998efb7f86f0f8a9 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2000--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 2000--2014 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
index 2aee1886e5fb33fe5bb45c135ccbd76238e524b8..c35d4808f71040ee822f8a6a96d934caeb999038 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2002--2012 Juergen Reuter <reuter@ipd.uka.de>
+  Copyright (C) 2002--2014 Juergen Reuter <reuter@ipd.uka.de>
 
   LilyPond is free software: you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
index bf422c40d1b4d1e108bc6d692f84e03a264d7693..a2b780a5d6e7bf307bc0e4e5fcfeead411688771 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2003--2012 Juergen Reuter <reuter@ipd.uka.de>
+  Copyright (C) 2003--2014 Juergen Reuter <reuter@ipd.uka.de>
 
   LilyPond is free software: you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
index 2356294d9d7ce35c36b341a3eb136027867a2f8d..d70d9ec12a72d2933d21f35a389ffade40213b18 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1997--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 1997--2014 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
index cb4c4f70be28a7ac56e72e8e98291b6bf7d62b14..13f89236bf2ed6d120f76991d38e09066423c52c 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2006--2012 Joe Neeman <joeneeman@gmail.com>
+  Copyright (C) 2006--2014 Joe Neeman <joeneeman@gmail.com>
 
   LilyPond is free software: you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
index 2776c8110502b678f061f4f2a597e77dae5bb2c9..835354a2e5c57ea6a48eabf69e17dcd15d335901 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2000--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 2000--2014 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
index f4fc18bd4d1aa37cf4c52de313c0e929e8cf6371..53b4de9e0c19f05f7e1328dc7087c955dda31831 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1999--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 1999--2014 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
index d384d73a0481d2563700014974912d3817db0e37..ab3c3d2e7e2d308c4c22d0cda8cba68507d79899 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2010--2012 Reinhold Kainhofer <reinhold@kainhofer.com>
+  Copyright (C) 2010--2014 Reinhold Kainhofer <reinhold@kainhofer.com>
 
   LilyPond is free software: you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
index c779074007cbfe3061051419be0471f2e01b25a2..69bac839a5c7260ad73b207fe83585f6979b5078 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2004--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 2004--2014 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
index 3d998edd390ce7477637b7ec048b2d4ac3cc0cff..07cf935459411aefe755c78786229bb7708d7ce9 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2000--2012 Juergen Reuter <reuter@ipd.uka.de>
+  Copyright (C) 2000--2014 Juergen Reuter <reuter@ipd.uka.de>
 
   LilyPond is free software: you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
index 6210be1285130f886adab00c3a035d597a92b9e7..d5433d59629a84c10778366146d49ef8c07ceb76 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1998--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 1998--2014 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
index 8e00394f4612aa4a3b07eef85c49befa0b7c80f5..619ec69e277e70bb6324d08b358300cc17469d13 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1999--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 1999--2014 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
index d6109bb876fb208f1dc73108a26503cf0089990b..fcb381d3389969f6c00d2c1209cee670b2ea0003 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1997--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 1997--2014 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
index c3013bb4fd36ab28cee2a042c828fc817854e08f..69627d02badd76087c99260bb6d4f64d9961e1e4 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2007--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 2007--2014 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
index d126934d10e09a765469203ad92ce0abb6bdb54e..1ac86253743bf3343cc11a5846cbb4337b6023f4 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1997--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 1997--2014 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
index a7efb98eab5647bffb6502aeeb10328a0518f3f8..e05ed7042ad63c5c6920e40277c58d7e2d26b295 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1997--2012 Jan Nieuwenhuizen <janneke@gnu.org>
+  Copyright (C) 1997--2014 Jan Nieuwenhuizen <janneke@gnu.org>
 
   LilyPond is free software: you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
index 5738b8a9f2c06ffe316a913f65d96bb97f9a1653..8f02c20594e69ec3696e220c82e0e1b511220bb3 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1997--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 1997--2014 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
index 81713bb4e516070476e8eb7d2dafbe06ae99b3ea..4a102aa2655289b4a321a1616d7c631ec774fedd 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1996--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 1996--2014 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
index 04168f420916b1d36063f1f2dd2a6ac27880a48f..e905f8e00eadd2e9fc20e455ced12d70a8c5c0e4 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1997--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 1997--2014 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
index c22ebab1fc6659b9c613146d213c846d6b876338..9dd40727e7aa21a64b3fcccdedff629641c6d854 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2006--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 2006--2014 Han-Wen Nienhuys <hanwen@xs4all.nl>
            Erik Sandberg <mandolaerik@gmail.com>
 
   LilyPond is free software: you can redistribute it and/or modify
index 5999f7558223b4006724be9328cbb575569f5cd2..fb823fa3c156803259f290eead963e1cffd924ad 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2005--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 2005--2014 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
index 5052322f123c30f61797b4574c945b89cb2c0476..f3024709182f8104e6a4a890e1d9423284a70428 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1999--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 1999--2014 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
index 8d4df894d782de4ace10c29288e9d9bc7c71b3eb..7b68e0c9ff6b0b0ad793d58b1d185bca6eddde99 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2000--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 2000--2014 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
index 4c11989729ffc50a78323ef77ed209d8b5e6d703..71ba92175385924685ab99e6f3b19ac172e48bc4 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1999--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 1999--2014 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
index 89104bc8880a19b7ad32fb9ba8b166ece8fe85b5..28d2cdac55c60d1234f996ff0cdc3e4618bede9a 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2004--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 2004--2014 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
index 1ea2b38dc70d750b83268941ef42604b7874dd4c..8c1b8b66ab73294cb5bd8aaef439cab1eee279bd 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1997--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 1997--2014 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
index cb082b19ab863b8f1e5f2c4bf0af91002c587904..a88742e74a787ece29ce0fa71a815d511a73319e 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1999--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 1999--2014 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
index 03e8129ed985c8977c5287fc547fce106ceb1810..6491fcd1ea4e2da1052179a4ae5642e7db97e99b 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2004--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 2004--2014 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
index 08a69abffadeef41718c0ea8387d4f415c4b44c7..4da3511c0be8d36d6b0a3600f77f7c200576e604 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1999--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 1999--2014 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
index a65d54f67bd8f975db35479413fe618d8c54a9e4..2f227eff8bb16f6032df710aa6ecaceab244ce6e 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2003--2012 Juergen Reuter <reuter@ipd.uka.de>
+  Copyright (C) 2003--2014 Juergen Reuter <reuter@ipd.uka.de>
 
   LilyPond is free software: you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
index 957e796ba18b0fa0725657d023f596624ec53039..8caf27044e1dee13e3bb28ac582e8be18aa0c000 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2003--2012 Juergen Reuter <reuter@ipd.uka.de>
+  Copyright (C) 2003--2014 Juergen Reuter <reuter@ipd.uka.de>
 
   LilyPond is free software: you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
index 85128ce6e6060b5725b1f90ff6a3a24b5a9b2b8e..3a4e0f97179fb3bb62c10345d320ba6c3aaae72e 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2005--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 2005--2014 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
index c21fc3cf502e285c901e067801776521d694850f..958c59d55e0707d486ec5731dda7cb433861a09b 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2005--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 2005--2014 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
index c62df2c20cfb090110d4877ce037147fb435b844..8fa83120c7516e24ee9d5d8997bd42ace96014a7 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1997--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 1997--2014 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
index b060e855897153b4e5be17feda722966f003b27f..2062393f0b74910fe944c726a2b08625f8561499 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2002--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 2002--2014 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
index a0902d6d8907a74542ee3260efea9b1003fd2246..83ec5f73edf25cfa79ca5316290745bd4437f37f 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1996--2012 Han-Wen Nienhuys
+  Copyright (C) 1996--2014 Han-Wen Nienhuys
 
   LilyPond is free software: you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
index c40d615299be54c0f243a4f54e85f8ea87647a39..a4077a6fd413473efebf604bb380fa0cc8ba1963 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1999--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 1999--2014 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
index db072f48db22ebda651e22a43023b5f5fb1ec563..9a922421f2b5538f6f47fbf62a5380bd70d675c1 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1997--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 1997--2014 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
index e0cbac3c9c5d92ed2019586c44ddd8555ff82c2d..a283fe6c7f62740fbf32a0b8c15ba7dc6b7bbb5e 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1998--2012 Jan Nieuwenhuizen <janneke@gnu.org>
+  Copyright (C) 1998--2014 Jan Nieuwenhuizen <janneke@gnu.org>
 
   LilyPond is free software: you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
index 4226d7c5532455c6989ca1715a0043a0fa555ef9..6b020365935fa3baad5c64f105217581f0a35ed9 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2005--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 2005--2014 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
index 8378404513cabf9b3169b26b5bf71584f12d12d7..e349917aaf542786316dd3406c590910d30be417 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1997--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 1997--2014 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
index a11f8f8c1b25f787bd632aaa41bc7388eea3340f..a6aa1698b4d56912e6e71dba8ced11d7386616db 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1997--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 1997--2014 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
index e7e237e9497c971f3b9fdcea1e32271712627fa0..9350db7b271f04d568b80164ef1c7f4351f17bdd 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2011--2012 Mike Solomon <mike@mikesolomon.org>
+  Copyright (C) 2011--2014 Mike Solomon <mike@mikesolomon.org>
   Jan Nieuwenhuizen <janneke@gnu.org>
 
   LilyPond is free software: you can redistribute it and/or modify
index c67b160636b5afa894975abb83dd50694a8ac85d..bae549594cecf1976ee4f14ef2eb0c105d30d5df 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1997--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 1997--2014 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
index 26cc606b891999c3d1f49be4a4bdda81358e28e3..c139b8a7bb2c4a27449b13b4dab3ba11e2e68023 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1996--2012 Han-Wen Nienhuys
+  Copyright (C) 1996--2014 Han-Wen Nienhuys
 
   LilyPond is free software: you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
index cb6494ca79398aba71583b37fcf7584b2717640c..d8c90e7be56101efdf739fa09f3b210d43b72ec0 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2013 Aleksandr Andreev <aleksandr.andreev@gmail.com>
+  Copyright (C) 2013--2014 Aleksandr Andreev <aleksandr.andreev@gmail.com>
 
   LilyPond is free software: you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
index 0f258bf89346b439bf901ceb3cbd90c2ffb60c7c..f8fa88a9222a30863b25b10641dee308fecf506f 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1996--2012 Han-Wen Nienhuys
+  Copyright (C) 1996--2014 Han-Wen Nienhuys
 
   LilyPond is free software: you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
index 1ad21499b86120345ebf6fbbf18d5dca86b8c0e5..321144f0af2a4d7c8fe82ce9f50e5b230baf7d60 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2002--2012 Juergen Reuter <reuter@ipd.uka.de>
+  Copyright (C) 2002--2014 Juergen Reuter <reuter@ipd.uka.de>
 
   LilyPond is free software: you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
index a273f5ac5d3da229e0cd49122edba438cddfabc5..002cbc0a8ec72e896d80d5dcaaedd1c402794d2e 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2005--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 2005--2014 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
index 4592b2497db9321b5bac7a96829e49a272328031..63e114a3fedf520d08c9df2cd2ecdff7067d70cb 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1998--2012 Jan Nieuwenhuizen <janneke@gnu.org>
+  Copyright (C) 1998--2014 Jan Nieuwenhuizen <janneke@gnu.org>
 
   LilyPond is free software: you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
index 4bc4cbe887403eb685cecf84442c2f741ad0f7f7..10dbc48389e0aaee5ca2158aa7d64b77d406c06e 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1997--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 1997--2014 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
@@ -49,11 +49,14 @@ private:
   Keyword_table *keytable_;
   SCM scopes_;
   SCM start_module_;
-  int hidden_state_;
   Input override_input_;
-  SCM eval_scm (SCM, char extra_token = 0);
+  SCM eval_scm (SCM, Input, char extra_token = 0);
 public:
-  SCM eval_scm_token (SCM sval) { return eval_scm (sval, '#'); }
+  SCM eval_scm_token (SCM sval, Input w)
+  {
+    w.step_forward ();
+    return eval_scm (sval, w, '#');
+  }
   SCM extra_tokens_;
   SCM *lexval_;
   Input *lexloc_;
@@ -94,7 +97,9 @@ public:
   SCM keyword_list () const;
   SCM lookup_identifier (const string &s);
   SCM lookup_identifier_symbol (SCM s);
-  void push_extra_token (int token_type, SCM scm = SCM_UNSPECIFIED);
+  void push_extra_token (Input const &where,
+                         int token_type, SCM scm = SCM_UNSPECIFIED);
+  int pop_extra_token ();
   void push_chord_state (SCM alist);
   void push_figuredbass_state ();
   void push_lyric_state ();
index 3b4c757d657192a315e97bfa893b7591b583c2e9..e2d484f3fb7d7993e2790476953bdecf6a7c11d5 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1997--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 1997--2014 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
@@ -25,8 +25,7 @@
 #include "pitch.hh"
 
 /**
-   State for the parser.  Do not ever add any variables to parse
-   musical content here.  We still have to remove default_duration_.
+   State for the parser.
 
    TODO: interface is too complicated
 */
@@ -34,18 +33,11 @@ class Lily_parser
 {
   DECLARE_SMOBS (Lily_parser);
 
-  char const *here_str0 () const;
-  Simultaneous_music *get_chord (Pitch tonic,
-                                 vector<Pitch> *adds, vector<Pitch> *subs,
-                                 Pitch *inversion, Pitch *bass, Duration d);
-  void set_chord_tremolo (int type);
-  void set_last_duration (Duration const *);
-  void set_last_pitch (Pitch const *);
-
 public:
   Lily_lexer *lexer_;
   Sources *sources_;
   Duration default_duration_;
+  int default_tremolo_type_;
   string output_basename_;
   SCM closures_;
 
index 80240d5923830edf35de5e3250161ffea4d1bbd0..83a71ab67273d4c0b3f7ef1953d24aa9b62c1254 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1997--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 1997--2014 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
index 1db84e4de4b35bf77e0ec2ae1d0a4a4398373af0..6cacfab231c4b8d6a05b2c1bdc9ed93f867e2fd6 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1999--2012 Jan Nieuwenhuizen <janneke@gnu.org>
+  Copyright (C) 1999--2014 Jan Nieuwenhuizen <janneke@gnu.org>
 
   LilyPond is free software: you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
index e79f01137af90f731856e813da91e4082c6a91a2..a38b04bc537625e81a10a194256eb02a58bcceec 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1998--2012 Jan Nieuwenhuizen <janneke@gnu.org>
+  Copyright (C) 1998--2014 Jan Nieuwenhuizen <janneke@gnu.org>
 
   LilyPond is free software: you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
index e4e267c7cc2e949ba7c6685f2f87f840a3506308..3a56c9c746a73027995072944789807ea019f2f6 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2004--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 2004--2014 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
index f95a7e2a407981456551a51788163e1da8f7a95b..6f167113b0f5f899902b3b6e052767852d30dadf 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1997--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 1997--2014 Han-Wen Nienhuys <hanwen@xs4all.nl>
   Jan Nieuwenhuizen <janneke@gnu.org>
 
   LilyPond is free software: you can redistribute it and/or modify
index daa99ab6b6d7ac598aec5e7efc6e2d137e8ea1d7..c00849ebb5c1cd790de3779fc080bf48c6f562e7 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2002--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 2002--2014 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
index db642e253d044a692352a971af791e0d61300936..2fba5f55a480a005137ef85cfd76f7425559260a 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1999--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 1999--2014 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
index 1fda9f86571639824d063781cf9587fce17eb96c..2d61f1db8be17c2ae8aa8603adb265ec86e04d64 100644 (file)
@@ -2,7 +2,7 @@
 /*
   extender-spanner.hh -- part of GNU LilyPond
 
-  Copyright (C) 1998--2012 Jan Nieuwenhuizen <janneke@gnu.org>
+  Copyright (C) 1998--2014 Jan Nieuwenhuizen <janneke@gnu.org>
 */
 
 #ifndef EXTENDER_SPANNER_HH
index f455a8a64f92e53df8563f83b0b18e112714e168..fc335bc8215fd121d71b253fefbe3aa472a8efa6 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1999--2012 Glen Prideaux <glenprideaux@iname.com>
+  Copyright (C) 1999--2014 Glen Prideaux <glenprideaux@iname.com>
 
   LilyPond is free software: you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
index 06a1a0999116464203448bc5987c14bcf8890217..9bad23f902d9600f84a5f97b219b0f6f843633bd 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1997--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 1997--2014 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
index 76c0817db87853b263412f4fb1cfd2cbcaa459a1..363c5fd748b68060d4adf26fb9af74bfb02865f1 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2002--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 2002--2014 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
index 7a441b31a909371d0461a5443495b76d42af58a4..72d0a0e3b9eefcbb07ad747ad8924b640bd25f3d 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2005--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 2005--2014 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
index 900a046b1586f34b1ebdc670afea4f52bceca0af..0881d6b6a8e639e5712e4e1e8c18075f0cc300f9 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2002--2012 Juergen Reuter <reuter@ipd.uka.de>,
+  Copyright (C) 2002--2014 Juergen Reuter <reuter@ipd.uka.de>,
   Pal Benko <benkop@freestart.hu>
 
   LilyPond is free software: you can redistribute it and/or modify
index c87adf6491a91c8a8ccbc4a0b041a2f06ca6f808..3769ce2e42fe7603cc6e3567bf88ea84d6c89eda 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2007--2012 Han-Wen Nienhuys <hanwen@lilypond.org>
+  Copyright (C) 2007--2014 Han-Wen Nienhuys <hanwen@lilypond.org>
 
   LilyPond is free software: you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
index 492e2e9fc83eb4a831c7e6cba230687e34d44650..9945be89060b34c0d1b89dd11c4db1fb13ddda08 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1997--2012 Jan Nieuwenhuizen <janneke@gnu.org>
+  Copyright (C) 1997--2014 Jan Nieuwenhuizen <janneke@gnu.org>
 
   LilyPond is free software: you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
index 7ea838fdd0f845ebb50eb676c27b9c42031605e7..3bb0090d2f0823b1c8272aa02173d27e64eb07ac 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1997--2012 Jan Nieuwenhuizen <janneke@gnu.org>
+  Copyright (C) 1997--2014 Jan Nieuwenhuizen <janneke@gnu.org>
 
   LilyPond is free software: you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
index ea76a02a6d823e9ebc390a096c1f6208b1db96e5..18df26b3a5c9244d5b117b79fb70dce989b703b3 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1996--2012 Han-Wen Nienhuys  <hanwen@xs4all.nl>
+  Copyright (C) 1996--2014 Han-Wen Nienhuys  <hanwen@xs4all.nl>
   Jan Nieuwenhuizen <janneke@gnu.org>
 
   LilyPond is free software: you can redistribute it and/or modify
@@ -39,7 +39,7 @@ int compare (Midi_note_event const &left, Midi_note_event const &right);
 class Midi_walker
 {
 public:
-  Midi_walker (Audio_staff *audio_staff, Midi_track *midi_track);
+  Midi_walker (Audio_staff *audio_staff, Midi_track *midi_track, int start_tick);
   ~Midi_walker ();
 
   void process ();
index 7c0ffc481b046da3a5a3d87ff271da8a6467f606..b2b032509ce8343bcef16cb9b1bb30b403adf983 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2005--2012 Jan Nieuwenhuizen <janneke@gnu.org>
+  Copyright (C) 2005--2014 Jan Nieuwenhuizen <janneke@gnu.org>
 
   LilyPond is free software: you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
index 22589a420e28c63ba3dc2e255fdb56e2b929e3fa..5f1703cfd95f01bd5de4c9477597449c286bb36d 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2007--2012 Nicolas Sceaux <nicolas.sceaux@free.fr>
+  Copyright (C) 2007--2014 Nicolas Sceaux <nicolas.sceaux@free.fr>
 
   LilyPond is free software: you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
index 9bba2d09e936bb2ef8499f48661b883a6c4fe03a..0ea0a942522ab08b218a2f64c94e3e2777e6cb71 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2005--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 2005--2014 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
index 40533cb3c3e36aeb608b6299fcb49e7969ba2f5f..c1c893a61320a6eb4b3fd6ee8479132bb56e2064 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1999--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 1999--2014 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
index 2aede3ce52cb2d3593bb0d966465fef0aae752ac..b7f79a6b84b1e7c399aca4b5b7eb6504b8dcd55d 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1999--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 1999--2014 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
index d012a77b0712ae052f1cb7ecfd3373c0c8cbabf9..d248bb1034c951b6e65a649ded3fcdd8d77ac36f 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1998--2012 Jan Nieuwenhuizen <janneke@gnu.org>
+  Copyright (C) 1998--2014 Jan Nieuwenhuizen <janneke@gnu.org>
 
   LilyPond is free software: you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
index d257b136b8745d575a7ba8518bd5102317339d44..f08b6c5de93bf33b50da3616f2ab11ad32d2bba1 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2004--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 2004--2014 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
index a34e3009037120f66baeeda9104d27a753ffe43a..9bb2637404d0de13bb2d5702b1b13a46a650a3ad 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1997--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 1997--2014 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
@@ -73,8 +73,8 @@ public:
   Moment music_start_mom () const;
   Music_iterator ();
   void report_event (Music *);
-  Context *get_outlet () const;
-  void set_context (Context *);
+  virtual Context *get_outlet () const;
+  virtual void set_context (Context *);
   static SCM get_static_get_iterator (Music *mus);
   void init_context (Music *, Context *);
   void quit ();
index cda3118be4cca94ea3b230f5ce6701559136c243..888774af55b62cf42c6cdc850427ba04a6186ca6 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1997--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 1997--2014 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
index 590b48b22d94c46bd8c2ad241fe61d172caf7af6..bed9e3df2a33b7a15a8fac51dacef17ec92b8074 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2000--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 2000--2014 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
index a306226724f42340d42b2319e1ad02c329f4eb5a..efb460d8c11b27e0c4d6941998ba8936f78efce6 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1998--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 1998--2014 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
@@ -34,6 +34,8 @@ public:
   Music_wrapper_iterator ();
   DECLARE_CLASSNAME (Music_wrapper_iterator);
 
+  virtual Context *get_outlet () const;
+  virtual void set_context (Context *trans);
   virtual void derived_substitute (Context *f, Context *t);
   virtual void derived_mark () const;
   virtual void construct_children ();
index b295075ec314559a92b16fe72797ac02dd4d6ae8..fcf42283f3a94bec93d659c34064101a576e8a8a 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1998--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 1998--2014 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
index 83cc5ff4c3148a4add8d1c7b165bc46a0bfe8829..8d1ffc7128f280990cd8880ad591d1d3938159b4 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1997--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 1997--2014 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
index db192bf19a7fc9c97c3fe13e8742fd3de8baa690..3759d85d3675b41ecf03a935bcb62e5120311000 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1997--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 1997--2014 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
index c2723f0ba8d570759a5da8c9cf40717c3937499d..151d9208adc20b66a4b9957845902edd725c38e4 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1997--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 1997--2014 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
index 6155dd7dc6513a4bf4cda1c759282dc38e24d2c1..4691c42cc50781024dee4849a62df93ce9baf4d7 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1996--2012 Han-Wen Nienhuys
+  Copyright (C) 1996--2014 Han-Wen Nienhuys
 
   LilyPond is free software: you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
index 9b8a4fd922a576fda038ef8d456026862569eb24..367acf1ebb74084a951ec467cd322c9ddebb7ccd 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2001--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 2001--2014 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
@@ -29,9 +29,9 @@ class Note_spacing
 public:
   DECLARE_GROB_INTERFACE ();
 
-  static Spring get_spacing (Grob *me, Item *, Real, Real);
+  static Spring get_spacing (Grob *me, Item *, Spring, Real);
   static void stem_dir_correction (Grob *me, Item *next_col, Real incr,
-                                   Real *, Real *);
+                                   Real *space);
 };
 
 #endif /* NOTE_SPACING_HH */
index cb55e9744bc890842a0445bb221a66886e834f7c..8c79ef9f273896de909e77b2753b68a3ec180b20 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2004--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 2004--2014 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
index 0e6a71d0d4830a82ba6d2c7d6203629c979a471b..546d057fbaf2936fbe3974d08ef7716c8bb4f885 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2006--2012 Joe Neeman <joeneeman@gmail.com>
+  Copyright (C) 2006--2014 Joe Neeman <joeneeman@gmail.com>
 
   LilyPond is free software: you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
index eff52c2c3845a7b3f47f85a42b2defcaf7595ed7..0cd9786d2b94f069b379de5d35e9a89653b2b699 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1997--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 1997--2014 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
index c84a56e67902eddad5d9314cb844f2ff6cf84884..435d849992034edf7884eab2032ac822f954d4c4 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2006--2012 Joe Neeman <joeneeman@gmail.com>
+  Copyright (C) 2006--2014 Joe Neeman <joeneeman@gmail.com>
 
   LilyPond is free software: you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
index b7d63a2e13e0f7d8b02ce519a3a0be7ffcf94ed3..930109bcf10217906805b1b6e1aacadff81db42f 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2009--2012 Joe Neeman <joeneeman@gmail.com>
+  Copyright (C) 2009--2014 Joe Neeman <joeneeman@gmail.com>
 
   LilyPond is free software: you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
index b608e080a9e43e161422779fdf0f2d4d1013f42c..a18173f5c4b3d7f32f945288c74395e6888b5484 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2007--2012 Nicolas Sceaux <nicolas.sceaux@free.fr>
+  Copyright (C) 2007--2014 Nicolas Sceaux <nicolas.sceaux@free.fr>
 
   LilyPond is free software: you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
index e076a52da8bb2812ec17b18451e76ad83f56a392..d75dd9861626c72a9ba172c50028a1da1c14e99a 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2007--2012 Han-Wen Nienhuys <hanwen@lilypond.org>
+  Copyright (C) 2007--2014 Han-Wen Nienhuys <hanwen@lilypond.org>
 
   LilyPond is free software: you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
index 8f524537bd5a5373fe0800efa4f4167f8f2beac2..92fba0210a238972787dec8a1af5deb467e0b0ea 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2006--2012 Joe Neeman <joeneeman@gmail.com>
+  Copyright (C) 2006--2014 Joe Neeman <joeneeman@gmail.com>
 
   LilyPond is free software: you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
index 5bb74e801b06eab24141f6514afc43f49211a80a..d8e1b969c7dbf5c9050e841244cd75d075beb0a4 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2006--2012 Joe Neeman <joeneeman@gmail.com>
+  Copyright (C) 2006--2014 Joe Neeman <joeneeman@gmail.com>
 
   LilyPond is free software: you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
index ad559551d1fe9d6a7919c3da9d6841e70e07fde1..43eca3a6ba156dde4d43e988cf732a703f2cc0bf 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2004--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 2004--2014 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
index d00c8bcd9b12b58d6b9340f7ab4f801fbb858e60..a0ccbe82cc44b13bafef4d3273f52972b51a07b8 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2004--2012  Jan Nieuwenhuizen <janneke@gnu.org>
+  Copyright (C) 2004--2014  Jan Nieuwenhuizen <janneke@gnu.org>
 
   LilyPond is free software: you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
index 3249432b40053ee4d0aec471396fd5c26b5cc040..44e7003d83c72f4afc0d588f072c6980bd1edea8 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2005--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 2005--2014 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
index 01a84d50dfd9a7085dfb7bbb1d13059e208ba507..c1638a2539f45bf47121886f31c7b2a2f6cf294c 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1997--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 1997--2014 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
index 02bc2746a2f841103bfae79194c81253f6ebc158..a674fda0c8c44550d8a816f7e95f7a75415b118a 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1997--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 1997--2014 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
index f980ee154e2fd6d26e8e7cd6993b91af83d23a4e..c44634b2c9b5117f4e1747dfc8b365714897317c 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1996--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 1996--2014 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
index 5d0688d93626096c505ab7f81799aad053fcc077..4fc87c7f766241a4e1a329eb6e0290506fcbcd56 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2004--2012  Jan Nieuwenhuizen <janneke@gnu.org>
+  Copyright (C) 2004--2014  Jan Nieuwenhuizen <janneke@gnu.org>
 
   LilyPond is free software: you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
index 047399a3222dfa73379642e805e3e1cbf0d01119..6234a84fec712efcbfc5085e46afebf4261c7963 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2004--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 2004--2014 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
 extern bool parse_protect_global;
 extern bool parsed_objects_should_be_dead;
 
-struct Parse_start
+class Parse_start
 {
-  char const *str;
-  int nchars;
-  Input start_location_;
-  bool safe_;
-  SCM (*func_) (Parse_start *ps);
+public:
   SCM form_;
+  Input &location_;
+  bool safe_;
   Lily_parser *parser_;
 
-  Parse_start ()
+  Parse_start (SCM form, Input &location, bool safe, Lily_parser *parser) :
+    form_ (form), location_ (location), safe_ (safe), parser_ (parser)
   {
-    str = 0;
-    nchars = 0;
-    safe_ = false;
-    parser_ = 0;
-    form_ = SCM_UNDEFINED;
-    func_ = 0;
   }
 };
 
 SCM catch_protected_parse_body (void *);
 SCM protected_ly_parse_scm (Parse_start *, bool);
-SCM ly_parse_scm (char const *, int *, Input, bool, Lily_parser *);
+SCM ly_parse_scm (Input&, bool, Lily_parser *);
 SCM ly_eval_scm (SCM, Input, bool, Lily_parser *);
 
 #endif /* PARSE_SCM_HH */
index 1c8e0f44b08c6b6e6b59bc70e0765668cdae2413..55bb7be88a8cc2a1612252643b7fbf0f8c51f864 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2001--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 2001--2014 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
index 9c3ce3742d99c6b5442aff24236995f873c0b0fb..8b5de863319365ba66070d9826d825aa6c3e1602 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1997--2012 Jan Nieuwenhuizen <janneke@gnu.org>
+  Copyright (C) 1997--2014 Jan Nieuwenhuizen <janneke@gnu.org>
 
   LilyPond is free software: you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
index 4316d8bb73a8069cb41077b8b8507ed5c58afd60..deaa33efcb66b4cec6011239c3d998d635f64bd1 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1996--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 1996--2014 Han-Wen Nienhuys <hanwen@xs4all.nl>
   Jan Nieuwenhuizen <janneke@gnu.org>
 
   LilyPond is free software: you can redistribute it and/or modify
index 16016256903542770862e9c613591374afb46af2..fcd5a26b424c73ff229d247ca2454e40d7b0f515 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1996--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 1996--2014 Han-Wen Nienhuys <hanwen@xs4all.nl>
   Jan Nieuwenhuizen <janneke@gnu.org>
 
   LilyPond is free software: you can redistribute it and/or modify
index e067590f526a6bee0dfb3761eca73bc0f004562f..08755a51817eda6125c3ba7b2052791fd851b5f1 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2004--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 2004--2014 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
index d7b36c2eb65a912bde8adf08ff823c8f118e96a9..cab0c5092202a2b46f4b2b9cc2c96a89c66039c7 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1998--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 1998--2014 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
index e265bedc79d0cf29d72debc26af7c7eaa0d242b2..356b29656cefb8f0e451cdd39cb2a2ecb97e16aa 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2005--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 2005--2014 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
index 58d93cae231c851ead2803c1116b71d1541a5dcc..77c1a634eaa48219b74d7ee80e0e69c6303eb6f3 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2004--2012  Jan Nieuwenhuizen <janneke@gnu.org>
+  Copyright (C) 2004--2014  Jan Nieuwenhuizen <janneke@gnu.org>
 
   LilyPond is free software: you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
index 6ed139d6a2f61741c9f24f8e340378837be280f8..3771d60ed0c653a056382a34fde234f5a02a7b41 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2005--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 2005--2014 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
index 83526816de55cffbb3081d651980b3b5bb0714d2..7048f70256b7b6b48fda0ab5ae212afbf255a292 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2001--2012 Jan Nieuwenhuizen <janneke@gnu.org>
+  Copyright (C) 2001--2014 Jan Nieuwenhuizen <janneke@gnu.org>
 
   LilyPond is free software: you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
index 08f7a983b8c3b78db6b55178c615f3959de084be..52fead07734b9abeb5315bbf30ec4e76b0f03c59 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1997--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 1997--2014 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
index ccd00126902d6ce409f108fe1411295cdce8201c..2847adb79a66147b8ceb01506eaf765c60be7d88 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1998--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 1998--2014 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
index 5cf10fee35bbf25ac961bb3d19f8992e31560a66..85dffe8ecd61aa4b1762facc44342ee3805a2a68 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2011--2012 Mike Solomon <mike@mikesolomon.org>
+  Copyright (C) 2011--2014 Mike Solomon <mike@mikesolomon.org>
 
   LilyPond is free software: you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
index 5fda3c73a7647d1a51e339932c35c1e28fbbfc41..b05ea79670cd100f4750421e8e82ceb11ff50979 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2005--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 2005--2014 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
index 35a4aaa6e088afa743e39dce30f92f56585e8a6c..e33c4b1b98434ff646422a998ed2363ae51a45d6 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1999--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 1999--2014 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
index 53c2cda6a0c6bd31de020b32f2ce5a2dfed733f6..39fa8e1bda85ef6eb989d07bf49c2f5bf68d71df 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1997--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 1997--2014 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
index d5dbae9e25791f385858ded77d6a146558ae98cc..900b3aefbca15638aad12da1f18286da3b548619 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1997--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 1997--2014 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
index 0739daad0f678b1004632d811b69a3a306270378..19b155049904db11a7cd1e214a1744720e2cfc94 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1997--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 1997--2014 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
index 077b8cfc1dfec5e3326a1ba050f8ada74280e9b4..e5833988956d03d4b9a8ae4ad559f797ab4a6385 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1998--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 1998--2014 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
index 62d8d553ec071050728686b5eed5f39b2f08ce1e..daaf0bb2dc6ca4c213ad96a32349872f5ef126a9 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2006--2012 Han-Wen Nienhuys <hanwen@lilypond.org>
+  Copyright (C) 2006--2014 Han-Wen Nienhuys <hanwen@lilypond.org>
 
   LilyPond is free software: you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
index a90252d04af2b54ddbf53ab5ed14595e494d76a2..997743152a169e7a1a066eb7d95a31a1a934e69b 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  Copyright (c) 2009--2012 Han-Wen Nienhuys <hanwen@lilypond.org>
+  Copyright (c) 2009--2014 Han-Wen Nienhuys <hanwen@lilypond.org>
 
   LilyPond is free software: you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
index 7905ef9e1dd4d1c98af49f3c65cae32875a5bb2c..56ede65e7d2fce033505bedd06734b0018b8356d 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2006--2012 Erik Sandberg  <mandolaerik@gmail.com>
+  Copyright (C) 2006--2014 Erik Sandberg  <mandolaerik@gmail.com>
 
   LilyPond is free software: you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
index c81225913fd3359e29eaa2389e038914b4193f0c..1182c503f9af5791e1fddf3301b049e5c09be680 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1999--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 1999--2014 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
index ffff8c41aa8dd3a027fb4ada53e8afe1ee5d1965..4b042fe94b43c63f812002c025a6cb00190276c9 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1997--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 1997--2014 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
index 8eb67b3f29cd584d8c10a082b87243b15ae37117..7a1cb628a68ee2c1bf6dc4e4643894ff5fd3d14b 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1996--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 1996--2014 Han-Wen Nienhuys <hanwen@xs4all.nl>
   Jan Nieuwenhuizen <janneke@gnu.org>
 
   LilyPond is free software: you can redistribute it and/or modify
index 1b34d404103a3cf6b1df5d07e5122f0ca26288ca..7fe68796ec17c3d57aecc5490ff5cec957ac7477 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1997--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 1997--2014 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
index 4b9a52ad9cc63df33ea00ac83a5f1fd8ceb0a114..81f08e3b9d1b48934ec4a6a5846bb71585f058c0 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1999--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 1999--2014 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
index 00e2e6d81fb4bb3f60abc915b57101d2d3ce3cdb..6d2ae552ca63f93aa08b587d51502912db0c27ea 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1999--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 1999--2014 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
index dd69f8663000e1a2aaf9d3e985451fbedce01b9e..2b34b39eff78b1dd47b09d10b66c54c8555e86bc 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1999--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 1999--2014 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
index 51a3d743888cdd97a9c511a122d58096f0943d5e..88bde59bba2e7a405defbf5fb213c1f5d94c8e2e 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2005--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 2005--2014 Han-Wen Nienhuys <hanwen@xs4all.nl>
 
 
   LilyPond is free software: you can redistribute it and/or modify
index a92b89fb4afd8898171bd62e3a13aa9face76355..2be7d15e56f20c54eb6181627f74aa8f53eed4a9 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2005--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 2005--2014 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
index 392c59ca48a127725238fce5f5d21b8faf622f25..40b518e97a1b3bd3b79f94e8c078cfcac4ecb46a 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1997--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 1997--2014 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
index a4fcdb0cc38c0eb007baece4c0118711f94d37d6..6c09ae3d09b0df9147c3de188fbc87f7c00639d6 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2002--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 2002--2014 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
index e7c1637471bdbedf4052acf45f73400d92a2704d..46f592fb8d89bb9d389cc861a9981411674bf925 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1999--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 1999--2014 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
index a4587c2a9528cef04a5b6c1c0ba8b9c24a0ef533..9f4186e58ba8fb3c9d30f58c2a02f46505891467 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2005--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 2005--2014 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
index 75a648b6bd2a5c8737f7d6b0a1d1a2fcad5aaec4..96fddabaeba3a1523f638b6bb750d49734e80467 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2000--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 2000--2014 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
index 675e3baf543882362218e19348f15822a99d3fd7..71b1045acad3258367239265ab21403fe939fd22 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1999--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 1999--2014 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
index c8766cd77cd280f4f5c1bcef226d4fcb1885499f..40d35de89b5147082a80c611c6fbeb3e65b14d19 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1997--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 1997--2014 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
index 566b9be3f74c74d94e8619500b77bb8815e07468..0d37f794f4557d9e7dfb04a57d749afdabeb0585 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2008--2012 Han-Wen Nienhuys <hanwen@lilypond.org>
+  Copyright (C) 2008--2014 Han-Wen Nienhuys <hanwen@lilypond.org>
 
   LilyPond is free software: you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
index 6846474857d476227c797ce021ec24fa1def8e38..bdb8be78131f448921c1459413dae4b2417635c9 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2006--2012 Joe Neeman <joeneeman@gmail.com>
+  Copyright (C) 2006--2014 Joe Neeman <joeneeman@gmail.com>
 
   LilyPond is free software: you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
index 5114815619659f834461230d21512715fda383f1..815eb1379a8ba0a6cbb4485f21a0087d90c823a2 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2004--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 2004--2014 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
index e27c96a759db69d3eca94da7761f347fd1ee7581..3dc62118635727c2eb12f8e991e0af541e164b65 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2013 Mike Solomon <mike@mikesolomon.org>
+  Copyright (C) 2013--2014 Mike Solomon <mike@mikesolomon.org>
 
   LilyPond is free software: you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
index 75b1ae8e4623cd75c45917e968a5a24f472cae30..6095cc3633d5d587c9bbe413e8f4154d70fba413 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2006--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 2006--2014 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
@@ -40,6 +40,8 @@ struct Slur_score_parameters
   Real free_head_distance_;
   Real extra_encompass_collision_distance_;
   Real extra_encompass_free_distance_;
+  Real gap_to_staffline_inside_;
+  Real gap_to_staffline_outside_;
   Real absolute_closeness_measure_;
   Real edge_slope_exponent_;
   Real close_to_edge_length_;
index e5ff38d6112c73750aab1d89e0baa8d1cbff4303..311de611323ae6555547aa8be31bcb1eaac237ed 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2004--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 2004--2014 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
@@ -100,6 +100,7 @@ struct Slur_score_state
   Drul_array<Offset> base_attachments_;
   vector<Slur_configuration *> configurations_;
   Real staff_space_;
+  Real line_thickness_;
   Real thickness_;
 
   Slur_score_state ();
index b20311785d2d1870c23075cc28e4645f4ea70c4d..1d900220e62557b133241fe7530cc20489ad3dcb 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2004--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 2004--2014 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
index cd111981bbea9c0fa38f27032e1a9dfefd20eeac..49c29325f0031f4e61908a1ee9035fa7f844cfc5 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1999--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 1999--2014 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
index 5f3553aea08c46e94a746ad410bfa3ec18d8d2e5..26bf6dbdb4810acb0df6b07a5f7a28bbf25d407e 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1999--2012 Jan Nieuwenhuizen <janneke@gnu.org>
+  Copyright (C) 1999--2014 Jan Nieuwenhuizen <janneke@gnu.org>
 
   LilyPond is free software: you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
index 5743fc56cfa64038e351ec4fc9762bf0d32c43f3..165b59038df137ec5c234c05b6be148ba5ab80e1 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1997--2012 Jan Nieuwenhuizen <janneke@gnu.org>
+  Copyright (C) 1997--2014 Jan Nieuwenhuizen <janneke@gnu.org>
 
   LilyPond is free software: you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
index 8293675ddfff01d31bde54df870f2781a5789b4a..8dd955182ee90f642f14608736c8a8f5593b093b 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2000--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 2000--2014 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
index d599df7566ab168bf8a3f752140e92cdcbb9c2d6..81f2401e9daee474b4dd2ac798aecffcb3e28fbf 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2002--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 2002--2014 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
index 2ca45c5e8539124a6f4062f411f5ba403a2e941f..a270d585e1e92f14e051e958798354e30d23d5fc 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2006--2012 Han-Wen Nienhuys <hanwen@lilypond.org>
+  Copyright (C) 2006--2014 Han-Wen Nienhuys <hanwen@lilypond.org>
 
   LilyPond is free software: you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
index 165f04a8adbccecd2b72821b93f271ce6d6f9260..ea61d5acdd576fd1462024b8e2ac955c3cd711d9 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2005--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 2005--2014 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
@@ -45,7 +45,7 @@ private:
   static bool fills_measure (Grob *, Item *, Item *);
 public:
   static vector<Grob *> get_columns (Grob *me);
-  static Real note_spacing (Grob *, Grob *, Grob *, Spacing_options const *);
+  static Spring note_spacing (Grob *, Grob *, Grob *, Spacing_options const *);
   static Spring standard_breakable_column_spacing (Grob *me, Item *l, Item *r, Spacing_options const *);
 
   DECLARE_SCHEME_CALLBACK (set_springs, (SCM));
index cce03ee4372035978320839b57213f6e8e9628f9..40b3473dcaef4046886decbc27e2852db8d9d707 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1996--2012 Han-Wen Nienhuys
+  Copyright (C) 1996--2014 Han-Wen Nienhuys
 
   LilyPond is free software: you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
index fe02fe898cd30e0d7e00ef75ce2f3b698cb5dead..d6fda83d32f91c76f7b8fd4c6b34c9309d748334 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1999--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 1999--2014 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
index 7d55392f6a92bc32bd738cb7ee471eebc423c00f..aaeb40173805da00562e600c6da20f2a1b7c7b81 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2009--2012 Joe Neeman <joeneeman@gmail.com>
+  Copyright (C) 2009--2014 Joe Neeman <joeneeman@gmail.com>
 
   LilyPond is free software: you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
index c20e1d5df86eafc540c91873d4462c13e719a76b..066041f93cc53f28f8e869d40950fb14cb0cd48e 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2001--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 2001--2014 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
index 79d07cfe7c91f9c6e1df1de0c5c75074f1784dbf..3867ac7549288eed393b2035e284d496ee90d6fc 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1999--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 1999--2014 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
index 688dccb0a686efd50e55eba44767522e2a9f1cde..7aae8a287d416bc150541bce78a1f370df954a0d 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1997--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 1997--2014 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
index 5b92ac752471c30124892186a1940fba8023ec54..a4089c2af93cd6155cbeaa39c929532ceb3185e0 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1997--2012 Jan Nieuwenhuizen <janneke@gnu.org>
+  Copyright (C) 1997--2014 Jan Nieuwenhuizen <janneke@gnu.org>
 
   LilyPond is free software: you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
index 7137046d302e08e41c22e9eaa5dcd444afcbe2ab..0ae21592bf890014ae375a61a6ad375c58418df1 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1997--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 1997--2014 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
index 101c00341af9eb48929dcc1dd258832de9d383c2..f657e2da0f65e68f351def9904db326a02bb534a 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1996--2012 Han-Wen Nienhuys
+  Copyright (C) 1996--2014 Han-Wen Nienhuys
 
   LilyPond is free software: you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
index 34bafa6d41a18c9958303028a16d517ad893029a..11baeaf76e0a1bbc52de69a19f3b3331665bea00 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1997--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 1997--2014 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
index f255ab53531d4833cb3ca24e6d31d2bdfbeb2f1e..3234c03d9f039b50332107d2ba15b829cf005731 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2005--2012 Erik Sandberg <mandolaerik@gmail.com>
+  Copyright (C) 2005--2014 Erik Sandberg <mandolaerik@gmail.com>
 
   LilyPond is free software: you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
index f3b183b1c814178b12707f127c32bd7953597227..ab650ec671575f893fb29b72d65dd866e4c2a9d4 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2000--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 2000--2014 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
index a5efe750adf0f976b8189b1bb53e14ef51cf76ad..97fee80117d2d2a8b838611cdbd718b1b2f526b2 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1996--2012 Han-Wen Nienhuys
+  Copyright (C) 1996--2014 Han-Wen Nienhuys
 
   LilyPond is free software: you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
index 1e736a50711b76e1f9ab9929fb28b41d8370e219..7c1bd765f8ceab726e3b46ef0773ceed40bd14d4 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1998--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 1998--2014 Han-Wen Nienhuys <hanwen@xs4all.nl>
   Jan Nieuwenhuizen <janneke@gnu.org>
 
   LilyPond is free software: you can redistribute it and/or modify
index 4832efe0bc56e4539e57781f229ee02c365908ea..79075a37e912f1b26f002b988a2ed61f6c479add 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2000--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 2000--2014 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
index 9da9e45a40a478aea507ac4eb7adaa6f1a7befc0..62b6a15a725ffdb9526a4369f7cd1895a21b4780 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2005--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 2005--2014 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
index b03b497007a8833601ba42cd99e5aae78cea81be..39fbb90eb99c725cb3158938cf64bbabd8291b4b 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2006--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 2006--2014 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
index 3f21dba6a11b3a7df5ca5f93c1c4e126993128bb..df24f2ccf4f66ab1023a2b2bcc823fe2bcc8005c 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2005--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 2005--2014 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
index 36f65fabd9168cb5cadafca325136340597591a7..330fe24011f468fea812cbf68fb1cfb069f8b8db 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2007--2012 Han-Wen Nienhuys <hanwen@lilypond.org>
+  Copyright (C) 2007--2014 Han-Wen Nienhuys <hanwen@lilypond.org>
 
   LilyPond is free software: you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
index 9e24099cdce13a17730dc636ad39922854166b08..349f5b83e25aed2b40f397c5ca9fd502c027d8be 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1997--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 1997--2014 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
index 3985e0b0eae4dfa71452a5f70be7e70f8a239e75..83e234bb7af8b7f790642739adacaca634b04e62 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1998--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>,
+  Copyright (C) 1998--2014 Han-Wen Nienhuys <hanwen@xs4all.nl>,
                  Erik Sandberg <mandolaerik@gmail.com>
 
   LilyPond is free software: you can redistribute it and/or modify
index 4fa922419d1e62ef22aef2a2c265995f35db149d..784af867b6faf2adeba662005dd1dc3e76108626 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1996--2012 Han-Wen Nienhuys
+  Copyright (C) 1996--2014 Han-Wen Nienhuys
 
   LilyPond is free software: you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
index 7629009d3e7e49841830c57c01bbd0e882a6a7fc..2b98e687869811502e540a88384948b044906bde 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1997--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 1997--2014 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
index afb9ce45a2fada6faec8dcf5aa56ade2f203e42b..bdb9e57ef30bfd0e8cdb59711005f5732e7b6c08 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2005--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 2005--2014 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
index ad044de86075d6d9e9178d05a4ed11fd8d81335d..edad599eea6d6ff03babaa0be125ef11187c83a5 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1997--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 1997--2014 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
index be6781eb030aec34b5d41cb1077b06347e0be71c..858af4ce21454b4a6b710811c269cdb022b0626a 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1997--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 1997--2014 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
index 4ce8f6902e2fb5a451852389ba6869e00d6d9843..53697b38e63d4eb0040738c11f8137b27963449b 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2005--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 2005--2014 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
index 2f4bf38e1959681e88382fd9d3aca3c38f037200..48e7e4718059d5b43a49e0e7d926c5241f74da72 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1997--2012 Jan Nieuwenhuizen <janneke@gnu.org>
+  Copyright (C) 1997--2014 Jan Nieuwenhuizen <janneke@gnu.org>
 
   LilyPond is free software: you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
diff --git a/lily/include/tuplet-number.hh b/lily/include/tuplet-number.hh
new file mode 100644 (file)
index 0000000..214f0ac
--- /dev/null
@@ -0,0 +1,43 @@
+/*
+  This file is part of LilyPond, the GNU music typesetter.
+
+  Copyright (C) 1997--2014 Jan Nieuwenhuizen <janneke@gnu.org>
+
+  LilyPond is free software: you can redistribute it and/or modify
+  it under the terms of the GNU General Public License as published by
+  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 Tuplet_number_HH
+#define Tuplet_number_HH
+
+#include "lily-proto.hh"
+#include "std-vector.hh"
+#include "grob-interface.hh"
+
+struct Tuplet_number
+{
+  DECLARE_SCHEME_CALLBACK (print, (SCM));
+  DECLARE_SCHEME_CALLBACK (calc_x_offset, (SCM));
+  DECLARE_SCHEME_CALLBACK (calc_y_offset, (SCM));
+  DECLARE_SCHEME_CALLBACK (calc_cross_staff, (SCM));
+  DECLARE_GROB_INTERFACE ();
+
+  static Real calc_offset (Spanner *me, Axis a); // not used
+
+  static Grob *select_reference_stem (Grob *me, vector<Grob *> const &cols);
+  static Drul_array<Grob *> adjacent_note_columns (Grob *me, Grob *ref_stem);
+  static bool knee_position_against_beam (Grob *me, Grob *ref_stem);
+};
+
+#endif // Tuplet_number_HH
+
index ccf0971844aa7721662321e96a883b2e676d69e3..1fd32d40bb68128d9a3a6c8ac650ff0accb7de1c 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2005--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 2005--2014 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
@@ -23,6 +23,7 @@
 #include "lily-guile.hh"
 
 bool is_unpure_pure_container (SCM s);
+bool is_unchanging_unpure_pure_container (SCM s);
 SCM unpure_pure_container_unpure_part (SCM smob);
 SCM unpure_pure_container_pure_part (SCM smob);
 SCM ly_make_unpure_pure_container (SCM, SCM);
index e3c6d51df8a7493622c7d8f38faee6d17662bb96..c8aab6870e61a226a0ba7d450279387ceb4260ec 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2003--2012 Juergen Reuter <reuter@ipd.uka.de>
+  Copyright (C) 2003--2014 Juergen Reuter <reuter@ipd.uka.de>
 
   LilyPond is free software: you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
index d9a7bfb2490f94083d7afb95923f4b588519d5c6..a42e8405313356a76f46ef9d15e0cab1d678ecd7 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1997--2012 Jan Nieuwenhuizen <janneke@gnu.org>
+  Copyright (C) 1997--2014 Jan Nieuwenhuizen <janneke@gnu.org>
 
   LilyPond is free software: you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
index 280a32de9ed8220fe5d6f74f2824c3ad58719c9d..01cad8c9d76779084c4e5f2588cd5ac410d61982 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2005--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 2005--2014 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
index 4d446ab6c014ff5ea320d3d03d91e6420ba2a1d3..4aef6f122d09418ae043ddd750eb6e3a131e5a88 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2000--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 2000--2014 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
index a091ef9855c72111c069d77d4931599bc3df9e83..b5d5dccc5ce122392a1a0766b9115f18885f2d0f 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1997--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 1997--2014 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
@@ -142,7 +142,7 @@ string
 Input::line_number_string () const
 {
   if (source_file_)
-    return to_string (source_file_->get_line (start_));
+    return ::to_string (source_file_->get_line (start_));
   return "?";
 }
 
index 0abc7e432955bf8306b9f7f6704b02f9e4bdd766..879914a81de2032db6dd6e6f3a57cd26938a1001 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2000--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 2000--2014 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
index c18ca4666b1c91d79c7a9745c181221f8aa863c4..f0c6e6aec61515925322d8b39eb4849225213191 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2006--2012 Han-Wen Nienhuys <hanwen@lilypond.org>
+  Copyright (C) 2006--2014 Han-Wen Nienhuys <hanwen@lilypond.org>
 
 
   LilyPond is free software: you can redistribute it and/or modify
index d26e3e0d2887dde7ae79e999dcde65a9f4948044..96d7d27704b206ef5b11ad4b58e0337a400478be 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2011--2012 Mike Solomon <mike@mikesolomon.org>
+  Copyright (C) 2011--2014 Mike Solomon <mike@mikesolomon.org>
   Jan Nieuwenhuizen <janneke@gnu.org>
 
   LilyPond is free software: you can redistribute it and/or modify
index c316ac311e35eff0b35ec3e26695ce191adfd7cf..d2188194324919fc86152be284bf2dde657c397a 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2005--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 2005--2014 Han-Wen Nienhuys <hanwen@xs4all.nl>
 
 
   LilyPond is free software: you can redistribute it and/or modify
index 9cc808dde4491c11f87e928b001d1be1deedca0c..e71bc4190b4f5f3fe8aa3d8026bdf5eb4520f29f 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1997--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 1997--2014 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
index f6ba297ccfe4b5bd8fd84776e9d62c3799a5bc8e..008a024e5afaf8364d00537395bea1c27a10a421 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2010--2012 Joe Neeman <joeneeman@gmail.com>
+  Copyright (C) 2010--2014 Joe Neeman <joeneeman@gmail.com>
 
   LilyPond is free software: you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
index 5707b548b99f46e8923a99bd710115d06381e2e6..5b48b1d78afbdda9303407c2ee136b2ae11d7a2c 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1997--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 1997--2014 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
@@ -78,8 +78,8 @@ Key_engraver::create_key (bool is_default)
       item_->set_property ("c0-position",
                            get_property ("middleCClefPosition"));
 
-      SCM last = get_property ("lastKeySignature");
-      SCM key = get_property ("keySignature");
+      SCM last = get_property ("lastKeyAlterations");
+      SCM key = get_property ("keyAlterations");
 
       if ((to_boolean (get_property ("printKeyCancellation"))
            || key == SCM_EOL)
@@ -106,7 +106,7 @@ Key_engraver::create_key (bool is_default)
 
               cancellation_->set_property ("alteration-alist", restore);
               cancellation_->set_property ("c0-position",
-                                           get_property ("middleCPosition"));
+                                           get_property ("middleCClefPosition"));
             }
         }
 
@@ -140,7 +140,7 @@ Key_engraver::acknowledge_clef (Grob_info /* info */)
 void
 Key_engraver::acknowledge_bar_line (Grob_info /* info */)
 {
-  if (scm_is_pair (get_property ("keySignature")))
+  if (scm_is_pair (get_property ("keyAlterations")))
     create_key (true);
 }
 
@@ -148,7 +148,7 @@ void
 Key_engraver::process_music ()
 {
   if (key_event_
-      || get_property ("lastKeySignature") != get_property ("keySignature"))
+      || get_property ("lastKeyAlterations") != get_property ("keyAlterations"))
     create_key (false);
 }
 
@@ -156,7 +156,7 @@ void
 Key_engraver::stop_translation_timestep ()
 {
   item_ = 0;
-  context ()->set_property ("lastKeySignature", get_property ("keySignature"));
+  context ()->set_property ("lastKeyAlterations", get_property ("keyAlterations"));
   cancellation_ = 0;
   key_event_ = 0;
 }
@@ -198,7 +198,7 @@ Key_engraver::read_event (Stream_event const *r)
         r->origin ()->warning (_ ("Incomplete keyAlterationOrder for key signature"));
     }
 
-  context ()->set_property ("keySignature", scm_reverse_x (accs, SCM_EOL));
+  context ()->set_property ("keyAlterations", scm_reverse_x (accs, SCM_EOL));
   context ()->set_property ("tonic",
                             r->get_property ("tonic"));
 }
@@ -206,8 +206,8 @@ Key_engraver::read_event (Stream_event const *r)
 void
 Key_engraver::initialize ()
 {
-  context ()->set_property ("keySignature", SCM_EOL);
-  context ()->set_property ("lastKeySignature", SCM_EOL);
+  context ()->set_property ("keyAlterations", SCM_EOL);
+  context ()->set_property ("lastKeyAlterations", SCM_EOL);
 
   Pitch p (0, 0, 0);
   context ()->set_property ("tonic", p.smobbed_copy ());
@@ -229,13 +229,13 @@ ADD_TRANSLATOR (Key_engraver,
                 "explicitKeySignatureVisibility "
                 "extraNatural "
                 "keyAlterationOrder "
-                "keySignature "
-                "lastKeySignature "
+                "keyAlterations "
+                "lastKeyAlterations "
                 "printKeyCancellation "
                 "middleCClefPosition ",
 
                 /* write */
-                "keySignature "
-                "lastKeySignature "
+                "keyAlterations "
+                "lastKeyAlterations "
                 "tonic "
                );
index a611405244433a2872e2134050bfb64f164fb2aa..9a3675fe3ad7c06cb3b46aaf0df9e1ea56c5068e 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1997--2012 Jan Nieuwenhuizen <janneke@gnu.org>
+  Copyright (C) 1997--2014 Jan Nieuwenhuizen <janneke@gnu.org>
 
   LilyPond is free software: you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
index fb691c00d806b60948cb187f44ad166ce4e7c80a..9181071aeefad9c7231e832d7544e74f780d7671 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1996--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 1996--2014 Han-Wen Nienhuys <hanwen@xs4all.nl>
 
   keyplacement by Mats Bengtsson
 
index 92b9848c5b6665f2c52ec37b8a520c58c5b7e886..85d6d8dc0fb66dcf0eb85d9cb4603908c24e0eef 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2013 Aleksandr Andreev <aleksandr.andreev@gmail.com>
+  Copyright (C) 2013--2014 Aleksandr Andreev <aleksandr.andreev@gmail.com>
 
   LilyPond is free software: you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
index 21ea23e16a10b5d60cee05ed3e2fcdaf99c0d327..2421e156ef8c0c20e9df06c514cd99fa87794b1e 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2013 Aleksandr Andreev <aleksandr.andreev@gmail.com>
+  Copyright (C) 2013--2014 Aleksandr Andreev <aleksandr.andreev@gmail.com>
 
   LilyPond is free software: you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
index edbd2c1dfb647b9694d5b251967ae7e0b6bc764b..f707964eb77970613deddc46a4014c2b36387e6d 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2005--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 2005--2014 Han-Wen Nienhuys <hanwen@xs4all.nl>
 
 
   LilyPond is free software: you can redistribute it and/or modify
index 0d539104fead770c5a298b153742388036b8784e..0cc99c6e83962827e022520b703b5ca36d998e37 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1996--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 1996--2014 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
index 2bb12c9cdcbb7c0c7e6d0ca3c696d0e47ac5b745..a596721f612ba4e826f839ae8109272f55766415 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2004--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 2004--2014 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
index de88ba402f6518fa44f068b3c431ce975fc25f69..7a45bef2de731d78fba6ef3b064feaae62d29876 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2004--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 2004--2014 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
@@ -100,7 +100,7 @@ Ledger_line_spanner::set_spacing_rods (SCM smob)
       Item *h = heads[i];
 
       int pos = Staff_symbol_referencer::get_rounded_position (h);
-      if (staff_extent.contains (pos))
+      if  (Staff_symbol::ledger_positions (staff, pos).empty ())
         continue;
 
       /* Ambitus heads can appear out-of-order in heads[],
index 285de24267d372d2ca7498a9c5bcf96f0006d003..66da12433604f8a484564883fc057ae0bda8ffb8 100644 (file)
@@ -2,7 +2,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1996--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 1996--2014 Han-Wen Nienhuys <hanwen@xs4all.nl>
                  Jan Nieuwenhuizen <janneke@gnu.org>
 
   LilyPond is free software: you can redistribute it and/or modify
@@ -123,7 +123,6 @@ SCM (* scm_parse_error_handler) (void *);
 %option never-interactive 
 %option warn
 
-%x extratoken
 %x chords
 %x figures
 %x incl
@@ -186,36 +185,6 @@ BOM_UTF8   \357\273\277
        // swallow and ignore carriage returns
 }
 
-<extratoken>{ANY_CHAR} {
-  /* Generate a token without swallowing anything */
-
-  /* First unswallow the eaten character */
-  add_lexed_char (-YYLeng ());
-  yyless (0);
-
-  /* produce requested token */
-  int type = scm_to_int (scm_caar (extra_tokens_));
-  yylval = scm_cdar (extra_tokens_);
-  extra_tokens_ = scm_cdr (extra_tokens_);
-  if (scm_is_null (extra_tokens_))
-    yy_pop_state ();
-
-  return type;
-}
-
-<extratoken><<EOF>>    {
-  /* Generate a token without swallowing anything */
-
-  /* produce requested token */
-  int type = scm_to_int (scm_caar (extra_tokens_));
-  yylval = scm_cdar (extra_tokens_);
-  extra_tokens_ = scm_cdr (extra_tokens_);
-  if (scm_is_null (extra_tokens_))
-    yy_pop_state ();
-
-  return type;
-}
-
    /* Use the trailing context feature. Otherwise, the BOM will not be
       found if the file starts with an identifier definition. */
 <INITIAL,chords,lyrics,figures,notes>{BOM_UTF8}/.* {
@@ -361,12 +330,11 @@ BOM_UTF8  \357\273\277
          }
 }
 <incl>(\$|#) { // scm for the filename
-       int n = 0;
        Input hi = here_input();
        hi.step_forward ();
-       SCM sval = ly_parse_scm (hi.start (), &n, hi,
-               be_safe_global && is_main_input_, parser_);
-       sval = eval_scm (sval);
+       SCM sval = ly_parse_scm (hi, be_safe_global && is_main_input_, parser_);
+       sval = eval_scm (sval, hi);
+       int n = hi.end () - hi.start ();
 
        for (int i = 0; i < n; i++)
        {
@@ -416,15 +384,14 @@ BOM_UTF8  \357\273\277
        return MULTI_MEASURE_REST;
 }
 <INITIAL,chords,figures,lyrics,markup,notes>#  { //embedded scm
-       int n = 0;
        Input hi = here_input();
        hi.step_forward ();
-       SCM sval = ly_parse_scm (hi.start (), &n, hi,
-               be_safe_global && is_main_input_, parser_);
+       SCM sval = ly_parse_scm (hi, be_safe_global && is_main_input_, parser_);
 
        if (sval == SCM_UNDEFINED)
                error_level_ = 1;
 
+       int n = hi.end () - hi.start ();
        for (int i = 0; i < n; i++)
        {
                yyinput ();
@@ -436,11 +403,11 @@ BOM_UTF8  \357\273\277
 }
 
 <INITIAL,chords,figures,lyrics,markup,notes>\$ { //immediate scm
-       int n = 0;
        Input hi = here_input();
        hi.step_forward ();
-       SCM sval = ly_parse_scm (hi.start (), &n, hi,
-               be_safe_global && is_main_input_, parser_);
+       SCM sval = ly_parse_scm (hi, be_safe_global && is_main_input_, parser_);
+
+       int n = hi.end () - hi.start ();
 
        for (int i = 0; i < n; i++)
        {
@@ -448,7 +415,7 @@ BOM_UTF8    \357\273\277
        }
        char_count_stack_.back () += n;
 
-       sval = eval_scm (sval, '$');
+       sval = eval_scm (sval, hi, '$');
 
        int token = scan_scm_id (sval);
        if (!scm_is_eq (yylval, SCM_UNSPECIFIED))
@@ -673,6 +640,10 @@ BOM_UTF8   \357\273\277
                 yylval = SCM_UNSPECIFIED;
                return SCORE;
        }
+       \\score-lines {
+               yylval = SCM_UNSPECIFIED;
+               return SCORELINES;
+       }
        \\\"    {
                start_command_quote ();
        }
@@ -713,17 +684,17 @@ BOM_UTF8  \357\273\277
                // value (for token type MARKUP_FUNCTION or
                // MARKUP_LIST_FUNCTION).
 
-               push_extra_token(EXPECT_NO_MORE_ARGS);
+               push_extra_token (here_input (), EXPECT_NO_MORE_ARGS);
                s = scm_cdr(s);
                for (; scm_is_pair(s); s = scm_cdr(s)) {
                  SCM predicate = scm_car(s);
 
                  if (predicate == ly_lily_module_constant ("markup-list?"))
-                   push_extra_token(EXPECT_MARKUP_LIST);
+                   push_extra_token (here_input (), EXPECT_MARKUP_LIST);
                  else if (predicate == ly_lily_module_constant ("markup?"))
-                   push_extra_token(EXPECT_MARKUP);
+                   push_extra_token (here_input (), EXPECT_MARKUP);
                  else
-                   push_extra_token(EXPECT_SCM, predicate);
+                   push_extra_token (here_input (), EXPECT_SCM, predicate);
                }
                return token_type;
        }
@@ -842,15 +813,25 @@ BOM_UTF8  \357\273\277
 /* Make the lexer generate a token of the given type as the next token. 
  TODO: make it possible to define a value for the token as well */
 void
-Lily_lexer::push_extra_token (int token_type, SCM scm)
+Lily_lexer::push_extra_token (Input const &where, int token_type, SCM scm)
+{
+       extra_tokens_ = scm_cons (scm_cons2 (make_input (where),
+                                            scm_from_int (token_type),
+                                            scm), extra_tokens_);
+}
+
+int
+Lily_lexer::pop_extra_token ()
 {
        if (scm_is_null (extra_tokens_))
-       {
-               if (YY_START != extratoken)
-                       hidden_state_ = YY_START;
-               yy_push_state (extratoken);
-       }
-       extra_tokens_ = scm_acons (scm_from_int (token_type), scm, extra_tokens_);
+               return -1;
+
+  /* produce requested token */
+       yylloc = *unsmob_input (scm_caar (extra_tokens_));
+       int type = scm_to_int (scm_cadar (extra_tokens_));
+       yylval = scm_cddar (extra_tokens_);
+       extra_tokens_ = scm_cdr (extra_tokens_);
+       return type;
 }
 
 void
@@ -891,32 +872,17 @@ Lily_lexer::push_markup_state ()
 void
 Lily_lexer::push_note_state (SCM alist)
 {
-       bool extra = (YYSTATE == extratoken);
-
        SCM p = scm_assq (alist, pitchname_tab_stack_);
 
-       if (extra)
-               yy_pop_state ();
-
        if (scm_is_false (p))
                p = scm_cons (alist, alist_to_hashq (alist));
        pitchname_tab_stack_ = scm_cons (p, pitchname_tab_stack_);
        yy_push_state (notes);
-
-       if (extra) {
-               hidden_state_ = YYSTATE;
-               yy_push_state (extratoken);
-       }
 }
 
 void
 Lily_lexer::pop_state ()
 {
-       bool extra = (YYSTATE == extratoken);
-
-       if (extra)
-               yy_pop_state ();
-
        if (YYSTATE == notes || YYSTATE == chords)
                pitchname_tab_stack_ = scm_cdr (pitchname_tab_stack_);
 
@@ -924,10 +890,6 @@ Lily_lexer::pop_state ()
        if (YYSTATE != maininput)
                yy_pop_state ();
 
-       if (extra) {
-               hidden_state_ = YYSTATE;
-               yy_push_state (extratoken);
-       }
 }
 
 int
@@ -954,7 +916,7 @@ Lily_lexer::scan_escaped_word (const string &str)
        SCM sid = lookup_identifier (str);
        if (Music *m = unsmob_music (sid))
        {
-               m->set_spot (override_input (last_input_));
+               m->set_spot (override_input (here_input ()));
        }
 
        if (sid != SCM_UNDEFINED)
@@ -974,7 +936,7 @@ Lily_lexer::scan_shorthand (const string &str)
        SCM sid = lookup_identifier (str);
        if (Music *m = unsmob_music (sid))
        {
-               m->set_spot (override_input (last_input_));
+               m->set_spot (override_input (here_input ()));
        }
 
        if (sid != SCM_UNDEFINED)
@@ -1013,7 +975,7 @@ Lily_lexer::scan_scm_id (SCM sid)
                        funtype = SCM_FUNCTION;
                else programming_error ("Bad syntax function predicate");
 
-               push_extra_token (EXPECT_NO_MORE_ARGS);
+               push_extra_token (here_input (), EXPECT_NO_MORE_ARGS);
                for (s = scm_cdr (s); scm_is_pair (s); s = scm_cdr (s))
                {
                        SCM optional = SCM_UNDEFINED;
@@ -1026,14 +988,14 @@ Lily_lexer::scan_scm_id (SCM sid)
                        }
                        
                        if (ly_is_procedure (cs))
-                               push_extra_token (EXPECT_SCM, cs);
+                               push_extra_token (here_input (), EXPECT_SCM, cs);
                        else
                        {
                                programming_error ("Function parameter without type-checking predicate");
                                continue;
                        }
                        if (!scm_is_eq (optional, SCM_UNDEFINED))
-                               push_extra_token (EXPECT_OPTIONAL, optional);
+                               push_extra_token (here_input (), EXPECT_OPTIONAL, optional);
                }
                return funtype;
        }
@@ -1071,10 +1033,7 @@ Lily_lexer::scan_bare_word (const string &str)
 int
 Lily_lexer::get_state () const
 {
-       if (YY_START == extratoken)
-               return hidden_state_;
-       else
-               return YY_START;
+       return YY_START;
 }
 
 bool
@@ -1109,14 +1068,14 @@ Lily_lexer::is_figure_state () const
 // this function is private.
 
 SCM
-Lily_lexer::eval_scm (SCM readerdata, char extra_token)
+Lily_lexer::eval_scm (SCM readerdata, Input hi, char extra_token)
 {
        SCM sval = SCM_UNDEFINED;
 
        if (!SCM_UNBNDP (readerdata))
        {
-               sval = ly_eval_scm (scm_car (readerdata),
-                                   *unsmob_input (scm_cdr (readerdata)),
+               sval = ly_eval_scm (readerdata,
+                                   hi,
                                    be_safe_global && is_main_input_,
                                    parser_);
        }
@@ -1140,7 +1099,7 @@ Lily_lexer::eval_scm (SCM readerdata, char extra_token)
                                if (Music *m = unsmob_music (v))
                                {
                                        if (!unsmob_input (m->get_property ("origin")))
-                                               m->set_spot (override_input (last_input_));
+                                               m->set_spot (override_input (here_input ()));
                                }
                                        
                                int token;
@@ -1148,10 +1107,12 @@ Lily_lexer::eval_scm (SCM readerdata, char extra_token)
                                case '$':
                                        token = scan_scm_id (v);
                                        if (!scm_is_eq (yylval, SCM_UNSPECIFIED))
-                                               push_extra_token (token, yylval);
+                                               push_extra_token (here_input (),
+                                                                 token, yylval);
                                        break;
                                case '#':
-                                       push_extra_token (SCM_IDENTIFIER, v);
+                                       push_extra_token (here_input (),
+                                                         SCM_IDENTIFIER, v);
                                        break;
                                }
                        }
@@ -1163,7 +1124,7 @@ Lily_lexer::eval_scm (SCM readerdata, char extra_token)
        if (Music *m = unsmob_music (sval))
        {
                if (!unsmob_input (m->get_property ("origin")))
-                       m->set_spot (override_input (last_input_));
+                       m->set_spot (override_input (here_input ()));
        }
 
        return sval;
index 7453c05840a0aa7eae0f195bf3abf518b085dbef..cb37ead208e671b477346551b89519eb04b332c1 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2002--2012 Juergen Reuter <reuter@ipd.uka.de>
+  Copyright (C) 2002--2014 Juergen Reuter <reuter@ipd.uka.de>
 
   LilyPond is free software: you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
index 297337a976eb404c7b4096eb26307fb29c537578..8bd4d66137b4907c832bd0981ce739f507d81ed3 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2002--2012 Juergen Reuter <reuter@ipd.uka.de>
+  Copyright (C) 2002--2014 Juergen Reuter <reuter@ipd.uka.de>
 
   LilyPond is free software: you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
index 06018c4c9c48502dde6b90eedd16fd05c17c6acf..c37eb33844389b293f174af367ff93626c2722d6 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1998--2012 Jan Nieuwenhuizen <janneke@gnu.org>
+  Copyright (C) 1998--2014 Jan Nieuwenhuizen <janneke@gnu.org>
   Han-Wen Nienhuys <hanwen@xs4all.nl>
 
   LilyPond is free software: you can redistribute it and/or modify
index 3cc187d39cd4366c0f8a7fb4bcbe43569a9888e9..55c637bcb176b5e63591024a0e1d5d63ee3912f9 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2006--2012 Han-Wen Nienhuys <hanwen@lilypond.org>
+  Copyright (C) 2006--2014 Han-Wen Nienhuys <hanwen@lilypond.org>
 
 
   LilyPond is free software: you can redistribute it and/or modify
index c72ff8fc129eca056015f930b7a94c02d528902a..d2d57fdbd7e43b7fcb5fea803b833e17e9b90076 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1997--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 1997--2014 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
index 74d3feb65349a37f54e46a9e6437ca6ebefccca2..0da04c9296003f6df730bca8c54cc00d8361d368 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2005--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 2005--2014 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
index cd7819e9c8d5f6823592e310783025ed15933280..a82ec94bed4c79034caf28e128fa8dcfc309c56a 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1997--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 1997--2014 Han-Wen Nienhuys <hanwen@xs4all.nl>
   Jan Nieuwenhuizen <janneke@gnu.org>
 
   LilyPond is free software: you can redistribute it and/or modify
@@ -44,6 +44,7 @@ Lily_parser::Lily_parser (Sources *sources)
   lexer_ = 0;
   sources_ = sources;
   default_duration_ = Duration (2, 0);
+  default_tremolo_type_ = 8;
   error_level_ = 0;
   closures_ = SCM_EOL;
 
@@ -58,6 +59,7 @@ Lily_parser::Lily_parser (Lily_parser const &src, SCM closures, SCM location)
   lexer_ = 0;
   sources_ = src.sources_;
   default_duration_ = src.default_duration_;
+  default_tremolo_type_ = src.default_tremolo_type_;
   error_level_ = 0;
   output_basename_ = src.output_basename_;
   closures_ = closures;
@@ -167,7 +169,7 @@ Lily_parser::parse_string_expression (const string &ly_code, const string &filen
   SCM mod = lexer_->set_current_scope ();
   SCM parser = lexer_->lookup_identifier_symbol (ly_symbol2scm ("parser"));
   lexer_->set_identifier (ly_symbol2scm ("parser"), self_scm ());
-  lexer_->push_extra_token (EMBEDDED_LILY);
+  lexer_->push_extra_token (Input (), EMBEDDED_LILY);
   SCM result = do_yyparse ();
 
   lexer_->set_identifier (ly_symbol2scm ("parser"), parser);
@@ -195,12 +197,6 @@ Lily_parser::clear ()
   lexer_ = 0;
 }
 
-char const *
-Lily_parser::here_str0 () const
-{
-  return lexer_->here_str0 ();
-}
-
 void
 Lily_parser::parser_error (const string &s)
 {
index 99e9b7df4c621d06a75d3a058936f05af13cc7e8..ef27bc36260548dc85f93c44636c49e847ec643b 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1999--2012 Jan Nieuwenhuizen <janneke@gnu.org>
+  Copyright (C) 1999--2014 Jan Nieuwenhuizen <janneke@gnu.org>
 
   LilyPond is free software: you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
index 9c6d2130a331dd5f2599bbcae66090f501cf7ac7..fd76deec67e1ea33654c1a44db35381fed1d9d6a 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1998--2012 Jan Nieuwenhuizen <janneke@gnu.org>
+  Copyright (C) 1998--2014 Jan Nieuwenhuizen <janneke@gnu.org>
 
   LilyPond is free software: you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
index 4045c65a29a555625571d81221196b0b98bc439d..e09242da2ff5cefb8fc5c8f9ed034aada095bd69 100644 (file)
@@ -20,7 +20,7 @@ VS_VERSION_INFO VERSIONINFO
        VALUE "FileDescription", "LilyPond"
        VALUE "FileVersion", "@MAJOR_VERSION@.@MINOR_VERSION@.@PATCH_LEVEL@.@BUILD_VERSION@"
        VALUE "InternalName", "LilyPond@"
-       VALUE "LegalCopyright ", "Copyright (C) 1995--2012  Han-Wen Nienhuys and Jan Nieuwenhuizen, and others."
+       VALUE "LegalCopyright ", "Copyright (C) 1995--2014  Han-Wen Nienhuys and Jan Nieuwenhuizen, and others."
        VALUE "OriginalFilename", "lilypond.exe"
        VALUE "ProductName", "LilyPond"
        VALUE "ProductVersion", "@MAJOR_VERSION@.@MINOR_VERSION@.@PATCH_LEVEL@"
index bc6099916ad8ef82af07fb166b50ecd1972641c3..1e2dd53c6bd1ca9cd25029e711660ff9ef6fd7b8 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2004--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 2004--2014 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
index 6c5e627442ce460650c66f5c20456248f98c4e57..2c7cfdda1d5d12fd92a29cccfefd8b751b559498 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2000--2012 Jan Nieuwenhuizen <janneke@gnu.org>
+  Copyright (C) 2000--2014 Jan Nieuwenhuizen <janneke@gnu.org>
 
   LilyPond is free software: you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
index e903d5a9a403b18f1ce1192642f8f769619b741e..344d42c906d3344404a1753110c3a08642d5846c 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1997--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 1997--2014 Han-Wen Nienhuys <hanwen@xs4all.nl>
 
   Jan Nieuwenhuizen <janneke@gnu.org>
 
index 51e473b68d101ffc43944c2d6b9ef2a74c8d4594..8023947c1e70b0d500350cae23efb8548ffa017e 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2002--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 2002--2014 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
index 3c47335b3572f8deebbcae629d13b6a6cbcf43b2..f81cb0a5351e96cbccfa3dbd2091a2f40d9250df 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2004--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 2004--2014 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
index 01106456673168262be60ad4695fc623a70f8777..ec254e755a1b6bc5e7d3902baaf23acd005ec93e 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1999--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 1999--2014 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
index e4b23d1f943af6d820805ef527461a5817e2c9ae..6dce40a464ba7b385f0149dd254debd7de9b6ecd 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1997--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 1997--2014 Han-Wen Nienhuys <hanwen@xs4all.nl>
   Jan Nieuwenhuizen <janneke@gnu.org>
 
   LilyPond is free software: you can redistribute it and/or modify
index f61acbe5fe4502d254c21ce639d7f857c94f47be..1ed47703f88eb3a3625081cd0a71171a923fbbed 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1998--2012 Jan Nieuwenhuizen <janneke@gnu.org>
+  Copyright (C) 1998--2014 Jan Nieuwenhuizen <janneke@gnu.org>
   Han-Wen Nienhuys
 
   LilyPond is free software: you can redistribute it and/or modify
index 0e3a67e3482f0e6e5a455ebb2618f8d55c020d44..33c4d8d3fe0479c4dff5c44f7592d66d63061ed3 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2003--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 2003--2014 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
index 3fd9900e7e97d18ae2ce0e72cce57fbafc080815..9c24d2e9e2d96a3524389ad8925a006c2f5814c4 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1997--2012 Jan Nieuwenhuizen <janneke@gnu.org>
+  Copyright (C) 1997--2014 Jan Nieuwenhuizen <janneke@gnu.org>
 
   LilyPond is free software: you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
index 5ac75067a070ad4db7a2fd71863e5426ccd291e5..7fb2f324572db0b434fae0155103ab3d7fe611ee 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1997--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 1997--2014 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
@@ -258,7 +258,7 @@ copyright ()
  */
 {
   /* Do not update the copyright years here, run `make grand-replace'  */
-  printf ("%s", (_f ("Copyright (c) %s by\n%s  and others.", "1996--2012",
+  printf ("%s", (_f ("Copyright (c) %s by\n%s  and others.", "1996--2014",
                      AUTHORS).c_str ()));
   printf ("\n");
 }
index 25b19bd18a607b2ae34e50e9c7e677242dbcb922..465e140e2d0ecb423dcdf8e27e1093e275a3aaa1 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1998--2012 Jan Nieuwenhuizen <janneke@gnu.org>
+  Copyright (C) 1998--2014 Jan Nieuwenhuizen <janneke@gnu.org>
 
   LilyPond is free software: you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
index 526091944b7aa7a717478e7bf1b13a2beb2f5955..758ce5f17428aabc024ab974aa3739786848bdad 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2002--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 2002--2014 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
index e668f57beb7e997e5adba25e04038281ccc1441d..ca982760e214fa2de69943c584fa94beeb787f2c 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2002--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 2002--2014 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
index c6ab972c74994c27752d1881200a52c073651dea..c60b0a504120c1bf4595251409a1ef86faa0b8aa 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1997--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 1997--2014 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
index 4fdaa4eb55ac74c1b0e9f5a93305371fc2f6a21b..7ee731a9bc43debfe44172cd014e689083cdf0c0 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2005--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 2005--2014 Han-Wen Nienhuys <hanwen@xs4all.nl>
 
 
   LilyPond is free software: you can redistribute it and/or modify
index 8f70fa4e487a0a84d1b0d436e0d8e77851269409..ab7e7d81d633fd1bc462b50edeaef15dbbc41f30 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2002--2012 Juergen Reuter <reuter@ipd.uka.de>,
+  Copyright (C) 2002--2014 Juergen Reuter <reuter@ipd.uka.de>,
   Pal Benko <benkop@freestart.hu>
 
   LilyPond is free software: you can redistribute it and/or modify
index 3bffcb841c87f205f7b9fbd6127c42240ba2ede4..2c1059eb87b9995ae7829e1f1236ab3d082d88e5 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2002--2012 Juergen Reuter <reuter@ipd.uka.de>,
+  Copyright (C) 2002--2014 Juergen Reuter <reuter@ipd.uka.de>,
   Pal Benko <benkop@freestart.hu>
 
   LilyPond is free software: you can redistribute it and/or modify
@@ -168,7 +168,7 @@ internal_brew_primitive (Grob *me)
       duration_log--;
     case MLP_BREVIS:
       duration_log--;
-      suffix = to_string (duration_log) + color
+      suffix = ::to_string (duration_log) + color
                + (duration_log < -1 ? "lig" : "") + "mensural";
       index = prefix + "s";
       out = fm->find_by_name (index + "r" + suffix);
index b4cd2ce328b89707ac7497ed0cff6ca18a6ab1ec..7c0856e654708849732c3cf4d453cacf9a2b26ca 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1998--2012 Jan Nieuwenhuizen <janneke@gnu.org>
+  Copyright (C) 1998--2014 Jan Nieuwenhuizen <janneke@gnu.org>
 
   LilyPond is free software: you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
index f98c76373e9728e68c66863a7008c20e7c548d74..c9e6dc77edd2619311a1a9f0afadcbe15df90065 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2007--2012 Han-Wen Nienhuys <hanwen@lilypond.org>
+  Copyright (C) 2007--2014 Han-Wen Nienhuys <hanwen@lilypond.org>
 
 
   LilyPond is free software: you can redistribute it and/or modify
index ff0855d15cf5136807f877a049afb4f870043c96..36f21637763e5bf94686a6abcdc1c52157831156 100644 (file)
@@ -1,9 +1,9 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2013 by Heikki Tauriainen <g034737@welho.com>.
+  Copyright (C) 2013--2014 by Heikki Tauriainen <g034737@welho.com>.
   Adapted from performer implementations
-  Copyright (C) 1996--2012 Jan Nieuwenhuizen <janneke@gnu.org>,
+  Copyright (C) 1996--2014 Jan Nieuwenhuizen <janneke@gnu.org>,
   Han-Wen Nienhyus <hanwen@xs4all.nl> and others.
 
   LilyPond is free software: you can redistribute it and/or modify
index 54d00ff683d59ce4f1ffc98975c492e91de9c26b..4909217c4319c108cca8aba6b22ea9533e5c9b37 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1997--2012 Jan Nieuwenhuizen <janneke@gnu.org>
+  Copyright (C) 1997--2014 Jan Nieuwenhuizen <janneke@gnu.org>
 
   LilyPond is free software: you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
@@ -193,8 +193,10 @@ Midi_time_signature::to_string () const
 Midi_note::Midi_note (Audio_note *a)
   : Midi_channel_item (a),
     audio_ (a),
-    dynamic_byte_ (a->dynamic_ && a->dynamic_->volume_ >= 0
-                   ? Byte (a->dynamic_->volume_ * 0x7f) : Byte (0x5a))
+    dynamic_byte_ (min (max (Byte ((a->dynamic_ && a->dynamic_->volume_ >= 0
+                                    ? a->dynamic_->volume_ * 0x7f : 0x5a)
+                                   + a->extra_velocity_),
+                             Byte (0)), Byte (0x7f)))
 {
 }
 
index 289bb1494a3b52091a7871d71eebcb4600d2b336..9c059a0681edaa516d7e1375991819697a81237c 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1997--2012 Jan Nieuwenhuizen <janneke@gnu.org>
+  Copyright (C) 1997--2014 Jan Nieuwenhuizen <janneke@gnu.org>
 
   LilyPond is free software: you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
index b97630b0d147ed8ebc05d63c111b8928c3667cad..20d3252aba7d1847b725b5e7183b3ed67e7c1b44 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1997--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 1997--2014 Han-Wen Nienhuys <hanwen@xs4all.nl>
   Jan Nieuwenhuizen <janneke@gnu.org>
 
   LilyPond is free software: you can redistribute it and/or modify
@@ -52,13 +52,15 @@ audio_item_less (Audio_item *const a,
   return a->get_column ()->when_ < b->get_column ()->when_;
 }
 
-Midi_walker::Midi_walker (Audio_staff *audio_staff, Midi_track *track)
+Midi_walker::Midi_walker (Audio_staff *audio_staff, Midi_track *track, int start_tick)
 {
   track_ = track;
   index_ = 0;
   items_ = audio_staff->audio_items_;
   vector_sort (items_, audio_item_less);
-  last_tick_ = 0;
+  //Scores that begin with grace notes start at negative times. This
+  //is OK - MIDI output doesn't use absolute ticks, only differences.
+  last_tick_ = start_tick;
   percussion_ = audio_staff->percussion_;
   merge_unisons_ = audio_staff->merge_unisons_;
 }
index 7ff43755b140841a631197afa0fa061b10be7ce4..8f065632dd4575fa4494f2860c0bcf031246ef0b 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2007--2012 Nicolas Sceaux <nicolas.sceaux@free.fr>
+  Copyright (C) 2007--2014 Nicolas Sceaux <nicolas.sceaux@free.fr>
 
   LilyPond is free software: you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
index 58d0a6e9d301af63baead8b7e8f96d2f7cb0d0ff..6021380023158cc5df21d570f4be92f570a5fe19 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1997--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 1997--2014 Han-Wen Nienhuys <hanwen@xs4all.nl>
   Jan Nieuwenhuizen <janneke@gnu.org>
 
   LilyPond is free software: you can redistribute it and/or modify
@@ -30,7 +30,8 @@
 int
 intlog2 (int d)
 {
-  assert (d);
+  if (d <= 0)
+    error ("intlog2 with negative argument: " + ::to_string (d));
   int i = 0;
   while ((d != 1))
     {
index 1657cf5a9e68722954d8d67f6c4c4661b0206a35..53ccefa2997e0c9e93a05d9b9688678b1b726db3 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1999--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 1999--2014 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
index 0da0445c9cd49ae514780795b10d718288d9e386..58fc141f38c4675d7a8be002ef0036d2d7cb45b1 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2005--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 2005--2014 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
index e7ed72f093807c0c2be7533eea62736c16c8099d..c0422b43609ed9caff5f88bdab51745b7154c9c9 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1999--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 1999--2014 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
index df1a405779a90b499375e2aa4f108370d0f3c87e..e1e3478c6ed71e607619cdb2bba6ce26074f2374 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1999--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 1999--2014 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
index 7fede1a3e70a095d71401d65b65cf7035b5d4054..9f460dd981871ea7ab640838d49b5dc71aaf1dd1 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1998--2012 Jan Nieuwenhuizen <janneke@gnu.org>
+  Copyright (C) 1998--2014 Jan Nieuwenhuizen <janneke@gnu.org>
   Han-Wen Nienhuys <hanwen@xs4all.nl>
 
   LilyPond is free software: you can redistribute it and/or modify
index e823c298e319ee2dc47b95f0d77cde384465a748..e4257886552785305d7caa1a6930054891bcbf72 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1998--2012 Jan Nieuwenhuizen <janneke@gnu.org>
+  Copyright (C) 1998--2014 Jan Nieuwenhuizen <janneke@gnu.org>
 
   LilyPond is free software: you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
index f206b6b3823b7f065ab1e2c8730cc31df76d8698..65fedab7ddd70380457a9fa1304176589749eb69 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2004--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 2004--2014 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
index c076b7ad65867e9e9b3cdb9266ae0748c1dd7586..f6367db129620230d1d56be339a194a0a9f163d0 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1997--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 1997--2014 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
@@ -207,8 +207,11 @@ Music_iterator::mark_smob (SCM smob)
     Careful with GC, although we intend the following as pointers
     only, we _must_ mark them.
   */
-  if (mus->get_outlet ())
-    scm_gc_mark (mus->get_outlet ()->self_scm ());
+  /* Use handle_ directly as get_outlet is a virtual function and we
+     need to protect the context until Music_iterator::quit is being
+     run. */
+  if (mus->handle_.get_context ())
+    scm_gc_mark (mus->handle_.get_context ()->self_scm ());
   if (mus->music_)
     scm_gc_mark (mus->music_->self_scm ());
 
index dfb8b4e46ba7e1aba0d376fe3ad227f16c096090..438cddaaa9fa8021753f45603a5de87e6cbc7cc7 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2005--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 2005--2014 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
index dc2d9a6aa24640bb933942cd13050b25467af5a5..ffd3f35a0f0204e7dbff4434c7e68daa92bde73c 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2005--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 2005--2014 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
@@ -101,13 +101,15 @@ LY_DEFINE (ly_music_list_p, "ly:music-list?",
            1, 0, 0, (SCM lst),
            "Is @var{lst} a list of music objects?")
 {
-  if (scm_list_p (lst) == SCM_BOOL_T)
-    while (scm_is_pair (lst))
-      {
-        if (!unsmob_music (scm_car (lst)))
-          return SCM_BOOL_F;
-        lst = scm_cdr (lst);
-      }
+  if (!ly_is_list (lst))
+    return SCM_BOOL_F;
+
+  while (scm_is_pair (lst))
+    {
+      if (!unsmob_music (scm_car (lst)))
+        return SCM_BOOL_F;
+      lst = scm_cdr (lst);
+    }
 
   return SCM_BOOL_T;
 }
index b40597df246bb4bd296e5f0a33b205ba057abcc2..fea62f89d65f9499265c394526c59aaa0a4d9b7c 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1998--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 1998--2014 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
index e208d135f5c75bf63973866b8815695263f4499c..d46415869c658c39d88b944c28fe94f72fbc7fa0 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1998--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 1998--2014 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
@@ -79,6 +79,22 @@ Music_wrapper_iterator::pending_moment () const
     return Music_iterator::pending_moment ();
 }
 
+Context *
+Music_wrapper_iterator::get_outlet () const
+{
+  if (child_iter_)
+    return child_iter_->get_outlet ();
+  return Music_iterator::get_outlet ();
+}
+
+void
+Music_wrapper_iterator::set_context (Context *trans)
+{
+  if (child_iter_)
+    child_iter_->set_context (trans);
+  Music_iterator::set_context (trans);
+}
+
 IMPLEMENT_CTOR_CALLBACK (Music_wrapper_iterator);
 
 bool
index 5dbc265b0088ccbf27f90b1ff174183ba0967dad..babec206b70ed694cf8f5a680b779b68c59c7a19 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1998--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 1998--2014 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
index eea6a9ca818a58552a5d4cdda7a159754696d186..351051e6a624c13684030eafe17ce824976d88e1 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1997--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 1997--2014 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
@@ -211,20 +211,6 @@ transpose_mutable (SCM alist, Pitch delta)
       if (Pitch *p = unsmob_pitch (val))
         {
           Pitch transposed = p->transposed (delta);
-          if (transposed.get_alteration ().abs () > Rational (1, 1))
-            {
-              string delta_str;
-              if (delta.get_alteration ().abs () > Rational (1, 1))
-                delta_str = (delta.normalized ().to_string ()
-                             + " " + _ ("(normalized pitch)"));
-              else
-                delta_str = delta.to_string ();
-
-              warning (_f ("Transposing %s by %s makes alteration larger than double",
-                           p->to_string (),
-                           delta_str));
-              transposed = transposed.normalized ();
-            }
 
           if (prop == ly_symbol2scm ("tonic"))
             transposed = Pitch (-1, transposed.get_notename (),
index a605f0f4ae7e4f574245c84a054e83b93ec58b93..51eb26c6d29a1f89aa20836950cba09dc1f36e22 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1998--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 1998--2014 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
index aad09a95a99ee64069f3fdca24441b06b096d709..1430463ab958d506856deee33669fcb414933b60 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1997--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 1997--2014 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
index d828d36f5c22605e5b588dad629573de36bec400..a20d886cb244b0597ca51d47df0798b1954a9bdf 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2010--2012 Nicolas Sceaux <nicolas.sceaux@free.fr>
+  Copyright (C) 2010--2014 Nicolas Sceaux <nicolas.sceaux@free.fr>
 
   LilyPond is free software: you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
index 42bd9b484c005270e9b290b8fef74df1cd355bd9..867542bdbd39fe497b6da103e66572e5840ddf4c 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1997--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 1997--2014 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
index f4794474ab47176437c9cc4f0e09e2ced6398d40..ba0c65d71d5def3f97a4c4c79561270e2f49259c 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2000--2012 Jan Nieuwenhuizen <janneke@gnu.org>
+  Copyright (C) 2000--2014 Jan Nieuwenhuizen <janneke@gnu.org>
 
   LilyPond is free software: you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
index ef6770888a0c8b295d7a4e9af08363d43d9df04d..f1505358e5a7de5998ca99768a439890306dbc74 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2006--2012 Han-Wen Nienhuys <hanwen@lilypond.org>
+  Copyright (C) 2006--2014 Han-Wen Nienhuys <hanwen@lilypond.org>
 
 
   LilyPond is free software: you can redistribute it and/or modify
index 4bf8168eb1092c4fe34b147bbfc5d17e318774fa..80624c40a81441b6da7fa3339e8b423a7d8adbc1 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1997--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 1997--2014 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
@@ -38,7 +38,7 @@ internal_print (Grob *me, string *font_char)
 {
   string style = robust_symbol2string (me->get_property ("style"), "default");
 
-  string suffix = to_string (min (robust_scm2int (me->get_property ("duration-log"), 2), 2));
+  string suffix = ::to_string (min (robust_scm2int (me->get_property ("duration-log"), 2), 2));
   if (style != "default")
     suffix = robust_scm2string (me->get_property ("glyph-name"), "");
 
index 436861c0aec1e88eac35734fd49f44916e02104f..5caf42f221838eebbcd28fd7c5bd4d3c957f5a3a 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1997--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 1997--2014 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
index c96b3776c0980bddfbe66f0c366b370006db1e96..cd9676a4286608fa286e190d923fe3f0e39c550b 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1999--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 1999--2014 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
index ddf9fe39213e0d74910ce75a268808ad254d424c..59ac69ac9842c895d9ceb8bd618cf0af4ffb3031 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1996--2012 Jan Nieuwenhuizen <janneke@gnu.org>
+  Copyright (C) 1996--2014 Jan Nieuwenhuizen <janneke@gnu.org>
 
   LilyPond is free software: you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
@@ -36,6 +36,7 @@ protected:
   void process_music ();
 
   DECLARE_TRANSLATOR_LISTENER (note);
+  DECLARE_TRANSLATOR_LISTENER (breathing);
 private:
   vector<Stream_event *> note_evs_;
   vector<Audio_note *> notes_;
@@ -65,9 +66,9 @@ Note_performer::process_music ()
         {
           SCM articulations = n->get_property ("articulations");
           Stream_event *tie_event = 0;
-          for (SCM s = articulations;
-               !tie_event && scm_is_pair (s);
-               s = scm_cdr (s))
+          Moment len = get_event_length (n, now_mom ());
+          int velocity = 0;
+          for (SCM s = articulations; scm_is_pair (s); s = scm_cdr (s))
             {
               Stream_event *ev = unsmob_stream_event (scm_car (s));
               if (!ev)
@@ -75,19 +76,23 @@ Note_performer::process_music ()
 
               if (ev->in_event_class ("tie-event"))
                 tie_event = ev;
+              SCM f = ev->get_property ("midi-length");
+              if (ly_is_procedure (f))
+                len = robust_scm2moment (scm_call_2 (f, len.smobbed_copy (),
+                                                     context ()->self_scm ()),
+                                         len);
+              velocity += robust_scm2int (ev->get_property ("midi-extra-velocity"), 0);
             }
 
-          Moment len = get_event_length (n, now_mom ());
-
           Audio_note *p = new Audio_note (*pitp, len,
-                                          tie_event, transposing);
+                                          tie_event, transposing, velocity);
           Audio_element_info info (p, n);
           announce_element (info);
           notes_.push_back (p);
 
           /*
-            Shorten previous note. If it was part of a tie, shorten
-            the first note in the tie.
+            Grace notes shorten the previous non-grace note. If it was
+            part of a tie, shorten the first note in the tie.
            */
           if (now_mom ().grace_part_)
             {
@@ -96,7 +101,11 @@ Note_performer::process_music ()
                   for (vsize i = 0; i < last_notes_.size (); i++)
                     {
                       Audio_note *tie_head = last_notes_[i]->tie_head ();
-                      tie_head->length_mom_ += Moment (0, now_mom ().grace_part_);
+                      Moment start = tie_head->audio_column_->when ();
+                      //Shorten the note if it would overlap. It might
+                      //not if there's a rest in between.
+                      if (start + tie_head->length_mom_ > now_mom ())
+                        tie_head->length_mom_ = now_mom () - start;
                     }
                 }
             }
@@ -124,6 +133,30 @@ Note_performer::listen_note (Stream_event *ev)
   note_evs_.push_back (ev);
 }
 
+IMPLEMENT_TRANSLATOR_LISTENER (Note_performer, breathing)
+void
+Note_performer::listen_breathing (Stream_event *ev)
+{
+  //Shorten previous note if needed
+  SCM f = ev->get_property ("midi-length");
+  if (ly_is_procedure (f))
+    for (vsize i = 0; i < last_notes_.size (); i++)
+      {
+        //Pass midi-length the available time since the last note started,
+        //including any intervening rests. It returns how much is left for the
+        //note.
+        Moment start = last_notes_[i]->audio_column_->when ();
+        Moment available = now_mom () - start;
+        Moment len = robust_scm2moment (scm_call_2 (f, available.smobbed_copy (),
+                                                    context ()->self_scm ()), available);
+        //Take time from the first note of the tie, since it has all the length.
+        Audio_note *tie_head = last_notes_[i]->tie_head ();
+        len += start - tie_head->audio_column_->when ();
+        if (len < tie_head->length_mom_)
+          tie_head->length_mom_ = len;
+      }
+}
+
 ADD_TRANSLATOR (Note_performer,
                 /* doc */
                 "",
index 8cb1b3539dddf72002c383797be3ccbe3fe9f19e..5accbc5f96daa122261b58b1ab8efaa01134d753 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2006--2012 Han-Wen Nienhuys <hanwen@lilypond.org>
+  Copyright (C) 2006--2014 Han-Wen Nienhuys <hanwen@lilypond.org>
 
   LilyPond is free software: you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
index 1d0d21fbbb502e5ae977c0e90781cfe63233aca2..a21543ed3dd1ca59a0b4186b2e61a31a1fa5e6f7 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2001--2012  Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 2001--2014  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
 #include "warn.hh"
 
 /*
-  TODO: detect hshifts due to collisions, and account for them in
-  spacing?
+  Adjust the ideal and minimum distance between note columns,
+  based on the notehead size, skylines, and optical illusions.
 */
-
 Spring
 Note_spacing::get_spacing (Grob *me, Item *right_col,
-                           Real base_space, Real increment)
+                           Spring base, Real increment)
 {
   vector<Item *> note_columns = Spacing_interface::left_note_columns (me);
   Real left_head_end = 0;
@@ -73,16 +72,12 @@ Note_spacing::get_spacing (Grob *me, Item *right_col,
     The main factor that determines the amount of space is the width of the
     note head (or the rest). For example, a quarter rest gets almost 0.5 ss
     less horizontal space than a note.
-
-    The other parts of a note column (eg. flags, accidentals, etc.) don't get
-    the full amount of space. We give them half the amount of space, but then
-    adjust things so there are no collisions.
   */
+  Real ideal = base.distance () - increment + left_head_end;
   Drul_array<Skyline> skys = Spacing_interface::skylines (me, right_col);
   Real distance = skys[LEFT].distance (skys[RIGHT], robust_scm2double (right_col->get_property ("skyline-vertical-padding"), 0.0));
   Real min_dist = max (0.0, distance);
-  Real min_desired_space = left_head_end + (min_dist - left_head_end + base_space - increment) / 2;
-  Real ideal = base_space - increment + left_head_end;
+  base.set_min_distance (min_dist);
 
   /* If we have a NonMusical column on the right, we measure the ideal distance
      to the bar-line (if present), not the start of the column. */
@@ -95,24 +90,21 @@ Note_spacing::get_spacing (Grob *me, Item *right_col,
                                                       Bar_line::non_empty_barline);
 
       if (bar)
+        ideal -= bar->extent (right_col, X_AXIS)[LEFT];
+      else
         {
-          Real shift = bar->extent (right_col, X_AXIS)[LEFT];
-          ideal -= shift;
-          min_desired_space -= max (shift, 0.0);
+          /* Measure ideal distance to the right side of the NonMusical column
+             but keep at least half the gap we would have had to a note */
+          Real min_desired_space = (ideal + min_dist) / 2.0;
+          ideal -= right_col->extent (right_col, X_AXIS)[RIGHT];
+          ideal = max (ideal, min_desired_space);
         }
-      else
-        ideal -= right_col->extent (right_col, X_AXIS)[RIGHT];
     }
 
-  ideal = max (ideal, min_desired_space);
-  stem_dir_correction (me, right_col, increment, &ideal, &min_desired_space);
+  stem_dir_correction (me, right_col, increment, &ideal);
 
-  /* TODO: grace notes look bad when things are stretched. Should we increase
-     their stretch strength? */
-  Spring ret (max (0.0, ideal), min_dist);
-  ret.set_inverse_compress_strength (max (0.0, ideal - min_desired_space));
-  ret.set_inverse_stretch_strength (max (0.1, base_space - increment));
-  return ret;
+  base.set_distance (max (0.0, ideal));
+  return base;
 }
 
 static Real
@@ -206,7 +198,7 @@ same_direction_correction (Grob *note_spacing, Drul_array<Interval> head_posns)
 void
 Note_spacing::stem_dir_correction (Grob *me, Item *rcolumn,
                                    Real increment,
-                                   Real *space, Real *fixed)
+                                   Real *space)
 {
   Drul_array<Direction> stem_dirs (CENTER, CENTER);
   Drul_array<Interval> stem_posns;
@@ -310,7 +302,6 @@ Note_spacing::stem_dir_correction (Grob *me, Item *rcolumn,
            && !acc_right)
     correction = same_direction_correction (me, head_posns);
 
-  *fixed += correction;
   *space += correction;
 
   /* there used to be a correction for bar_xextent () here, but
index 5b43a8d9da56a8cdeb4195f816cc084040335866..9237923e3ec1d3ff0770181e6c7ffe68566071d5 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2004--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 2004--2014 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
index 76bbff86ed0cfdb762a70d3da57bdd9c4647f459..49d8fd317720a6aad0ce26413de00bab7702806b 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2004--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 2004--2014 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
index 3bddcad4ba66815806fa1e691a2c2f229e1fc8f9..5ad4daf9bf8ecf71c68df84e04eee3b424033b6a 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2006--2012 Joe Neeman <joeneeman@gmail.com>
+  Copyright (C) 2006--2014 Joe Neeman <joeneeman@gmail.com>
 
   LilyPond is free software: you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
@@ -75,7 +75,9 @@ Optimal_page_breaking::solve ()
           if (page_count > 1 && best.systems_per_page_[page_count - 2] > 1)
             min_sys_count -= best.systems_per_page_[page_count - 2];
 
-          min_sys_count = max (min_sys_count, (vsize)1);
+          if (min_sys_count > ideal_sys_count  // subtraction wrapped around
+              || min_sys_count <= 0)
+            min_sys_count = 1;
         }
     }
   else
index f70a30b404e1125ed6ee252c1a820f581b8d52d6..0639fee71991bc6ae8673df800bc817da7d103ca 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2004--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 2004--2014 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
index bd39702bdb59da5c14ef516551455c8f9ce57673..6296e8c8a2092c9adaf2732a9150d8d81c6e9f69 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2000--2012 Han-Wen Nienhuys
+  Copyright (C) 2000--2014 Han-Wen Nienhuys
 
   LilyPond is free software: you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
index a2e1e345134bae7d56926e29ff98136c1ff817bd..91a3adfb2df55a5cb3688439cb1e84e1f6cbc5fe 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2005--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 2005--2014 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
index addb0ef1ef57f5ee858b3e0a8804da09ace1fbc0..898d1b102e770fca72e6e5ca9034520b078d8d60 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1997--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 1997--2014 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
index 78901a21579230acf3330a469743cb288225eaa0..2dc50c72e9816d2235ecf077aeec314088f0e4d6 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2000--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 2000--2014 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
index 12929e510dfeb527e4a508ac6529c3fa250ff394..8f66a576771425dad896b88be98a43b38bf738e9 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2006--2012 Joe Neeman <joeneeman@gmail.com>
+  Copyright (C) 2006--2014 Joe Neeman <joeneeman@gmail.com>
 
   LilyPond is free software: you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
index 9a6f8f40f25c0edbe47f45ecde1780c2babc89b6..29a7f27b5bcad2fb5eb83a132b282c595e93c509 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2006--2012 Joe Neeman <joeneeman@gmail.com>
+  Copyright (C) 2006--2014 Joe Neeman <joeneeman@gmail.com>
 
   LilyPond is free software: you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
@@ -195,7 +195,6 @@ compress_lines (const vector<Line_details> &orig)
       else
         {
           ret.push_back (orig[i]);
-          ret.back ().force_ = 0;
         }
     }
   return ret;
@@ -632,7 +631,11 @@ Page_breaking::make_pages (vector<vsize> lines_per_page, SCM systems)
       else
         config = layout.solution (rag);
 
-      last_page_force = layout.force ();
+      if ((ragged () && layout.force () < 0.0)
+          || isinf (layout.force ()))
+        warning (_f ("page %d has been compressed", page_num));
+      else
+        last_page_force = layout.force ();
 
       systems_configs_fncounts = scm_cons (scm_cons (lines, config), systems_configs_fncounts);
       footnote_count += fn_lines;
@@ -1169,9 +1172,8 @@ Page_breaking::min_page_count (vsize configuration, vsize first_page_num)
       cur_page_height -= min_whitespace_at_top_of_page (cached_line_details_[page_starter]);
       cur_page_height -= min_whitespace_at_bottom_of_page (cached_line_details_.back ());
 
-      Real cur_height = cur_rod_height + ((ragged_last () || ragged ()) ? cur_spring_height : 0);
       if (!too_few_lines (line_count - cached_line_details_.back ().compressed_nontitle_lines_count_)
-          && cur_height > cur_page_height
+          && cur_rod_height > cur_page_height
           /* don't increase the page count if the last page had only one system */
           && cur_rod_height > cached_line_details_.back ().full_height ())
         ret++;
@@ -1437,7 +1439,9 @@ Page_breaking::finalize_spacing_result (vsize configuration, Page_spacing_result
       line_penalty += uncompressed_line_details_[i].break_penalty_;
     }
 
-  for (vsize i = 0; i < res.force_.size (); i++)
+  for (vsize i = ragged () ? res.force_.size () - 1 : 0;
+       i < res.force_.size () - ragged_last ();
+       i++)
     {
       Real f = res.force_[i];
 
@@ -1545,9 +1549,11 @@ Page_breaking::space_systems_on_2_pages (vsize configuration, vsize first_page_n
       page1_penalty[i] = line_count_penalty (page1_line_count);
       page1_status[i] = line_count_status (page1_line_count);
 
-      if (ragged2)
+      if (ragged1)
         page2_force[page2_force.size () - 1 - i]
           = (page2.force_ < 0 && i + 1 < page1_force.size ()) ? infinity_f : 0;
+      else if (ragged2 && page2.force_ > 0)
+        page2_force[page2_force.size () - 1 - i] = 0.0;
       else
         page2_force[page2_force.size () - 1 - i] = page2.force_;
       page2_penalty[page2_penalty.size () - 1 - i] = line_count_penalty (page2_line_count);
index 19be67cd2e6df2c41f965f60c25bf9ce44155366..9a7c8a416d77538070fe1033d6a44a795903a905 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2011--2012 Joe Neeman <joeneeman@gmail.com>
+  Copyright (C) 2011--2014 Joe Neeman <joeneeman@gmail.com>
 
   LilyPond is free software: you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
index 5885a661359b6accd9055228bd11b10cf8f19f88..52720d54490738c1579e09d218b0a6cf688f786b 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2009--2012 Joe Neeman <joeneeman@gmail.com>
+  Copyright (C) 2009--2014 Joe Neeman <joeneeman@gmail.com>
 
   LilyPond is free software: you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
@@ -728,12 +728,12 @@ Page_layout_problem::solve_rod_spring_problem (bool ragged, Real fixed_force)
       Real overflow = spacer.configuration_length (spacer.force ())
                       - page_height_;
       if (ragged && overflow < 1e-6)
-        warning (_ ("cannot fit music on page: ragged-spacing was requested, but page was compressed"));
+        warning (_ ("ragged-bottom was specified, but page must be compressed"));
       else
         {
-          warning (_f ("cannot fit music on page: overflow is %f",
+          warning (_f ("compressing over-full page by %.1f staff-spaces",
                        overflow));
-          warning (_ ("compressing music to fit"));
+          force_ = -infinity_f;
           vsize space_count = solution_.size ();
           Real spacing_increment = overflow / (space_count - 2);
           for (vsize i = 2; i < space_count; i++)
index 819fcca894d7487570087bb924f39cd9a0902dec..e5537e46db61e5d33d2b8aa72728ce9e1ef31122 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2007--2012 Nicolas Sceaux <nicolas.sceaux@free.fr>
+  Copyright (C) 2007--2014 Nicolas Sceaux <nicolas.sceaux@free.fr>
 
   LilyPond is free software: you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
index adf623ffd021e394d96f3390a9ca92e09ce240e6..aa66ee31eac75ed9a2f5272f42eaa670f31f7713 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2007--2012 Nicolas Sceaux <nicolas.sceaux@free.fr>
+  Copyright (C) 2007--2014 Nicolas Sceaux <nicolas.sceaux@free.fr>
 
   LilyPond is free software: you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
index 9d545e33e8a41b2d40a2f7510ad6fd2671507c05..90608cf63a45d2dca2558b690a0ab6d5c3932d9d 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2007--2012 Han-Wen Nienhuys <hanwen@lilypond.org>
+  Copyright (C) 2007--2014 Han-Wen Nienhuys <hanwen@lilypond.org>
 
 
   LilyPond is free software: you can redistribute it and/or modify
index a705827d2274df700b56503bc8b60bb06d58dcb8..2c8a88a64bef942678f6f17cd8ffaf958e7d7e24 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2006--2012 Joe Neeman <joeneeman@gmail.com>
+  Copyright (C) 2006--2014 Joe Neeman <joeneeman@gmail.com>
 
   LilyPond is free software: you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
@@ -329,7 +329,7 @@ Page_spacer::calc_subproblem (vsize page, vsize line)
       space.prepend_system (lines_[page_start]);
 
       bool overfull = (space.rod_height_ > paper_height
-                       || (ragged
+                       || (ragged_
                            && (space.rod_height_ + space.spring_len_ > paper_height)));
       // This 'if' statement is a little hard to parse. It won't consider this configuration
       // if it is overfull unless the current configuration is the first one with this start
index d7c7ccec3258a19940c6bb92eb1fdddeda525efb..d9c1bd12fa4c17b8520e0f344ef39d768cdcdc3e 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2006--2012 Joe Neeman <joeneeman@gmail.com>
+  Copyright (C) 2006--2014 Joe Neeman <joeneeman@gmail.com>
 
   LilyPond is free software: you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
index 2055214c8262e5c093f01cab74646b4b2f944e34..9008def09ab408f985bd086210585c8078edc660 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2006--2012 Joe Neeman <joeneeman@gmail.com>
+  Copyright (C) 2006--2014 Joe Neeman <joeneeman@gmail.com>
 
   LilyPond is free software: you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
@@ -232,7 +232,7 @@ Page_turn_page_breaking::solve ()
   for (vsize i = 0; i < last_break_position (); i++)
     {
       calc_subproblem (i);
-      progress_indication (string ("[") + to_string (i + 1) + "]");
+      progress_indication (string ("[") + ::to_string (i + 1) + "]");
     }
   progress_indication ("\n");
 
index 5b43792ff51a4847d1d24e8ccd1f17b15c3bbaf5..0d997b61ddf4159d03f613c075967cc219724560 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2004--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 2004--2014 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
index e7b5489df53b7d7963ef519271ded85da2e50d8f..8fe5da409eaab2fb0ba5d81e2682eb0a68f74cde 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2004--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 2004--2014 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
index 1e7605d2c076c47dec2a93ced24a3bd99f561b8b..f4bb158b8704d7f3a7356045544c3cffae6e86d2 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2005--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 2005--2014 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
index 082bcd824374ca9b8907c36e28b6b601b83fdc85..cbca39c230642e0e70007ce19829d1a8722f7aa3 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2004--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 2004--2014 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
index 2bfdc79988b434beb706a9576ba9d4b1b675bbcf..9b3d1a45dde487df878a08213d37afe5f1e6b613 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2005--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 2005--2014 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
index aecafbe3a053d66a15d884684ea570e01c011a85..9035d355a2adea0535b9e873887535f1b7871efd 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2004--2012 Jan Nieuwenhuizen <janneke@gnu.org>
+  Copyright (C) 2004--2014 Jan Nieuwenhuizen <janneke@gnu.org>
 
   LilyPond is free software: you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
index cdbb2e8b004ba5435f800baf781bc081306f3888..0620bafdbd4385a22e400bdeaf165a6a8e58b368 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2005--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 2005--2014 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
@@ -50,7 +50,7 @@ void
 Paper_column_engraver::finalize ()
 {
   if (! (breaks_ % 8))
-    progress_indication ("[" + to_string (breaks_) + "]");
+    progress_indication ("[" + ::to_string (breaks_) + "]");
 
   if (!made_columns_)
     {
@@ -269,7 +269,7 @@ Paper_column_engraver::stop_translation_timestep ()
       breaks_++;
 
       if (! (breaks_ % 8))
-        progress_indication ("[" + to_string (breaks_) + "]");
+        progress_indication ("[" + ::to_string (breaks_) + "]");
     }
 
   context ()->get_score_context ()->unset_property (ly_symbol2scm ("forbidBreak"));
index d586058fa0cbb2c0c58aa9fda9b727423ad704aa..d5ac33b55a4e679c80d341258c296a45029c2b40 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1997--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 1997--2014 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
@@ -237,7 +237,7 @@ Paper_column::print (SCM p)
 {
   Paper_column *me = dynamic_cast<Paper_column *> (unsmob_grob (p));
 
-  string r = to_string (Paper_column::get_rank (me));
+  string r = ::to_string (Paper_column::get_rank (me));
 
   Moment *mom = unsmob_moment (me->get_property ("when"));
   string when = mom ? mom->to_string () : "?/?";
index 4c6dc86ebeb8d645477920e9e4aa35c4b45cdd5a..d3526bbfce5e33ef55650f8b58ccacdb7e8e03ff 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2004--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 2004--2014 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
index 0e13e1d20344005933bcd60f3299f20aa084b887..0d6f11de6bbc71f5d0177063cd7e3015e3b08552 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2005--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 2005--2014 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
index 34110554dc3b6b2514d5bbcb1ddaa195e07bab92..6dff3242439bcc0c16ea0d5eabbe2fc532570f46 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1997--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 1997--2014 Han-Wen Nienhuys <hanwen@xs4all.nl>
   Jan Nieuwenhuizen <janneke@gnu.org>
 
   LilyPond is free software: you can redistribute it and/or modify
index d303b9c24f3201ae46922cf73315be14fa52f0c1..372cd863d873306eb715355924de0f9209a0ca61 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2005--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 2005--2014 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
index 65ac88333d18f705ae63de740f5f777bd8140079..de4c9fb50e1d35a54b563c32ba4d128791b8ee6e 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1996--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 1996--2014 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
index 8732dfeda66b44e5492783ea85c79351f494d6e2..b20609a40d5658d9f269c6b611c96d1a9fcbdc49 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2008--2012 Han-Wen Nienhuys <hanwen@lilypond.org>
+  Copyright (C) 2008--2014 Han-Wen Nienhuys <hanwen@lilypond.org>
 
 
   LilyPond is free software: you can redistribute it and/or modify
index 909d40479d44e601067500cb79959b70e9108e8b..bdd38e4181e3cc159e14d32c79e96702d9303524 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2004--2012 Jan Nieuwenhuizen <janneke@gnu.org>
+  Copyright (C) 2004--2014 Jan Nieuwenhuizen <janneke@gnu.org>
 
   LilyPond is free software: you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
index 5422d1d441bc0f45676be3dc442a36dba9ff15a1..d021be9be45529bf262b87970abaa0c5aa54f465 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2005--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 2005--2014 Han-Wen Nienhuys <hanwen@xs4all.nl>
 
 
   LilyPond is free software: you can redistribute it and/or modify
index 44b99db2adbe51f0c6c34e2ab521c5d23a2cbfac..a8505fdec617c4d03243c02e42ef10ce9aef37c2 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2004--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 2004--2014 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
@@ -36,16 +36,17 @@ using namespace std;
 SCM
 internal_ly_parse_scm (Parse_start *ps)
 {
-  Source_file *sf = ps->start_location_.get_source_file ();
+  Input &hi = ps->location_;
+  Source_file *sf = hi.get_source_file ();
   SCM port = sf->get_port ();
 
-  long off = ps->start_location_.start () - sf->c_str ();
+  long off = hi.start () - sf->c_str ();
 
   scm_seek (port, scm_from_long (off), scm_from_long (SEEK_SET));
   SCM from = scm_ftell (port);
 
-  scm_set_port_line_x (port, scm_from_int (ps->start_location_.line_number () - 1));
-  scm_set_port_column_x (port, scm_from_int (ps->start_location_.column_number () - 1));
+  scm_set_port_line_x (port, scm_from_int (hi.line_number () - 1));
+  scm_set_port_column_x (port, scm_from_int (hi.column_number () - 1));
 
   bool multiple = ly_is_equal (scm_peek_char (port), SCM_MAKE_CHAR ('@'));
 
@@ -55,7 +56,9 @@ internal_ly_parse_scm (Parse_start *ps)
   SCM form = scm_read (port);
   SCM to = scm_ftell (port);
 
-  ps->nchars = scm_to_int (to) - scm_to_int (from);
+  hi.set (hi.get_source_file (),
+          hi.start (),
+          hi.start () + scm_to_int (scm_difference (to, from)));
 
   if (!SCM_EOF_OBJECT_P (form))
     {
@@ -71,7 +74,7 @@ internal_ly_parse_scm (Parse_start *ps)
         form = scm_list_3 (ly_symbol2scm ("apply"),
                            ly_symbol2scm ("values"),
                            form);
-      return scm_cons (form, make_input (ps->start_location_));
+      return form;
     }
 
   /* Don't close the port here; if we re-enter this function via a
@@ -108,24 +111,25 @@ internal_ly_eval_scm (Parse_start *ps)
 SCM
 catch_protected_parse_body (void *p)
 {
-  Parse_start *ps = (Parse_start *) p;
+  return internal_ly_parse_scm (static_cast<Parse_start *> (p));
+}
 
-  return (*ps->func_) (ps);
+SCM
+catch_protected_eval_body (void *p)
+{
+  return internal_ly_eval_scm (static_cast<Parse_start *> (p));
 }
 
 SCM
-parse_handler (void *data, SCM tag, SCM args)
+parse_handler (void *data, SCM /*tag*/, SCM args)
 {
   Parse_start *ps = (Parse_start *) data;
 
-  ps->start_location_.error (_ ("GUILE signaled an error for the expression beginning here"));
+  ps->location_.error (_ ("GUILE signaled an error for the expression beginning here"));
 
   if (scm_ilength (args) > 2)
     scm_display_error_message (scm_cadr (args), scm_caddr (args), scm_current_error_port ());
 
-  if (tag == ly_symbol2scm ("read-error"))
-    ps->nchars = 1;
-
   return SCM_UNDEFINED;
 }
 
@@ -136,7 +140,19 @@ protected_ly_parse_scm (Parse_start *ps)
     Catch #t : catch all Scheme level errors.
    */
   return scm_internal_catch (SCM_BOOL_T,
-                             &catch_protected_parse_body,
+                             catch_protected_parse_body,
+                             (void *) ps,
+                             &parse_handler, (void *) ps);
+}
+
+SCM
+protected_ly_eval_scm (Parse_start *ps)
+{
+  /*
+    Catch #t : catch all Scheme level errors.
+   */
+  return scm_internal_catch (SCM_BOOL_T,
+                             catch_protected_eval_body,
                              (void *) ps,
                              &parse_handler, (void *) ps);
 }
@@ -147,19 +163,12 @@ bool parsed_objects_should_be_dead = false;
 /* Try parsing.  Upon failure return SCM_UNDEFINED. */
 
 SCM
-ly_parse_scm (char const *s, int *n, Input i, bool safe, Lily_parser *parser)
+ly_parse_scm (Input &i, bool safe, Lily_parser *parser)
 {
-  Parse_start ps;
-  ps.str = s;
-  ps.start_location_ = i;
-  ps.safe_ = safe;
-  ps.form_ = SCM_UNDEFINED;
-  ps.parser_ = parser;
-  ps.func_ = internal_ly_parse_scm;
+  Parse_start ps (SCM_UNDEFINED, i, safe, parser);
 
   SCM ans = parse_protect_global ? protected_ly_parse_scm (&ps)
             : internal_ly_parse_scm (&ps);
-  *n = ps.nchars;
 
   return ans;
 }
@@ -167,15 +176,9 @@ ly_parse_scm (char const *s, int *n, Input i, bool safe, Lily_parser *parser)
 SCM
 ly_eval_scm (SCM form, Input i, bool safe, Lily_parser *parser)
 {
-  Parse_start ps;
-  ps.str = 0;
-  ps.start_location_ = i;
-  ps.safe_ = safe;
-  ps.form_ = form;
-  ps.parser_ = parser;
-  ps.func_ = internal_ly_eval_scm;
+  Parse_start ps (form, i, safe, parser);
 
-  SCM ans = parse_protect_global ? protected_ly_parse_scm (&ps)
+  SCM ans = parse_protect_global ? protected_ly_eval_scm (&ps)
             : internal_ly_eval_scm (&ps);
   scm_remember_upto_here_1 (form);
   return ans;
index ab09f537b2a8693f413c4121d9dcb82e13916d12..0c814a13dd7dae08751f28a32efb403c3c853dd5 100644 (file)
@@ -2,7 +2,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1997--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 1997--2014 Han-Wen Nienhuys <hanwen@xs4all.nl>
                  Jan Nieuwenhuizen <janneke@gnu.org>
 
   LilyPond is free software: you can redistribute it and/or modify
 #define YYLLOC_DEFAULT(Current,Rhs,N) \
        ((Current).set_location ((Rhs)[1], (Rhs)[N]))
 
-#define YYPRINT(file, type, value)                                      \
-        do {                                                            \
-                if (scm_is_eq (value, SCM_UNSPECIFIED))                 \
-                        break;                                          \
-                char *p = scm_to_locale_string                          \
-                        (scm_simple_format (SCM_BOOL_F,                 \
-                                            scm_from_locale_string ("~S"), \
-                                            scm_list_1 (value)));       \
-                fputs (p, file);                                        \
-                free (p);                                               \
-        } while (0)
+#define YYPRINT(file, type, value)                                     \
+       do {                                                            \
+               if (scm_is_eq (value, SCM_UNSPECIFIED))                 \
+                       break;                                          \
+               SCM s = scm_call_2 (ly_lily_module_constant ("value->lily-string"), \
+                                   value,                              \
+                                   parser->self_scm ());               \
+               char *p = scm_to_locale_string (s);                     \
+               fputs (p, file);                                        \
+               free (p);                                               \
+       } while (0)
 
 %}
 
@@ -62,7 +62,7 @@ deleting them.  Let's hope that a stack overflow doesn't trigger a move
 of the parse stack onto the heap. */
 
 %left PREC_BOT
-%nonassoc REPEAT REPEAT_IDENTIFIER
+%nonassoc REPEAT
 %nonassoc ALTERNATIVE
 
 /* The above precedences tackle the shift/reduce problem
@@ -81,7 +81,7 @@ or
 %left ADDLYRICS
 
 %right ':' UNSIGNED REAL E_UNSIGNED EVENT_IDENTIFIER EVENT_FUNCTION '^' '_'
-       HYPHEN EXTENDER DURATION_IDENTIFIER
+       HYPHEN EXTENDER DURATION_IDENTIFIER '!'
 
  /* The above are needed for collecting tremoli and other items (that
     could otherwise be interpreted as belonging to the next function
@@ -146,32 +146,36 @@ Lily_parser::parser_error (Input const *i, Lily_parser *parser, SCM *, const str
        parser->parser_error (*i, s);
 }
 
+// The following are somewhat precarious constructs as they may change
+// the value of the lookahead token.  That implies that the lookahead
+// token must not yet have made an impact on the state stack other
+// than causing the reduction of the current rule, or switching the
+// lookahead token while Bison is mulling it over will cause trouble.
+
 #define MYBACKUP(Token, Value, Location)                               \
-do                                                                     \
-       if (yychar == YYEMPTY)                                          \
-       {                                                               \
+       do {                                                            \
+               if (yychar != YYEMPTY)                                  \
+                       parser->lexer_->push_extra_token                \
+                               (yylloc, yychar, yylval);               \
                if (Token)                                              \
-                       parser->lexer_->push_extra_token (Token, Value); \
-               parser->lexer_->push_extra_token (BACKUP);              \
-       } else {                                                        \
-               parser->parser_error                                    \
-                       (Location, _("Too much lookahead"));            \
-       }                                                               \
-while (0)
+                       parser->lexer_->push_extra_token                \
+                               (Location, Token, Value);               \
+               parser->lexer_->push_extra_token (Location, BACKUP);    \
+               yychar = YYEMPTY;                                       \
+       } while (0)
 
 
 #define MYREPARSE(Location, Pred, Token, Value)                                \
-do                                                                     \
-       if (yychar == YYEMPTY)                                          \
-       {                                                               \
-               parser->lexer_->push_extra_token (Token, Value);        \
-               parser->lexer_->push_extra_token (REPARSE,              \
-                                                 Pred);                \
-       } else {                                                        \
-               parser->parser_error                                    \
-                       (Location, _("Too much lookahead"));            \
-       }                                                               \
-while (0)
+       do {                                                            \
+               if (yychar != YYEMPTY)                                  \
+                       parser->lexer_->push_extra_token                \
+                               (yylloc, yychar, yylval);               \
+               parser->lexer_->push_extra_token                        \
+                       (Location, Token, Value);                       \
+               parser->lexer_->push_extra_token                        \
+                       (Location, REPARSE, Pred);                      \
+               yychar = YYEMPTY;                                       \
+       } while (0)
 
 %}
 
@@ -269,6 +273,7 @@ int yylex (YYSTYPE *s, YYLTYPE *loc, Lily_parser *parser);
 %token REST "\\rest"
 %token REVERT "\\revert"
 %token SCORE "\\score"
+%token SCORELINES "\\score-lines"
 %token SEQUENTIAL "\\sequential"
 %token SET "\\set"
 %token SIMULTANEOUS "\\simultaneous"
@@ -325,10 +330,8 @@ If we give names, Bison complains.
 %token EMBEDDED_LILY "#{"
 
 %token BOOK_IDENTIFIER
-%token CHORD_BODY_IDENTIFIER
 %token CHORD_MODIFIER
 %token CHORD_REPETITION
-%token CONTEXT_DEF_IDENTIFIER
 %token CONTEXT_MOD_IDENTIFIER
 %token DRUM_PITCH
 %token PITCH_IDENTIFIER
@@ -345,9 +348,7 @@ If we give names, Bison complains.
 %token MUSIC_IDENTIFIER
 %token NOTENAME_PITCH
 %token NUMBER_IDENTIFIER
-%token OUTPUT_DEF_IDENTIFIER
 %token REAL
-%token REPEAT_IDENTIFIER
 %token RESTNAME
 %token SCM_ARG
 %token SCM_FUNCTION
@@ -405,6 +406,13 @@ toplevel_expression:
                SCM proc = parser->lexer_->lookup_identifier ("toplevel-bookpart-handler");
                scm_call_2 (proc, parser->self_scm (), $1);
        }
+       | BOOK_IDENTIFIER {
+               SCM proc = parser->lexer_->lookup_identifier
+                       (unsmob_book($1)->paper_
+                        ? "toplevel-book-handler"
+                        : "toplevel-bookpart-handler");
+               scm_call_2 (proc, parser->self_scm (), $1);
+       }
        | score_block {
                SCM proc = parser->lexer_->lookup_identifier ("toplevel-score-handler");
                scm_call_2 (proc, parser->self_scm (), $1);
@@ -423,7 +431,7 @@ toplevel_expression:
        }
        | SCM_TOKEN {
                // Evaluate and ignore #xxx, as opposed to \xxx
-               parser->lexer_->eval_scm_token ($1);
+               parser->lexer_->eval_scm_token ($1, @1);
        }
        | embedded_scm_active
        {
@@ -436,6 +444,21 @@ toplevel_expression:
                {
                        SCM proc = parser->lexer_->lookup_identifier ("toplevel-text-handler");
                        scm_call_2 (proc, parser->self_scm (), out);
+               } else if (unsmob_score ($1))
+               {
+                       SCM proc = parser->lexer_->lookup_identifier ("toplevel-score-handler");
+                       scm_call_2 (proc, parser->self_scm (), $1);
+               } else if (Output_def * od = unsmob_output_def ($1)) {
+                       SCM id = SCM_EOL;
+
+                       if (od->c_variable ("is-paper") == SCM_BOOL_T)
+                               id = ly_symbol2scm ("$defaultpaper");
+                       else if (od->c_variable ("is-midi") == SCM_BOOL_T)
+                               id = ly_symbol2scm ("$defaultmidi");
+                       else if (od->c_variable ("is-layout") == SCM_BOOL_T)
+                               id = ly_symbol2scm ("$defaultlayout");
+
+                       parser->lexer_->set_identifier (id, $1);
                } else if (!scm_is_eq ($1, SCM_UNSPECIFIED))
                        parser->parser_error (@1, _("bad expression type"));
        }
@@ -457,7 +480,7 @@ toplevel_expression:
 embedded_scm_bare:
        SCM_TOKEN
        {
-               $$ = parser->lexer_->eval_scm_token ($1);
+               $$ = parser->lexer_->eval_scm_token ($1, @1);
        }
        | SCM_IDENTIFIER
        ;
@@ -471,8 +494,9 @@ embedded_scm_bare_arg:
        SCM_ARG
        | SCM_TOKEN
        {
-               $$ = parser->lexer_->eval_scm_token ($1);
+               $$ = parser->lexer_->eval_scm_token ($1, @1);
        }
+       | FRACTION
        | full_markup_list
        | context_modification
        | score_block
@@ -511,6 +535,18 @@ scm_function_call:
        }
        ;
 
+embedded_lilypond_number:
+       '-' embedded_lilypond_number
+       {
+               $$ = scm_difference ($2, SCM_UNDEFINED);
+       }
+       | bare_number_common
+       | UNSIGNED NUMBER_IDENTIFIER
+       {
+               $$ = scm_product ($1, $2);
+       }
+       ;
+
 embedded_lilypond:
        /* empty */
        {
@@ -520,7 +556,31 @@ embedded_lilypond:
                // contains no source location.
                $$ = MAKE_SYNTAX ("void-music", @$);
        }
-       | identifier_init
+       | identifier_init_nonumber
+       | embedded_lilypond_number
+       | post_event post_events
+       {
+               $$ = scm_reverse_x ($2, SCM_EOL);
+               if (Music *m = unsmob_music ($1))
+               {
+                       if (m->is_mus_type ("post-event-wrapper"))
+                               $$ = scm_append
+                                       (scm_list_2 (m->get_property ("elements"),
+                                                    $$));
+                       else
+                               $$ = scm_cons ($1, $$);
+               }
+               if (scm_is_pair ($$)
+                   && scm_is_null (scm_cdr ($$)))
+                       $$ = scm_car ($$);
+               else
+               {
+                       Music * m = MY_MAKE_MUSIC ("PostEvents", @$);
+                       m->set_property ("elements", $$);
+                       $$ = m->unprotect ();
+               }
+       }
+       | multiplied_duration
        | music_embedded music_embedded music_list {
                $3 = scm_reverse_x ($3, SCM_EOL);
                if (unsmob_music ($2))
@@ -573,16 +633,17 @@ assignment:
                parser->lexer_->set_identifier (path, $4);
                 $$ = SCM_UNSPECIFIED;
        }
+       | assignment_id '.' property_path '=' identifier_init {
+               SCM path = scm_cons (scm_string_to_symbol ($1), $3);
+               parser->lexer_->set_identifier (path, $5);
+                $$ = SCM_UNSPECIFIED;
+       }
        ;
 
 
 identifier_init:
-       score_block
-       | book_block
-       | bookpart_block
-       | output_def
-       | context_def_spec_block
-       | music_assign
+       identifier_init_nonumber
+       | number_expression
        | post_event_nofinger post_events
        {
                $$ = scm_reverse_x ($2, SCM_EOL);
@@ -605,7 +666,16 @@ identifier_init:
                        $$ = m->unprotect ();
                }
        }
-       | number_expression
+       ;
+
+identifier_init_nonumber:
+       score_block
+       | book_block
+       | bookpart_block
+       | output_def
+       | context_def_spec_block
+       | music_assign
+       | pitch_or_music
        | FRACTION
        | string
         | embedded_scm
@@ -615,9 +685,14 @@ identifier_init:
 
 context_def_spec_block:
        CONTEXT '{' context_def_spec_body '}'
-               {
+       {
                $$ = $3;
-               unsmob_context_def ($$)->origin ()->set_spot (@$);
+               Context_def *td = unsmob_context_def ($$);
+               if (!td) {
+                       $$ = Context_def::make_scm ();
+                       td = unsmob_context_def ($$);
+               }
+               td->origin ()->set_spot (@$);
        }
        ;
 
@@ -635,47 +710,54 @@ context_mod_arg:
        }
        ;
 
-context_mod_embedded:
-       context_mod_arg
-       {
-               if (unsmob_music ($1)) {
-                       SCM proc = parser->lexer_->lookup_identifier ("context-mod-music-handler");
-                       $1 = scm_call_2 (proc, parser->self_scm (), $1);
-               }
-               if (unsmob_context_mod ($1))
-                       $$ = $1;
-               else {
-                       parser->parser_error (@1, _ ("not a context mod"));
-                       $$ = Context_mod ().smobbed_copy ();
-               }
-       }
-       ;
-
 
 context_def_spec_body:
        /**/ {
-               $$ = Context_def::make_scm ();
-       }
-       | CONTEXT_DEF_IDENTIFIER {
-               $$ = $1;
+               $$ = SCM_UNSPECIFIED;
        }
        | context_def_spec_body context_mod {
-               if (!SCM_UNBNDP ($2))
+               if (!SCM_UNBNDP ($2)) {
+                       Context_def *td = unsmob_context_def ($$);
+                       if (!td) {
+                               $$ = Context_def::make_scm ();
+                               td = unsmob_context_def ($$);
+                       }
                        unsmob_context_def ($$)->add_context_mod ($2);
+               }
        }
        | context_def_spec_body context_modification {
                 Context_def *td = unsmob_context_def ($$);
+               if (!td) {
+                       $$ = Context_def::make_scm ();
+                       td = unsmob_context_def ($$);
+               }
                 SCM new_mods = unsmob_context_mod ($2)->get_mods ();
                 for (SCM m = new_mods; scm_is_pair (m); m = scm_cdr (m)) {
                     td->add_context_mod (scm_car (m));
                 }
        }
-       | context_def_spec_body context_mod_embedded {
-                Context_def *td = unsmob_context_def ($$);
-                SCM new_mods = unsmob_context_mod ($2)->get_mods ();
-                for (SCM m = new_mods; scm_is_pair (m); m = scm_cdr (m)) {
-                    td->add_context_mod (scm_car (m));
-                }
+       | context_def_spec_body context_mod_arg {
+               Context_def *td = unsmob_context_def ($1);
+               if (scm_is_eq ($2, SCM_UNSPECIFIED))
+                       ;
+               else if (!td && unsmob_context_def ($2))
+                       $$ = $2;
+               else {
+                       if (!td) {
+                               $$ = Context_def::make_scm ();
+                               td = unsmob_context_def ($$);
+                       }
+                       if (unsmob_music ($2)) {
+                               SCM proc = parser->lexer_->lookup_identifier ("context-mod-music-handler");
+                               $2 = scm_call_2 (proc, parser->self_scm (), $2);
+                       }
+                       if (Context_mod *cm = unsmob_context_mod ($2)) {
+                               for (SCM m = cm->get_mods (); scm_is_pair (m); m = scm_cdr (m)) {
+                                       td->add_context_mod (scm_car (m));
+                               }
+                       } else
+                               parser->parser_error (@2, _ ("not a context mod"));
+               }
        }
        ;
 
@@ -733,7 +815,7 @@ book_body:
        }
        | book_body SCM_TOKEN {
                // Evaluate and ignore #xxx, as opposed to \xxx
-               parser->lexer_->eval_scm_token ($2);
+               parser->lexer_->eval_scm_token ($2, @2);
        }
        | book_body embedded_scm_active
        {
@@ -746,6 +828,21 @@ book_body:
                {
                        SCM proc = parser->lexer_->lookup_identifier ("book-text-handler");
                        scm_call_2 (proc, $1, out);
+               } else if (unsmob_score ($2))
+               {
+                       SCM proc = parser->lexer_->lookup_identifier ("book-score-handler");
+                       scm_call_2 (proc, $1, $2);
+               } else if (Output_def *od = unsmob_output_def ($2)) {
+                       SCM id = SCM_EOL;
+
+                       if (od->c_variable ("is-paper") == SCM_BOOL_T)
+                               id = ly_symbol2scm ("$defaultpaper");
+                       else if (od->c_variable ("is-midi") == SCM_BOOL_T)
+                               id = ly_symbol2scm ("$defaultmidi");
+                       else if (od->c_variable ("is-layout") == SCM_BOOL_T)
+                               id = ly_symbol2scm ("$defaultlayout");
+
+                       parser->lexer_->set_identifier (id, $2);
                } else if (!scm_is_eq ($2, SCM_UNSPECIFIED))
                        parser->parser_error (@2, _("bad expression type"));
        }
@@ -799,7 +896,7 @@ bookpart_body:
        }
        | bookpart_body SCM_TOKEN {
                // Evaluate and ignore #xxx, as opposed to \xxx
-               parser->lexer_->eval_scm_token ($2);
+               parser->lexer_->eval_scm_token ($2, @2);
        }
        | bookpart_body embedded_scm_active
        {
@@ -812,6 +909,21 @@ bookpart_body:
                {
                        SCM proc = parser->lexer_->lookup_identifier ("bookpart-text-handler");
                        scm_call_2 (proc, $1, out);
+               } else if (unsmob_score ($2))
+               {
+                       SCM proc = parser->lexer_->lookup_identifier ("bookpart-score-handler");
+                       scm_call_2 (proc, $1, $2);
+               } else if (Output_def *od = unsmob_output_def ($2)) {
+                       SCM id = SCM_EOL;
+
+                       if (od->c_variable ("is-paper") == SCM_BOOL_T)
+                               id = ly_symbol2scm ("$defaultpaper");
+                       else if (od->c_variable ("is-midi") == SCM_BOOL_T)
+                               id = ly_symbol2scm ("$defaultmidi");
+                       else if (od->c_variable ("is-layout") == SCM_BOOL_T)
+                               id = ly_symbol2scm ("$defaultlayout");
+
+                       parser->lexer_->set_identifier (id, $2);
                } else if (!scm_is_eq ($2, SCM_UNSPECIFIED))
                        parser->parser_error (@2, _("bad expression type"));
        }
@@ -831,49 +943,103 @@ bookpart_body:
 
 score_block:
        SCORE '{' score_body '}'        {
+               unsmob_score ($3)->origin ()->set_spot (@$);
                $$ = $3;
        }
        ;
 
 score_body:
-       music {
-               SCM scorify = ly_lily_module_constant ("scorify-music");
-               $$ = scm_call_2 (scorify, $1, parser->self_scm ());
-
-               unsmob_score ($$)->origin ()->set_spot (@$);
-       }
-       | embedded_scm_active {
-               Score *score;
-               if (unsmob_score ($1))
-                       score = new Score (*unsmob_score ($1));
-               else {
-                       score = new Score;
-                       parser->parser_error (@1, _("score expected"));
+       score_items {
+               if (!unsmob_score ($1)) {
+                       parser->parser_error (@1, _("Missing music in \\score"));
+                       $$ = (new Score)->unprotect ();
+                       if (scm_is_pair ($1) && ly_is_module (scm_car ($1)))
+                       {
+                               unsmob_score ($$)->set_header (scm_car ($1));
+                               $1 = scm_cdr ($1);
+                       }
+                       for (SCM p = scm_reverse_x ($1, SCM_EOL);
+                            scm_is_pair (p); p = scm_cdr (p))
+                       {
+                               unsmob_score ($$)->
+                                       add_output_def (unsmob_output_def (scm_car (p)));
+                       }
                }
-               unsmob_score ($$)->origin ()->set_spot (@$);
-               $$ = score->unprotect ();
        }
-       | score_body
-       {
-                Score *score = unsmob_score ($1);
-               if (!ly_is_module (score->get_header ()))
-                       score->set_header (ly_make_module (false));
-               parser->lexer_->add_scope (score->get_header ());
-       } lilypond_header
-       | score_body output_def {
-                Output_def *od = unsmob_output_def ($2);
-               if (od->lookup_variable (ly_symbol2scm ("is-paper")) == SCM_BOOL_T)
-               {
-                       parser->parser_error (@2, _("\\paper cannot be used in \\score, use \\layout instead"));
+       | score_body error {
+               unsmob_score ($$)->error_found_ = true;
+       }
+       ;
 
+score_item:
+       embedded_scm
+       | music
+       | output_def
+       ;
+
+score_items:
+       /* empty */
+       {
+               $$ = SCM_EOL;
+       }
+       | score_items score_item
+       {
+               Output_def *od = unsmob_output_def ($2);
+               if (od) {
+                       if (od->lookup_variable (ly_symbol2scm ("is-paper")) == SCM_BOOL_T)
+                       {
+                               parser->parser_error (@2, _("\\paper cannot be used in \\score, use \\layout instead"));
+                               od = 0;
+                               $2 = SCM_UNSPECIFIED;
+                       }
+               } else if (!unsmob_score ($$)) {
+                       if (unsmob_music ($2)) {
+                               SCM scorify = ly_lily_module_constant ("scorify-music");
+                               $2 = scm_call_2 (scorify, $2, parser->self_scm ());
+                       }
+                       if (unsmob_score ($2))
+                       {
+                               $$ = $2;
+                               $2 = SCM_UNSPECIFIED;
+                       }
                }
-               else
-               {
-                       unsmob_score ($1)->add_output_def (od);
+               Score *score = unsmob_score ($$);
+               if (score && scm_is_pair ($1)) {
+                       if (ly_is_module (scm_car ($1)))
+                       {
+                               score->set_header (scm_car ($1));
+                               $1 = scm_cdr ($1);
+                       }
+                       for (SCM p = scm_reverse_x ($1, SCM_EOL);
+                            scm_is_pair (p); p = scm_cdr (p))
+                       {
+                               score->add_output_def (unsmob_output_def (scm_car (p)));
+                       }
                }
+               if (od) {
+                       if (score)
+                               score->add_output_def (od);
+                       else if (scm_is_pair ($$) && ly_is_module (scm_car ($$)))
+                               scm_set_cdr_x ($$, scm_cons ($2, scm_cdr ($$)));
+                       else
+                               $$ = scm_cons ($2, $$);
+               } else if (!scm_is_eq ($2, SCM_UNSPECIFIED))
+                       parser->parser_error (@2, _("Spurious expression in \\score"));
        }
-       | score_body error {
-               unsmob_score ($$)->error_found_ = true;
+       | score_items
+       {
+               if (Score *score = unsmob_score ($1)) {
+                       if (!ly_is_module (score->get_header ()))
+                               score->set_header (ly_make_module (false));
+                       parser->lexer_->add_scope (score->get_header ());
+               } else {
+                       if (!scm_is_pair ($1) || !ly_is_module (scm_car ($1)))
+                               $1 = scm_cons (ly_make_module (false), $1);
+                       parser->lexer_->add_scope (scm_car ($1));
+               }
+       } lilypond_header
+       {
+               $$ = $1;
        }
        ;
 
@@ -897,7 +1063,8 @@ paper_block:
 
 output_def:
        output_def_body '}' {
-               $$ = $1;
+               if (scm_is_pair ($1))
+                       $$ = scm_car ($1);
 
                parser->lexer_->remove_scope ();
                parser->lexer_->pop_state ();
@@ -937,30 +1104,62 @@ output_def_head_with_mode_switch:
 // is still time to escape from notes mode.
 
 music_or_context_def:
-       music_arg
+       music_assign
        | context_def_spec_block
        ;
 
 output_def_body:
        output_def_head_with_mode_switch '{' {
-               $$ = $1;
-               unsmob_output_def ($$)->input_origin_.set_spot (@$);
-       }
-       | output_def_head_with_mode_switch '{' OUTPUT_DEF_IDENTIFIER    {
-               Output_def *o = unsmob_output_def ($3);
-               o->input_origin_.set_spot (@$);
-               $$ = o->self_scm ();
-               parser->lexer_->remove_scope ();
-               parser->lexer_->add_scope (o->scope_);
+               unsmob_output_def ($1)->input_origin_.set_spot (@$);
+               // This is a stupid trick to mark the beginning of the
+               // body for deciding whether to allow
+               // embedded_scm_active to have an output definition
+               $$ = scm_list_1 ($1);
        }
        | output_def_body assignment  {
-
+               if (scm_is_pair ($1))
+                       $$ = scm_car ($1);
        }
-       | output_def_body embedded_scm  {
-
+       | output_def_body embedded_scm_active
+       {
+               // We don't switch into note mode for Scheme functions
+               // here.  Does not seem warranted/required in output
+               // definitions.
+               if (scm_is_pair ($1))
+               {
+                       Output_def *o = unsmob_output_def ($2);
+                       if (o) {
+                               o->input_origin_.set_spot (@$);
+                               $1 = o->self_scm ();
+                               parser->lexer_->remove_scope ();
+                               parser->lexer_->add_scope (o->scope_);
+                               $2 = SCM_UNSPECIFIED;
+                       } else
+                               $1 = scm_car ($1);
+               }
+               if (unsmob_context_def ($2))
+                       assign_context_def (unsmob_output_def ($1), $2);
+               // Seems unlikely, but let's be complete:
+               else if (unsmob_music ($2))
+               {
+                       SCM proc = parser->lexer_->lookup_identifier
+                               ("output-def-music-handler");
+                       scm_call_3 (proc, parser->self_scm (),
+                                   $1, $2);
+               } else if (!scm_is_eq ($2, SCM_UNSPECIFIED))
+                       parser->parser_error (@2, _("bad expression type"));
+               $$ = $1;
+       }
+       | output_def_body SCM_TOKEN {
+               if (scm_is_pair ($1))
+                       $$ = scm_car ($1);
+               // Evaluate and ignore #xxx, as opposed to \xxx
+               parser->lexer_->eval_scm_token ($2, @2);
        }
        | output_def_body
        {
+               if (scm_is_pair ($1))
+                       $1 = scm_car ($1);
                SCM nn = parser->lexer_->lookup_identifier ("pitchnames");
                parser->lexer_->push_note_state (nn);
        } music_or_context_def
@@ -975,6 +1174,7 @@ output_def_body:
                        scm_call_3 (proc, parser->self_scm (),
                                    $1, $3);
                }
+               $$ = $1;
        }
        | output_def_body error {
 
@@ -1020,8 +1220,17 @@ braced_music_list:
        }
        ;
 
-music: music_arg
+music: music_assign
        | lyric_element_music
+       | pitch_or_music
+       {
+               $$ = make_music_from_simple (parser, @1, $1);
+                if (!unsmob_music ($$))
+               {
+                        parser->parser_error (@1, _ ("music expected"));
+                       $$ = MAKE_SYNTAX ("void-music", @$);
+               }
+       }
        ;
 
 music_embedded:
@@ -1040,6 +1249,18 @@ music_embedded:
        {
                $$ = $3;
        }
+       | multiplied_duration post_events
+       {
+               Music *n = MY_MAKE_MUSIC ("NoteEvent", @$);
+
+               parser->default_duration_ = *unsmob_duration ($1);
+               n->set_property ("duration", $1);
+
+               if (scm_is_pair ($2))
+                       n->set_property ("articulations",
+                                        scm_reverse_x ($2, SCM_EOL));
+               $$ = n->unprotect ();
+       }
        ;
 
 music_embedded_backup:
@@ -1064,19 +1285,8 @@ music_embedded_backup:
        }
        ;
 
-music_arg:
-       simple_music
-       {
-               $$ = make_music_from_simple (parser, @1, $1);
-                if (!unsmob_music ($$))
-               {
-                        parser->parser_error (@1, _ ("music expected"));
-                       $$ = MAKE_SYNTAX ("void-music", @$);
-               }
-       }
-       | composite_music %prec COMPOSITE
-       ;
-
+// music_assign does not need to contain lyrics: there are no
+// assignments in lyricmode.
 music_assign:
        simple_music
        | composite_music %prec COMPOSITE
@@ -1087,20 +1297,10 @@ repeated_music:
        {
                $$ = MAKE_SYNTAX ("repeat", @$, $2, $3, $4, SCM_EOL);
        }
-       | REPEAT_IDENTIFIER music
-       {
-               $$ = MAKE_SYNTAX ("repeat", @$, scm_car ($1), scm_cdr ($1),
-                                 $2, SCM_EOL);
-       }
        | REPEAT simple_string unsigned_number music ALTERNATIVE braced_music_list
        {
                $$ = MAKE_SYNTAX ("repeat", @$, $2, $3, $4, $6);
        }
-       | REPEAT_IDENTIFIER music ALTERNATIVE braced_music_list
-       {
-               $$ = MAKE_SYNTAX ("repeat", @$, scm_car ($1), scm_cdr ($1),
-                                 $2, $4);
-       }
        ;
 
 sequential_music:
@@ -1161,7 +1361,7 @@ context_modification:
         ;
 
 context_modification_arg:
-       embedded_scm_closed
+       embedded_scm
        | MUSIC_IDENTIFIER
        ;
 
@@ -1188,9 +1388,19 @@ context_mod_list:
                  if (md)
                      unsmob_context_mod ($1)->add_context_mods (md->get_mods ());
         }
-       | context_mod_list context_mod_embedded {
-               unsmob_context_mod ($1)->add_context_mods
-                       (unsmob_context_mod ($2)->get_mods ());
+       | context_mod_list context_mod_arg {
+               if (scm_is_eq ($2, SCM_UNSPECIFIED))
+                       ;
+               else if (unsmob_music ($2)) {
+                       SCM proc = parser->lexer_->lookup_identifier ("context-mod-music-handler");
+                       $2 = scm_call_2 (proc, parser->self_scm (), $2);
+               }
+               if (unsmob_context_mod ($2))
+                       unsmob_context_mod ($$)->add_context_mods
+                               (unsmob_context_mod ($2)->get_mods ());
+               else {
+                       parser->parser_error (@2, _ ("not a context mod"));
+               }
         }
         ;
 
@@ -1199,16 +1409,6 @@ composite_music:
        | music_bare
        ;
 
-/* Music that can be parsed without lookahead */
-closed_music:
-       music_bare
-       | complex_music_prefix closed_music
-       {
-               $$ = FINISH_MAKE_SYNTAX ($1, @$, $2);
-       }
-       | music_function_call_closed
-       ;
-
 music_bare:
        mode_changed_music
        | MUSIC_IDENTIFIER
@@ -1248,13 +1448,6 @@ grouped_music_list:
  * will match and whether or not \default will be appearing in the
  * argument list, and where.
  *
- * Many of the basic nonterminals used for argument list scanning come
- * in a "normal" and a "closed" flavor.  A closed expression is one
- * that can be parsed without a lookahead token.  That makes it
- * feasible for an optional argument that may need to be skipped:
- * skipping can only be accomplished by pushing back the token into
- * the lexer, and that only works when there is no lookahead token.
- *
  * Sequences of 0 or more optional arguments are scanned using either
  * function_arglist_backup or function_arglist_nonbackup.  The first
  * is used when optional arguments are followed by at least one
@@ -1280,71 +1473,6 @@ grouped_music_list:
  *
  */
 
-function_arglist_nonbackup_common:
-       EXPECT_OPTIONAL EXPECT_SCM function_arglist_nonbackup FRACTION
-       {
-               $$ = check_scheme_arg (parser, @4, $4, $3, $2);
-       }
-       | EXPECT_OPTIONAL EXPECT_SCM function_arglist_nonbackup post_event_nofinger
-       {
-               $$ = check_scheme_arg (parser, @4, $4, $3, $2);
-       }
-       | EXPECT_OPTIONAL EXPECT_SCM function_arglist_nonbackup '-' UNSIGNED
-       {
-               SCM n = scm_difference ($5, SCM_UNDEFINED);
-               if (scm_is_true (scm_call_1 ($2, n)))
-                       $$ = scm_cons (n, $3);
-               else {
-                       Music *t = MY_MAKE_MUSIC ("FingeringEvent", @5);
-                       t->set_property ("digit", $5);
-                       $$ = check_scheme_arg (parser, @4, t->unprotect (),
-                                              $3, $2, n);
-               }
-               
-       }
-       | EXPECT_OPTIONAL EXPECT_SCM function_arglist_nonbackup '-' REAL
-       {
-               $$ = check_scheme_arg (parser, @4,
-                                      scm_difference ($5, SCM_UNDEFINED),
-                                      $3, $2);
-       }
-       | EXPECT_OPTIONAL EXPECT_SCM function_arglist_nonbackup '-' NUMBER_IDENTIFIER
-       {
-               $$ = check_scheme_arg (parser, @4,
-                                      scm_difference ($5, SCM_UNDEFINED),
-                                      $3, $2);
-       }
-       ;
-
-function_arglist_closed_nonbackup:
-       function_arglist_nonbackup_common
-       | function_arglist_closed_common
-       | EXPECT_OPTIONAL EXPECT_SCM function_arglist_nonbackup embedded_scm_arg_closed
-       {
-               $$ = check_scheme_arg (parser, @4, $4, $3, $2);
-       }
-       | EXPECT_OPTIONAL EXPECT_SCM function_arglist_nonbackup bare_number_closed
-       {
-               $$ = check_scheme_arg (parser, @4, $4, $3, $2);
-       }
-       | EXPECT_OPTIONAL EXPECT_SCM function_arglist_nonbackup SCM_IDENTIFIER
-       {
-               $$ = check_scheme_arg (parser, @4,
-                                      try_string_variants ($2, $4),
-                                      $3, $2, $4);
-       }
-       | EXPECT_OPTIONAL EXPECT_SCM function_arglist_nonbackup STRING
-       {
-               $$ = check_scheme_arg (parser, @4,
-                                      try_string_variants ($2, $4),
-                                      $3, $2, $4);
-       }
-       | EXPECT_OPTIONAL EXPECT_SCM function_arglist_nonbackup full_markup
-       {
-               $$ = check_scheme_arg (parser, @4, $4, $3, $2);
-       }
-       ;
-
 symbol_list_arg:
        SYMBOL_LIST
        | SYMBOL_LIST '.' symbol_list_rev
@@ -1384,8 +1512,35 @@ symbol_list_element:
 
 
 function_arglist_nonbackup:
-       function_arglist_nonbackup_common
-       | function_arglist_common
+       function_arglist_common
+       | EXPECT_OPTIONAL EXPECT_SCM function_arglist_nonbackup post_event_nofinger
+       {
+               $$ = check_scheme_arg (parser, @4, $4, $3, $2);
+       }
+       | EXPECT_OPTIONAL EXPECT_SCM function_arglist_nonbackup '-' UNSIGNED
+       {
+               SCM n = scm_difference ($5, SCM_UNDEFINED);
+               if (scm_is_true (scm_call_1 ($2, n)))
+                       $$ = scm_cons (n, $3);
+               else {
+                       Music *t = MY_MAKE_MUSIC ("FingeringEvent", @5);
+                       t->set_property ("digit", $5);
+                       $$ = check_scheme_arg (parser, @4, t->unprotect (),
+                                              $3, $2, n);
+               }
+       }
+       | EXPECT_OPTIONAL EXPECT_SCM function_arglist_nonbackup '-' REAL
+       {
+               $$ = check_scheme_arg (parser, @4,
+                                      scm_difference ($5, SCM_UNDEFINED),
+                                      $3, $2);
+       }
+       | EXPECT_OPTIONAL EXPECT_SCM function_arglist_nonbackup '-' NUMBER_IDENTIFIER
+       {
+               $$ = check_scheme_arg (parser, @4,
+                                      scm_difference ($5, SCM_UNDEFINED),
+                                      $3, $2);
+       }
        | EXPECT_OPTIONAL EXPECT_SCM function_arglist_nonbackup embedded_scm_arg
        {
                if (scm_is_true (scm_call_1 ($2, $4)))
@@ -1400,6 +1555,16 @@ function_arglist_nonbackup:
        {
                $$ = check_scheme_arg (parser, @4, $4, $3, $2);
        }
+       | function_arglist_nonbackup_reparse REPARSE pitch_or_music
+       {
+               if (scm_is_true (scm_call_1 ($2, $3)))
+                       $$ = scm_cons ($3, $1);
+               else
+                       $$ = check_scheme_arg (parser, @3,
+                                              make_music_from_simple
+                                              (parser, @3, $3),
+                                              $1, $2);
+       }
        | function_arglist_nonbackup_reparse REPARSE duration_length
        {
                $$ = check_scheme_arg (parser, @3, $3, $1, $2);
@@ -1440,6 +1605,28 @@ function_arglist_nonbackup_reparse:
                else
                        MYREPARSE (@4, $2, SCM_ARG, $4);
        }
+       | EXPECT_OPTIONAL EXPECT_SCM function_arglist_nonbackup pitch
+       {
+               $$ = $3;
+               if (scm_is_true
+                   (scm_call_1
+                    ($2, make_music_from_simple
+                     (parser, @4, $4))))
+                       MYREPARSE (@4, $2, PITCH_IDENTIFIER, $4);
+               else
+                       MYREPARSE (@4, $2, SCM_ARG, $4);
+       }
+       | EXPECT_OPTIONAL EXPECT_SCM function_arglist_nonbackup steno_tonic_pitch
+       {
+               $$ = $3;
+               if (scm_is_true
+                   (scm_call_1
+                    ($2, make_music_from_simple
+                     (parser, @4, $4))))
+                       MYREPARSE (@4, $2, TONICNAME_PITCH, $4);
+               else
+                       MYREPARSE (@4, $2, SCM_ARG, $4);
+       }
        | EXPECT_OPTIONAL EXPECT_SCM function_arglist_nonbackup STRING
        {
                $$ = $3;
@@ -1490,55 +1677,65 @@ function_arglist_nonbackup_reparse:
        ;
 
 
+// function_arglist_backup can't occur at the end of an argument
+// list.
 function_arglist_backup:
-       function_arglist_backup_common
-       | function_arglist_common
-       ;
-
-function_arglist_backup_common:
-       EXPECT_OPTIONAL EXPECT_SCM function_arglist_backup embedded_scm_arg_closed
+       function_arglist_common
+       | EXPECT_OPTIONAL EXPECT_SCM function_arglist_backup embedded_scm_arg
        {
                if (scm_is_true (scm_call_1 ($2, $4)))
-               {
                        $$ = scm_cons ($4, $3);
-               } else {
-                       $$ = scm_cons (loc_on_music (@3, $1), $3);
-                       MYBACKUP (SCM_ARG, $4, @4);
+               else {
+                       $$ = make_music_from_simple (parser, @4, $4);
+                       if (scm_is_true (scm_call_1 ($2, $$)))
+                               $$ = scm_cons ($$, $3);
+                       else
+                       {
+                               $$ = scm_cons (loc_on_music (@3, $1), $3);
+                               MYBACKUP (SCM_ARG, $4, @4);
+                       }
                }
        }
-       | EXPECT_OPTIONAL EXPECT_SCM function_arglist_backup REPEAT simple_string unsigned_number
+       | EXPECT_OPTIONAL EXPECT_SCM function_arglist_backup post_event_nofinger
        {
-               $4 = MAKE_SYNTAX ("repeat", @4, $5, $6,
-                                 MY_MAKE_MUSIC ("Music", @4)->unprotect (),
-                                 SCM_EOL);
                if (scm_is_true (scm_call_1 ($2, $4)))
                {
-                       $$ = $3;
-                       MYREPARSE (@4, $2, REPEAT_IDENTIFIER, scm_cons ($5, $6));
+                       $$ = scm_cons ($4, $3);
                } else {
                        $$ = scm_cons (loc_on_music (@3, $1), $3);
-                       MYBACKUP (REPEAT_IDENTIFIER, scm_cons ($5, $6), @4);
+                       MYBACKUP (EVENT_IDENTIFIER, $4, @4);
                }
        }
-       | EXPECT_OPTIONAL EXPECT_SCM function_arglist_backup chord_body
+       | EXPECT_OPTIONAL EXPECT_SCM function_arglist_backup pitch
        {
-               if (scm_is_true (scm_call_1 ($2, $4)))
+               if (scm_is_true
+                   (scm_call_1
+                    ($2, make_music_from_simple
+                     (parser, @4, $4))))
                {
                        $$ = $3;
-                       MYREPARSE (@4, $2, CHORD_BODY_IDENTIFIER, $4);
-               } else {
+                       MYREPARSE (@4, $2, PITCH_IDENTIFIER, $4);
+               } else if (scm_is_true (scm_call_1 ($2, $4)))
+                       $$ = scm_cons ($4, $3);
+               else {
                        $$ = scm_cons (loc_on_music (@3, $1), $3);
-                       MYBACKUP (CHORD_BODY_IDENTIFIER, $4, @4);
+                       MYBACKUP (PITCH_IDENTIFIER, $4, @4);
                }
        }
-       | EXPECT_OPTIONAL EXPECT_SCM function_arglist_backup post_event_nofinger
+       | EXPECT_OPTIONAL EXPECT_SCM function_arglist_backup steno_tonic_pitch
        {
-               if (scm_is_true (scm_call_1 ($2, $4)))
+               if (scm_is_true
+                   (scm_call_1
+                    ($2, make_music_from_simple
+                     (parser, @4, $4))))
                {
+                       $$ = $3;
+                       MYREPARSE (@4, $2, TONICNAME_PITCH, $4);
+               } else if (scm_is_true (scm_call_1 ($2, $4)))
                        $$ = scm_cons ($4, $3);
-               else {
+               else {
                        $$ = scm_cons (loc_on_music (@3, $1), $3);
-                       MYBACKUP (EVENT_IDENTIFIER, $4, @4);
+                       MYBACKUP (TONICNAME_PITCH, $4, @4);
                }
        }
        | EXPECT_OPTIONAL EXPECT_SCM function_arglist_backup full_markup
@@ -1589,16 +1786,6 @@ function_arglist_backup_common:
                        MYBACKUP (NUMBER_IDENTIFIER, $4, @4);
                }
        }
-       | EXPECT_OPTIONAL EXPECT_SCM function_arglist_backup FRACTION
-       {
-               if (scm_is_true (scm_call_1 ($2, $4)))
-               {
-                       $$ = scm_cons ($4, $3);
-               } else {
-                       $$ = scm_cons (loc_on_music (@3, $1), $3);
-                       MYBACKUP (FRACTION, $4, @4);
-               }
-       }
        | EXPECT_OPTIONAL EXPECT_SCM function_arglist_backup '-' UNSIGNED
        {
                SCM n = scm_difference ($5, SCM_UNDEFINED);
@@ -1614,10 +1801,9 @@ function_arglist_backup_common:
                        else {
                                $$ = scm_cons (loc_on_music (@3, $1), $3);
                                MYBACKUP (UNSIGNED, $5, @5);
-                               parser->lexer_->push_extra_token ('-');
+                               parser->lexer_->push_extra_token (@4, '-');
                        }
                }
-               
        }
        | EXPECT_OPTIONAL EXPECT_SCM function_arglist_backup '-' REAL
        {
@@ -1640,38 +1826,6 @@ function_arglist_backup_common:
                        MYBACKUP (NUMBER_IDENTIFIER, n, @5);
                }
        }
-       | EXPECT_OPTIONAL EXPECT_SCM function_arglist_backup PITCH_IDENTIFIER
-       {
-               if (scm_is_true (scm_call_1 ($2, $4)))
-               {
-                       $$ = scm_cons ($4, $3);
-               } else {
-                       $$ = scm_cons (loc_on_music (@3, $1), $3);
-                       MYBACKUP (PITCH_IDENTIFIER, $4, @4);
-               }
-       }
-       | EXPECT_OPTIONAL EXPECT_SCM function_arglist_backup NOTENAME_PITCH
-       {
-               if (scm_is_true (scm_call_1 ($2, $4)))
-               {
-                       MYREPARSE (@4, $2, NOTENAME_PITCH, $4);
-                       $$ = $3;
-               } else {
-                       $$ = scm_cons (loc_on_music (@3, $1), $3);
-                       MYBACKUP (NOTENAME_PITCH, $4, @4);
-               }
-       }
-       | EXPECT_OPTIONAL EXPECT_SCM function_arglist_backup TONICNAME_PITCH
-       {
-               if (scm_is_true (scm_call_1 ($2, $4)))
-               {
-                       MYREPARSE (@4, $2, TONICNAME_PITCH, $4);
-                       $$ = $3;
-               } else {
-                       $$ = scm_cons (loc_on_music (@3, $1), $3);
-                       MYBACKUP (TONICNAME_PITCH, $4, @4);
-               }
-       }
        | EXPECT_OPTIONAL EXPECT_SCM function_arglist_backup DURATION_IDENTIFIER
        {
                if (scm_is_true (scm_call_1 ($2, $4)))
@@ -1713,7 +1867,7 @@ function_arglist_backup_common:
                        MYBACKUP (STRING, $4, @4);
                }
        }
-       | function_arglist_backup REPARSE music_assign
+       | function_arglist_backup REPARSE pitch_or_music
        {
                if (scm_is_true (scm_call_1 ($2, $3)))
                        $$ = scm_cons ($3, $1);
@@ -1774,11 +1928,6 @@ function_arglist_common:
                $$ = check_scheme_arg (parser, @3,
                                       $3, $2, $1);
        }
-       | EXPECT_SCM function_arglist_optional FRACTION
-       {
-               $$ = check_scheme_arg (parser, @3,
-                                      $3, $2, $1);
-       }
        | EXPECT_SCM function_arglist_optional post_event_nofinger
        {
                $$ = check_scheme_arg (parser, @3,
@@ -1799,6 +1948,16 @@ function_arglist_common:
                $$ = check_scheme_arg (parser, @3,
                                       $3, $1, $2);
        }
+       | function_arglist_common_reparse REPARSE pitch_or_music
+       {
+               if (scm_is_true (scm_call_1 ($2, $3)))
+                       $$ = scm_cons ($3, $1);
+               else
+                       $$ = check_scheme_arg (parser, @3,
+                                              make_music_from_simple
+                                              (parser, @3, $3),
+                                              $1, $2);
+       }
        | function_arglist_common_reparse REPARSE bare_number_common
        {
                $$ = check_scheme_arg (parser, @3,
@@ -1834,6 +1993,28 @@ function_arglist_common_reparse:
                        // know the predicate to be false.
                        MYREPARSE (@3, $1, SCM_ARG, $3);
        }
+       | EXPECT_SCM function_arglist_optional pitch
+       {
+               $$ = $2;
+               if (scm_is_true
+                   (scm_call_1
+                    ($1, make_music_from_simple
+                     (parser, @3, $3))))
+                       MYREPARSE (@3, $1, PITCH_IDENTIFIER, $3);
+               else
+                       MYREPARSE (@3, $1, SCM_ARG, $3);
+       }
+       | EXPECT_SCM function_arglist_optional steno_tonic_pitch
+       {
+               $$ = $2;
+               if (scm_is_true
+                   (scm_call_1
+                    ($1, make_music_from_simple
+                     (parser, @3, $3))))
+                       MYREPARSE (@3, $1, TONICNAME_PITCH, $3);
+               else
+                       MYREPARSE (@3, $1, SCM_ARG, $3);
+       }
        | EXPECT_SCM function_arglist_optional STRING
        {
                $$ = $2;
@@ -1899,7 +2080,6 @@ function_arglist_common_reparse:
                        else
                                MYREPARSE (@4, $1, SCM_ARG, $4);
                }
-               
        }
        | EXPECT_SCM function_arglist_optional '-' REAL
        {
@@ -1909,60 +2089,6 @@ function_arglist_common_reparse:
        }
        ;
 
-function_arglist_closed:
-       function_arglist_closed_nonbackup
-       | EXPECT_OPTIONAL EXPECT_SCM function_arglist_skip_nonbackup DEFAULT
-       {
-               $$ = scm_cons (loc_on_music (@4, $1), $3);
-       }
-       ;
-
-function_arglist_closed_common:
-       EXPECT_NO_MORE_ARGS {
-               $$ = SCM_EOL;
-       }
-       | EXPECT_SCM function_arglist_optional embedded_scm_arg_closed
-       {
-               $$ = check_scheme_arg (parser, @3,
-                                      $3, $2, $1);
-       }
-       | EXPECT_SCM function_arglist_optional bare_number_common_closed
-       {
-               $$ = check_scheme_arg (parser, @3,
-                                      $3, $2, $1);
-       }
-       | EXPECT_SCM function_arglist_optional '-' NUMBER_IDENTIFIER
-       {
-               $$ = check_scheme_arg (parser, @3,
-                                      scm_difference ($4, SCM_UNDEFINED),
-                                      $2, $1);
-       }
-       | EXPECT_SCM function_arglist_optional post_event_nofinger
-       {
-               $$ = check_scheme_arg (parser, @3,
-                                      $3, $2, $1);
-       }
-       | EXPECT_SCM function_arglist_optional FRACTION
-       {
-               $$ = check_scheme_arg (parser, @3,
-                                      $3, $2, $1);
-       }
-       | function_arglist_common_reparse REPARSE SCM_ARG
-       {
-               $$ = check_scheme_arg (parser, @3,
-                                      $3, $1, $2);
-       }
-       | function_arglist_common_reparse REPARSE bare_number_common_closed
-       {
-               $$ = check_scheme_arg (parser, @3,
-                                      $3, $1, $2);
-       }
-       | function_arglist_common_reparse REPARSE symbol_list_arg
-       {
-               $$ = check_scheme_arg (parser, @3, $3, $1, $2);
-       }
-       ;
-
 function_arglist_optional:
        function_arglist_backup
        | EXPECT_OPTIONAL EXPECT_SCM function_arglist_skip_backup DEFAULT
@@ -1980,24 +2106,6 @@ function_arglist_skip_backup:
        }
        ;
 
-embedded_scm_closed:
-       embedded_scm_bare
-       | scm_function_call_closed
-       ;
-
-embedded_scm_arg_closed:
-       embedded_scm_bare_arg
-       | scm_function_call_closed
-       | closed_music
-       ;
-
-scm_function_call_closed:
-       SCM_FUNCTION function_arglist_closed {
-               $$ = MAKE_SYNTAX ("music-function", @$,
-                                        $1, $2);
-       }
-       ;
-
 music_function_call:
        MUSIC_FUNCTION function_arglist {
                $$ = MAKE_SYNTAX ("music-function", @$,
@@ -2013,6 +2121,23 @@ optional_id:
        }
        ;
 
+// We must not have lookahead tokens parsed in lyric mode.  In order
+// to save confusion, we take almost the same set as permitted with
+// \lyricmode and/or \lyrics.  However, music identifiers are also
+// allowed, and they obviously do not require switching into lyrics
+// mode for parsing.
+
+lyric_mode_music:
+       {
+               parser->lexer_->push_lyric_state ();
+       } grouped_music_list
+       {
+               parser->lexer_->pop_state ();
+               $$ = $2;
+       }
+       | MUSIC_IDENTIFIER
+       ;
+
 complex_music:
        music_function_call
        | repeated_music                { $$ = $1; }
@@ -2125,20 +2250,11 @@ mode_changing_head_with_context:
        ;
 
 new_lyrics:
-       ADDLYRICS { parser->lexer_->push_lyric_state (); }
-       /*cont */
-       composite_music {
-       /* Can also use music at the expensive of two S/Rs similar to
-           \repeat \alternative */
-               parser->lexer_->pop_state ();
-
-               $$ = scm_cons ($3, SCM_EOL);
+       ADDLYRICS lyric_mode_music {
+               $$ = scm_list_1 ($2);
        }
-       | new_lyrics ADDLYRICS {
-               parser->lexer_->push_lyric_state ();
-       } composite_music {
-               parser->lexer_->pop_state ();
-               $$ = scm_cons ($4, $1);
+       | new_lyrics ADDLYRICS lyric_mode_music {
+               $$ = scm_cons ($3, $1);
        }
        ;
 
@@ -2146,17 +2262,14 @@ re_rhythmed_music:
        composite_music new_lyrics {
                $$ = MAKE_SYNTAX ("add-lyrics", @$, $1, scm_reverse_x ($2, SCM_EOL));
        } %prec COMPOSITE
-       | LYRICSTO simple_string {
-               parser->lexer_->push_lyric_state ();
-       } music {
-               parser->lexer_->pop_state ();
-               $$ = MAKE_SYNTAX ("lyric-combine", @$, $2, $4);
+       | LYRICSTO simple_string lyric_mode_music {
+               $$ = MAKE_SYNTAX ("lyric-combine", @$, $2, $3);
        }
        ;
 
 context_change:
-       CHANGE STRING '=' STRING  {
-               $$ = MAKE_SYNTAX ("context-change", @$, scm_string_to_symbol ($2), $4);
+       CHANGE symbol '=' simple_string  {
+               $$ = MAKE_SYNTAX ("context-change", @$, $2, $4);
        }
        ;
 
@@ -2244,7 +2357,7 @@ revert_arg_part:
        | revert_arg_backup BACKUP SCM_ARG symbol_list_part
        {
                $$ = scm_append_x (scm_list_2 ($4, $3));
-       }               
+       }
        ;
 
 context_def_mod:
@@ -2402,10 +2515,10 @@ simple_revert_context:
                    (scm_object_property (scm_car ($1),
                                          ly_symbol2scm ("is-grob?")))) {
                        $$ = ly_symbol2scm ("Bottom");
-                       parser->lexer_->push_extra_token (SCM_IDENTIFIER, $1);
+                       parser->lexer_->push_extra_token (@1, SCM_IDENTIFIER, $1);
                } else {
                        $$ = scm_car ($1);
-                       parser->lexer_->push_extra_token (SCM_IDENTIFIER,
+                       parser->lexer_->push_extra_token (@1, SCM_IDENTIFIER,
                                                          scm_cdr ($1));
                }
        }
@@ -2463,6 +2576,7 @@ symbol:
 
 scalar:
        embedded_scm_arg
+       | pitch_or_music
        | SCM_IDENTIFIER
        | bare_number
        // The following is a rather defensive variant of admitting
@@ -2476,35 +2590,17 @@ scalar:
        {
                $$ = scm_difference ($2, SCM_UNDEFINED);
        }
-       | FRACTION
-       | STRING
-       | full_markup
+       | string
        ;
 
 event_chord:
        simple_element post_events {
                // Let the rhythmic music iterator sort this mess out.
                if (scm_is_pair ($2)) {
-                       $$ = make_music_from_simple (parser, @1, $1);
-                       if (unsmob_music ($$))
-                                unsmob_music ($$)->set_property ("articulations",
-                                                                 scm_reverse_x ($2, SCM_EOL));
-                        else
-                       {
-                                parser->parser_error (@1, _("music expected"));
-                               $$ = MAKE_SYNTAX ("void-music", @1);
-                       }
+                       unsmob_music ($$)->set_property ("articulations",
+                                                        scm_reverse_x ($2, SCM_EOL));
                }
        } %prec ':'
-       | simple_chord_elements post_events     {
-               SCM elts = ly_append2 ($1, scm_reverse_x ($2, SCM_EOL));
-
-               Input i;
-               /* why is this giving wrong start location? -ns
-                * i = @$; */
-               i.set_location (@1, @2);
-               $$ = MAKE_SYNTAX ("event-chord", i, elts);
-       } %prec ':'
        | CHORD_REPETITION optional_notemode_duration post_events {
                Input i;
                i.set_location (@1, @3);
@@ -2517,7 +2613,7 @@ event_chord:
                $$ = MAKE_SYNTAX ("multi-measure-rest", i, $2,
                                  scm_reverse_x ($3, SCM_EOL));
        } %prec ':'
-       | command_element
+       | tempo_event
        | note_chord_element
        ;
 
@@ -2545,7 +2641,10 @@ chord_body:
        {
                $$ = MAKE_SYNTAX ("event-chord", @$, scm_reverse_x ($2, SCM_EOL));
        }
-       | CHORD_BODY_IDENTIFIER
+       | FIGURE_OPEN figure_list FIGURE_CLOSE
+       {
+               $$ = MAKE_SYNTAX ("event-chord", @$, scm_reverse_x ($2, SCM_EOL));
+       }
        ;
 
 chord_body_elements:
@@ -2612,40 +2711,16 @@ chord_body_element:
 music_function_chord_body:
        music_function_call
        | MUSIC_IDENTIFIER
-       ;
-
-// Event functions may only take closed arglists, otherwise it would
-// not be clear whether a following postevent should be associated
-// with the last argument of the event function or with the expression
-// for which the function call acts itself as event.
-
-music_function_call_closed:
-       MUSIC_FUNCTION function_arglist_closed {
-               $$ = MAKE_SYNTAX ("music-function", @$,
-                                        $1, $2);
-       }
+       | embedded_scm
        ;
 
 event_function_event:
-       EVENT_FUNCTION function_arglist_closed {
+       EVENT_FUNCTION function_arglist {
                $$ = MAKE_SYNTAX ("music-function", @$,
                                         $1, $2);
        }
        ;
 
-command_element:
-       command_event {
-               $$ = $1;
-       }
-       ;
-
-command_event:
-       tempo_event {
-               $$ = $1;
-       }
-       ;
-
-
 post_events:
        /* empty */ {
                $$ = SCM_EOL;
@@ -2674,7 +2749,7 @@ post_event_nofinger:
        direction_less_event {
                $$ = $1;
        }
-       | script_dir music_function_call_closed {
+       | script_dir music_function_call {
                $$ = $2;
                if (!unsmob_music ($2)->is_mus_type ("post-event")) {
                        parser->parser_error (@2, _ ("post-event expected"));
@@ -2719,7 +2794,7 @@ post_event_nofinger:
        {
                $$ = $2;
                unsmob_music ($$)->set_property ("direction", scm_from_int (DOWN));
-       }                       
+       }
        ;
 
 post_event:
@@ -2747,7 +2822,7 @@ direction_less_event:
                a->set_property ("tremolo-type", $1);
                $$ = a->unprotect ();
         }
-       | event_function_event  
+       | event_function_event
        ;
 
 direction_reqd_event:
@@ -2756,11 +2831,21 @@ direction_reqd_event:
        }
        | script_abbreviation {
                SCM s = parser->lexer_->lookup_identifier ("dash" + ly_scm2string ($1));
-               Music *a = MY_MAKE_MUSIC ("ArticulationEvent", @$);
-               if (scm_is_string (s))
+               if (scm_is_string (s)) {
+                       Music *a = MY_MAKE_MUSIC ("ArticulationEvent", @$);
                        a->set_property ("articulation-type", s);
-               else parser->parser_error (@1, _ ("expecting string as script definition"));
-               $$ = a->unprotect ();
+                       $$ = a->unprotect ();
+               } else {
+                       Music *original = unsmob_music (s);
+                       if (original && original->is_mus_type ("post-event")) {
+                               Music *a = original->clone ();
+                               a->set_spot (parser->lexer_->override_input (@$));
+                               $$ = a->unprotect ();
+                       } else {
+                               parser->parser_error (@1, _ ("expecting string or post-event as script definition"));
+                               $$ = MY_MAKE_MUSIC ("PostEvents", @$)->unprotect ();
+                       }
+               }
        }
        ;
 
@@ -2824,7 +2909,14 @@ steno_tonic_pitch:
 
 pitch:
        steno_pitch
-       | PITCH_IDENTIFIER
+       | PITCH_IDENTIFIER quotes {
+                if (!scm_is_eq (SCM_INUM0, $2))
+                {
+                        Pitch p = *unsmob_pitch ($1);
+                        p = p.transposed (Pitch (scm_to_int ($2),0,0));
+                        $$ = p.smobbed_copy ();
+                }
+       }
        ;
 
 gen_text_def:
@@ -2839,7 +2931,7 @@ gen_text_def:
                        make_simple_markup ($1));
                $$ = t->unprotect ();
        }
-       | embedded_scm_closed
+       | embedded_scm
        {
                Music *m = unsmob_music ($1);
                if (m && m->is_mus_type ("post-event"))
@@ -2960,12 +3052,16 @@ dots:
 
 tremolo_type:
        ':'     {
-               $$ = SCM_INUM0;
+               $$ = scm_from_int (parser->default_tremolo_type_);
        }
        | ':' UNSIGNED {
-               if (SCM_UNBNDP (make_duration ($2)))
+               if (SCM_UNBNDP (make_duration ($2))) {
                        parser->parser_error (@2, _ ("not a duration"));
-               $$ = $2;
+                       $$ = scm_from_int (parser->default_tremolo_type_);
+               } else {
+                       $$ = $2;
+                       parser->default_tremolo_type_ = scm_to_int ($2);
+               }
        }
        ;
 
@@ -3065,56 +3161,72 @@ figure_list:
        }
        ;
 
-figure_spec:
-       FIGURE_OPEN figure_list FIGURE_CLOSE {
-               $$ = scm_reverse_x ($2, SCM_EOL);
-       }
-       ;
-
-
 optional_rest:
        /**/   { $$ = SCM_BOOL_F; }
        | REST { $$ = SCM_BOOL_T; }
        ;
 
-simple_element:
-       pitch exclamations questions octave_check maybe_notemode_duration optional_rest {
+pitch_or_music:
+       pitch exclamations questions octave_check maybe_notemode_duration optional_rest post_events {
                if (!parser->lexer_->is_note_state ())
                        parser->parser_error (@1, _ ("have to be in Note mode for notes"));
                if (!SCM_UNBNDP ($2)
                     || !SCM_UNBNDP ($3)
                     || scm_is_number ($4)
                     || !SCM_UNBNDP ($5)
-                    || scm_is_true ($6))
+                    || scm_is_true ($6)
+                   || scm_is_pair ($7))
                {
                        Music *n = 0;
                        if (scm_is_true ($6))
                                n = MY_MAKE_MUSIC ("RestEvent", @$);
                        else
                                n = MY_MAKE_MUSIC ("NoteEvent", @$);
-                       
+
                        n->set_property ("pitch", $1);
                        if (SCM_UNBNDP ($5))
                                n->set_property ("duration",
                                                 parser->default_duration_.smobbed_copy ());
                        else
                                n->set_property ("duration", $5);
-                       
+
                        if (scm_is_number ($4))
                        {
                                int q = scm_to_int ($4);
                                n->set_property ("absolute-octave", scm_from_int (q-1));
                        }
-                       
+
                        if (to_boolean ($3))
                                n->set_property ("cautionary", SCM_BOOL_T);
                        if (to_boolean ($2) || to_boolean ($3))
                                n->set_property ("force-accidental", SCM_BOOL_T);
-                       
+                       if (scm_is_pair ($7))
+                               n->set_property ("articulations",
+                                                scm_reverse_x ($7, SCM_EOL));
                        $$ = n->unprotect ();
                }
-       }
-       | DRUM_PITCH optional_notemode_duration {
+       } %prec ':'
+       | new_chord post_events {
+               if (!parser->lexer_->is_chord_state ())
+                        parser->parser_error (@1, _ ("have to be in Chord mode for chords"));
+               if (scm_is_pair ($2)) {
+                       if (unsmob_pitch ($1))
+                               $1 = make_chord_elements (@1,
+                                                         $1,
+                                                         parser->default_duration_.smobbed_copy (),
+                                                         SCM_EOL);
+
+                       SCM elts = ly_append2 ($1, scm_reverse_x ($2, SCM_EOL));
+
+                       $$ = MAKE_SYNTAX ("event-chord", @1, elts);
+               } else if (!unsmob_pitch ($1))
+                       $$ = MAKE_SYNTAX ("event-chord", @1, $1);
+               // A mere pitch drops through.
+       } %prec ':'
+       ;
+
+simple_element:
+       DRUM_PITCH optional_notemode_duration {
                Music *n = MY_MAKE_MUSIC ("NoteEvent", @$);
                n->set_property ("duration", $2);
                n->set_property ("drum-type", $1);
@@ -3136,21 +3248,6 @@ simple_element:
        }
        ;
 
-simple_chord_elements:
-       new_chord {
-                if (!parser->lexer_->is_chord_state ())
-                        parser->parser_error (@1, _ ("have to be in Chord mode for chords"));
-                $$ = $1;
-       }
-       | figure_spec optional_notemode_duration {
-               for (SCM s = $1; scm_is_pair (s); s = scm_cdr (s))
-               {
-                       unsmob_music (scm_car (s))->set_property ("duration", $2);
-               }
-               $$ = $1;
-       }
-       ;
-
 lyric_element:
        full_markup {
                if (!parser->lexer_->is_lyric_state ())
@@ -3174,9 +3271,13 @@ lyric_element_music:
        } %prec ':'
        ;
 
+// Can return a single pitch rather than a list.
 new_chord:
-       steno_tonic_pitch optional_notemode_duration   {
-               $$ = make_chord_elements (@$, $1, $2, SCM_EOL);
+       steno_tonic_pitch maybe_notemode_duration   {
+               if (SCM_UNBNDP ($2))
+                       $$ = $1;
+               else
+                       $$ = make_chord_elements (@$, $1, $2, SCM_EOL);
        }
        | steno_tonic_pitch optional_notemode_duration chord_separator chord_items {
                SCM its = scm_reverse_x ($4, SCM_EOL);
@@ -3240,10 +3341,10 @@ step_number:
        ;
 
 tempo_range:
-       UNSIGNED {
+       unsigned_number {
                $$ = $1;
-       }
-       | UNSIGNED '-' UNSIGNED {
+       } %prec ':'
+       | unsigned_number '-' unsigned_number {
                $$ = scm_cons ($1, $3);
        }
        ;
@@ -3284,18 +3385,14 @@ number_factor:
        ;
 
 bare_number_common:
-       bare_number_common_closed
+       REAL
+       | NUMBER_IDENTIFIER
        | REAL NUMBER_IDENTIFIER
        {
                $$ = scm_product ($1, $2);
        }
        ;
 
-bare_number_common_closed:
-       REAL
-       | NUMBER_IDENTIFIER
-       ;
-
 bare_number:
        bare_number_common
        | UNSIGNED
@@ -3304,14 +3401,26 @@ bare_number:
        }
        ;
 
-bare_number_closed:
-       UNSIGNED
-       | bare_number_common_closed
-       ;
-
 unsigned_number:
        UNSIGNED
        | NUMBER_IDENTIFIER
+       {
+               if (!scm_is_integer ($1)
+                   || scm_is_true (scm_negative_p ($1)))
+               {
+                       parser->parser_error (@1, _("not an unsigned integer"));
+                       $$ = SCM_INUM0;
+               }
+       }
+       | embedded_scm
+       {
+               if (!scm_is_integer ($1)
+                   || scm_is_true (scm_negative_p ($1)))
+               {
+                       parser->parser_error (@1, _("not an unsigned integer"));
+                       $$ = SCM_INUM0;
+               }
+       }
        ;
 
 exclamations:
@@ -3326,7 +3435,13 @@ exclamations:
        ;
 
 questions:
-       { $$ = SCM_UNDEFINED; }
+// This precedence rule is rather weird.  It triggers when '!' is
+// encountered after a pitch, and is used for deciding whether to save
+// this instead for a figure modification.  This should not actually
+// occur in practice as pitches and figures are generated in different
+// modes.  Using a greedy (%right) precedence makes sure that we don't
+// get stuck in a wrong interpretation.
+       { $$ = SCM_UNDEFINED; } %prec ':'
        | questions '?'
         {
                 if (SCM_UNBNDP ($1))
@@ -3355,7 +3470,7 @@ full_markup:
        ;
 
 markup_top:
-       simple_markup_list {
+       markup_list {
                $$ = scm_list_2 (ly_lily_module_constant ("line-markup"),  $1);
        }
        | markup_head_1_list simple_markup
@@ -3381,9 +3496,9 @@ markup_scm:
                }
        } BACKUP
        ;
-                       
 
-simple_markup_list:
+
+markup_list:
        markup_composed_list {
                $$ = $1;
        }
@@ -3401,22 +3516,18 @@ markup_uncomposed_list:
        {
                $$ = $2;
        }
-       ;
-
-markup_list:
-       simple_markup_list
-       | markup_score
-       {
-               $$ = scm_list_1 (scm_list_2 (ly_lily_module_constant ("score-lines-markup-list"), $1));
-       }
-       ;
-
-markup_score:
-       SCORE {
+       | SCORELINES {
                SCM nn = parser->lexer_->lookup_identifier ("pitchnames");
                parser->lexer_->push_note_state (nn);
        } '{' score_body '}' {
-               $$ = $4;
+               Score *sc = unsmob_score ($4);
+               sc->origin ()->set_spot (@$);
+               if (sc->defs_.empty ()) {
+                       Output_def *od = get_layout (parser);
+                       sc->add_output_def (od);
+                       od->unprotect ();
+               }
+               $$ = scm_list_1 (scm_list_2 (ly_lily_module_constant ("score-lines-markup-list"), $4));
                parser->lexer_->pop_state ();
        }
        ;
@@ -3439,7 +3550,7 @@ markup_braced_list_body:
        | markup_braced_list_body markup {
                $$ = scm_cons ($2, $1);
        }
-       | markup_braced_list_body simple_markup_list {
+       | markup_braced_list_body markup_list {
                $$ = scm_reverse_x ($2, $1);
        }
        ;
@@ -3454,7 +3565,7 @@ markup_command_basic_arguments:
        EXPECT_MARKUP_LIST markup_command_list_arguments markup_list {
          $$ = scm_cons ($3, $2);
        }
-       | EXPECT_SCM markup_command_list_arguments embedded_scm_closed {
+       | EXPECT_SCM markup_command_list_arguments embedded_scm {
          $$ = check_scheme_arg (parser, @3, $3, $2, $1);
        }
        | EXPECT_NO_MORE_ARGS {
@@ -3488,6 +3599,20 @@ simple_markup:
        STRING {
                $$ = make_simple_markup ($1);
        }
+       | SCORE {
+               SCM nn = parser->lexer_->lookup_identifier ("pitchnames");
+               parser->lexer_->push_note_state (nn);
+       } '{' score_body '}' {
+               Score *sc = unsmob_score ($4);
+               sc->origin ()->set_spot (@$);
+               if (sc->defs_.empty ()) {
+                       Output_def *od = get_layout (parser);
+                       sc->add_output_def (od);
+                       od->unprotect ();
+               }
+               $$ = scm_list_2 (ly_lily_module_constant ("score-markup"), $4);
+               parser->lexer_->pop_state ();
+       }
        | MARKUP_FUNCTION markup_command_basic_arguments {
                $$ = scm_cons ($1, scm_reverse_x ($2, SCM_EOL));
        }
@@ -3495,10 +3620,6 @@ simple_markup:
        {
                $$ = $2;
        }
-       | markup_score
-       {
-               $$ = scm_list_2 (ly_lily_module_constant ("score-markup"), $1);
-       }
        ;
 
 markup:
@@ -3550,16 +3671,12 @@ Lily_lexer::try_special_identifiers (SCM *destination, SCM sid)
        } else if (scm_is_number (sid)) {
                *destination = sid;
                return NUMBER_IDENTIFIER;
-        } else if (unsmob_context_def (sid)) {
-                Context_def *def= unsmob_context_def (sid)->clone ();
-
-                *destination = def->self_scm ();
-                def->unprotect ();
-
-                return CONTEXT_DEF_IDENTIFIER;
+       } else if (unsmob_context_def (sid))
+       {
+               *destination = unsmob_context_def (sid)->clone ()->unprotect ();
+               return SCM_IDENTIFIER;
         } else if (unsmob_context_mod (sid)) {
                 *destination = unsmob_context_mod (sid)->smobbed_copy ();
-
                 return CONTEXT_MOD_IDENTIFIER;
        } else if (Music *mus = unsmob_music (sid)) {
                mus = mus->clone ();
@@ -3574,12 +3691,11 @@ Lily_lexer::try_special_identifiers (SCM *destination, SCM sid)
                *destination = unsmob_duration (sid)->smobbed_copy ();
                return DURATION_IDENTIFIER;
        } else if (unsmob_output_def (sid)) {
-               Output_def *p = unsmob_output_def (sid);
-               p = p->clone ();
-
-               *destination = p->self_scm ();
-               p->unprotect ();
-               return OUTPUT_DEF_IDENTIFIER;
+               *destination = unsmob_output_def (sid)->clone ()->unprotect ();
+               return SCM_IDENTIFIER;
+       } else if (unsmob_score (sid)) {
+               *destination = unsmob_score (sid)->clone ()->unprotect ();
+               return SCM_IDENTIFIER;
        }
 
        return -1;
@@ -3736,9 +3852,12 @@ make_music_from_simple (Lily_parser *parser, Input loc, SCM simple)
                                            parser->default_duration_.smobbed_copy ());
        } else if (parser->lexer_->is_chord_state ()) {
                if (unsmob_pitch (simple))
-                       return make_chord_elements (loc, simple,
-                                                   parser->default_duration_.smobbed_copy (),
-                                                   SCM_EOL);
+                       return MAKE_SYNTAX
+                               ("event-chord",
+                                loc,
+                                make_chord_elements (loc, simple,
+                                                     parser->default_duration_.smobbed_copy (),
+                                                     SCM_EOL));
        }
        return simple;
 }
@@ -3801,6 +3920,9 @@ yylex (YYSTYPE *s, YYLTYPE *loc, Lily_parser *parser)
 
        lex->lexval_ = s;
        lex->lexloc_ = loc;
+       int tok = lex->pop_extra_token ();
+       if (tok >= 0)
+               return tok;
        lex->prepare_for_next_token ();
        return lex->yylex ();
 }
index 6d11c155f8dcab531f3325f1dbad67f26a2fb91a..3fe404ce3510000b24881f63f9579c435b158e5c 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2000--2012 Jan Nieuwenhuizen <janneke@gnu.org>
+  Copyright (C) 2000--2014 Jan Nieuwenhuizen <janneke@gnu.org>
 
   Han-Wen Nienhuys <hanwen@xs4all.nl>
 
index 654edc35be3ce9751e29c4ac1362742ac6f5f5a9..922016b15cae8336190f052490e25d3b63b70abc 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2004--2012 Han-Wen Nienhuys
+  Copyright (C) 2004--2014 Han-Wen Nienhuys
 
   LilyPond is free software: you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
index 7c3b3e965b56f171ef2e3761c7c9a85867581ad0..9ed7debe2f0820d8f66e0c21abb0d9dab76dda53 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2010--2012 Neil Puttock <n.puttock@gmail.com>
+  Copyright (C) 2010--2014 Neil Puttock <n.puttock@gmail.com>
 
   LilyPond is free software: you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
@@ -38,14 +38,34 @@ Partial_iterator::process (Moment m)
   if (Duration * dur
       = unsmob_duration (get_music ()->get_property ("duration")))
     {
-      Context *ctx = get_outlet ();
-      Moment now = ctx->now_mom ();
-      if (now.main_part_ > Rational (0))
-        get_music ()->origin ()->
-        warning (_ ("trying to use \\partial after the start of a piece"));
-      Moment length = Moment (dur->get_length ());
-      now = Moment (0, now.grace_part_);
-      ctx->set_property ("measurePosition", (now - length).smobbed_copy ());
+      // Partial_iterator is an iterator rather than an engraver, so
+      // the active context it is getting called in does not depend on
+      // which context definition the engraver might be defined.
+      //
+      // Using where_defined to find the context where measurePosition
+      // should be overwritten does not actually work since the
+      // Timing_translator does not set measurePosition when
+      // initializing.
+
+      Context *timing = unsmob_context (scm_call_2 (ly_lily_module_constant ("ly:context-find"),
+                                                    get_outlet ()->self_scm (),
+                                                    ly_symbol2scm ("Timing")));
+
+      if (!timing)
+        programming_error ("missing Timing in \\partial");
+      else
+        {
+          Moment mp = robust_scm2moment (timing->get_property ("measurePosition"),
+                                         Rational (0));
+
+          if (get_outlet ()->now_mom () > 0)
+            mp.main_part_ = measure_length (timing);
+          else
+            mp.main_part_ = 0;
+
+          Moment length = Moment (dur->get_length ());
+          timing->set_property ("measurePosition", (mp - length).smobbed_copy ());
+        }
     }
   else
     programming_error ("invalid duration in \\partial");
index 544ce974614c253cf89d7952464171d20320c6c1..2c8605639108eac4cdb1b1da75e969ef272d43e5 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2011--2012 Reinhold Kainhofer <reinhold@kainhofer.com>
+  Copyright (C) 2011--2014 Reinhold Kainhofer <reinhold@kainhofer.com>
 
   LilyPond is free software: you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
index a6ef072ea6ba493adc0c5a741b67ccf6add0637c..008081f138f4ee897e2814cf062d04d9292801ac 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2000--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>, Erik Sandberg <mandolaerik@gmail.com>
+  Copyright (C) 2000--2014 Han-Wen Nienhuys <hanwen@xs4all.nl>, Erik Sandberg <mandolaerik@gmail.com>
 
   LilyPond is free software: you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
index 928089af8b8aa77738aee8d2d550e8c0843deb5c..faf14c40f3d6bdf44d00cb13de2227ae66fb0920 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2001--2012  Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 2001--2014  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
index dd149049f48364eff3c5031a4b5cc5da7127c87d..c2779f97e33b8b637c4f938a9da453b3e3ddf370 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2001--2012  Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 2001--2014  Han-Wen Nienhuys <hanwen@xs4all.nl>
                   Erik Sandberg <mandolaerik@gmail.com>
 
   LilyPond is free software: you can redistribute it and/or modify
@@ -43,6 +43,7 @@ SCM
 Percent_repeat_iterator::get_music_list () const
 {
   Music *mus = get_music ();
+
   Music *child = Repeated_music::body (mus);
   SCM length = child->get_length ().smobbed_copy ();
   SCM child_list = SCM_EOL;
index affc4f04cfdbd999de8423336b55bafd425c7dc6..ab8e234b17c145da517539666cdbf71aa86afbe9 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2005--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 2005--2014 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
index 4e19544d41823b6e21a5e0003d0a6616641a4745..4aa03331e8a79f05345c747303459683e14fecc8 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1997--2012 Jan Nieuwenhuizen <janneke@gnu.org>
+  Copyright (C) 1997--2014 Jan Nieuwenhuizen <janneke@gnu.org>
 
   LilyPond is free software: you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
@@ -23,6 +23,7 @@
 using namespace std;
 
 #include "audio-column.hh"
+#include "audio-item.hh"
 #include "audio-staff.hh"
 #include "file-name.hh"
 #include "international.hh"
@@ -53,11 +54,18 @@ Performance::output (Midi_stream &midi_stream) const
   midi_stream.write (Midi_header (1, tracks_, 384));
   debug_output (_ ("Track...") + " ", false);
 
+  //Find the first Audio_item in the performance, so all staves start
+  //at the same tick.
+  Moment start_mom = 0;
+  for (vsize i = 0; i < audio_elements_.size (); i++)
+    if (Audio_item *item = dynamic_cast<Audio_item *>(audio_elements_[i]))
+      start_mom = min (start_mom, item->audio_column_->when ());
+
   for (vsize i = 0; i < audio_staffs_.size (); i++)
     {
       Audio_staff *s = audio_staffs_[i];
-      debug_output ("[" + to_string (i), true);
-      s->output (midi_stream, i, ports_);
+      debug_output ("[" + ::to_string (i), true);
+      s->output (midi_stream, i, ports_, moment_to_ticks (start_mom));
       debug_output ("]", false);
     }
 }
index 8a8cb4719d66086d143d20f2ab270d8dd275f28a..d7cda2bca9b3d4fd423b50bcc9c06a3ad14cc20e 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1996--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 1996--2014 Han-Wen Nienhuys <hanwen@xs4all.nl>
   Jan Nieuwenhuizen <janneke@gnu.org>
 
   LilyPond is free software: you can redistribute it and/or modify
index d6ea9bd4d9bdd5a6432fbeb2577b1b7692daf563..bc6bd3b5ada39d6518a56745d68f2e7332fb09cd 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1996--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 1996--2014 Han-Wen Nienhuys <hanwen@xs4all.nl>
   Jan Nieuwenhuizen <janneke@gnu.org>
 
   LilyPond is free software: you can redistribute it and/or modify
index 0fb1d5b76ef37232fe85a39b697c9a25272b72f9..c69333437abbdb729048bf525fcdc25a3f336334 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2004--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 2004--2014 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
index 6d9aac7af68d64fb5b7220acc2ebccb0f37435d0..ef11e66ac3516da74c48741a40305fdf37556f11 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1997--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 1997--2014 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
index 31115925996d2ce309865beccda09152d142e735..e05cee9e058c4d47cea7c1f7093b64e972a0b2d3 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2006--2012 Han-Wen Nienhuys <hanwen@lilypond.org>
+  Copyright (C) 2006--2014 Han-Wen Nienhuys <hanwen@lilypond.org>
 
 
   LilyPond is free software: you can redistribute it and/or modify
index 89a97fb4e33102e288512ff3b282d6db634afc7e..821067bee65f19520a21b6409fb5133d65b529db 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2003--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 2003--2014 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
index c976863e02ca85b256e5e721afcf0b300cd8042d..5cbb10954e39f4075c8f08ab6a67c582e913a4fe 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2000--2012 Jan Nieuwenhuizen <janneke@gnu.org>,
+  Copyright (C) 2000--2014 Jan Nieuwenhuizen <janneke@gnu.org>,
                  Erik Sandberg <mandolaerik@gmail.com>
 
   Chris Jackson <chris@fluffhouse.org.uk> - extended to support
index dd288025ddcbf8184f4a90d208ba4243a2295e5c..b3c2aefd589840457f93167a3d81855a3c4b3bac 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2000--2012 Jan Nieuwenhuizen <janneke@gnu.org>
+  Copyright (C) 2000--2014 Jan Nieuwenhuizen <janneke@gnu.org>
 
   LilyPond is free software: you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
index 084084e4f9cf1846abc6c68c2d262aed34eb9089..110390441899b56a49f84c280af47990fb2fdd60 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2004--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 2004--2014 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
index 238d235e72652853f0dda3850f05c37edef062a6..07a9a096b3051fe4dfec6ff9117ad3a9e2c2bf1c 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2005--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 2005--2014 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
index d52b02dee9aa46d012e90dc04e22ad5453c7142f..c2832da16adad4a147085d93a14282f0b82087e9 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1997--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 1997--2014 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
index b26076a0083c88efcb48ee476e2e2efe7526dc38..bf2fd714ac4a61fb0aac0c9b057980f1cb8f413c 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1998--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 1998--2014 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
index c2a02e71d9e213a2db91bb409955a5f7e5277bec..0e97853f7ece5992f045fbc183e1fb9596a07e06 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2005--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 2005--2014 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
@@ -98,7 +98,7 @@ Pitched_trill_engraver::make_trill (Stream_event *ev)
   SCM scm_pitch = ev->get_property ("pitch");
   Pitch *p = unsmob_pitch (scm_pitch);
 
-  SCM keysig = get_property ("localKeySignature");
+  SCM keysig = get_property ("localAlterations");
 
   SCM key = scm_cons (scm_from_int (p->get_octave ()),
                       scm_from_int (p->get_notename ()));
index 0c786f4488a46a56c0ca0caa19d5ae8784d1a193..0c64ca1c4d6a83b74862354b50fde5a7188eb187 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2010--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 2010--2014 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
index 045563d457b9acd572a203788fb5dea3d4dab336..62063b1135f0d1ec12a54e446604aed6d25c11f2 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2005--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 2005--2014 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
index 30704f5fc6f1c1ab427673bfaf5950d46e9cdfd3..51bd53c48aa8b8629ee6e875180ab539b9686aa9 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2005--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 2005--2014 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
index 367d1616a7b4aae73b48eb674876b9de4b24f61d..60ed8915eb08c619488d498dcbb0f82939e65e78 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2004--2012 Jan Nieuwenhuizen <janneke@gnu.org>
+  Copyright (C) 2004--2014 Jan Nieuwenhuizen <janneke@gnu.org>
 
   LilyPond is free software: you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
index d621564e4747139205a6837069a6aa79b0bd6254..f51df87ef0d41194b0e88e7406d969b355a0782d 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2005--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 2005--2014 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
index 302b48e3f48b9ec5f6dda3450c39a111f66a30c8..71538d69e699eed04babfbcd3d44fac8e710e019 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2001--2012  Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 2001--2014  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
index 51d8ca82d838bddc6f3c20c286ed784ca76ea93e..e54429319dff0eb24a0a35492d55c72f1fec32d8 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2007--2012 Han-Wen Nienhuys <hanwen@lilypond.org>
+  Copyright (C) 2007--2014 Han-Wen Nienhuys <hanwen@lilypond.org>
 
 
   LilyPond is free software: you can redistribute it and/or modify
index 6352f16399b92a41438de83cf639e6a40e679da5..076bda4f00477df838e13ff8dc656e08ce936d11 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1997--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 1997--2014 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
@@ -52,22 +52,41 @@ Property_iterator::process (Moment mom)
   if (once)
     {
       Global_context *tg = get_outlet ()->get_global_context ();
-      tg->add_finalization (scm_list_n (once_finalization_proc,
+      tg->add_finalization (scm_list_4 (once_finalization_proc,
                                         o->self_scm (), m->self_scm (),
-                                        ly_quote_scm (previous_value), SCM_UNDEFINED));
+                                        previous_value));
     }
 
   Simple_music_iterator::process (mom);
 }
 
 void
-Property_unset_iterator::process (Moment m)
+Property_unset_iterator::process (Moment mom)
 {
-  SCM sym = get_music ()->get_property ("symbol");
-  send_stream_event (get_outlet (), "UnsetProperty", get_music ()->origin (),
-                     ly_symbol2scm ("symbol"), sym);
+  Context *o = get_outlet ();
+  Music *m = get_music ();
+  bool once = to_boolean (m->get_property ("once"));
+  SCM symbol = m->get_property ("symbol");
+  SCM previous_value = SCM_UNDEFINED;
+  if (once) {
+    Context *w = o->where_defined (symbol, &previous_value);
+    if (o != w)
+      previous_value = SCM_UNDEFINED;
+  }
+  send_stream_event (o, "UnsetProperty", m->origin (),
+                     ly_symbol2scm ("symbol"), symbol);
 
-  Simple_music_iterator::process (m);
+  /* For \once \unset install a finalization hook to reset the property to the
+   * previous value after the timestep */
+  if (once && !SCM_UNBNDP (previous_value))
+    {
+      Global_context *tg = get_outlet ()->get_global_context ();
+      tg->add_finalization (scm_list_4 (Property_iterator::once_finalization_proc,
+                                        o->self_scm (), m->self_scm (),
+                                        previous_value));
+    }
+
+  Simple_music_iterator::process (mom);
 }
 
 MAKE_SCHEME_CALLBACK (Property_iterator, once_finalization, 3);
@@ -168,8 +187,8 @@ Push_property_iterator::do_quit ()
       SCM music = get_music ()->self_scm ();
 
       Global_context *tg = get_outlet ()->get_global_context ();
-      tg->add_finalization (scm_list_n (once_finalization_proc,
-                                        trans, music, SCM_UNDEFINED));
+      tg->add_finalization (scm_list_3 (once_finalization_proc,
+                                        trans, music));
     }
 }
 
index 147b83fefdaac6b1d2de6aef92353667f890d5bb..bfcd1c45eae8d76b5a0dc707666a8ad8b3752972 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1998--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 1998--2014 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
index 24925d29b8599b027703cc76cd0add07114f214b..0c246f1b71ae40104a2b4f65c8a577e602601398 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2011--2012 Mike Solomon <mike@mikesolomon.org>
+  Copyright (C) 2011--2014 Mike Solomon <mike@mikesolomon.org>
 
   LilyPond is free software: you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
index 4f70da828b19aaf7ed693f04974a2254695b0180..d0052047847f7fb21bff84b4879ea4ac3ac9e3f2 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2011--2012 Mike Solomon <mike@mikesolomon.org>
+  Copyright (C) 2011--2014 Mike Solomon <mike@mikesolomon.org>
 
   LilyPond is free software: you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
index d35bb54b2c9d336cf668b60c0e42e0583e5a7f34..c8e8a1a42e2c79f0f7fcd1d59e3e651f466ee590 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2004--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 2004--2014 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
index 91360f52b1ccb6f1eb93fccd1489116181cffb0b..c403b2ad9d293e01e10f10745e222ae3667c8caa 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2005--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 2005--2014 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
index 2f31e20a223c3a2d854557df7dd6f1289aa99dd8..f501e19a79bb4f753b650e705111dc979a4ce0b2 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1998--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 1998--2014 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
index 3a13f03701f421397feec39a723942cea8c1d0c4..f4cee071af9b048d9aa9aebad6ed7de7b9a95cd7 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2005--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 2005--2014 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
index 779323e07d39a2fc8ce1bc244ffe9c80f3e07d0d..1846d6686d294b10361e0ec5a6476002a926dd60 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2000--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 2000--2014 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
index 854df8cadc36456de6f4cb6636b1289ec53c301a..8cb9334c4731978740b4e1195493bf43ec29006b 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2005--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 2005--2014 Han-Wen Nienhuys <hanwen@xs4all.nl>
 
 
   LilyPond is free software: you can redistribute it and/or modify
index 78ffd6b8800c33f316c70225a58f741ba32e107a..57bf98e73903882c0ed1b651166ecb3c9b519097 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1999--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 1999--2014 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
index 1c28520d5c2e98113af968ef50fc8320466566ac..66a2c558a4200796d021295491be1ecbcd43f5e1 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1997--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 1997--2014 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
index 46435b73ad5b26356e21ceb5ef369635eafe19df..e19002ef07bd54937b35a326a7a8281f6d1e5c7c 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1997--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 1997--2014 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
index 402f412d2a516ae10e1d53e22c7a95445f156856..4bcca6f9d343c2b987c2af4360729d768eb0ee15 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1997--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 1997--2014 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
index c4c5de1e73a19f5e1cadc839f2d7f70d0a63efc4..2dbb2c9f9b3d465d135f65a376fce240cb709c36 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1997--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 1997--2014 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
@@ -217,7 +217,7 @@ Rest::glyph_name (Grob *me, int durlog, const string &style, bool try_ledgers,
       actual_style = "";
     }
 
-  return ("rests." + to_string (durlog) + (is_ledgered ? "o" : "")
+  return ("rests." + ::to_string (durlog) + (is_ledgered ? "o" : "")
           + actual_style);
 }
 
index 1955498fc43a1e80b6291f91405e2b3dc64324fc..34691ff20e91ec4df82eab0236b57b6129c026f9 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1997--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 1997--2014 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
index d1442794270318d6e31f5040d7ca410ff3c090ee..af410a2cf4e92049f29b4b17a3ec0c5630f01d34 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1997--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 1997--2014 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
index f7b38397c5d632de983f5051ac2697aab550fd1f..db619ea09b13748ba4f73d768079161c0ffcfb99 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1998--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 1998--2014 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
index c4b3ccf2c5f5e963dda69f0678a3e5876bf7725d..3dff7b4b3320c6a2a654663b5f26ed047ab38c1f 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2006--2012 Han-Wen Nienhuys <hanwen@lilypond.org>
+  Copyright (C) 2006--2014 Han-Wen Nienhuys <hanwen@lilypond.org>
       2007--2008 Rune Zedeler
       2008       Joe Neeman <joeneeman@gmail.com>
 
index 1b1aad924ac1efd10e3bb2c19148646572ca70c2..0b69eb62e73e6a4086aa8871fbbd4aac7f77d42b 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  Copyright (c) 2009--2012 Han-Wen Nienhuys <hanwen@lilypond.org>
+  Copyright (c) 2009--2014 Han-Wen Nienhuys <hanwen@lilypond.org>
 
   LilyPond is free software: you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
index 7f1a15627d98382fee27f3fef7458da90edbc250..3a9187c64869799b6df6a07e8ab1b568941d79eb 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2006--2012 Erik Sandberg  <mandolaerik@gmail.com>
+  Copyright (C) 2006--2014 Erik Sandberg  <mandolaerik@gmail.com>
 
   LilyPond is free software: you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
index a576aa18d016438539b0203328a754f2554d12e1..fe57c3a7194a1bef701ce94a504014c857c8efb1 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2006--2012 Erik Sandberg  <mandolaerik@gmail.com>
+  Copyright (C) 2006--2014 Erik Sandberg  <mandolaerik@gmail.com>
 
   LilyPond is free software: you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
index dd3e18bfe4f5c3e234cdadd3676ee2b28547a2e7..83e937bc5890824afd286f0ec2ab9f7b78e7a6af 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1999--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 1999--2014 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
index e0bca498f753b81727e5276a3f7615a6f320491d..b361d03fc15770783150b03c11b446932054c8ca 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1997--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 1997--2014 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
index 1ab23e096fbe06b8021531b3b40b27353d37e3cb..cbfb013ddb9e9380d4032e481fb3ac2a2f4c0947 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1996--2012 Jan Nieuwenhuizen <janneke@gnu.org>
+  Copyright (C) 1996--2014 Jan Nieuwenhuizen <janneke@gnu.org>
 
   LilyPond is free software: you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
index 98ff693ad2f895aa17967ffac7fe8b0c560d93b6..1ac2698f58624abef7b5733e0ba92cf723ecc097 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2005--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 2005--2014 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
index 77002d82ab4da01176069e2864415499febbc409..1f26b8473b46de1d25165dd2812a96e39182a418 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1997--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 1997--2014 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
index d9a894f63e98f414643b8cb00ac82929b6252b7a..86c6f8681f9b184c67c827e561830f7e1e4f48d8 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1999--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 1999--2014 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
index 0a014a38008bb3e57aafb92a3671aa90b0c8ac95..e1ee32fd045d98eaef430767f65770cc6e713e60 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1999--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 1999--2014 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
@@ -152,11 +152,12 @@ Script_column::order_grobs (vector<Grob *> grobs)
             {
               SCM last_outside_staff = last->get_property ("outside-staff-priority");
               /*
-                if outside_staff_priority is missing for previous grob, just
-                use it as a support for the current grob
+                if outside_staff_priority is missing for previous grob,
+                use all the scripts so far as support for the current grob
               */
               if (!scm_is_number (last_outside_staff))
-                Side_position_interface::add_support (g, last);
+                for (SCM t = ss; !scm_is_eq (t, s); t = scm_cdr (t))
+                  Side_position_interface::add_support (g, unsmob_grob (scm_car (t)));
               /*
                 if outside_staff_priority is missing or is equal to original
                 outside_staff_priority of previous grob, set new
index 3085f4f1553feebc4a3a2fa07d891b6fd1691783..367739c374dd09455e78e9ad5fba44eb3e8c23b8 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1997--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 1997--2014 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
index 28b978d329c04e5ab876e84683e3eea054db42fa..0edbb7b6cf19d092f03ca5bb802c996565d9c434 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1999--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 1999--2014 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
index c7c42860211c6a83f33ab9f0d99df78104d725d3..6c22930e0c6fa34afe2fb8bb9eb7b690c9517b45 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2006--2012 Han-Wen Nienhuys <hanwen@lilypond.org>
+  Copyright (C) 2006--2014 Han-Wen Nienhuys <hanwen@lilypond.org>
 
 
   LilyPond is free software: you can redistribute it and/or modify
index 1b4e421b70070afd612c345a43b4c116e5e70387..e0b7f00cb2887fc6e1c1e9afd194aa0045f86e5d 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2004--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 2004--2014 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
 
 #include "self-alignment-interface.hh"
 
-#include "directional-element-interface.hh"
 #include "grob.hh"
-#include "grob-array.hh"
-#include "interval-minefield.hh"
 #include "note-column.hh"
 #include "paper-column.hh"
 #include "pointer-group-interface.hh"
@@ -199,11 +196,6 @@ ADD_INTERFACE (Self_alignment_interface,
                "@end table\n",
 
                /* properties */
-               "collision-bias "
-               "collision-padding "
-               "potential-X-colliding-grobs "
                "self-alignment-X "
                "self-alignment-Y "
-               "X-colliding-grobs "
-               "Y-colliding-grobs "
               );
index 07ef344440aef7efe046d9d04a514a701bd7d6ad..c4c80d27d8e4929e21382b877ce09aa443c56684 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2005--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 2005--2014 Han-Wen Nienhuys <hanwen@xs4all.nl>
 
 
   LilyPond is free software: you can redistribute it and/or modify
index 02b7f2941531769048816c090988b1b0a821b01c..8607bea4f452ab43903c95266b2421b1099f48d9 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2005--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 2005--2014 Han-Wen Nienhuys <hanwen@xs4all.nl>
 
 
   LilyPond is free software: you can redistribute it and/or modify
 #include "staff-symbol-referencer.hh"
 
 ADD_INTERFACE (Semi_tie,
-               "A tie which is only on one side connected to a note head.",
+               "A tie which is only connected to a note head on one side."
+               "\n"
+               "The following properties may be set in the @code{details}"
+               " list:\n"
+               "\n"
+               "@table @code\n"
+               "@item height-limit\n"
+               "Maximum tie height: The longer the tie, the closer it is"
+               " to this height.\n"
+               "@item ratio\n"
+               "Parameter for tie shape.  The higher this number, the"
+               " quicker the tie attains its @code{height-limit}.\n"
+               "@end table\n",
 
                /* properties */
                "control-points "
index 288b948152d10663c72001efea8454ae60fb9b43..fba16bebb90e77ea730a180022673be4168adac1 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1998--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 1998--2014 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
index ebee8d6bf3f0c53413232cf6dfbc52e40d611c9a..0699b362c8c5ec352d4543c0b0e7a03a6d21f13e 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1998--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 1998--2014 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
index d616abb0f9a6b5399a596411ad134c80c7784ffe..cdb593c0407ee27ceaac629f7e9bb4b62b3e7985 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1997--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 1997--2014 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
index a53fa6a75097805320120bcb641104e74c46b37b..f702cba7b24061a169a70a18c7ad01e0fd8684e6 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1998--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 1998--2014 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
index 59f9fd995b78c4f00a677db6c37cacb6e652129f..a9aa435cab7fb19731382a4a825e0f59cfde028c 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2005--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 2005--2014 Han-Wen Nienhuys <hanwen@xs4all.nl>
 
 
   LilyPond is free software: you can redistribute it and/or modify
index 60856235eeb6fe4db46dd8066efb0fd476c84785..a67f976bd109f580dc9a0dacc3f4d0263576c0a2 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2000--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 2000--2014 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
index 3b475625950488a0f031a431cef3b8a38bb6c7fe..fe14925be8fc7d0c9c0d3104f4717fac53212b38 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2005--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 2005--2014 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
index aef524da87579bb2ecb1e087409f0f2da04baa3f..2eb545756fd5538f20ce5a47e44c1c7582af3017 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1999--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 1999--2014 Han-Wen Nienhuys <hanwen@xs4all.nl>
 
   TODO:
   - add support for different stretch/shrink constants?
@@ -193,7 +193,7 @@ Simple_spacer::expand_line ()
     inv_hooke += springs_[i].inverse_stretch_strength ();
 
   if (inv_hooke == 0.0) /* avoid division by zero. If springs are infinitely stiff */
-    return 0.0;         /* anyway, then it makes no difference what the force is */
+    inv_hooke = 1e-6;   /* then report a very large stretching force */
 
   assert (cur_len <= line_len_);
   return (line_len_ - cur_len) / inv_hooke + force_;
index 3b891e8e79f1e978f6ab82ded8ff45f9e37a4bb2..cc262a85d16387a30c152581fd3bb78afee1d8ff 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1997--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 1997--2014 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
@@ -63,7 +63,7 @@ Simultaneous_music_iterator::construct_children ()
 
       SCM name = ly_symbol2scm (get_outlet ()->context_name ().c_str ());
       Context *c = (j && create_separate_contexts_)
-                   ? get_outlet ()->find_create_context (name, to_string (j), SCM_EOL)
+                   ? get_outlet ()->find_create_context (name, ::to_string (j), SCM_EOL)
                    : get_outlet ();
 
       if (!c)
index 164117c35bdb62b59516eafe08a8d725e1456fe0..d6bd5fb6fe085b475352c19c2f35d12e46558773 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2008--2012 Han-Wen Nienhuys <hanwen@lilypond.org>
+  Copyright (C) 2008--2014 Han-Wen Nienhuys <hanwen@lilypond.org>
 
 
   LilyPond is free software: you can redistribute it and/or modify
index a4620158661686c997ae058498152ccab811398f..33d2823d47e0d752934558f75ea74e90e85ead41 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2006--2012 Joe Neeman <joeneeman@gmail.com>
+  Copyright (C) 2006--2014 Joe Neeman <joeneeman@gmail.com>
 
   LilyPond is free software: you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
index 7844faf6041302064fcb8d098f3fc70748021a91..a6b3faa56c42c76e3a9ad0d24b5fe66ddaa95f81 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2000--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>, Erik Sandberg
+  Copyright (C) 2000--2014 Han-Wen Nienhuys <hanwen@xs4all.nl>, Erik Sandberg
   <mandolaerik@gmail.com>
 
   LilyPond is free software: you can redistribute it and/or modify
index 332995ac99ef051d760cf1a786080a16f8bf6314..a5d783703cbebdd43f7fd40aa6067680728c70f8 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2004--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 2004--2014 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
@@ -43,27 +43,41 @@ avoid_staff_line (Slur_score_state const &state,
       && (state.extremes_[LEFT].staff_ == state.extremes_[RIGHT].staff_)
       && state.extremes_[LEFT].staff_ && state.extremes_[RIGHT].staff_)
     {
-      Real y = bez.curve_point (ts[0])[Y_AXIS];
+      Real t = ts[0]; //the first (usually only) point where slur is horizontal
+      Real y = bez.curve_point (t)[Y_AXIS];
+      // A Bezier curve at t moves 3t-3t² as far as the middle control points
+      Real factor = 3.0 * t * (1.0 - t);
 
       Grob *staff = state.extremes_[LEFT].staff_;
 
       Real p = 2 * (y - staff->relative_coordinate (state.common_[Y_AXIS], Y_AXIS))
                / state.staff_space_;
 
-      Real const round = my_round (p);
-      Real const frac = p - round;
-      if (fabs (frac) < 4 * state.thickness_
-          && Staff_symbol_referencer::on_staff_line (staff, int (round)))
+      int round_p = (int) my_round (p);
+      if (!Staff_symbol_referencer::on_staff_line (staff, round_p))
+        round_p += (p > round_p) ? 1 : -1;
+      if (!Staff_symbol_referencer::on_staff_line (staff, round_p))
+        return bez;
+
+      Real const distance = (p - round_p) * state.staff_space_ / 2.0;
+      // Allow half the thickness of the slur at the point t, plus one basic
+      // blot-diameter (half for the slur outline, half for the staff line)
+      Real const min_distance = 0.5 * state.thickness_ * factor
+        + state.line_thickness_
+        + ((state.dir_ * distance > 0.0)
+           ? state.parameters_.gap_to_staffline_inside_
+           : state.parameters_.gap_to_staffline_outside_);
+      if (fabs (distance) < min_distance)
         {
-          Direction resolution_dir = frac ? state.dir_ : CENTER;
+          Direction resolution_dir = (distance > 0.0) ? UP : DOWN;
 
-          // TODO: parameter
-          Real newp = round + resolution_dir * 5 * state.thickness_;
-
-          Real dy = (newp - p) * state.staff_space_ / 2.0;
+          Real dy = resolution_dir * (min_distance - fabs (distance));
 
+          // Shape the curve, moving the horizontal point by factor * dy
           bez.control_[1][Y_AXIS] += dy;
           bez.control_[2][Y_AXIS] += dy;
+          // Move the entire curve by the remaining amount
+          bez.translate (Offset (0.0, dy - factor * dy));
         }
     }
   return bez;
index a8a54f535a1b4bdbd0edae79b25f3bdf4d51dafb..e1e738b568e793344306d277a9535aaf9885349d 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1997--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 1997--2014 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
index f57a9b7a38beb0062b3f6a8897814a29dddf93c4..69ad9cd0cb240379c61921bbea88b4988bae7422 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1996--2012 Jan Nieuwenhuizen <janneke@gnu.org>
+  Copyright (C) 1996--2014 Jan Nieuwenhuizen <janneke@gnu.org>
 
   LilyPond is free software: you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
index f2e345691354d291a77c0f9562f0bfaf04b889e0..ccd3225ec182203097cc879c1ee692f8c8a57fb6 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2013 Mike Solomon <mike@mikesolomon.org>
+  Copyright (C) 2013--2014 Mike Solomon <mike@mikesolomon.org>
 
   LilyPond is free software: you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
index a8cbe4b7f90b7d610ad240633f6153de0e0cdc95..ef2b7496ae0709b414bb006092215e005d8670f9 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2006--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 2006--2014 Han-Wen Nienhuys <hanwen@xs4all.nl>
 
 
   LilyPond is free software: you can redistribute it and/or modify
@@ -56,6 +56,10 @@ Slur_score_parameters::fill (Grob *me)
     = get_detail (details, ly_symbol2scm ("max-slope-factor"));
   free_head_distance_
     = get_detail (details, ly_symbol2scm ("free-head-distance"));
+  gap_to_staffline_inside_
+    = get_detail (details, ly_symbol2scm ("gap-to-staffline-inside"));
+  gap_to_staffline_outside_
+    = get_detail (details, ly_symbol2scm ("gap-to-staffline-outside"));
   absolute_closeness_measure_
     = get_detail (details, ly_symbol2scm ("absolute-closeness-measure"));
   extra_object_collision_penalty_
index 47bb40611c483018713bae43ec380b3ed1cd9461..61a4423159a4d56792c7c8a8338fe280b6b9f32e 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1996--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 1996--2014 Han-Wen Nienhuys <hanwen@xs4all.nl>
   Jan Nieuwenhuizen <janneke@gnu.org>
 
   LilyPond is free software: you can redistribute it and/or modify
@@ -226,8 +226,8 @@ Slur_score_state::fill (Grob *me)
 
   Slur::replace_breakable_encompass_objects (me);
   staff_space_ = Staff_symbol_referencer::staff_space (me);
-  Real lt = me->layout ()->get_dimension (ly_symbol2scm ("line-thickness"));
-  thickness_ = robust_scm2double (me->get_property ("thickness"), 1.0) * lt;
+  line_thickness_ = me->layout ()->get_dimension (ly_symbol2scm ("line-thickness"));
+  thickness_ = robust_scm2double (me->get_property ("thickness"), 1.0) * line_thickness_;
 
   dir_ = slur_direction ();
   parameters_.fill (me);
index 0aa96c787d1d7ba482ed0170e3990ee703258236..7d2ca978c7afb1d46064136dcad85260eeb2e551 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1996--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 1996--2014 Han-Wen Nienhuys <hanwen@xs4all.nl>
   Jan Nieuwenhuizen <janneke@gnu.org>
 
   LilyPond is free software: you can redistribute it and/or modify
@@ -542,6 +542,12 @@ ADD_INTERFACE (Slur,
                "@item head-slur-distance-max-ratio\n"
                "The maximum value for the ratio of distance between a"
                " note head and slur.\n"
+               "@item gap-to-staffline-inside\n"
+               "Minimum gap inside the curve of the slur"
+               " where the slur is parallel to a staffline.\n"
+               "@item gap-to-staffline-outside\n"
+               "Minimum gap outside the curve of the slur"
+               " where the slur is parallel to a staffline.\n"
                "@item free-slur-distance\n"
                "The amount of vertical free space that must exist"
                " between adjacent slurs.  This subproperty only works"
index 164ac21b0353d10d85503d7fcf84a78ac7be64f4..f599a51a289215faaeca991074ffb6a19207d40b 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2005--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 2005--2014 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
index 26426ae8af1e80824e2626f41c1ff1449e134d99..e4679bda60060802d0746dd102cbb1ae986feb02 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1997--2012 Jan Nieuwenhuizen <janneke@gnu.org>
+  Copyright (C) 1997--2014 Jan Nieuwenhuizen <janneke@gnu.org>
   Han-Wen Nienhuys <hanwen@xs4all.nl>
 
   LilyPond is free software: you can redistribute it and/or modify
@@ -181,8 +181,8 @@ Source_file::file_line_column_string (char const *context_str0) const
       int l, ch, col, offset;
       get_counts (context_str0, &l, &ch, &col, &offset);
 
-      return name_string () + ":" + to_string (l)
-             + ":" + to_string (col + 1);
+      return name_string () + ":" + ::to_string (l)
+             + ":" + ::to_string (col + 1);
     }
 }
 
@@ -196,8 +196,8 @@ Source_file::quote_input (char const *pos_str0) const
   get_counts (pos_str0, &l, &ch, &col, &offset);
   string line = line_string (pos_str0);
   string context = line.substr (0, offset)
-                   + to_string ('\n')
-                   + to_string (' ', col)
+                   + ::to_string ('\n')
+                   + ::to_string (' ', col)
                    + line.substr (offset, line.length () - offset);
   return context;
 }
index 2c0e665047e0bef3c2ae834871f3cec80b13fb63..dc784d2bdb5f20c17058f2219309d2e6e44c08b2 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1997--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 1997--2014 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
index daaf1c71edca29c537dc7a872a817be8775ddd87..19aea8e496a832890c2e7027ebac29ab1576692a 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2000--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 2000--2014 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
index dd4003739012957e64e9db7d9af9800227992f04..df9f9ecec8db19b4cbe8a61e2ae1c4f8587db8bc 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2005--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 2005--2014 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
@@ -101,7 +101,8 @@ get_measure_length (Grob *column)
   return 0;
 }
 
-Real
+/* Basic spring based on duration alone */
+Spring
 Spacing_spanner::note_spacing (Grob * /* me */,
                                Grob *lc,
                                Grob *rc,
@@ -144,30 +145,39 @@ Spacing_spanner::note_spacing (Grob * /* me */,
       shortest_playing_len = min (shortest_playing_len, *measure_len);
     }
 
-  Real dist = 0.0;
+  Spring ret;
   if (delta_t.main_part_ && !lwhen.grace_part_)
     {
-      dist = options->get_duration_space (shortest_playing_len.main_part_);
-      dist *= double (delta_t.main_part_ / shortest_playing_len.main_part_);
+      // A spring of length and stiffness based on the controlling duration
+      Real len = options->get_duration_space (shortest_playing_len.main_part_);
+      Real min = options->increment_;  // canonical notehead width
+
+      // The portion of that spring proportional to the time between lc and rc
+      Real fraction = (delta_t.main_part_ / shortest_playing_len.main_part_);
+      ret = Spring (fraction * len, fraction * min);
+
+      // Stretch proportional to the space between canonical bare noteheads
+      ret.set_inverse_stretch_strength (fraction * max (0.1, (len - min)));
     }
   else if (delta_t.grace_part_)
     {
-      /*
-        Crude hack for spacing graces: we take the shortest space
-        available (namely the space for the global shortest note), and
-        multiply that by grace-space-factor
-      */
-      dist = options->get_duration_space (options->global_shortest_) / 2.0;
       Grob *grace_spacing = unsmob_grob (lc->get_object ("grace-spacing"));
       if (grace_spacing)
         {
           Spacing_options grace_opts;
           grace_opts.init_from_grob (grace_spacing);
-          dist = grace_opts.get_duration_space (delta_t.grace_part_);
+          Real len = grace_opts.get_duration_space (delta_t.grace_part_);
+          Real min = grace_opts.increment_;
+          ret = Spring (len, min);
+          // Grace notes should not stretch very much
+          ret.set_inverse_stretch_strength (grace_opts.increment_ / 2.0);
         }
-
+      else // Fallback to the old grace spacing: half that of the shortest note
+        ret = Spring (options->
+                      get_duration_space (options->global_shortest_) / 2.0,
+                      options->increment_ / 2.0);
     }
 
-  return dist;
+  return ret;
 }
 
index 2deae13b27dbf59568f8263e07c7c69e0e5748ba..d7fd373cbab3dc92021e0e5b2a3edc219d25609f 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2005--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 2005--2014 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
@@ -155,7 +155,7 @@ Spacing_spanner::set_distances_for_loose_col (Grob *me, Grob *c,
                 The note spacing should be taken from the musical
                 columns.
               */
-              Real base = note_spacing (me, lc, rc, options);
+              Spring base = note_spacing (me, lc, rc, options);
               Spring spring = Note_spacing::get_spacing (sp, rc, base, options->increment_);
 
               dists[d] = max (dists[d], spring.min_distance ());
index fee5c3408514bc7eb58ba4f8176b758234e34b8f..80892fac6bed75ba90fdab2c27f04e496fcce436 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1999--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 1999--2014 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
index 27c99bb15933b06d8279cdf434e937ac6c30ad4b..9e11cfa73a3545b3329c62f03ed22a7aa48585dc 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2007--2012 Joe Neeman <joeneeman@gmail.com>
+  Copyright (C) 2007--2014 Joe Neeman <joeneeman@gmail.com>
 
   LilyPond is free software: you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
index bf8e13593aa4ed71074dc1c2e52fc6a2b186baf0..bcac6ff4937a1ca9864212e86c247926d9eadbf9 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2005--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 2005--2014 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
@@ -153,19 +153,14 @@ set_loose_columns (System *which, Column_x_positions const *posns)
           if (Paper_column::is_musical (next_col)
               && Paper_column::is_musical (loose_col))
             {
-              Real base = Spacing_spanner::note_spacing (spacing, loose_col, next_col,
-                                                         &options);
+              Spring spring = Spacing_spanner::note_spacing (spacing, loose_col,
+                                                             next_col, &options);
               if (Note_spacing::has_interface (spacing))
-                {
-                  Spring spring = Note_spacing::get_spacing (spacing, next_col, base, options.increment_);;
-                  base_note_space = spring.distance ();
-                  tight_note_space = spring.min_distance ();
-                }
-              else
-                {
-                  base_note_space = base;
-                  tight_note_space = base;
-                }
+                spring = Note_spacing::get_spacing (spacing, next_col,
+                                                    spring, options.increment_);
+
+              base_note_space = spring.distance ();
+              tight_note_space = spring.min_distance ();
             }
           else
             {
index e90dcebcab08071146aa1045796bea0317c4f475..c375bd2a1aa52e5f7aa3ed933da0f95e473e1193 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2006--2012 Han-Wen Nienhuys <hanwen@lilypond.org>
+  Copyright (C) 2006--2014 Han-Wen Nienhuys <hanwen@lilypond.org>
 
 
   LilyPond is free software: you can redistribute it and/or modify
@@ -66,9 +66,9 @@ Spacing_options::Spacing_options ()
 Real
 Spacing_options::get_duration_space (Rational d) const
 {
-  Real k = shortest_duration_space_;
+  Real ratio = d / global_shortest_;
 
-  if (d < global_shortest_)
+  if (ratio < 1.0)
     {
       /*
         We don't space really short notes using the log of the
@@ -86,9 +86,8 @@ Spacing_options::get_duration_space (Rational d) const
 
 
       */
-      Rational ratio = d / global_shortest_;
 
-      return ((k - 1) + double (ratio)) * increment_;
+      return (shortest_duration_space_ + ratio - 1) * increment_;
     }
   else
     {
@@ -97,10 +96,8 @@ Spacing_options::get_duration_space (Rational d) const
         Report OSU-CISRC-10/87-TR35, Department of Computer and
         Information Science, The Ohio State University, 1987.
       */
-      Real log = log_2 (global_shortest_);
-      k -= log;
 
-      return (log_2 (d) + k) * increment_;
+      return (shortest_duration_space_ + log_2 (ratio)) * increment_;
     }
 }
 
index 022c6a121949543fa05c7fd4b4fba680aa8b1fea..2f2724689d6e99cf1493fd3259694d2eec34547b 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1999--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 1999--2014 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
@@ -315,11 +315,13 @@ Spacing_spanner::musical_column_spacing (Grob *me,
                                          Item *right_col,
                                          Spacing_options const *options)
 {
-  Real base_note_space = note_spacing (me, left_col, right_col, options);
-  Spring spring;
+  Spring spring = note_spacing (me, left_col, right_col, options);
 
   if (options->stretch_uniformly_)
-    spring = Spring (base_note_space, 0.0);
+    {
+      spring.set_min_distance (0.0);
+      spring.set_default_strength ();
+    }
   else
     {
       vector<Spring> springs;
@@ -359,32 +361,20 @@ Spacing_spanner::musical_column_spacing (Grob *me,
                   grace_opts.init_from_grob (gsp);
                   inc = grace_opts.increment_;
                 }
-              springs.push_back (Note_spacing::get_spacing (wish, right_col, base_note_space, inc));
+              springs.push_back (Note_spacing::get_spacing (wish, right_col, spring, inc));
             }
         }
 
       if (springs.empty ())
         {
-
-          if (!Paper_column::is_musical (right_col))
-            {
-              /*
-                There used to be code that examined left_col->extent
-                (X_AXIS), but this is resulted in unexpected wide
-                spacing, because the width of s^"text" output is also
-                taken into account here.
-               */
-              spring = Spring (max (base_note_space, options->increment_),
-                               options->increment_);
-            }
-          else
+          if (Paper_column::is_musical (right_col))
             {
               /*
                 Min distance should be 0.0. If there are no spacing
                 wishes, we're probably dealing with polyphonic spacing
                 of hemiolas.
               */
-              spring = Spring (base_note_space, 0.0);
+              spring.set_min_distance (0.0);
             }
         }
       else
index f68f904d56746503c15e36f20ae5dd325f1d4d78..d4dd0f04feb05a6c4fc096bc7b1200502024162c 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2000--2012 Jan Nieuwenhuizen <janneke@gnu.org>
+  Copyright (C) 2000--2014 Jan Nieuwenhuizen <janneke@gnu.org>
 
   Han-Wen Nienhuys <hanwen@xs4all.nl>
 
index 09c846f8968c1c9897d040e1740555da145a70b0..5e93de630a41e8fd78200902af3e49c9243f9d88 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1997--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 1997--2014 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
index b813bbb25d6aaa281ee683338085bdfd9d683a89..88d82b36c6dedbb32879eb67268e24893bce539e 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2011--2012 Mike Solomon <mike@mikesolomon.org>
+  Copyright (C) 2011--2014 Mike Solomon <mike@mikesolomon.org>
 
   LilyPond is free software: you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
index 82e9622ffccc6d9bf32aabcb6a2809467dc176c6..980709005c2ee472109d21b67f7e41eac98264d6 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2007--2012 Han-Wen Nienhuys <hanwen@lilypond.org>
+  Copyright (C) 2007--2014 Han-Wen Nienhuys <hanwen@lilypond.org>
 
   LilyPond is free software: you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
index f7517045b16488aa96a6db3a0312e870e2ddd3e9..f14c69c76f01763549cf0be8fa0ca9f6750886d9 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2007--2012 Han-Wen Nienhuys <hanwen@lilypond.org>
+  Copyright (C) 2007--2014 Han-Wen Nienhuys <hanwen@lilypond.org>
 
 
   LilyPond is free software: you can redistribute it and/or modify
index e0e1c18e1d09f6a9ae59afffc78646fa571ea906..5d0485f46e4007bc519a242415957a90fc02e92e 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1996--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 1996--2014 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
index 95d20c4333fea9ff36b9a6bb9af3fc2adbcc3d09..8e3ce16640914d0df892738b197a210855c6129e 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1999--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 1999--2014 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
index 312b2ed00f49644598966832b50d1598396eae3b..f4123b9891527abc9c8633c7abe3f48a1c77fd6f 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2007--2012 Joe Neeman <joeneeman@gmail.com>
+  Copyright (C) 2007--2014 Joe Neeman <joeneeman@gmail.com>
 
   LilyPond is free software: you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
   along with LilyPond.  If not, see <http://www.gnu.org/licenses/>.
 */
 
+/*
+  Springs help chains of objects, such as the notes in a line of music,
+  distribute themselves evenly.
+  Each spring decides the length from the reference point of one object
+  along the line to the reference point of the next, based on a force
+  applied to the entire chain (see Spring::length() for details):
+     length = distance_ + flexibility * force
+
+  distance_  is the ideal separation between reference points
+  inverse_stretch_strength_ is the flexibility when the force is stretching
+  inverse_compress_strength_ is the flexibility when the force is compressing
+  min_distance_ sets a lower limit on length
+
+  Typically, the force applied to a list of objects ranges from about
+  -1 to about 1, though there are no set limits.
+*/
+
 #include "spring.hh"
 
 Spring::Spring ()
@@ -69,7 +86,7 @@ Spring::operator *= (Real r)
 {
   distance_ = max (min_distance_, distance_ * r);
   inverse_compress_strength_ = max (0.0, distance_ - min_distance_);
-  inverse_stretch_strength_ *= 0.8;
+  inverse_stretch_strength_ *= r;
   update_blocking_force ();
 }
 
index 60c516c428fd987bb59f30793ac988183439de80..6bfe49420be4596c41b24df3babfbd0b77d4ba40 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2001--2012  Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 2001--2014  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
index 3c12882fdd6b18f11f14dcf4f26883b5a7452e5f..d9c430f316823dc2670c81e23fa61c0ff6694188 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2009--2012 Joe Neeman <joeneeman@gmail.com>
+  Copyright (C) 2009--2014 Joe Neeman <joeneeman@gmail.com>
 
   LilyPond is free software: you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
index 4daa2ca9a2d0a8c17b1688363d7470ba14f90800..d3368ad683820c771dd6ce398d60ea606927bec3 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1997--2012 Jan Nieuwenhuizen <janneke@gnu.org>
+  Copyright (C) 1997--2014 Jan Nieuwenhuizen <janneke@gnu.org>
 
   LilyPond is free software: you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
index e8bedd2e70bab0c558525aa0f26a544b0c6b1d58..c0219f70652e1cbba2693c3b5e376d3d2a250dc2 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2001--2012  Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 2001--2014  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
index 1ca6a4dce1f57ad256f472bba2c0eda6a960a602..3a1a1fb32b55d695c04284d1716c8874aeef79a8 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1997--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 1997--2014 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
index 1fe886ec0a5a76ee169f2869600419614a58db68..f8028e424a2cec1f0f95e8deb9355d9471787c29 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1999--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 1999--2014 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
index 3b8aa6ba187698bb8ea6a92f1580c3069c9f787e..ffad2e6fdd4c7bd07e8f0d69c76025a650a496cb 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1999--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 1999--2014 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
index 3b0eef00b5f278e1c52000b3adc2a730d9a24007..9ee7f3a52d6ff89b8dc0630ac0b7cc9bb2271b91 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1997--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 1997--2014 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
index e16560d263a724a3869243a3e7a7934cd9338f97..45ac84382cc32696a03b0ede05f1a97b20053288 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2004--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 2004--2014 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
index 370a4ac1aed301c2398d8a266533d8785320946e..ddcd526d583b77041068e6e946881b66f60830e1 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2000--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>, Glen Prideaux <glenprideaux@iname.com>
+  Copyright (C) 2000--2014 Han-Wen Nienhuys <hanwen@xs4all.nl>, Glen Prideaux <glenprideaux@iname.com>
 
   LilyPond is free software: you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
index c1ab5f6f0508fccd137f1bde2384b431b90fa1e1..8a20d6184eb5327f0561d34b5686ccd2ba91ec67 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1997--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 1997--2014 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
@@ -84,17 +84,7 @@ Stem_engraver::make_stem (Grob_info gi, bool tuplet_start)
 
          the first and last (quarter) note both get one tremolo flag.  */
       int requested_type
-        = robust_scm2int (tremolo_ev_->get_property ("tremolo-type"), 0);
-      SCM f = get_property ("tremoloFlags");
-      if (!requested_type)
-        {
-          if (scm_is_number (f))
-            requested_type = scm_to_int (f);
-          else
-            requested_type = 8;
-        }
-      else
-        context ()->set_property ("tremoloFlags", scm_from_int (requested_type));
+        = robust_scm2int (tremolo_ev_->get_property ("tremolo-type"), 8);
 
       /*
         we take the duration log from the Event, since the duration-log
@@ -254,7 +244,6 @@ ADD_TRANSLATOR (Stem_engraver,
                 "StemTremolo ",
 
                 /* read */
-                "tremoloFlags "
                 "stemLeftBeamCount "
                 "stemRightBeamCount "
                 "whichBar ",
index 1f9d2d8a7a5b7568ed810f70936f5df8087f6b54..8879456fbe8285576c1959127c54d9777bd33678 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1997--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 1997--2014 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
index 5f072fac6ae2585362bd7c733483134203415e52..39a77a3858fea8ab3d6a7da92df1f26182830439 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1996--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 1996--2014 Han-Wen Nienhuys <hanwen@xs4all.nl>
   Jan Nieuwenhuizen <janneke@gnu.org>
 
   TODO: This is way too hairy
index 750d088e1637057a914d2cefbb651a548f2f827a..6e97e27b188d7903a2379480cdc86390bc81af45 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2005--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 2005--2014 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
index 734eb6080648ea4c7f496818c9a64994afb2bb08..1b3779c120a7b778242855287bb105b545c04f27 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2005--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 2005--2014 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
index ab0f8cf745237b37cf36663ab93c0a6d884d3fa4..5764b8fd60d5443f3488fef7f8e2a04c0679f452 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1997--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 1997--2014 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
index c8985105ea44f0216ca58a3153a31cb89f3b55f2..51f051d597f3588e954db618928d7f734173e77e 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1997--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 1997--2014 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
index 16703d33f586b13bd57bb3e9e28c00d1a4793af6..27f6b811e6157dd1514b883d03ca90edbd0710c6 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2006--2012 Erik Sandberg  <mandolaerik@gmail.com>
+  Copyright (C) 2006--2014 Erik Sandberg  <mandolaerik@gmail.com>
 
   LilyPond is free software: you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
index 5ce03ec08d0d21883b0e3249eea1685326fdcbc9..24a022b4c969ec2427953e503e9172568189c2b7 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2005--2012 Erik Sandberg  <mandolaerik@gmail.com>
+  Copyright (C) 2005--2014 Erik Sandberg  <mandolaerik@gmail.com>
 
   LilyPond is free software: you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
index 98b4e2df8a59b4dbd6d6d9cea91843b30fb229de..efefae39b4890c91351d7ab677bc985c72a55163 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2000--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 2000--2014 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
index b8770feebbd4f7b5ac9d90ce3351daa4503cd3d1..30d62dbe9dc43286d01a7d7de60e70b91c9f3db5 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2005--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 2005--2014 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
index d4b523c06c63b82094346bc1d13d08af83ae4a4a..f96becff75e0f4a6dcbb4f385947e21fc21af59d 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2000--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 2000--2014 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
@@ -169,7 +169,7 @@ System_start_delimiter::staff_brace (Grob *me, Real y)
     }
   while (hi - lo > 1);
 
-  Stencil stil (fm->find_by_name ("brace" + to_string (lo)));
+  Stencil stil (fm->find_by_name ("brace" + ::to_string (lo)));
   stil.translate_axis (-b[X_AXIS].length () / 2, X_AXIS);
 
   stil.translate_axis (-0.2, X_AXIS);
index 1ec46fbaf655c342d3e9a6e20faae3df9f352c0f..91015be3ca31dbaa660d2be6a432215bce09d243 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1996--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 1996--2014 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
@@ -223,7 +223,7 @@ System::get_paper_systems ()
       scm_vector_set_x (lines, scm_from_int (i),
                         system->get_paper_system ());
 
-      debug_output (to_string (i) + "]", false);
+      debug_output (::to_string (i) + "]", false);
     }
   return lines;
 }
index 79807acf0437d1a9b333fe488db0d65c24f79651..c4789566cc1af80893aadc7b55422667058f12ad 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2002--2012 Han-Wen Nienhuys, Jean-Baptiste Lamy <jiba@tuxfamily.org>,
+  Copyright (C) 2002--2014 Han-Wen Nienhuys, Jean-Baptiste Lamy <jiba@tuxfamily.org>,
 
   LilyPond is free software: you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
index 488e605b2c5c5f94f952771bfd3a7b7808144b99..e9ff8880b76c4b986fdf059ba48acef07efca420 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2005--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 2005--2014 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
index b0365990146a8e352b3a28e3a1aa32200bd2b61e..9f80749e03490729721caf3b4de3a6263873cc63 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2010--2012 Carl D. Sorensen
+  Copyright (C) 2010--2014 Carl D. Sorensen
 
   LilyPond is free software: you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
index 9c9613d1ba64e3d472f439b446c4eb8fa3bb70cc..35d15f0829984ec44de92122d1e20fe5f115a501 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1997--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 1997--2014 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
index 7d32d3b61245acff7731cca0c6fea3573e31dc8f..d705abb3a8ca3d5582c8d7cd9c94a2ee725779d7 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1997--2012 Jan Nieuwenhuizen <janneke@gnu.org>
+  Copyright (C) 1997--2014 Jan Nieuwenhuizen <janneke@gnu.org>
 
   LilyPond is free software: you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
index 6bd2356cab176959cdacb948b425604c0fb2fedd..ffd669ef80575f192ffc23e5be7ff091bfc401e8 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1998--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 1998--2014 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
index 936a7488e2810a001e42c8b87896e35c1a12f202..a1f8fa083a5102fe8a416e9bbb54aac5eec43706 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1998--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 1998--2014 Han-Wen Nienhuys <hanwen@xs4all.nl>
   Jan Nieuwenhuizen <janneke@gnu.org>
 
   LilyPond is free software: you can redistribute it and/or modify
index f4dc2de070b16f67707faa5bfd80f6bb0545f800..52ad7201b1199d123b9ea274785c835a4bc61c20 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2000--2012 Jan Nieuwenhuizen <janneke@gnu.org>
+  Copyright (C) 2000--2014 Jan Nieuwenhuizen <janneke@gnu.org>
 
   LilyPond is free software: you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
index 7bc35584c571c43772ae62089cd2304cc23c0f32..44bf5408b7c874f62daa155ddbdece275b1baae7 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2000--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 2000--2014 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
index 19bcbd822c250df3a3a9862d30a5010c58dad213..219fcbc8cb96b41853e44de80231a768833c277d 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2005--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 2005--2014 Han-Wen Nienhuys <hanwen@xs4all.nl>
 
 
   LilyPond is free software: you can redistribute it and/or modify
index a13533a6aad33871c3acfdd960cd043d14869645..1ae244485c62f54068466c2e1e648502d2c7dcc2 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2005--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 2005--2014 Han-Wen Nienhuys <hanwen@xs4all.nl>
 
 
   LilyPond is free software: you can redistribute it and/or modify
index 637a73ef32f3d36348823d34f014af687d5e6306..a099d9c7ab7b5573fa1e4b25d7f90a8b34ddb3a2 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1998--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 1998--2014 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
index 304e4b3b2ad0d06e62ce2ea2598c1334f6d9169d..b15536a863a1bd296054fc5fae75ca7ef75ff635 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2005--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 2005--2014 Han-Wen Nienhuys <hanwen@xs4all.nl>
 
 
   LilyPond is free software: you can redistribute it and/or modify
index 9ef199ddffb46063c94cade87a7ad4988add9591..77fb9e336df5c90c70f2a30e67379d30ed642b92 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1998--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 1998--2014 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
index 23e8d4c7da958eee36186e169c4a6f453bd471c2..4e3460f79bb76a5a75c09472abe78c79b67557e5 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1997--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 1997--2014 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
index 1c6cd69bd4518b4571caf4b1e931c2bb8a612b9e..8461a01058251f67425e2cb1bd16e335a02bc053 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1997--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 1997--2014 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
index f2f3e8f32ac1273231b5ef8b9d2941de884e80c8..5ca26e66da19a7f3ca54f4f447a7956455bb99a8 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1997--2012 Jan Nieuwenhuizen <janneke@gnu.org>
+  Copyright (C) 1997--2014 Jan Nieuwenhuizen <janneke@gnu.org>
 
   LilyPond is free software: you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
index f00c2563f6fe4f71922577e5f0d4963ad41c2547..1b2ed673f402cd1c93faacc8e43c284031a7816d 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1996--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 1996--2014 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
@@ -67,7 +67,7 @@ Time_signature::special_time_signature (Grob *me, SCM scm_style, int n, int d)
     return numbered_time_signature (me, n, d);
 
   if ((style == "default") || (style == ""))
-    style = to_string ("C");
+    style = ::to_string ("C");
 
   if (style == "C")
     {
@@ -77,7 +77,7 @@ Time_signature::special_time_signature (Grob *me, SCM scm_style, int n, int d)
         return numbered_time_signature (me, n, d);
     }
 
-  string char_name = style + to_string (n) + to_string (d);
+  string char_name = style + ::to_string (n) + ::to_string (d);
   me->set_property ("font-encoding", ly_symbol2scm ("fetaMusic"));
   Stencil out = Font_interface::get_default_font (me)
                 ->find_by_name ("timesig." + char_name);
@@ -100,9 +100,9 @@ Time_signature::numbered_time_signature (Grob *me, int num, int den)
                     chain);
 
   SCM sn = Text_interface::interpret_markup (me->layout ()->self_scm (), chain,
-                                             ly_string2scm (to_string (num)));
+                                             ly_string2scm (::to_string (num)));
   SCM sd = Text_interface::interpret_markup (me->layout ()->self_scm (), chain,
-                                             ly_string2scm (to_string (den)));
+                                             ly_string2scm (::to_string (den)));
 
   Stencil n = *unsmob_stencil (sn);
   Stencil d = *unsmob_stencil (sd);
index 67832e3cc5ae60d9fc44154c5f33bfd2061e41f3..8298a2b56f4ac3154ea0cb017f5ae1723d1e883a 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1997--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 1997--2014 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
index 58d4e515776de03825d00a0f4b8a919b7dd55a88..d9b47995f486242d7811c4d7583cef930f8339a4 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1997--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 1997--2014 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
index dffaa095f6013731855137d50469314901ec2792..7ccdddd5169c5685cbd3f4782a5dfa3c9d0d2919 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2005--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 2005--2014 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
index bd349824d7658f0fcfe1de66f8eb7e634fedd05f..02d9a28ac2b1967c2d4275c0ae020ecc7b8c511c 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2005--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 2005--2014 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
index ab79d1347696c3d8ea18ae9cc1871ecd0bbe964f..638c38bd9ce1c6d68aabe42a21dabf9f4c924520 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1997--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>,
+  Copyright (C) 1997--2014 Han-Wen Nienhuys <hanwen@xs4all.nl>,
                  Erik Sandberg <mandolaerik@gmail.com>
 
   LilyPond is free software: you can redistribute it and/or modify
index bede8cac2d6a6906e9ba56f17376767eb2183419..64f8e680d8c1bd83fa46db96583c240df7d998df 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2002--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 2002--2014 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
index 154ffa4b08cbd20321f906f2f3820a8e18368a24..116f2849ac702e33bb6e892dd6d8774f36e26c4b 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1997--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 1997--2014 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
index 34b4e6663ffba2e2b07c371a846176346aaec1df..914b3fa21fbe6d20a7de2f8d2c49cdd42f3d9e80 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2000--2012 Jan Nieuwenhuizen <janneke@gnu.org>
+  Copyright (C) 2000--2014 Jan Nieuwenhuizen <janneke@gnu.org>
 
   LilyPond is free software: you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
index 6d7f97bf37c4703df35cda3a58673059e34d1159..e46628ab0c183661964837d5e7f69c8d36d591d1 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2005--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 2005--2014 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
index 1eccaabc06ffb663718f2b65fbcf5bfc4f2ce1c9..04e67fbdecd781138e098877c997ec78b69c8daa 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1997--2012 Jan Nieuwenhuizen <janneke@gnu.org>
+  Copyright (C) 1997--2014 Jan Nieuwenhuizen <janneke@gnu.org>
   Han-Wen Nienhuys <hanwen@xs4all.nl>
 
   LilyPond is free software: you can redistribute it and/or modify
@@ -523,7 +523,7 @@ Tuplet_bracket::calc_position_and_height (Grob *me_grob, Real *offset, Real *dy)
   Real x1 = robust_relative_extent (rgr, commonx, X_AXIS)[RIGHT];
   bool follow_beam = par_beam
                      && get_grob_direction (par_beam) == dir
-                     && !to_boolean (par_beam->get_property ("knee"));
+                     && !Beam::is_knee (par_beam);
 
   vector<Offset> points;
   if (columns.size ()
index 1fc30d898a178ef27e464b57fac4b925d1e4836c..c3529de747dde4747f223550595dd84514e81fad 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1998--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 1998--2014 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
index bf9a223684840885a32edf9d1efbcfa5354676b0..ca7533dce903b301d36c1ddd4356b5f165cccbde 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1998--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>,
+  Copyright (C) 1998--2014 Han-Wen Nienhuys <hanwen@xs4all.nl>,
                  Erik Sandberg <mandolaerik@gmail.com>
 
   LilyPond is free software: you can redistribute it and/or modify
index 69e97afef04b6435e1494c28019405d580102c2f..9d4ce784b1803460ada4749d9bd232cb38aec69f 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2005--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 2005--2014 Han-Wen Nienhuys <hanwen@xs4all.nl>
 
 
   LilyPond is free software: you can redistribute it and/or modify
   along with LilyPond.  If not, see <http://www.gnu.org/licenses/>.
 */
 
+#include "tuplet-number.hh"
 #include "tuplet-bracket.hh"
-#include "moment.hh"
+#include "moment.hh"      // needed?
 #include "paper-column.hh"
 #include "text-interface.hh"
 #include "spanner.hh"
 #include "lookup.hh"
+#include "pointer-group-interface.hh"
+#include "staff-symbol-referencer.hh"
+#include "axis-group-interface.hh"
+#include "directional-element-interface.hh"
+#include "note-column.hh"
+#include "beam.hh"
+#include "stem.hh"
+#include "warn.hh"
 
-struct Tuplet_number
+/*
+  The reference stem is used to determine on which side of the beam to place
+  the tuplet number when it is positioned independently of a bracket.  (The number
+  is always placed on the opposite side of this stem.)
+*/
+Grob *
+Tuplet_number::select_reference_stem (Grob *me_grob, vector<Grob *> const &cols)
+{
+  Spanner *me = dynamic_cast<Spanner *> (me_grob);
+
+  int col_count = cols.size ();
+
+  if (!col_count)
+    return 0;
+
+  /*
+    When we have an odd number of stems, we choose the middle stem as
+    our reference.
+  */
+  Grob *ref_stem = Note_column::get_stem (cols[col_count / 2]);
+
+  if (col_count % 2 == 1)
+    return ref_stem;
+
+  /*
+    When we have an even number of stems, we choose between the central
+    two stems.
+  */
+  Direction me_dir = robust_scm2dir (me->get_property ("direction"), UP);
+  Drul_array<Item *> bounding_stems (Note_column::get_stem (cols[col_count / 2 - 1]),
+                                     Note_column::get_stem (cols[col_count / 2]));
+
+  for (LEFT_and_RIGHT (d))
+    if (!bounding_stems[d])
+      return bounding_stems[-d];
+
+  /*
+    If the central stems point in opposite directions, the number may
+    be placed on either side unless there is a fractional beam, in which
+    case the number goes opposite to the partial beam.
+
+    When there is an option, we use the setting of TupletNumber.direction.
+
+    If the central stems are in the same direction, it doesn't matter
+    which is used as the reference.  We use the one on the left.
+  */
+  Direction dir_left = get_grob_direction (bounding_stems[LEFT]);
+  Direction dir_right = get_grob_direction (bounding_stems[RIGHT]);
+
+  if (dir_left == dir_right)
+    ref_stem = bounding_stems[LEFT];
+  else
+    {
+      int beam_count_L_R = Stem::get_beaming (bounding_stems[LEFT], RIGHT);
+      int beam_count_R_L = Stem::get_beaming (bounding_stems[RIGHT], LEFT);
+      if (beam_count_L_R == beam_count_R_L)
+        ref_stem = (dir_left == me_dir) ? bounding_stems[LEFT] : bounding_stems[RIGHT];
+      else
+        ref_stem = (beam_count_L_R > beam_count_R_L)
+                   ? bounding_stems[LEFT] : bounding_stems[RIGHT];
+    }
+
+  return ref_stem;
+}
+
+/*
+  When we place the number close to the beam, we need to consider the note
+  columns adjoining the tuplet number on the same side of the beam.  The
+  number may not fit in the available space, or may need to be shifted
+  horizontally out of the way of stems and ledger lines.
+*/
+Drul_array<Grob *>
+Tuplet_number::adjacent_note_columns (Grob *me_grob, Grob *ref_stem)
+{
+  Spanner *me = dynamic_cast<Spanner *> (me_grob);
+  Spanner *tuplet = unsmob_spanner (me->get_object ("bracket"));
+
+  extract_grob_set (tuplet, "note-columns", columns);
+  Grob *ref_col = ref_stem->get_parent (X_AXIS); // X-parent of Stem = NoteColumn
+  Direction ref_stem_dir = get_grob_direction (ref_stem);
+  vector<Grob *> filtered_cols;
+  vsize ref_pos = 0;
+
+  for (vsize i = 0, counter = 0; i < columns.size (); ++i)
+    {
+      Grob *stem = Note_column::get_stem (columns[i]);
+      if (stem && get_grob_direction (stem) == -ref_stem_dir)
+        {
+          filtered_cols.push_back (columns[i]);
+          ++counter;
+        }
+      if (columns[i] == ref_col)
+        {
+          filtered_cols.push_back (columns[i]);
+          ref_pos = counter;
+        }
+    }
+
+  Drul_array<Grob *> adj_cols (0, 0);
+
+  if (ref_pos > 0)
+    adj_cols[LEFT] = filtered_cols[ref_pos - 1];
+  if (ref_pos < filtered_cols.size () - 1)
+    adj_cols[RIGHT] = filtered_cols[ref_pos + 1];
+
+  return adj_cols;
+}
+
+/*
+  We determine whether our tuplet number will be put next to the beam
+  independently of the positioning of the associated tuplet bracket.
+
+  Draw next to the beam if:
+  --bracket isn't visible, AND
+  --there is a beam above or below the number, AND
+  --this beam is kneed, AND
+  --the tuplet number will fit between adjoining note columns
+*/
+bool
+Tuplet_number::knee_position_against_beam (Grob *me_grob, Grob *ref_stem)
 {
-  DECLARE_SCHEME_CALLBACK (print, (SCM));
-  DECLARE_SCHEME_CALLBACK (calc_x_offset, (SCM));
-  DECLARE_SCHEME_CALLBACK (calc_y_offset, (SCM));
-  DECLARE_SCHEME_CALLBACK (calc_cross_staff, (SCM));
-  DECLARE_GROB_INTERFACE ();
+  Spanner *me = dynamic_cast<Spanner *> (me_grob);
+  Spanner *tuplet = unsmob_spanner (me->get_object ("bracket"));
+
+  bool bracket_visible = to_boolean (me->get_property ("bracket-visibility"))
+                         || !tuplet->extent (tuplet, Y_AXIS).is_empty ();
+
+  if (bracket_visible || !to_boolean (me->get_property ("knee-to-beam")))
+    return false;
+
+  Grob *beam = Stem::get_beam (ref_stem);
+
+  if (!beam || !Beam::is_knee (beam))
+    return false;
+
+  Grob *commonx = Tuplet_bracket::get_common_x (tuplet);
+  commonx = commonx->common_refpoint (me, X_AXIS);
+
+  Interval number_ext = me->extent (commonx, X_AXIS);
 
-  static Real calc_offset (Spanner *me, Axis a);
-};
+  Drul_array<Grob *> adj_cols = adjacent_note_columns (me, ref_stem);
+
+  Item *left = me->get_bound (LEFT);
+  Item *right = me->get_bound (RIGHT);
+
+  if (!left || !right)
+    return false;
+
+  Drul_array<Item *> bounds (left, right);
+
+  Interval available_ext;
+  Real padding = robust_scm2double (me->get_property ("padding"), 0.5);
+
+  /*
+     If there is no note column on a given side of the tuplet number, we use
+     a paper column instead to determine the available space.  Padding is only
+     considered in the case of a note column.
+  */
+  for (LEFT_and_RIGHT (d))
+    {
+      if (adj_cols[d])
+        available_ext[d] = Axis_group_interface::generic_bound_extent (adj_cols[d], commonx, X_AXIS)[-d] + (-d * padding);
+      else
+        available_ext[d] = Axis_group_interface::generic_bound_extent (bounds[d], commonx, X_AXIS)[-d];
+    }
+
+  if (number_ext.length () > available_ext.length ())
+    {
+      programming_error ("not enough space for tuplet number against beam");
+      return false;
+    }
+
+  return true;
+}
 
 MAKE_SCHEME_CALLBACK (Tuplet_number, print, 1);
 SCM
@@ -58,28 +231,253 @@ Tuplet_number::print (SCM smob)
   return stc->smobbed_copy ();
 }
 
+/*
+  For a given horizontal displacement of the tuplet number, how much
+  vertical shift is necessary to keep it the same distance from the beam?
+*/
+Real
+calc_beam_y_shift (Grob *ref_stem, Real dx)
+{
+  Grob *beam = Stem::get_beam (ref_stem);
+  Interval x_pos = robust_scm2interval (beam->get_property ("X-positions"), Interval (0.0, 0.0));
+  Interval y_pos = robust_scm2interval (beam->get_property ("quantized-positions"), Interval (0.0, 0.0));
+  Real beam_dx = x_pos.length ();
+  Real beam_dy = y_pos[RIGHT] - y_pos[LEFT];
+  Real slope = beam_dx ? beam_dy / beam_dx : 0.0;
+
+  return (slope * dx);
+}
+
+/*
+  The X- and Y-offset of the tuplet number are calculated in relation either
+  to the bracket associated with it, or with the beam it is placed against.
+*/
+
 MAKE_SCHEME_CALLBACK (Tuplet_number, calc_x_offset, 1);
 SCM
 Tuplet_number::calc_x_offset (SCM smob)
 {
   Spanner *me = unsmob_spanner (smob);
+
+  Item *left_bound = me->get_bound (LEFT);
+  Item *right_bound = me->get_bound (RIGHT);
+  Drul_array<Item *> bounds (left_bound, right_bound);
+
   Spanner *tuplet = unsmob_spanner (me->get_object ("bracket"));
 
-  Interval x_positions = robust_scm2interval (tuplet->get_property ("X-positions"), Interval (0.0, 0.0));
+  Grob *commonx = Tuplet_bracket::get_common_x (tuplet);
+  commonx = commonx->common_refpoint (me, X_AXIS);
+
+  Interval bound_poss;
+
+  for (LEFT_and_RIGHT (d))
+    {
+      if (Note_column::has_interface (bounds[d])
+          && Note_column::get_stem (bounds[d]))
+        bounds[d] = Note_column::get_stem (bounds[d]);
+      bound_poss[d] = Axis_group_interface::generic_bound_extent (bounds[d], commonx, X_AXIS)[-d];
+    }
 
-  return scm_from_double (x_positions.center ());
+  extract_grob_set (tuplet, "note-columns", cols);
+  Grob *ref_stem = select_reference_stem (me, cols);
+
+  /*
+    Return bracket-based positioning.
+  */
+  if (!ref_stem
+      || !knee_position_against_beam (me, ref_stem))
+    {
+      Interval x_positions;
+      x_positions = robust_scm2interval (tuplet->get_property ("X-positions"),
+                                         Interval (0.0, 0.0));
+      return scm_from_double (x_positions.center ());
+    }
+
+  /*
+     Horizontally center the number on the beam.
+  */
+  Real col_pos = left_bound->relative_coordinate (commonx, X_AXIS);
+  Real x_offset = bound_poss.center () - col_pos;
+
+  /*
+    Consider possible collisions with adjacent note columns.
+  */
+  Drul_array<Grob *> adj_cols = adjacent_note_columns (me, ref_stem);
+  Interval number_ext = me->extent (commonx, X_AXIS);
+  number_ext.translate (x_offset);
+  Real padding = robust_scm2double (me->get_property ("padding"), 0.5);
+  number_ext.widen (padding);
+
+  Interval cor (0.0, 0.0);
+
+  for (LEFT_and_RIGHT (d))
+    if (adj_cols[d])
+      {
+        Interval nc_ext = adj_cols[d]->extent (commonx, X_AXIS);
+        Interval overlap (nc_ext);
+        overlap.intersect (number_ext);
+        if (!overlap.is_empty ())
+          cor[d] = overlap.length () * -d;
+        x_offset += cor[d];
+      }
+
+  return scm_from_double (x_offset);
+}
+
+/*
+  When a number is placed against the beam (independently of a bracket), the
+  Y-extent of a reference stem is used to determine the vertical placement of
+  the number.  When French beams are used the stem may not reach all beams.
+*/
+int
+count_beams_not_touching_stem (SCM beaming)
+{
+  int count = 0;
+
+  for (SCM s = scm_car (beaming); scm_is_pair (s); s = scm_cdr (s))
+    {
+      if (scm_c_memq (scm_car (s), scm_cdr (beaming)) != SCM_BOOL_F)
+        ++count;
+    }
+
+  return max (0, count - 1);
 }
 
 MAKE_SCHEME_CALLBACK (Tuplet_number, calc_y_offset, 1);
 SCM
 Tuplet_number::calc_y_offset (SCM smob)
 {
-
   Spanner *me = unsmob_spanner (smob);
   Spanner *tuplet = unsmob_spanner (me->get_object ("bracket"));
+  Drul_array<Real> positions = robust_scm2drul (tuplet->get_property ("positions"),
+                                                Drul_array<Real> (0.0, 0.0));
+  SCM to_bracket = scm_from_double ((positions[LEFT] + positions[RIGHT]) / 2.0);
+
+  Grob *commonx = Tuplet_bracket::get_common_x (me);
+  commonx = commonx->common_refpoint (me, X_AXIS);
+  Real x_coord = me->relative_coordinate (commonx, X_AXIS);
+  extract_grob_set (tuplet, "note-columns", columns);
+  Grob *ref_stem = select_reference_stem (me, columns);
+
+  if (!ref_stem || !knee_position_against_beam (me, ref_stem))
+    return to_bracket;
+
+  /*
+    First, we calculate the Y-offset of the tuplet number as if it
+    is positioned at the reference stem.
+  */
+  Grob *commony = common_refpoint_of_array (columns, tuplet, Y_AXIS);
+  commony = commony->common_refpoint (me, Y_AXIS);
+  extract_grob_set (me, "tuplets", tuplets);
+  commony = common_refpoint_of_array (tuplets, commony, Y_AXIS);
+  if (Grob *st = Staff_symbol_referencer::get_staff_symbol (me))
+    commony = st->common_refpoint (commony, Y_AXIS);
+
+  Interval ref_stem_ext = ref_stem->extent (commony, Y_AXIS);
+  Real tuplet_y = tuplet->relative_coordinate (commony, Y_AXIS);
+  Direction ref_stem_dir = get_grob_direction (ref_stem);
+
+  Real y_offset = ref_stem_ext[ref_stem_dir] - tuplet_y;
+
+  /*
+    Additional displacement for French beaming.
+  */
+  if (to_boolean (ref_stem->get_property ("french-beaming")))
+    {
+      Grob *beam = Stem::get_beam (ref_stem);
+      Real beam_translation = Beam::get_beam_translation (beam);
+      SCM beaming = ref_stem->get_property ("beaming");
+      y_offset += ref_stem_dir
+                  * count_beams_not_touching_stem (beaming)
+                  * beam_translation;
+    }
+
+  Real padding = robust_scm2double (me->get_property ("padding"), 0.5);
+  Real num_height = me->extent (commony, Y_AXIS).length ();
+
+  y_offset += ref_stem_dir * (padding + num_height / 2.0);
+
+  /*
+    Now we adjust the vertical position of the number to reflect
+    its actual horizontal placement along the beam.
+  */
+  Real ref_stem_x = ref_stem->relative_coordinate (commonx, X_AXIS);
+  y_offset += calc_beam_y_shift (ref_stem, x_coord - ref_stem_x);
+
+  /*
+    Check if the number is between the beam and the staff.  If so, it will collide
+    with ledger lines.  Move it into the staff.
+  */
+  if (Grob *st = Staff_symbol_referencer::get_staff_symbol (ref_stem))
+    {
+      Interval staff_ext_y = st->extent (commony, Y_AXIS);
+      bool move = ref_stem_dir == DOWN
+                  ? ref_stem_ext[DOWN] > staff_ext_y[UP]
+                  : staff_ext_y[DOWN] > ref_stem_ext[UP];
+      if (move)
+        {
+          Interval ledger_domain = Interval (min (staff_ext_y[UP], ref_stem_ext[UP]),
+                                             max (staff_ext_y[DOWN], ref_stem_ext[DOWN]));
+          Interval num_y (me->extent (commony, Y_AXIS));
+          num_y.translate (y_offset);
+          Interval num_ledger_overlap (num_y);
+          num_ledger_overlap.intersect (ledger_domain);
+          Real line_thickness = Staff_symbol_referencer::line_thickness (st);
+          Real staff_space = Staff_symbol_referencer::staff_space (st);
+          // Number will touch outer staff line.
+          if (!num_ledger_overlap.is_empty ()
+              && num_ledger_overlap.length () > (staff_space / 2.0)
+              && move)
+            y_offset += staff_ext_y[-ref_stem_dir] - num_y[-ref_stem_dir]
+                        + line_thickness * ref_stem_dir;
+        }
+    }
+
+  /*
+    Now consider possible collisions with accidentals on the right.  We
+    move the accidental away from the beam.
+  */
+  Drul_array<Grob *> adj_cols = adjacent_note_columns (me, ref_stem);
+
+  if (!adj_cols[RIGHT])
+    return scm_from_double (y_offset);
+
+  /*
+    Collect Y-extents of accidentals that overlap the number
+    along the X-axis.
+  */
+  extract_grob_set (adj_cols[RIGHT], "note-heads", heads);
+  Interval colliding_acc_ext_y;
+
+  for (vsize i = 0; i < heads.size (); i++)
+    if (Grob *acc = unsmob_grob (heads[i]->get_object ("accidental-grob")))
+      {
+        commony = commony->common_refpoint (acc, Y_AXIS);
+        Interval acc_ext_y = acc->extent (commony, Y_AXIS);
+
+        commonx = commonx->common_refpoint (acc, X_AXIS);
+        Interval num_ext_x = me->extent (commonx, X_AXIS);
+        num_ext_x.widen (padding);
+        Interval overlap_x (num_ext_x);
+        Interval acc_x = acc->extent (commonx, X_AXIS);
+        overlap_x.intersect (acc_x);
+
+        if (!overlap_x.is_empty ())
+          colliding_acc_ext_y.unite (acc_ext_y);
+      }
+  /*
+    Does our number intersect vertically with the accidental Y-extents we
+    combined above?  If so, move it.
+  */
+  Interval overlap_acc_y (colliding_acc_ext_y);
+  Interval num_ext_y (me->extent (commony, Y_AXIS));
+  num_ext_y.translate (y_offset);
+  overlap_acc_y.intersect (num_ext_y);
+
+  if (!overlap_acc_y.is_empty ())
+    y_offset += colliding_acc_ext_y[ref_stem_dir] - num_ext_y[-ref_stem_dir] + padding * ref_stem_dir;
 
-  Drul_array<Real> positions = robust_scm2drul (tuplet->get_property ("positions"), Drul_array<Real> (0.0, 0.0));
-  return scm_from_double ((positions[LEFT] + positions[RIGHT]) / 2.0);
+  return scm_from_double (y_offset);
 }
 
 MAKE_SCHEME_CALLBACK (Tuplet_number, calc_cross_staff, 1)
@@ -97,5 +495,6 @@ ADD_INTERFACE (Tuplet_number,
                "avoid-slur "    // UGH.
                "bracket "
                "direction "
+               "knee-to-beam "
               );
 
index a5d7ff68ddf9c607489df49916c4faa8256822a4..a2a3b6592213dc773afe9ea686c76d85057ce2dc 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2005--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 2005--2014 Han-Wen Nienhuys <hanwen@xs4all.nl>
 
 
   LilyPond is free software: you can redistribute it and/or modify
index 5924296d6098a75ad661fbfdc919343757634a0f..f29be92f12ee0e420aa15d902cb61d073a2b09b3 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2002--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 2002--2014 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
index 9b2f871769356ea1de2f47900d8a5a6fb5ffb037..1aefe920afea8b647496d65bcadcb2baf10d2514 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2011--2012 Mike Solomon <mike@mikesolomon.org>
+  Copyright (C) 2011--2014 Mike Solomon <mike@mikesolomon.org>
 
 
   LilyPond is free software: you can redistribute it and/or modify
@@ -32,6 +32,17 @@ is_unpure_pure_container (SCM s)
   return (SCM_NIMP (s) && SCM_CELL_TYPE (s) == unpure_pure_container_tag);
 }
 
+bool
+is_unchanging_unpure_pure_container (SCM s)
+// A container that has the same callback for both 'pure' and 'unpure' lookups
+// and which ignores the 'start' and 'end' columnns.
+// Such a callback will give the same answer for tentative or final layouts.
+{
+  LY_ASSERT_TYPE (is_unpure_pure_container, s, 1);
+  SCM pure_part = SCM_SMOB_OBJECT_2 (s);
+  return (SCM_UNBNDP (pure_part));
+}
+
 SCM
 unpure_pure_container_unpure_part (SCM smob)
 {
index 9b1485777c962ecbfa0f89a731e036211afb3218..3749b5af882d2a6d8f2094f79fb80dc4a24a407e 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2003--2012 Juergen Reuter <reuter@ipd.uka.de>
+  Copyright (C) 2003--2014 Juergen Reuter <reuter@ipd.uka.de>
 
   LilyPond is free software: you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
index deb0218bd08ebe92a4e710efe9f00979ed0c7862..d8ac36b9a30c2c8f55b14bbcf8d6e5217a6378e2 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2003--2012 Juergen Reuter <reuter@ipd.uka.de>
+  Copyright (C) 2003--2014 Juergen Reuter <reuter@ipd.uka.de>
 
   LilyPond is free software: you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
index 65cf6e7f772d7af5086ccbe6bfab11a94664a1d7..650669f8c54768e41791ac488f18ae529960227c 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1997--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 1997--2014 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
index 7b0fd1341179b4cddc88e5293933debdcb4eb6b6..99490980e87f4c167733a34300d3fd63be99fd48 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1997--2012 Jan Nieuwenhuizen <janneke@gnu.org>
+  Copyright (C) 1997--2014 Jan Nieuwenhuizen <janneke@gnu.org>
 
   LilyPond is free software: you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
index 882359621ab63ea6ffa4276dc16648ca5e626a7b..de7d08db95e09eb55ce85235eca5625df8dd2984 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2000--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 2000--2014 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
index 2e386e6fd18bba885a63cd6e3c1426fe29db2e29..0774ca07e8c962d2932377e3af7037a48b9ec4cb 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2002--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 2002--2014 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
@@ -33,17 +33,27 @@ protected:
   virtual void next_element (bool);
   virtual void construct_children ();
   virtual void process (Moment);
+  virtual void derived_mark () const;
 
   bool first_time_;
   int alt_count_;
   int rep_count_;
   int done_count_;
+  SCM alt_restores_;
 };
 
 Volta_repeat_iterator::Volta_repeat_iterator ()
 {
   done_count_ = alt_count_ = rep_count_ = 0;
   first_time_ = true;
+  alt_restores_ = SCM_EOL;
+}
+
+void
+Volta_repeat_iterator::derived_mark () const
+{
+  scm_gc_mark (alt_restores_);
+  Sequential_iterator::derived_mark ();
 }
 
 SCM
@@ -94,17 +104,48 @@ Volta_repeat_iterator::next_element (bool side_effect)
     {
       if (alt_count_)
         {
-          string repstr = to_string (rep_count_ - alt_count_ + done_count_) + ".";
-          if (done_count_ > 1)
+          string repstr = ::to_string (rep_count_ - alt_count_ + done_count_) + ".";
+          if (done_count_ <= 1)
             {
+              alt_restores_ = SCM_EOL;
+              if (to_boolean (get_outlet ()->get_property ("timing")))
+                {
+                  for (SCM lst = get_outlet ()->get_property ("alternativeRestores");
+                       scm_is_pair (lst);
+                       lst = scm_cdr (lst))
+                    {
+                      SCM res = SCM_EOL;
+                      Context *t = get_outlet ()->where_defined (scm_car (lst),
+                                                                 &res);
+                      if (t)
+                        {
+                          alt_restores_ = scm_cons
+                            (scm_list_3 (t->self_scm (), scm_car (lst), res),
+                             alt_restores_);
+                        }
+                    }
+                }
+            }
+          else
+            {
+
               add_repeat_command (scm_list_n (ly_symbol2scm ("volta"), SCM_BOOL_F, SCM_UNDEFINED));
 
               if (done_count_ - 1 < alt_count_)
-                add_repeat_command (ly_symbol2scm ("end-repeat"));
+                {
+                  add_repeat_command (ly_symbol2scm ("end-repeat"));
+
+                  if (to_boolean (get_outlet ()->get_property ("timing")))
+                    {
+                      for (SCM p = alt_restores_; scm_is_pair (p); p = scm_cdr (p))
+                        scm_apply_0 (ly_lily_module_constant ("ly:context-set-property!"),
+                                     scm_car (p));
+                    }
+                }
             }
 
           if (done_count_ == 1 && alt_count_ < rep_count_)
-            repstr = "1.--" + to_string (rep_count_ - alt_count_ + done_count_) + ".";
+            repstr = "1.--" + ::to_string (rep_count_ - alt_count_ + done_count_) + ".";
 
           if (done_count_ <= alt_count_)
             add_repeat_command (scm_list_n (ly_symbol2scm ("volta"),
index c2449d164eeab9fe6dec153d2e103fadf990ac3b..be29eaad592f70232a4f4b32f13b03e28432defc 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1998--2012 Jan Nieuwenhuizen <janneke@gnu.org>
+  Copyright (C) 1998--2014 Jan Nieuwenhuizen <janneke@gnu.org>
   Han-Wen Nienhuys <hanwen@xs4all.nl>
 
   LilyPond is free software: you can redistribute it and/or modify
index a72c346f6b354121546667062ba8df1631150f30..b09c00757a51145d6d493e9ad2016e173dc175f5 100644 (file)
@@ -23,7 +23,7 @@ That's it.  For more information, visit http://lilypond.org .
 
 %}
 
-\version "2.16.0"  % necessary for upgrading to future LilyPond versions.
+\version "2.19.8"  % necessary for upgrading to future LilyPond versions.
 
 \header{
   title = "A scale in LilyPond"
index 907ebf7830bce68be9181af34a64597835fd317f..5655a7334c18a67617813afee76b1aba7c1b521e 100644 (file)
@@ -32,7 +32,7 @@ Good luck with LilyPond!  Happy engraving.
 
 %}
 
-\version "2.16.0"  % necessary for upgrading to future LilyPond versions.
+\version "2.19.8"  % necessary for upgrading to future LilyPond versions.
 
 \header{
   title = "A scale in LilyPond"
index 9252f723b5b9e4b5cab1afa4ee00aed21aa39013..c1901e460c7e51f8475c581fa56c7ec27b48cd4b 100644 (file)
@@ -9,7 +9,7 @@
   $Id: bagpipe.ly,v 1.12 2006/03/16 14:39:46 hanwen Exp $
 %}
 
-\version "2.17.30"
+\version "2.19.0"
 
 % Notes of the scale of the Great Highland Bagpipe. Extra high notes for bombarde.
 % Flat notes used mainly in some modern music.
@@ -71,8 +71,9 @@ quarterBeaming = {
   \set Staff.beamExceptions = #'()
 }
 halfBeaming = {
-  \set Staff.beamExceptions = #'((end . (((1 . 8) . (4 4))
-                                         ((1 . 12) . (3 3)))))
+  \set Staff.beamExceptions =
+  \beamExceptions { 8[ 8 8 8] |
+                   \tuplet 3/2 { 8[ 8 8] 8[ 8 8] 8[ 8 8] 8[ 8 8] } }
 }
 
 % Reels are in allabreve time with half note beaming.
index 5a30f54a5820133d41692c09683b9fe220c27a21..3918e7a14982fb29e258088b39da0e3d080589bb 100644 (file)
@@ -1,7 +1,7 @@
 %%%% common Catalan names for notes
 %%%% This file is part of LilyPond, the GNU music typesetter.
 %%%%
-%%%% Copyright (C) 2010--2012 Valentin Villenave <valentin@villenave.net>
+%%%% Copyright (C) 2010--2014 Valentin Villenave <valentin@villenave.net>
 %%%%
 %%%% LilyPond is free software: you can redistribute it and/or modify
 %%%% it under the terms of the GNU General Public License as published by
index b57fd713372f74149187fceb37a7f8077ab9180a..d3ae2129fac6c0c04fc5d844d0e152d9267e225a 100644 (file)
@@ -1,6 +1,6 @@
 %%%% This file is part of LilyPond, the GNU music typesetter.
 %%%%
-%%%% Copyright (C) 2011--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+%%%% Copyright (C) 2011--2014 Han-Wen Nienhuys <hanwen@xs4all.nl>
 %%%%                    Jan Nieuwenhuizen <janneke@gnu.org>
 %%%%
 %%%% LilyPond is free software: you can redistribute it and/or modify
index f3f5eef6689e383abf610af6aad1af062c055afc..48c57257e053b13eae4eb199595bf9b5bf1e2964 100644 (file)
@@ -1,6 +1,6 @@
 %%%% This file is part of LilyPond, the GNU music typesetter.
 %%%%
-%%%% Copyright (C) 1996--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+%%%% Copyright (C) 1996--2014 Han-Wen Nienhuys <hanwen@xs4all.nl>
 %%%%                          Jan Nieuwenhuizen <janneke@gnu.org>
 %%%%
 %%%% LilyPond is free software: you can redistribute it and/or modify
index c7c626e2111e1f41ec30cd33f610c52a05e6d021..1c92f790018c487f987cd31c0e7f2020108eec62 100644 (file)
@@ -1,7 +1,7 @@
 %%%% common German names for notes
 %%%% This file is part of LilyPond, the GNU music typesetter.
 %%%%
-%%%% Copyright (C) 2010--2012 Valentin Villenave <valentin@villenave.net>
+%%%% Copyright (C) 2010--2014 Valentin Villenave <valentin@villenave.net>
 %%%%
 %%%% LilyPond is free software: you can redistribute it and/or modify
 %%%% it under the terms of the GNU General Public License as published by
index c0cadea6210c81365187c07c7944390743b7ad23..8eec232a7a5d506f218daedcb4adb65eb7e23a43 100644 (file)
@@ -1,7 +1,7 @@
 %%%% common English names for notes
 %%%% This file is part of LilyPond, the GNU music typesetter.
 %%%%
-%%%% Copyright (C) 2010--2012 Valentin Villenave <valentin@villenave.net>
+%%%% Copyright (C) 2010--2014 Valentin Villenave <valentin@villenave.net>
 %%%%
 %%%% LilyPond is free software: you can redistribute it and/or modify
 %%%% it under the terms of the GNU General Public License as published by
index 9c8547dd7d024f8e6b0f6b07d9683e7ede62dd94..ebfff6a2fcd2889c14b287db84a28d6bc7d2a10e 100644 (file)
@@ -1,6 +1,6 @@
 %%%% This file is part of LilyPond, the GNU music typesetter.
 %%%%
-%%%% Copyright (C) 1996--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+%%%% Copyright (C) 1996--2014 Han-Wen Nienhuys <hanwen@xs4all.nl>
 %%%%                          Jan Nieuwenhuizen <janneke@gnu.org>
 %%%%
 %%%% LilyPond is free software: you can redistribute it and/or modify
@@ -86,7 +86,7 @@
   \consists "Cue_clef_engraver"
   \consists "Fingering_column_engraver"
 
-  localKeySignature = #'()
+  localAlterations = #'()
   createSpacing = ##t
   ignoreFiguredBassRest = ##f
 
@@ -162,14 +162,13 @@ contained staves are not connected vertically."
 \context{
   \type "Engraver_group"
 
-  localKeySignature = #'()
+  localAlterations = #'()
   createSpacing = ##t
 
   squashedPosition = #0
   \name RhythmicStaff
   \alias "Staff"
 
-  \override BarLine.bar-extent = #'(-2 . 2)
   \override VoltaBracket.staff-padding = #3
   \override StaffSymbol.line-count = #1
 
@@ -306,7 +305,7 @@ multiple voices on the same staff."
 \context{
   \type "Engraver_group"
   \name GrandStaff
-  localKeySignature = #'()
+  localAlterations = #'()
 
   \description "A group of staves, with a brace on the left
 side, grouping the staves together.  The bar lines of the
@@ -314,6 +313,9 @@ contained staves are connected vertically."
 
   \consists "Instrument_name_engraver"
   \consists "Span_bar_engraver"
+% The default for DynamicText.extra-spacing-width causes dynamics to
+% be placed across span bars, so switch it off:
+  \override DynamicText.extra-spacing-width = ##f
   \consists "Span_bar_stub_engraver"
   \consists "Span_arpeggio_engraver"
   \consists "System_start_delimiter_engraver"
@@ -360,6 +362,9 @@ together, never separately."
 
   \consists "Instrument_name_engraver"
   \consists "Span_bar_engraver"
+% The default for DynamicText.extra-spacing-width causes dynamics to
+% be placed across span bars, so switch it off:
+  \override DynamicText.extra-spacing-width = ##f
   \consists "Span_bar_stub_engraver"
   \consists "Span_arpeggio_engraver"
   \consists "Output_property_engraver"
@@ -609,6 +614,7 @@ automatically when an output definition (a @code{\\score} or
   doubleRepeatType = #":..:"
   startRepeatType = #".|:"
   endRepeatType = #":|."
+  alternativeRestores = #'(measurePosition measureLength lastChord)
   barNumberVisibility = #first-bar-number-invisible-and-no-parenthesized-bar-numbers
   barNumberFormatter = #robust-bar-number-function
   clefTranspositionFormatter = #clef-transposition-markup
@@ -634,6 +640,8 @@ automatically when an output definition (a @code{\\score} or
   autoBeaming = ##t
   autoBeamCheck = #default-auto-beam-check
 
+  completionFactor = #unity-if-multimeasure
+
   scriptDefinitions = #default-script-alist
 
   pedalSustainStrings = #'("Ped." "*Ped." "*")
index c67dd19c8140848ace334cea6b7bf93d5e791b76..7b1ef9995eba2a01a1744079789553312b22157c 100644 (file)
@@ -1,7 +1,7 @@
 %%%% common Spanish names for notes
 %%%% This file is part of LilyPond, the GNU music typesetter.
 %%%%
-%%%% Copyright (C) 2010--2012 Valentin Villenave <valentin@villenave.net>
+%%%% Copyright (C) 2010--2014 Valentin Villenave <valentin@villenave.net>
 %%%%
 %%%% LilyPond is free software: you can redistribute it and/or modify
 %%%% it under the terms of the GNU General Public License as published by
index 9e5282de89d7ca33704a58fb592a62ec17c848e0..b7b8ca086acc2fa467c93390b5c6c79033062804 100644 (file)
@@ -1,6 +1,6 @@
 %%%% This file is part of LilyPond, the GNU music typesetter.
 %%%%
-%%%% Copyright (C) 2011--2012 Graham Percival <graham@percival-music.ca>
+%%%% Copyright (C) 2011--2014 Graham Percival <graham@percival-music.ca>
 %%%%
 %%%% LilyPond is free software: you can redistribute it and/or modify
 %%%% it under the terms of the GNU General Public License as published by
index b05df7dd1744043d943e5301861a8872fe80afc0..ef4a9290f3b235993d7fc3fc6ee2d4ac75e93878 100644 (file)
@@ -1,6 +1,6 @@
 %%%% This file is part of LilyPond, the GNU music typesetter.
 %%%%
-%%%% Copyright (C) 2009--2012 by Ian Hulin <ian@hulin.org.uk>
+%%%% Copyright (C) 2009--2014 by Ian Hulin <ian@hulin.org.uk>
 %%%%
 %%%% LilyPond is free software: you can redistribute it and/or modify
 %%%% it under the terms of the GNU General Public License as published by
index e80b1e849efbc3a55ae27d170f4effadfab4982a..da756740c6ae86df082816a5221732532187d7b5 100644 (file)
@@ -1,7 +1,7 @@
 %%%% common Italian names for notes
 %%%% This file is part of LilyPond, the GNU music typesetter.
 %%%%
-%%%% Copyright (C) 2010--2012 Valentin Villenave <valentin@villenave.net>
+%%%% Copyright (C) 2010--2014 Valentin Villenave <valentin@villenave.net>
 %%%%
 %%%% LilyPond is free software: you can redistribute it and/or modify
 %%%% it under the terms of the GNU General Public License as published by
index 72aa43f23ea09e85e3f575abdbc56293c514415e..c4d6ea134ec699deaee0082c99cfbdd4f69069fa 100644 (file)
@@ -1,6 +1,6 @@
 %%%% This file is part of LilyPond, the GNU music typesetter.
 %%%%
-%%%% Copyright (C) 1996--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+%%%% Copyright (C) 1996--2014 Han-Wen Nienhuys <hanwen@xs4all.nl>
 %%%%                          Jan Nieuwenhuizen <janneke@gnu.org>
 %%%%
 %%%% LilyPond is free software: you can redistribute it and/or modify
index bf738074cda120346f26b231c6854bd427ac72e7..9e5d3c223b8c32db59a70585bd2bdf7f8478c278 100644 (file)
@@ -2,7 +2,7 @@
 
 %%%% This file is part of LilyPond, the GNU music typesetter.
 %%%%
-%%%% Copyright (C) 2003--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+%%%% Copyright (C) 2003--2014 Han-Wen Nienhuys <hanwen@xs4all.nl>
 %%%%                          Jan Nieuwenhuizen <janneke@gnu.org>
 %%%%
 %%%% LilyPond is free software: you can redistribute it and/or modify
@@ -221,6 +221,14 @@ barNumberCheck =
                                         "Barcheck failed got ~a expect ~a"
                                         cbn n))))))
 
+beamExceptions =
+#(define-scheme-function (parser location music) (ly:music?)
+   (_i "Extract a value suitable for setting
+@code{Timing.beamExceptions} from the given pattern with explicit
+beams in @var{music}.  A bar check @code{|} has to be used between
+bars of patterns in order to reset the timing.")
+   (extract-beam-exceptions music))
+
 bendAfter =
 #(define-event-function (parser location delta) (real?)
    (_i "Create a fall or doit of pitch interval @var{delta}.")
@@ -245,7 +253,15 @@ bookOutputSuffix =
 breathe =
 #(define-music-function (parser location) ()
    (_i "Insert a breath mark.")
-   (make-music 'BreathingEvent))
+   (make-music 'BreathingEvent
+     'midi-length
+     (lambda (len context)
+       ;;Shorten by half, or by up to a second, but always by a power of 2
+       (let* ((desired (min (ly:moment-main (seconds->moment 1 context))
+                            (* (ly:moment-main len) 1/2)))
+              (scale (inexact->exact (ceiling (/ (log desired) (log 1/2)))))
+              (breath (ly:make-moment (expt 1/2 scale))))
+         (ly:moment-sub (ly:make-moment (ly:moment-main len)) breath)))))
 
 clef =
 #(define-music-function (parser location type) (string?)
@@ -270,7 +286,7 @@ as @code{\\compoundMeter #'((3 2 8))} or shorter
          (timesig (cons (ly:moment-main-numerator mlen)
                         (ly:moment-main-denominator mlen))))
   #{
-    \once \override Staff.TimeSignature.stencil = #(lambda (grob)
+    \once \override Timing.TimeSignature.stencil = #(lambda (grob)
       (grob-interpret-markup grob (format-compound-time args)))
     \set Timing.timeSignatureFraction = #timesig
     \set Timing.baseMoment = #beat
@@ -328,25 +344,30 @@ in a CueVoice oriented by @var{dir}.")
 
 
 displayLilyMusic =
-#(define-music-function (parser location music) (ly:music?)
+#(define-music-function (parser location port music) ((output-port?) ly:music?)
    (_i "Display the LilyPond input representation of @var{music}
-to the console.")
-   (newline)
-   (display-lily-music music parser)
+to @var{port}, defaulting to the console.")
+   (let ((port (or port (current-output-port))))
+     (newline port)
+     (display-lily-music music parser port))
    music)
 
 displayMusic =
-#(define-music-function (parser location music) (ly:music?)
-   (_i "Display the internal representation of @var{music} to the console.")
-   (newline)
-   (display-scheme-music music)
+#(define-music-function (parser location port music) ((output-port?) ly:music?)
+   (_i "Display the internal representation of @var{music} to
+@var{port}, default to the console.")
+   (let ((port (or port (current-output-port))))
+     (newline port)
+     (display-scheme-music music port))
    music)
 
 displayScheme =
-#(define-scheme-function (parser location expr) (scheme?)
-   (_i "Display the internal representation of @var{expr} to the console.")
-   (newline)
-   (display-scheme-music expr)
+#(define-scheme-function (parser location port expr) ((output-port?) scheme?)
+   (_i "Display the internal representation of @var{expr} to
+@var{port}, default to the console.")
+   (let ((port (or port (current-output-port))))
+     (newline port)
+     (display-scheme-music expr port))
    expr)
 
 
@@ -611,6 +632,29 @@ languageRestore =
       (ly:input-warning location (_ "No other language was defined previously. Ignoring."))))
 
 
+magnifyMusic =
+#(define-music-function (parser location mag mus) (number? ly:music?)
+   (_i "Magnify the notation of @var{mus} without changing the
+staff-size, using @var{mag} as a size factor.  Stems, beams, and
+horizontal spacing are adjusted automatically.")
+   #{
+     \set fontSize = #(magnification->font-size mag)
+     % gives beam-thickness=0.48 when mag=1 (like default),
+     % gives beam-thickness=0.35 when mag=0.63 (like CueVoice)
+     \temporary \override Beam.beam-thickness = #(+ 119/925 (* mag 13/37))
+     \temporary \override Beam.length-fraction = #mag
+     \temporary \override Stem.length-fraction = #mag
+     \temporary \override Stem.thickness = #(* 1.3 (max 1 mag))
+     \temporary \override Score.SpacingSpanner.spacing-increment = #(* 1.2 mag)
+     #mus
+     \set fontSize = 0
+     \revert Beam.beam-thickness
+     \revert Beam.length-fraction
+     \revert Stem.length-fraction
+     \revert Stem.thickness
+     \revert Score.SpacingSpanner.spacing-increment
+   #})
+
 makeClusters =
 #(define-music-function (parser location arg) (ly:music?)
    (_i "Display chords in @var{arg} as clusters.")
@@ -733,7 +777,7 @@ appropriate tweak applied.")
               \override #prop-path = #(offsetter (third prop-path) offsets)
             #}
             (make-music 'Music)))))
+
 omit =
 #(define-music-function (parser location item) (symbol-list-or-music?)
    (_i "Set @var{item}'s @samp{stencil} property to @code{#f},
@@ -1260,9 +1304,7 @@ shiftDurations =
    (_i "Change the duration of @var{arg} by adding @var{dur} to the
 @code{durlog} of @var{arg} and @var{dots} to the @code{dots} of @var{arg}.")
 
-   (music-map
-    (lambda (x)
-      (shift-one-duration-log x dur dots)) arg))
+   (shift-duration-log arg dur dots))
 
 single =
 #(define-music-function (parser location overrides music)
index 7555281ee3e68cefe542952d337ddd829f882714..fd0ef43403959816dd7dcd67eb7d922428b40f74 100644 (file)
@@ -1,7 +1,7 @@
 %%%% common Dutch names for notes
 %%%% This file is part of LilyPond, the GNU music typesetter.
 %%%%
-%%%% Copyright (C) 1996--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+%%%% Copyright (C) 1996--2014 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
index 144ea82b04b38bb2c8aef1002f0f7d32557aa223..2b642b8eca5143493a54f330f8433ab1327a720e 100644 (file)
@@ -1,7 +1,7 @@
 %%%% common Norwegian names for notes
 %%%% This file is part of LilyPond, the GNU music typesetter.
 %%%%
-%%%% Copyright (C) 2010--2012 Valentin Villenave <valentin@villenave.net>
+%%%% Copyright (C) 2010--2014 Valentin Villenave <valentin@villenave.net>
 %%%%
 %%%% LilyPond is free software: you can redistribute it and/or modify
 %%%% it under the terms of the GNU General Public License as published by
index 07ee79176b16ae316671d52980d1737a493c8f66..ef7419312271c1de3f975c10be5d375c6889ab56 100644 (file)
@@ -1,6 +1,6 @@
 %%%% This file is part of LilyPond, the GNU music typesetter.
 %%%%
-%%%% Copyright (C) 2004--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+%%%% Copyright (C) 2004--2014 Han-Wen Nienhuys <hanwen@xs4all.nl>
 %%%%                          Jan Nieuwenhuizen <janneke@gnu.org>
 %%%%                          Neil Puttock <n.puttock@gmail.com>
 %%%%
index 0a1ac2d3748e6de857e21e51b1d4801f8d6efe74..ecc97aedb72d9004dc6fbe0e84b96e6f1ffa95d6 100644 (file)
@@ -1,6 +1,6 @@
 %%%% This file is part of LilyPond, the GNU music typesetter.
 %%%%
-%%%% Copyright (C) 1996--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+%%%% Copyright (C) 1996--2014 Han-Wen Nienhuys <hanwen@xs4all.nl>
 %%%%                          Jan Nieuwenhuizen <janneke@gnu.org>
 %%%%
 %%%% LilyPond is free software: you can redistribute it and/or modify
@@ -26,6 +26,7 @@
   \name Staff
   \accepts Voice
   \accepts CueVoice
+  \accepts NullVoice
   \defaultchild Voice
 
   \consists "Staff_performer"
   \name "Devnull"
 }
 
+\context {
+  \type "Performer_group"
+  \name NullVoice
+  \alias Staff
+  \alias Voice
+  %% needed for melismata
+  %% TODO: at least the tie performer likely does not work without the
+  %% Note_performer, but I don't know how to shut note output off in
+  %% MIDI.
+  \consists "Tie_performer"
+  \consists "Beam_performer"
+  \consists "Slur_performer"
+}
+
 \context {
   \Staff
   \name TabStaff
index 774119d420d8b2807e9ebbbfb98ec0aae1aa6591..c8dd91d1130cd1faa5ea121ce38f70f212a1f9b7 100644 (file)
@@ -1,7 +1,7 @@
 %%%% common Portuguese names for notes
 %%%% This file is part of LilyPond, the GNU music typesetter.
 %%%%
-%%%% Copyright (C) 2010--2012 Valentin Villenave <valentin@villenave.net>
+%%%% Copyright (C) 2010--2014 Valentin Villenave <valentin@villenave.net>
 %%%%
 %%%% LilyPond is free software: you can redistribute it and/or modify
 %%%% it under the terms of the GNU General Public License as published by
index 705e9628720702b5f24ad21daf9948a2a268f3fb..bec581ae6603a7ce5491873b8e84f4dbb641dfdc 100644 (file)
@@ -1,6 +1,6 @@
 %%%% This file is part of LilyPond, the GNU music typesetter.
 %%%%
-%%%% Copyright (C) 2008--2012 Carl D. Sorensen <c_sorensen@byu.edu>
+%%%% Copyright (C) 2008--2014 Carl D. 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
index fbdb0c790bec86279f166e3378b696cfd0b7d98a..3f354616f3808a67294bf730a7283a299d6eb848 100644 (file)
@@ -1,6 +1,6 @@
 %%%% This file is part of LilyPond, the GNU music typesetter.
 %%%%
-%%%% Copyright (C) 2008--2012 Carl D. Sorensen <c_sorensen@byu.edu>
+%%%% Copyright (C) 2008--2014 Carl D. 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
                         #"x;x;o;1-1;o;1-2;"
 \storePredefinedDiagram #default-fret-table \chordmode {b:7}
                         #guitar-tuning
-                        #(offset-fret 1 (chord-shape 'bes:7 guitar-tuning))
+                        #"x;2-2;1-1;2-3;o;2-4;"
 \storePredefinedDiagram #default-fret-table \chordmode {b:maj7}
                         #guitar-tuning
                         #"x;2-1;4-3;3-2;4-4;x;"
index 3271397648c3e3aa364f3a6b2419a2ad0a7167ae..a4ba9ac50b1a173e3aae1a48b99114dc2c795c77 100644 (file)
@@ -1,6 +1,6 @@
 %%%% This file is part of LilyPond, the GNU music typesetter.
 %%%%
-%%%% Copyright (C) 2008--2012 by Jonathan Kulp
+%%%% Copyright (C) 2008--2014 by Jonathan Kulp
 %%%%
 %%%% LilyPond is free software: you can redistribute it and/or modify
 %%%% it under the terms of the GNU General Public License as published by
index 1b8cb09578e07a2b31e0d09f728b784e7d28f15b..d63751484ca5443a269f6b4a3dfc09bc71d90558 100644 (file)
@@ -1,6 +1,6 @@
 %%%% This file is part of LilyPond, the GNU music typesetter.
 %%%%
-%%%% Copyright (C) 2011--2012 Marc Hohl <marc@hohlart.de>
+%%%% Copyright (C) 2011--2014 Marc Hohl <marc@hohlart.de>
 %%%%
 %%%% LilyPond is free software: you can redistribute it and/or modify
 %%%% it under the terms of the GNU General Public License as published by
index 80f55aca1fbe444f4105ad3cd28903ced7ee0eec..187b70f6586796695b9d0e08a6fc12f8fad24363 100644 (file)
@@ -1,6 +1,6 @@
 %%%% This file is part of LilyPond, the GNU music typesetter.
 %%%%
-%%%% Copyright (C) 2009--2012 Matt Corks <mvcorks@alumni.uwaterloo.ca>
+%%%% Copyright (C) 2009--2014 Matt Corks <mvcorks@alumni.uwaterloo.ca>
 %%%%
 %%%% LilyPond is free software: you can redistribute it and/or modify
 %%%% it under the terms of the GNU General Public License as published by
index 42a1d5100c8c2732ed72ac729fa0fe90e8124fe0..852dbcee9ebaf5cf6d55f874b561114c4c2fe294 100644 (file)
@@ -273,12 +273,14 @@ unHideNotes = {
 improvisationOn = {
   \set squashedPosition = #0
   \override NoteHead.style = #'slash
+  \override TabNoteHead.style = #'slash
   \override Accidental.stencil = ##f
   \override AccidentalCautionary.stencil = ##f
 }
 improvisationOff = {
   \unset squashedPosition
   \revert NoteHead.style
+  \revert TabNoteHead.style
   \revert Accidental.stencil
   \revert AccidentalCautionary.stencil
 }
diff --git a/ly/satb.ly b/ly/satb.ly
new file mode 100644 (file)
index 0000000..a15dd1d
--- /dev/null
@@ -0,0 +1,226 @@
+\version "2.18.0"
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%                                                %%
+%%     Accompanied Choir with Multiple Verses     %%
+%%                                                %%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+%{
+  This file may be \include'd in a score to provide the
+  context structure for a score arrangement consisting
+  of the following staves:
+
+  Descant Staff
+  Soprano and Alto (optionally on two Staves or one Staff)
+  Multiple verses (up to 9)
+  Tenor and Bass (optionally on two Staves or one Staff)
+  Piano Staff
+
+  It is intended primarily to hide the complexity of the context
+  structure from newcomers to LilyPond, but is also useful as a
+  shorthand for seasoned users.
+
+  Usage:
+
+  satb.ly should be included at the *end* of the input file. Before
+  it are placed the required music and lyrics by redefining specific
+  variables, like this:
+
+  \paper { ... }
+  \header { ... }
+  Key = { ... }
+  Time = { ... }
+  DescantMusic = \relative { ... }
+  DescantLyrics = \lyricmode { ... }
+  SopranoMusic = \relative { ... }
+  SopranoLyrics = \lyricmode { ... }
+  AltoMusic = \relative { ... }
+  AltoLyrics = \lyricmode { ... }
+  VerseOne = \lyricmode { ... }
+  VerseTwo = \lyricmode { ... }
+  ...
+  VerseNine = \lyricmode { ... }
+  TenorMusic = \relative { ... }
+  TenorLyrics = \lyricmode { ... }
+  BassMusic = \relative { ... }
+  BassLyrics = \lyricmode { ... }
+  PianoRHMusic = \relative { ... }
+  PianoDynamics = { ... }
+  PianoLHMusic = \relative { ... }
+  TwoVoicesPerStaff = ##f
+  \include "satb.ly"
+
+  All of the definitions are optional. Staves with no music will be
+  omitted from the output.
+
+  Other variables, such as the instrumentName, can also be changed by
+  defining variables like AltoInstrumentName.  The key is defined in
+  the variable Key, and the structure of time and repeats in the
+  variable Time, using spacer rests.  A \layout block may be defined in
+  the variable Layout.  There is no default \header block and no default
+  \paper block.
+
+  Music may be tagged with #'print or #'play to be included only in
+  the printed score or in the MIDI file respectively.
+
+%}
+
+#(defmacro defaulting (name . default)
+  (if (defined? name) name (if (pair? default) (car default) '#{#})))
+
+#(define (sym . strings) (string->symbol (apply string-append strings)))
+
+#(defmacro short-name (part)
+  "Use PartShortInstrumentName, or the first letter of
+PartInstrumentName or its default."
+  (if (defined? (sym part "Music"))
+    (let ((sname (sym part "ShortInstrumentName")))
+      (if (defined? sname)
+        sname
+        `(substring (defaulting ,(sym part "InstrumentName") ,part)
+                   0 1)))
+    ""))
+
+#(defmacro lyrics-if-defined (name voice . optionals)
+  (let ((above (if (pair? optionals) (car optionals) #f)))
+    (if (defined? name)
+      `(make-music 'ContextSpeccedMusic
+        'create-new #t
+        'context-type 'Lyrics
+        'property-operations ',(if above `((assign alignAboveContext ,above)) '())
+        'element (make-music 'LyricCombineMusic
+                  'associated-context ,voice
+                  'element ,name))
+      #{#})))
+
+#(defmacro one-voice-staff (name clef)
+  `#{ <<
+     \new Staff = #(identity ,name) \with {
+       instrumentName = \markup \smallCaps
+         #(defaulting ,(sym name "InstrumentName") ,name)
+       shortInstrumentName = \markup \smallCaps #(short-name ,name)
+       midiInstrument = "clarinet"
+     } {
+       #(defaulting Key)
+       \clef #(identity ,clef)
+       \new Voice = #(identity ,name) <<
+        #(defaulting Time)
+        \dynamicUp
+        #(defaulting ,(sym name "Music"))
+       >>
+     }
+     #(lyrics-if-defined ,(sym name "Lyrics") ,name)
+     #(lyrics-if-defined ,(sym name "LyricsOne") ,name)
+     #(lyrics-if-defined ,(sym name "LyricsTwo") ,name)
+     #(lyrics-if-defined ,(sym name "LyricsThree") ,name)
+   >> #})
+
+#(defmacro two-voice-staff (name clef v1name v2name)
+  `#{ <<
+    \new Staff = #(identity ,name) \with {
+      instrumentName = \markup \right-column \smallCaps {
+        #(defaulting ,(sym v1name "InstrumentName") ,v1name)
+        #(defaulting ,(sym v2name "InstrumentName") ,v2name)
+      }
+      shortInstrumentName = \markup \right-column \smallCaps {
+       #(short-name ,v1name)
+       #(short-name ,v2name)
+      }
+      midiInstrument = "clarinet"
+    } <<
+      #(defaulting Key)
+      \clef #(identity ,clef)
+      \new Voice = #(identity ,v1name) <<
+       #(defaulting Time)
+       \voiceOne
+       \dynamicUp
+       #(defaulting ,(sym v1name "Music"))
+      >>
+      \new Voice = #(identity ,v2name) <<
+       #(defaulting Time)
+       \voiceTwo
+       #(defaulting ,(sym v2name "Music"))
+      >>
+    >>
+    #(lyrics-if-defined ,(sym v1name "Lyrics") ,v1name ,name)
+    #(lyrics-if-defined ,(sym v1name "LyricsOne") ,v1name ,name)
+    #(lyrics-if-defined ,(sym v1name "LyricsTwo") ,v1name ,name)
+    #(lyrics-if-defined ,(sym v1name "LyricsThree") ,v1name ,name)
+    #(lyrics-if-defined ,(sym v2name "Lyrics") ,v2name)
+    #(lyrics-if-defined ,(sym v2name "LyricsOne") ,v2name)
+    #(lyrics-if-defined ,(sym v2name "LyricsTwo") ,v2name)
+    #(lyrics-if-defined ,(sym v2name "LyricsThree") ,v2name)
+  >> #})
+
+SATB = <<
+  \new ChoirStaff
+  \with {
+    \override VerticalAxisGroup.remove-empty = ##t
+    \override VerticalAxisGroup.remove-first = ##t
+  }
+  <<
+    #(one-voice-staff "Descant" "treble")
+
+    #(if (defaulting TwoVoicesPerStaff #f)
+      (two-voice-staff "Women" "treble" "Soprano" "Alto")
+      (make-simultaneous-music (list (one-voice-staff "Soprano" "treble")
+                                    (one-voice-staff "Alto" "treble"))))
+
+    #(lyrics-if-defined VerseOne "Soprano")
+    #(lyrics-if-defined VerseTwo "Soprano")
+    #(lyrics-if-defined VerseThree "Soprano")
+    #(lyrics-if-defined VerseFour "Soprano")
+    #(lyrics-if-defined VerseFive "Soprano")
+    #(lyrics-if-defined VerseSix "Soprano")
+    #(lyrics-if-defined VerseSeven "Soprano")
+    #(lyrics-if-defined VerseEight "Soprano")
+    #(lyrics-if-defined VerseNine "Soprano")
+
+    #(if (defaulting TwoVoicesPerStaff #f)
+      (two-voice-staff "Men" "bass" "Tenor" "Bass")
+      (make-simultaneous-music (list (one-voice-staff "Tenor" "treble_8")
+                                    (one-voice-staff "Bass" "bass"))))
+  >>  % End ChoirStaff
+
+  \new PianoStaff
+  \with {
+    instrumentName = \markup \smallCaps
+                       #(defaulting PianoInstrumentName "Piano" )
+    shortInstrumentName = \markup \smallCaps #(short-name "Piano" )
+    \override VerticalAxisGroup.remove-empty = ##t
+    \override VerticalAxisGroup.remove-first = ##t
+  }
+  <<
+    \new Staff {
+      \clef "treble"
+      #(defaulting Key)
+      \new Voice <<
+       #(defaulting Time)
+       #(defaulting PianoRHMusic)
+      >>
+    }
+    \new Dynamics {
+      #(defaulting PianoDynamics)
+    }
+    \new Staff {
+      \clef "bass"
+      #(defaulting Key)
+      \new Voice <<
+       #(defaulting Time)
+       #(defaulting PianoLHMusic)
+      >>
+    }
+  >>
+>>
+
+\score {
+  \keepWithTag #'print \SATB
+  \layout { #(defaulting Layout) }
+}
+
+\score {
+  \keepWithTag #'play \SATB
+  \midi { }
+}
+
index 0cb37947e7294cb1f98b97a4a83dbe26d059ac31..3b3e39ed31d11b1ca86e8d5f7a80e0f214070023 100644 (file)
@@ -2,18 +2,10 @@
 
 \version "2.17.25"
 
-% code char abbreviations
-dashHat = "marcato"
-dashPlus = "stopped"
-dashDash = "tenuto"
-dashBang = "staccatissimo"
-dashLarger = "accent"
-dashDot = "staccato"
-dashUnderscore = "portato"
-
 harmonic = #(make-music 'HarmonicEvent)
 
-accent = #(make-articulation "accent")
+accent = #(make-articulation "accent"
+          'midi-extra-velocity 20)
 coda = #(make-articulation "coda")
 downbow = #(make-articulation "downbow")
 downmordent = #(make-articulation "downmordent")
@@ -26,10 +18,15 @@ lheel = #(make-articulation "lheel")
 lineprall = #(make-articulation "lineprall")
 longfermata = #(make-articulation "longfermata")
 ltoe = #(make-articulation "ltoe")
-marcato = #(make-articulation "marcato")
+marcato = #(make-articulation "marcato"
+           'midi-extra-velocity 40)
 mordent = #(make-articulation "mordent")
 open = #(make-articulation "open")
-portato = #(make-articulation "portato")
+
+portato = #(make-articulation "portato"
+           'midi-length
+           (lambda (len context)
+            (ly:moment-mul len (ly:make-moment 3/4))))
 prall = #(make-articulation "prall")
 pralldown = #(make-articulation "pralldown")
 prallmordent = #(make-articulation "prallmordent")
@@ -42,8 +39,17 @@ segno = #(make-articulation "segno")
 shortfermata = #(make-articulation "shortfermata")
 signumcongruentiae = #(make-articulation "signumcongruentiae")
 snappizzicato = #(make-articulation "snappizzicato")
-staccatissimo = #(make-articulation "staccatissimo")
-staccato = #(make-articulation "staccato")
+staccatissimo = #(make-articulation "staccatissimo"
+                 'midi-length
+                 (lambda (len context)
+                   (seconds->moment 1/8 context))
+                 'midi-extra-velocity 6)
+staccato = #(make-articulation "staccato"
+            'midi-length
+            (lambda (len context)
+              (moment-min (ly:moment-mul len (ly:make-moment 1/2))
+                          (seconds->moment 1/2 context)))
+            'midi-extra-velocity 4)
 stopped = #(make-articulation "stopped")
 tenuto = #(make-articulation "tenuto")
 thumb = \finger \markup \scale #(cons (magstep 5) (magstep 5))
@@ -55,3 +61,12 @@ upmordent = #(make-articulation "upmordent")
 upprall = #(make-articulation "upprall")
 varcoda = #(make-articulation "varcoda")
 verylongfermata = #(make-articulation "verylongfermata")
+
+% code char abbreviations
+dashHat = \marcato
+dashPlus = \stopped
+dashDash = \tenuto
+dashBang = \staccatissimo
+dashLarger = \accent
+dashDot = \staccato
+dashUnderscore = \portato
index c951bec00f0b5ec08f10cb42d637a4a8a3a8a741..b09d8da87186186b9615ee6edb59e1e312dbdece 100644 (file)
@@ -1,6 +1,6 @@
 %%%% This file is part of LilyPond, the GNU music typesetter.
 %%%%
-%%%% Copyright (C) 2010--2012 Carl D. Sorensen <c_sorensen@byu.edu>
+%%%% Copyright (C) 2010--2014 Carl D. 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
index 2d648136129b164b597d6bec5cdd18cdc4e8c7dc..0d00eef5b669f17850dcfbe9d33b09592033a063 100644 (file)
@@ -1,7 +1,7 @@
 %%%% common Finnish names for notes
 %%%% This file is part of LilyPond, the GNU music typesetter.
 %%%%
-%%%% Copyright (C) 2010--2012 Valentin Villenave <valentin@villenave.net>
+%%%% Copyright (C) 2010--2014 Valentin Villenave <valentin@villenave.net>
 %%%%
 %%%% LilyPond is free software: you can redistribute it and/or modify
 %%%% it under the terms of the GNU General Public License as published by
index 7f6a5acafc14cadb636f85b3e73fe67388639c80..1442c897f012e654e80ae4c06c872a8bb5873c49 100644 (file)
@@ -1,7 +1,7 @@
 %%%% common Swedish names for notes
 %%%% This file is part of LilyPond, the GNU music typesetter.
 %%%%
-%%%% Copyright (C) 2010--2012 Valentin Villenave <valentin@villenave.net>
+%%%% Copyright (C) 2010--2014 Valentin Villenave <valentin@villenave.net>
 %%%%
 %%%% LilyPond is free software: you can redistribute it and/or modify
 %%%% it under the terms of the GNU General Public License as published by
index cd6d4457b700508a87ca628925f1bcb2ced7f87e..74d414aca86c707afeb6f3b761090290a977acdd 100644 (file)
@@ -1,6 +1,6 @@
 %%%% This file is part of LilyPond, the GNU music typesetter.
 %%%%
-%%%% Copyright (C) 2011--2012 Bertrand Bordage <bordage.bertrand@gmail.com>
+%%%% Copyright (C) 2011--2014 Bertrand Bordage <bordage.bertrand@gmail.com>
 %%%%
 %%%% LilyPond is free software: you can redistribute it and/or modify
 %%%% it under the terms of the GNU General Public License as published by
index 62232bed80482e58e64dd44cc52c125f84fb6902..6f65f5aecc2b311fbe8cd3ac39bd8b7242e4f4e8 100644 (file)
@@ -1,7 +1,7 @@
 %%%% common Flemish names for notes
 %%%% This file is part of LilyPond, the GNU music typesetter.
 %%%%
-%%%% Copyright (C) 2010--2012 Valentin Villenave <valentin@villenave.net>
+%%%% Copyright (C) 2010--2014 Valentin Villenave <valentin@villenave.net>
 %%%%
 %%%% LilyPond is free software: you can redistribute it and/or modify
 %%%% it under the terms of the GNU General Public License as published by
index 9da619c823df9cda42b3874466293b928b3ab900..141ba631979ed55edca904e384cb2b24d8c078c5 100644 (file)
@@ -30,7 +30,6 @@ BRACES = a b c d e f g h i
 
 OTF_FILES = $(STAFF_SIZES:%=$(outdir)/emmentaler-%.otf) \
            $(outdir)/emmentaler-brace.otf
-PE_SCRIPTS = $(STAFF_SIZES:%=$(outdir)/emmentaler-%.pe)
 OTF_TABLES = $(STAFF_SIZES:%=$(outdir)/feta%.otf-table) \
             $(BRACES:%=$(outdir)/feta-braces-%.otf-table)
 SVG_FILES = $(OTF_FILES:%.otf=%.svg)
@@ -46,35 +45,18 @@ LISP_FILES = $(FETA_MF_FILES:%.mf=$(outdir)/%.lisp)
 ENC_FILES = $(FETA_MF_FILES:%.mf=$(outdir)/%.enc)
 TFM_FILES = $(FETA_MF_FILES:%.mf=$(outdir)/%.tfm)
 
-$(outdir)/emmentaler-brace.otf-table: $(BRACES:%=$(outdir)/feta-braces-%.otf-table)
-       cat $^ > $@
-
 $(outdir)/emmentaler-brace.otf-gtable: $(BRACES:%=$(outdir)/feta-braces-%.otf-gtable)
        echo '(design_size . 20)' > $@
 
+$(outdir)/feta%.otf-table: $(outdir)/feta%.lisp $(outdir)/parmesan%.lisp \
+       $(outdir)/parmesan-noteheads%.lisp \
+       $(outdir)/feta-noteheads%.lisp \
+       $(outdir)/feta-flags%.lisp \
+       $(outdir)/feta-alphabet%.lisp
+       cat $^ > $@
 
-
-## ugh -- we want this to prevent failing -j2 compiles.
-define FETAxx-PREREQUISITES
-
-
-$(outdir)/feta$(i).otf-table: $(outdir)/feta$(i).lisp \
-                           $(outdir)/feta-noteheads$(i).lisp \
-                           $(outdir)/feta-flags$(i).lisp \
-                           $(outdir)/parmesan$(i).lisp \
-                           $(outdir)/parmesan-noteheads$(i).lisp \
-                           $(outdir)/feta-alphabet$(i).lisp
-endef
-
-$(eval $(foreach i,$(STAFF_SIZES),$(FETAxx-PREREQUISITES)))
-
-$(outdir)/%.otf-table: $(outdir)/%.lisp
-       cat $< $(if $(findstring brace,$<),,$(subst feta,parmesan,$<)) \
-              $(if $(findstring brace,$<),,$(subst feta,parmesan-noteheads,$<)) \
-              $(if $(findstring brace,$<),,$(subst feta,feta-noteheads,$<)) \
-              $(if $(findstring brace,$<),,$(subst feta,feta-flags,$<)) \
-              $(if $(findstring brace,$<),,$(subst feta,feta-alphabet,$<)) > $@
-
+$(outdir)/emmentaler-brace.otf-table: $(foreach x, a b c d e f g h i,$(outdir)/feta-braces-$(x).lisp)
+       cat $^ > $@
 
 $(outdir)/emmentaler-brace.otf: $(outdir)/emmentaler-brace.subfonts \
                                $(outdir)/emmentaler-brace.fontname \
@@ -82,26 +64,15 @@ $(outdir)/emmentaler-brace.otf: $(outdir)/emmentaler-brace.subfonts \
                                $(outdir)/emmentaler-brace.otf-gtable \
                                $(outdir)/emmentaler-brace.pe
 
-$(outdir)/emmentaler-brace.otf\
- $(outdir)/emmentaler-brace.svg\
- $(outdir)/emmentaler-brace.woff: $(BRACES:%=$(outdir)/feta-braces-%.pfb)
-
 $(outdir)/emmentaler-brace.fontname:
        printf 'emmentaler-brace' > $@
 $(outdir)/emmentaler-brace.subfonts:
        echo $(subst .mf,,$(call src-wildcard,feta-braces-[a-z].mf)) > $@
 
-$(PE_SCRIPTS): $(buildscript-dir)/gen-emmentaler-scripts
-       $< --dir=$(outdir)
-
+$(outdir)/emmentaler-%.genpe: $(buildscript-dir)/gen-emmentaler-scripts
+       $< --dir=$(outdir) --design-size=$(patsubst emmentaler-%.genpe,%,$(notdir $@))
 
-# Generate emmentaler-*.pe scripts first, and *.otf, *.svg, *.woff files last,
-# so that normally these files aren't regenerated on a subsequent call to make.
-ALL_GEN_FILES = $(PE_SCRIPTS) \
-               $(LOG_FILES) \
-               $(ENC_FILES) \
-               $(LISP_FILES) \
-               $(OTF_TABLES) \
+ALL_GEN_FILES = $(ENC_FILES) \
                $(NCSB_OTFS) \
                $(OTF_FILES) \
                $(SVG_FILES) \
@@ -123,16 +94,20 @@ INSTALLATION_OUT_FILES2 = $(SVG_FILES) $(WOFF_FILES)
 
 export MFINPUTS := .:$(MFINPUTS)
 
+# A few rules here generate multiple files from one command line.  For
+# treating this case, we only declare one output explicitly, and use a
+# dummy rules for the other outputs. The dummy rule uses
+# $(UPDATE_TARGET) so the order of writing in the real command does
+# not confuse make.
+UPDATE_TARGET = if test -f $@; then touch $@ ; fi
+
 # only for fonts which
 #
 # 1. are mentioned in font.scm
 #
 # 2. are not included with teTeX
 #
-$(outdir)/%.lisp \
-$(outdir)/%.otf-gtable \
-$(outdir)/%.enc \
-$(outdir)/%.pe: $(outdir)/%.log $(outdir)/%.tfm
+$(outdir)/%.lisp: $(outdir)/%.log $(outdir)/%.tfm
        $(buildscript-dir)/mf-to-table \
                --global-lisp=$(outdir)/$(<F:.log=.otf-gtable) \
                --lisp=$(outdir)/$(<F:.log=.lisp) \
@@ -140,11 +115,12 @@ $(outdir)/%.pe: $(outdir)/%.log $(outdir)/%.tfm
                --enc $(outdir)/$(<F:.log=.enc) \
                $<
 
+$(outdir)/%.otf-gtable $(outdir)/%.enc: $(outdir)/%.lisp
+       $(UPDATE_TARGET)
+
 ## Putting pfb here forces all .pfb fonts to be built before
 # fontforge starts generating emmentaler-*.* fonts.
-$(outdir)/emmentaler-%.otf \
-$(outdir)/emmentaler-%.svg \
-$(outdir)/emmentaler-%.woff: $(outdir)/emmentaler-%.pe \
+$(outdir)/emmentaler-%.otf: $(outdir)/emmentaler-%.genpe \
                            $(outdir)/feta%.pfb \
                            $(outdir)/feta-noteheads%.pfb \
                            $(outdir)/feta-flags%.pfb \
@@ -156,35 +132,26 @@ $(outdir)/emmentaler-%.woff: $(outdir)/emmentaler-%.pe \
                            | pfb
        cd $(outdir) && $(FONTFORGE) -script $(notdir $<)
 
-$(outdir)/emmentaler-brace.otf\
- $(outdir)/emmentaler-brace.svg\
- $(outdir)/emmentaler-brace.woff: $(outdir)/emmentaler-brace.pe\
+$(outdir)/emmentaler-%.svg $(outdir)/emmentaler-%.woff: $(outdir)/emmentaler-%.otf
+       $(UPDATE_TARGET)
+
+$(outdir)/emmentaler-brace.otf: $(outdir)/emmentaler-brace.pe\
                       $(foreach s,$(BRACES),$(outdir)/feta-braces-$(s).pfb) \
                       $(outdir)/emmentaler-brace.otf-table $(outdir)/emmentaler-brace.otf-gtable \
                       | pfb
        cd $(outdir) && $(FONTFORGE) -script emmentaler-brace.pe
 
-default: $(ALL_GEN_FILES) \
-        $(outdir)/emmentaler-20.otf \
-        tree-regen \
+$(outdir)/emmentaler-brace.svg $(outdir)/emmentaler-brace.woff: $(outdir)/emmentaler-brace.otf
+       $(UPDATE_TARGET)
+
+default: tree-regen \
         $(outdir)/fonts.conf
 
 .PHONY: tree-regen
 
-# FIXME: temporary hack: must regenerate after building fonts
 tree-regen: $(ALL_GEN_FILES)
        ${MAKE} -C $(top-build-dir) link-mf-tree
 
-$(outdir)/%.lisp \
-$(outdir)/%.otf-gtable \
-$(outdir)/%.enc \
-$(outdir)/%.pe: $(outdir)/%.log $(outdir)/%.tfm
-       $(buildscript-dir)/mf-to-table \
-               --global-lisp=$(outdir)/$(<F:.log=.otf-gtable) \
-               --lisp=$(outdir)/$(<F:.log=.lisp) \
-               --outdir=$(outdir) \
-               --enc $(outdir)/$(<F:.log=.enc) \
-               $<
 
 local-clean:
        rm -f mfplain.mem mfplain.log
@@ -194,9 +161,14 @@ local-clean:
 $(outdir)/fonts.conf:
        echo '<fontconfig><dir>'$(shell cd $(outdir); pwd)'</dir></fontconfig>' > $@
 
-$(NCSB_OTFS): $(NCSB_SOURCE_FILES) \
+
+$(outdir)/CenturySchL-Roma.otf: $(NCSB_SOURCE_FILES) \
              $(auxscript-dir)/pfx2ttf.fontforge
        $(foreach i, $(basename $(NCSB_SOURCE_FILES)), \
                $(FONTFORGE) -script $(auxscript-dir)/pfx2ttf.fontforge \
                        $(i).pfb $(i).afm $(outdir)/ && ) true
-# eof
+
+$(addprefix $(outdir)/,CenturySchL-Ital.otf \
+       CenturySchL-Bold.otf \
+       CenturySchL-BoldItal.otf): $(outdir)/CenturySchL-Roma.otf
+       $(UPDATE_TARGET)
diff --git a/mf/common-modules-and-initialization.mf b/mf/common-modules-and-initialization.mf
new file mode 100644 (file)
index 0000000..764dbd6
--- /dev/null
@@ -0,0 +1,7 @@
+
+staffsize# := design_size * pt#;
+input debugging-settings;
+input feta-autometric;
+input feta-macros;
+mode_setup;
+input feta-params;
diff --git a/mf/debugging-settings.mf b/mf/debugging-settings.mf
new file mode 100644 (file)
index 0000000..e867713
--- /dev/null
@@ -0,0 +1,14 @@
+
+% Used for example to print glyphs with stafflines
+test := 0;
+
+if test = -1:
+        % TODO: what's this?  Seems to be broken...
+        mode := smoke;
+fi;
+
+% change this to 0.5 to have glyphs positioned on
+% staff spaces instead of stafflines in testing mode
+% (useful e.g. to check how accidentals visually interact
+% with stafflines in different configurations).
+stafflines_y_offset := 0;
diff --git a/mf/declare-autometric-parameters.mf b/mf/declare-autometric-parameters.mf
new file mode 100644 (file)
index 0000000..89bf921
--- /dev/null
@@ -0,0 +1,9 @@
+% TODO: i'm not sure if the name is right - is this declaring or something else?
+
+autometric_parameter ("staffsize", staffsize#);
+autometric_parameter ("stafflinethickness", stafflinethickness#);
+autometric_parameter ("staff_space", staff_space#);
+autometric_parameter ("linethickness", linethickness#);
+autometric_parameter ("black_notehead_width", black_notehead_width#);
+autometric_parameter ("ledgerlinethickness", ledgerlinethickness#);
+autometric_parameter ("blot_diameter", blot_diameter#);
index 11306724402b1424d5c947ab3bbac15a0538d61c..479a8b4a651613c60eb791c74baf00372bcace46 100644 (file)
@@ -1,7 +1,7 @@
 % Feta (not the Font-En-Tja) music font --  Accidentals
 % This file is part of LilyPond, the GNU music typesetter.
 %
-% Copyright (C) 1997--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+% Copyright (C) 1997--2014 Han-Wen Nienhuys <hanwen@xs4all.nl>
 %
 % The LilyPond font is free software: you can redistribute it and/or modify
 % it under the terms of the GNU General Public License as published by
 % along with LilyPond.  If not, see <http://www.gnu.org/licenses/>.
 
 
-%
-% also show in other configuration wrt staff lines.
-%
-def draw_shifted_too =
-if test > 0:
-       fet_beginchar ("shifted too", "");
-               set_char_box (0, 0, 0, 0);
-               currentpicture := remember_pic;
-
-               draw_staff (-2, 2, 0.5);
-       fet_endchar;
-fi;
-enddef;
-
-
 %
 % Accidentals from various sources, notably
 %
@@ -56,1266 +41,9 @@ enddef;
 
 
 fet_begingroup ("accidentals");
-
-%
-% Draw an arrow
-%
-% * `stemslant' gives the direction of the stem's left boundary
-%   (needed for brushed stems, equals "up" for straight stems)
-% * `extend' is used to make the stem longer or shorter (if negative);
-%   different kinds of accidentals need different values here
-%
-def draw_arrow (expr attach, stemwidth, stemslant, extend, pointingdown) =
-begingroup;
-       save htip;  % tip height
-       save wwing; % wing `radius'
-       save angle_wing_bot, angle_wing_top, angle_tip;
-       save upshift;
-       clearxy;
-
-       wwing := 0.26 stemwidth;
-       htip := staff_space * 0.85 + stafflinethickness - wwing;
-
-       % `flip' is used to reflect the arrow vertically
-       % if arrow points downward
-       transform flip;
-       if pointingdown:
-               flip = identity reflectedabout (origin, right);
-       else:
-               flip = identity;
-       fi;
-
-       z1 = attach shifted (-stemwidth / 2, 0);
-       upshift := max (0, wwing + 0.1 staff_space + extend);
-       z2 = z1 shifted (((unitvector stemslant)
-                         scaled upshift) transformed flip);
-
-       z7 = attach shifted ((stemwidth/2),0);
-       z6 = z7 shifted (((unitvector (-xpart stemslant, ypart stemslant))
-                         scaled upshift) transformed flip);
-       z2 - z3 = ( 0.38 staff_space, 0.05 htip) transformed flip;
-       z6 - z5 = (-0.38 staff_space, 0.05 htip) transformed flip;
-
-       z4 = attach shifted ((-0.2 stemwidth, upshift + htip)
-                            transformed flip);
-       z4'= attach shifted (( 0.2 stemwidth, upshift + htip)
-                            transformed flip);
-
-       % `angle_wing_bot' is the angle at which the arc
-       % from z2 to z3a enters z3a
-       % `angle_wing_top' is the angle at which the arc
-       % from z3b to z4 leaves z3b
-       % `angle_tip' is the angle at which the arc
-       % from z4 to z4' leaves z4
-       angle_wing_bot = 30;
-       angle_wing_top = 55;
-       angle_tip = 68;
-
-       z3a = z3 shifted ((((dir angle_wing_bot) rotated -90)
-                          scaled wwing) transformed flip);
-       z3b = z3 shifted ((((dir angle_wing_top) rotated 90)
-                          scaled wwing) transformed flip);
-
-       z5a = z5 shifted ((((dir (180 - angle_wing_bot)) rotated 90)
-                          scaled wwing) transformed flip);
-       z5b = z5 shifted ((((dir (180 - angle_wing_top)) rotated -90)
-                          scaled wwing) transformed flip);
-
-       % Draw the arrow
-       pickup pencircle scaled 1;
-       fill z1
-            -- z2{stemslant transformed flip}
-            .. {(-dir angle_wing_bot) transformed flip}z3a
-            .. z3b{(dir angle_wing_top) transformed flip}
-            .. z4{(dir angle_tip) transformed flip}
-            .. z4'{(dir (-angle_tip)) transformed flip}
-            .. {(dir (-angle_wing_top)) transformed flip}z5b
-            .. z5a{(-dir (-angle_wing_bot)) transformed flip}
-            .. z6{((-stemslant) reflectedabout (origin, up)) transformed flip}
-            -- z7
-            -- cycle;
-
-       labels (range 0 thru 7, 4', 3a, 3b, 5a, 5b);
-endgroup;
-enddef;
-
-save remember_pic;
-picture remember_pic;
-
-save sharp_beamheight;
-sharp_beamheight# := 0.3 staff_space# + stafflinethickness#;
-
-%
-% The beams of most sharps have horizontal endings (as if drawn with
-% a square pen).  [Wanske] does not mention this, so we'll just ignore
-% this fact.
-%
-
-def draw_meta_sharp (expr width, offset) =
-       save beamwidth, beamslope;
-       save ne, nw_dist;
-       pair ne, nw_dist;
-
-       beamwidth := width;
-
-       define_whole_vertical_blacker_pixels (sharp_beamheight);
-
-       clearxy;
-
-       beamslope = sharp_beamheight / beamwidth;
-
-       pickup pencircle scaled 2 blot_diameter;
-
-       rt x2 - lft x1 = beamwidth;
-       z2 = z1 + whatever * (beamwidth, sharp_beamheight);
-       .5 [z1, z3] = (.5 w, offset);
-       x3 = x2;
-       top y2 - bot y3 = sharp_beamheight;
-       x4 = x1;
-       top y1 - bot y4 = sharp_beamheight;
-
-       ne = unitvector (z2 - z1);
-       nw_dist = (ne rotated 90) * blot_diameter;
-
-       fill lft z1{up}
-            ... (z1 + nw_dist){ne}
-            -- (z2 + nw_dist){ne}
-            ... rt z2{down}
-            -- rt z3{down}
-            ... (z3 - nw_dist){-ne}
-            -- (z4 - nw_dist){-ne}
-            ... lft z4{up}
-            -- cycle;
-
-       labels (1, 2, 3, 4);
-enddef;
-
-
-def draw_sharp(expr arrowup, arrowdown) =
-       save stem, stemx, stemwidth;
-       save outer_space, interbeam;
-       save stemlength, extendleft, extendright, height, depth;
-
-       stemwidth# := stafflinethickness# + .05 staff_space#;
-       define_whole_blacker_pixels (stemwidth);
-
-       interbeam := 1.05 staff_space_rounded;
-
-       stemlength# := 1.5 staff_space#;
-       define_pixels (stemlength);
-
-       height# = stemlength#;
-       depth# = stemlength#;
-       extendright# = 0;
-       extendleft# = 0;
-       if arrowup:
-               height# := height# + 1.2 staff_space#;
-               extendright# := extendright# + 1.5 stafflinethickness#;
-       fi;
-       if arrowdown:
-               depth# := depth# + 1.2 staff_space#;
-               extendleft# := extendleft# + 1.5 stafflinethickness#;
-       fi;
-       define_pixels (extendleft, extendright);
-       set_char_box (extendleft#, 1.1 staff_space#, depth#, height#);
-
-       stem := 7 / 16 * w;
-       stemx := hround stem;
-       outer_space := hround ((w - stemx - stemwidth) / 2);
-
-       w := 2 outer_space + stemx + stemwidth;
-       d := d - feta_space_shift;
-
-       draw_meta_sharp (w, -.5 interbeam);
-       draw_meta_sharp (w, -.5 interbeam + vround interbeam);
-
-       % expand the charbox so that it encloses the whole arrow;
-       % this must not happen earlier because some commands above
-       % still rely on the old width
-       w := w + extendright;
-
-       pickup pencircle scaled stemwidth;
-
-       lft x5 = lft x6 = outer_space;
-       lft x7 = lft x8 = outer_space + stemx;
-       bot y5 = -stemlength;
-       top y6 = vround (1.5 staff_space - stem * beamslope);
-       bot y7 = -top y6 + feta_space_shift;
-       top y8 = stemlength;
-
-       labels (5, 6, 7, 8);
-
-       draw_gridline (z5, z6, stemwidth);
-       draw_gridline (z7, z8, stemwidth);
-
-       if arrowup:
-               draw_arrow (z8, stemwidth, up,
-                           stafflinethickness / 2 + stemwidth / 2, false);
-       fi;
-       if arrowdown:
-               draw_arrow (z5, stemwidth, up,
-                           stafflinethickness / 2 + stemwidth / 2, true);
-       fi;
-
-       remember_pic := currentpicture;
-
-       draw_staff (-2, 2, 0);
-enddef;
-
-
-fet_beginchar ("Sharp", "sharp");
-       draw_sharp (false, false);
-fet_endchar;
-
-
-draw_shifted_too;
-
-
-fet_beginchar ("Arrowed Sharp (arrow up)", "sharp.arrowup");
-       draw_sharp (true, false);
-fet_endchar;
-
-
-draw_shifted_too;
-
-
-fet_beginchar ("Arrowed Sharp (arrow down)", "sharp.arrowdown");
-       draw_sharp (false, true);
-fet_endchar;
-
-
-draw_shifted_too;
-
-
-fet_beginchar ("Arrowed Sharp (arrows up and down)", "sharp.arrowboth");
-       draw_sharp (true, true);
-fet_endchar;
-
-
-draw_shifted_too;
-
-
-fet_beginchar ("1/2 Sharp", "sharp.slashslash.stem");
-       save stem, stemwidth;
-       save outer_space, interbeam;
-
-       stemwidth# := stafflinethickness# + .05 staff_space#;
-       define_whole_blacker_pixels (stemwidth);
-
-       interbeam := 1.05 staff_space_rounded;
-
-       set_char_box (0, 0.7 staff_space#,
-                     1.5 staff_space#, 1.5 staff_space#);
-
-       stem := 7 / 16 * w;
-       outer_space := hround ((w - stemwidth) / 2);
-
-       w := 2 outer_space + stemwidth;
-       d := d - feta_space_shift;
-
-       draw_meta_sharp (w, -.5 interbeam);
-       draw_meta_sharp (w, -.5 interbeam + vround interbeam);
-
-       pickup pencircle scaled stemwidth;
-
-       lft x5 = lft x6 = outer_space;
-       top y6 = vround (1.5 staff_space - .5 stem);
-       bot y5 = -top y6 + feta_space_shift;
-
-       labels (5, 6);
-
-       draw_gridline (z5, z6, stemwidth);
-
-       remember_pic := currentpicture;
-
-       draw_staff (-2, 2, 0);
-fet_endchar;
-
-
-draw_shifted_too;
-
-
-fet_beginchar ("Sharp (3 beams)", "sharp.slashslashslash.stemstem");
-       save stem, stemx, stemwidth;
-       save outer_space, interbeam;
-       save sharp_beamheight;
-
-       sharp_beamheight# := 0.22 staff_space# + stafflinethickness#;
-
-       stemwidth# := stafflinethickness# + .05 staff_space#;
-       define_whole_blacker_pixels (stemwidth);
-
-       interbeam := 1.2 staff_space_rounded;
-
-       set_char_box (0, 1.1 staff_space#,
-                     1.5 staff_space#, 1.5 staff_space#);
-
-       stem := 7 / 16 * w;
-       stemx := hround stem;
-       outer_space := hround ((w - stemx - stemwidth) / 2);
-
-       w := 2 outer_space + stemx + stemwidth;
-       d := d - feta_space_shift;
-
-       draw_meta_sharp (.88 w, -.5 interbeam);
-       draw_meta_sharp (.88 w, -.5 interbeam + vround interbeam);
-       sharp_beamheight# := 1/.88 sharp_beamheight#;
-       draw_meta_sharp (w, 0);
-
-       pickup pencircle scaled stemwidth;
-
-       lft x5 = lft x6 = outer_space;
-       lft x7 = lft x8 = outer_space + stemx;
-       bot y5 = -d;
-       top y6 = vround (1.5 staff_space - stem * beamslope);
-       bot y7 = -top y6 + feta_space_shift;
-       top y8 = h;
-
-       labels (5, 6, 7, 8);
-
-       draw_gridline (z5, z6, stemwidth);
-       draw_gridline (z7, z8, stemwidth);
-
-       remember_pic := currentpicture;
-
-       draw_staff (-2, 2, 0);
-fet_endchar;
-
-
-draw_shifted_too;
-
-
-fet_beginchar ("1/2 Sharp (3 beams)", "sharp.slashslashslash.stem");
-       save stem, stemx, stemwidth;
-       save outer_space, interbeam;
-       save sharp_beamheight;
-
-       sharp_beamheight# := 0.22 staff_space# + stafflinethickness#;
-
-       stemwidth# := stafflinethickness# + .05 staff_space#;
-       define_whole_blacker_pixels (stemwidth);
-
-       interbeam := 1.2 staff_space_rounded;
-
-       set_char_box (0, 0.95 staff_space#,
-                     1.3 staff_space#, 1.3 staff_space#);
-
-       stem := 7 / 16 * w;
-       outer_space := hround ((w - stemwidth) / 2);
-
-       w := 2 outer_space + stemwidth;
-       d := d - feta_space_shift;
-
-       draw_meta_sharp (.8 w, -.5 interbeam);
-       draw_meta_sharp (.8 w, -.5 interbeam + vround interbeam);
-       sharp_beamheight# := 1/.8 sharp_beamheight#;
-       draw_meta_sharp (w, 0);
-
-       pickup pencircle scaled stemwidth;
-
-       lft x5 = lft x6 = outer_space;
-       top y6 = vround (1.5 staff_space - .5 stem);
-       bot y5 = -top y6 + feta_space_shift;
-       labels (5, 6);
-
-       draw_gridline (z5, z6, stemwidth);
-
-       remember_pic := currentpicture;
-
-       draw_staff (-2, 2, 0);
-fet_endchar;
-
-
-draw_shifted_too;
-
-
-fet_beginchar ("3/4 Sharp", "sharp.slashslash.stemstemstem");
-       save stem, stemx, stemwidth;
-       save outer_space, interbeam;
-
-       stemwidth# := stafflinethickness# + .05 staff_space#;
-       define_whole_blacker_pixels (stemwidth);
-
-       interbeam := 1.05 staff_space_rounded;
-
-       set_char_box (0, 1.6 staff_space#,
-                     1.5 staff_space#, 1.5 staff_space#);
-
-       stem := 9 / 32 * w;
-       stemx := hround stem;
-       outer_space := hround ((w - 2 stemx - stemwidth) / 2);
-
-       w := 2 outer_space + 2 stemx + stemwidth;
-       d := d - feta_space_shift;
-
-       draw_meta_sharp (w, -.5 interbeam);
-       draw_meta_sharp (w, -.5 interbeam + vround interbeam);
-
-       pickup pencircle scaled stemwidth;
-
-       lft x5 = lft x6 = outer_space;
-       lft x7 = lft x8 = outer_space + stemx;
-       lft x9 = lft x10 = outer_space + 2 stemx;
-       bot y5 = -d;
-       top y6 = vround (1.5 staff_space - 2 stem * beamslope);
-       bot y9 = -top y6 + feta_space_shift;
-       top y10 = h;
-       y7 = .5 [y5, y9];
-       y8 = .5 [y6, y10];
-
-       labels (5, 6, 7, 8, 9, 10);
-
-       draw_gridline (z5, z6, stemwidth);
-       draw_gridline (z7, z8, stemwidth);
-       draw_gridline (z9, z10, stemwidth);
-
-       remember_pic := currentpicture;
-
-       draw_staff (-2, 2, 0);
-fet_endchar;
-
-
-draw_shifted_too;
-
-
-%
-% The stems of the natural are brushed (at least, in Barenreiter SCS)
-%
-
-def draw_natural (expr arrowup, arrowdown) =
-       save stemwidth, top_stem_thick;
-       save ne, pat_top, pat_bottom;
-       save depth, height, extendleft, extendright, stemlength;
-       save brush_scale_up, brush_scale_down;
-       pair ne;
-       path pat_top, pat_bottom;
-
-       top_stem_thick# = stafflinethickness# + .10 staff_space#;
-       stemwidth# = 0.09 staff_space# + .5 stafflinethickness#;
-       define_whole_blacker_pixels (top_stem_thick, stemwidth);
-
-       stemlength# = 1.5 staff_space#;
-       define_pixels (stemlength);
-
-       height# = stemlength#;
-       depth# = stemlength#;
-       extendleft# = 0;
-       extendright# = 0;
-       if arrowup:
-               extendleft# := 3 stafflinethickness#;
-               height# := height# + 1.2 staff_space#;
-       fi;
-       if arrowdown:
-               extendright# := 3.15 stafflinethickness#;
-               depth# := depth# + 1.2 staff_space#;
-       fi;
-       define_pixels (extendright);
-
-       set_char_box (extendleft#, 2/3 staff_space#, depth#, height#);
-
-       d := d - feta_space_shift;
-
-       pickup pencircle scaled stemwidth;
-
-       brush_scale_up := 1.0;
-       brush_scale_down := 1.0;
-       % to look nice, arrowed stems must be less brushed
-       if arrowup:
-               brush_scale_up := 0.85;
-       fi;
-       if arrowdown:
-               brush_scale_down := 0.85;
-       fi;
-
-       penpos1 (top_stem_thick, 0);
-       penpos3 (top_stem_thick, 0);
-       penpos2 (stemwidth, 0);
-       penpos4 (stemwidth, 0);
-       % z1' and z3' are needed for the arrowed accidentals
-       penpos1' (top_stem_thick * brush_scale_up, 0);
-       penpos3' (top_stem_thick * brush_scale_down, 0);
-
-       x2r = w;
-       x4l = 0;
-       x3 = x3' = x2;
-       x1 = x1' = x4;
-
-       y1 = y1' = stemlength;
-       y3 = y3' = -stemlength;
-       top y2 = vround (staff_space - 3/2 stafflinethickness);
-       y4 = -y2 + feta_space_shift;
-
-       pat_bottom := z4r{z4r - z1r}
-                     .. bot z4
-                     .. z4l{z1l - z4l};
-       fill simple_serif (z1'l, z1'r, -30)
-            -- pat_bottom
-            -- cycle;
-
-       pat_top := z2r{z2r - z3r}
-                  .. top z2
-                  .. z2l{z3l - z2l};
-       fill simple_serif (z3'l, z3'r, 30)
-            -- pat_top
-            -- cycle;
-
-       ne = (x2 - x4, stafflinethickness);
-
-       z11' = z3l + whatever * (z2l - z3l);
-       y11' = vround (.5 (staff_space - stafflinethickness));
-       z11 = z11' + whatever * ne;
-       x11 = x12;
-       z12 = directionpoint -ne of pat_top;
-       z13 = z12 + whatever * ne;
-       x13 = x1;
-       z14 = z11 + whatever * ne;
-       x14 = x1;
-
-       z21' = z4r + whatever * (z1r - z4r);
-       y21' = -y11' + feta_space_shift;
-       z21 = z21' + whatever * ne;
-       x21 = x22;
-       z22 = directionpoint -ne of pat_bottom;
-       z23 = z22 + whatever * ne;
-       x23 = x3;
-       z24 = z21 + whatever * ne;
-       x24 = x3;
-
-       fill z11
-            -- z12
-            -- z13
-            -- z14
-            -- cycle;
-       fill z21
-            -- z22
-            -- z23
-            -- z24
-            -- cycle;
-
-       penlabels (1, 1', 2, 3, 3', 4);
-       labels (11, 11', 12, 13, 14, 21, 21', 22, 23, 24);
-
-       if arrowup:
-               draw_arrow (z1, top_stem_thick * brush_scale_up,
-                           z1'l - z4l, stafflinethickness / 2, false);
-       fi;
-       if arrowdown:
-               draw_arrow (z3, top_stem_thick * brush_scale_down,
-                           z2r - z3'r, stafflinethickness / 2, true);
-               w := w + extendright;
-       fi;
-
-       remember_pic := currentpicture;
-
-       draw_staff (-2, 2, 0);
-enddef;
-
-
-fet_beginchar ("Natural", "natural");
-       draw_natural (false, false);
-fet_endchar;
-
-
-draw_shifted_too;
-
-
-fet_beginchar ("Arrowed Natural (arrow up)", "natural.arrowup");
-       draw_natural (true, false);
-fet_endchar;
-
-
-draw_shifted_too;
-
-
-fet_beginchar ("Arrowed Natural (arrow down)", "natural.arrowdown");
-       draw_natural (false, true);
-fet_endchar;
-
-
-draw_shifted_too;
-
-
-fet_beginchar ("Arrowed Natural (arrows up and down)", "natural.arrowboth");
-       draw_natural (true, true);
-fet_endchar;
-
-
-draw_shifted_too;
-
-
-%
-% Dedicated to my mom.    (3/10/97)
-%
-% Mamma, ik hou van je; kom je alsjeblieft terug?
-%    -- HW
-%
-%
-% TODO: remove crook_fatness
-% TODO: document, simplify!
-%
-
-def draw_meta_flat (expr xcenter, w, crook_fatness, arrowup, arrowdown) =
-       save crook_thinness;
-       save bottom_overshoot, bot_crook_dir;
-       save top_stem_thick, top_stem_thick_orig;
-       save bottom_stem_thick, hair, smaller_hole;
-       save top_crook_thinness;
-       save zwiep;
-       save center;
-       pair center, bot_crook_dir;
-       save clearing, clearing_orig;
-
-       clearxy;
-
-       % the stem shouldn't reach the top staff line.
-       %% TODO: should take from height.
-       %
-       % TODO: parameterize this
-       %
-       if w >= 0.75 staff_space:
-               smaller_hole = 0.35 stafflinethickness;
-       else:
-               smaller_hole = 0;
-       fi;
-       crook_thinness = .7 stafflinethickness + .06 staff_space;
-       top_crook_thinness = 1 stafflinethickness + .065 staff_space;
-       clearing = 1.7 stafflinethickness;
-       clearing_orig = clearing;
-       if arrowup:
-               clearing := 0.5 staff_space;
-       fi;
-       bottom_overshoot = stafflinethickness;
-
-       bottom_stem_thick# = 0.06 staff_space# + 0.6 stafflinethickness#;
-       top_stem_thick# = 0.1 staff_space# + 1.2 stafflinethickness#;
-       top_stem_thick_orig# = top_stem_thick#;
-       if arrowup:
-               % to look nice, arrowed stems should be less brushed
-               top_stem_thick# := top_stem_thick# * 0.8;
-       fi;
-       define_whole_blacker_pixels (bottom_stem_thick, top_stem_thick,
-                                    top_stem_thick_orig);
-
-       if odd (top_stem_thick - bottom_stem_thick):
-               top_stem_thick := top_stem_thick - 1;
-       fi;
-       if odd (top_stem_thick_orig - bottom_stem_thick):
-               top_stem_thick_orig := top_stem_thick_orig - 1;
-       fi;
-
-       center = (xcenter, 0);
-
-       x1l = hround (xcenter - .5 top_stem_thick);
-       y1 = vround (2 staff_space - clearing);
-       x2l = hround (xcenter - .5 bottom_stem_thick);
-       y2 = -.5 staff_space - .5 stafflinethickness;
-       % z16 and the `*_orig' variables are needed for arrowed accidentals
-       % because their inner part should be unchanged from plain ones but
-       % the points z3l, z3r, and z10 depend on values that are different
-       % for arrowed accidentals
-       x16l = hround (xcenter -.5 top_stem_thick_orig);
-       y16 = vround (2 staff_space - clearing_orig);
-
-       penpos1 (top_stem_thick, 0);
-       penpos16 (top_stem_thick_orig, 0);
-       penpos2 (bottom_stem_thick, 0);
-
-       y3l = vfloor ((staff_space - stafflinethickness) / 2);
-       z3l = whatever [z2r, z1r];
-       z3r = .3 [z2r,
-                 (z16r shifted (0, clearing_orig - 1.7 stafflinethickness))]
-             + (smaller_hole, 0);
-       x3r := hceiling x3r;
-
-       % we insert z3l to get better conversion with mf2pt1
-       fill simple_serif (z1r, z1l, 30)
-            -- z2l
-            -- z2r
-            -- z3l
-            -- cycle;
-
-       z10 = whatever [z2r, z16r] + (smaller_hole, 0);
-       y10 = -1/10 staff_space;
-       x10 := hceiling x10;
-
-       x11 = xcenter + bottom_overshoot / 3;
-       y11 = -vround (.5 (staff_space + stafflinethickness)
-                      + bottom_overshoot);
-
-       x2a = 0.2[x2r, x7];
-       y2a = 1.5[y2, y11];
-
-       penpos4 (whatever, 53);
-
-       y4l - y4r = top_crook_thinness;
-       y5r = .15 staff_space;
-       x5l = hround (w + xcenter);
-       y4 = staff_space / 2;
-       x4r = .45 [x5r, x3r];
-       y4l := vround y4l;
-
-       penpos5 (crook_fatness, -175);
-
-       bot_crook_dir = unitvector ((x5l, 0) - z11);
-       z8 = z11 + whatever * bot_crook_dir;
-       y8 = -staff_space / 2;
-
-       z7 = z8
-            + whatever * bot_crook_dir
-            + crook_thinness * (bot_crook_dir rotated 90);
-       x7 = .1 [x3r, x8];
-
-       unfill z3r{z3r - z10}
-              .. z4r{right}
-              .. z5r{down}
-              .. z7{-bot_crook_dir}
-              & z7
-              .. z10{z3r - z10}
-              -- cycle;
-
-       if arrowdown:
-               fill z2l{down}
-                    .. z2a{up}
-                    .. z8{bot_crook_dir}
-                    .. z5l{up}
-                    .. z4l{left}
-                    .. z3l
-                    -- cycle;
-       else:
-               fill z2l{down}
-                    .. z11{right}
-                    .. z8{bot_crook_dir}
-                    .. z5l{up}
-                    .. z4l{left}
-                    .. z3l
-                    -- cycle;
-       fi;
-
-       if arrowup:
-               draw_arrow (z1, top_stem_thick, z1l - z2l,
-                           0.5 stafflinethickness, false);
-       fi;
-       if arrowdown:
-               draw_arrow ((0.5 [x2l, x2a], y2), x2a - x2l, up,
-                           staff_space / 2, true);
-       fi;
-enddef;
-
-
-def draw_arrowed_meta_flat (expr xcenter, width, crook_fatness,
-                                arrowup, arrowdown) =
-       save depth, height, extendleft;
-
-       depth# = 0.6 staff_space#;
-       height# = 1.9 staff_space#;
-       extendleft# := 1.2 stafflinethickness#;
-       if arrowup:
-               extendleft# := 3.45 stafflinethickness#;
-               height# := height# + 0.8 staff_space#;
-       fi;
-       if arrowdown:
-               extendleft# := 3.45 stafflinethickness#;
-               depth# := depth# + 1.6 staff_space#;
-       fi;
-
-       set_char_box (extendleft#, width, depth#, height#);
-       draw_meta_flat(xcenter, w, crook_fatness, arrowup, arrowdown);
-enddef;
-
-%
-% unfortunately, 600dpi is not enough to show the brush of the stem.
-%
-
-fet_beginchar ("Flat", "flat");
-       draw_arrowed_meta_flat (0, 0.8 staff_space#, 0.31 staff_space,
-                               false, false);
-       penlabels (range 0 thru 11);
-
-       remember_pic := currentpicture;
-
-       draw_staff (-2, 2, 0);
-fet_endchar;
-
-
-draw_shifted_too;
-
-
-fet_beginchar ("Arrowed Flat (arrow up)", "flat.arrowup");
-       draw_arrowed_meta_flat (0, 0.8 staff_space#, 0.31 staff_space,
-                               true, false);
-       penlabels (range 0 thru 23);
-
-       remember_pic := currentpicture;
-
-       draw_staff (-2, 2, 0);
-fet_endchar;
-
-
-draw_shifted_too;
-
-
-fet_beginchar ("Arrowed Flat (arrow down)", "flat.arrowdown");
-       draw_arrowed_meta_flat (0, 0.8 staff_space#, 0.31 staff_space,
-                               false, true);
-       penlabels (range 0 thru 23);
-
-       remember_pic := currentpicture;
-
-       draw_staff (-2, 2, 0);
-fet_endchar;
-
-
-draw_shifted_too;
-
-
-fet_beginchar ("Arrowed Flat (arrow up and down)", "flat.arrowboth");
-       draw_arrowed_meta_flat (0, 0.8 staff_space#, 0.31 staff_space,
-                               true, true);
-       penlabels (range 0 thru 23);
-
-       remember_pic := currentpicture;
-
-       draw_staff (-2, 2, 0);
-fet_endchar;
-
-
-draw_shifted_too;
-
-
-fet_beginchar ("Flat (slashed)", "flat.slash");
-       set_char_box (.4 staff_space#, .8 staff_space#,
-                     0.6 staff_space#, 1.9 staff_space#);
-
-       draw_meta_flat (0, w, 0.31 staff_space, false, false);
-
-       clearxy;
-
-       save slope, slash_width;
-       slope = 0.5;
-       slash_width = w;
-
-       z11 = (0, h / 2);
-       z12 = z11 - (slash_width, slash_width * slope) / 2;
-       z13 = z11 + (slash_width, slash_width * slope) / 2;
-       penpos12 (1.5 stafflinethickness, angle (z13 - z12) - 90);
-       penpos13 (1.5 stafflinethickness, angle (z13 - z12) - 90);
-
-       z14 = z12 - .75 stafflinethickness * unitvector (z13 - z12);
-       z15 = z13 + .75 stafflinethickness * unitvector (z13 - z12);
-
-       fill z13r
-            .. z15
-            .. z13l
-            -- z12l
-            .. z14
-            .. z12r
-            -- z13r
-            .. cycle;
-
-       penlabels (12, 13);
-       labels (14, 15);
-
-       remember_pic := currentpicture;
-
-       draw_staff (-2, 2, 0);
-fet_endchar;
-
-
-fet_beginchar ("Flat (slashed twice)", "flat.slashslash");
-       set_char_box (.4 staff_space#, .8 staff_space#,
-                     0.6 staff_space#, 1.9 staff_space#);
-
-       draw_meta_flat (0, w, 0.31 staff_space, false, false);
-
-       clearxy;
-
-       save slope, slash_width;
-       slope = 0.5;
-       slash_width = w;
-
-       z11 = (0, 5/12 h);
-       z12 = z11 - (slash_width, slash_width * slope) / 2;
-       z13 = z11 + (slash_width, slash_width * slope) / 2;
-       penpos12 (1.5 stafflinethickness, angle (z13 - z12) - 90);
-       penpos13 (1.5 stafflinethickness, angle (z13 - z12) - 90);
-
-       z14 = z12 - .75 stafflinethickness * unitvector (z13 - z12);
-       z15 = z13 + .75 stafflinethickness * unitvector (z13 - z12);
-
-       fill z13r
-            .. z15
-            .. z13l
-            -- z12l
-            .. z14
-            .. z12r
-            -- z13r
-            .. cycle;
-
-       penlabels (12, 13);
-       labels (14, 15);
-
-       z21 = (0, 2/3 h);
-       z22 = z21 - (slash_width, slash_width * slope) / 2;
-       z23 = z21 + (slash_width, slash_width * slope) / 2;
-       penpos22 (1.5 stafflinethickness, angle (z23 - z22) - 90);
-       penpos23 (1.5 stafflinethickness, angle (z23 - z22) - 90);
-
-       z24 = z22 - .75 stafflinethickness * unitvector (z23 - z22);
-       z25 = z23 + .75 stafflinethickness * unitvector (z23 - z22);
-
-       fill z23r
-            .. z25
-            .. z23l
-            -- z22l
-            .. z24
-            .. z22r
-            -- z23r
-            .. cycle;
-
-       penlabels (22, 23);
-       labels (24, 25);
-
-       remember_pic := currentpicture;
-
-       draw_staff (-2, 2, 0);
-fet_endchar;
-
-
-fet_beginchar ("Flatflat (mirrored)", "mirroredflat.flat");
-       set_char_box (0, 1.6 staff_space#,
-                     0.6 staff_space#, 1.9 staff_space#);
-
-       % This is a modified version of `draw_meta_flat'.
-
-       save crook_thinness, crook_fatness;
-       save bottom_overshoot, bot_crook_dir;
-       save top_stem_thick, bottom_stem_thick, hair, smaller_hole;
-       save top_crook_thinness;
-       save zwiep;
-       save center;
-       pair center, bot_crook_dir;
-       save clearing, wid;
-       save pat;
-       path pat;
-
-       clearxy;
-
-       wid = w / 2;
-
-       % the stem shouldn't reach the top staff line.
-       %% TODO: should take from height.
-       %
-       % TODO: parameterize this
-       %
-       if wid >= 0.75 staff_space:
-               smaller_hole = 0.35 stafflinethickness;
-       else:
-               smaller_hole = 0;
-       fi;
-       clearing = 1.7 stafflinethickness;
-       crook_thinness = .7 stafflinethickness + .06 staff_space;
-       crook_fatness = 0.31 staff_space;
-       top_crook_thinness = 1 stafflinethickness + .065 staff_space;
-       bottom_overshoot = stafflinethickness;
-
-       bottom_stem_thick# = 0.06 staff_space# + 0.6 stafflinethickness#;
-       top_stem_thick# = 0.1 staff_space# + 1.2 stafflinethickness#;
-       define_whole_blacker_pixels (bottom_stem_thick, top_stem_thick);
-
-       if odd (top_stem_thick - bottom_stem_thick):
-               top_stem_thick := top_stem_thick - 1;
-       fi;
-
-       center = (0, 0);
-
-       x1l = hround (-.5 top_stem_thick);
-       y1 = vround (2 staff_space - clearing);
-       x2l = hround (-.5 bottom_stem_thick);
-       y2 = -.5 staff_space - .5 stafflinethickness;
-
-       penpos1 (top_stem_thick, 0);
-       penpos2 (bottom_stem_thick, 0);
-
-       y3l = vfloor ((staff_space - stafflinethickness) / 2);
-       z3l = whatever [z2r, z1r];
-       z3r = .3 [z2r, z1r] + (smaller_hole, 0);
-       x3r := hceiling x3r;
-
-       z10 = whatever [z2r, z1r] + (smaller_hole, 0);
-       y10 = -1/10 staff_space;
-       x10 := hceiling x10;
-
-       x11 = bottom_overshoot / 3;
-       y11 = -vround (.5 (staff_space + stafflinethickness)
-                      + bottom_overshoot);
-
-       penpos4 (whatever, 53);
-
-       y4l - y4r = top_crook_thinness;
-       y5r = .15 staff_space;
-       x5l = hround (wid);
-       y4 = staff_space / 2;
-       x4r = .45 [x5r, x3r];
-       y4l := vround y4l;
-
-       penpos5 (crook_fatness, -175);
-
-       bot_crook_dir = unitvector ((x5l, 0) - z11);
-       z8 = z11 + whatever * bot_crook_dir;
-       y8 = -staff_space / 2;
-
-       z7 = z8
-            + whatever * bot_crook_dir
-            + crook_thinness * (bot_crook_dir rotated 90);
-       x7 = .1 [x3r, x8];
-
-       pat := z3r{z3r - z10}
-              .. z4r{right}
-              .. z5r{down}
-              .. z7{-bot_crook_dir}
-              & z7
-              .. z10{z3r - z10}
-              -- cycle;
-       unfill pat;
-       unfill pat xscaled -1;
-
-       pat := z11{right}
-              .. z8{bot_crook_dir}
-              .. z5l{up}
-              .. z4l{left}
-              .. z3l;
-       fill pat
-            -- simple_serif (z1r, z1l, 30)
-            -- reverse pat xscaled -1 shifted (-feta_eps, 0)
-            -- cycle;
-
-       currentpicture := currentpicture shifted (w/2, 0);
-
-       remember_pic := currentpicture;
-
-       draw_staff (-2, 2, 0);
-fet_endchar;
-
-
-draw_shifted_too;
-
-
-fet_beginchar ("Semi flat", "mirroredflat");
-       set_char_box (1.2 stafflinethickness#, .8 staff_space#,
-                     0.6 staff_space#, 1.9 staff_space#);
-
-       draw_meta_flat (0, w, 0.31 staff_space, false, false);
-       currentpicture := currentpicture xscaled -1 shifted (w - b, 0);
-fet_endchar;
-
-
-fet_beginchar ("Semi flat", "mirroredflat.backslash");
-       set_char_box (.4 staff_space#, .8 staff_space#,
-                     0.6 staff_space#, 1.9 staff_space#);
-
-       draw_meta_flat (0, w, 0.31 staff_space, false, false);
-
-       clearxy;
-
-       save slope, slash_width;
-       slope = 0.5;
-       slash_width = w;
-
-       z11 = (0, h / 2);
-       z12 = z11 - (slash_width, slash_width * slope) / 2;
-       z13 = z11 + (slash_width, slash_width * slope) / 2;
-       penpos12 (1.5 stafflinethickness, angle (z13 - z12) - 90);
-       penpos13 (1.5 stafflinethickness, angle (z13 - z12) - 90);
-
-       z14 = z12 - .75 stafflinethickness * unitvector (z13 - z12);
-       z15 = z13 + .75 stafflinethickness * unitvector (z13 - z12);
-
-       fill z13r
-            .. z15
-            .. z13l
-            -- z12l
-            .. z14
-            .. z12r
-            -- z13r
-            .. cycle;
-
-       currentpicture := currentpicture xscaled -1 shifted (w - b, 0);
-
-       labels (1, 2, 3);
-fet_endchar;
-
-
-fet_beginchar ("Double Flat", "flatflat");
-       save left_wid, overlap, right_wid;
-
-       left_wid = .7;
-       right_wid = .8;
-       overlap = .05;
-
-       set_char_box (1.2 stafflinethickness#,
-                     (left_wid + right_wid - overlap) * staff_space#,
-                     .6 staff_space#, 1.9 staff_space#);
-       draw_meta_flat (0, left_wid * staff_space, 1/3 staff_space,
-                       false, false);
-       draw_meta_flat (hround ((left_wid - overlap) * staff_space),
-                       right_wid * staff_space, 1/3 staff_space,
-                       false, false);
-fet_endchar;
-
-
-fet_beginchar ("3/4 Flat", "flatflat.slash");
-       save left_wid, overlap, right_wid;
-
-       left_wid = .7;
-       right_wid = .8;
-       overlap = .05;
-
-       set_char_box (1.2 stafflinethickness#,
-                     (left_wid + right_wid - overlap) * staff_space#,
-                     .6 staff_space#, 1.9 staff_space#);
-       draw_meta_flat (0, left_wid * staff_space, 1/3 staff_space,
-                       false, false);
-       draw_meta_flat (hround ((left_wid - overlap) * staff_space),
-                       right_wid * staff_space, 1/3 staff_space,
-                       false, false);
-
-       %% maybe we should clip part of the stems?
-       %% or make the 1st flat smaller?
-       %% or reverse it?
-       pickup pencircle scaled 2 stafflinethickness;
-
-       z12 = round (-.25 w - b, .55 staff_space) + feta_offset;
-       z13 = round (.75 w, 1.45 staff_space) + feta_offset;
-       penpos12 (2 stafflinethickness, angle (z13 - z12) - 90);
-       penpos13 (2 stafflinethickness, angle (z13 - z12) - 90);
-
-       z14 = z12 - stafflinethickness * unitvector (z13 - z12);
-       z15 = z13 + stafflinethickness * unitvector (z13 - z12);
-
-       fill z13r
-            .. z15
-            .. z13l
-            -- z12l
-            .. z14
-            .. z12r
-            -- z13r
-            .. cycle;
-
-       penlabels (12, 13);
-       labels (14, 15);
-
-       remember_pic := currentpicture;
-
-       draw_staff (-2, 2, 0);
-fet_endchar;
-
-
-draw_shifted_too;
-
-
-fet_beginchar ("Double Sharp", "doublesharp");
-       save klaverblad, klaversteel;
-       save pat;
-       path pat;
-
-       klaversteel = 1/15 staff_space;
-       klaverblad = .4 staff_space - .5 stafflinethickness;
-
-       set_char_box (0, staff_space#, .5 staff_space#, .5 staff_space#);
-
-       z1 = (klaversteel, 0);
-       z2 = (w / 2 - klaverblad / 10, h - klaverblad);
-       z3 = (w / 2, h);
-       z4 = z2 reflectedabout ((0, 0), (1, 1));
-       z5 = z1 reflectedabout ((0, 0), (1, 1));
-
-       labels (1, 2, 3, 4, 5);
-
-       pickup pencircle scaled blot_diameter;
-
-       x2 := hfloor (rt x2) - blot_diameter / 2;
-       x3 := hfloor (rt x3) - blot_diameter / 2;
-       y3 := vfloor (top y3) - blot_diameter / 2;
-       y4 := vfloor (top y4) - blot_diameter / 2;
-
-       pat = (rt z1){dir45}
-             .. {right}(bot z2)
-             .. rt z2
-             -- rt z3{z3 - z2}
-             .. top z3{z4 - z3}
-             -- top z4{z4 - z3}
-             .. (lft z4){down}
-             .. {dir 225}(top z5);
-       pat := pat
-              -- reverse pat xscaled -1 shifted (-feta_eps, 0);
-
-       % assure symmetry -- it's more important to center the glyph on the
-       % staff line than centering it between staff lines, so we use
-       % feta_shift, not feta_space_shift.
-       h := h + feta_shift;
-
-       fill pat shifted (0, feta_shift)
-            -- reverse pat yscaled -1 shifted (0, -feta_eps)
-            -- cycle;
-
-       % ugh
-       currentpicture := currentpicture shifted (hround (w / 2), 0);
-
-       remember_pic := currentpicture;
-
-       draw_staff (-2, 2, 0);
-fet_endchar;
-
-
-draw_shifted_too;
-
-
-def draw_paren =
-       save leftindent;
-
-       leftindent := .2 staff_space;
-
-       set_char_box (0, .5 staff_space# + stafflinethickness#,
-                     staff_space#, staff_space#);
-
-       d := d - feta_shift;
-
-       z1 = (leftindent, h);
-       z2 = (w - stafflinethickness, .5 (h - d));
-       z3 = (leftindent, -d);
-
-       penpos1 (stafflinethickness, 35);
-       penpos2 (.1 staff_space + stafflinethickness, 0);
-       penpos3 (stafflinethickness, -35);
-
-       fill z2l{down}
-            .. simple_serif (z3l, z3r, 90)
-            .. z2r{up}
-            .. simple_serif (z1r, z1l, 90)
-            .. z2l{down}
-            -- cycle;
-enddef;
-
-
-fet_beginchar ("Right Parenthesis", "rightparen");
-       draw_paren;
-       penlabels (1, 2, 3);
-
-       remember_pic := currentpicture;
-
-       draw_staff (-2, 2, 0);
-fet_endchar;
-
-
-draw_shifted_too;
-
-
-fet_beginchar ("Left Parenthesis", "leftparen");
-       draw_paren;
-
-       currentpicture := currentpicture xscaled -1;
-
-       set_char_box (charwd, charbp, chardp, charht);
-fet_endchar;
-
+       input feta-arrow;
+       input feta-sharps;
+       input feta-naturals;
+       input feta-flats;
+       input feta-parenthesis;
 fet_endgroup ("accidentals");
index 68271bf995cd4db66d55d6729adb7e21303e4e0b..084092a30961145d03bcb9dc791c040e68ff3e1d 100644 (file)
@@ -1,7 +1,7 @@
 % Feta (not the Font-En-Tja) music font -- draw accordion symbols
 % This file is part of LilyPond, the GNU music typesetter.
 %
-% Copyright (C) 1998--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+% Copyright (C) 1998--2014 Han-Wen Nienhuys <hanwen@xs4all.nl>
 %
 % The LilyPond font is free software: you can redistribute it and/or modify
 % it under the terms of the GNU General Public License as published by
diff --git a/mf/feta-alphabet-generic.mf b/mf/feta-alphabet-generic.mf
new file mode 100644 (file)
index 0000000..6af776b
--- /dev/null
@@ -0,0 +1,19 @@
+% This file is part of LilyPond, the GNU music typesetter.
+%
+% Copyright (C) 1997--2014 Han-Wen Nienhuys <hanwen@xs4all.nl>
+%
+% The LilyPond font 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, or under the SIL Open Font License.
+
+
+input common-modules-and-initialization;
+
+fet_beginfont ("feta-alphabet", design_size, "fetaNumber");
+       number_design_size := design_size / 2;
+       dynamic_design_size := 14 design_size / 20;
+
+       input feta-numbers;
+       input feta-dynamics;
+fet_endfont ("feta-numbers");
diff --git a/mf/feta-alphabet.mf b/mf/feta-alphabet.mf
deleted file mode 100644 (file)
index 5663a79..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-test := 0;
-
-staffsize# := design_size * pt#;
-
-input feta-autometric;
-input feta-macros;
-input feta-params;
-
-fet_beginfont ("feta-alphabet", design_size, "fetaNumber");
-
-mode_setup;
-
-number_design_size := design_size / 2;
-dynamic_design_size := 14 design_size / 20;
-
-input feta-numbers;
-input feta-dynamics;
-
-fet_endfont ("feta-numbers");
index 04ba4e3867da755fd2ca04b8f1bf035e3506834b..c9e10df325746b626e298a1f086502a0842c540b 100644 (file)
@@ -1,6 +1,6 @@
-% part of LilyPond's pretty-but-neat music font
+% Produce font files at specified size.
 
 design_size := 11.22;
-input feta-alphabet;
+input feta-alphabet-generic;
 end.
 
index d314f40d4dc4934fa65c8ce94a1d83991e0b10ee..56924fb199f2b7039507bc5f1dd841a0e7bf0e64 100644 (file)
@@ -1,6 +1,6 @@
-% part of LilyPond's pretty-but-neat music font
+% Produce font files at specified size.
 
 design_size := 12.60;
-input feta-alphabet;
+input feta-alphabet-generic;
 end.
 
index 9a1bd2ee71b02de69e72408d2f6c3eb33d351f17..8db8b63da798ec4cb237facd179c8e5cb733933d 100644 (file)
@@ -1,6 +1,6 @@
-% part of LilyPond's pretty-but-neat music font
+% Produce font files at specified size.
 
 design_size := 14.14;
-input feta-alphabet;
+input feta-alphabet-generic;
 end.
 
index 86eb9c8c89e2bf7617fa7ec3cdacaac8a63dc27b..e93d0e61c0e87bf6bb6bf53fe4779689defb0aef 100644 (file)
@@ -1,6 +1,6 @@
-% part of LilyPond's pretty-but-neat music font
+% Produce font files at specified size.
 
 design_size := 15.87;
-input feta-alphabet;
+input feta-alphabet-generic;
 end.
 
index db216c154bc0cdb5bb88eee8b47c4dce522a8de9..30441bbd9b4ed1f98b71ebb9fd148cc0ebbea564 100644 (file)
@@ -1,6 +1,6 @@
-% part of LilyPond's pretty-but-neat music font
+% Produce font files at specified size.
 
 design_size := 17.82;
-input feta-alphabet;
+input feta-alphabet-generic;
 end.
 
index 0affe39057ae124685dc0c45554e31c7ac63d973..3d86449713fad9c43e9af067ee21748b820bf69f 100644 (file)
@@ -1,7 +1,6 @@
-% feta-alphabet20.mf
-% part of LilyPond's pretty-but-neat music font
+% Produce font files at specified size.
 
 design_size := 20;
-input feta-alphabet;
+input feta-alphabet-generic;
 end.
 
index c8a725e59e30726b0f2c611e09ff4c09ed7bd118..ffd3381ce4ff4601613dc83b280dd19b095086f7 100644 (file)
@@ -1,7 +1,6 @@
-% feta-alphabet23.mf
-% part of LilyPond's pretty-but-neat music font
+% Produce font files at specified size.
 
 design_size := 22.45;
-input feta-alphabet;
+input feta-alphabet-generic;
 end.
 
index 71af0403f986d7f76614192f48f5e56e09017b52..02170ec89d508128afc0184d77dcbf04b4112374 100644 (file)
@@ -1,6 +1,6 @@
-% part of LilyPond's pretty-but-neat music font
+% Produce font files at specified size.
 
 design_size := 25.20;
-input feta-alphabet;
+input feta-alphabet-generic;
 end.
 
diff --git a/mf/feta-arrow.mf b/mf/feta-arrow.mf
new file mode 100644 (file)
index 0000000..fab1bf1
--- /dev/null
@@ -0,0 +1,82 @@
+
+%
+% Draw an arrow
+%
+% * `stemslant' gives the direction of the stem's left boundary
+%   (needed for brushed stems, equals "up" for straight stems)
+% * `extend' is used to make the stem longer or shorter (if negative);
+%   different kinds of accidentals need different values here
+%
+def draw_arrow (expr attach, stemwidth, stemslant, extend, pointingdown) =
+begingroup;
+       save htip;  % tip height
+       save wwing; % wing `radius'
+       save angle_wing_bot, angle_wing_top, angle_tip;
+       save upshift;
+       clearxy;
+
+       wwing := 0.26 stemwidth;
+       htip := staff_space * 0.85 + stafflinethickness - wwing;
+
+       % `flip' is used to reflect the arrow vertically
+       % if arrow points downward
+       transform flip;
+       if pointingdown:
+               flip = identity reflectedabout (origin, right);
+       else:
+               flip = identity;
+       fi;
+
+       z1 = attach shifted (-stemwidth / 2, 0);
+       upshift := max (0, wwing + 0.1 staff_space + extend);
+       z2 = z1 shifted (((unitvector stemslant)
+                         scaled upshift) transformed flip);
+
+       z7 = attach shifted ((stemwidth/2),0);
+       z6 = z7 shifted (((unitvector (-xpart stemslant, ypart stemslant))
+                         scaled upshift) transformed flip);
+       z2 - z3 = ( 0.38 staff_space, 0.05 htip) transformed flip;
+       z6 - z5 = (-0.38 staff_space, 0.05 htip) transformed flip;
+
+       z4 = attach shifted ((-0.2 stemwidth, upshift + htip)
+                            transformed flip);
+       z4'= attach shifted (( 0.2 stemwidth, upshift + htip)
+                            transformed flip);
+
+       % `angle_wing_bot' is the angle at which the arc
+       % from z2 to z3a enters z3a
+       % `angle_wing_top' is the angle at which the arc
+       % from z3b to z4 leaves z3b
+       % `angle_tip' is the angle at which the arc
+       % from z4 to z4' leaves z4
+       angle_wing_bot = 30;
+       angle_wing_top = 55;
+       angle_tip = 68;
+
+       z3a = z3 shifted ((((dir angle_wing_bot) rotated -90)
+                          scaled wwing) transformed flip);
+       z3b = z3 shifted ((((dir angle_wing_top) rotated 90)
+                          scaled wwing) transformed flip);
+
+       z5a = z5 shifted ((((dir (180 - angle_wing_bot)) rotated 90)
+                          scaled wwing) transformed flip);
+       z5b = z5 shifted ((((dir (180 - angle_wing_top)) rotated -90)
+                          scaled wwing) transformed flip);
+
+       % Draw the arrow
+       pickup pencircle scaled 1;
+       fill z1
+            -- z2{stemslant transformed flip}
+            .. {(-dir angle_wing_bot) transformed flip}z3a
+            .. z3b{(dir angle_wing_top) transformed flip}
+            .. z4{(dir angle_tip) transformed flip}
+            .. z4'{(dir (-angle_tip)) transformed flip}
+            .. {(dir (-angle_wing_top)) transformed flip}z5b
+            .. z5a{(-dir (-angle_wing_bot)) transformed flip}
+            .. z6{((-stemslant) reflectedabout (origin, up)) transformed flip}
+            -- z7
+            -- cycle;
+
+       labels (range 0 thru 7, 4', 3a, 3b, 5a, 5b);
+endgroup;
+enddef;
index e20269218224053dcc8efdadcd4fe45691304e93..81100ead09fe371beaf68274349811c91a293ce4 100644 (file)
@@ -1,7 +1,7 @@
 % Feta (not the Font-En-Tja) music font -- draw arrow heads
 % This file is part of LilyPond, the GNU music typesetter.
 %
-% Copyright (C) 2005--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+% Copyright (C) 2005--2014 Han-Wen Nienhuys <hanwen@xs4all.nl>
 %
 % The LilyPond font is free software: you can redistribute it and/or modify
 % it under the terms of the GNU General Public License as published by
index e24f1605db2fe939ecf8bc36bb39b5e996be6bd4..7f7adc7d946cdce5e27ff3de689951d9ee4c7df3 100644 (file)
@@ -1,7 +1,7 @@
 % Feta (not the Font-En-Tja) music font -- administrative MF routines
 % This file is part of LilyPond, the GNU music typesetter.
 %
-% Copyright (C) 1997--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+% Copyright (C) 1997--2014 Han-Wen Nienhuys <hanwen@xs4all.nl>
 %          Jan Nieuwenhuizen <janneke@gnu.org>
 %
 % These macros help create ascii logging output
index 1210262421a478024ef6ba167df54407d850cce9..8cf00c4efeab992ccf2abcffd0c74569c65e4737 100644 (file)
@@ -1,22 +1,5 @@
 % Feta (not the Font-En-Tja) music font --  256 smallest braces
-% This file is part of LilyPond, the GNU music typesetter.
-%
-% Copyright (C) 1997--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
-% 
-%
-% The LilyPond font 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, or under the SIL Open Font License.
-%
-% 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/>.
 
 font_count := 0;
-input feta-braces;
+input feta-braces-generic;
 end.
index df91510af7355a3cbe1fa724bf372a4f56bf7bfd..c6a02a08e482e4ce9d1df3f4369551a8ef286232 100644 (file)
@@ -1,22 +1,5 @@
 % Feta (not the Font-En-Tja) music font --  next 256 braces
-% This file is part of LilyPond, the GNU music typesetter.
-%
-% Copyright (C) 1997--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
-% 
-%
-% The LilyPond font 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, or under the SIL Open Font License.
-%
-% 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/>.
 
 font_count := 1;
-input feta-braces;
+input feta-braces-generic;
 end.
index 87fc66047dfccba037f8b27548b7ed3147b39386..591065d303bb9754f7da7216017a97707b139e6c 100644 (file)
@@ -1,22 +1,5 @@
 % Feta (not the Font-En-Tja) music font --  next 256 braces
-% This file is part of LilyPond, the GNU music typesetter.
-%
-% Copyright (C) 1997--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
-% 
-%
-% The LilyPond font 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, or under the SIL Open Font License.
-%
-% 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/>.
 
 font_count := 2;
-input feta-braces;
+input feta-braces-generic;
 end.
index ffad571c0c3c943635a1d70286c4335a829d68d7..a2ef2510a3aab66521e67d0f151766cbb3d78d43 100644 (file)
@@ -1,22 +1,5 @@
 % Feta (not the Font-En-Tja) music font --  next 256 braces
-% This file is part of LilyPond, the GNU music typesetter.
-%
-% Copyright (C) 1997--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
-% 
-%
-% The LilyPond font 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, or under the SIL Open Font License.
-%
-% 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/>.
 
 font_count := 3;
-input feta-braces;
+input feta-braces-generic;
 end.
index a0b130bdada639107e7bd2cd250aa5dbfb0a8448..dfdb94fd7e2db7fa914010fca87ce9d6a89dd220 100644 (file)
@@ -1,22 +1,5 @@
 % Feta (not the Font-En-Tja) music font --  next 256 braces
-% This file is part of LilyPond, the GNU music typesetter.
-%
-% Copyright (C) 1997--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
-% 
-%
-% The LilyPond font 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, or under the SIL Open Font License.
-%
-% 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/>.
 
 font_count := 4;
-input feta-braces;
+input feta-braces-generic;
 end.
index ad31d2bcc8a2d392772f0d550271c72c4c4bccc3..866c5435398c7f1f63367fed943639beec53531e 100644 (file)
@@ -1,22 +1,5 @@
 % Feta (not the Font-En-Tja) music font --  next 256 braces
-% This file is part of LilyPond, the GNU music typesetter.
-%
-% Copyright (C) 1997--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
-% 
-%
-% The LilyPond font 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, or under the SIL Open Font License.
-%
-% 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/>.
 
 font_count := 5;
-input feta-braces;
+input feta-braces-generic;
 end.
index 545ca5a855b5ce4e97f5b1bb29249ea0347b0e3d..4347abe68829733518509621335434f0b5f3a51e 100644 (file)
@@ -1,22 +1,5 @@
 % Feta (not the Font-En-Tja) music font --  next 256 braces
-% This file is part of LilyPond, the GNU music typesetter.
-%
-% Copyright (C) 1997--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
-% 
-%
-% The LilyPond font 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, or under the SIL Open Font License.
-%
-% 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/>.
 
 font_count := 6;
-input feta-braces;
+input feta-braces-generic;
 end.
diff --git a/mf/feta-braces-generic.mf b/mf/feta-braces-generic.mf
new file mode 100644 (file)
index 0000000..cb3b1b4
--- /dev/null
@@ -0,0 +1,47 @@
+% This file is part of LilyPond, the GNU music typesetter.
+%
+% Copyright (C) 1997--2014 Han-Wen Nienhuys <hanwen@xs4all.nl>
+%                Jan Nieuwenhuizen <janneke@gnu.org>
+%
+% The LilyPond font 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, or under the SIL Open Font License.
+
+
+% We have to reduce the pixel-per-point value to
+% support large brace glyphs in case we are using MetaPost
+% (which by default sets `hppp' to 49.80244, regardless of
+% the used `mag' value)
+
+if known miterlimit:
+       bpppix_ := 0.2;         % ten times larger than original
+
+       numeric mm, pt, dd, bp, cm, pc, cc, in;
+
+       mm * bpppix_ = 2.83464;
+       pt * bpppix_ = 0.99626;
+       dd * bpppix_ = 1.06601;
+       bp * bpppix_ = 1;
+       cm * bpppix_ = 28.34645;
+       pc * bpppix_ = 11.95517;
+       cc * bpppix_ = 12.79213;
+       in * bpppix_ = 72;
+
+       hppp := pt;
+       vppp := pt;
+fi;
+
+design_size := 20;   %% arbitrary
+
+input common-modules-and-initialization;
+
+%
+% We must let the design increase for each font to make sure that mftrace
+% doesn't jack up the resolution too highly for the longer braces.
+%
+
+fet_beginfont ("feta-braces-" & char (97 + font_count),
+              (font_count + 1) * 20, "fetaBraces");
+       input feta-braces;
+fet_endfont ("feta-braces");
index 646e153106f1a8044f312a375b469237bee27c6f..dda3ce206983ee5777f8f3458f7206bb84cdc30e 100644 (file)
@@ -1,22 +1,5 @@
 % Feta (not the Font-En-Tja) music font --  next 256 braces
-% This file is part of LilyPond, the GNU music typesetter.
-%
-% Copyright (C) 1997--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
-% 
-%
-% The LilyPond font 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, or under the SIL Open Font License.
-%
-% 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/>.
 
 font_count := 7;
-input feta-braces;
+input feta-braces-generic;
 end.
index 0f3fcd35673df1281a2ddc7b0f5159d28a30bc26..29d519112b3f62d13fc6254809a4c1a0f678db00 100644 (file)
@@ -1,22 +1,5 @@
 % Feta (not the Font-En-Tja) music font --  next 256 braces
-% This file is part of LilyPond, the GNU music typesetter.
-%
-% Copyright (C) 1997--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
-% 
-%
-% The LilyPond font 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, or under the SIL Open Font License.
-%
-% 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/>.
 
 font_count := 8;
-input feta-braces;
+input feta-braces-generic;
 end.
index c948f345fd6e525fa0d221606b96a55f86dc99e9..5cec96670ea13c94fadfa71b0b25d0b13257b035 100644 (file)
@@ -1,7 +1,7 @@
 % Feta (not the Font-En-Tja) music font -- Staff braces
 % This file is part of LilyPond, the GNU music typesetter.
 %
-% Copyright (C) 1997--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+% Copyright (C) 1997--2014 Han-Wen Nienhuys <hanwen@xs4all.nl>
 %                Jan Nieuwenhuizen <janneke@gnu.org>
 %
 % The LilyPond font is free software: you can redistribute it and/or modify
 % You should have received a copy of the GNU General Public License
 % along with LilyPond.  If not, see <http://www.gnu.org/licenses/>.
 
-
-% We have to reduce the pixel-per-point value to
-% support large brace glyphs in case we are using MetaPost
-% (which by default sets `hppp' to 49.80244, regardless of
-% the used `mag' value)
-
-if known miterlimit:
-       bpppix_ := 0.2;         % ten times larger than original
-
-       numeric mm, pt, dd, bp, cm, pc, cc, in;
-
-       mm * bpppix_ = 2.83464;
-       pt * bpppix_ = 0.99626;
-       dd * bpppix_ = 1.06601;
-       bp * bpppix_ = 1;
-       cm * bpppix_ = 28.34645;
-       pc * bpppix_ = 11.95517;
-       cc * bpppix_ = 12.79213;
-       in * bpppix_ = 72;
-
-       hppp := pt;
-       vppp := pt;
-fi;
-
-
-input feta-autometric;
-input feta-macros;
-
-staffsize# := 20 pt#;   %% arbitrary
-
-input feta-params;
-
 %
 % We must let the design increase for each font to make sure that mftrace
 % doesn't jack up the resolution too highly for the longer braces.
 %
 
-fet_beginfont ("feta-braces-" & char (97 + font_count),
-              (font_count + 1) * 20, "fetaBraces");
-
-mode_setup;
-
-
 save code, braces_per_font;
 code := 64;
 braces_per_font := 64;
@@ -160,5 +122,3 @@ for i := 0 step 1 until font_count:
                number := number + 1;
        endfor;
 endfor;
-
-fet_endfont ("feta-braces");
index d3b29cab544fd8ff4caeb25e432445a666bca518..98928d7125dcbd19f33522bfae4bbbd71a373fbf 100644 (file)
@@ -1,7 +1,7 @@
 % Feta (not the Font-En-Tja) music font --  bracket tips -*-Fundamental-*-
 % This file is part of LilyPond, the GNU music typesetter.
 %
-% Copyright (C) 2005--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+% Copyright (C) 2005--2014 Han-Wen Nienhuys <hanwen@xs4all.nl>
 %
 % The LilyPond font is free software: you can redistribute it and/or modify
 % it under the terms of the GNU General Public License as published by
index d76b3414535e4403fc01f071dfb88fdbc81385cb..3c762d6ee45a387b14115ff56ff847527b4696a4 100644 (file)
@@ -1,7 +1,7 @@
 % Feta (not the Font-En-Tja) music font --  implement Clefs -*-Fundamental-*-
 % This file is part of LilyPond, the GNU music typesetter.
 %
-% Copyright (C) 1997--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>,
+% Copyright (C) 1997--2014 Han-Wen Nienhuys <hanwen@xs4all.nl>,
 % Jan Nieuwenhuizen <janneke@gnu.org>,
 % Juergen Reuter <reuter@ipd.uka.de>
 %
 
 fet_begingroup ("clefs");
 
+
+%
+% New bulb routine:
+%
+% Insert a brushed piece of the path, and draw the rest of the bulb
+% separately.
+%
+% The bulb has circular form.  Neat merging of the bulb and brushed path
+% is done by playing with tension.
+%
+
+def new_bulb (expr start_point, start_angle,
+             outer_tangent_point,
+             end_point, end_angle,
+             big_radius, bulb_radius, flare,
+             direction, turning_dir) =
+begingroup;
+       save pat, before, after;
+       save center;
+       save u, v;
+       path pat, before, after;
+       pair center;
+
+       clearxy;
+
+       center = outer_tangent_point
+                + big_radius * dir (0);
+%               + (big_radius - bulb_radius) * dir (-turning_dir * 90)
+
+       z1' = center + bulb_radius * dir (turning_dir * 180);
+       z2' = outer_tangent_point + flare * dir (0);
+       z3' = center + bulb_radius * dir (0);
+       z4' = center + bulb_radius * dir (turning_dir * 90);
+       z5' = center - 0.5 [big_radius, bulb_radius] * dir (turning_dir * 90);
+
+       labels (1', 2', 3', 4', 5');
+
+       before := z3'{dir (turning_dir * 90)}
+                 .. z4'{-dir (0)}
+                 ..tension 1.1.. z1'{-dir (turning_dir* 90)};
+       after := z2'{dir (turning_dir * 90)}
+                .. end_point{dir (end_angle)};
+       (u, v) = before intersectiontimes after;
+
+       pat := start_point{dir (start_angle)}
+              .. outer_tangent_point{dir (-turning_dir * 90)}
+              ..tension 1.02.. z5'{dir (0)}
+              .. subpath (0, u) of before
+              .. subpath (v, infinity) of after;
+
+       if direction = 0:
+               pat := reverse pat;
+       fi
+
+pat
+endgroup
+enddef;
+
+
 %
 % [Wanske] says the bulbs should be positioned about 1/4 right of the
 % `arrow'.
@@ -105,7 +164,7 @@ def draw_c_clef (expr reduction) =
 
        % ugh, should be bulb, not flare?
 
-       draw_staff (-2, 2, 0);
+       draw_staff_if_debugging (-2, 2);
 enddef;
 
 
@@ -118,65 +177,79 @@ fet_beginchar ("C clef", "C_change");
        draw_c_clef (.8);
 fet_endchar;
 
+def draw_varc_clef (expr reduction) =
+       save hair, norm, reduced_ss;
+       save thick, thin, upper_stroke;
 
-%
-% New bulb routine:
-%
-% Insert a brushed piece of the path, and draw the rest of the bulb
-% separately.
-%
-% The bulb has circular form.  Neat merging of the bulb and brushed path
-% is done by playing with tension.
-%
+       path upper_stroke;
 
-def new_bulb (expr start_point, start_angle,
-             outer_tangent_point,
-             end_point, end_angle,
-             big_radius, bulb_radius, flare,
-             direction, turning_dir) =
-begingroup;
-       save pat, before, after;
-       save center;
-       save u, v;
-       path pat, before, after;
-       pair center;
+       reduced_ss# = staff_space# * reduction;
+       norm# := 2/3 reduced_ss#;
+       hair# := 0.06 reduced_ss# + 0.5 linethickness#;
+       define_pixels (norm, reduced_ss);
+       define_whole_vertical_blacker_pixels (hair);
 
-       clearxy;
+       set_char_box (0, 2.25 reduced_ss#, 2 reduced_ss#, 2 reduced_ss#);
 
-       center = outer_tangent_point
-                + big_radius * dir (0);
-%               + (big_radius - bulb_radius) * dir (-turning_dir * 90)
+       % make unreduced glyph fit exactly into five staff lines
+       if reduction = 1:
+               h := d := 2 staff_space_rounded;
+       fi;
 
-       z1' = center + bulb_radius * dir (turning_dir * 180);
-       z2' = outer_tangent_point + flare * dir (0);
-       z3' = center + bulb_radius * dir (0);
-       z4' = center + bulb_radius * dir (turning_dir * 90);
-       z5' = center - 0.5 [big_radius, bulb_radius] * dir (turning_dir * 90);
+       % assure that the gap between the left and right stem
+       % has the same number of pixels as the thickness of the right
+       % stem
+       draw_block ((0, -d + feta_shift),
+                   (3/4 norm + 1/2 hair, h));
+       draw_block ((3/4 norm + 1/2 hair + hround (3/2 hair), -d + feta_shift),
+                   (3/4 norm + 1/2 hair + 2 hround (3/2 hair), h));
 
-       labels (1', 2', 3', 4', 5');
+       % assure symmetry
+       h := h - feta_shift;
 
-       before := z3'{dir (turning_dir * 90)}
-                 .. z4'{-dir (0)}
-                 ..tension 1.1.. z1'{-dir (turning_dir* 90)};
-       after := z2'{dir (turning_dir * 90)}
-                .. end_point{dir (end_angle)};
-       (u, v) = before intersectiontimes after;
+       thin := hround (3/2 hair);
+       thick := hround (3/4 norm);
 
-       pat := start_point{dir (start_angle)}
-              .. outer_tangent_point{dir (-turning_dir * 90)}
-              ..tension 1.02.. z5'{dir (0)}
-              .. subpath (0, u) of before
-              .. subpath (v, infinity) of after;
+       x1'' = x8'' = x6'' - reduced_ss = 3/4 norm + 1/2 hair + 1.5 hround (3/2 hair);
+       x7'' = x6'' - 1/2 hair;
+       % the thick part of the c clef should be placed in the
+       % center of the forth staff space
+       y1'' = y2'' = 0.5 reduced_ss + thick/2;
 
-       if direction = 0:
-               pat := reverse pat;
-       fi
+       y7'' = y8'' = y6'' - 1/2 hair = y1'' - thick;
 
-pat
-endgroup
+       x2'' = x3'' = x4'' = x6'' - thin;
+
+       y5'' = y3'' = y2'' + 0.6 reduced_ss;
+       x5'' = x6'';
+
+       y4'' = 2.25 reduced_ss;
+
+       upper_stroke := z1'' -- z2''
+                       -- new_bulb (z3'', 90, z4'', z5'', 270,
+                                    0.37 reduced_ss, 0.33 reduced_ss, thin, 1, -1)
+                       -- z6''{down} .. z7''{left}  -- z8'' -- cycle;
+
+       fill upper_stroke;
+       % the c clef parts should be symmetrical to the forth staff line
+       fill  upper_stroke yscaled -1;
+
+       penlabels (1'', 2'', 3'', 4'', 5'', 6'', 7'', 8'');
+
+       draw_staff_if_debugging (-2, 2);
 enddef;
 
 
+fet_beginchar ("Variant C clef", "varC");
+       draw_varc_clef (1.0);
+fet_endchar;
+
+
+fet_beginchar ("Variant C clef", "varC_change");
+       draw_varc_clef (0.8);
+fet_endchar;
+
+
 %
 % There is some variation in the shape of bass clefs.
 %
@@ -270,7 +343,7 @@ def draw_bass_clef (expr exact_center, reduction) =
 
        penlabels (1, 2, 3, 4, 5, 6);
 
-       draw_staff (-3, 1, 0);
+       draw_staff_if_debugging (-3, 1);
 enddef;
 
 
@@ -302,14 +375,15 @@ fet_endchar;
 
 def debugfill = fill enddef;
 
-def draw_gclef (expr reduction) =
-       save reduced_ss, downstroke_dir, downstroke_angle, center;
+def draw_gclef (expr reduction, double_shift, extra_width) =
+       save reduced_ss, double_shift_ss, extra_width_ss;
+       save downstroke_dir, downstroke_angle, center;
        save breapth_factor, inner_thick_end, thinness, thickness, thinnib;
        save start_angle, inner_start_angle;
        save upward_swoosh_angle, bot_angle;
-       save pat;
+       save swirl, bulb, pat;
        save corr_angle, corr, left_, right_, up_, down_, bot_angle_;
-       path pat;
+       path swirl, bulb, pat;
        pair downstroke_dir, center;
        transform corr;
        pair left_, right_, up_, down_;
@@ -337,7 +411,7 @@ def draw_gclef (expr reduction) =
 
        thinnib = thinness;
 
-       set_char_box (0, 1.71 * breapth_factor * reduced_ss#,
+       set_char_box (0, (1.71 * breapth_factor + double_shift + extra_width) * reduced_ss#,
                      2.55 * reduced_ss#, 4.8 * reduced_ss# / reduced_loop_correction);
 
        center := (breapth_factor * reduced_ss, 0);
@@ -447,24 +521,25 @@ def draw_gclef (expr reduction) =
               .. z110l{down}
               .. z110'l;
 
-       fill z102l{right}
-            .. z103l
-            .. z104l{left_}
-            ..tension 1.07.. z105l{up_}% inside curve
-            .. z107l{up_}
-            ..tension 1.2.. z120r{curl 1}
-            .. {direction 0 of pat}z120l
-            -- z108
-            -- z109r                   % {dir (downstroke_angle + 0)}
-            ..tension 0.8.. z107r{down_}
-            .. z105r{down_}
-            .. z104r{right_}
-            .. z103r
-            .. z102r{left_}
-            ..tension .95.. z101r
-            -- simple_serif (z101r, z101l, 80)
-            -- z101l
-            ..tension 0.85.. cycle;
+       swirl := z102l{right}
+                .. z103l
+                .. z104l{left_}
+                ..tension 1.07.. z105l{up_}% inside curve
+                .. z107l{up_}
+                ..tension 1.2.. z120r{curl 1}
+                .. {direction 0 of pat}z120l
+                -- z108
+                -- z109r                       % {dir (downstroke_angle + 0)}
+                ..tension 0.8.. z107r{down_}
+                .. z105r{down_}
+                .. z104r{right_}
+                .. z103r
+                .. z102r{left_}
+                ..tension .95.. z101r
+                -- simple_serif (z101r, z101l, 80)
+                -- z101l
+                ..tension 0.85.. cycle;
+       fill swirl;
 
        penstroke z121e
                  .. z110e{down_}
@@ -474,27 +549,120 @@ def draw_gclef (expr reduction) =
                  .. z111e{dir (-95 + corr_angle)}
                  .. z112e{dir (bot_angle_)};
 
-       fill new_bulb (z112r, bot_angle_, z113r, z112l, bot_angle_ + 180,
-                      0.45 reduced_ss, 0.38 reduced_ss,
-                      thinnib + .05 staff_space, 1, -1)
-            -- cycle;
+       bulb := new_bulb (z112r, bot_angle_, z113r, z112l, bot_angle_ + 180,
+                         0.45 reduced_ss, 0.38 reduced_ss,
+                         thinnib + .05 staff_space, 1, -1)
+               -- cycle;
+
+       fill bulb;
+
+       if double_shift <> 0:
+               addto currentpicture also
+                 currentpicture shifted (double_shift * reduced_ss, 0);
+       fi;
 
        penlabels (range 101 thru 121);
        penlabels (110', 111');
 
-       draw_staff (-1, 3, 0);
+       draw_staff_if_debugging (-1, 3);
 enddef;
 
 
 fet_beginchar ("G clef", "G");
-       draw_gclef (1.0);
+       draw_gclef (1.0, 0, 0);
 fet_endchar;
 
 
 fet_beginchar ("G clef", "G_change");
-       draw_gclef (0.8);
+       draw_gclef (0.8, 0, 0);
+fet_endchar;
+
+
+fet_beginchar ("double G clef", "GG");
+       draw_gclef (1.0, 1.5, 0);
+fet_endchar;
+
+
+fet_beginchar ("double G clef", "GG_change");
+       draw_gclef (0.8, 1.5, 0);
 fet_endchar;
 
+def draw_tenor_extension (expr reduction) =
+       save reduced_ss, thick, thin, upper_stroke, ne_beam_dir, nw_dist;
+       path upper_stroke;
+       pair ne_beam_dir, nw_dist;
+
+       reduced_ss# = staff_space# * reduction;
+       define_pixels (reduced_ss);
+
+       thin := hround (0.17 reduced_ss);
+       thick := hround (0.51 reduced_ss);
+
+       % the slanted left edge should protrude the g clef by a
+       % fixed amount relative to the width of the g clef:
+       x1'' = x6'' - 1.8 reduced_ss - 0.5 staff_space = 0.62 reduced_ss * reduction;
+       x8'' = x1'' - 2 thin;
+       x2'' = x3'' = x4'' = x6'' - thin;
+       x5'' = x6'';
+       x7'' = x6'' - 1/3 thin;
+       % the thick part of the c clef should be placed in the
+       % center of the forth staff space
+       y1'' = y2'' = 2.5 staff_space + thick/2;
+       y7'' =  y8'' = y6'' - 1/3 thin = y1'' - thick;
+       y5'' = y3'' = y2'' + reduced_ss;
+       y4'' = 4.5 reduced_ss;
+
+       upper_stroke := z2''
+                       -- new_bulb (z3'', 90, z4'', z5'', 270,
+                                    0.35 reduced_ss, 0.22 reduced_ss, thin, 1, -1)
+                       -- z6''{down} .. z7''{left};
+
+       % z1'' and z8'' are helper points that are responsible for
+       % hiding the lower left slant in the g clef's stroke
+       % z9'' and z10'' are computed to obtain nice rounded corners
+
+       pickup pencircle scaled 2/3 thin;
+       lft x9'' = x1'';
+       lft x10'' = x8'';
+
+       top y9'' = y1'';
+       bot y10'' = y8'';
+
+       ne_beam_dir = unitvector (z9'' - z10'');
+       nw_dist = (ne_beam_dir rotated 90) * 1/3 thin;
+
+       fill (z9''+nw_dist){ne_beam_dir}
+            ... top z9''{right}
+            -- upper_stroke
+            -- bot z10''{left}
+            ... (z10''+nw_dist){ne_beam_dir}
+            -- cycle;
+
+       % the slanted edge of the lower hook must not be visible, so it is
+       % shifted accordingly in x direction;
+       z1''' = z1'' shifted (staff_space - 0.9 reduced_ss, - staff_space);
+       z8''' = z8'' shifted (staff_space - 0.9 reduced_ss, - staff_space);
+
+       % the visible c clef parts should be symmetrical to the forth staff line
+       fill z1'''
+            -- reverse upper_stroke yscaled -1 shifted (0, 4 staff_space)
+            -- z8''' -- cycle;
+
+       penlabels (1''',2'',3'',4'',5'',6'',7'',8''',9'',10'');
+
+       draw_staff_if_debugging (-1, 3);
+enddef;
+
+fet_beginchar ("Tenor G clef", "tenorG");
+       draw_gclef (1.0, 0, 0.75);
+       draw_tenor_extension (1.0);
+fet_endchar;
+
+
+fet_beginchar ("Tenor G clef", "tenorG_change");
+       draw_gclef (0.8, 0, 0.75);
+       draw_tenor_extension (0.8);
+fet_endchar;
 
 %%%%
 %
@@ -522,7 +690,7 @@ def draw_percussion_clef (expr reduction) =
        draw_block ((-b, -d), (-b + razt, h));
        draw_block ((w - razt, -d), (w, h));
 
-       draw_staff (-3, 1, 1);
+       draw_staff_if_debugging (-3, 1);
 enddef;
 
 
@@ -535,6 +703,49 @@ fet_beginchar ("percussion clef (reduced)", "percussion_change");
        draw_percussion_clef (.8);
 fet_endchar;
 
+def draw_varpercussion_clef (expr reduction) =
+       save reduced_ss, thin, thick;
+
+       reduced_ss# = staff_space# * reduction;
+       define_pixels (reduced_ss);
+
+       set_char_box (-.67 reduced_ss#, 1.75 reduced_ss#,
+                     1.675 reduced_ss#, 1.675 reduced_ss#);
+
+       thin := hround (0.175 reduced_ss);
+       thick := hround (0.35 reduced_ss);
+
+       d := d - feta_shift;
+
+       draw_block ((-b, -d), (-b + thin, h));
+       draw_block ((w - thin, -d), (w, h));
+
+       pickup penrazor scaled thick rotated 90;
+
+       top z1 = (-b + thin/2, h);
+       top z2 = (w - thin/2, h);
+
+       bot z3 = (-b + thin/2, -d);
+       bot z4 = (w - thin/2, -d);
+
+       draw z1 -- z2;
+       draw z3 -- z4;
+
+       penlabels (range 1 thru 4);
+
+       draw_staff_if_debugging (-3, 1);
+enddef;
+
+
+fet_beginchar ("variant percussion clef", "varpercussion");
+       draw_varpercussion_clef (1.0);
+fet_endchar;
+
+
+fet_beginchar ("variant percussion clef (reduced)", "varpercussion_change");
+       draw_varpercussion_clef (.8);
+fet_endchar;
+
 
 def draw_tab_T (expr pos, siz, slant) =
 begingroup;
@@ -729,7 +940,7 @@ def draw_tab_clef (expr reduction) =
        draw_tab_B ((-b + .025 reduced_ss, -d),
                    (2.1 reduced_ss, letterheight), 0.25);
 
-       draw_staff (-3, 2, 0.5);
+       draw_staff_if_debugging (-3, 2);
 enddef;
 
 
index be38847a2c2ec4970c71e8b403bd76b993b75ce9..291ff6a402611e6fd2cf9dfac3e6a86d2afdaf8f 100644 (file)
@@ -1,7 +1,7 @@
 % Feta (not the Font-En-Tja) music font -- a duration dot
 % This file is part of LilyPond, the GNU music typesetter.
 %
-% Copyright (C) 1997--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+% Copyright (C) 1997--2014 Han-Wen Nienhuys <hanwen@xs4all.nl>
 %
 % The LilyPond font is free software: you can redistribute it and/or modify
 % it under the terms of the GNU General Public License as published by
index c1b7c43a6a5d4289c951712cce4e7e6f0b87331e..cbb559c73a4f9e01501db30b84bd3f96bb348a15 100644 (file)
@@ -1,7 +1,7 @@
 % Feta (not the Font-En-Tja) music font --  dynamic signs
 % This file is part of LilyPond, the GNU music typesetter.
 %
-% Copyright (C) 1997--2012 Jan Nieuwenhuizen <janneke@gnu.org>
+% Copyright (C) 1997--2014 Jan Nieuwenhuizen <janneke@gnu.org>
 %
 % The LilyPond font is free software: you can redistribute it and/or modify
 % it under the terms of the GNU General Public License as published by
index 947cc8a35a487c91bfac13000e000812a9229d8c..92601599bbb44e26e77005815692b3c85d31b0e8 100644 (file)
@@ -1,46 +1,19 @@
-% Feta (not the Font-En-Tja) music font --  generic stuff: include lots of files, but don't
 % This file is part of LilyPond, the GNU music typesetter.
 %
-% Copyright (C) 1997--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+% Copyright (C) 1997--2014 Han-Wen Nienhuys <hanwen@xs4all.nl>
 %
 % The LilyPond font 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, or under the SIL Open Font License.
-%
-% 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/>.
-
-
-if test = -1:
-       mode := smoke;
-fi
 
-staffsize# := design_size * pt#;
 
-mode_setup;
-
-input feta-macros;
-
-input feta-params;
+input common-modules-and-initialization;
 
 font_x_height staff_space#;
 
 fet_beginfont ("feta", design_size, "fetaMusic");
+       input feta-flags;
 
-input feta-flags;
-
-autometric_parameter ("staffsize", staffsize#);
-autometric_parameter ("stafflinethickness", stafflinethickness#);
-autometric_parameter ("staff_space", staff_space#);
-autometric_parameter ("linethickness", linethickness#);
-autometric_parameter ("black_notehead_width", black_notehead_width#);
-autometric_parameter ("ledgerlinethickness", ledgerlinethickness#);
-autometric_parameter ("blot_diameter", blot_diameter#);
-
+       input declare-autometric-parameters;
 fet_endfont;
index 2cd890f3b0008ffd341d29b1a7ad5f832ec0e821..1cfeae57b0f6b77c863dee5bc7781abd17049c73 100644 (file)
@@ -1,7 +1,7 @@
 % Feta (not the Font-En-Tja) music font -- draw flags
 % This file is part of LilyPond, the GNU music typesetter.
 %
-% Copyright (C) 1997--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+% Copyright (C) 1997--2014 Han-Wen Nienhuys <hanwen@xs4all.nl>
 %
 % The LilyPond font is free software: you can redistribute it and/or modify
 % it under the terms of the GNU General Public License as published by
index 30cd7f0976c0887ab2bc1c11163be435e039189e..8026bf499d46b7c2bbdf0473c4fff96efb1e089c 100644 (file)
@@ -1,13 +1,5 @@
-% feta-flags11.mf
-% part of LilyPond's pretty-but-neat music font
-
-input feta-autometric;
+% Produce font files at specified size.
 
 design_size := 11.22;
-test := 0;
-
-
 input feta-flags-generic;
-
 end.
-
index 3210b1abc121c99af94856a26d694c86d0404367..51e508fee34f3e59d270acae5536c9319a592889 100644 (file)
@@ -1,13 +1,5 @@
-% feta-flags13.mf
-% part of LilyPond's pretty-but-neat music font
-
-input feta-autometric;
+% Produce font files at specified size.
 
 design_size := 12.60;
-test := 0;
-
-
 input feta-flags-generic;
-
 end.
-
index 9a5449cc5d081bc580efed9ee831f78059f499bd..22055a8cc2e4f6a206d8f8f0dd555fabab073fcc 100644 (file)
@@ -1,13 +1,5 @@
-% feta-flags14.mf
-% part of LilyPond's pretty-but-neat music font
-
-input feta-autometric;
+% Produce font files at specified size.
 
 design_size := 14.14;
-test := 0;
-
-
 input feta-flags-generic;
-
 end.
-
index d02993736a8bcdc25bd0bb2779bcb8fab1bea032..3e706e7d2360f8be6823e93af2eec525b2268222 100644 (file)
@@ -1,13 +1,5 @@
-% feta-flags16.mf
-% part of LilyPond's pretty-but-neat music font
-
-input feta-autometric;
+% Produce font files at specified size.
 
 design_size := 15.87;
-test := 0;
-
-
 input feta-flags-generic;
-
 end.
-
index dcaefd440d5ffa02953b43ef8d880e82857c3aa6..a15fea7560984e8429d1dd7b8837fc1c28e9682b 100644 (file)
@@ -1,13 +1,5 @@
-% feta-flags18.mf
-% part of LilyPond's pretty-but-neat music font
-
-input feta-autometric;
+% Produce font files at specified size.
 
 design_size := 17.82;
-test := 0;
-
-
 input feta-flags-generic;
-
 end.
-
index b7b834ecc4e2fbc616d6c24ef13e24e7468ec389..9eedbeb78d17f5113c29d0de27cd65ee89dd1cb9 100644 (file)
@@ -1,13 +1,5 @@
-% feta-flags20.mf
-% part of LilyPond's pretty-but-neat music font
-
-input feta-autometric;
+% Produce font files at specified size.
 
 design_size := 20;
-test := 0;
-
-
 input feta-flags-generic;
-
 end.
-
index dcd640c8a95c6903886e4f2d50b299869ab1a576..1500a151106620ff8669a484c6ab92c48689bbcf 100644 (file)
@@ -1,13 +1,5 @@
-% feta-flags23.mf
-% part of LilyPond's pretty-but-neat music font
-
-input feta-autometric;
+% Produce font files at specified size.
 
 design_size := 22.45;
-test := 0;
-
-
 input feta-flags-generic;
-
 end.
-
index b2a1fe616f69acec50d9f928d6a988b78ece1b61..322213b562e084cfdc76fc2ca886d8d7066850e4 100644 (file)
@@ -1,13 +1,5 @@
-% feta-flags26.mf
-% part of LilyPond's pretty-but-neat music font
-
-input feta-autometric;
+% Produce font files at specified size.
 
 design_size := 25.20;
-test := 0;
-
-
 input feta-flags-generic;
-
 end.
-
diff --git a/mf/feta-flats.mf b/mf/feta-flats.mf
new file mode 100644 (file)
index 0000000..b7470e2
--- /dev/null
@@ -0,0 +1,535 @@
+
+%
+% Dedicated to my mom.    (3/10/97)
+%
+% Mamma, ik hou van je; kom je alsjeblieft terug?
+%    -- HW
+%
+%
+% TODO: remove crook_fatness
+% TODO: document, simplify!
+%
+
+def draw_meta_flat (expr xcenter, w, crook_fatness, arrowup, arrowdown) =
+       save crook_thinness;
+       save bottom_overshoot, bot_crook_dir;
+       save top_stem_thick, top_stem_thick_orig;
+       save bottom_stem_thick, hair, smaller_hole;
+       save top_crook_thinness;
+       save zwiep;
+       save center;
+       pair center, bot_crook_dir;
+       save clearing, clearing_orig;
+
+       clearxy;
+
+       % the stem shouldn't reach the top staff line.
+       %% TODO: should take from height.
+       %
+       % TODO: parameterize this
+       %
+       if w >= 0.75 staff_space:
+               smaller_hole = 0.35 stafflinethickness;
+       else:
+               smaller_hole = 0;
+       fi;
+       crook_thinness = .7 stafflinethickness + .06 staff_space;
+       top_crook_thinness = 1 stafflinethickness + .065 staff_space;
+       clearing = 1.7 stafflinethickness;
+       clearing_orig = clearing;
+       if arrowup:
+               clearing := 0.5 staff_space;
+       fi;
+       bottom_overshoot = stafflinethickness;
+
+       bottom_stem_thick# = 0.06 staff_space# + 0.6 stafflinethickness#;
+       top_stem_thick# = 0.1 staff_space# + 1.2 stafflinethickness#;
+       top_stem_thick_orig# = top_stem_thick#;
+       if arrowup:
+               % to look nice, arrowed stems should be less brushed
+               top_stem_thick# := top_stem_thick# * 0.8;
+       fi;
+       define_whole_blacker_pixels (bottom_stem_thick, top_stem_thick,
+                                    top_stem_thick_orig);
+
+       if odd (top_stem_thick - bottom_stem_thick):
+               top_stem_thick := top_stem_thick - 1;
+       fi;
+       if odd (top_stem_thick_orig - bottom_stem_thick):
+               top_stem_thick_orig := top_stem_thick_orig - 1;
+       fi;
+
+       center = (xcenter, 0);
+
+       x1l = hround (xcenter - .5 top_stem_thick);
+       y1 = vround (2 staff_space - clearing);
+       x2l = hround (xcenter - .5 bottom_stem_thick);
+       y2 = -.5 staff_space - .5 stafflinethickness;
+       % z16 and the `*_orig' variables are needed for arrowed accidentals
+       % because their inner part should be unchanged from plain ones but
+       % the points z3l, z3r, and z10 depend on values that are different
+       % for arrowed accidentals
+       x16l = hround (xcenter -.5 top_stem_thick_orig);
+       y16 = vround (2 staff_space - clearing_orig);
+
+       penpos1 (top_stem_thick, 0);
+       penpos16 (top_stem_thick_orig, 0);
+       penpos2 (bottom_stem_thick, 0);
+
+       y3l = vfloor ((staff_space - stafflinethickness) / 2);
+       z3l = whatever [z2r, z1r];
+       z3r = .3 [z2r,
+                 (z16r shifted (0, clearing_orig - 1.7 stafflinethickness))]
+             + (smaller_hole, 0);
+       x3r := hceiling x3r;
+
+       % we insert z3l to get better conversion with mf2pt1
+       fill simple_serif (z1r, z1l, 30)
+            -- z2l
+            -- z2r
+            -- z3l
+            -- cycle;
+
+       z10 = whatever [z2r, z16r] + (smaller_hole, 0);
+       y10 = -1/10 staff_space;
+       x10 := hceiling x10;
+
+       x11 = xcenter + bottom_overshoot / 3;
+       y11 = -vround (.5 (staff_space + stafflinethickness)
+                      + bottom_overshoot);
+
+       x2a = 0.2[x2r, x7];
+       y2a = 1.5[y2, y11];
+
+       penpos4 (whatever, 53);
+
+       y4l - y4r = top_crook_thinness;
+       y5r = .15 staff_space;
+       x5l = hround (w + xcenter);
+       y4 = staff_space / 2;
+       x4r = .45 [x5r, x3r];
+       y4l := vround y4l;
+
+       penpos5 (crook_fatness, -175);
+
+       bot_crook_dir = unitvector ((x5l, 0) - z11);
+       z8 = z11 + whatever * bot_crook_dir;
+       y8 = -staff_space / 2;
+
+       z7 = z8
+            + whatever * bot_crook_dir
+            + crook_thinness * (bot_crook_dir rotated 90);
+       x7 = .1 [x3r, x8];
+
+       unfill z3r{z3r - z10}
+              .. z4r{right}
+              .. z5r{down}
+              .. z7{-bot_crook_dir}
+              & z7
+              .. z10{z3r - z10}
+              -- cycle;
+
+       if arrowdown:
+               fill z2l{down}
+                    .. z2a{up}
+                    .. z8{bot_crook_dir}
+                    .. z5l{up}
+                    .. z4l{left}
+                    .. z3l
+                    -- cycle;
+       else:
+               fill z2l{down}
+                    .. z11{right}
+                    .. z8{bot_crook_dir}
+                    .. z5l{up}
+                    .. z4l{left}
+                    .. z3l
+                    -- cycle;
+       fi;
+
+       if arrowup:
+               draw_arrow (z1, top_stem_thick, z1l - z2l,
+                           0.5 stafflinethickness, false);
+       fi;
+       if arrowdown:
+               draw_arrow ((0.5 [x2l, x2a], y2), x2a - x2l, up,
+                           staff_space / 2, true);
+       fi;
+enddef;
+
+
+def draw_arrowed_meta_flat (expr xcenter, width, crook_fatness,
+                                arrowup, arrowdown) =
+       save depth, height, extendleft;
+
+       depth# = 0.6 staff_space#;
+       height# = 1.9 staff_space#;
+       extendleft# := 1.2 stafflinethickness#;
+       if arrowup:
+               extendleft# := 3.45 stafflinethickness#;
+               height# := height# + 0.8 staff_space#;
+       fi;
+       if arrowdown:
+               extendleft# := 3.45 stafflinethickness#;
+               depth# := depth# + 1.6 staff_space#;
+       fi;
+
+       set_char_box (extendleft#, width, depth#, height#);
+       draw_meta_flat(xcenter, w, crook_fatness, arrowup, arrowdown);
+enddef;
+
+%
+% unfortunately, 600dpi is not enough to show the brush of the stem.
+%
+
+fet_beginchar ("Flat", "flat");
+       draw_arrowed_meta_flat (0, 0.8 staff_space#, 0.31 staff_space,
+                               false, false);
+       penlabels (range 0 thru 11);
+
+        draw_staff_if_debugging (-2, 2);
+fet_endchar;
+
+
+fet_beginchar ("Arrowed Flat (arrow up)", "flat.arrowup");
+        draw_arrowed_meta_flat (0, 0.8 staff_space#, 0.31 staff_space,
+                                true, false);
+        penlabels (range 0 thru 23);
+
+        draw_staff_if_debugging (-2, 2);
+fet_endchar;
+
+
+fet_beginchar ("Arrowed Flat (arrow down)", "flat.arrowdown");
+        draw_arrowed_meta_flat (0, 0.8 staff_space#, 0.31 staff_space,
+                                false, true);
+        penlabels (range 0 thru 23);
+
+        draw_staff_if_debugging (-2, 2);
+fet_endchar;
+
+
+fet_beginchar ("Arrowed Flat (arrow up and down)", "flat.arrowboth");
+       draw_arrowed_meta_flat (0, 0.8 staff_space#, 0.31 staff_space,
+                               true, true);
+       penlabels (range 0 thru 23);
+
+        draw_staff_if_debugging (-2, 2);
+fet_endchar;
+
+
+fet_beginchar ("Flat (slashed)", "flat.slash");
+       set_char_box (.4 staff_space#, .8 staff_space#,
+                     0.6 staff_space#, 1.9 staff_space#);
+
+       draw_meta_flat (0, w, 0.31 staff_space, false, false);
+
+       clearxy;
+
+       save slope, slash_width;
+       slope = 0.5;
+       slash_width = w;
+
+       z11 = (0, h / 2);
+       z12 = z11 - (slash_width, slash_width * slope) / 2;
+       z13 = z11 + (slash_width, slash_width * slope) / 2;
+       penpos12 (1.5 stafflinethickness, angle (z13 - z12) - 90);
+       penpos13 (1.5 stafflinethickness, angle (z13 - z12) - 90);
+
+       z14 = z12 - .75 stafflinethickness * unitvector (z13 - z12);
+       z15 = z13 + .75 stafflinethickness * unitvector (z13 - z12);
+
+       fill z13r
+            .. z15
+            .. z13l
+            -- z12l
+            .. z14
+            .. z12r
+            -- z13r
+            .. cycle;
+
+       penlabels (12, 13);
+       labels (14, 15);
+
+       draw_staff_if_debugging (-2, 2);
+fet_endchar;
+
+
+fet_beginchar ("Flat (slashed twice)", "flat.slashslash");
+       set_char_box (.4 staff_space#, .8 staff_space#,
+                     0.6 staff_space#, 1.9 staff_space#);
+
+       draw_meta_flat (0, w, 0.31 staff_space, false, false);
+
+       clearxy;
+
+       save slope, slash_width;
+       slope = 0.5;
+       slash_width = w;
+
+       z11 = (0, 5/12 h);
+       z12 = z11 - (slash_width, slash_width * slope) / 2;
+       z13 = z11 + (slash_width, slash_width * slope) / 2;
+       penpos12 (1.5 stafflinethickness, angle (z13 - z12) - 90);
+       penpos13 (1.5 stafflinethickness, angle (z13 - z12) - 90);
+
+       z14 = z12 - .75 stafflinethickness * unitvector (z13 - z12);
+       z15 = z13 + .75 stafflinethickness * unitvector (z13 - z12);
+
+       fill z13r
+            .. z15
+            .. z13l
+            -- z12l
+            .. z14
+            .. z12r
+            -- z13r
+            .. cycle;
+
+       penlabels (12, 13);
+       labels (14, 15);
+
+       z21 = (0, 2/3 h);
+       z22 = z21 - (slash_width, slash_width * slope) / 2;
+       z23 = z21 + (slash_width, slash_width * slope) / 2;
+       penpos22 (1.5 stafflinethickness, angle (z23 - z22) - 90);
+       penpos23 (1.5 stafflinethickness, angle (z23 - z22) - 90);
+
+       z24 = z22 - .75 stafflinethickness * unitvector (z23 - z22);
+       z25 = z23 + .75 stafflinethickness * unitvector (z23 - z22);
+
+       fill z23r
+            .. z25
+            .. z23l
+            -- z22l
+            .. z24
+            .. z22r
+            -- z23r
+            .. cycle;
+
+       penlabels (22, 23);
+       labels (24, 25);
+
+       draw_staff_if_debugging (-2, 2);
+fet_endchar;
+
+
+fet_beginchar ("Flatflat (mirrored)", "mirroredflat.flat");
+       set_char_box (0, 1.6 staff_space#,
+                     0.6 staff_space#, 1.9 staff_space#);
+
+       % This is a modified version of `draw_meta_flat'.
+
+       save crook_thinness, crook_fatness;
+       save bottom_overshoot, bot_crook_dir;
+       save top_stem_thick, bottom_stem_thick, hair, smaller_hole;
+       save top_crook_thinness;
+       save zwiep;
+       save center;
+       pair center, bot_crook_dir;
+       save clearing, wid;
+       save pat;
+       path pat;
+
+       clearxy;
+
+       wid = w / 2;
+
+       % the stem shouldn't reach the top staff line.
+       %% TODO: should take from height.
+       %
+       % TODO: parameterize this
+       %
+       if wid >= 0.75 staff_space:
+               smaller_hole = 0.35 stafflinethickness;
+       else:
+               smaller_hole = 0;
+       fi;
+       clearing = 1.7 stafflinethickness;
+       crook_thinness = .7 stafflinethickness + .06 staff_space;
+       crook_fatness = 0.31 staff_space;
+       top_crook_thinness = 1 stafflinethickness + .065 staff_space;
+       bottom_overshoot = stafflinethickness;
+
+       bottom_stem_thick# = 0.06 staff_space# + 0.6 stafflinethickness#;
+       top_stem_thick# = 0.1 staff_space# + 1.2 stafflinethickness#;
+       define_whole_blacker_pixels (bottom_stem_thick, top_stem_thick);
+
+       if odd (top_stem_thick - bottom_stem_thick):
+               top_stem_thick := top_stem_thick - 1;
+       fi;
+
+       center = (0, 0);
+
+       x1l = hround (-.5 top_stem_thick);
+       y1 = vround (2 staff_space - clearing);
+       x2l = hround (-.5 bottom_stem_thick);
+       y2 = -.5 staff_space - .5 stafflinethickness;
+
+       penpos1 (top_stem_thick, 0);
+       penpos2 (bottom_stem_thick, 0);
+
+       y3l = vfloor ((staff_space - stafflinethickness) / 2);
+       z3l = whatever [z2r, z1r];
+       z3r = .3 [z2r, z1r] + (smaller_hole, 0);
+       x3r := hceiling x3r;
+
+       z10 = whatever [z2r, z1r] + (smaller_hole, 0);
+       y10 = -1/10 staff_space;
+       x10 := hceiling x10;
+
+       x11 = bottom_overshoot / 3;
+       y11 = -vround (.5 (staff_space + stafflinethickness)
+                      + bottom_overshoot);
+
+       penpos4 (whatever, 53);
+
+       y4l - y4r = top_crook_thinness;
+       y5r = .15 staff_space;
+       x5l = hround (wid);
+       y4 = staff_space / 2;
+       x4r = .45 [x5r, x3r];
+       y4l := vround y4l;
+
+       penpos5 (crook_fatness, -175);
+
+       bot_crook_dir = unitvector ((x5l, 0) - z11);
+       z8 = z11 + whatever * bot_crook_dir;
+       y8 = -staff_space / 2;
+
+       z7 = z8
+            + whatever * bot_crook_dir
+            + crook_thinness * (bot_crook_dir rotated 90);
+       x7 = .1 [x3r, x8];
+
+       pat := z3r{z3r - z10}
+              .. z4r{right}
+              .. z5r{down}
+              .. z7{-bot_crook_dir}
+              & z7
+              .. z10{z3r - z10}
+              -- cycle;
+       unfill pat;
+       unfill pat xscaled -1;
+
+       pat := z11{right}
+              .. z8{bot_crook_dir}
+              .. z5l{up}
+              .. z4l{left}
+              .. z3l;
+       fill pat
+            -- simple_serif (z1r, z1l, 30)
+            -- reverse pat xscaled -1 shifted (-feta_eps, 0)
+            -- cycle;
+
+       currentpicture := currentpicture shifted (w/2, 0);
+
+       draw_staff_if_debugging (-2, 2);
+fet_endchar;
+
+
+fet_beginchar ("Semi flat", "mirroredflat");
+       set_char_box (1.2 stafflinethickness#, .8 staff_space#,
+                     0.6 staff_space#, 1.9 staff_space#);
+
+       draw_meta_flat (0, w, 0.31 staff_space, false, false);
+       currentpicture := currentpicture xscaled -1 shifted (w - b, 0);
+fet_endchar;
+
+
+fet_beginchar ("Semi flat", "mirroredflat.backslash");
+       set_char_box (.4 staff_space#, .8 staff_space#,
+                     0.6 staff_space#, 1.9 staff_space#);
+
+       draw_meta_flat (0, w, 0.31 staff_space, false, false);
+
+       clearxy;
+
+       save slope, slash_width;
+       slope = 0.5;
+       slash_width = w;
+
+       z11 = (0, h / 2);
+       z12 = z11 - (slash_width, slash_width * slope) / 2;
+       z13 = z11 + (slash_width, slash_width * slope) / 2;
+       penpos12 (1.5 stafflinethickness, angle (z13 - z12) - 90);
+       penpos13 (1.5 stafflinethickness, angle (z13 - z12) - 90);
+
+       z14 = z12 - .75 stafflinethickness * unitvector (z13 - z12);
+       z15 = z13 + .75 stafflinethickness * unitvector (z13 - z12);
+
+       fill z13r
+            .. z15
+            .. z13l
+            -- z12l
+            .. z14
+            .. z12r
+            -- z13r
+            .. cycle;
+
+       currentpicture := currentpicture xscaled -1 shifted (w - b, 0);
+
+       labels (1, 2, 3);
+fet_endchar;
+
+
+fet_beginchar ("Double Flat", "flatflat");
+       save left_wid, overlap, right_wid;
+
+       left_wid = .7;
+       right_wid = .8;
+       overlap = .05;
+
+       set_char_box (1.2 stafflinethickness#,
+                     (left_wid + right_wid - overlap) * staff_space#,
+                     .6 staff_space#, 1.9 staff_space#);
+       draw_meta_flat (0, left_wid * staff_space, 1/3 staff_space,
+                       false, false);
+       draw_meta_flat (hround ((left_wid - overlap) * staff_space),
+                       right_wid * staff_space, 1/3 staff_space,
+                       false, false);
+fet_endchar;
+
+
+fet_beginchar ("3/4 Flat", "flatflat.slash");
+       save left_wid, overlap, right_wid;
+
+       left_wid = .7;
+       right_wid = .8;
+       overlap = .05;
+
+       set_char_box (1.2 stafflinethickness#,
+                     (left_wid + right_wid - overlap) * staff_space#,
+                     .6 staff_space#, 1.9 staff_space#);
+       draw_meta_flat (0, left_wid * staff_space, 1/3 staff_space,
+                       false, false);
+       draw_meta_flat (hround ((left_wid - overlap) * staff_space),
+                       right_wid * staff_space, 1/3 staff_space,
+                       false, false);
+
+       %% maybe we should clip part of the stems?
+       %% or make the 1st flat smaller?
+       %% or reverse it?
+       pickup pencircle scaled 2 stafflinethickness;
+
+       z12 = round (-.25 w - b, .55 staff_space) + feta_offset;
+       z13 = round (.75 w, 1.45 staff_space) + feta_offset;
+       penpos12 (2 stafflinethickness, angle (z13 - z12) - 90);
+       penpos13 (2 stafflinethickness, angle (z13 - z12) - 90);
+
+       z14 = z12 - stafflinethickness * unitvector (z13 - z12);
+       z15 = z13 + stafflinethickness * unitvector (z13 - z12);
+
+       fill z13r
+            .. z15
+            .. z13l
+            -- z12l
+            .. z14
+            .. z12r
+            -- z13r
+            .. cycle;
+
+       penlabels (12, 13);
+       labels (14, 15);
+
+       draw_staff_if_debugging (-2, 2);
+fet_endchar;
diff --git a/mf/feta-generic.mf b/mf/feta-generic.mf
deleted file mode 100644 (file)
index 0d253ce..0000000
+++ /dev/null
@@ -1,60 +0,0 @@
-% Feta (not the Font-En-Tja) music font --  generic stuff: include lots of files, but don't
-% This file is part of LilyPond, the GNU music typesetter.
-%
-% Copyright (C) 1997--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
-%
-% The LilyPond font 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, or under the SIL Open Font License.
-%
-% 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/>.
-
-
-if test = -1:
-       mode := smoke;
-fi
-
-staffsize# := design_size * pt#;
-
-mode_setup;
-
-input feta-macros;
-
-input feta-params;
-
-font_x_height staff_space#;
-
-fet_beginfont ("feta", design_size, "fetaMusic");
-
-if test = 0:
-       input feta-rests;
-       input feta-accidentals;
-       input feta-arrowheads;
-       input feta-dots;
-       input feta-scripts;
-       input feta-clefs;
-       input feta-timesignatures;
-       input feta-pedals;
-       input feta-brackettips;
-       input feta-accordion;
-       input feta-ties;
-else:
-       input feta-test-generic.mf;
-fi
-
-autometric_parameter ("staffsize", staffsize#);
-autometric_parameter ("stafflinethickness", stafflinethickness#);
-autometric_parameter ("staff_space", staff_space#);
-autometric_parameter ("linethickness", linethickness#);
-autometric_parameter ("black_notehead_width", black_notehead_width#);
-autometric_parameter ("ledgerlinethickness", ledgerlinethickness#);
-autometric_parameter ("blot_diameter", blot_diameter#);
-
-fet_endfont;
index c464c3f7f8342488834f5a37608216c65f90d64f..197dc86bf463713e1b31a7f9e6e5a6c54595c943 100644 (file)
@@ -1,7 +1,7 @@
 % Feta (not the Font-En-Tja) music font -- auxiliary macros for both feta and parmesan fonts
 % This file is part of LilyPond, the GNU music typesetter.
 %
-% Copyright (C) 1997--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+% Copyright (C) 1997--2014 Han-Wen Nienhuys <hanwen@xs4all.nl>
 %
 % The LilyPond font is free software: you can redistribute it and/or modify
 % it under the terms of the GNU General Public License as published by
@@ -21,6 +21,7 @@
 % debugging
 %
 
+
 def print_penpos (suffix $) =
        message
          "z" & str$ & "l = (" & decimal x.$.l & ", " &decimal y.$.l & ");"
@@ -50,15 +51,15 @@ def treq =
 enddef;
 
 
-def draw_staff (expr first, last, offset) =
+def draw_staff_if_debugging (expr first, last) =
        if test <> 0:
                pickup pencircle scaled stafflinethickness;
 
                for i := first step 1 until last:
                        draw (-staff_space,
-                             (i + offset) * staff_space_rounded)
+                             (i + stafflines_y_offset) * staff_space_rounded)
                             -- (4 staff_space,
-                                (i + offset) * staff_space_rounded);
+                                (i + stafflines_y_offset) * staff_space_rounded);
                endfor;
        fi;
 enddef;
diff --git a/mf/feta-naturals.mf b/mf/feta-naturals.mf
new file mode 100644 (file)
index 0000000..3c824c7
--- /dev/null
@@ -0,0 +1,163 @@
+
+%
+% The stems of the natural are brushed (at least, in Barenreiter SCS)
+%
+
+% general parameters:
+save full_width, full_height;
+save stem_thickness, stem_end_thickness_multiplier;
+save beam_thickness, beam_slant, hole_highest_point;
+
+full_height# := 3 staff_space#;
+full_width# := 2/3 staff_space#;
+stem_thickness# := 0.09 staff_space# + 0.5 stafflinethickness#;
+stem_end_thickness_multiplier := 10/7;
+beam_slant := 1.266 stafflinethickness;
+beam_thickness := 0.485 staff_space -  stafflinethickness;
+hole_highest_point := 0.5 (staff_space - stafflinethickness);
+
+
+def draw_natural (expr arrowup, arrowdown) =
+        save upstem_factor, downstem_factor;
+        save upstem_end_thickness, downstem_end_thickness;
+        save half_height, half_box_height;
+        save beam_direction, r_stem_top_path, l_stem_bottom_path;
+        pair beam_direction;
+        path r_stem_top_path, l_stem_bottom_path;
+
+        upstem_factor = downstem_factor = stem_end_thickness_multiplier;
+
+        half_height# := 0.5 full_height#;
+        define_pixels (half_height);
+        define_pixels (full_width);
+
+        set_char_box (0, full_width#, half_height#, half_height#);
+        d := d - feta_space_shift;
+
+        if arrowup:
+                b := b + 3 stafflinethickness;
+                h := h + 1.2 staff_space;
+                % to look nice, arrowed stems must be less brushed
+                upstem_factor := 0.5 (1 + upstem_factor);
+        fi;
+        if arrowdown:
+                w := w + 3 stafflinethickness;
+                d := d + 1.2 staff_space;
+                % to look nice, arrowed stems must be less brushed
+                downstem_factor := 0.5 (1 + downstem_factor);
+        fi;
+
+        upstem_end_thickness# = upstem_factor * stem_thickness#;
+        downstem_end_thickness# = downstem_factor * stem_thickness#;
+        define_whole_blacker_pixels (upstem_end_thickness, downstem_end_thickness);
+        define_whole_blacker_pixels (stem_thickness);
+
+        half_box_height := hole_highest_point + beam_thickness
+                           %% correction for the fact that x11 != x12.
+                           %% ideally y2 should be calculated from y11
+                           %% and beam_thickness, but the brushed stems
+                           %% would cause a cyclic dependency:
+                           %% y2 -> x11 -> y14 -> y13 -> y12 -> y2
+                           + 0.5 stem_thickness * beam_slant / full_width;
+
+        %% stems:
+
+        pickup pencircle scaled stem_thickness;
+
+        penpos1 (upstem_end_thickness, 0);
+        penpos3 (downstem_end_thickness, 0);
+        penpos2 (stem_thickness, 0);
+        penpos4 (stem_thickness, 0);
+
+        x2r = full_width;
+        x4l = 0;
+        x3 = x2;
+        x1 = x4;
+
+        y1 = half_height;
+        y3 = -half_height;
+        top y2 = vround (half_box_height);
+        y4 = -y2 + feta_space_shift;
+
+        l_stem_bottom_path := z4r{z4r - z1r}
+                              .. bot z4
+                              .. z4l{z1l - z4l};
+
+        r_stem_top_path := z2r{z2r - z3r}
+                           .. top z2
+                           .. z2l{z3l - z2l};
+
+        fill simple_serif (z1l, z1r, -30)
+             -- l_stem_bottom_path
+             -- cycle;
+
+        fill simple_serif (z3l, z3r, 30)
+             -- r_stem_top_path
+             -- cycle;
+
+        %% beams:
+
+        beam_direction = (full_width, beam_slant);
+
+        z11 = z3l + whatever * (z2l - z3l);
+        y11 = vround (hole_highest_point);
+        z12 = directionpoint -beam_direction of r_stem_top_path;
+        z13 = z12 + whatever * beam_direction;
+        x13 = x1;
+        z14 = z11 + whatever * beam_direction;
+        x14 = x1;
+
+        z21 = z4r + whatever * (z1r - z4r);
+        y21 = -y11 + feta_space_shift;
+        z22 = directionpoint -beam_direction of l_stem_bottom_path;
+        z23 = z22 + whatever * beam_direction;
+        x23 = x3;
+        z24 = z21 + whatever * beam_direction;
+        x24 = x3;
+
+        fill z11
+             -- z12
+             -- z13
+             -- z14
+             -- cycle;
+
+        fill z21
+             -- z22
+             -- z23
+             -- z24
+             -- cycle;
+
+        if arrowup:
+                draw_arrow (z1, upstem_end_thickness,
+                            z1l - z4l, stafflinethickness / 2, false);
+        fi;
+        if arrowdown:
+                draw_arrow (z3, downstem_end_thickness,
+                            z2r - z3r, stafflinethickness / 2, true);
+        fi;
+
+        %% debugging:
+        penlabels (1, 2, 3, 4);
+        labels (11, 12, 13, 14, 21, 22, 23, 24);
+        draw_staff_if_debugging (-2, 2);
+enddef;
+
+
+fet_beginchar ("Natural", "natural");
+       draw_natural (false, false);
+fet_endchar;
+
+
+fet_beginchar ("Arrowed Natural (arrow up)", "natural.arrowup");
+       draw_natural (true, false);
+fet_endchar;
+
+
+fet_beginchar ("Arrowed Natural (arrow down)", "natural.arrowdown");
+       draw_natural (false, true);
+fet_endchar;
+
+
+fet_beginchar ("Arrowed Natural (arrows up and down)", "natural.arrowboth");
+       draw_natural (true, true);
+fet_endchar;
index 3c255073c8339bb64a559b2119e340c356423466..d71ba2535e923d3382b2c59f7f96a3799de85d59 100644 (file)
@@ -1,46 +1,19 @@
-% Feta (not the Font-En-Tja) music font --  generic stuff: include lots of files, but don't
 % This file is part of LilyPond, the GNU music typesetter.
 %
-% Copyright (C) 1997--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+% Copyright (C) 1997--2014 Han-Wen Nienhuys <hanwen@xs4all.nl>
 %
 % The LilyPond font 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, or under the SIL Open Font License.
-%
-% 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/>.
-
-
-if test = -1:
-       mode := smoke;
-fi
 
-staffsize# := design_size * pt#;
 
-mode_setup;
-
-input feta-macros;
-
-input feta-params;
+input common-modules-and-initialization;
 
 font_x_height staff_space#;
 
 fet_beginfont ("feta", design_size, "fetaMusic");
+       input feta-noteheads;
 
-input feta-noteheads;
-
-autometric_parameter ("staffsize", staffsize#);
-autometric_parameter ("stafflinethickness", stafflinethickness#);
-autometric_parameter ("staff_space", staff_space#);
-autometric_parameter ("linethickness", linethickness#);
-autometric_parameter ("black_notehead_width", black_notehead_width#);
-autometric_parameter ("ledgerlinethickness", ledgerlinethickness#);
-autometric_parameter ("blot_diameter", blot_diameter#);
-
+       input declare-autometric-parameters;
 fet_endfont;
index 82abf14e54bf3fb3ede1de6caab4cb6609a0f1cc..c50a6e8b997b94ee9f9698cc63ae47d3e3e20fff 100644 (file)
@@ -1,7 +1,7 @@
 % Feta (not the Font-En-Tja) music font -- implement noteheads
 % This file is part of LilyPond, the GNU music typesetter.
 %
-% Copyright (C) 1997--2012 Jan Nieuwenhuizen <janneke@gnu.org>
+% Copyright (C) 1997--2014 Jan Nieuwenhuizen <janneke@gnu.org>
 % & Han-Wen Nienhuys <hanwen@xs4all.nl>
 % & Juergen Reuter <reuter@ipd.uka.de>
 %
 test_outlines := 0;
 
 
-save remember_pic;
-picture remember_pic;
-
-
 % Most beautiful noteheads are pronounced, not circular,
 % and not even symmetric.
 % These examples are inspired by [Wanske]; see literature list.
 
 
-
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 % NOTE HEAD VARIABLES
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -159,33 +154,17 @@ enddef;
 fet_beginchar ("Longa notehead", "uM2");
        draw_longa (true);
 
-       draw_staff (-2, 2, 0);
+       draw_staff_if_debugging (-2, 2);
 fet_endchar;
 
 
 fet_beginchar ("Longa notehead", "dM2");
        draw_longa (false);
 
-       draw_staff (-2, 2, 0);
+       draw_staff_if_debugging (-2, 2);
 fet_endchar;
 
 
-if test > 0:
-       fet_beginchar ("Longa notehead", "uM2");
-               draw_longa (true);
-
-               draw_staff (-2, 2, 0.5);
-       fet_endchar;
-
-
-       fet_beginchar ("Longa notehead", "dM2");
-               draw_longa (false);
-
-               draw_staff (-2, 2, 0.5);
-       fet_endchar;
-fi;
-
-
 def draw_brevis (expr linecount, line_thickness_multiplier) =
        save stemthick, fudge, gap;
 
@@ -253,35 +232,17 @@ enddef;
 fet_beginchar ("Brevis notehead", "sM1");
        draw_brevis (1, 1);
 
-       draw_staff (-2, 2, 0);
+       draw_staff_if_debugging (-2, 2);
 fet_endchar;
 
 
-if test > 0:
-       fet_beginchar ("Brevis notehead", "sM1");
-               draw_brevis(1, 1);
-
-               draw_staff (-2, 2, 0.5);
-       fet_endchar;
-fi;
-
-
 fet_beginchar ("Double-lined brevis notehead", "sM1double");
        draw_brevis (2, 0.8);
 
-       draw_staff (-2, 2, 0);
+       draw_staff_if_debugging (-2, 2);
 fet_endchar;
 
 
-if test > 0:
-       fet_beginchar ("Double-lined brevis notehead", "sM1double");
-               draw_brevis (2, 0.8);
-
-               draw_staff (-2, 2, 0.5);
-       fet_endchar;
-fi;
-
-
 fet_beginchar ("Whole notehead", "s0");
        draw_outside_ellipse (1.80 - puff_up_factor / 3.0, 0, 0.707, 0);
        undraw_inside_ellipse (1.30, 125 - puff_up_factor * 10,
@@ -289,60 +250,26 @@ fet_beginchar ("Whole notehead", "s0");
 
        whole_notehead_width# := charwd;
 
-       draw_staff (-2, 2, 0);
+       draw_staff_if_debugging (-2, 2);
 fet_endchar;
 
 
-if test > 0:
-       fet_beginchar ("Whole notehead", "s0");
-               draw_outside_ellipse (1.80 - puff_up_factor / 3.0, 0,
-                                     0.707, 0);
-               undraw_inside_ellipse (1.30, 125 - puff_up_factor * 10,
-                                      0.68, 2 stafflinethickness#);
-
-               draw_staff (-2, 2, 0.5);
-       fet_endchar;
-fi;
-
-
 fet_beginchar ("Half notehead", "s1");
        draw_outside_ellipse (1.53 - puff_up_factor / 3.0, 34, 0.66, 0.17);
        undraw_inside_ellipse (3.25, 33, 0.81, 2.5 stafflinethickness#);
 
        half_notehead_width# := charwd;
 
-       draw_staff (-2, 2, 0);
+       draw_staff_if_debugging (-2, 2);
 fet_endchar;
 
 
-if test > 0:
-       fet_beginchar ("Half notehead", "s1");
-               draw_outside_ellipse (1.53 - puff_up_factor / 3.0, 34,
-                                     0.66, 0.17);
-               undraw_inside_ellipse (3.25, 33, 0.81,
-                                      2.5 stafflinethickness#);
-
-               draw_staff (-2, 2, 0.5);
-       fet_endchar;
-fi;
-
-
 fet_beginchar ("Quarter notehead", "s2");
        draw_quarter_path;
-       draw_staff (-2, 2, 0);
+       draw_staff_if_debugging (-2, 2);
 fet_endchar;
 
 
-if test > 0:
-       fet_beginchar ("Quarter notehead", "s2");
-               draw_outside_ellipse (1.49 - puff_up_factor / 3.0, 31,
-                                     0.707, 0);
-
-               draw_staff (-2, 2, 0.5);
-       fet_endchar;
-fi;
-
-
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 
 
@@ -351,58 +278,26 @@ fet_beginchar ("Whole diamondhead", "s0diamond");
        undraw_inside_ellipse (1.30, 125, 0.6,
                               .4 staff_space# + stafflinethickness#);
 
-       draw_staff (-2, 2, 0);
+       draw_staff_if_debugging (-2, 2);
 fet_endchar;
 
 
-if test > 0:
-       fet_beginchar ("Whole diamondhead", "s0diamond");
-               draw_outside_ellipse (1.80, 0, 0.495, 0);
-               undraw_inside_ellipse (1.30, 125, 0.6,
-                                      .4 staff_space# + stafflinethickness#);
-
-               draw_staff (-2, 2, 0.5);
-       fet_endchar;
-fi;
-
-
 fet_beginchar ("Half diamondhead", "s1diamond");
        draw_outside_ellipse (1.50, 34, 0.49, 0.17);
        undraw_inside_ellipse (3.5, 33, 0.80,
                               .3 staff_space# + 1.5 stafflinethickness#);
 
-       draw_staff (-2, 2, 0);
+       draw_staff_if_debugging (-2, 2);
 fet_endchar;
 
 
-if test > 0:
-       fet_beginchar ("Half diamondhead", "s1diamond");
-               draw_outside_ellipse (1.50, 34, 0.49, 0.17);
-               undraw_inside_ellipse (3.5, 33, 0.80,
-                                      .3 staff_space#
-                                      + 1.5 stafflinethickness#);
-
-               draw_staff (-2, 2, 0.5);
-       fet_endchar;
-fi;
-
-
 fet_beginchar ("Quarter diamondhead", "s2diamond");
        draw_outside_ellipse (1.80, 35, 0.495, -0.25);
 
-       draw_staff (-2, 2, 0);
+       draw_staff_if_debugging (-2, 2);
 fet_endchar;
 
 
-if test > 0:
-       fet_beginchar ("Quarter diamondhead", "s2diamond");
-               draw_outside_ellipse (1.80, 35, 0.495, -0.25);
-
-               draw_staff (-2, 2, 0.5);
-       fet_endchar;
-fi;
-
-
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 
 
@@ -561,19 +456,10 @@ enddef;
 fet_beginchar ("Whole trianglehead", "s0triangle");
        draw_whole_triangle_head;
 
-       draw_staff (-2, 2, 0);
+       draw_staff_if_debugging (-2, 2);
 fet_endchar;
 
 
-if test > 0:
-       fet_beginchar ("Whole trianglehead", "s0triangle");
-               draw_whole_triangle_head;
-
-               draw_staff (-2, 2, 0.5);
-       fet_endchar;
-fi;
-
-
 def draw_small_triangle_head (expr dir) =
        save hei, xs;
        save llap;
@@ -595,14 +481,14 @@ enddef;
 fet_beginchar ("Half trianglehead (downstem)", "d1triangle");
        draw_small_triangle_head (-1);
 
-       draw_staff (-2, 2, 0);
+       draw_staff_if_debugging (-2, 2);
 fet_endchar;
 
 
 fet_beginchar ("Half trianglehead (upstem)", "u1triangle");
        draw_small_triangle_head (1);
 
-       draw_staff (-2, 2, 0.5);
+       draw_staff_if_debugging (-2, 2);
 fet_endchar;
 
 
@@ -623,14 +509,14 @@ enddef;
 fet_beginchar ("Quarter trianglehead (upstem)", "u2triangle");
        draw_closed_triangle_head (1);
 
-       draw_staff (-2, 2, 0);
+       draw_staff_if_debugging (-2, 2);
 fet_endchar;
 
 
 fet_beginchar ("Quarter trianglehead (downstem)", "d2triangle");
        draw_closed_triangle_head (-1);
 
-       draw_staff (-2, 2, 0.5);
+       draw_staff_if_debugging (-2, 2);
 fet_endchar;
 
 
@@ -707,21 +593,21 @@ enddef;
 fet_beginchar ("Whole slashhead", "s0slash");
        draw_slash (4 slash_thick# + 0.5 staff_space#);
 
-       draw_staff (-2, 2, 0);
+       draw_staff_if_debugging (-2, 2);
 fet_endchar;
 
 
 fet_beginchar ("Half slashhead", "s1slash");
        draw_slash (3.0 slash_thick# + 0.15 staff_space#);
 
-       draw_staff (-2, 2, 0);
+       draw_staff_if_debugging (-2, 2);
 fet_endchar;
 
 
 fet_beginchar ("Quarter slashhead", "s2slash");
        draw_slash (1.5 slash_thick#);
 
-       draw_staff (-2, 2, 0);
+       draw_staff_if_debugging (-2, 2);
 fet_endchar;
 
 
@@ -835,28 +721,10 @@ fet_beginchar ("Whole Crossed notehead", "s0cross");
 
        draw_cross (3.75);
 
-       remember_pic := currentpicture;
-
-       draw_staff (-2, 2, 0);
+       draw_staff_if_debugging (-2, 2);
 fet_endchar;
 
 
-if test > 0:
-       fet_beginchar ("Whole Crossed notehead", "s0cross");
-               save wid, hei;
-
-               wid# := black_notehead_width# + 4 stafflinethickness#;
-               hei# := noteheight# + stafflinethickness#;
-
-               set_char_box (0, wid#, hei# / 2, hei# / 2);
-
-               currentpicture := remember_pic;
-
-               draw_staff (-2, 2, 0.5);
-       fet_endchar;
-fi;
-
-
 fet_beginchar ("Half Crossed notehead", "s1cross");
        save wid, hei;
 
@@ -867,28 +735,10 @@ fet_beginchar ("Half Crossed notehead", "s1cross");
 
        draw_cross (3.0);
 
-       remember_pic := currentpicture;
-
-       draw_staff (-2, 2, 0);
+       draw_staff_if_debugging (-2, 2);
 fet_endchar;
 
 
-if test > 0:
-       fet_beginchar ("Half Crossed notehead", "s1cross");
-               save wid, hei;
-
-               wid# := black_notehead_width# + 2 stafflinethickness#;
-               hei# := noteheight# + stafflinethickness# / 2;
-
-               set_char_box (0, wid#, hei# / 2, hei# / 2);
-
-               currentpicture := remember_pic;
-
-               draw_staff (-2, 2, 0.5);
-       fet_endchar;
-fi;
-
-
 fet_beginchar ("Crossed notehead", "s2cross");
        wid# := black_notehead_width#;
        hei# := noteheight#;
@@ -896,25 +746,10 @@ fet_beginchar ("Crossed notehead", "s2cross");
 
        draw_cross (1.0);
 
-       remember_pic := currentpicture;
-
-       draw_staff (-2, 2, 0);
+       draw_staff_if_debugging (-2, 2);
 fet_endchar;
 
 
-if test > 0:
-       fet_beginchar ("Crossed notehead", "s2cross");
-               wid# := black_notehead_width#;
-               hei# := noteheight#;
-               set_char_box (0, wid#, hei# / 2, hei# / 2);
-
-               currentpicture := remember_pic;
-
-               draw_staff (-2, 2, 0.5);
-       fet_endchar;
-fi;
-
-
 fet_beginchar ("X-Circled notehead", "s2xcircle");
        save wid, hei;
        save cthick, cxd, cyd, dy;
@@ -960,29 +795,10 @@ fet_beginchar ("X-Circled notehead", "s2xcircle");
        z12 = (charwx * hppp, charwy * vppp);
        labels (12);
 
-       remember_pic := currentpicture;
-
-       draw_staff (-2, 2, 0);
+       draw_staff_if_debugging (-2, 2);
 fet_endchar;
 
 
-if test > 0:
-       fet_beginchar ("X-Circled notehead", "s2xcircle");
-               save wid, hei;
-               save cthick, cxr, cyr;
-
-               wid# := black_notehead_width# * sqrt (sqrt2);
-               hei# := noteheight# * sqrt (sqrt2);
-
-               set_char_box (0, wid#, hei# / 2, hei# / 2);
-
-               currentpicture := remember_pic;
-
-               draw_staff (-2, 2, 0.5);
-       fet_endchar;
-fi;
-
-
 %%%%%%%%
 %
 % SOLFA SHAPED NOTES
@@ -1406,66 +1222,65 @@ def draw_mi_head (expr width_factor, thickness_factor, mirror) =
 enddef;
 
 
-save mi_weight, mi_width;
+save mi_weight;
 mi_weight := 2;
-mi_width := 1.2;
 
 fet_beginchar ("Whole mihead", "s0mi");
-       draw_mi_head (mi_width * solfa_whole_width, mi_weight, false);
+       draw_mi_head (solfa_whole_width, mi_weight, false);
        fill path_out;
        unfill path_in;
 fet_endchar;
 
 
 fet_beginchar ("Half mihead", "s1mi");
-       draw_mi_head (mi_width * solfa_quarter_width, mi_weight, false);
+       draw_mi_head (solfa_quarter_width, mi_weight, false);
        fill path_out;
        unfill path_in;
 fet_endchar;
 
 
 fet_beginchar ("Quarter mihead", "s2mi");
-       draw_mi_head (mi_width * solfa_quarter_width, mi_weight, false);
+       draw_mi_head (solfa_quarter_width, mi_weight, false);
        fill path_out;
 fet_endchar;
 
 
 fet_beginchar ("Whole mirror mihead", "s0miMirror");
-       draw_mi_head (mi_width * solfa_whole_width, mi_weight, true);
+       draw_mi_head (solfa_whole_width, mi_weight, true);
        fill path_out;
        unfill path_in;
 fet_endchar;
 
 
 fet_beginchar ("Half  mirror mihead", "s1miMirror");
-       draw_mi_head (mi_width * solfa_quarter_width, mi_weight, true);
+       draw_mi_head (solfa_quarter_width, mi_weight, true);
        fill path_out;
        unfill path_in;
 fet_endchar;
 
 
 fet_beginchar ("Quarter mirror mihead", "s2miMirror");
-       draw_mi_head (mi_width * solfa_quarter_width, mi_weight, true);
+       draw_mi_head (solfa_quarter_width, mi_weight, true);
        fill path_out;
 fet_endchar;
 
 
 fet_beginchar ("Whole thin mihead", "s0miThin");
-       draw_mi_head (mi_width * solfa_whole_width, 1, false);
+       draw_mi_head (solfa_whole_width, 1, false);
        fill path_out;
        unfill path_in;
 fet_endchar;
 
 
 fet_beginchar ("Half thin mihead", "s1miThin");
-       draw_mi_head (mi_width * solfa_quarter_width, 1, false);
+       draw_mi_head (solfa_quarter_width, 1, false);
        fill path_out;
        unfill path_in;
 fet_endchar;
 
 
 fet_beginchar ("Quarter thin mihead", "s2miThin");
-       draw_mi_head (mi_width * solfa_quarter_width, 1, false);
+       draw_mi_head (solfa_quarter_width, 1, false);
        fill path_out;
 fet_endchar;
 
@@ -1630,11 +1445,12 @@ fet_endchar;
 %       so we can't just use the standard note font.
 %
 def draw_sol_head (expr filled) =
-       draw_outside_ellipse (1.53 - puff_up_factor / 3.0, 34, 0.66, 0.17);
+       draw_outside_ellipse (1.49 - puff_up_factor / 3.0, 31, 0.707, 0);
        if not filled:
-         undraw_inside_ellipse (3.25, 33, 0.81, 2.5 stafflinethickness#);
+         undraw_inside_ellipse (2.5 - puff_up_factor / 3.0, 31, 0.707,
+                                 3.5 stafflinethickness#);
        fi
-       draw_staff (-2, 2, 0);
+       draw_staff_if_debugging (-2, 2);
 enddef;
 
 fet_beginchar ("Whole solhead", "s0sol");
@@ -2150,12 +1966,11 @@ fet_endchar;
 %       Diamond shape
 %       Has up and down shapes for all hollow notes
 %
-save funk_mi_width, funk_mi_weight;
-funk_mi_width := 1.2;
+save funk_mi_weight;
 funk_mi_weight := 1.9;
 
 fet_beginchar ("Whole up Funk mihead", "u0miFunk");
-       draw_mi_head (funk_mi_width * funk_notehead_width,
+       draw_mi_head (funk_notehead_width,
                      funk_mi_weight, false);
        fill path_out;
        unfill path_in;
@@ -2163,7 +1978,7 @@ fet_endchar;
 
 
 fet_beginchar ("Whole down Funk mihead", "d0miFunk");
-       draw_mi_head (funk_mi_width * funk_notehead_width,
+       draw_mi_head (funk_notehead_width,
                      funk_mi_weight, true);
        fill path_out;
        unfill path_in;
@@ -2171,7 +1986,7 @@ fet_endchar;
 
 
 fet_beginchar ("Half up Funk mihead", "u1miFunk");
-       draw_mi_head (funk_mi_width * funk_notehead_width,
+       draw_mi_head (funk_notehead_width,
                      funk_mi_weight, false);
        fill path_out;
        unfill path_in;
@@ -2179,7 +1994,7 @@ fet_endchar;
 
 
 fet_beginchar ("Half down Funk mihead", "d1miFunk");
-       draw_mi_head (funk_mi_width * funk_notehead_width,
+       draw_mi_head (funk_notehead_width,
                      funk_mi_weight, true);
        fill path_out;
        unfill path_in;
@@ -2187,7 +2002,7 @@ fet_endchar;
 
 
 fet_beginchar ("Quarter Funk mihead", "s2miFunk");
-       draw_mi_head (funk_mi_width * funk_notehead_width,
+       draw_mi_head (funk_notehead_width,
                      funk_mi_weight, false);
        fill path_out;
 fet_endchar;
@@ -2253,7 +2068,7 @@ begingroup
        if not filled:
          undraw_inside_ellipse (1.9, 33, 0.74, 5.5 stafflinethickness#);
        fi
-       draw_staff (-2, 2, 0);
+       draw_staff_if_debugging (-2, 2);
 endgroup
 enddef;
 
@@ -2695,7 +2510,7 @@ fet_endchar;
 %       Symmetric for all hollow notes
 %
 save walker_mi_width, walker_mi_weight;
-walker_mi_width := 1.2;
+walker_mi_width := 1;
 walker_mi_weight := 1.5;
 
 fet_beginchar ("Whole Walker mihead", "s0miWalker");
index b02844a196b9c693c85b97425e51c003afc5d77d..cba81dee23421118c5303dd209433bd27523faa4 100644 (file)
@@ -1,13 +1,5 @@
-% feta-noteheads11.mf
-% part of LilyPond's pretty-but-neat music font
-
-input feta-autometric;
+% Produce font files at specified size.
 
 design_size := 11.22;
-test := 0;
-
-
 input feta-noteheads-generic;
-
 end.
-
index e010769f4b20fcca22ef64e2afaa16e0884ec108..0516809917211e567793cdf54852cfc195d618c4 100644 (file)
@@ -1,13 +1,5 @@
-% feta-noteheads13.mf
-% part of LilyPond's pretty-but-neat music font
-
-input feta-autometric;
+% Produce font files at specified size.
 
 design_size := 12.60;
-test := 0;
-
-
 input feta-noteheads-generic;
-
 end.
-
index 7d25cb2a60b665ca2d58287f564fb50a0dd73ef9..14d3b78b01fd0aea253d568081c72c27d624ab75 100644 (file)
@@ -1,13 +1,5 @@
-% feta-noteheads14.mf
-% part of LilyPond's pretty-but-neat music font
-
-input feta-autometric;
+% Produce font files at specified size.
 
 design_size := 14.14;
-test := 0;
-
-
 input feta-noteheads-generic;
-
 end.
-
index 755f9ffdd518572b192b552709bd791a9b13562f..8c8370dc5931eb14bb0c662c5e6c9ce25b4425de 100644 (file)
@@ -1,13 +1,5 @@
-% feta-noteheads16.mf
-% part of LilyPond's pretty-but-neat music font
-
-input feta-autometric;
+% Produce font files at specified size.
 
 design_size := 15.87;
-test := 0;
-
-
 input feta-noteheads-generic;
-
 end.
-
index bdc6918bf36698f35e7229ccc041bc1f31835fcd..a1e705c48c5454427dd40dfe998ed9bd58200dbf 100644 (file)
@@ -1,13 +1,5 @@
-% feta-noteheads18.mf
-% part of LilyPond's pretty-but-neat music font
-
-input feta-autometric;
+% Produce font files at specified size.
 
 design_size := 17.82;
-test := 0;
-
-
 input feta-noteheads-generic;
-
 end.
-
index 072f99207c29d907fd46b310ebea366424315073..9ac9379de258adf8dabab88d4c1ee02d03dca0eb 100644 (file)
@@ -1,13 +1,5 @@
-% feta-noteheads20.mf
-% part of LilyPond's pretty-but-neat music font
-
-input feta-autometric;
+% Produce font files at specified size.
 
 design_size := 20;
-test := 0;
-
-
 input feta-noteheads-generic;
-
 end.
-
index ab0154832eda9bd55404c9e84143040d78659507..f6ddb0db4483e773300472b01205f14d4688006b 100644 (file)
@@ -1,13 +1,5 @@
-% feta-noteheads23.mf
-% part of LilyPond's pretty-but-neat music font
-
-input feta-autometric;
+% Produce font files at specified size.
 
 design_size := 22.45;
-test := 0;
-
-
 input feta-noteheads-generic;
-
 end.
-
index b25d21495c0a8416db183db6324ea37822c6091f..e72c7012d57c0f88ed4e1d679604a0e604cd3615 100644 (file)
@@ -1,13 +1,5 @@
-% feta-noteheads26.mf
-% part of LilyPond's pretty-but-neat music font
-
-input feta-autometric;
+% Produce font files at specified size.
 
 design_size := 25.20;
-test := 0;
-
-
 input feta-noteheads-generic;
-
 end.
-
index 8ec75697ae2fc62870d0facc84adf8d93c4cff90..15c82bd2e067a89e4f8f1b3aa7a52163405ff178 100644 (file)
@@ -1,7 +1,7 @@
 % Feta (not the Font-En-Tja) music font --  bold Orator numerals
 % This file is part of LilyPond, the GNU music typesetter.
 %
-% Copyright (C) 1997--2012 Jan Nieuwenhuizen <janneke@gnu.org>
+% Copyright (C) 1997--2014 Jan Nieuwenhuizen <janneke@gnu.org>
 %
 % The LilyPond font is free software: you can redistribute it and/or modify
 % it under the terms of the GNU General Public License as published by
diff --git a/mf/feta-other-generic.mf b/mf/feta-other-generic.mf
new file mode 100644 (file)
index 0000000..65df831
--- /dev/null
@@ -0,0 +1,29 @@
+% This file is part of LilyPond, the GNU music typesetter.
+%
+% Copyright (C) 1997--2014 Han-Wen Nienhuys <hanwen@xs4all.nl>
+%
+% The LilyPond font 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, or under the SIL Open Font License.
+
+
+input common-modules-and-initialization;
+
+font_x_height staff_space#;
+
+fet_beginfont ("feta", design_size, "fetaMusic");
+       input feta-rests;
+       input feta-accidentals;
+       input feta-arrowheads;
+       input feta-dots;
+       input feta-scripts;
+       input feta-clefs;
+       input feta-timesignatures;
+       input feta-pedals;
+       input feta-brackettips;
+       input feta-accordion;
+       input feta-ties;
+
+       input declare-autometric-parameters;
+fet_endfont;
index 8336df3306f441d7627d39def7926a3a196a3342..c771e4e44aeb726f12634743866e6c4e419941d7 100644 (file)
@@ -1,7 +1,7 @@
 % Feta (not the Font-En-Tja) music font -- global parameters for both feta and parmesan fonts
 % This file is part of LilyPond, the GNU music typesetter.
 %
-% Copyright (C) 1997--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+% Copyright (C) 1997--2014 Han-Wen Nienhuys <hanwen@xs4all.nl>
 %
 % The LilyPond font is free software: you can redistribute it and/or modify
 % it under the terms of the GNU General Public License as published by
diff --git a/mf/feta-parenthesis.mf b/mf/feta-parenthesis.mf
new file mode 100644 (file)
index 0000000..ad2561a
--- /dev/null
@@ -0,0 +1,44 @@
+
+
+def draw_paren =
+       save leftindent;
+
+       leftindent := .2 staff_space;
+
+       set_char_box (0, .5 staff_space# + stafflinethickness#,
+                     staff_space#, staff_space#);
+
+       d := d - feta_shift;
+
+       z1 = (leftindent, h);
+       z2 = (w - stafflinethickness, .5 (h - d));
+       z3 = (leftindent, -d);
+
+       penpos1 (stafflinethickness, 35);
+       penpos2 (.1 staff_space + stafflinethickness, 0);
+       penpos3 (stafflinethickness, -35);
+
+       fill z2l{down}
+            .. simple_serif (z3l, z3r, 90)
+            .. z2r{up}
+            .. simple_serif (z1r, z1l, 90)
+            .. z2l{down}
+            -- cycle;
+enddef;
+
+
+fet_beginchar ("Right Parenthesis", "rightparen");
+       draw_paren;
+       penlabels (1, 2, 3);
+
+        draw_staff_if_debugging (-2, 2);
+fet_endchar;
+
+
+fet_beginchar ("Left Parenthesis", "leftparen");
+       draw_paren;
+
+       currentpicture := currentpicture xscaled -1;
+
+       set_char_box (charwd, charbp, chardp, charht);
+fet_endchar;
index b4979ca4a6c608358390562f474cb6b28189224e..7e992f35cb1f2faa14a5cb24cfd20a0ab68e1771 100644 (file)
@@ -1,7 +1,7 @@
 % Feta (not the Font-En-Tja) music font -- piano pedal markings
 % This file is part of LilyPond, the GNU music typesetter.
 %
-% Copyright (C) 2000--2012 Jan Nieuwenhuizen <janneke@gnu.org>
+% Copyright (C) 2000--2014 Jan Nieuwenhuizen <janneke@gnu.org>
 %
 % Voor Cup
 %
index 09439853a0b35a0b830e80db8bf5ec04d57985c2..0a9d7ea43d9234e1da701dcf473103a39608e731 100644 (file)
@@ -1,7 +1,7 @@
 % Feta (not the Font-En-Tja) music font --  rest symbols -*-Fundamental-*-
 % This file is part of LilyPond, the GNU music typesetter.
 %
-% Copyright (C) 1997--2012 Jan Nieuwenhuizen <janneke@gnu.org>
+% Copyright (C) 1997--2014 Jan Nieuwenhuizen <janneke@gnu.org>
 %
 % The LilyPond font is free software: you can redistribute it and/or modify
 % it under the terms of the GNU General Public License as published by
@@ -43,7 +43,7 @@ fet_beginchar ("whole rest", "0");
        currentpicture := currentpicture
                            shifted (0, -block_rest_y + feta_space_shift);
 
-       draw_staff (-2, 2, 0);
+       draw_staff_if_debugging (-2, 2);
 fet_endchar;
 
 
@@ -52,7 +52,7 @@ fet_beginchar ("half rest", "1");
 
        block_rest;
 
-       draw_staff (-2, 2, 0);
+       draw_staff_if_debugging (-2, 2);
 fet_endchar;
 
 
@@ -72,8 +72,6 @@ fet_beginchar ("whole rest (outside staff)", "0o");
        lft x5 = -b - block_rest_y;
        rt x6 = w + block_rest_y;
        draw_gridline (z5, z6, ledgerlinethickness_rounded);
-
-       draw_staff (-2, 2, -3);
 fet_endchar;
 
 
@@ -90,8 +88,6 @@ fet_beginchar ("half rest (outside staff)", "1o");
        rt x6 = w + block_rest_y;
 
        draw_gridline (z5, z6, ledgerlinethickness_rounded);
-
-       draw_staff (-2, 2, 3);
 fet_endchar;
 
 
@@ -103,7 +99,7 @@ fet_beginchar ("maxima rest", "M3");
 
        addto currentpicture also currentpicture shifted (2 breve_rest_x, 0);
 
-       draw_staff (-2, 2, 0);
+       draw_staff_if_debugging (-2, 2);
 fet_endchar;
 
 
@@ -113,7 +109,7 @@ fet_beginchar ("longa rest", "M2");
        draw_block ((0, -breve_rest_y + feta_shift),
                    (breve_rest_x, breve_rest_y));
 
-       draw_staff (-2, 2, 0);
+       draw_staff_if_debugging (-2, 2);
 fet_endchar;
 
 
@@ -122,7 +118,7 @@ fet_beginchar ("breve rest", "M1");
 
        draw_block ((0, 0), (breve_rest_x, breve_rest_y));
 
-       draw_staff (-2, 2, 0);
+       draw_staff_if_debugging (-2, 2);
 fet_endchar;
 
 fet_beginchar ("breve rest (outside staff)", "M1o");
@@ -139,8 +135,6 @@ fet_beginchar ("breve rest (outside staff)", "M1o");
 
        draw_gridline (z5, z6, ledgerlinethickness_rounded);
        draw_gridline ((x5, 0), (x6, 0), ledgerlinethickness_rounded);
-
-       draw_staff (-2, 2, 3);
 fet_endchar;
 
 
@@ -226,7 +220,7 @@ fet_beginchar ("Quarter rest", "2");
        penlabels (1, 2, 3, 4, 5, 6, 7);
        penlabels (10, 11, 12, 13);
 
-       draw_staff (-2, 2, 0);
+       draw_staff_if_debugging (-2, 2);
 fet_endchar;
 
 
@@ -374,7 +368,7 @@ def draw_eighth_rest (expr show_labels) =
             -- z1l
             .. cycle;
 
-       draw_staff (-2, 2, 0);
+       draw_staff_if_debugging (-2, 2);
 enddef;
 
 
@@ -440,7 +434,7 @@ fet_beginchar ("16th rest", "4");
        penlabels (1, 2);
        labels (9);
 
-       draw_staff (-2, 2, 0);
+       draw_staff_if_debugging (-2, 2);
 fet_endchar;
 
 
@@ -494,7 +488,7 @@ fet_beginchar ("32th rest", "5");
        penlabels (1, 2);
        labels (9);
 
-       draw_staff (-2, 2, 0);
+       draw_staff_if_debugging (-2, 2);
 fet_endchar;
 
 
@@ -552,7 +546,7 @@ fet_beginchar ("64th rest", "6");
        penlabels (1, 2);
        labels (9);
 
-       draw_staff (-2, 2, 0);
+       draw_staff_if_debugging (-2, 2);
 fet_endchar;
 
 
@@ -614,7 +608,7 @@ fet_beginchar ("128th rest", "7");
        penlabels (1, 2);
        labels (9);
 
-       draw_staff (-2, 2, 0);
+       draw_staff_if_debugging (-2, 2);
 fet_endchar;
 
 
index 91c3ae1fe49867c126308b3571d266194eb30479..e7f3c66eb8f4da0a768ad018fff8797e05188412 100644 (file)
@@ -1,7 +1,7 @@
 % Feta (not the Font-En-Tja) music font --  implement scripts
 % This file is part of LilyPond, the GNU music typesetter.
 %
-% Copyright (C) 1997--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+% Copyright (C) 1997--2014 Han-Wen Nienhuys <hanwen@xs4all.nl>
 %      Jan Nieuwenhuizen <janneke@gnu.org>
 %
 %
@@ -1277,7 +1277,6 @@ fet_beginchar ("Varied Segno", "varsegno");
        addto currentpicture also currentpicture scaled -1;
 
        penlabels (1, 1', 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12);
-       % draw_staff (-2, 2, 0);
 fet_endchar;
 
 
@@ -1495,7 +1494,7 @@ fet_beginchar ("Arpeggio", "arpeggio");
        draw_arpeggio;
        penlabels (range 1 thru 9);
 
-       draw_staff (-2, 2, 0.0);
+       draw_staff_if_debugging (-2, 2);
        endgroup;
 fet_endchar;
 
diff --git a/mf/feta-sharps.mf b/mf/feta-sharps.mf
new file mode 100644 (file)
index 0000000..eeade7d
--- /dev/null
@@ -0,0 +1,339 @@
+
+%
+% The beams of most sharps have horizontal endings (as if drawn with
+% a square pen).  [Wanske] does not mention this, so we'll just ignore
+% this fact.
+%
+
+save default_width, default_height, onestemmed_height;
+save default_interbeam_dist, triples_interbeam_dist;
+save default_beam_thickness, stem_thickness;
+
+default_width# := 1.1 staff_space#;
+default_height# := 3 staff_space#;
+onestemmed_height# := 2.66 staff_space#;
+define_pixels (default_width);
+
+default_interbeam_dist := 1.05 staff_space_rounded;
+triples_interbeam_dist := 1.2 staff_space_rounded;
+
+default_beam_thickness# := 0.3 staff_space# + stafflinethickness#;
+stem_thickness# := stafflinethickness# + .05 staff_space#;
+define_whole_blacker_pixels (stem_thickness);
+
+
+def draw_sharp_beam (expr length, y_offset) =
+        save beam_length;
+        save ne_beam_dir, nw_dist;
+        pair ne_beam_dir, nw_dist;
+
+        beam_length := length;
+
+        define_whole_vertical_blacker_pixels (default_beam_thickness);
+
+        clearxy;
+
+        pickup pencircle scaled 2 blot_diameter;
+
+        rt x2 - lft x1 = beam_length;
+        z2 = z1 + whatever * (beam_length, default_beam_thickness);
+        .5 [z1, z3] = (.5 w, y_offset);
+        x3 = x2;
+        top y2 - bot y3 = default_beam_thickness;
+        x4 = x1;
+        top y1 - bot y4 = default_beam_thickness;
+
+        ne_beam_dir = unitvector (z2 - z1);
+        nw_dist = (ne_beam_dir rotated 90) * blot_diameter;
+
+        fill lft z1{up}
+             ... (z1 + nw_dist){ne_beam_dir}
+             -- (z2 + nw_dist){ne_beam_dir}
+             ... rt z2{down}
+             -- rt z3{down}
+             ... (z3 - nw_dist){-ne_beam_dir}
+             -- (z4 - nw_dist){-ne_beam_dir}
+             ... lft z4{up}
+             -- cycle;
+
+       labels (1, 2, 3, 4);
+enddef;
+
+
+def draw_sharp (expr arrowup, arrowdown) =
+        save dist_between_stems;
+        save outer_space;
+        save half_height, interbeam_dist;
+
+        half_height# := 0.5 default_height#;
+        define_pixels (half_height);
+        interbeam_dist := default_interbeam_dist;
+
+        set_char_box (0, default_width#, half_height#, half_height#);
+        d := d - feta_space_shift;
+
+        dist_between_stems := hround (7 / 16 * default_width);
+        outer_space := hround ((w - dist_between_stems - stem_thickness) / 2);
+
+        w := 2 outer_space + dist_between_stems + stem_thickness;
+
+        draw_sharp_beam (w, -.5 interbeam_dist);
+        draw_sharp_beam (w, -.5 interbeam_dist + vround interbeam_dist);
+
+        % expand the charbox so that it encloses the whole arrow;
+        % this must not happen earlier because some commands above
+        % still rely on the old width
+        if arrowup:
+                w := w + 1.5 stafflinethickness;
+                h := h + 1.2 staff_space;
+        fi;
+        if arrowdown:
+                b := b + 1.5 stafflinethickness;
+                d := d + 1.2 staff_space;
+        fi;
+
+        pickup pencircle scaled stem_thickness;
+
+        lft x5 = lft x6 = outer_space;
+        lft x7 = lft x8 = outer_space + dist_between_stems;
+        bot y5 = -half_height;
+        top y8 = half_height;
+        z6 = z8 + whatever * ne_beam_dir;
+        bot y7 = -top y6 + feta_space_shift;
+
+        draw_gridline (z5, z6, stem_thickness);
+        draw_gridline (z7, z8, stem_thickness);
+
+        if arrowup:
+                draw_arrow (z8, stem_thickness, up,
+                            stafflinethickness / 2 + stem_thickness / 2, false);
+        fi;
+        if arrowdown:
+                draw_arrow (z5, stem_thickness, up,
+                            stafflinethickness / 2 + stem_thickness / 2, true);
+        fi;
+
+        labels (5, 6, 7, 8);
+        draw_staff_if_debugging (-2, 2);
+enddef;
+
+
+fet_beginchar ("Sharp", "sharp");
+       draw_sharp (false, false);
+fet_endchar;
+
+
+fet_beginchar ("Arrowed Sharp (arrow up)", "sharp.arrowup");
+       draw_sharp (true, false);
+fet_endchar;
+
+
+fet_beginchar ("Arrowed Sharp (arrow down)", "sharp.arrowdown");
+       draw_sharp (false, true);
+fet_endchar;
+
+
+fet_beginchar ("Arrowed Sharp (arrows up and down)", "sharp.arrowboth");
+       draw_sharp (true, true);
+fet_endchar;
+
+
+fet_beginchar ("1/2 Sharp", "sharp.slashslash.stem");
+        save outer_space;
+        save half_height, interbeam_dist;
+
+        half_height# := 0.5 onestemmed_height#;
+        define_pixels (half_height);
+        interbeam_dist := default_interbeam_dist;
+
+        set_char_box (0, 0.7 staff_space#, half_height#, half_height#);
+        d := d - feta_space_shift;
+
+        outer_space := hround ((w - stem_thickness) / 2);
+
+        w := 2 outer_space + stem_thickness;
+
+        draw_sharp_beam (w, -.5 interbeam_dist);
+        draw_sharp_beam (w, -.5 interbeam_dist + vround interbeam_dist);
+
+        pickup pencircle scaled stem_thickness;
+
+        lft x5 = lft x6 = outer_space;
+        top y6 = half_height;
+        bot y5 = -top y6 + feta_space_shift;
+
+        draw_gridline (z5, z6, stem_thickness);
+
+        labels (5, 6);
+        draw_staff_if_debugging (-2, 2);
+fet_endchar;
+
+
+fet_beginchar ("Sharp (3 beams)", "sharp.slashslashslash.stemstem");
+        save dist_between_stems;
+        save outer_space;
+        save half_height, interbeam_dist;
+        save default_beam_thickness;
+
+        half_height# := 0.5 default_height#;
+        define_pixels (half_height);
+        interbeam_dist := triples_interbeam_dist;
+
+        default_beam_thickness# := 0.22 staff_space# + stafflinethickness#;
+
+        set_char_box (0, default_width#, half_height#, half_height#);
+
+        dist_between_stems := hround (7 / 16 * default_width);
+        outer_space := hround ((w - dist_between_stems - stem_thickness) / 2);
+
+        w := 2 outer_space + dist_between_stems + stem_thickness;
+        d := d - feta_space_shift;
+
+        draw_sharp_beam (.88 w, -.5 interbeam_dist);
+        draw_sharp_beam (.88 w, -.5 interbeam_dist + vround interbeam_dist);
+        default_beam_thickness# := 1/.88 default_beam_thickness#;
+        draw_sharp_beam (w, 0);
+
+        pickup pencircle scaled stem_thickness;
+
+        lft x5 = lft x6 = outer_space;
+        lft x7 = lft x8 = outer_space + dist_between_stems;
+        bot y5 = -half_height;
+        top y8 = half_height;
+        z6 = z8 + whatever * ne_beam_dir;
+        bot y7 = -top y6 + feta_space_shift;
+
+        draw_gridline (z5, z6, stem_thickness);
+        draw_gridline (z7, z8, stem_thickness);
+
+        labels (5, 6, 7, 8);
+        draw_staff_if_debugging (-2, 2);
+fet_endchar;
+
+
+fet_beginchar ("1/2 Sharp (3 beams)", "sharp.slashslashslash.stem");
+        save outer_space;
+        save half_height, interbeam_dist;
+        save default_beam_thickness;
+
+        half_height# := 0.5 onestemmed_height#;
+        define_pixels (half_height);
+        interbeam_dist := triples_interbeam_dist;
+
+        default_beam_thickness# := 0.22 staff_space# + stafflinethickness#;
+
+        set_char_box (0, 0.95 staff_space#, half_height#, half_height#);
+
+        outer_space := hround ((w - stem_thickness) / 2);
+
+        w := 2 outer_space + stem_thickness;
+        d := d - feta_space_shift;
+
+        draw_sharp_beam (.8 w, -.5 interbeam_dist);
+        draw_sharp_beam (.8 w, -.5 interbeam_dist + vround interbeam_dist);
+        default_beam_thickness# := 1/.8 default_beam_thickness#;
+        draw_sharp_beam (w, 0);
+
+        pickup pencircle scaled stem_thickness;
+
+        lft x5 = lft x6 = outer_space;
+        top y6 = half_height;
+        bot y5 = -top y6 + feta_space_shift;
+
+        draw_gridline (z5, z6, stem_thickness);
+
+        labels (5, 6);
+        draw_staff_if_debugging (-2, 2);
+fet_endchar;
+
+
+fet_beginchar ("3/4 Sharp", "sharp.slashslash.stemstemstem");
+        save dist_between_stems;
+        save outer_space;
+        save half_height, interbeam_dist;
+
+        half_height# := 0.5 default_height#;
+        define_pixels (half_height);
+        interbeam_dist := default_interbeam_dist;
+
+        set_char_box (0, 1.6 staff_space#, half_height#, half_height#);
+        d := d - feta_space_shift;
+
+        dist_between_stems := hround (9 / 32 * w);
+        outer_space := hround ((w - 2 dist_between_stems - stem_thickness) / 2);
+
+        w := 2 outer_space + 2 dist_between_stems + stem_thickness;
+
+        draw_sharp_beam (w, -.5 interbeam_dist);
+        draw_sharp_beam (w, -.5 interbeam_dist + vround interbeam_dist);
+
+        pickup pencircle scaled stem_thickness;
+
+        lft x5 = lft x6 = outer_space;
+        lft x9 = lft x10 = outer_space + dist_between_stems;
+        lft x7 = lft x8 = outer_space + 2 dist_between_stems;
+        bot y5 = -half_height;
+        top y8 = half_height;
+        z6 = z8 + whatever * ne_beam_dir;
+        bot y7 = -top y6 + feta_space_shift;
+        y9 = .5 [y5, y7];
+        y10 = .5 [y6, y8];
+
+        draw_gridline (z5, z6, stem_thickness);
+        draw_gridline (z7, z8, stem_thickness);
+        draw_gridline (z9, z10, stem_thickness);
+
+        labels (5, 6, 7, 8, 9, 10);
+        draw_staff_if_debugging (-2, 2);
+fet_endchar;
+
+
+fet_beginchar ("Double Sharp", "doublesharp");
+        save klaverblad, klaversteel;
+        save pat;
+        path pat;
+
+        klaversteel = 1/15 staff_space;
+        klaverblad = .4 staff_space - .5 stafflinethickness;
+
+        set_char_box (0, staff_space#, .5 staff_space#, .5 staff_space#);
+
+        z1 = (klaversteel, 0);
+        z2 = (w / 2 - klaverblad / 10, h - klaverblad);
+        z3 = (w / 2, h);
+        z4 = z2 reflectedabout ((0, 0), (1, 1));
+        z5 = z1 reflectedabout ((0, 0), (1, 1));
+
+        pickup pencircle scaled blot_diameter;
+
+        x2 := hfloor (rt x2) - blot_diameter / 2;
+        x3 := hfloor (rt x3) - blot_diameter / 2;
+        y3 := vfloor (top y3) - blot_diameter / 2;
+        y4 := vfloor (top y4) - blot_diameter / 2;
+
+        pat = (rt z1){dir45}
+              .. {right}(bot z2)
+              .. rt z2
+              -- rt z3{z3 - z2}
+              .. top z3{z4 - z3}
+              -- top z4{z4 - z3}
+              .. (lft z4){down}
+              .. {dir 225}(top z5);
+        pat := pat
+               -- reverse pat xscaled -1 shifted (-feta_eps, 0);
+
+        % assure symmetry -- it's more important to center the glyph on the
+        % staff line than centering it between staff lines, so we use
+        % feta_shift, not feta_space_shift.
+        h := h + feta_shift;
+
+        fill pat shifted (0, feta_shift)
+             -- reverse pat yscaled -1 shifted (0, -feta_eps)
+             -- cycle;
+
+       % ugh
+       currentpicture := currentpicture shifted (hround (w / 2), 0);
+
+        labels (1, 2, 3, 4, 5);
+        draw_staff_if_debugging (-2, 2);
+fet_endchar;
diff --git a/mf/feta-test-generic.mf b/mf/feta-test-generic.mf
deleted file mode 100644 (file)
index a910b52..0000000
+++ /dev/null
@@ -1,17 +0,0 @@
-%
-% test stuff.
-% in a separate file to avoid tainting non-test font files for testing.
-%
-
-%input feta-rests;
-input feta-accidentals;
-%input feta-dots;
-%input feta-arrowheads;
-%input feta-scripts;
-%input feta-trills;
-%input feta-clefs;
-%input feta-brackettips;
-%input feta-timesignatures;
-%input feta-pedals;
-%input feta-accordion;
-%input feta-ties;
diff --git a/mf/feta-test11.mf b/mf/feta-test11.mf
deleted file mode 100644 (file)
index ad21720..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
-% feta-test11.mf
-% part of LilyPond's pretty-but-neat music font
-
-input feta-autometric;
-
-design_size := 11;
-test := 1;
-
-% smoked cheese
-% test := -1;
-
-input feta-generic;
-
-end.
-
diff --git a/mf/feta-test13.mf b/mf/feta-test13.mf
deleted file mode 100644 (file)
index 28abf42..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
-% feta-test13.mf
-% part of LilyPond's pretty-but-neat music font
-
-input feta-autometric;
-
-design_size := 13;
-test := 1;
-
-% smoked cheese
-% test := -1;
-
-input feta-generic;
-
-
-end.
-
diff --git a/mf/feta-test16.mf b/mf/feta-test16.mf
deleted file mode 100644 (file)
index eaa280a..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
-% feta-test16.mf
-% part of LilyPond's pretty-but-neat music font
-
-input feta-autometric;
-
-design_size := 16;
-test := 1;
-
-% smoked cheese
-% test := -1;
-
-input feta-generic;
-
-
-end.
-
diff --git a/mf/feta-test20.mf b/mf/feta-test20.mf
deleted file mode 100644 (file)
index 5a58be3..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
-% feta-test20.mf
-% part of LilyPond's pretty-but-neat music font
-
-input feta-autometric;
-
-design_size := 20;
-test := 1;
-
-% smoked cheese
-% test := -1;
-
-input feta-generic;
-
-
-end.
-
diff --git a/mf/feta-test23.mf b/mf/feta-test23.mf
deleted file mode 100644 (file)
index 5a25b46..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
-% feta-test23.mf
-% part of LilyPond's pretty-but-neat music font
-
-input feta-autometric;
-
-design_size := 23;
-test := 1;
-
-% smoked cheese
-% test := -1;
-
-input feta-generic;
-
-
-end.
-
diff --git a/mf/feta-test26.mf b/mf/feta-test26.mf
deleted file mode 100644 (file)
index e9e1521..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
-% feta-test26.mf
-% part of LilyPond's pretty-but-neat music font
-
-input feta-autometric;
-
-design_size := 26;
-test := 1;
-
-% smoked cheese
-% test := -1;
-
-input feta-generic;
-
-
-end.
index 6df5e7ca5c77481afcaffbbc65d2d5ef6dc86bae..dda925e396e86f34b0eb46de01861d832ee03f65 100644 (file)
@@ -1,7 +1,7 @@
 % Feta (not the Font-En-Tja) music font -- small ties
 % This file is part of LilyPond, the GNU music typesetter.
 %
-% Copyright (C) 2011--2012 Bertrand Bordage <bordage.bertrand@gmail.com>
+% Copyright (C) 2011--2014 Bertrand Bordage <bordage.bertrand@gmail.com>
 %
 % The LilyPond font is free software: you can redistribute it and/or modify
 % it under the terms of the GNU General Public License as published by
index 0098f0ad424e4ca0cb8bab6cbccc8d140325042e..9b6c8e654ac97a6ecfb413d218f001878e17fdc3 100644 (file)
@@ -1,7 +1,7 @@
 % Feta (not the Font-En-Tja) music font --  implement Time Signatures
 % This file is part of LilyPond, the GNU music typesetter.
 %
-% Copyright (C) 1998--2012 Mats Bengtsson <matsb@s3.kth.se>,
+% Copyright (C) 1998--2014 Mats Bengtsson <matsb@s3.kth.se>,
 %               Christian Mondrup <scancm@biobase.dk>
 %
 % The LilyPond font is free software: you can redistribute it and/or modify
@@ -90,7 +90,7 @@ def draw_C =
 
        penlabels (1, 2, 3, 4, 5);
 
-       draw_staff (-2, 2, 0);
+       draw_staff_if_debugging (-2, 2);
 enddef;
 
 
index ea63af0bfbe72d1dd708cf9da2a0c89f60fe3515..f2292b1d6e24ff94f5d5abfcb0b73ab0d6f76185 100644 (file)
@@ -1,7 +1,7 @@
 % Feta (not the Font-En-Tja) music font --  implement trill symbols
 % This file is part of LilyPond, the GNU music typesetter.
 %
-% Copyright (C) 1998--2012 Jan Nieuwenhuizen <janneke@gnu.org>
+% Copyright (C) 1998--2014 Jan Nieuwenhuizen <janneke@gnu.org>
 %
 % The LilyPond font is free software: you can redistribute it and/or modify
 % it under the terms of the GNU General Public License as published by
index be6a6a7e10d7cdcb30f48c40d88a3ad6eb7a5708..ddc0f0d29251681c83db0e0a8f54fe934f7c7c0e 100644 (file)
@@ -1,13 +1,6 @@
-% feta11.mf
-% part of LilyPond's pretty-but-neat music font
-
-input feta-autometric;
+% Produce font files at specified size.
 
 design_size := 11.22;
-test := 0;
-
-
-input feta-generic;
 
+input feta-other-generic;
 end.
-
index 5014c123424530ba2e40111e17db5eaf870cce83..37871789cef95a3a24d782dd722c3354dda2c8eb 100644 (file)
@@ -1,13 +1,6 @@
-% feta13.mf
-% part of LilyPond's pretty-but-neat music font
-
-input feta-autometric;
+% Produce font files at specified size.
 
 design_size := 12.60;
-test := 0;
-
-
-input feta-generic;
 
+input feta-other-generic;
 end.
-
index 23ac8e4d153928e19273183b40c796f924e95c19..a70db3e136320df2d78a9e00834c9f8b4631ee14 100644 (file)
@@ -1,14 +1,6 @@
-% feta14.mf
-% part of LilyPond's pretty-but-neat music font
-
-input feta-autometric;
+% Produce font files at specified size.
 
 design_size := 14.14;
-test := 0;
-
-
-input feta-generic;
-
 
+input feta-other-generic;
 end.
-
index 174460b715fe32026216309c0203b00dbd6acfda..d38c756bf728600fd154aa854c1f7957fbfcc1e1 100644 (file)
@@ -1,13 +1,6 @@
-% feta16.mf
-% part of LilyPond's pretty-but-neat music font
-
-input feta-autometric;
+% Produce font files at specified size.
 
 design_size := 15.87;
-test := 0;
-
-
-input feta-generic;
 
+input feta-other-generic;
 end.
-
index b52f6a3e35ca72d75e2b1efc983c7071978b9f22..d69ff7ccceede542e038d48bcb8c3cb7d8732b5a 100644 (file)
@@ -1,14 +1,6 @@
-% feta18.mf
-% part of LilyPond's pretty-but-neat music font
+% Produce font files at specified size.
 
-input feta-autometric;
-
-% todo change file name
 design_size := 17.82;
-test := 0;
-
-
-input feta-generic;
-
 
+input feta-other-generic;
 end.
index 2b561b200d9fee70370387096dffc32193e4585f..eafc6fa1638a6cb904216c11f05fd9c7999b2fd8 100644 (file)
@@ -1,14 +1,7 @@
-% feta20.mf
-% part of LilyPond's pretty-but-neat music font
+% Produce font files at specified size.
 
 design_size := 20;
 
-input feta-autometric;
-
-
 % use feta-test for debugging.
-test := 0;
-input feta-generic;
-
-
+input feta-other-generic;
 end.
index d2cf0025e94e18a8c541e8a6dbbaa03b3383954a..0a0be5cae0bff525c4d8ef05147cf7681b7730ee 100644 (file)
@@ -1,15 +1,6 @@
-% feta23.mf
-% part of LilyPond's pretty-but-neat music font
+% Produce font files at specified size.
 
-input feta-autometric;
-
-% todo change file name
 design_size := 22.45;
-test := 0;
-
-
-input feta-generic;
-
 
+input feta-other-generic;
 end.
-
index 2bfa536618942eccc90fbf818b9f541c7821270c..62ed9540e4a2924860f382da20bfe13b3ee63696 100644 (file)
@@ -1,15 +1,6 @@
-% feta26.mf
-% part of LilyPond's pretty-but-neat music font
-
-input feta-autometric;
+% Produce font files at specified size.
 
 design_size := 25.20;
-test := 0;
-
-
-input feta-generic;
-
 
+input feta-other-generic;
 end.
-
-
index f7cf78563b09b70a20669ebaaa1ac6acee58e47e..4aa5f0dba12e7c2c63f310af3a05f928439b5549 100644 (file)
@@ -1,7 +1,7 @@
 % Feta (not the Font-En-Tja) music font --  ancient accidentals
 % This file is part of LilyPond, the GNU music typesetter.
 %
-% Copyright (C) 2001--2012 Juergen Reuter <reuter@ipd.uka.de>
+% Copyright (C) 2001--2014 Juergen Reuter <reuter@ipd.uka.de>
 % 
 % The LilyPond font is free software: you can redistribute it and/or modify
 % it under the terms of the GNU General Public License as published by
index ec6561dc8e50a0cc001e6135c63a6b4caae99f23..b58b85d672d23ecc1945aebca78099492cc9c4ae 100644 (file)
@@ -1,7 +1,7 @@
 % Feta (not the Font-En-Tja) music font --  ancient clefs
 % This file is part of LilyPond, the GNU music typesetter.
 %
-% Copyright (C) 2001--2012 Juergen Reuter <reuter@ipd.uka.de>
+% Copyright (C) 2001--2014 Juergen Reuter <reuter@ipd.uka.de>
 %
 % The LilyPond font is free software: you can redistribute it and/or modify
 % it under the terms of the GNU General Public License as published by
@@ -125,9 +125,7 @@ enddef;
 
 
 fet_beginchar ("Ed. Vat. do clef", "vaticana.do");
-       if test = 1:
-               draw_staff (-1, 3, 0.0);
-       fi;
+       draw_staff_if_debugging (-1, 3);
        draw_vaticana_do_clef ((0, 0), 1.0);
 fet_endchar;
 
@@ -194,9 +192,7 @@ enddef;
 
 
 fet_beginchar ("Ed. Vat. fa clef", "vaticana.fa");
-       if test = 1:
-               draw_staff (-1, 3, 0.0);
-       fi;
+       draw_staff_if_debugging (-1, 3);
        draw_vaticana_fa_clef ((0, 0), 1.0);
 fet_endchar;
 
@@ -282,9 +278,7 @@ enddef;
 
 
 fet_beginchar ("Ed. Med. do clef", "medicaea.do");
-       if test = 1:
-               draw_staff (-1, 3, 0.0);
-       fi;
+       draw_staff_if_debugging (-1, 3);
        draw_medicaea_do_clef ((0, 0), 1.0);
 fet_endchar;
 
@@ -352,9 +346,7 @@ enddef;
 
 
 fet_beginchar ("Ed. Med. fa clef", "medicaea.fa");
-       if test = 1:
-               draw_staff (-1, 3, 0.0);
-       fi;
+       draw_staff_if_debugging (-1, 3);
        draw_medicaea_fa_clef ((0, 0), 1.0);
 fet_endchar;
 
@@ -589,9 +581,7 @@ enddef;
 
 
 fet_beginchar ("neo-mensural c clef", "neomensural.c");
-       if test = 1:
-               draw_staff (-1, 3, 0.0);
-       fi;
+       draw_staff_if_debugging (-1, 3);
        draw_neomensural_c_clef ((0, 0), 1.0);
 fet_endchar;
 
@@ -696,9 +686,7 @@ enddef;
 
 
 fet_beginchar ("petrucci c1 clef", "petrucci.c1");
-       if test = 1:
-               draw_staff (-1, 3, 0.0);
-       fi;
+       draw_staff_if_debugging (-1, 3);
        draw_petrucci_c_clef ((0, 0), +2, 1.0);
 fet_endchar;
 
@@ -709,9 +697,7 @@ fet_endchar;
 
 
 fet_beginchar ("petrucci c2 clef", "petrucci.c2");
-       if test = 1:
-               draw_staff (-1, 3, 0.0);
-       fi;
+       draw_staff_if_debugging (-1, 3);
        draw_petrucci_c_clef ((0, 0), +1, 1.0);
 fet_endchar;
 
@@ -722,9 +708,7 @@ fet_endchar;
 
 
 fet_beginchar ("petrucci c3 clef", "petrucci.c3");
-       if test = 1:
-               draw_staff (-1, 3, 0.0);
-       fi;
+       draw_staff_if_debugging (-1, 3);
        draw_petrucci_c_clef ((0, 0), 0, 1.0);
 fet_endchar;
 
@@ -735,9 +719,7 @@ fet_endchar;
 
 
 fet_beginchar ("petrucci c4 clef", "petrucci.c4");
-       if test = 1:
-               draw_staff (-1, 3, 0.0);
-       fi;
+       draw_staff_if_debugging (-1, 3);
        draw_petrucci_c_clef ((0, 0), -1, 1.0);
 fet_endchar;
 
@@ -748,9 +730,7 @@ fet_endchar;
 
 
 fet_beginchar ("petrucci c5 clef", "petrucci.c5");
-       if test = 1:
-               draw_staff (-1, 3, 0.0);
-       fi;
+       draw_staff_if_debugging (-1, 3);
        draw_petrucci_c_clef ((0, 0), -2, 1.0);
 fet_endchar;
 
@@ -840,9 +820,7 @@ enddef;
 
 
 fet_beginchar ("mensural c clef", "mensural.c");
-       if test = 1:
-               draw_staff (-1, 3, 0.0);
-       fi;
+       draw_staff_if_debugging (-1, 3);
        draw_mensural_c_clef ((0, 0), 1.0, true);
 fet_endchar;
 
@@ -853,9 +831,7 @@ fet_endchar;
 
 
 fet_beginchar ("black mensural c clef", "blackmensural.c");
-       if test = 1:
-               draw_staff (-1, 3, 0.0);
-       fi;
+       draw_staff_if_debugging (-1, 3);
        draw_mensural_c_clef ((0, 0), 1.0, false);
 fet_endchar;
 
@@ -1034,9 +1010,7 @@ enddef;
 
 
 fet_beginchar ("petrucci f clef", "petrucci.f");
-       if test = 1:
-               draw_staff (-1, 3, 0.0);
-       fi;
+       draw_staff_if_debugging (-1, 3);
        draw_petrucci_f_clef ((0, 0), 1.0);
 fet_endchar;
 
@@ -1142,9 +1116,7 @@ enddef;
 
 
 fet_beginchar ("mensural f clef", "mensural.f");
-       if test = 1:
-               draw_staff (-1, 3, 0.0);
-       fi;
+       draw_staff_if_debugging (-1, 3);
        draw_mensural_f_clef ((0, 0), 1.0);
 fet_endchar;
 
@@ -1374,9 +1346,7 @@ enddef;
 
 
 fet_beginchar ("petrucci g clef", "petrucci.g");
-       if test = 1:
-               draw_staff (-1, 3, 0.0);
-       fi;
+       draw_staff_if_debugging (-1, 3);
        draw_petrucci_g_clef ((0, 0), 1.0);
 fet_endchar;
 
@@ -1408,9 +1378,7 @@ enddef;
 % until the code for the mensural g clef will be rewritten.
 %
 fet_beginchar ("mensural g clef", "mensural.g");
-       if test = 1:
-               draw_staff (-1, 3, 0.0);
-       fi;
+       draw_staff_if_debugging (-1, 3);
        draw_petrucci_g_clef ((0, 0), 1.0);
 fet_endchar;
 
@@ -1499,9 +1467,7 @@ enddef;
 
 
 fet_beginchar ("Hufnagel do clef", "hufnagel.do");
-       if test = 1:
-               draw_staff (-1, 3, 0.0);
-       fi;
+       draw_staff_if_debugging (-1, 3);
        draw_hufnagel_do_clef ((0, 0), 1.0);
 fet_endchar;
 
@@ -1595,9 +1561,7 @@ enddef;
 
 
 fet_beginchar ("Hufnagel fa clef", "hufnagel.fa");
-       if test = 1:
-               draw_staff (-1, 3, 0.0);
-       fi;
+       draw_staff_if_debugging (-1, 3);
        draw_hufnagel_fa_clef ((0, 0), 1.0);
 fet_endchar;
 
@@ -1619,9 +1583,7 @@ enddef;
 
 
 fet_beginchar ("Hufnagel do/fa clef", "hufnagel.do.fa");
-       if test = 1:
-               draw_staff (-1, 3, 0.0);
-       fi;
+       draw_staff_if_debugging (-1, 3);
        draw_hufnagel_do_fa_clef ((0, 0), 1.0);
 fet_endchar;
 
index 08bf714858c738f7c234200d12ec419b144edcb3..58def35632559753a4b48150c3f364ad8353bdc0 100644 (file)
@@ -1,7 +1,7 @@
 % Feta (not the Font-En-Tja) music font --  ancient custodes
 % This file is part of LilyPond, the GNU music typesetter.
 %
-% Copyright (C) 2000--2012 Juergen Reuter <reuter@ipd.uka.de>
+% Copyright (C) 2000--2014 Juergen Reuter <reuter@ipd.uka.de>
 % 
 % The LilyPond font is free software: you can redistribute it and/or modify
 % it under the terms of the GNU General Public License as published by
index 86a8ee7f4c167d891420b3d7643235ef8e478245..97a6825a93e2f980e9e0a8b73a0b77ab3447cf53 100644 (file)
@@ -1,7 +1,7 @@
 % Feta (not the Font-En-Tja) music font -- dot vaticana
 % This file is part of LilyPond, the GNU music typesetter.
 %
-% Copyright (C) 2006--2012 Juergen Reuter <reuter@ipd.uka.de>
+% Copyright (C) 2006--2014 Juergen Reuter <reuter@ipd.uka.de>
 % 
 % The LilyPond font is free software: you can redistribute it and/or modify
 % it under the terms of the GNU General Public License as published by
index 9c136745d64220bdb1462509a21565bb74eed36c..41d3fa922fcd8c538e02337c3cc200aa7cd68989 100644 (file)
@@ -1,7 +1,7 @@
 % Feta (not the Font-En-Tja) music font --  ancient flags
 % This file is part of LilyPond, the GNU music typesetter.
 %
-% Copyright (C) 2001--2012 Juergen Reuter <reuter@ipd.uka.de>
+% Copyright (C) 2001--2014 Juergen Reuter <reuter@ipd.uka.de>
 % 
 % The LilyPond font is free software: you can redistribute it and/or modify
 % it under the terms of the GNU General Public License as published by
diff --git a/mf/parmesan-generic.mf b/mf/parmesan-generic.mf
deleted file mode 100644 (file)
index 31b35ff..0000000
+++ /dev/null
@@ -1,50 +0,0 @@
-% Feta (not the Font-En-Tja) music font --  generic stuff: include lots of files,
-% This file is part of LilyPond, the GNU music typesetter.
-%
-% Copyright (C) 2002--2012 Juergen Reuter <reuter@ipd.uka.de>
-%
-% The LilyPond font 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, or under the SIL Open Font License.
-%
-% 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/>.
-
-
-if test = -1:
-       mode := smoke;
-fi;
-
-mode_setup;
-
-staffsize# := design_size * pt#;
-
-input feta-macros;
-input feta-params;
-
-input parmesan-macros;
-
-
-font_x_height staff_space#;
-
-
-fet_beginfont ("parmesan", design_size, "parmesanMusic");
-       if test = 0:
-               input parmesan-rests;
-               input parmesan-clefs;
-               input parmesan-custodes
-               input parmesan-accidentals;
-               input parmesan-flags;
-               input parmesan-timesignatures;
-               input parmesan-scripts;
-               input parmesan-dots;
-       else:
-
-       fi;
-fet_endfont;
index a42a1db393bd66aed906f078b5a8e7e4b6e18415..04e26d402e63c412908065590465774441be6929 100644 (file)
@@ -1,7 +1,7 @@
 % Feta (not the Font-En-Tja) music font -- macros for parmesan font
 % This file is part of LilyPond, the GNU music typesetter.
 %
-% Copyright (C) 2001--2012 Juergen Reuter <reuter@ipd.uka.de>
+% Copyright (C) 2001--2014 Juergen Reuter <reuter@ipd.uka.de>
 % 
 %
 % The LilyPond font is free software: you can redistribute it and/or modify
index a4103791ff8302c808f4c2529def1013b2fd3f09..be328f11581e68b9e7751c16c7ee0aa38a7e1997 100644 (file)
@@ -1,34 +1,14 @@
-% Feta (not the Font-En-Tja) music font --  generic stuff: include lots of files
 % This file is part of LilyPond, the GNU music typesetter.
 %
-% Copyright (C) 1997--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+% Copyright (C) 1997--2014 Han-Wen Nienhuys <hanwen@xs4all.nl>
 %
 % The LilyPond font 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, or under the SIL Open Font License.
-%
-% 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/>.
-
-
-if test = -1:
-       mode := smoke;
-fi
-
-staffsize# := design_size * pt#;
-
-mode_setup;
-
-input feta-macros;
 
-input feta-params;
 
+input common-modules-and-initialization;
 input parmesan-macros;
 
 font_x_height staff_space#;
index cf1bfae111f97d683063ec938276762e038ed450..c66a6315c7bbcd8877ae50f82f25c9fff8f7acb5 100644 (file)
@@ -1,7 +1,7 @@
 % Feta (not the Font-En-Tja) music font --  ancient note heads
 % This file is part of LilyPond, the GNU music typesetter.
 %
-% Copyright (C) 2001--2012 Juergen Reuter <reuter@ipd.uka.de>
+% Copyright (C) 2001--2014 Juergen Reuter <reuter@ipd.uka.de>
 %
 % Neo-mensural heads originally by
 % Christian Mondrup and Mats Bengtsson
index 288695a45e13781c40dd05d82eb12e3e0c3f13cc..4f35548ff1ebf453af6fc1fb9bb388491fd5a3e8 100644 (file)
@@ -1,13 +1,5 @@
-% feta-noteheads11.mf
-% part of LilyPond's pretty-but-neat music font
-
-input feta-autometric;
+% Produce font files at specified size.
 
 design_size := 11.22;
-test := 0;
-
-
 input parmesan-noteheads-generic;
-
 end.
-
index ad126423aabadee00e23debfa76c3e6db3b8588a..13cedf0b14e8d00ba772d3dcb0841b4869248e67 100644 (file)
@@ -1,13 +1,5 @@
-% feta-noteheads13.mf
-% part of LilyPond's pretty-but-neat music font
-
-input feta-autometric;
+% Produce font files at specified size.
 
 design_size := 12.60;
-test := 0;
-
-
 input parmesan-noteheads-generic;
-
 end.
-
index f5d3a41df72ae54bbbac00b4f1a4e6e46dad2956..4c41de51495953ad3b85c75b7f8d778409e8504a 100644 (file)
@@ -1,13 +1,5 @@
-% feta-noteheads14.mf
-% part of LilyPond's pretty-but-neat music font
-
-input feta-autometric;
+% Produce font files at specified size.
 
 design_size := 14.14;
-test := 0;
-
-
 input parmesan-noteheads-generic;
-
 end.
-
index 3db517fa0455dd1a4ec585b1a932f06aa74eeaee..53f67ceb686d22f681ccd42ae8b1c8c58890bb4d 100644 (file)
@@ -1,13 +1,5 @@
-% feta-noteheads16.mf
-% part of LilyPond's pretty-but-neat music font
-
-input feta-autometric;
+% Produce font files at specified size.
 
 design_size := 15.87;
-test := 0;
-
-
 input parmesan-noteheads-generic;
-
 end.
-
index ed0f99ec0e6f5f6990c0aba8519920aab434047a..4fcc73d5c4b0ece2daf1ab09ad3ae6cf876c949c 100644 (file)
@@ -1,13 +1,5 @@
-% feta-noteheads18.mf
-% part of LilyPond's pretty-but-neat music font
-
-input feta-autometric;
+% Produce font files at specified size.
 
 design_size := 17.82;
-test := 0;
-
-
 input parmesan-noteheads-generic;
-
 end.
-
index 8891652bb81d14fdb76057a0423445f1d290c980..3d2d91ff28ce17ba49983b8fa52c62ab0488a7b4 100644 (file)
@@ -1,13 +1,5 @@
-% feta-noteheads20.mf
-% part of LilyPond's pretty-but-neat music font
-
-input feta-autometric;
+% Produce font files at specified size.
 
 design_size := 20;
-test := 0;
-
-
 input parmesan-noteheads-generic;
-
 end.
-
index fe64e6f496eda98b5dcc67b49145e824096efbde..7a0d3bfd939c639100d2f5c96867e461e6d60696 100644 (file)
@@ -1,13 +1,5 @@
-% feta-noteheads23.mf
-% part of LilyPond's pretty-but-neat music font
-
-input feta-autometric;
+% Produce font files at specified size.
 
 design_size := 22.45;
-test := 0;
-
-
 input parmesan-noteheads-generic;
-
 end.
-
index 082ffc208d219a5bb3186660889c89552f552be4..f7cb63aa909f6ecf419e39e46dc05f1add32553e 100644 (file)
@@ -1,13 +1,5 @@
-% feta-noteheads26.mf
-% part of LilyPond's pretty-but-neat music font
-
-input feta-autometric;
+% Produce font files at specified size.
 
 design_size := 25.20;
-test := 0;
-
-
 input parmesan-noteheads-generic;
-
 end.
-
diff --git a/mf/parmesan-other-generic.mf b/mf/parmesan-other-generic.mf
new file mode 100644 (file)
index 0000000..e7214d6
--- /dev/null
@@ -0,0 +1,26 @@
+% This file is part of LilyPond, the GNU music typesetter.
+%
+% Copyright (C) 2002--2014 Juergen Reuter <reuter@ipd.uka.de>
+%
+% The LilyPond font 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, or under the SIL Open Font License.
+
+
+
+input common-modules-and-initialization;
+input parmesan-macros;
+
+font_x_height staff_space#;
+
+fet_beginfont ("parmesan", design_size, "parmesanMusic");
+       input parmesan-rests;
+       input parmesan-clefs;
+       input parmesan-custodes
+       input parmesan-accidentals;
+       input parmesan-flags;
+       input parmesan-timesignatures;
+       input parmesan-scripts;
+       input parmesan-dots;
+fet_endfont;
index d238211b7e2aba6be7b2e892cced1ae836376ab5..d3f75b6ff6eff88c15d7ffed92f0ea701c423ece 100644 (file)
@@ -1,7 +1,7 @@
 % Feta (not the Font-En-Tja) music font --  ancient rests
 % This file is part of LilyPond, the GNU music typesetter.
 %
-% Copyright (C) 2001--2012 Juergen Reuter <reuter@ipd.uka.de>
+% Copyright (C) 2001--2014 Juergen Reuter <reuter@ipd.uka.de>
 % 
 % Neo-mensural rests originally by
 % Christian Mondrup and Mats Bengtsson.
index cc96bbc465661a7437277c6c2ef512c2f78804e0..b7ad2fb9ca21293e12ed6c310085d4db283edaa6 100644 (file)
@@ -1,7 +1,7 @@
 % Feta (not the Font-En-Tja) music font --  ancient script symbols
 % This file is part of LilyPond, the GNU music typesetter.
 %
-% Copyright (C) 2002--2012 Juergen Reuter <reuter@ipd.uka.de>
+% Copyright (C) 2002--2014 Juergen Reuter <reuter@ipd.uka.de>
 % 
 %
 % The LilyPond font is free software: you can redistribute it and/or modify
index ef0fa621a5506dd73c2b91b018c094d512a0d043..f3d218a8ca1068da3a92c50bca28b5fba44c7059 100644 (file)
@@ -1,9 +1,9 @@
 % Feta (not the Font-En-Tja) music font --  ancient time signatures
 % This file is part of LilyPond, the GNU music typesetter.
 %
-% Copyright (C) 1998--2012 Mats Bengtsson <matsb@s3.kth.se>,
+% Copyright (C) 1998--2014 Mats Bengtsson <matsb@s3.kth.se>,
 %               Christian Mondrup <scancm@biobase.dk>
-% Copyright (C) 2002--2012 Juergen Reuter <reuter@ipd.uka.de>
+% Copyright (C) 2002--2014 Juergen Reuter <reuter@ipd.uka.de>
 %
 % The LilyPond font is free software: you can redistribute it and/or modify
 % it under the terms of the GNU General Public License as published by
index 27ba341437d1952a24bf2aea32069ec0f87d6d04..050559744ff10456052c7f49171b9f0aefc92339 100644 (file)
@@ -1,13 +1,6 @@
-% parmesan11.mf
-% part of LilyPond's pretty-but-neat music font
+% Produce font files at specified size.
 
 design_size := 11.22;
 
-input feta-autometric;
-
-test := 0;
-
-input parmesan-generic;
-
+input parmesan-other-generic;
 end.
-
index 905da48d5d8d73021461d78a0ed9771ef082779f..8e139d450db0ad3794d2c3366d4d28dc2c7d5807 100644 (file)
@@ -1,14 +1,6 @@
-% parmesan13.mf
-% part of LilyPond's pretty-but-neat music font
+% Produce font files at specified size.
 
 design_size := 12.60;
 
-input feta-autometric;
-
-test := 0;
-
-input parmesan-generic;
-
-
+input parmesan-other-generic;
 end.
-
index 6357337be224aaeafdad1922ea373b3f45394b8b..2eb056525f6bcce13f04b015055508032dd5f0d3 100644 (file)
@@ -1,14 +1,5 @@
-% parmesan14.mf
-% part of LilyPond's pretty-but-neat music font
+% Produce font files at specified size.
 
 design_size := 14.14;
-
-input feta-autometric;
-
-test := 0;
-
-input parmesan-generic;
-
-
+input parmesan-other-generic;
 end.
-
index 19b0516779b768ddf31468905f616d469fefbc84..d8dd45d2ff1ffbbf94143efc697df25aef3de371 100644 (file)
@@ -1,14 +1,6 @@
-% parmesan16.mf
-% part of LilyPond's pretty-but-neat music font
+% Produce font files at specified size.
 
 design_size := 15.87;
 
-input feta-autometric;
-
-test := 0;
-
-input parmesan-generic;
-
-
+input parmesan-other-generic;
 end.
-
index 8c28507046feacaf34f3f5ea6270a81113275590..cd1052b3aee55a38475d20665fa2a802165a347d 100644 (file)
@@ -1,14 +1,6 @@
-% parmesan18.mf
-% part of LilyPond's pretty-but-neat music font
+% Produce font files at specified size.
 
 design_size := 17.82;
 
-input feta-autometric;
-
-test := 0;
-
-input parmesan-generic;
-
-
+input parmesan-other-generic;
 end.
-
index d14251edcedf0a0bfdc039b8ffb3bde45c0ffe90..a7e8452c6fe0482caca9f0caa1a5a4ee819e7a26 100644 (file)
@@ -1,14 +1,6 @@
-% parmesan20.mf
-% part of LilyPond's pretty-but-neat music font
+% Produce font files at specified size.
 
 design_size := 20;
 
-input feta-autometric;
-
-test := 0;
-
-input parmesan-generic;
-
-
+input parmesan-other-generic;
 end.
-
index 39b643732ba8de336441350d1c1331486db98988..e47b714b5cb56efe680178c160be0f808b293e4b 100644 (file)
@@ -1,14 +1,6 @@
-% parmesan23.mf
-% part of LilyPond's pretty-but-neat music font
+% Produce font files at specified size.
 
 design_size := 22.45;
 
-input feta-autometric;
-
-test := 0;
-
-input parmesan-generic;
-
-
+input parmesan-other-generic;
 end.
-
index 1be6fb51914144b15f02dc793f3874cb395329d5..925ceaa8abc9073a2f93b6f0c8e2e6beb274798b 100644 (file)
@@ -1,14 +1,6 @@
-% parmesan26.mf
-% part of LilyPond's pretty-but-neat music font
+% Produce font files at specified size.
 
 design_size := 25.20;
 
-input feta-autometric;
-
-test := 0;
-
-input parmesan-generic;
-
-
+input parmesan-other-generic;
 end.
-
index 519b5aaf0554c455ac9a933bdf44892d2ab2af81..c7cdb60f2ac33ca4f30fc661f55076ecaf1cf0a5 100644 (file)
--- a/po/ca.po
+++ b/po/ca.po
@@ -1,5 +1,5 @@
 # Translation of LilyPond.
-# Copyright (C) 1998--2012 Han-Wen Nienhuys, Jan Nieuwenhuizen
+# Copyright (C) 1998--2014 Han-Wen Nienhuys, Jan Nieuwenhuizen
 # This file is distributed under the same license as the lilypond package.
 # Walter Garcia-Fontes <walter.garcia@upf.edu>, 2013.
 #
@@ -1551,12 +1551,12 @@ msgstr ""
 
 #: musicxml2ly.py:2576
 msgid ""
-"Copyright (c) 2005--2012 by\n"
+"Copyright (c) 2005--2014 by\n"
 "    Han-Wen Nienhuys <hanwen@xs4all.nl>,\n"
 "    Jan Nieuwenhuizen <janneke@gnu.org> and\n"
 "    Reinhold Kainhofer <reinhold@kainhofer.com>\n"
 msgstr ""
-"Copyright (c) 2005--2012 per\n"
+"Copyright (c) 2005--2014 per\n"
 "    Han-Wen Nienhuys <hanwen@xs4all.nl>,\n"
 "    Jan Nieuwenhuizen <janneke@gnu.org> i\n"
 "    Reinhold Kainhofer <reinhold@kainhofer.com>\n"
index 7abaa3a906421d007d27e35d9be44119dbb7ce40..23a8e371dcac525a20ce4b232e0fe6ac44683dd5 100644 (file)
--- a/po/cs.po
+++ b/po/cs.po
@@ -1046,12 +1046,12 @@ msgstr "Ukázat tuto nápovědu a ukončit"
 
 #: musicxml2ly.py:2574
 msgid ""
-"Copyright (c) 2005--2012 by\n"
+"Copyright (c) 2005--2014 by\n"
 "    Han-Wen Nienhuys <hanwen@xs4all.nl>,\n"
 "    Jan Nieuwenhuizen <janneke@gnu.org> and\n"
 "    Reinhold Kainhofer <reinhold@kainhofer.com>\n"
 msgstr ""
-"Autorské právo (c) 2005--2012\n"
+"Autorské právo (c) 2005--2014\n"
 "    Han-Wen Nienhuys <hanwen@xs4all.nl>,\n"
 "    Jan Nieuwenhuizen <janneke@gnu.org> a\n"
 "    Reinhold Kainhofer <reinhold@kainhofer.com>\n"
index 21b0d49c1503a81ac7ca6f27b2607eb5fe0e3a7e..b1298eb5405ae64f50ae7596361f4980095e8268 100644 (file)
--- a/po/de.po
+++ b/po/de.po
@@ -1,5 +1,5 @@
 # German Translation of lilypond.
-# Copyright (C) 2013 Han-Wen Nienhuys, Jan Nieuwenhuizen
+# Copyright (C) 2013--2014 Han-Wen Nienhuys, Jan Nieuwenhuizen
 # This file is distributed under the same license as the lilypond package.
 # Erwin Dieterich <bamse@gmx.de>, 1999
 # Roland Stigge <stigge@antcom.de>, 2003, 2004, 2005, 2006, 2007
@@ -1552,12 +1552,12 @@ msgstr ""
 
 #: musicxml2ly.py:2576
 msgid ""
-"Copyright (c) 2005--2012 by\n"
+"Copyright (c) 2005--2014 by\n"
 "    Han-Wen Nienhuys <hanwen@xs4all.nl>,\n"
 "    Jan Nieuwenhuizen <janneke@gnu.org> and\n"
 "    Reinhold Kainhofer <reinhold@kainhofer.com>\n"
 msgstr ""
-"Copyright (c) 2005--2012\n"
+"Copyright (c) 2005--2014\n"
 "····Han-Wen·Nienhuys·<hanwen@xs4all.nl>,\n"
 "····Jan·Nieuwenhuizen·<janneke@gnu.org>·and\n"
 "····Reinhold·Kainhofer·<reinhold@kainhofer.com>\n"
index 62b018a9955413a3cb1506cbc6eb2f36c53de0de..9ef44c3a130135aa1ecc8822bccdb93fbc6f443c 100644 (file)
--- a/po/el.po
+++ b/po/el.po
@@ -1308,12 +1308,12 @@ msgstr ""
 
 #: musicxml2ly.py:2669
 msgid ""
-"Copyright (c) 2005--2011 by\n"
+"Copyright (c) 2005--2014 by\n"
 "    Han-Wen Nienhuys <hanwen@xs4all.nl>,\n"
 "    Jan Nieuwenhuizen <janneke@gnu.org> and\n"
 "    Reinhold Kainhofer <reinhold@kainhofer.com>\n"
 msgstr ""
-"Copyright (c) 2005--2011 από\n"
+"Copyright (c) 2005--2014 από\n"
 "    Han-Wen Nienhuys <hanwen@xs4all.nl>,\n"
 "    Jan Nieuwenhuizen <janneke@gnu.org> και\n"
 "    Reinhold Kainhofer <reinhold@kainhofer.com>\n"
index f52ed60720fa2f6f05d216c4efc8113ad72c4b3c..fb3de779cfe8d19ba28e5e94961d311997a70b9f 100644 (file)
--- a/po/eo.po
+++ b/po/eo.po
@@ -1547,12 +1547,12 @@ msgstr ""
 
 #: musicxml2ly.py:2576
 msgid ""
-"Copyright (c) 2005--2012 by\n"
+"Copyright (c) 2005--2014 by\n"
 "    Han-Wen Nienhuys <hanwen@xs4all.nl>,\n"
 "    Jan Nieuwenhuizen <janneke@gnu.org> and\n"
 "    Reinhold Kainhofer <reinhold@kainhofer.com>\n"
 msgstr ""
-"Kopirajto (c) 2005--2012 de\n"
+"Kopirajto (c) 2005--2014 de\n"
 "    Han-Wen Nienhuys <hanwen@xs4all.nl>,\n"
 "    Jan Nieuwenhuizen <janneke@gnu.org> kaj\n"
 "    Reinhold Kainhofer <reinhold@kainhofer.com>\n"
index 368931372d4096d250ea6aeda69cf21d5058d11a..b426376fec2f310ee2f684bf902b489bcfdd188d 100644 (file)
--- a/po/es.po
+++ b/po/es.po
@@ -1566,12 +1566,12 @@ msgstr ""
 
 #: musicxml2ly.py:2576
 msgid ""
-"Copyright (c) 2005--2012 by\n"
+"Copyright (c) 2005--2014 by\n"
 "    Han-Wen Nienhuys <hanwen@xs4all.nl>,\n"
 "    Jan Nieuwenhuizen <janneke@gnu.org> and\n"
 "    Reinhold Kainhofer <reinhold@kainhofer.com>\n"
 msgstr ""
-"Copyright (c) 2005--2012 por\n"
+"Copyright (c) 2005--2014 por\n"
 "    Han-Wen Nienhuys <hanwen@xs4all.nl>,\n"
 "    Jan Nieuwenhuizen <janneke@gnu.org> y\n"
 "    Reinhold Kainhofer <reinhold@kainhofer.com>\n"
index a57aa8f39801faae9fc7e46391e01e3229e7e0e3..f6196309224f550c17b8f520219dd66e7c63971b 100644 (file)
--- a/po/fr.po
+++ b/po/fr.po
@@ -1620,12 +1620,12 @@ msgstr ""
 
 #: musicxml2ly.py:2576
 msgid ""
-"Copyright (c) 2005--2012 by\n"
+"Copyright (c) 2005--2014 by\n"
 "    Han-Wen Nienhuys <hanwen@xs4all.nl>,\n"
 "    Jan Nieuwenhuizen <janneke@gnu.org> and\n"
 "    Reinhold Kainhofer <reinhold@kainhofer.com>\n"
 msgstr ""
-"Copyright (c) 2005--2012 par\n"
+"Copyright (c) 2005--2014 par\n"
 "    Han-Wen Nienhuys <hanwen@xs4all.nl>,\n"
 "    Jan Nieuwenhuizen <janneke@gnu.org> et\n"
 "    Reinhold Kainhofer <reinhold@kainhofer.com>\n"
index f427b73c212cc6932b078bc643a1c6374e5c005d..7992882887aa362dfbe1c71408f62b9826a388eb 100644 (file)
--- a/po/it.po
+++ b/po/it.po
@@ -1552,12 +1552,12 @@ msgstr ""
 
 #: musicxml2ly.py:2576
 msgid ""
-"Copyright (c) 2005--2012 by\n"
+"Copyright (c) 2005--2014 by\n"
 "    Han-Wen Nienhuys <hanwen@xs4all.nl>,\n"
 "    Jan Nieuwenhuizen <janneke@gnu.org> and\n"
 "    Reinhold Kainhofer <reinhold@kainhofer.com>\n"
 msgstr ""
-"Copyright (c) 2005--2012 di\n"
+"Copyright (c) 2005--2014 di\n"
 "    Han-Wen Nienhuys <hanwen@xs4all.nl>,\n"
 "    Jan Nieuwenhuizen <janneke@gnu.org> e\n"
 "    Reinhold Kainhofer <reinhold@kainhofer.com>\n"
index a3bd2b95deb63858685be01e127ea49787d62561..e8c4849776dab17ba0fd0c687257ca26c8a3f0e7 100644 (file)
--- a/po/ja.po
+++ b/po/ja.po
@@ -992,7 +992,7 @@ msgstr "  -h, --help                  このヘルプを表示して終了\n"
 
 #: musicxml2ly.py:2574
 msgid ""
-"Copyright (c) 2005--2012 by\n"
+"Copyright (c) 2005--2014 by\n"
 "    Han-Wen Nienhuys <hanwen@xs4all.nl>,\n"
 "    Jan Nieuwenhuizen <janneke@gnu.org> and\n"
 "    Reinhold Kainhofer <reinhold@kainhofer.com>\n"
index d3a5448678f3abb1a412143a867e71d9472e4d69..558ca2b134fc16443c29e55e823a61917f99b580 100644 (file)
@@ -1,15 +1,15 @@
 # Translation of LilyPond
-# Copyright (C) 1998--2012 Han-Wen Nienhuys, Jan Nieuwenhuizen.
+# Copyright (C) 1998--2014 Han-Wen Nienhuys, Jan Nieuwenhuizen.
 # This file is distributed under the same license as the LilyPond package.
 # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
 #
 #, fuzzy
 msgid ""
 msgstr ""
-"Project-Id-Version: lilypond 2.17.95\n"
+"Project-Id-Version: lilypond 2.19.8\n"
 "Report-Msgid-Bugs-To: http://post.gmane.org/post.php?group=gmane.comp.gnu."
 "lilypond.bugs\n"
-"POT-Creation-Date: 2013-11-04 10:26+0100\n"
+"POT-Creation-Date: 2014-06-15 16:22+0100\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
@@ -36,18 +36,18 @@ msgstr ""
 msgid "Running `%s' on file `%s' to detect default page settings.\n"
 msgstr ""
 
-#: book_latex.py:212 book_texinfo.py:228
+#: book_latex.py:219 book_texinfo.py:228
 msgid "Unable to auto-detect default settings:\n"
 msgstr ""
 
-#: book_latex.py:224 book_texinfo.py:240
+#: book_latex.py:231 book_texinfo.py:240
 #, python-format
 msgid ""
 "Unable to auto-detect default settings:\n"
 "%s"
 msgstr ""
 
-#: book_latex.py:247
+#: book_latex.py:254
 msgid "cannot detect textwidth from LaTeX"
 msgstr ""
 
@@ -161,7 +161,7 @@ msgstr ""
 
 #: convertrules.py:82 convertrules.py:1856 convertrules.py:2032
 #: convertrules.py:2175 convertrules.py:2506 convertrules.py:2801
-#: convertrules.py:3151 convertrules.py:3385
+#: convertrules.py:3151 convertrules.py:3385 convertrules.py:3697
 msgid "bump version for release"
 msgstr ""
 
@@ -1036,17 +1036,17 @@ msgstr ""
 msgid "Processing `%s'... "
 msgstr ""
 
-#: convert-ly.py:367
+#: convert-ly.py:368
 #, python-format
 msgid "%s: Unable to open file"
 msgstr ""
 
-#: convert-ly.py:373
+#: convert-ly.py:374
 #, python-format
 msgid "%s: Unable to determine version.  Skipping"
 msgstr ""
 
-#: convert-ly.py:379
+#: convert-ly.py:380
 #, python-format
 msgid ""
 "%s: Invalid version string `%s' \n"
@@ -1054,7 +1054,7 @@ msgid ""
 "`2.8.12'"
 msgstr ""
 
-#: convert-ly.py:385
+#: convert-ly.py:386
 #, python-format
 msgid "There was %d error."
 msgid_plural "There were %d errors."
@@ -1497,7 +1497,7 @@ msgstr ""
 
 #: musicxml2ly.py:2576
 msgid ""
-"Copyright (c) 2005--2012 by\n"
+"Copyright (c) 2005--2014 by\n"
 "    Han-Wen Nienhuys <hanwen@xs4all.nl>,\n"
 "    Jan Nieuwenhuizen <janneke@gnu.org> and\n"
 "    Reinhold Kainhofer <reinhold@kainhofer.com>\n"
@@ -1673,12 +1673,12 @@ msgstr ""
 msgid "procedure or context-name expected for accidental rule, found %s"
 msgstr ""
 
-#: accidental.cc:169
+#: accidental.cc:170
 #, c-format
 msgid "Could not find glyph-name for alteration %s"
 msgstr ""
 
-#: accidental.cc:184
+#: accidental.cc:186
 msgid "natural alteration glyph not found"
 msgstr ""
 
@@ -2009,7 +2009,7 @@ msgstr ""
 msgid "Asking for broken bound padding at a non-broken bound."
 msgstr ""
 
-#: hairpin.cc:256
+#: hairpin.cc:257
 msgid "decrescendo too small"
 msgstr ""
 
@@ -2153,7 +2153,7 @@ msgid ""
 "include-string instead."
 msgstr ""
 
-#: lily-parser.cc:107
+#: lily-parser.cc:109
 msgid "Parsing..."
 msgstr ""
 
@@ -2470,15 +2470,6 @@ msgstr ""
 msgid "octave check failed; expected \"%s\", found: \"%s\""
 msgstr ""
 
-#: music.cc:219
-msgid "(normalized pitch)"
-msgstr ""
-
-#: music.cc:223
-#, c-format
-msgid "Transposing %s by %s makes alteration larger than double"
-msgstr ""
-
 #: new-fingering-engraver.cc:113
 msgid "cannot add text scripts to individual note heads"
 msgstr ""
@@ -2508,37 +2499,37 @@ msgstr ""
 msgid "NoteEvent without pitch"
 msgstr ""
 
-#: open-type-font.cc:45
+#: open-type-font.cc:46
 #, c-format
 msgid "cannot allocate %lu bytes"
 msgstr ""
 
-#: open-type-font.cc:49
+#: open-type-font.cc:50
 #, c-format
 msgid "cannot load font table: %s"
 msgstr ""
 
-#: open-type-font.cc:54
+#: open-type-font.cc:55
 #, c-format
 msgid "FreeType error: %s"
 msgstr ""
 
-#: open-type-font.cc:111
+#: open-type-font.cc:112
 #, c-format
 msgid "unsupported font format: %s"
 msgstr ""
 
-#: open-type-font.cc:113
+#: open-type-font.cc:114
 #, c-format
 msgid "error reading font file %s: %s"
 msgstr ""
 
-#: open-type-font.cc:188
+#: open-type-font.cc:189
 #, c-format
 msgid "FT_Get_Glyph_Name () Freetype error: %s"
 msgstr ""
 
-#: open-type-font.cc:336 pango-font.cc:256
+#: open-type-font.cc:337 pango-font.cc:257
 #, c-format
 msgid "FT_Get_Glyph_Name () error: %s"
 msgstr ""
@@ -2548,37 +2539,37 @@ msgstr ""
 msgid "Finding the ideal number of pages..."
 msgstr ""
 
-#: optimal-page-breaking.cc:92
+#: optimal-page-breaking.cc:94
 msgid ""
 "could not satisfy systems-per-page and page-count at the same time, ignoring "
 "systems-per-page"
 msgstr ""
 
-#: optimal-page-breaking.cc:112
+#: optimal-page-breaking.cc:114
 msgid "Fitting music on 1 page..."
 msgstr ""
 
-#: optimal-page-breaking.cc:114
+#: optimal-page-breaking.cc:116
 #, c-format
 msgid "Fitting music on %d pages..."
 msgstr ""
 
-#: optimal-page-breaking.cc:116
+#: optimal-page-breaking.cc:118
 #, c-format
 msgid "Fitting music on %d or %d pages..."
 msgstr ""
 
-#: optimal-page-breaking.cc:126 optimal-page-breaking.cc:179
+#: optimal-page-breaking.cc:128 optimal-page-breaking.cc:181
 #, c-format
 msgid "trying %d systems"
 msgstr ""
 
-#: optimal-page-breaking.cc:145 optimal-page-breaking.cc:207
+#: optimal-page-breaking.cc:147 optimal-page-breaking.cc:209
 #, c-format
 msgid "best score for this sys-count: %f"
 msgstr ""
 
-#: optimal-page-breaking.cc:214 page-turn-page-breaking.cc:248
+#: optimal-page-breaking.cc:216 page-turn-page-breaking.cc:248
 #: paper-score.cc:162
 msgid "Drawing systems..."
 msgstr ""
@@ -2593,36 +2584,35 @@ msgid ""
 "values"
 msgstr ""
 
-#: page-breaking.cc:277
+#: page-breaking.cc:276
 msgid ""
 "ignoring min-systems-per-page and max-systems-per-page because systems-per-"
 "page was set"
 msgstr ""
 
-#: page-breaking.cc:282
+#: page-breaking.cc:281
 msgid ""
 "min-systems-per-page is larger than max-systems-per-page, ignoring both "
 "values"
 msgstr ""
 
+#: page-breaking.cc:636
+#, c-format
+msgid "page %d has been compressed"
+msgstr ""
+
 #: page-layout-problem.cc:402
 msgid ""
 "A page layout problem has been initiated that cannot accommodate footnotes."
 msgstr ""
 
 #: page-layout-problem.cc:731
-msgid ""
-"cannot fit music on page: ragged-spacing was requested, but page was "
-"compressed"
+msgid "ragged-bottom was specified, but page must be compressed"
 msgstr ""
 
 #: page-layout-problem.cc:734
 #, c-format
-msgid "cannot fit music on page: overflow is %f"
-msgstr ""
-
-#: page-layout-problem.cc:736
-msgid "compressing music to fit"
+msgid "compressing over-full page by %.1f staff-spaces"
 msgstr ""
 
 #: page-layout-problem.cc:1199
@@ -2670,24 +2660,24 @@ msgstr ""
 msgid "\tprevious break: %d"
 msgstr ""
 
-#: pango-font.cc:245
+#: pango-font.cc:246
 #, c-format
 msgid "no glyph for character U+%0X in font `%s'"
 msgstr ""
 
-#: pango-font.cc:272
+#: pango-font.cc:273
 #, c-format
 msgid ""
 "Glyph has no name, but font supports glyph naming.\n"
 "Skipping glyph U+%0X, file %s"
 msgstr ""
 
-#: pango-font.cc:322
+#: pango-font.cc:323
 #, c-format
 msgid "no PostScript font name for font `%s'"
 msgstr ""
 
-#: pango-font.cc:372
+#: pango-font.cc:373
 msgid "FreeType face has no PostScript font name"
 msgstr ""
 
@@ -2721,14 +2711,10 @@ msgstr ""
 msgid "Preprocessing graphical objects..."
 msgstr ""
 
-#: parse-scm.cc:121
+#: parse-scm.cc:128
 msgid "GUILE signaled an error for the expression beginning here"
 msgstr ""
 
-#: partial-iterator.cc:45
-msgid "trying to use \\partial after the start of a piece"
-msgstr ""
-
 #: pdf-scheme.cc:65
 #, c-format
 msgid "Conversion of string `%s' to UTF-16be failed: %s"
@@ -2738,11 +2724,11 @@ msgstr ""
 msgid "unterminated percent repeat"
 msgstr ""
 
-#: performance.cc:54
+#: performance.cc:55
 msgid "Track..."
 msgstr ""
 
-#: performance.cc:82
+#: performance.cc:90
 #, c-format
 msgid "MIDI output to `%s'..."
 msgstr ""
@@ -2768,7 +2754,7 @@ msgstr ""
 msgid "no such internal option: %s"
 msgstr ""
 
-#: property-iterator.cc:100
+#: property-iterator.cc:119
 #, c-format
 msgid "not a grob name, `%s'"
 msgstr ""
@@ -2951,16 +2937,16 @@ msgstr ""
 msgid "remapping modulo 16"
 msgstr ""
 
-#: stem-engraver.cc:110
+#: stem-engraver.cc:100
 msgid "tremolo duration is too long"
 msgstr ""
 
-#: stem-engraver.cc:162
+#: stem-engraver.cc:152
 #, c-format
 msgid "adding note head to incompatible stem (type = %d/%d)"
 msgstr ""
 
-#: stem-engraver.cc:165
+#: stem-engraver.cc:155
 msgid "maybe input should specify polyphonic voices"
 msgstr ""
 
@@ -3118,201 +3104,209 @@ msgstr ""
 msgid "giving up"
 msgstr ""
 
-#: parser.yy:158 parser.yy:172
-msgid "Too much lookahead"
-msgstr ""
-
-#: parser.yy:440 parser.yy:750 parser.yy:816
+#: parser.yy:463 parser.yy:847 parser.yy:928 parser.yy:1150
 msgid "bad expression type"
 msgstr ""
 
-#: parser.yy:648 parser.yy:1157
+#: parser.yy:759 parser.yy:1357 parser.yy:1402
 msgid "not a context mod"
 msgstr ""
 
-#: parser.yy:851
-msgid "score expected"
+#: parser.yy:954
+msgid "Missing music in \\score"
 msgstr ""
 
-#: parser.yy:867
+#: parser.yy:991
 msgid "\\paper cannot be used in \\score, use \\layout instead"
 msgstr ""
 
-#: parser.yy:891
+#: parser.yy:1027
+msgid "Spurious expression in \\score"
+msgstr ""
+
+#: parser.yy:1057
 msgid "need \\paper for paper block"
 msgstr ""
 
-#: parser.yy:1031 parser.yy:1053
-msgid "unexpected post-event"
+#: parser.yy:1230
+msgid "music expected"
 msgstr ""
 
-#: parser.yy:1061
-msgid "Ignoring non-music expression"
+#: parser.yy:1240 parser.yy:1274
+msgid "unexpected post-event"
 msgstr ""
 
-#: parser.yy:1073 parser.yy:2494
-msgid "music expected"
+#: parser.yy:1282
+msgid "Ignoring non-music expression"
 msgstr ""
 
-#: parser.yy:1372
+#: parser.yy:1500
 msgid "not a symbol"
 msgstr ""
 
-#: parser.yy:2182 parser.yy:2296 parser.yy:2309 parser.yy:2318
+#: parser.yy:2295 parser.yy:2409 parser.yy:2422 parser.yy:2431
 msgid "bad grob property path"
 msgstr ""
 
-#: parser.yy:2276
+#: parser.yy:2389
 msgid "only \\consists and \\remove take non-string argument."
 msgstr ""
 
-#: parser.yy:2337
+#: parser.yy:2450
 msgid "bad context property path"
 msgstr ""
 
-#: parser.yy:2438
+#: parser.yy:2551
 msgid "simple string expected"
 msgstr ""
 
-#: parser.yy:2456
+#: parser.yy:2569
 msgid "symbol expected"
 msgstr ""
 
-#: parser.yy:2606
+#: parser.yy:2705
 msgid "not a rhythmic event"
 msgstr ""
 
-#: parser.yy:2680
+#: parser.yy:2755
 msgid "post-event expected"
 msgstr ""
 
-#: parser.yy:2689 parser.yy:2694
+#: parser.yy:2764 parser.yy:2769
 msgid "have to be in Lyric mode for lyrics"
 msgstr ""
 
-#: parser.yy:2762
-msgid "expecting string as script definition"
+#: parser.yy:2845
+msgid "expecting string or post-event as script definition"
 msgstr ""
 
-#: parser.yy:2852
+#: parser.yy:2944
 msgid "not an articulation"
 msgstr ""
 
-#: parser.yy:2924 parser.yy:2967
+#: parser.yy:3016 parser.yy:3059
 msgid "not a duration"
 msgstr ""
 
-#: parser.yy:2984
+#: parser.yy:3080
 msgid "bass number expected"
 msgstr ""
 
-#: parser.yy:3083
+#: parser.yy:3172
 msgid "have to be in Note mode for notes"
 msgstr ""
 
-#: parser.yy:3142
+#: parser.yy:3211
 msgid "have to be in Chord mode for chords"
 msgstr ""
 
-#: parser.yy:3157
+#: parser.yy:3254
 msgid "markup outside of text script or \\lyricmode"
 msgstr ""
 
-#: parser.yy:3162
+#: parser.yy:3259
 msgid "unrecognized string, not in text script or \\lyricmode"
 msgstr ""
 
-#: parser.yy:3379
+#: parser.yy:3411 parser.yy:3420
+msgid "not an unsigned integer"
+msgstr ""
+
+#: parser.yy:3494
 msgid "not a markup"
 msgstr ""
 
-#: lexer.ll:224
+#: lexer.ll:193
 msgid "stray UTF-8 BOM encountered"
 msgstr ""
 
-#: lexer.ll:227
+#: lexer.ll:196
 msgid "Skipping UTF-8 BOM"
 msgstr ""
 
-#: lexer.ll:279
+#: lexer.ll:248
 #, c-format
 msgid "Renaming input to: `%s'"
 msgstr ""
 
-#: lexer.ll:296
+#: lexer.ll:265
 msgid "quoted string expected after \\version"
 msgstr ""
 
-#: lexer.ll:300
+#: lexer.ll:269
 msgid "quoted string expected after \\sourcefilename"
 msgstr ""
 
-#: lexer.ll:304
+#: lexer.ll:273
 msgid "integer expected after \\sourcefileline"
 msgstr ""
 
-#: lexer.ll:331
+#: lexer.ll:300
 msgid "\\maininput not allowed outside init files"
 msgstr ""
 
-#: lexer.ll:355
+#: lexer.ll:324
 #, c-format
 msgid "wrong or undefined identifier: `%s'"
 msgstr ""
 
-#: lexer.ll:381
+#: lexer.ll:349
 msgid "string expected after \\include"
 msgstr ""
 
-#: lexer.ll:391
+#: lexer.ll:359
 msgid "end quote missing"
 msgstr ""
 
-#: lexer.ll:743
+#: lexer.ll:714
 msgid "EOF found inside a comment"
 msgstr ""
 
-#: lexer.ll:748
+#: lexer.ll:719
 msgid "EOF found inside string"
 msgstr ""
 
-#: lexer.ll:763
+#: lexer.ll:734
 msgid "Unfinished main input"
 msgstr ""
 
-#: lexer.ll:834
+#: lexer.ll:805
 #, c-format
 msgid "invalid character: `%s'"
 msgstr ""
 
-#: lexer.ll:963
+#: lexer.ll:925
 #, c-format
 msgid "unknown escaped string: `\\%s'"
 msgstr ""
 
-#: lexer.ll:983
+#: lexer.ll:945
 #, c-format
 msgid "undefined character or shorthand: %s"
 msgstr ""
 
-#: lexer.ll:1275
+#: lexer.ll:1236
 msgid "non-UTF-8 input"
 msgstr ""
 
-#: lexer.ll:1319
+#: lexer.ll:1280
 #, c-format
 msgid "file too old: %s (oldest supported: %s)"
 msgstr ""
 
-#: lexer.ll:1320
+#: lexer.ll:1281
 msgid "consider updating the input with the convert-ly script"
 msgstr ""
 
-#: lexer.ll:1326
+#: lexer.ll:1287
 #, c-format
 msgid "program too old: %s (file requires: %s)"
 msgstr ""
 
+#: auto-beam.scm:147
+msgid "Beam end fits no pattern"
+msgstr ""
+
 #: backend-library.scm:27
 #, scheme-format
 msgid "Invoking `~a'..."
@@ -3405,53 +3399,49 @@ msgstr ""
 msgid "no systems found in \\score markup, does it have a \\layout block?"
 msgstr ""
 
-#: define-markup-commands.scm:2856
+#: define-markup-commands.scm:2907
 #, scheme-format
 msgid "Cannot find glyph ~a"
 msgstr ""
 
-#: define-markup-commands.scm:3282
+#: define-markup-commands.scm:3333
 #, scheme-format
 msgid "no brace found for point size ~S "
 msgstr ""
 
-#: define-markup-commands.scm:3283
+#: define-markup-commands.scm:3334
 #, scheme-format
 msgid "defaulting to ~S pt"
 msgstr ""
 
-#: define-markup-commands.scm:3535
+#: define-markup-commands.scm:3586
 #, scheme-format
 msgid "not a valid duration string: ~a"
 msgstr ""
 
-#: define-markup-commands.scm:3746
+#: define-markup-commands.scm:3797
 #, scheme-format
 msgid "not a valid duration string: ~a - ignoring"
 msgstr ""
 
-#: define-music-types.scm:792
+#: define-music-callbacks.scm:114
 #, scheme-format
-msgid "symbol expected: ~S"
+msgid "\\time in mid-measure at ~A"
 msgstr ""
 
-#: define-music-types.scm:795
+#: define-music-types.scm:791
 #, scheme-format
-msgid "cannot find music object: ~S"
+msgid "symbol expected: ~S"
 msgstr ""
 
-#: define-music-types.scm:815
+#: define-music-types.scm:794
 #, scheme-format
-msgid "bad make-music argument: ~S"
+msgid "cannot find music object: ~S"
 msgstr ""
 
-#: define-music-types.scm:827
+#: define-music-types.scm:814
 #, scheme-format
-msgid "unknown repeat type `~S'"
-msgstr ""
-
-#: define-music-types.scm:828
-msgid "See define-music-types.scm for supported repeats"
+msgid "bad make-music argument: ~S"
 msgstr ""
 
 #: define-note-names.scm:972
@@ -3468,17 +3458,17 @@ msgstr ""
 msgid "Could not find language `~a'.  Ignoring."
 msgstr ""
 
-#: document-backend.scm:132
+#: document-backend.scm:135
 #, scheme-format
 msgid "pair expected in doc ~s"
 msgstr ""
 
-#: document-backend.scm:189
+#: document-backend.scm:192
 #, scheme-format
 msgid "cannot find interface for property: ~S"
 msgstr ""
 
-#: document-backend.scm:199
+#: document-backend.scm:202
 #, scheme-format
 msgid "unknown Grob interface: ~S"
 msgstr ""
@@ -3488,17 +3478,17 @@ msgstr ""
 msgid "Processing ~S..."
 msgstr ""
 
-#: documentation-lib.scm:176
+#: documentation-lib.scm:175
 #, scheme-format
 msgid "Writing ~S..."
 msgstr ""
 
-#: documentation-lib.scm:188
+#: documentation-lib.scm:187
 #, scheme-format
 msgid "cannot find description for property `~S' (~S)"
 msgstr ""
 
-#: documentation-lib.scm:209
+#: documentation-lib.scm:208
 #, scheme-format
 msgid "cannot find description for property ~S (~S)"
 msgstr ""
@@ -3513,27 +3503,27 @@ msgstr ""
 msgid "Writing ~a..."
 msgstr ""
 
-#: framework-ps.scm:250
+#: framework-ps.scm:251
 #, scheme-format
 msgid "cannot embed ~S=~S"
 msgstr ""
 
-#: framework-ps.scm:293
+#: framework-ps.scm:294
 #, scheme-format
 msgid "cannot extract file matching ~a from ~a"
 msgstr ""
 
-#: framework-ps.scm:311
+#: framework-ps.scm:312
 #, scheme-format
 msgid "do not know how to embed ~S=~S"
 msgstr ""
 
-#: framework-ps.scm:336
+#: framework-ps.scm:337
 #, scheme-format
 msgid "do not know how to embed font ~s ~s ~s"
 msgstr ""
 
-#: framework-ps.scm:687
+#: framework-ps.scm:688
 msgid ""
 "\n"
 "The PostScript backend does not support the\n"
@@ -3569,32 +3559,32 @@ msgstr ""
 msgid "Error in beam quanting.  Expected ~S 0, found ~S."
 msgstr ""
 
-#: lily-library.scm:333
+#: lily-library.scm:350
 msgid "Music unsuitable for context-mod"
 msgstr ""
 
-#: lily-library.scm:388
+#: lily-library.scm:405
 #, scheme-format
 msgid "Cannot find context-def \\~a"
 msgstr ""
 
-#: lily-library.scm:404
+#: lily-library.scm:421
 msgid "Music unsuitable for output-def"
 msgstr ""
 
-#: lily-library.scm:884
+#: lily-library.scm:901
 msgid ""
 "Find the index between @var{start} and @var{end} (an integer)\n"
 "which produces the closest match to @var{target-val} if\n"
 "applied to function @var{getter}."
 msgstr ""
 
-#: lily-library.scm:955
+#: lily-library.scm:995
 #, scheme-format
 msgid "unknown unit: ~S"
 msgstr ""
 
-#: lily-library.scm:980
+#: lily-library.scm:1020
 #, scheme-format
 msgid "no \\version statement found, please add~afor future compatibility"
 msgstr ""
@@ -3607,50 +3597,50 @@ msgstr ""
 msgid "define-session used after session start"
 msgstr ""
 
-#: lily.scm:393
+#: lily.scm:399
 msgid "Using (ice-9 curried-definitions) module\n"
 msgstr ""
 
-#: lily.scm:396
+#: lily.scm:402
 msgid "Guile 1.8\n"
 msgstr ""
 
-#: lily.scm:455
+#: lily.scm:459
 #, scheme-format
 msgid "cannot find: ~A"
 msgstr ""
 
-#: lily.scm:878
+#: lily.scm:884
 msgid "Success: compilation successfully completed"
 msgstr ""
 
-#: lily.scm:879
+#: lily.scm:885
 msgid "Compilation completed with warnings or errors"
 msgstr ""
 
-#: lily.scm:940
+#: lily.scm:946
 #, scheme-format
 msgid "job ~a terminated with signal: ~a"
 msgstr ""
 
-#: lily.scm:943
+#: lily.scm:949
 #, scheme-format
 msgid ""
 "logfile ~a (exit ~a):\n"
 "~a"
 msgstr ""
 
-#: lily.scm:965 lily.scm:1054
+#: lily.scm:971 lily.scm:1060
 #, scheme-format
 msgid "failed files: ~S"
 msgstr ""
 
-#: lily.scm:1045
+#: lily.scm:1051
 #, scheme-format
 msgid "Redirecting output to ~a..."
 msgstr ""
 
-#: lily.scm:1064 ps-to-png.scm:66
+#: lily.scm:1070 ps-to-png.scm:66
 #, scheme-format
 msgid "Invoking `~a'...\n"
 msgstr ""
@@ -3709,52 +3699,61 @@ msgstr ""
 msgid "negative replication count; ignoring"
 msgstr ""
 
-#: music-functions.scm:272
-msgid "More alternatives than repeats.  Junking excess alternatives"
+#: music-functions.scm:311
+#, scheme-format
+msgid "invalid tremolo repeat count: ~a"
 msgstr ""
 
-#: music-functions.scm:303
+#: music-functions.scm:340
 #, scheme-format
-msgid "invalid tremolo repeat count: ~a"
+msgid "unknown repeat type `~S': must be volta, unfold, percent, or tremolo"
+msgstr ""
+
+#: music-functions.scm:344
+msgid "More alternatives than repeats.  Junking excess alternatives"
 msgstr ""
 
-#: music-functions.scm:459
+#: music-functions.scm:491
 #, scheme-format
 msgid "bad grob property path ~a"
 msgstr ""
 
-#: music-functions.scm:753
+#: music-functions.scm:786
 msgid "Bad chord repetition"
 msgstr ""
 
-#: music-functions.scm:788
+#: music-functions.scm:888
 #, scheme-format
 msgid "music expected: ~S"
 msgstr ""
 
-#: music-functions.scm:1144
+#: music-functions.scm:1244
 #, scheme-format
 msgid "cannot find quoted music: `~S'"
 msgstr ""
 
-#: music-functions.scm:1282
+#: music-functions.scm:1383
 msgid "Add @var{octave-shift} to the octave of @var{pitch}."
 msgstr ""
 
-#: music-functions.scm:1342
+#: music-functions.scm:1446
 #, scheme-format
 msgid "Unknown octaveness type: ~S "
 msgstr ""
 
-#: music-functions.scm:1343
+#: music-functions.scm:1447
 msgid "Defaulting to 'any-octave."
 msgstr ""
 
-#: music-functions.scm:1688
+#: music-functions.scm:1833
 #, scheme-format
 msgid "unknown accidental style: ~S"
 msgstr ""
 
+#: music-functions.scm:2051
+msgid "Missing duration"
+msgstr ""
+
 #: output-ps.scm:278 output-svg.scm:539
 #, scheme-format
 msgid "unknown line-cap-style: ~S"
@@ -3799,12 +3798,12 @@ msgstr ""
 msgid "Must use #(set-paper-size .. ) within \\paper { ... }"
 msgstr ""
 
-#: parser-clef.scm:164
+#: parser-clef.scm:176
 #, scheme-format
 msgid "unknown clef type `~a'"
 msgstr ""
 
-#: parser-clef.scm:165
+#: parser-clef.scm:177
 #, scheme-format
 msgid "supported clefs: ~a"
 msgstr ""
@@ -3813,7 +3812,7 @@ msgstr ""
 msgid "error in #{ ... #}"
 msgstr ""
 
-#: part-combiner.scm:598
+#: part-combiner.scm:608
 #, scheme-format
 msgid "quoted music `~a' is empty"
 msgstr ""
index 0f1f35fa7c48aa1fe635899df8c2b83083723f2c..596fa9fcf3fab956c753dc08146f5a56aca1a6e5 100644 (file)
--- a/po/nl.po
+++ b/po/nl.po
@@ -1,5 +1,5 @@
 # Dutch translations for GNU Lilypond.
-# Copyright (C) 2013 Free Software Foundation, Inc.
+# Copyright (C) 2013--2014 Free Software Foundation, Inc.
 # This file is distributed under the same license as the lilypond package.
 #
 # "Occasionally it troubles me just how far one strays
@@ -1479,7 +1479,7 @@ msgstr ""
 
 #: musicxml2ly.py:2576
 msgid ""
-"Copyright (c) 2005--2012 by\n"
+"Copyright (c) 2005--2014 by\n"
 "    Han-Wen Nienhuys <hanwen@xs4all.nl>,\n"
 "    Jan Nieuwenhuizen <janneke@gnu.org> and\n"
 "    Reinhold Kainhofer <reinhold@kainhofer.com>\n"
index 98e061332cf4c0a4f835b6e46f77aa9717767342..3e02189ac059ee3da23641dfbbe8851855939db6 100644 (file)
--- a/po/sv.po
+++ b/po/sv.po
@@ -19,7 +19,7 @@ msgstr ""
 #.
 #. source file of the GNU LilyPond music typesetter
 #.
-#. (c)  1998--2003  Han-Wen Nienhuys <hanwen@cs.uu.nl>
+#. (c) 1998--2014  Han-Wen Nienhuys <hanwen@cs.uu.nl>
 #. Jan Nieuwenhuizen <janneke@gnu.org>
 #. ##  subst:\(^\|[^._a-z]\)\(abspath\|identify\|warranty\|progress\|warning\|error\|exit\|getopt_args\|option_help_str\|options_help_str\|help\|setup_temp\|read_pipe\|system\|cleanup_temp\|strip_extension\|cp_to_dir\|mkdir_p\|init\) *(
 #. ##  replace:\1ly.\2 (
@@ -59,7 +59,7 @@ msgid "Copyright (c) %s by"
 msgstr "Copyright © %s av"
 
 #: lilylib.py:114
-msgid " 1998--2003"
+msgid " 1998--2014"
 msgstr " 1998-2003"
 
 #: lilylib.py:118
@@ -308,7 +308,7 @@ msgstr "Tar bort utdatafilen"
 #.
 #. source file of the GNU LilyPond music typesetter
 #.
-#. (c)  1998--2003  Han-Wen Nienhuys <hanwen@cs.uu.nl>
+#. (c) 1998--2014  Han-Wen Nienhuys <hanwen@cs.uu.nl>
 #. Jan Nieuwenhuizen <janneke@gnu.org>
 #. TODO
 #. use -f and -t for -s output
@@ -649,7 +649,7 @@ msgstr "inga filer angivna p
 #.
 #. source file of the GNU LilyPond music typesetter
 #.
-#. (c)  1998--2003  Han-Wen Nienhuys <hanwen@cs.uu.nl>
+#. (c) 1998--2014  Han-Wen Nienhuys <hanwen@cs.uu.nl>
 #. Jan Nieuwenhuizen <janneke@gnu.org>
 #. This is the third incarnation of ly2dvi.
 #.
@@ -935,7 +935,7 @@ msgstr "%s skrivet till \"%s\"..."
 #.
 #. source file of the GNU LilyPond music typesetter
 #.
-#. (c)  1998--2003  Han-Wen Nienhuys <hanwen@cs.uu.nl>
+#. (c) 1998--2014  Han-Wen Nienhuys <hanwen@cs.uu.nl>
 #. Jan Nieuwenhuizen <janneke@gnu.org>
 #. ###############################################################
 #. Users of python modules should include this snippet.
index 3e62f0366e68e5281b8cb3ae6e19f3aa23b22a25..03df7c03cb7735e5f8f4746983e19384cb85ea19 100644 (file)
@@ -1,4 +1,4 @@
-%!PS-Adobe-1.0: music-drawing-routines.ps
+%!PS-Adobe-2.0
 %
 % Functions for direct and embedded PostScript
 
@@ -63,12 +63,7 @@ bind def
     0 setgray 0 setlinecap % Prepare graphics state
     1 setlinewidth 0 setlinejoin
     10 setmiterlimit [ ] 0 setdash newpath
-    /languagelevel where % If level not equal to 1 then
-    {pop languagelevel % set strokeadjust and
-    1 ne % overprint to their defaults.
-      {false setstrokeadjust false setoverprint
-      } if
-    } if
+    false setoverprint
 } bind def
 
 /EndEPSF { %def
@@ -77,11 +72,18 @@ bind def
   b4_Inc_state restore
 } bind def
 
-/stroke_and_fill {
+/stroke_and_fill? {
+    {
        gsave
-               stroke
+           false setstrokeadjust
+           stroke
        grestore
        fill
+    }
+    {
+       stroke
+    }
+    ifelse
 } bind def
 
 /vector_add { % x1 y1 x2 y2 vector_add x1+x2 y1+y2
@@ -95,30 +97,104 @@ bind def
 
 /draw_round_box % width height x y blot
 {
-        dup
-       0.0 gt {
-               setlinewidth % w h x y
-               rmoveto % w h
-               2 copy 0 ne exch 0 ne and
+    0 max setlinewidth
+    matrix currentmatrix 5 1 roll
+    currentpoint translate newpath translate
+    2 copy 0 min exch 0 min exch translate
+    abs exch abs exch
+    currentlinewidth 0 eq
+    { % straight corners
+       2 copy 2 mul gt
+       { % horizontal
+           0 1 index 2 div moveto
+           setlinewidth
+           0 rlineto
+           0 setlinecap
+           stroke
+       }
+       {
+           2 copy exch 2 mul gt
+           { % vertical
+               1 index 2 div 0 moveto
+               exch setlinewidth
+               0 exch rlineto
+               0 setlinecap
+               stroke
+           }
+           {
+               0 0 4 2 roll rectfill
+           }
+           ifelse
+       }
+       ifelse
+    }
+    { % rounded corners
+       2 copy 0 eq exch 0 eq or
+       { % line shape
+           0 0 moveto
+           rlineto
+           1 setlinecap
+           stroke
+           0 setlinecap
+       }
+       { % full shape
+           currentstrokeadjust {
+               currentlinewidth 2 div
+               0 0 2 index 180 270 arc
+               2 index 0 2 index 270 360 arc
+               3 copy 0 90 arc
+               0 2 index 3 -1 roll 90 180 arc
+               closepath
+               2 copy 2 mul gt
+               { % horizontal
+                   2 copy add currentlinewidth add 10 add % large enough
+                   0 1 index neg moveto
+                   2 index 1 index neg lineto
+                   2 index 1 index lineto
+                   0 exch lineto closepath
+                   gsave clip newpath
+                   0 1 index 2 div moveto
+                   currentlinewidth add setlinewidth
+                   0 rlineto
+                   2 setlinecap
+                   stroke
+                   grestore
+               }
                {
-                   0 setlinecap
-                   1 setlinejoin
-                   currentpoint % w h x1 y1
-                   4 2 roll % x1 y1 w h
-                   4 copy
-                   rectfill
-                   rectstroke
-               } {
-                   1 setlinecap
-                   rlineto stroke
-               } ifelse
-       } {
-               pop % w h x y
-               rmoveto % w h
-               currentpoint % w h x1 y1
-               4 2 roll % x1 y1 w h
-               rectfill
-       } ifelse
+                   2 copy exch 2 mul gt
+                   { % vertical
+                       2 copy add currentlinewidth add 10 add % large enough
+                       dup neg 0 moveto
+                       dup 0 lineto
+                       dup 2 index lineto
+                       neg 1 index lineto closepath
+                       gsave clip newpath
+                       1 index 2 div 0 moveto
+                       exch currentlinewidth add setlinewidth
+                       0 exch rlineto
+                       2 setlinecap
+                       stroke
+                       grestore
+                   }
+                   {
+                       pop pop
+                       fill
+                   }
+                   ifelse
+               }
+               ifelse
+               newpath
+           }
+           {
+               1 setlinejoin
+               0 0 4 2 roll 4 copy rectstroke rectfill
+           }
+           ifelse
+       }
+       ifelse
+    }
+    ifelse
+    setmatrix
 } bind def
 
 /draw_polygon % fill? x(n) y(n) x(n-1) y(n-1) ... x(0) y(0) n blot
@@ -136,11 +212,7 @@ bind def
        rmoveto % x(0) y(0)
        { polygon_x polygon_y vector_add lineto } repeat % n times
        closepath
-       { %fill?
-               stroke_and_fill
-       }{
-               stroke
-       } ifelse
+       stroke_and_fill?
 } bind def
 
 /draw_circle % filled? radius thickness draw_circle
@@ -150,9 +222,7 @@ bind def
        3 2 roll        % f? x0 y0 r
        dup 0 rmoveto
        0 360 arc closepath
-               { stroke_and_fill }
-               { stroke }
-       ifelse
+       stroke_and_fill?
 } bind def
 
 /draw_ellipse % filled? x-radius y-radius thickness draw_ellipse
@@ -164,9 +234,7 @@ bind def
   1 0 rmoveto
   1 0 360  arc closepath
   savematrix setmatrix
-             { stroke_and_fill}
-             { stroke }
-  ifelse
+  stroke_and_fill?
 } bind def
 
 /draw_partial_ellipse % filled connect x-radius y-radius startangle endangle thickness draw_partial_ellipse
@@ -205,7 +273,7 @@ bind def
   connect {
     startangle cos startangle sin moveto endangle cos endangle sin lineto }
     if
-  savematrix setmatrix filled { stroke_and_fill } { stroke } ifelse
+  savematrix setmatrix filled stroke_and_fill?
   grestore
 } bind def
 
@@ -213,7 +281,6 @@ bind def
 {
        setlinewidth % dx dy x1 y1
        1 setlinecap
-       1 setlinejoin
        rmoveto % dx dy
        rlineto
        stroke
@@ -222,7 +289,6 @@ bind def
 /draw_dashed_line % dx dy thickness dashpattern offset draw_dashed_line
 {
        1 setlinecap
-       1 setlinejoin
        setdash % dx dy thickness
        setlinewidth %dx dy
        rlineto
index a47c950e248152e2f01158880e58d52cab835265..ec5412b1d8192bee41e292e31bc62a78798cc45d 100644 (file)
@@ -189,11 +189,12 @@ def get_latex_textwidth (source, global_options):
 
     progress (_ ("Running `%s' on file `%s' to detect default page settings.\n")
               % (global_options.latex_program, tmpfile))
-    cmd = 'TEXINPUTS="%s:$TEXINPUTS" %s %s' \
-        % (global_options.input_dir, global_options.latex_program, tmpfile)
+    cmd = '%s %s' % (global_options.latex_program, tmpfile)
     debug ("Executing: %s\n" % cmd)
     run_env = os.environ.copy()
     run_env['LC_ALL'] = 'C'
+    run_env['TEXINPUTS'] = '%s:%s' % \
+                           (global_options.input_dir, run_env.get('TEXINPUTS',""))
 
     ### unknown why this is necessary
     universal_newlines = True
@@ -206,7 +207,13 @@ def get_latex_textwidth (source, global_options):
         output_filename = os.path.join(output_dir, 'output.txt')
         # call command
         cmd += " > %s" % output_filename
+        oldtexinputs = os.environ.get ('TEXINPUTS')
+        os.environ['TEXINPUTS'] = run_env['TEXINPUTS']
         returncode = os.system(cmd)
+        if oldtexinputs:
+            os.environ['TEXINPUTS'] = oldtexinputs
+        else:
+            del os.environ['TEXINPUTS']
         parameter_string = open(output_filename).read()
         if returncode != 0:
             warning (_ ("Unable to auto-detect default settings:\n"))
index e2eb3baa4ac5735055ece16dd52d2b90e50a0276..5eb2a75bfc4f17bbcea91068518c2e928b502d99 100644 (file)
@@ -3683,6 +3683,41 @@ def conv(str):
     str = re.sub ("New_dynamic_engraver", "Dynamic_engraver", str)
     return str
 
+@rule ((2, 17, 97), r'''(make-relative (a b) b ...) -> make-relative (a b) #{ a b #}...''')
+def conv (str):
+    str = re.sub (r"(\(make-relative\s+\(\s*(([A-Za-z][-_A-Za-z0-9]*)" +
+                  r"(?:\s+[A-Za-z][-_A-Za-z0-9]*)*)\s*\)\s*)\3(?=\s)",
+                  r"\1(make-event-chord (list \2))", str)
+    str = re.sub (r"(\(make-relative\s+\(\s*([A-Za-z][-_A-Za-z0-9]*" +
+                  r"(?:\s+([A-Za-z][-_A-Za-z0-9]*))+)\s*\)\s*)\3(?=\s)",
+                  r"\1(make-sequential-music (list \2))", str)
+    return str
+
+@rule ((2, 18, 0),
+       _ ("bump version for release"))
+def conv (str):
+    return str
+
+@rule ((2, 19, 2), r"\lyricsto \new/\context/... -> \new/\context/... \lyricsto")
+def conv (str):
+    word=r'(?:#?"[^"]*"|\b' + wordsyntax + r'\b)'
+    str = re.sub (r"(\\lyricsto\s*" + word + r"\s*)(\\(?:new|context)\s*" + word
+                  + r"(?:\s*=\s*" + word + r")?\s*)",
+                  r"\2\1", str)
+    str = re.sub (r"(\\lyricsto\s*" + word + r"\s*)\\lyricmode\b\s*",
+                  r"\1", str)
+    str = re.sub (r"(\\lyricsto\s*" + word + r"\s*)\\lyrics\b\s*",
+                  r"\\new Lyrics \1", str)
+    str = re.sub (r'\\lyricmode\s*(\\lyricsto\b)', r"\1", str)
+    return str
+
+@rule ((2, 19, 7), "keySignature -> keyAlterations")
+def conv(str):
+    str = re.sub (r'\bkeySignature\b', 'keyAlterations', str)
+    str = re.sub (r'\blastKeySignature\b', 'lastKeyAlterations', str)
+    str = re.sub (r'\blocalKeySignature\b', 'localAlterations', str)
+    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 647061f4c710d46066b9e1aa20134bbd52fef291..1f6b350e6afbf51d063ac5abc986a158642abbbc 100644 (file)
@@ -1,6 +1,6 @@
 # This file is part of LilyPond, the GNU music typesetter.
 #
-# Copyright (C) 1998--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+# Copyright (C) 1998--2014 Han-Wen Nienhuys <hanwen@xs4all.nl>
 #                Jan Nieuwenhuizen <janneke@gnu.org>
 #
 # LilyPond is free software: you can redistribute it and/or modify
index 4049b49cb09fa8456094e99d90d31b734efa03a4..890798c66a4f022139013c81e641b743756aef15 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2001--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 2001--2014 Han-Wen Nienhuys <hanwen@xs4all.nl>
             Jan Nieuwenhuizen <janneke@gnu.org>
 
 
index ea2525d866e4085e3adb90de929a7ebd91ac4f53..a564f29ce500700a9c1bd34a783800ee69d11377 100644 (file)
@@ -1489,7 +1489,7 @@ class KeySignatureChange (Music):
         elif self.non_standard_alterations:
             alterations = [self.format_non_standard_alteration (a) for
                                         a in self.non_standard_alterations]
-            return "\\set Staff.keySignature = #`(%s)" % string.join (alterations, " ")
+            return "\\set Staff.keyAlterations = #`(%s)" % string.join (alterations, " ")
         else:
             return ''
 
index 14e0209675d02c1b220745d39c14c46271625b2b..72c7ea322982ae4644799c76083aca4300cf11e3 100644 (file)
@@ -1,6 +1,6 @@
 ;;;; This file is part of LilyPond, the GNU music typesetter.
 ;;;;
-;;;; Copyright (C) 2000--2012 Jan Nieuwenhuizen <janneke@gnu.org>
+;;;; Copyright (C) 2000--2014 Jan Nieuwenhuizen <janneke@gnu.org>
 ;;;;
 ;;;; LilyPond is free software: you can redistribute it and/or modify
 ;;;; it under the terms of the GNU General Public License as published by
     (let ((value (ly:context-property context name)))
       (if (not (null? value)) value default)))
 
-  (define (beaming<? a b)
-    (ly:moment<? (fraction->moment (car a))
-                 (fraction->moment (car b))))
-
-  (define (ending-moments group-list start-beat base-moment)
+  (define (ending-moments group-list start-beat base-length)
     (if (null? group-list)
         '()
         (let ((new-start (+ start-beat (car group-list))))
-          (cons (ly:moment-mul (ly:make-moment new-start 1) base-moment)
-                (ending-moments (cdr group-list) new-start base-moment)))))
+          (cons (* new-start base-length)
+                (ending-moments (cdr group-list) new-start base-length)))))
 
-  (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 (larger-setting type sorted-alist)
+    (assoc type sorted-alist <=))
 
-  (define (beat-end? moment beat-structure)
-    (pair? (member moment beat-structure)))  ;; member returns a list if found, not #t
+  (define (beat-end? moment beat-endings)
+    (pair? (memv moment beat-endings)))  ;; member returns a list if found, not #t
 
   ;; Start of actual auto-beam test routine
   ;;
   ;;
   ;; Don't start auto beams on grace notes
-  (if (and (!= (ly:moment-grace-numerator (ly:context-now context)) 0)
-           (= dir START))
-      #f
-      (let* ((base-moment (get 'baseMoment (ly:make-moment 1 4)))
-             (measure-length (get 'measureLength (ly:make-moment 1 1)))
+  (and (or (zero? (ly:moment-grace (ly:context-now context)))
+           (!= dir START))
+      (let* ((base-length (cond ((get 'baseMoment #f) => ly:moment-main)
+                                (else 1/4)))
+             (measure-length (cond ((get 'measureLength #f) => ly:moment-main)
+                                   (else 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<?))
+             (beat-endings (ending-moments beat-structure 0 base-length))
+             (exceptions (sort (map
+                                (lambda (a)
+                                  (if (pair? (car a))
+                                      (cons (/ (caar a) (cdar a))
+                                            (cdr a))
+                                      a))
+                                (assoc-get 'end
+                                           (get 'beamExceptions '())
+                                           '()))
+                               car<))
              (function (if (= dir START) 'begin 'end))
              (beam-half-measure (get 'beamHalfMeasure #t))
-             (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)
+             (type (ly:moment-main test-beam))
+             (non-grace (ly:moment-main measure-pos))
+             (pos (if (negative? non-grace)
+                      (+ 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)
-                                      '()))
+             (default-rule (and (null? type-grouping)
+                                (larger-setting type exceptions)))
+             (default-grouping (and default-rule (cdr default-rule)))
+             (default-beat-length (and 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)))
+                                  default-beat-length
+                                  type))
+             (exception-moments (and exception-grouping
+                                     (ending-moments
+                                      exception-grouping 0 grouping-moment))))
 
         (if (= dir START)
             ;; Start rules -- #t if beam is allowed to start
             (or beam-half-measure ;; Start anywhere, but option for mid-measure
-                (not (equal? (ly:moment-add pos pos) measure-length))
+                (not (= (+ pos pos) measure-length))
                 (not (= 3 (car time-signature-fraction))) ;; in triple meter
-                (not (= (cdr type) ;; when the beamed note is 1/6 of a measure
+                (not (= (denominator type) ;; when the beamed note is 1/6 of a measure
                         (* 2 (cdr time-signature-fraction)))))
             ;; End rules -- #t if beam is required to end
-            (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
+            (or (zero? pos) ;; end at measure beginning
+                (if exception-grouping
+                    (beat-end? pos exception-moments) ;; check exception rule
+                    (beat-end? pos beat-endings))))))) ;; no exception, so check beat ending
+
+
+(define-public (extract-beam-exceptions music)
+  "Creates a value useful for setting @code{beamExceptions} from @var{music}."
+  (define (car> a b) (> (car a) (car b)))
+  (define (beatify! lst)
+    ;; takes a collection of end points, sorts them, and returns the
+    ;; non-zero differences as beaming pattern
+    (let ((s (sort-list! lst <)))
+      (remove! zero?
+               (map - s (cons 0 s)))))
+  (let ((res '()))
+    (let analyze ((m (unfold-repeats-fully (event-chord-reduce music)))
+                  (pos 0))
+      ;; enter beam ends from m starting at pos into res, return new pos
+      (cond ((music-is-of-type? m 'bar-check) 0)
+            ((music-is-of-type? m 'simultaneous-music)
+             (fold (lambda (m prev) (max (analyze m pos) prev))
+                   pos
+                   (ly:music-property m 'elements)))
+            ((not (music-is-of-type? m 'rhythmic-event))
+             (let ((elt (ly:music-property m 'element)))
+               (fold analyze
+                     (if (ly:music? elt) (analyze elt pos) pos)
+                     (ly:music-property m 'elements))))
+            ;; Have rhythmic event.
+            ((any
+              (lambda (art)
+                (and (music-is-of-type? art 'beam-event)
+                     (= (ly:music-property art 'span-direction START) STOP)))
+              (ly:music-property m 'articulations))
+             (let* ((len (duration-length (ly:music-property m 'duration)))
+                    (pos (+ pos len))
+                    (ass (assv len res)))
+               (cond ((or (zero? len) (not (integer? (/ pos len))))
+                      (ly:warning m (_ "Beam end fits no pattern")))
+                     (ass
+                      (set-cdr! ass (cons (/ pos len) (cdr ass))))
+                     (else
+                      (set! res (cons (list len (/ pos len)) res))))
+               pos))
+            (else
+             (+ pos (duration-length (ly:music-property m 'duration))))))
+
+    ;; takes the output from the loop, generates actual beam exceptions
+    (list
+     (cons 'end
+           (map!
+            (lambda (l)
+              (cons (car l)
+                    (beatify! (cdr l))))
+            (sort-list! res car>))))))
index a16771818722a57e24cabbba1bc25ea5ef452357..a8899e83f1b28023151212b57c503258fbb79c44 100644 (file)
@@ -1,6 +1,6 @@
 ;;;; This file is part of LilyPond, the GNU music typesetter.
 ;;;;
-;;;; Copyright (C) 2005--2012 Jan Nieuwenhuizen <janneke@gnu.org>
+;;;; Copyright (C) 2005--2014 Jan Nieuwenhuizen <janneke@gnu.org>
 ;;;; Han-Wen Nienhuys <hanwen@xs4all.nl>
 ;;;;
 ;;;; LilyPond is free software: you can redistribute it and/or modify
index 03c6f808156f88816b7fa6da999670b4b2891316..ff2d3f29b4a35d30cee581fa8f31ac096b06acb5 100644 (file)
@@ -1,6 +1,6 @@
 ;;;; This file is part of LilyPond, the GNU music typesetter.
 ;;;;
-;;;; Copyright (C) 2009--2012 Marc Hohl <marc@hohlart.de>
+;;;; Copyright (C) 2009--2014 Marc Hohl <marc@hohlart.de>
 ;;;;
 ;;;; LilyPond is free software: you can redistribute it and/or modify
 ;;;; it under the terms of the GNU General Public License as published by
@@ -910,50 +910,51 @@ of the volta brackets relative to the bar lines."
                                        line-thickness
                                        1/2))
          (bar-array (ly:grob-object grob 'bars))
-         (bar-array-length (ly:grob-array-length bar-array))
          ;; the bar-array starts with the uppermost bar line grob that is
          ;; covered by the left edge of the volta bracket; more (span)
          ;; bar line grobs from other staves may follow
-         (left-bar-line (if (> bar-array-length 0)
-                            (ly:grob-array-ref bar-array 0)
-                            '()))
+         (left-bar-line (and (ly:grob-array? bar-array)
+                             (positive? (ly:grob-array-length bar-array))
+                             (ly:grob-array-ref bar-array 0)))
          ;; we need the vertical-axis-group-index of the left-bar-line
          ;; to find the corresponding right-bar-line
-         (vag-index (if (null? left-bar-line)
-                        -1
-                        (ly:grob-get-vertical-axis-group-index left-bar-line)))
+         (vag-index (and left-bar-line
+                         (ly:grob-get-vertical-axis-group-index left-bar-line)))
          ;; the bar line corresponding to the right edge of the volta bracket
          ;; is the last entry with the same vag-index, so we transform the array to a list,
-         ;; reverse it and search for suitable entries:
-         (filtered-grobs (filter (lambda (e)
-                                   (eq? (ly:grob-get-vertical-axis-group-index e)
-                                        vag-index))
-                                 (reverse (ly:grob-array->list bar-array))))
-         ;; we need the first one (if any)
-         (right-bar-line (if (pair? filtered-grobs)
-                             (car filtered-grobs)
-                             '()))
+         ;; reverse it and search for the first suitable entry from
+         ;; the back
+         (right-bar-line (and left-bar-line
+                              (find (lambda (e)
+                                      (eqv? (ly:grob-get-vertical-axis-group-index e)
+                                            vag-index))
+                                    (reverse (ly:grob-array->list bar-array)))))
          ;; the left-bar-line may be a #'<Grob Item >,
          ;; so we add "" as a fallback return value
-         (left-bar-glyph-name (if (null? left-bar-line)
-                                  (string annotation-char)
-                                  (ly:grob-property left-bar-line 'glyph-name "")))
-         (right-bar-glyph-name (if (null? right-bar-line)
-                                   (string annotation-char)
-                                   (ly:grob-property right-bar-line 'glyph-name "")))
-         (left-bar-broken (or (null? left-bar-line)
-                              (not (zero? (ly:item-break-dir left-bar-line)))))
-         (right-bar-broken (or (null? right-bar-line)
-                               (not (zero? (ly:item-break-dir right-bar-line)))))
+         (left-bar-glyph-name (if left-bar-line
+                                  (ly:grob-property left-bar-line 'glyph-name "")
+                                  (string annotation-char)))
+         (right-bar-glyph-name (if right-bar-line
+                                   (ly:grob-property right-bar-line 'glyph-name "")
+                                   (string annotation-char)))
+         ;; This is the original logic.  It flags left-bar-broken if
+         ;; there is no left-bar-line.  That seems strange.
+         (left-bar-broken (not (and left-bar-line
+                                    (zero? (ly:item-break-dir left-bar-line)))))
+         (right-bar-broken (not (and right-bar-line
+                                     (zero? (ly:item-break-dir
+                                             right-bar-line)))))
+         ;; Revert to current grob for getting layout info if no
+         ;; left-bar-line available
          (left-span-stencil-extent (ly:stencil-extent
                                     (span-bar::compound-bar-line
-                                     left-bar-line
+                                     (or left-bar-line grob)
                                      left-bar-glyph-name
                                      dummy-extent)
                                     X))
          (right-span-stencil-extent (ly:stencil-extent
                                      (span-bar::compound-bar-line
-                                      right-bar-line
+                                      (or right-bar-line grob)
                                       right-bar-glyph-name
                                       dummy-extent)
                                      X))
@@ -968,7 +969,7 @@ of the volta brackets relative to the bar lines."
               (- (max 0 (interval-end left-span-stencil-extent))
                  (max 0 (interval-end (ly:stencil-extent
                                        (bar-line::compound-bar-line
-                                        left-bar-line
+                                        (or left-bar-line grob)
                                         left-bar-glyph-name
                                         dummy-extent)
                                        X)))
@@ -1048,7 +1049,7 @@ of the volta brackets relative to the bar lines."
 (define-bar-line ":|." ":|." #f " |.")
 (define-bar-line ".|:" "|" ".|:" ".|")
 (define-bar-line "[|:" "|" "[|:" " |")
-(define-bar-line ":|]" ":|]" #f " |")
+(define-bar-line ":|]" ":|]" #f " | ")
 (define-bar-line ":|][|:" ":|]" "[|:" " |  |")
 (define-bar-line ".|:-||" "||" ".|:" ".|")
 
index defefc7bc445375ff9142203a1f7c4a67fdee69f..b96281f336dcb153c42a2472e1723246bd543703 100644 (file)
@@ -1,6 +1,6 @@
 ;;;; This file is part of LilyPond, the GNU music typesetter.
 ;;;;
-;;;; Copyright (C) 2010--2012 Carl D. Sorensen <c_sorensen@byu.edu>
+;;;; Copyright (C) 2010--2014 Carl D. 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
index a131e7f3428d95870bcc3ec05b1643fe7d899552..fd965ac4d59d394bf5cd34e341689ad74b82ea45 100644 (file)
@@ -1,6 +1,6 @@
 ;;;; This file is part of LilyPond, the GNU music typesetter.
 ;;;;
-;;;; Copyright (C) 1998--2012 Jan Nieuwenhuizen <janneke@gnu.org>
+;;;; Copyright (C) 1998--2014 Jan Nieuwenhuizen <janneke@gnu.org>
 ;;;;                 Han-Wen Nienhuys <hanwen@xs4all.nl>
 ;;;;
 ;;;; LilyPond is free software: you can redistribute it and/or modify
   (and (pair? x)
        (index? (car x)) (index? (cdr x))))
 
+(define-public (rational-or-procedure? x)
+  (or
+   (and (rational? x) (exact? x))
+   (procedure? x)))
+
 (define-public (number-or-grob? x)
   (or (ly:grob? x) (number? x)))
 
index 009887bf678dbb35bfedab1f6cd351fc5c550905..0ea8e032a0e774bb95265e15df406739979e40db 100644 (file)
@@ -1,6 +1,6 @@
 ;;;; This file is part of LilyPond, the GNU music typesetter.
 ;;;;
-;;;; Copyright (C) 2004--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+;;;; Copyright (C) 2004--2014 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
index f7ba6b4edf220fb931428d0c967a7493ffd3c178..ffde2326f77b74c7434e2b351e90edb016ccdd34 100644 (file)
@@ -1,6 +1,6 @@
 ;;;; This file is part of LilyPond, the GNU music typesetter.
 ;;;;
-;;;; Copyright (C) 2003--2012 Jan Nieuwenhuizen <janneke@gnu.org>
+;;;; Copyright (C) 2003--2014 Jan Nieuwenhuizen <janneke@gnu.org>
 ;;;;
 ;;;; LilyPond is free software: you can redistribute it and/or modify
 ;;;; it under the terms of the GNU General Public License as published by
index fc32e6ba759dce9d447b3193a2121b06fc64dad1..22f54fec85e523adde58e5715ebd9bee0d6947a1 100644 (file)
@@ -1,6 +1,6 @@
 ;;;; This file is part of LilyPond, the GNU music typesetter.
 ;;;;
-;;;; Copyright (C) 2000--2012  Han-Wen Nienhuys <hanwen@xs4all.nl>
+;;;; Copyright (C) 2000--2014  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
index a80d4e2b6eb9cfd4c052fb9ec533f1e579a3a328..54faaa5ba7b2e157d118cfb14c2ec43727f90b4d 100644 (file)
@@ -1,6 +1,6 @@
 ;;;; This file is part of LilyPond, the GNU music typesetter.
 ;;;;
-;;;; Copyright (C) 2000--2012 Jan Nieuwenhuizen <janneke@gnu.org>
+;;;; Copyright (C) 2000--2014 Jan Nieuwenhuizen <janneke@gnu.org>
 ;;;;                 Han-Wen Nienhuys <hanwen@xs4all.nl>
 ;;;;
 ;;;; LilyPond is free software: you can redistribute it and/or modify
index 5cfc4449e7941d123429f9ae6f1a115e02106877..6510135f98453b9481707be18263aa97152233c2 100644 (file)
@@ -1,6 +1,6 @@
 ;;;; This file is part of LilyPond, the GNU music typesetter.
 ;;;;
-;;;; Copyright (C) 2006--2012 Han-Wen Nienhuys <hanwen@lilypond.org>
+;;;; Copyright (C) 2006--2014 Han-Wen Nienhuys <hanwen@lilypond.org>
 ;;;;
 ;;;; LilyPond is free software: you can redistribute it and/or modify
 ;;;; it under the terms of the GNU General Public License as published by
index 20d77ea72f5d100dbc5705f64b27a5023e74e057..2d38188d29273c4ec114e94380f60e41e41b7af0 100644 (file)
@@ -1,6 +1,6 @@
 ;;;; This file is part of LilyPond, the GNU music typesetter.
 ;;;;
-;;;; Copyright (C) 1998--2012  Han-Wen Nienhuys <hanwen@xs4all.nl>
+;;;; Copyright (C) 1998--2014  Han-Wen Nienhuys <hanwen@xs4all.nl>
 ;;;;                  Jan Nieuwenhuizen <janneke@gnu.org>
 ;;;;
 ;;;; LilyPond is free software: you can redistribute it and/or modify
@@ -60,6 +60,9 @@ vertical alignment.")
 numbers.  Can be @code{numbers} for going back to the same number or
 @code{numbers-with-letters} for going back to the same number with letter
 suffixes.  No setting will not go back in measure-number time.")
+     (alternativeRestores ,symbol-list? "Timing variables that are
+restored to their value at the end of the first alternative in
+subsequent alternatives.")
      (associatedVoice ,string? "Name of the @code{Voice} that has the
 melody for this @code{Lyrics} line.")
      (autoAccidentals ,list? "List of different ways to typeset an
@@ -215,6 +218,17 @@ and @samp{bracketed}.")
 symbol go, measured in half staff spaces from the center of the
 staff.")
      (completionBusy ,boolean? "Whether a completion-note head is playing.")
+     (completionFactor ,rational-or-procedure?
+"When @code{Completion_heads_engraver} and
+@code{Completion_rest_engraver} need to split a note or rest with a
+scaled duration, such as @code{c2*3}, this specifies the scale factor
+to use for the newly-split notes and rests created by the engraver.
+
+If @code{#f}, the completion engraver uses the scale-factor of
+each duration being split.
+
+If set to a callback procedure, that procedure is called with the
+context of the completion engraver, and the duration to be split.")
      (completionUnit ,ly:moment? "Sub-bar unit of completion.")
      (connectArpeggios ,boolean? "If set, connect arpeggios across
 piano staff.")
@@ -382,12 +396,12 @@ alterations should be printed.  The format is
 @code{(@var{step} . @var{alter})},
 where @var{step} is a number from 0 to@tie{}6 and
 @var{alter} from -2 (sharp) to 2 (flat).")
-     (keySignature ,list? "The current key signature.  This is an alist
+     (keyAlterations ,list? "The current key signature.  This is an alist
 containing @code{(@var{step} . @var{alter})} or
 @code{((@var{octave} . @var{step}) . @var{alter})}, where @var{step}
 is a number in the range 0 to@tie{}6 and @var{alter} a fraction,
 denoting alteration.  For alterations, use symbols, e.g.
-@code{keySignature = #`((6 . ,FLAT))}.")
+@code{keyAlterations = #`((6 . ,FLAT))}.")
 
 
      (lyricMelismaAlignment ,number? "Alignment to use for a melisma syllable.")
@@ -444,12 +458,12 @@ associated with the current context.  Ranges from@tie{}@w{-1} to@tie{}1,
 where the values@tie{}@w{-1} (@code{#LEFT}),@tie{}0 (@code{#CENTER})
 and@tie{}1 (@code{#RIGHT}) correspond to hard left, center, and hard
 right, respectively.")
-     (midiReverbLevel ,number? "Reverb effect level for the MIDI channel
-associated with the current context.  Ranges from 0 to@tie{}1
-(0=off,@tie{}1=full effect).")
-     (midiChorusLevel ,number? "Chorus effect level for the MIDI channel
-associated with the current context.  Ranges from 0 to@tie{}1
-(0=off,@tie{}1=full effect).")
+     (midiReverbLevel ,number? "Reverb effect level for the MIDI
+channel associated with the current context.  Ranges from 0
+to@tie{}1 (0=off,@tie{}1=full effect).")
+     (midiChorusLevel ,number? "Chorus effect level for the MIDI
+channel associated with the current context.  Ranges from 0
+to@tie{}1 (0=off,@tie{}1=full effect).")
      (minimumFret ,number? "The tablature auto string-selecting
 mechanism selects the highest string with a fret at least
 @code{minimumFret}.")
@@ -608,8 +622,6 @@ will create a @var{VerticalAlignment}; otherwise, it will create a
      (trebleStaffProperties ,list? "An alist of property settings to
 apply for the up staff of @code{PianoStaff}.  Used by
 @code{\\autochange}.")
-     (tremoloFlags ,integer? "The number of tremolo flags to add if no
-number is specified.")
      (tupletFullLength ,boolean? "If set, the tuplet is printed up to
 the start of the next note.")
      (tupletFullLengthNote ,boolean? "If set, end at the next note,
@@ -697,10 +709,11 @@ in an axis group.")
 @code{CommandColumn} contains items that will affect spacing.")
 
 
-     (lastKeySignature ,list? "Last key signature before a key
+     (lastChord ,markup? "Last chord, used for detecting chord changes.")
+     (lastKeyAlterations ,list? "Last key signature before a key
 signature change.")
-     (localKeySignature ,list? "The key signature at this point in the
-measure.  The format is the same as for @code{keySignature}, but can
+     (localAlterations ,list? "The key signature at this point in the
+measure.  The format is the same as for @code{keyAlterations}, but can
 also contain @code{((@var{octave} . @var{name}) . (@var{alter}
 @var{barnumber} . @var{measureposition}))} pairs.")
 
index dd6405a73e657984b842e4f7b384dc4051e45292..40b1b7de40d41d0c3914dcc53ccb79c184347997 100644 (file)
@@ -1,6 +1,6 @@
 ;;;; This file is part of LilyPond, the GNU music typesetter.
 ;;;;
-;;;; Copyright (C) 2005--2012 Erik Sandberg <mandolaerik@gmail.com>
+;;;; Copyright (C) 2005--2014 Erik Sandberg <mandolaerik@gmail.com>
 ;;;;
 ;;;; LilyPond is free software: you can redistribute it and/or modify
 ;;;; it under the terms of the GNU General Public License as published by
index 59a97b69670867c6c85ed0dd4d8aae976374c9b7..4ffd761607c788feef67edba4b1b1e5522bf78fb 100644 (file)
@@ -1,6 +1,6 @@
 ;;;; This file is part of LilyPond, the GNU music typesetter.
 ;;;;
-;;;; Copyright (C) 1998--2012  Han-Wen Nienhuys <hanwen@xs4all.nl>
+;;;; Copyright (C) 1998--2014  Han-Wen Nienhuys <hanwen@xs4all.nl>
 ;;;;                 Jan Nieuwenhuizen <janneke@gnu.org>
 ;;;;
 ;;;; LilyPond is free software: you can redistribute it and/or modify
@@ -221,6 +221,16 @@ accidentals)."
  "Kill this grob after the line breaking process."
  '())
 
+(ly:add-interface
+ 'outside-staff-axis-group-interface
+ "A vertical axis group on which outside-staff skyline calculations are done."
+ '(outside-staff-placement-directive vertical-skyline-elements))
+
+(ly:add-interface
+ 'outside-staff-interface
+ "A grob that could be placed outside staff."
+ '(outside-staff-horizontal-padding outside-staff-padding outside-staff-priority))
+
 (ly:add-interface
  'parentheses-interface
  "Parentheses for other objects."
index a5b0895c9bbfea3ccc2e23d9bfa26204d6c82e54..6f080aeb2d5626c7fc3058a8463831055e728ff1 100644 (file)
@@ -1,6 +1,6 @@
 ;;;; This file is part of LilyPond, the GNU music typesetter.
 ;;;;
-;;;; Copyright (C) 1998--2012  Han-Wen Nienhuys <hanwen@xs4all.nl>
+;;;; Copyright (C) 1998--2014  Han-Wen Nienhuys <hanwen@xs4all.nl>
 ;;;;                 Jan Nieuwenhuizen <janneke@gnu.org>
 ;;;;
 ;;;; LilyPond is free software: you can redistribute it and/or modify
@@ -170,19 +170,17 @@ when a spanner is broken at a line break.")
 ;;;
 ;;; c
 ;;;
+     (chord-dots-limit ,integer? "Limits the column of dots
+on each chord to the height of the chord plus
+@code{chord-dots-limit} staff-positions.")
      (circled-tip ,boolean? "Put a circle at start/@/end of
 hairpins (al/@/del niente).")
      (clip-edges ,boolean? "Allow outward pointing beamlets at the
 edges of beams?")
      (collapse-height ,ly:dimension? "Minimum height of system start
 delimiter.  If equal or smaller, the bracket/@/brace/@/line is removed.")
-     (collision-bias ,number? "Number determining how much to favor the
-left (negative) or right (positive).  Larger absolute values in either
-direction will push a collision in this direction.")
      (collision-interfaces ,list? "A list of interfaces for which
 automatic beam-collision resolution is run.")
-     (collision-padding ,number? "Amount of padding to apply after
-a collision is detected via the self-alignment-interface.")
      (collision-voice-only ,boolean? "Does automatic beam collsion apply
 only to the voice in which the beam was created?")
      (color ,color? "The color of this grob.")
@@ -314,7 +312,9 @@ include @code{upright}, @code{italic}, @code{caps}.")
 @q{normal}@tie{}size.  @code{0}@tie{}is style-sheet's normal size,
 @w{@code{-1}} is smaller, @code{+1} is bigger.  Each step of@tie{}1 is
 approximately 12% larger; 6@tie{}steps are exactly a factor@tie{}2
-larger.  Fractional values are allowed.")
+larger.  If the context property @code{fontSize} is set, its value is
+added to this before the glyph is printed.  Fractional values are
+allowed.")
      (footnote ,boolean? "Should this be a footnote or in-note?")
      (footnote-music ,ly:music? "Music creating a footnote.")
      (footnote-text ,markup? "A footnote for the grob.")
@@ -530,6 +530,8 @@ bar lines, this is the amount of space after a thick line.")
      (knee-spacing-correction ,number? "Factor for the optical
 correction amount for kneed beams.  Set between @code{0} for no
 correction and @code{1} for full correction.")
+     (knee-to-beam ,boolean? "Determines whether a tuplet number
+will be positioned next to a kneed beam.")
 
 
 ;;;
@@ -799,9 +801,8 @@ ending at that staff-position.")
      (shorten-pair ,number-pair? "The lengths to shorten a
 text-spanner on both sides, for example a pedal bracket.  Positive
 values shorten the text-spanner, while negative values lengthen it.")
-     (shortest-duration-space ,ly:dimension? "Start with this much
-space for the shortest duration.  This is expressed in
-@code{spacing-increment} as unit.  See also
+     (shortest-duration-space ,number? "Start with this multiple of
+@code{spacing-increment} space for the shortest duration.  See also
 @rinternals{spacing-spanner-interface}.")
      (shortest-playing-duration ,ly:moment? "The duration of the
 shortest note playing here.")
@@ -846,8 +847,8 @@ instead of to the beginning of the non-musical column.  If there is a
 clef change followed by a bar line, for example, this means that we
 will try to space the non-musical column as though the clef is not
 there.")
-     (spacing-increment ,number? "Add this much space for a doubled
-duration.  Typically, the width of a note head.  See also
+     (spacing-increment ,ly:dimension? "The unit of length for
+note-spacing.  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.
@@ -983,8 +984,8 @@ possible.")
 ;;; u
 ;;;
      (uniform-stretching ,boolean? "If set, items stretch
-proportionally to their durations.  This looks better in complex
-polyphonic patterns.")
+proportionally to their natural separation based on durations.
+This looks better in complex polyphonic patterns.")
      (used ,boolean? "If set, this spacing column is kept in the
 spacing problem.")
      (usable-duration-logs ,list? "List of @code{duration-log}s that
@@ -1015,7 +1016,8 @@ texts.")
 ;;;
 ;;; x
 ;;;
-     (X-extent ,number-pair? "Hard coded extent in X@tie{}direction.")
+     (X-extent ,number-pair? "Extent (size) in the X@tie{}direction,
+measured in staff-space units, relative to object's reference point.")
      (X-offset ,number? "The horizontal amount that this object is
 moved relative to its X-parent.")
      (X-positions ,number-pair? "Pair of X staff coordinates of a spanner
@@ -1026,7 +1028,8 @@ in the form @code{(@var{left} . @var{right})}, where both @var{left} and
 ;;;
 ;;; y
 ;;;
-     (Y-extent ,number-pair? "Hard coded extent in Y@tie{}direction.")
+     (Y-extent ,number-pair? "Extent (size) in the Y@tie{}direction,
+measured in staff-space units, relative to object's reference point.")
      (Y-offset ,number? "The vertical amount that this object is moved
 relative to its Y-parent.")
 
@@ -1144,8 +1147,6 @@ pure-from-neighbor-interface to determine various grob heights.")
      (note-heads ,ly:grob-array? "An array of note head grobs.")
      (pedal-text ,ly:grob? "A pointer to the text of a mixed-style piano
 pedal.")
-     (potential-X-colliding-grobs ,ly:grob-array? "Grobs that can potentially
-collide with a self-aligned grob on the X-axis.")
      (pure-relevant-grobs ,ly:grob-array? "All the grobs (items and spanners)
 that are relevant for finding the @code{pure-Y-extent}")
      (pure-relevant-items ,ly:grob-array? "A subset of elements that are
@@ -1192,10 +1193,6 @@ results, use @code{LEFT} and @code{RIGHT}.")
      (vertical-skyline-elements ,ly:grob-array? "An array of grobs
 used to create vertical skylines.")
 
-     (X-colliding-grobs ,ly:grob-array? "Grobs that can collide
-with a self-aligned grob on the X-axis.")
-     (Y-colliding-grobs ,ly:grob-array? "Grobs that can collide
-with a self-aligned grob on the Y-axis.")
      (X-common ,ly:grob? "Common reference point for axis group.")
      (Y-common ,ly:grob? "See @code{X-common}.")
 
index a4e0d52a760b45a237b12438cae84932586fbd1f..62473075ded4b03a25a147420bd720e27fd34a0a 100644 (file)
@@ -1,6 +1,6 @@
 ;;;; This file is part of LilyPond, the GNU music typesetter.
 ;;;;
-;;;; Copyright (C) 1998--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+;;;; Copyright (C) 1998--2014 Han-Wen Nienhuys <hanwen@xs4all.nl>
 ;;;;                 Jan Nieuwenhuizen <janneke@gnu.org>
 ;;;;
 ;;;; LilyPond is free software: you can redistribute it and/or modify
@@ -97,6 +97,7 @@
                  (interfaces . (accidental-interface
                                 accidental-suggestion-interface
                                 font-interface
+                                outside-staff-interface
                                 script-interface
                                 self-alignment-interface
                                 side-position-interface))))))
 
     (Arpeggio
      . (
-       (cross-staff . ,ly:arpeggio::calc-cross-staff)
+        (cross-staff . ,ly:arpeggio::calc-cross-staff)
         (direction . ,LEFT)
         (padding . 0.5)
         (positions . ,ly:arpeggio::calc-positions)
               ((class . Item)
                (interfaces . (break-alignable-interface
                               font-interface
+                              outside-staff-interface
                               self-alignment-interface
                               side-position-interface
                               text-interface))))))
                  (object-callbacks . ((pure-Y-common . ,ly:axis-group-interface::calc-pure-y-common)
                                       (pure-relevant-grobs . ,ly:axis-group-interface::calc-pure-relevant-grobs)))
                  (interfaces . (axis-group-interface
+                                outside-staff-interface
                                 side-position-interface))))))
 
     (BassFigureBracket
         (meta . ((class . Spanner)
                  (object-callbacks . ((pure-Y-common . ,ly:axis-group-interface::calc-pure-y-common)
                                       (pure-relevant-grobs . ,ly:axis-group-interface::calc-pure-relevant-grobs)))
-                 (interfaces . (axis-group-interface))))))
+                 (interfaces . (axis-group-interface
+                                outside-staff-axis-group-interface))))))
 
 
     (Beam
                  (interfaces . (break-aligned-interface
                                 breathing-sign-interface
                                 font-interface
+                                outside-staff-interface
                                 text-interface))))))
 
     (ChordName
         (meta . ((class . Item)
                  (interfaces . (chord-name-interface
                                 font-interface
+                                outside-staff-interface
                                 rhythmic-grob-interface
                                 text-interface))))))
 
         (meta . ((class . Item)
                  (interfaces . (clef-modifier-interface
                                 font-interface
+                                outside-staff-interface
                                 self-alignment-interface
                                 side-position-interface
                                 text-interface))))))
         (Y-extent . ,grob::always-Y-extent-from-stencil)
         (meta . ((class . Item)
                  (interfaces . (font-interface
+                                outside-staff-interface
                                 side-position-interface
                                 text-interface
                                 text-script-interface))))))
     (DotColumn
      . (
         (axes . (,X))
+        (chord-dots-limit . 3)
         (direction . ,RIGHT)
         (positioning-done . ,ly:dot-column::calc-positioning-done)
         (X-extent . ,ly:axis-group-interface::width)
         (Y-extent . ,grob::always-Y-extent-from-stencil)
         (meta . ((class . Item)
                  (interfaces . (font-interface
+                                outside-staff-interface
                                 percent-repeat-interface
                                 percent-repeat-item-interface
                                 self-alignment-interface
         (thickness . 0.48)
         (meta . ((class . Item)
                  (interfaces . (font-interface
+                                outside-staff-interface
                                 percent-repeat-interface
                                 percent-repeat-item-interface
                                 rhythmic-grob-interface))))))
                  (interfaces . (axis-group-interface
                                 dynamic-interface
                                 dynamic-line-spanner-interface
+                                outside-staff-interface
                                 side-position-interface))))))
 
     (DynamicText
 
         ;; todo.
 
-        (collision-bias . -2.0)
-        (collision-padding . 0.5)
         (direction . ,ly:script-interface::calc-direction)
         (extra-spacing-width . (+inf.0 . -inf.0))
         (font-encoding . fetaText)
                  (interfaces . (dynamic-interface
                                 dynamic-text-interface
                                 font-interface
+                                outside-staff-interface
                                 script-interface
                                 self-alignment-interface
                                 text-interface))))))
                                 font-interface
                                 line-interface
                                 line-spanner-interface
+                                ;for now, LilyPond never will typeset
+                                ;these without a DynamicLineSpanner
+                                ;as their controlling element
+                                ;so, they do not need the
+                                ;outside-staff-interface
                                 spanner-interface
                                 text-interface))))))
 
         (meta . ((class . Item)
                  (interfaces . (finger-interface
                                 font-interface
+                                outside-staff-interface
                                 self-alignment-interface
                                 side-position-interface
                                 text-interface
                  (interfaces . (chord-name-interface
                                 font-interface
                                 fret-diagram-interface
+                                outside-staff-interface
                                 rhythmic-grob-interface))))))
 
 
                  (interfaces . (dynamic-interface
                                 hairpin-interface
                                 line-interface
+                                outside-staff-interface
                                 self-alignment-interface
                                 spanner-interface))))))
 
         (meta . ((class . Spanner)
                  (interfaces . (horizontal-bracket-interface
                                 line-interface
+                                outside-staff-interface
                                 side-position-interface
                                 spanner-interface))))))
 
         (Y-offset . ,side-position-interface::y-aligned-side)
         (meta . ((class . Item)
                  (interfaces . (font-interface
+                                outside-staff-interface
                                 self-alignment-interface
                                 side-position-interface
                                 text-interface))))))
      . (
         (break-align-anchor . ,ly:break-aligned-interface::calc-extent-aligned-anchor)
         (break-align-symbol . left-edge)
-        (break-visibility . ,center-invisible)
+        (break-visibility . ,begin-of-line-visible)
         (non-musical . #t)
-        (extra-spacing-height . (+inf.0 . -inf.0))
         (space-alist . (
                         (ambitus . (extra-space . 2.0))
                         (breathing-sign . (minimum-space . 0.0))
                         (right-edge . (extra-space . 0.0))
                         ))
         (X-extent . (0 . 0))
+        (Y-extent . (0 . 0))
         (meta . ((class . Item)
                  (interfaces . (break-aligned-interface))))))
 
         (meta . ((class . Spanner)
                  (interfaces . (font-interface
                                 measure-counter-interface
+                                outside-staff-interface
                                 self-alignment-interface
                                 side-position-interface
                                 text-interface))))))
         (Y-offset . ,side-position-interface::y-aligned-side)
         (meta . ((class . Spanner)
                  (interfaces . (measure-grouping-interface
+                                outside-staff-interface
                                 side-position-interface))))))
 
     (MelodyItem
                  (interfaces . (break-alignable-interface
                                 font-interface
                                 metronome-mark-interface
+                                outside-staff-interface
                                 self-alignment-interface
                                 side-position-interface
                                 text-interface))))))
         (meta . ((class . Spanner)
                  (interfaces . (font-interface
                                 multi-measure-interface
+                                outside-staff-interface
                                 multi-measure-rest-interface
                                 rest-interface
                                 staff-symbol-referencer-interface))))))
         (meta . ((class . Spanner)
                  (interfaces . (font-interface
                                 multi-measure-interface
+                                outside-staff-interface
                                 self-alignment-interface
                                 side-position-interface
                                 text-interface))))))
         (meta . ((class . Spanner)
                  (interfaces . (font-interface
                                 multi-measure-interface
+                                outside-staff-interface
                                 self-alignment-interface
                                 side-position-interface
                                 text-interface))))))
                  (interfaces . (font-interface
                                 horizontal-bracket-interface
                                 line-interface
+                                outside-staff-interface
                                 ottava-bracket-interface
                                 side-position-interface
                                 text-interface))))))
         (meta . ((class . Spanner)
                  (interfaces . (font-interface
                                 percent-repeat-interface
+                                outside-staff-interface
                                 self-alignment-interface
                                 side-position-interface
                                 text-interface))))))
         (vertical-skylines . ,(ly:make-unpure-pure-container ly:slur::vertical-skylines ly:grob::pure-simple-vertical-skylines-from-extents))
         (Y-extent . ,slur::height)
         (meta . ((class . Spanner)
-                 (interfaces . (slur-interface))))))
+                 (interfaces . (outside-staff-interface
+                                slur-interface))))))
 
     ;; an example of a text spanner
     (PianoPedalBracket
                  (interfaces . (break-alignable-interface
                                 font-interface
                                 mark-interface
+                                outside-staff-interface
                                 self-alignment-interface
                                 side-position-interface
                                 text-interface))))))
         (cross-staff . ,ly:script-interface::calc-cross-staff)
         (direction . ,ly:script-interface::calc-direction)
         (font-encoding . fetaMusic)
+        (horizon-padding . 0.1) ; to avoid interleaving with accidentals
         (positioning-done . ,ly:script-interface::calc-positioning-done)
         (side-axis . ,Y)
 
         (Y-offset . ,side-position-interface::y-aligned-side)
         (meta . ((class . Item)
                  (interfaces . (font-interface
+                                outside-staff-interface
                                 script-interface
                                 side-position-interface))))))
 
         (vertical-skylines . ,(ly:make-unpure-pure-container ly:slur::vertical-skylines ly:grob::pure-simple-vertical-skylines-from-extents))
         (Y-extent . ,slur::height)
         (meta . ((class . Spanner)
-                 (interfaces . (slur-interface))))))
+                 (interfaces . (outside-staff-interface
+                                slur-interface))))))
 
     (SostenutoPedal
      . (
                  (object-callbacks . ((pure-Y-common . ,ly:axis-group-interface::calc-pure-y-common)
                                       (pure-relevant-grobs . ,ly:axis-group-interface::calc-pure-relevant-grobs)))
                  (interfaces . (axis-group-interface
+                                outside-staff-interface
                                 piano-pedal-interface
                                 side-position-interface))))))
 
         (meta . ((class . Item)
                  (interfaces . (font-interface
                                 self-alignment-interface
+                                outside-staff-interface
                                 side-position-interface
                                 string-number-interface
                                 text-interface
         (Y-extent . ,grob::always-Y-extent-from-stencil)
         (meta . ((class . Item)
                  (interfaces . (font-interface
+                                outside-staff-interface
                                 self-alignment-interface
                                 side-position-interface
                                 stroke-finger-interface
                  (object-callbacks . ((pure-Y-common . ,ly:axis-group-interface::calc-pure-y-common)
                                       (pure-relevant-grobs . ,ly:axis-group-interface::calc-pure-relevant-grobs)))
                  (interfaces . (axis-group-interface
+                                outside-staff-interface
                                 piano-pedal-interface
                                 side-position-interface))))))
 
                                       (vertical-skyline-elements . ,ly:system::vertical-skyline-elements)
                                       (vertical-alignment . ,ly:system::get-vertical-alignment)))
                  (interfaces . (axis-group-interface
-                                system-interface))))))
+                                system-interface
+                                outside-staff-axis-group-interface))))))
 
     (SystemStartBar
      . (
         (meta . ((class . Item)
                  (interfaces . (font-interface
                                 instrument-specific-markup-interface
+                                outside-staff-interface
                                 self-alignment-interface
                                 side-position-interface
                                 text-interface
                  (interfaces . (font-interface
                                 line-interface
                                 line-spanner-interface
+                                outside-staff-interface
                                 side-position-interface))))))
 
     (Tie
         (axes . (,X))
         (direction . ,RIGHT)
         (font-size . -4)
+        ;; minimum shift to the right, in case the parent note has no stem
+        (minimum-space . 2.5)
+        (horizon-padding . 0.1) ; to avoid interleaving with augmentation dots
         (padding . 0.3)
         (side-axis . ,X)
         (stencil . ,parenthesize-elements)
         (stencils . ,parentheses-item::calc-parenthesis-stencils)
-        ;; offset a bit to the right, further if needed to clear the main note
-        (X-offset . ,(lambda (grob)
-                       (ly:side-position-interface::x-aligned-side grob 2.5)))
+        (X-offset . ,ly:side-position-interface::x-aligned-side)
         (Y-extent . ,grob::always-Y-extent-from-stencil)
         (meta . ((class . Item)
                  (interfaces . (axis-group-interface
                  (interfaces . (font-interface
                                 line-interface
                                 line-spanner-interface
+                                outside-staff-interface
                                 side-position-interface
                                 trill-spanner-interface))))))
 
 
         (meta . ((class . Spanner)
                  (interfaces . (line-interface
+                                outside-staff-interface
                                 tuplet-bracket-interface))))))
 
     (TupletNumber
         (direction . ,tuplet-number::calc-direction)
         (font-shape . italic)
         (font-size . -2)
+        (knee-to-beam . #t)
         (stencil . ,ly:tuplet-number::print)
         (text . ,tuplet-number::calc-denominator-text)
         (X-offset . ,ly:tuplet-number::calc-x-offset)
         (Y-offset . ,ly:tuplet-number::calc-y-offset)
         (meta . ((class . Spanner)
                  (interfaces . (font-interface
+                                outside-staff-interface
                                 text-interface
                                 tuplet-number-interface))))))
 
                  (object-callbacks . ((pure-Y-common . ,ly:axis-group-interface::calc-pure-y-common)
                                       (pure-relevant-grobs . ,ly:axis-group-interface::calc-pure-relevant-grobs)))
                  (interfaces . (axis-group-interface
+                                outside-staff-interface
                                 piano-pedal-interface
                                 side-position-interface))))))
 
                                       (pure-relevant-grobs . ,ly:axis-group-interface::calc-pure-relevant-grobs)))
 
                  (interfaces . (axis-group-interface
-                                hara-kiri-group-spanner-interface))))))
+                                hara-kiri-group-spanner-interface
+                                outside-staff-axis-group-interface))))))
 
     (VoiceFollower
      . (
 
     (VoltaBracket
      . (
+        (baseline-skip . 1.7)
         (direction . ,UP)
         (edge-height . (2.0 . 2.0)) ;; staff-space;
         (font-encoding . fetaText)
                  (object-callbacks . ((pure-Y-common . ,ly:axis-group-interface::calc-pure-y-common)
                                       (pure-relevant-grobs . ,ly:axis-group-interface::calc-pure-relevant-grobs)))
                  (interfaces . (axis-group-interface
+                                outside-staff-interface
                                 side-position-interface
                                 volta-interface))))))
 
index cc654da0590ebffcfb34ba4cf656c72c262dcbb0..3fc1e573bfb3baea5838f387b15720ecd43cfba8 100644 (file)
@@ -1,6 +1,6 @@
 ;;;; This file is part of LilyPond, the GNU music typesetter.
 ;;;;
-;;;; Copyright (C) 2000--2012  Han-Wen Nienhuys <hanwen@xs4all.nl>
+;;;; Copyright (C) 2000--2014  Han-Wen Nienhuys <hanwen@xs4all.nl>
 ;;;;                  Jan Nieuwenhuizen <janneke@gnu.org>
 ;;;;
 ;;;; LilyPond is free software: you can redistribute it and/or modify
@@ -1018,13 +1018,9 @@ samplePath =
 
 (define-markup-list-command (score-lines layout props score)
   (ly:score?)
-  "
-This is the same as the @code{\\score} markup but delivers its
-systems as a list of lines.  This is not usually called directly by
-the user.  Instead, it is called when the parser encounters
-@code{\\score} in a context where only markup lists are allowed.  When
-used as the argument of a toplevel @code{\\markuplist}, the result can
-be split across pages."
+  "This is the same as the @code{\\score} markup but delivers its
+systems as a list of lines.  Its @var{score} argument is entered in
+braces like it would be for @code{\\score}."
   (let ((output (ly:score-embedded-format score layout)))
 
     (if (ly:music-output? output)
@@ -1190,38 +1186,120 @@ Like simple-markup, but use tie characters for @q{~} tilde symbols.
   (make-simple-markup ""))
 
 ;; helper for justifying lines.
-(define (get-fill-space word-count line-width word-space text-widths)
-  "Calculate the necessary paddings between each two adjacent texts.
-  The lengths of all texts are stored in @var{text-widths}.
-  The normal formula for the padding between texts a and b is:
-  padding = line-width/(word-count - 1) - (length(a) + length(b))/2
-  The first and last padding have to be calculated specially using the
-  whole length of the first or last text.
-  All paddings are checked to be at least word-space, to ensure that
-  no texts collide.
-  Return a list of paddings."
+(define (get-fill-space
+          word-count line-width word-space text-widths constant-space?)
+  "Calculate the necessary paddings between adjacent texts in a
+single justified line.  The lengths of all texts are stored in
+@var{text-widths}.
+When @var{constant-space?} is @code{#t}, the formula for the padding
+between texts is:
+padding = (line-width - total-text-width)/(word-count - 1)
+When @var{constant-space?} is @code{#f}, the formula for the
+padding between interior texts a and b is:
+padding = line-width/(word-count - 1) - (length(a) + length(b))/2
+In this case, the first and last padding have to be calculated
+specially using the whole length of the first or last text.
+All paddings are checked to be at least word-space, to ensure that
+no texts collide.
+Return a list of paddings."
   (cond
-   ((null? text-widths) '())
-
-   ;; special case first padding
-   ((= (length text-widths) word-count)
-    (cons
-     (- (- (/ line-width (1- word-count)) (car text-widths))
-        (/ (car (cdr text-widths)) 2))
-     (get-fill-space word-count line-width word-space (cdr text-widths))))
-   ;; special case last padding
-   ((= (length text-widths) 2)
-    (list (- (/ line-width (1- word-count))
-             (+ (/ (car text-widths) 2) (car (cdr text-widths)))) 0))
-   (else
-    (let ((default-padding
-            (- (/ line-width (1- word-count))
-               (/ (+ (car text-widths) (car (cdr text-widths))) 2))))
-      (cons
-       (if (> word-space default-padding)
-           word-space
-           default-padding)
-       (get-fill-space word-count line-width word-space (cdr text-widths)))))))
+    ((null? text-widths) '())
+    (constant-space?
+     (make-list
+       (1- word-count)
+       ;; Ensure that space between words cannot be
+       ;; less than word-space.
+       (max
+         word-space
+         (/ (- line-width (apply + text-widths))
+            (1- word-count)))))
+
+    ;; special case first padding
+    ((= (length text-widths) word-count)
+     (cons
+       (- (- (/ line-width (1- word-count)) (car text-widths))
+          (/ (cadr text-widths) 2))
+       (get-fill-space
+         word-count line-width word-space (cdr text-widths)
+                                          constant-space?)))
+    ;; special case last padding
+    ((= (length text-widths) 2)
+     (list (- (/ line-width (1- word-count))
+              (+ (/ (car text-widths) 2) (cadr text-widths)))
+           0))
+    (else
+      (let ((default-padding
+              (- (/ line-width (1- word-count))
+                 (/ (+ (car text-widths) (cadr text-widths)) 2))))
+        (cons
+          (if (> word-space default-padding)
+              word-space
+              default-padding)
+          (get-fill-space
+            word-count line-width word-space (cdr text-widths)
+                                             constant-space?))))))
+
+(define (justify-line-helper
+          layout props args text-direction word-space line-width constant-space?)
+  "Return a stencil which spreads @var{args} along a line of width
+@var{line-width}.  If @var{constant-space?} is set to @code{#t}, the
+space between words is constant.  If @code{#f}, the distance between
+words varies according to their relative lengths."
+  (let* ((orig-stencils (interpret-markup-list layout props args))
+         (stencils
+           (map (lambda (stc)
+                  (if (ly:stencil-empty? stc)
+                      point-stencil
+                      stc))
+                orig-stencils))
+         (text-widths
+           (map (lambda (stc)
+                  (if (ly:stencil-empty? stc)
+                      0.0
+                      (interval-length (ly:stencil-extent stc X))))
+                stencils))
+         (text-width (apply + text-widths))
+         (word-count (length stencils))
+         (line-width (or line-width (ly:output-def-lookup layout 'line-width)))
+         (fill-space
+           (cond
+             ((= word-count 1)
+              (list
+                (/ (- line-width text-width) 2)
+                (/ (- line-width text-width) 2)))
+             ((= word-count 2)
+              (list
+                (- line-width text-width)))
+             (else
+               (get-fill-space
+                 word-count line-width word-space text-widths
+                                                  constant-space?))))
+         (line-contents (if (= word-count 1)
+                            (list
+                              point-stencil
+                              (car stencils)
+                              point-stencil)
+                            stencils)))
+
+    (if (null? (remove ly:stencil-empty? orig-stencils))
+        empty-stencil
+        (begin
+          (if (= text-direction LEFT)
+              (set! line-contents (reverse line-contents)))
+          (set! line-contents
+                (stack-stencils-padding-list
+                  X RIGHT fill-space line-contents))
+          (if (> word-count 1)
+              ;; shift s.t. stencils align on the left edge, even if
+              ;; first stencil had negative X-extent (e.g. center-column)
+              ;; (if word-count = 1, X-extents are already normalized in
+              ;; the definition of line-contents)
+              (set! line-contents
+                    (ly:stencil-translate-axis
+                      line-contents
+                      (- (car (ly:stencil-extent (car stencils) X)))
+                      X)))
+          line-contents))))
 
 (define-markup-command (fill-line layout props args)
   (markup-list?)
@@ -1250,59 +1328,28 @@ If there are no arguments, return an empty stencil.
   }
 }
 @end lilypond"
-  (let* ((orig-stencils (interpret-markup-list layout props args))
-         (stencils
-          (map (lambda (stc)
-                 (if (ly:stencil-empty? stc)
-                     point-stencil
-                     stc)) orig-stencils))
-         (text-widths
-          (map (lambda (stc)
-                 (if (ly:stencil-empty? stc)
-                     0.0
-                     (interval-length (ly:stencil-extent stc X))))
-               stencils))
-         (text-width (apply + text-widths))
-         (word-count (length stencils))
-         (line-width (or line-width (ly:output-def-lookup layout 'line-width)))
-         (fill-space
-          (cond
-           ((= word-count 1)
-            (list
-             (/ (- line-width text-width) 2)
-             (/ (- line-width text-width) 2)))
-           ((= word-count 2)
-            (list
-             (- line-width text-width)))
-           (else
-            (get-fill-space word-count line-width word-space text-widths))))
+  (justify-line-helper
+    layout props args text-direction word-space line-width #f))
 
-         (line-contents (if (= word-count 1)
-                            (list
-                             point-stencil
-                             (car stencils)
-                             point-stencil)
-                            stencils)))
+(define-markup-command (justify-line layout props args)
+  (markup-list?)
+  #:category align
+  #:properties ((text-direction RIGHT)
+                (word-space 0.6)
+                (line-width #f))
+  "Put @var{markups} in a horizontal line of width @var{line-width}.
+The markups are spread to fill the entire line and separated by equal
+space.  If there are no arguments, return an empty stencil.
 
-    (if (null? (remove ly:stencil-empty? orig-stencils))
-        empty-stencil
-        (begin
-          (if (= text-direction LEFT)
-              (set! line-contents (reverse line-contents)))
-          (set! line-contents
-                (stack-stencils-padding-list
-                 X RIGHT fill-space line-contents))
-          (if (> word-count 1)
-              ;; shift s.t. stencils align on the left edge, even if
-              ;; first stencil had negative X-extent (e.g. center-column)
-              ;; (if word-count = 1, X-extents are already normalized in
-              ;; the definition of line-contents)
-              (set! line-contents
-                    (ly:stencil-translate-axis
-                     line-contents
-                     (- (car (ly:stencil-extent (car stencils) X)))
-                     X)))
-          line-contents))))
+@lilypond[verbatim,quote]
+\\markup {
+  \\justify-line {
+    Space between neighboring words is constant
+  }
+}
+@end lilypond"
+  (justify-line-helper
+    layout props args text-direction word-space line-width #t))
 
 (define-markup-command (line layout props args)
   (markup-list?)
@@ -3962,7 +4009,7 @@ Make a fraction of two markups.
 (define-markup-command (normal-size-super layout props arg)
   (markup?)
   #:category font
-  #:properties ((baseline-skip))
+  #:properties ((font-size 0))
   "
 @cindex setting superscript in standard font size
 
@@ -3978,13 +4025,12 @@ Set @var{arg} in superscript with a normal font size.
 @end lilypond"
   (ly:stencil-translate-axis
    (interpret-markup layout props arg)
-   (* 0.5 baseline-skip) Y))
+   (* 1.0 (magstep font-size)) Y))
 
 (define-markup-command (super layout props arg)
   (markup?)
   #:category font
-  #:properties ((font-size 0)
-                (baseline-skip))
+  #:properties ((font-size 0))
   "
 @cindex superscript text
 
@@ -4005,7 +4051,7 @@ Set @var{arg} in superscript.
     layout
     (cons `((font-size . ,(- font-size 3))) props)
     arg)
-   (* 0.5 baseline-skip)
+   (* 1.0 (magstep font-size)) ; original font-size
    Y))
 
 (define-markup-command (translate layout props offset arg)
@@ -4030,8 +4076,7 @@ is a pair of numbers representing the displacement in the X and Y axis.
 (define-markup-command (sub layout props arg)
   (markup?)
   #:category font
-  #:properties ((font-size 0)
-                (baseline-skip))
+  #:properties ((font-size 0))
   "
 @cindex subscript text
 
@@ -4053,13 +4098,13 @@ Set @var{arg} in subscript.
     layout
     (cons `((font-size . ,(- font-size 3))) props)
     arg)
-   (* -0.5 baseline-skip)
+   (* -0.75 (magstep font-size)) ; original font-size
    Y))
 
 (define-markup-command (normal-size-sub layout props arg)
   (markup?)
   #:category font
-  #:properties ((baseline-skip))
+  #:properties ((font-size 0))
   "
 @cindex setting subscript in standard font size
 
@@ -4075,7 +4120,7 @@ Set @var{arg} in subscript with a normal font size.
 @end lilypond"
   (ly:stencil-translate-axis
    (interpret-markup layout props arg)
-   (* -0.5 baseline-skip)
+   (* -0.75 (magstep font-size))
    Y))
 
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
index 42aaf58ace30842dc9029a51c40cf3b21911f8b9..e9fe53eb1b0a253e85d1af3b1d05d20ce767fae0 100644 (file)
@@ -1,6 +1,6 @@
 ;;;; This file is part of LilyPond, the GNU music typesetter.
 ;;;;
-;;;; Copyright (C) 1998--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+;;;; Copyright (C) 1998--2014 Han-Wen Nienhuys <hanwen@xs4all.nl>
 ;;;;                 Jan Nieuwenhuizen <janneke@gnu.org>
 ;;;;                 Neil Puttock <n.puttock@gmail.com>
 ;;;;                 Carl Sorensen <c_sorensen@byu.edu>
@@ -102,7 +102,19 @@ to be used by the sequential-iterator"
                            structure))
                       (beaming-exception
                        (beam-exceptions fraction time-signature-settings))
-                      (new-measure-length (ly:make-moment num den)))
+                      (new-measure-length (ly:make-moment num den))
+                      (pos (ly:context-property context 'measurePosition)))
+                 ;;\time is OK at a negative measurePosition (after \partial),
+                 ;;but at a positive position it's probably a mistake, so warn
+                 ;;(like a barcheck) and reset it to 0 to prevent errors.
+                 (if (> (ly:moment-main pos) 0)
+                     (begin
+                       (if (not (ly:context-property context 'ignoreBarChecks #f))
+                           (ly:music-warning music
+                                             (_ "\\time in mid-measure at ~A")
+                                             (ly:moment-main pos)))
+                       (ly:context-set-property!
+                        context 'measurePosition (ly:make-moment 0))))
                  (ly:context-set-property!
                   context 'timeSignatureFraction fraction)
                  (ly:context-set-property!
index fd759d52d154cae4c76e326fe09f7ea3303bcc77..c4ed5344780bea8aedeed5aef4176bdee95e51b2 100644 (file)
@@ -1,7 +1,7 @@
 ;;; define-music-display-methods.scm -- data for displaying music
 ;;; expressions using LilyPond notation.
 ;;;
-;;; Copyright (C) 2005--2012 Nicolas Sceaux  <nicolas.sceaux@free.fr>
+;;; Copyright (C) 2005--2014 Nicolas Sceaux  <nicolas.sceaux@free.fr>
 ;;;
 
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
@@ -167,10 +167,8 @@ expression."
 
 
 (define-display-method TremoloEvent (event parser)
-  (let ((tremolo-type (ly:music-property event 'tremolo-type)))
-    (format #f ":~a" (if (= 0 tremolo-type)
-                         ""
-                         tremolo-type))))
+  (let ((tremolo-type (ly:music-property event 'tremolo-type 8)))
+    (format #f ":~a" tremolo-type)))
 
 (define-display-method ArticulationEvent (event parser) #t
   (let* ((articulation  (ly:music-property event 'articulation-type))
@@ -526,8 +524,17 @@ Otherwise, return #f."
                  (map-in-order (lambda (event)
                                  (music->lily-string event parser))
                                (ly:music-property note 'articulations))))
-        (else ;; unknown?
-         "")))
+        (else
+         ;; pure duration
+         ;; FIXME: { c4 c4 4 4 } must not be output as { c4 c 4 4 }
+         ;; quite tricky to do.  Do it when outputting sequences?
+         (format #f "~a~{~a~}"
+                 (duration->lily-string (ly:music-property note 'duration)
+                                        #:force-duration #t
+                                        #:remember #t)
+                 (map-in-order (lambda (event)
+                                 (music->lily-string event parser))
+                               (ly:music-property note 'articulations))))))
 
 (define-display-method ClusterNoteEvent (note parser)
   (simple-note->lily-string note parser))
@@ -715,29 +722,7 @@ Otherwise, return #f."
   (repeat->lily-string expr "percent" parser))
 
 (define-display-method TremoloRepeatedMusic (expr parser)
-  (let* ((main (ly:music-property expr 'element))
-         (children (if (music-is-of-type? main 'sequential-music)
-                       ;; \repeat tremolo n { ... }
-                       (length (extract-named-music main '(EventChord
-                                                           NoteEvent)))
-                       ;; \repeat tremolo n c4
-                       1))
-         (times (ly:music-property expr 'repeat-count))
-
-         ;; # 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)))))
-    (set! main (ly:music-deep-copy main))
-    ;; Adjust the time of the notes
-    (ly:music-compress main (ly:make-moment children 1))
-    ;; Adjust the displayed note durations
-    (shift-duration-log main (- shift) (- dots))
-    (format #f "\\repeat tremolo ~a ~a"
-            times
-            (music->lily-string main parser))))
+  (repeat->lily-string expr "tremolo" parser))
 
 ;;;
 ;;; Contexts
@@ -808,13 +793,19 @@ Otherwise, return #f."
                       (music->lily-string element parser))
         #f)))
 
-(define (property-value->lily-string arg parser)
+(define-public (value->lily-string arg parser)
   (cond ((ly:music? arg)
          (music->lily-string arg parser))
         ((string? arg)
          (format #f "#~s" arg))
         ((markup? arg)
          (markup->lily-string arg))
+        ((ly:duration? arg)
+         (format #f "##{ ~a #}" (duration->lily-string arg #:force-duration #t)))
+        ((ly:pitch? arg)
+         (format #f "~a~a"
+                 (note-name->lily-string arg parser)
+                 (octave->lily-string arg)))
         (else
          (format #f "#~a" (scheme-expr->lily-string arg)))))
 
@@ -830,7 +821,7 @@ Otherwise, return #f."
                 ""
                 (format #f "~a . " (*current-context*)))
             property
-            (property-value->lily-string value parser)
+            (value->lily-string value parser)
             (new-line->lily-string))))
 
 (define-display-method PropertyUnset (expr parser)
@@ -858,7 +849,7 @@ Otherwise, return #f."
             (if (eqv? (*current-context*) 'Bottom)
                 (cons symbol properties)
                 (cons* (*current-context*) symbol properties))
-            (property-value->lily-string value parser)
+            (value->lily-string value parser)
             (new-line->lily-string))))
 
 (define-display-method RevertProperty (expr parser)
index 5c9c12538e03b761798e17122d5ac807ac84ce4b..42525bb8b290165191918a0b638aa5699d291174 100644 (file)
@@ -1,6 +1,6 @@
 ;;;; This file is part of LilyPond, the GNU music typesetter.
 ;;;;
-;;;; Copyright (C) 1998--2012  Han-Wen Nienhuys <hanwen@xs4all.nl>
+;;;; Copyright (C) 1998--2014  Han-Wen Nienhuys <hanwen@xs4all.nl>
 ;;;;                 Jan Nieuwenhuizen <janneke@gnu.org>
 ;;;;
 ;;;; LilyPond is free software: you can redistribute it and/or modify
@@ -119,6 +119,12 @@ This property can only be defined as initializer in
 whether to allow, forbid or force a line break.")
 
      (metronome-count ,number-or-pair? "How many beats in a minute?")
+     (midi-extra-velocity ,integer? "How much louder or softer should
+this note be in MIDI output? The default is 0.")
+     (midi-length ,procedure? "Function to determine how long to play
+a note in MIDI. It should take a moment (the written length of the
+note) and a context, and return a moment (the length to play the
+note).")
      (moment ,ly:moment? "The moment at which an event happens.")
      (music-cause ,ly:music? "The music object that is the cause of
 an event.")
index 184b4e54850ad3eb911120d05a40fc71c60ffd5a..8d0464bf4c9009f2c86955ea5f9a7d4520ca3582 100644 (file)
@@ -1,6 +1,6 @@
 ;;;; This file is part of LilyPond, the GNU music typesetter.
 ;;;;
-;;;; Copyright (C) 1998--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+;;;; Copyright (C) 1998--2014 Han-Wen Nienhuys <hanwen@xs4all.nl>
 ;;;;                 Jan Nieuwenhuizen <janneke@gnu.org>
 ;;;;
 ;;;; LilyPond is free software: you can redistribute it and/or modify
@@ -685,8 +685,7 @@ Syntax: @code{\\times @var{fraction} @var{music}}, e.g.,
      . ((description . "Repeated notes denoted by tremolo beams.")
         (iterator-ctor . ,ly:chord-tremolo-iterator::constructor)
         (start-callback .  ,ly:repeated-music::first-start)
-        ;; the length of the repeat is handled by shifting the note logs
-        (length-callback . ,ly:repeated-music::folded-music-length)
+        (length-callback . ,ly:repeated-music::unfolded-music-length)
         (types . (general-music repeated-music tremolo-repeated-music))
         ))
 
@@ -815,16 +814,3 @@ override earlier ones."
                      (ly:error (_ "bad make-music argument: ~S") e))))))
       (set-props music-properties)
       m)))
-
-(define-public (make-repeated-music name)
-  (let* ((repeated-music (assoc-get name '(("volta" . VoltaRepeatedMusic)
-                                           ("unfold" . UnfoldedRepeatedMusic)
-                                           ("percent" . PercentRepeatedMusic)
-                                           ("tremolo" . TremoloRepeatedMusic))))
-         (repeated-music-name (if repeated-music
-                                  repeated-music
-                                  (begin
-                                    (ly:warning (_ "unknown repeat type `~S'") name)
-                                    (ly:warning (_ "See define-music-types.scm for supported repeats"))
-                                    'VoltaRepeatedMusic))))
-    (make-music repeated-music-name)))
index 62ef21a72c2b4b9e183bdb6ac67214acae3dd138..52a9d969fa709ffd067ec2a45b1f1eb9f0bea4e1 100644 (file)
@@ -1,22 +1,22 @@
 ;;;; Common note names in various languages.
 ;;;; This file is part of LilyPond, the GNU music typesetter.
 ;;;;
-;;;; Copyright (C) 2010--2012 Valentin Villenave <valentin@villenave.net> et al:
+;;;; Copyright (C) 2010--2014 Valentin Villenave <valentin@villenave.net> et al:
 ;;;;
-;;;; Copyright (C) 1996--2012 Han-Wen Nienhuys <hanwen@xs4all.nl> (Nederlands)
-;;;; Copyright (C) 1998--2012 Jaume Obrador <jobrador@ipc4.uib.es> (Catalan)
-;;;; Copyright (C) 1997--2012 Roland Meier <meier@informatik.th-darmstadt.de>
+;;;; Copyright (C) 1996--2014 Han-Wen Nienhuys <hanwen@xs4all.nl> (Nederlands)
+;;;; Copyright (C) 1998--2014 Jaume Obrador <jobrador@ipc4.uib.es> (Catalan)
+;;;; Copyright (C) 1997--2014 Roland Meier <meier@informatik.th-darmstadt.de>
 ;;;;                Bjoern Jacke <bjoern.jacke@gmx.de> (Deutsch)
-;;;; Copyright (C) 1996--2012 Han-Wen Nienhuys <hanwen@xs4all.nl> (English)
-;;;; Copyright (C) 2002--2012 Carlos García Suárez <cgscqmp@terra.es>
+;;;; Copyright (C) 1996--2014 Han-Wen Nienhuys <hanwen@xs4all.nl> (English)
+;;;; Copyright (C) 2002--2014 Carlos García Suárez <cgscqmp@terra.es>
 ;;;;                Maximiliano G. G. <mxgdvg@yahoo.it> (Espanol)
-;;;; Copyright (C) 1998--2012 Paolo Zuliani <zuliap@easynet.it>
+;;;; Copyright (C) 1998--2014 Paolo Zuliani <zuliap@easynet.it>
 ;;;;                Eric Wurbel <wurbel@univ-tln.fr> (Italiano)
-;;;; Copyright (C) 1998--2012 Arvid Grøtting <arvidg@ifi.uio.no> (Norsk)
-;;;; Copyright (C) 2004--2012 Pedro Kröger <kroeger@pedrokroeger.net> (Portugues)
-;;;; Copyright (C) 2001--2012 Heikki Junes <heikki.junes@hut.fi> (Suomi)
-;;;; Copyright (C) 1997--2012 Mats Bengtsson <mabe@violin.s3.kth.se> (Svenska)
-;;;; Copyright (C) 2004--2012 Hendrik Maryns <hendrik.maryns@ugent.be> (Vlaams)
+;;;; Copyright (C) 1998--2014 Arvid Grøtting <arvidg@ifi.uio.no> (Norsk)
+;;;; Copyright (C) 2004--2014 Pedro Kröger <kroeger@pedrokroeger.net> (Portugues)
+;;;; Copyright (C) 2001--2014 Heikki Junes <heikki.junes@hut.fi> (Suomi)
+;;;; Copyright (C) 1997--2014 Mats Bengtsson <mabe@violin.s3.kth.se> (Svenska)
+;;;; Copyright (C) 2004--2014 Hendrik Maryns <hendrik.maryns@ugent.be> (Vlaams)
 ;;;;
 ;;;; LilyPond is free software: you can redistribute it and/or modify
 ;;;; it under the terms of the GNU General Public License as published by
index 4c834591a392bc90d2b7fdaa49515b7518c677a0..904b6348d42c967ccce64e705935d38749c30cdc 100644 (file)
@@ -1,6 +1,6 @@
 ;;;; This file is part of LilyPond, the GNU music typesetter.
 ;;;;
-;;;; Copyright (C) 2005--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+;;;; Copyright (C) 2005--2014 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
index 0847d4c93f84ac32eea90f067c63f55a1660169d..c74b6110d635f66a370eef3e193560fd5a4d0c1b 100644 (file)
@@ -1,6 +1,6 @@
 ;;;; This file is part of LilyPond, the GNU music typesetter.
 ;;;;
-;;;; Copyright (C) 2010--2012 Mike Solomon <mikesol@stanfordalumni.org>
+;;;; Copyright (C) 2010--2014 Mike Solomon <mikesol@stanfordalumni.org>
 ;;;;    Clarinet drawings copied from diagrams created by
 ;;;;    Gilles Thibault <gilles.thibault@free.fr>
 ;;;;
index f67125337b574bf0a3ffe0614ceb4dac836ac3b9..3e560b1403bd355be8a813f78528f35745fca355 100644 (file)
@@ -2,7 +2,7 @@
 ;;;
 ;;;
 ;;;
-;;; Copyright (C) 2005--2012 Nicolas Sceaux  <nicolas.sceaux@free.fr>
+;;; Copyright (C) 2005--2014 Nicolas Sceaux  <nicolas.sceaux@free.fr>
 ;;;
 
 ;;; - This file defines the procedures used to define display methods for each
index 5b34ac94fcda7212551236f542c52d85996f74e6..987b79814260d511e117472107a5238a8734f044 100644 (file)
@@ -1,6 +1,6 @@
 ;;;; This file is part of LilyPond, the GNU music typesetter.
 ;;;;
-;;;; Copyright (C) 2010--2012 Mike Solomon <mikesol@stanfordalumni.org>
+;;;; Copyright (C) 2010--2014 Mike Solomon <mikesol@stanfordalumni.org>
 ;;;;
 ;;;; LilyPond is free software: you can redistribute it and/or modify
 ;;;; it under the terms of the GNU General Public License as published by
index c1288deff52bc03e8bfad40e62de628bdd8d23c1..d9ec2b00b50afe1e7c674dcb1197dde97dc36c1a 100644 (file)
@@ -1,6 +1,6 @@
 ;;;; This file is part of LilyPond, the GNU music typesetter.
 ;;;;
-;;;; Copyright (C) 2000--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+;;;; Copyright (C) 2000--2014 Han-Wen Nienhuys <hanwen@xs4all.nl>
 ;;;; Jan Nieuwenhuizen <janneke@gnu.org>
 ;;;;
 ;;;; LilyPond is free software: you can redistribute it and/or modify
 ;;;; You should have received a copy of the GNU General Public License
 ;;;; along with LilyPond.  If not, see <http://www.gnu.org/licenses/>.
 
-(define (sort-grob-properties x)
+(define (sort-grob-properties props)
   ;; force 'meta to the end of each prop-list
-  (let ((meta (assoc 'meta x)))
-    (append (sort (assoc-remove! x 'meta) ly:alist-ci<?)
+  (let ((meta (assoc 'meta props)))
+    (append (sort (assoc-remove! props 'meta) ly:alist-ci<?)
             (list meta))))
 
-;; properly sort all grobs, properties, and interfaces
+;; properly sort all properties and interfaces
 ;; within the all-grob-descriptions alist
-(for-each
- (lambda (x)
-   (let* ((props      (assoc-ref all-grob-descriptions (car x)))
-          (meta       (assoc-ref props 'meta))
-          (interfaces (assoc-ref meta 'interfaces)))
-     (set! all-grob-descriptions
-           (sort (assoc-set! all-grob-descriptions (car x)
-                             (sort-grob-properties
-                              (assoc-set! props 'meta
-                                          (assoc-set! meta 'interfaces
-                                                      (sort interfaces ly:symbol-ci<?)))))
-                 ly:alist-ci<?))))
- all-grob-descriptions)
+(set! all-grob-descriptions
+  (map!
+    (lambda (grob-description)
+      (let* ((grob-key      (car grob-description))
+             (props         (assoc-ref all-grob-descriptions grob-key))
+             (meta          (assoc-ref props 'meta))
+             (interfaces    (assoc-ref meta 'interfaces))
+             (sorted-ifaces (sort interfaces ly:symbol-ci<?))
+             (new-meta      (assoc-set! meta 'interfaces sorted-ifaces))
+             (new-props     (assoc-set! props 'meta new-meta))
+             (sorted-props  (sort-grob-properties new-props)))
+        (cons grob-key sorted-props)))
+    all-grob-descriptions))
+
+;; sort all grobs in the all-grob-descriptions alist
+(set! all-grob-descriptions (sort all-grob-descriptions ly:alist-ci<?))
 
 (define (interface-doc-string interface grob-description)
   (let* ((name (car interface))
@@ -154,7 +157,7 @@ node."
             engraver-list))
        "."
 
-       "\n\nStandard settings:\n\n"
+       "\n\nStandard settings:\n"
        (grob-alist->texi description)
        "\n\nThis object supports the following interface(s):\n"
        (human-listify ifacedoc)
index f5034d2ecc10129e8603ea52eeaf94157234bc41..0695008d493ccf10352e3b4f21de1535d3571b99 100644 (file)
@@ -1,6 +1,6 @@
 ;;;; This file is part of LilyPond, the GNU music typesetter.
 ;;;;
-;;;; Copyright (C) 2011--2012 Neil Puttock <n.puttock@gmail.com>
+;;;; Copyright (C) 2011--2014 Neil Puttock <n.puttock@gmail.com>
 ;;;;
 ;;;; LilyPond is free software: you can redistribute it and/or modify
 ;;;; it under the terms of the GNU General Public License as published by
        (let ((value (car args))
              (path (cdr args)))
          (string-append
-          "@item Sets "
-          (format "grob property @code{~a} "
+          (format "@item Sets grob property @code{~a} "
                   (grob-property-path path))
-          (format "in @code{@rinternals{~a}} to ~a."
-                  name-sym
-                  (scm->texi value))
-          "\n")))
+          (format "in @code{@rinternals{~a}} to" name-sym)
+          (if (pretty-printable? value)
+            (format ":~a\n" (scm->texi value))
+            (format " ~a.\n" (scm->texi value))))))
       ((pop)
        (string-append
-        "@item Reverts "
-        (format "grob property @code{~a} "
+        (format "@item Reverts grob property @code{~a} "
                 (grob-property-path (car args)))
-        (format "in @code{@rinternals{~a}}."
-                name-sym)
-        "\n"))
+        (format "in @code{@rinternals{~a}}.\n"
+                name-sym)))
       ((assign)
-       (format "@item Sets translator property @code{~a} to ~a.\n"
-               name-sym
-               (scm->texi (car args))))
+       (string-append
+         (format "@item Sets translator property @code{~a} to" name-sym)
+         (if (pretty-printable? value)
+           (format ":~a\n" (scm->texi (car args)))
+           (format " ~a.\n" (scm->texi (car args))))))
       ((unset)
        (format "@item Unsets translator property @code{~a}.\n"
                name-sym))
index 2102f640e0f80ad6255be2c5a0e5fffd1c7ada86..07a504473d5407ce312f38781755ebb82f18a3d2 100644 (file)
@@ -1,6 +1,6 @@
 ;;;; This file is part of LilyPond, the GNU music typesetter.
 ;;;;
-;;;; Copyright (C) 1998--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+;;;; Copyright (C) 1998--2014 Han-Wen Nienhuys <hanwen@xs4all.nl>
 ;;;;                 Jan Nieuwenhuizen <janneke@gnu.org>
 ;;;;
 ;;;; LilyPond is free software: you can redistribute it and/or modify
index 22088605d70f7fbaa1df1d9c27ccc4fb21d51b58..2a2e0ce074b620a28217cd8f9b1a078b4efa440b 100644 (file)
@@ -1,6 +1,6 @@
 ;;;; This file is part of LilyPond, the GNU music typesetter.
 ;;;;
-;;;; Copyright (C) 2006--2012 Han-Wen Nienhuys <hanwen@lilypond.org>
+;;;; Copyright (C) 2006--2014 Han-Wen Nienhuys <hanwen@lilypond.org>
 ;;;;
 ;;;; LilyPond is free software: you can redistribute it and/or modify
 ;;;; it under the terms of the GNU General Public License as published by
index 54c987b9bbdb6aa0c8b4fc89890c24647468c591..318a26b9e60718108a78cdb4ab4f4ee6106602e8 100644 (file)
@@ -1,6 +1,6 @@
 ;;;; This file is part of LilyPond, the GNU music typesetter.
 ;;;;
-;;;; Copyright (C) 1998--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+;;;; Copyright (C) 1998--2014 Han-Wen Nienhuys <hanwen@xs4all.nl>
 ;;;;                 Jan Nieuwenhuizen <janneke@gnu.org>
 ;;;;
 ;;;; LilyPond is free software: you can redistribute it and/or modify
@@ -53,9 +53,9 @@
          (sig-type-names (map type-name sig))
          (signature-str
           (string-join
-           (map (lambda (x) (string-append
-                             "@var{" (car x) "} ("  (cadr x) ")" ))
-                (zip arg-names  sig-type-names))
+           (map (lambda (x y) (string-append
+                             "@var{" x "} (" y ")" ))
+                arg-names  sig-type-names)
            " " )))
 
     (string-append
index 0badbf899e14880b59b93ae85be57dc1ea6b060a..c5487eefd0691fda075b43b28cb94545c2aa3402 100644 (file)
@@ -1,6 +1,6 @@
 ;;;; This file is part of LilyPond, the GNU music typesetter.
 ;;;;
-;;;; Copyright (C) 1998--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+;;;; Copyright (C) 1998--2014 Han-Wen Nienhuys <hanwen@xs4all.nl>
 ;;;;                 Jan Nieuwenhuizen <janneke@gnu.org>
 ;;;;
 ;;;; LilyPond is free software: you can redistribute it and/or modify
index 5e867bb4c24bfc84193a90a41ca300522043d689..442c2659bbc6b412af9e12ffef2c8e9bece10bd4 100644 (file)
@@ -1,6 +1,6 @@
 ;;;; This file is part of LilyPond, the GNU music typesetter.
 ;;;;
-;;;; Copyright (C) 2000--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+;;;; Copyright (C) 2000--2014 Han-Wen Nienhuys <hanwen@xs4all.nl>
 ;;;;                 Jan Nieuwenhuizen <janneke@gnu.org>
 ;;;;
 ;;;; LilyPond is free software: you can redistribute it and/or modify
            (path (cdr args)))
 
         (string-append
-         "@item Set "
-         (format #f "grob-property @code{~a} "
+         (format #f "@item Set grob-property @code{~a} "
                  (string-join (map symbol->string path) " "))
-         (format #f "in @ref{~a} to ~a."
-                 context-sym (scm->texi value))
-         "\n")))
+         (format #f "in @ref{~a} to" context-sym)
+         (if (pretty-printable? value)
+           (format #f ":~a\n" (scm->texi value))
+           (format #f " ~a.\n" (scm->texi value))))))
      ((equal? (object-property context-sym 'is-grob?) #t) "")
      ((equal? tag 'assign)
-      (format #f "@item Set translator property @code{~a} to ~a.\n"
-              context-sym
-              (scm->texi (car args))))
-     )))
+      (string-append
+        (format #f "@item Set translator property @code{~a} to" context-sym)
+        (if (pretty-printable? (car args))
+          (format #f ":~a\n" (scm->texi (car args)))
+          (format #f " ~a.\n" (scm->texi (car args)))))))))
 
 
 (define (context-doc context-desc)
index 2e94f2c3f869ed35f13bc53ea102306999fcf6e5..ea6c3ec1d8fed9f014d713afda0ab9e935b022ec 100644 (file)
@@ -1,6 +1,6 @@
 ;;;; This file is part of LilyPond, the GNU music typesetter.
 ;;;;
-;;;; Copyright (C) 2010--2012 Mark Polesky <markpolesky@yahoo.com>
+;;;; Copyright (C) 2010--2014 Mark Polesky <markpolesky@yahoo.com>
 ;;;;
 ;;;; LilyPond is free software: you can redistribute it and/or modify
 ;;;; it under the terms of the GNU General Public License as published by
index d65d0edab7ad7fc969aa99b477c1a0dd9427c763..dcbd1d4f95fe21c18bb7d4a75d4c14147a6d6383 100644 (file)
@@ -1,6 +1,6 @@
 ;;;; This file is part of LilyPond, the GNU music typesetter.
 ;;;;
-;;;; Copyright (C) 2000--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+;;;; Copyright (C) 2000--2014 Han-Wen Nienhuys <hanwen@xs4all.nl>
 ;;;; Jan Nieuwenhuizen <janneke@gnu.org>
 ;;;;
 ;;;; LilyPond is free software: you can redistribute it and/or modify
 @author The LilyPond development team
 
 @c `Internals Reference' was born 2000-10-21 with git commit 01e371f...
-Copyright @copyright{} 2000--2012 by the authors
+Copyright @copyright{} 2000--2014 by the authors
 
 @vskip 20pt
 
index a0981945869823034d5c09434231923cde62d3db..da7d29665855095e98d75ac2704848c7d9377de2 100644 (file)
@@ -1,6 +1,6 @@
 ;;;; This file is part of LilyPond, the GNU music typesetter.
 ;;;;
-;;;; Copyright (C) 2000--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+;;;; Copyright (C) 2000--2014 Han-Wen Nienhuys <hanwen@xs4all.nl>
 ;;;;                 Jan Nieuwenhuizen <janneke@gnu.org>
 ;;;;
 ;;;; LilyPond is free software: you can redistribute it and/or modify
 (define (processing name)
   (ly:basic-progress (_ "Processing ~S...") name))
 
-(define (self-evaluating? x)
-  (or (number? x) (string? x) (procedure? x) (boolean? x)))
-
-(define (texify x)
-  x)
-
-(define (scm->texi x)
-  (string-append "@code{" (texify (scm->string x)) "}"))
-
-
+(define (scm->texi val)
+  (let* (; always start on a new line
+         (open-texi (if (pretty-printable? val)
+                      "\n@verbatim\n"
+                      "\n@code{"))
+         (close-texi (if (pretty-printable? val)
+                       "@end verbatim"
+                       "}")))
+    (string-append open-texi (scm->string val) close-texi)))
 
 (define (texi-section-command level)
   (assoc-get level '(
@@ -91,7 +90,7 @@
   "Document one (LABEL . DESC); return empty string if LABEL is empty string."
   (if (eq? (car label-desc-pair) "")
       ""
-      (string-append "\n@item " (car label-desc-pair) "\n" (cdr label-desc-pair))))
+      (string-append "\n\n@item " (car label-desc-pair) "\n" (cdr label-desc-pair))))
 
 
 (define (description-list->texi items-alist quote?)
@@ -100,9 +99,9 @@ string-to-use).  If QUOTE? is #t, embed table in a @quotation environment."
   (string-append
    "\n"
    (if quote? "@quotation\n" "")
-   "@table @asis\n"
+   "@table @asis"
    (string-concatenate (map one-item->texi items-alist))
-   "\n"
+   "\n\n"
    "@end table\n"
    (if quote? "@end quotation\n" "")))
 
@@ -209,12 +208,8 @@ with init values from ALIST (1st optional argument)
         (ly:error (_ "cannot find description for property ~S (~S)") sym where))
 
     (cons
-     (string-append "@code{" name "} "
-                    "(" typename ")"
+     (string-append "@code{" name "} (" typename ")"
                     (if init-value
-                        (string-append
-                         ":\n\n"
-                         (scm->texi init-value)
-                         "\n\n")
-                        ""))
+                      (string-append ":" (scm->texi init-value) "\n")
+                      ""))
      desc)))
index e474a557e5fa494d16c958801f14f509cd510be4..c64cbea54ad7cbb25b57ad701ecd25a618518f92 100644 (file)
@@ -1,6 +1,6 @@
 ;;;; This file is part of LilyPond, the GNU music typesetter.
 ;;;;
-;;;; Copyright (C) 2005--2012 Jan Nieuwenhuizen <janneke@gnu.org>
+;;;; Copyright (C) 2005--2014 Jan Nieuwenhuizen <janneke@gnu.org>
 ;;;;
 ;;;; LilyPond is free software: you can redistribute it and/or modify
 ;;;; it under the terms of the GNU General Public License as published by
index aaeed727b18f493297b2c63dd1b39a515a743904..f0495027a11d725e9e90e8f8aa7aa63933c3fd3d 100644 (file)
@@ -1,6 +1,6 @@
 ;;;; This file is part of LilyPond, the GNU music typesetter.
 ;;;;
-;;;; Copyright (C) 2004--2012 Jan Nieuwenhuizen <janneke@gnu.org>
+;;;; Copyright (C) 2004--2014 Jan Nieuwenhuizen <janneke@gnu.org>
 ;;;;
 ;;;; LilyPond is free software: you can redistribute it and/or modify
 ;;;; it under the terms of the GNU General Public License as published by
index 21db866eb83f15a4153f603270319cdadfbecc0a..8c941acbed4db8f821a4b027bf505ac089110c0f 100644 (file)
@@ -1,6 +1,6 @@
 ;;;; This file is part of LilyPond, the GNU music typesetter.
 ;;;;
-;;;; Copyright (C) 2005--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+;;;; Copyright (C) 2005--2014 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
index 59495ba40b884f33968a7f526f592a42bb590dc9..98ec0e4d80b1a742e9b4e96844152e0c321b2e05 100644 (file)
@@ -1,6 +1,6 @@
 ;;;; This file is part of LilyPond, the GNU music typesetter.
 ;;;;
-;;;; Copyright (C) 2008--2012 Reinhold Kainhofer <reinhold@kainhofer.com>
+;;;; Copyright (C) 2008--2014 Reinhold Kainhofer <reinhold@kainhofer.com>
 ;;;;
 ;;;; LilyPond is free software: you can redistribute it and/or modify
 ;;;; it under the terms of the GNU General Public License as published by
index 45a54b5f8d6ec9a5e202c23381d76ca9697eee6a..867612ae11529c3426a795498a6dc5168481f427 100644 (file)
@@ -1,6 +1,6 @@
 ;;;; This file is part of LilyPond, the GNU music typesetter.
 ;;;;
-;;;; Copyright (C) 2004--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+;;;; Copyright (C) 2004--2014 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
index 4028a42468ad02e4b2ebfd1b4a8a06dfeca4d6a6..5aa5c0e3bb7859a31eed36c58da5068b143ba3f4 100644 (file)
@@ -1,6 +1,6 @@
 ;;;; This file is part of LilyPond, the GNU music typesetter.
 ;;;;
-;;;; Copyright (C) 2004--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+;;;; Copyright (C) 2004--2014 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
index d92affb11ccad4c45953c36a81ab8128af576335..a96eea76792b7ce3efce5af4a9f61457134ffe57 100644 (file)
@@ -1,6 +1,6 @@
 ;;;; This file is part of LilyPond, the GNU music typesetter.
 ;;;;
-;;;; Copyright (C) 2004--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+;;;; Copyright (C) 2004--2014 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
@@ -84,7 +84,9 @@
    "/output-scale "
    (number->string (ly:output-def-lookup layout 'output-scale)) " def\n"
    (output-entry "page-height" 'paper-height)
-   (output-entry "page-width" 'paper-width)))
+   (output-entry "page-width" 'paper-width)
+   (if (ly:get-option 'strokeadjust) "true setstrokeadjust\n" "")
+   ))
 
 (define (dump-page outputter page page-number page-count landscape?)
   (ly:outputter-dump-string
@@ -97,7 +99,6 @@
         "")
     "%%EndPageSetup\n"
     "\n"
-    "true setstrokeadjust\n"
     "gsave 0 paper-height translate set-ps-scale-to-lily-scale\n"))
   (ly:outputter-dump-stencil outputter page)
   (ly:outputter-dump-string outputter "stroke grestore\nshowpage\n"))
index dad8bfa0f7b674eeb0fded7e19201e191e5be461..eed314c3f9fdb330be8e65683a5845447fefb284 100644 (file)
@@ -1,6 +1,6 @@
 ;;;; This file is part of LilyPond, the GNU music typesetter.
 ;;;;
-;;;; Copyright (C) 2004--2012 Jan Nieuwenhuizen <janneke@gnu.org>
+;;;; Copyright (C) 2004--2014 Jan Nieuwenhuizen <janneke@gnu.org>
 ;;;;                Patrick McCarty <pnorcks@gmail.com>
 ;;;;
 ;;;; LilyPond is free software: you can redistribute it and/or modify
index 3359608345dbbe082a20494ff85924f82d9065f6..69a8ba7821be29483093e9bec85edb8d2ef95fab 100644 (file)
@@ -1,6 +1,6 @@
 ;;;; This file is part of LilyPond, the GNU music typesetter.
 ;;;;
-;;;; Copyright (C) 2004--2012 Carl D. Sorensen <c_sorensen@byu.edu>
+;;;; Copyright (C) 2004--2014 Carl D. 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
index fc2076be24c9624cf262d6bf0f3edff4d0d00403..fb85076a1c67133a84a116bfe913c839b07a1ca1 100644 (file)
@@ -1,6 +1,6 @@
 ;;;; This file is part of LilyPond, the GNU music typesetter.
 ;;;;
-;;;; Copyright (C) 2007--2012 Joe Neeman <joeneeman@gmail.com>
+;;;; Copyright (C) 2007--2014 Joe Neeman <joeneeman@gmail.com>
 ;;;;
 ;;;; LilyPond is free software: you can redistribute it and/or modify
 ;;;; it under the terms of the GNU General Public License as published by
index defd663317d7da243e7a8f30f9ed7179a631f49f..55665a3313b65fd83983f04110f943ce10ddeb3f 100644 (file)
@@ -1,6 +1,6 @@
 ;;;; This file is part of LilyPond, the GNU music typesetter.
 ;;;;
-;;;; Copyright (C) 2010--2012 Ian Hulin <ian@hulin.org.uk>
+;;;; Copyright (C) 2010--2014 Ian Hulin <ian@hulin.org.uk>
 ;;;;
 ;;;; LilyPond is free software: you can redistribute it and/or modify
 ;;;; it under the terms of the GNU General Public License as published by
index ea5db93f181befecdcbe970f3c9432f15b7cd19d..3c43e5d191c6c384f5a5198122154186c5d69de3 100644 (file)
@@ -1,6 +1,6 @@
 ;;;; This file is part of LilyPond, the GNU music typesetter.
 ;;;;
-;;;; Copyright (C) 2008--2012 Reinhold Kainhofer <reinhold@kainhofer.com>
+;;;; Copyright (C) 2008--2014 Reinhold Kainhofer <reinhold@kainhofer.com>
 ;;;;
 ;;;; LilyPond is free software: you can redistribute it and/or modify
 ;;;; it under the terms of the GNU General Public License as published by
index fb39a4e784055496bae221e845c75f6d263d8c3a..8aae2d09d5622cc4840a7d68a020fde6faba5404 100644 (file)
@@ -1,6 +1,6 @@
 ;;;; This file is part of LilyPond, the GNU music typesetter.
 ;;;;
-;;;; Copyright (C) 2000--2012 Jan Nieuwenhuizen <janneke@gnu.org>
+;;;; Copyright (C) 2000--2014 Jan Nieuwenhuizen <janneke@gnu.org>
 ;;;;
 ;;;; LilyPond is free software: you can redistribute it and/or modify
 ;;;; it under the terms of the GNU General Public License as published by
index 7e5ab5858cb4750fba15b5f22d8b092c678fe810..f2708c0defb94e6ed15009e6db36d7ed2c85a42b 100644 (file)
@@ -1,6 +1,6 @@
 ;;;; This file is part of LilyPond, the GNU music typesetter.
 ;;;;
-;;;; Copyright (C) 2000--2012 Jan Nieuwenhuizen <janneke@gnu.org>
+;;;; Copyright (C) 2000--2014 Jan Nieuwenhuizen <janneke@gnu.org>
 ;;;;
 ;;;; LilyPond is free software: you can redistribute it and/or modify
 ;;;; it under the terms of the GNU General Public License as published by
@@ -28,6 +28,8 @@
     (max-slope-factor . 10)
     (free-head-distance . 0.3)
     (free-slur-distance . 0.8)
+    (gap-to-staffline-inside . 0.2)
+    (gap-to-staffline-outside . 0.1)
     (extra-object-collision-penalty . 50)
     (accidental-collision . 3)
     (extra-encompass-free-distance . 0.3)
index 43b05e57c20d8fa6b5b9e784d434cb5c564d1c58..472a82da24c4a785a5ef6c267f48f25327773d8c 100644 (file)
@@ -1,6 +1,6 @@
 ;;;; This file is part of LilyPond, the GNU music typesetter.
 ;;;;
-;;;; Copyright (C) 1998--2012 Jan Nieuwenhuizen <janneke@gnu.org>
+;;;; Copyright (C) 1998--2014 Jan Nieuwenhuizen <janneke@gnu.org>
 ;;;; Han-Wen Nienhuys <hanwen@xs4all.nl>
 ;;;;
 ;;;; LilyPond is free software: you can redistribute it and/or modify
@@ -22,6 +22,8 @@
 ;; for define-safe-public when byte-compiling using Guile V2
 (use-modules (scm safe-utility-defs))
 
+(use-modules (ice-9 pretty-print))
+
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;; constants.
 
   (cons (ly:moment-main-numerator moment)
         (ly:moment-main-denominator moment)))
 
+(define-public (seconds->moment s context)
+  "Return a moment equivalent to s seconds at the current tempo."
+  (ly:moment-mul (ly:context-property context 'tempoWholesPerMinute)
+                 (ly:make-moment (/ s 60))))
+
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;; durations
 
@@ -116,6 +123,16 @@ non-visual scale factor 1."
 duration (base note length and dot count), as a number of whole notes."
   (duration-length (duration-visual dur)))
 
+(define-public (unity-if-multimeasure context dur)
+  "Given a context and a duration, return @code{1} if the duration is
+longer than the @code{measureLength} in that context, and @code{#f} otherwise.
+This supports historic use of @code{Completion_heads_engraver} to split
+@code{c1*3} into three whole notes."
+  (if (ly:moment<? (ly:context-property context 'measureLength)
+                   (ly:duration-length dur))
+    1
+    #f))
+
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;; arithmetic
 (define-public (average x . lst)
@@ -825,12 +842,12 @@ Handy for debugging, possibly turned off."
 ;;  x)
 
 (define-public (stderr string . rest)
-  (apply format (cons (current-error-port) (cons string rest)))
+  (apply format (current-error-port) string rest)
   (force-output (current-error-port)))
 
 (define-public (debugf string . rest)
   (if #f
-      (apply stderr (cons string rest))))
+      (apply stderr string rest)))
 
 (define (index-cell cell dir)
   (if (equal? dir 1)
@@ -927,23 +944,46 @@ print a warning and set an optional @var{default}."
            (object->string def))
           def))))
 
-;;
-;; don't confuse users with #<procedure .. > syntax.
-;;
+(define (self-evaluating? x)
+  (or (number? x) (string? x) (procedure? x) (boolean? x)))
+
+(define (ly-type? x)
+  (any (lambda (p) ((car p) x)) lilypond-exported-predicates))
+
+(define-public (pretty-printable? val)
+  (and (not (self-evaluating? val))
+       (not (symbol? val))
+       (not (hash-table? val))
+       (not (ly-type? val))))
+
 (define-public (scm->string val)
-  (if (and (procedure? val)
-           (symbol? (procedure-name val)))
-      (symbol->string (procedure-name val))
-      (string-append
-       (if (self-evaluating? val)
-           (if (string? val)
-               "\""
-               "")
-           "'")
-       (call-with-output-string (lambda (port) (display val port)))
-       (if (string? val)
-           "\""
-           ""))))
+  (let* ((quote-style (if (string? val)
+                        'double
+                        (if (or (null? val) ; (ly-type? '()) => #t
+                                (and (not (self-evaluating? val))
+                                     (not (vector? val))
+                                     (not (hash-table? val))
+                                     (not (ly-type? val))))
+                          'single
+                          'none)))
+         ; don't confuse users with #<procedure ...> syntax
+         (str (if (and (procedure? val)
+                       (symbol? (procedure-name val)))
+                (symbol->string (procedure-name val))
+                (call-with-output-string
+                  (if (pretty-printable? val)
+                    ; property values in PDF hit margin after 64 columns
+                    (lambda (port)
+                      (pretty-print val port #:width (case quote-style
+                                                       ((single) 63)
+                                                       (else 64))))
+                    (lambda (port) (display val port)))))))
+    (case quote-style
+      ((single) (string-append
+                  "'"
+                  (string-regexp-substitute "\n " "\n  " str)))
+      ((double) (string-append "\"" str "\""))
+      (else str))))
 
 (define-public (!= lst r)
   (not (= lst r)))
index 95d3e33ffbe163c75f5a67d26df1d9acfc5b8fb9..e05c15a61189b18e42417c517e8a7cb11494bc18 100644 (file)
@@ -2,7 +2,7 @@
 ;;;;
 ;;;; source file of the GNU LilyPond music typesetter
 ;;;;
-;;;; Copyright 2009--2012 Mark Polesky <markpolesky@yahoo.com>
+;;;; Copyright 2009--2014 Mark Polesky <markpolesky@yahoo.com>
 
 
 ;; This file implements a LilyPond-specific character-sorting algorithm
index 9e47fc0df7548dcdc55d049f7afbfa7997a882c0..2f589d01ffd04c3f6aef037f36c8969bc8a7e351 100644 (file)
@@ -1,6 +1,6 @@
 ;;;; This file is part of LilyPond, the GNU music typesetter.
 ;;;;
-;;;; Copyright (C) 1998--2012 Jan Nieuwenhuizen <janneke@gnu.org>
+;;;; Copyright (C) 1998--2014 Jan Nieuwenhuizen <janneke@gnu.org>
 ;;;; Han-Wen Nienhuys <hanwen@xs4all.nl>
 ;;;;
 ;;;; LilyPond is free software: you can redistribute it and/or modify
@@ -277,7 +277,7 @@ file to given string.")
 to a music font.")
     (point-and-click
      #t
-     "Add point & click links to PDF output.")
+     "Add point & click links to PDF and SVG output.")
     (paper-size
      "a4"
      "Set default paper size.")
@@ -330,6 +330,12 @@ floating point exceptions.")
      #t
      "Don't use directories from input files while
 constructing output file names.")
+    (strokeadjust
+     #f
+     "Set the PostScript strokeadjust operator explicitly.
+This employs different drawing primitives, resulting in
+large PDF file size increases but often markedly better
+PDF previews.")
     (svg-woff
      #f
      "Use woff font files in SVG backend.")
@@ -405,8 +411,8 @@ messages into errors.")
 (define-public (ergonomic-simple-format dest . rest)
   "Like ice-9's @code{format}, but without the memory consumption."
   (if (string? dest)
-      (apply simple-format (cons #f (cons dest rest)))
-      (apply simple-format (cons dest rest))))
+      (apply simple-format #f dest rest)
+      (apply simple-format dest rest)))
 
 (define format
   ergonomic-simple-format)
@@ -420,7 +426,7 @@ messages into errors.")
   v)
 
 (define-public (print . args)
-  (apply format (cons (current-output-port) args)))
+  (apply format (current-output-port) args))
 
 
 ;;; General settings.
@@ -440,8 +446,6 @@ messages into errors.")
 (if (ly:get-option 'trace-scheme-coverage)
     (coverage:enable))
 
-(define-public parser #f)
-
 (define music-string-to-path-backends
   '(svg))
 
@@ -663,6 +667,7 @@ messages into errors.")
     (,number-or-string? . "number or string")
     (,number-pair? . "pair of numbers")
     (,number-pair-list? . "list of number pairs")
+    (,rational-or-procedure? . "an exact rational or procedure")
     (,rhythmic-location? . "rhythmic location")
     (,scheme? . "any type")
     (,string-or-pair? . "string or pair")
@@ -718,6 +723,7 @@ messages into errors.")
     (,ly:stream-event? . "stream event")
     (,ly:translator? . "translator")
     (,ly:translator-group? . "translator group")
+    (,ly:undead? . "undead container")
     (,ly:unpure-pure-container? . "unpure/pure container")
     ))
 
@@ -743,7 +749,7 @@ messages into errors.")
 
 (define (dump-profile base last this)
   (let* ((outname (format #f "~a.profile" (dir-basename base ".ly")))
-         (diff (map (lambda (y) (apply - y)) (zip this last))))
+         (diff (map - this last)))
     (ly:progress "\nWriting timing to ~a..." outname)
     (format (open-file outname "w")
             "time: ~a\ncells: ~a\n"
index b3d7f3f0f01cf942ef71f7db0caa19fd47db742f..2712fc21f3c331228192f563285b8b34fc246777 100644 (file)
@@ -1,6 +1,6 @@
 ;;;; This file is part of LilyPond, the GNU music typesetter.
 ;;;;
-;;;; Copyright (C) 2006--2012 Erik Sandberg <mandolaerik@gmail.com>
+;;;; Copyright (C) 2006--2014 Erik Sandberg <mandolaerik@gmail.com>
 ;;;;
 ;;;; LilyPond is free software: you can redistribute it and/or modify
 ;;;; it under the terms of the GNU General Public License as published by
@@ -73,7 +73,7 @@
    parser
    (format #f
            (_ "wrong type for argument ~a.  Expecting ~a, found ~s")
-           n (type-name pred) arg)
+           n (type-name pred) (music->make-music arg))
    location))
 
 (define-ly-syntax-simple (void-music)
index 72b107f8468a83261d38c31209f0d29235534115..67db7b5e8cead5ba9cc134ea7b4406866b9a6267 100644 (file)
@@ -1,6 +1,6 @@
 ;;;; This file is part of LilyPond, the GNU music typesetter.
 ;;;;
-;;;; Copyright (C) 2003--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+;;;; Copyright (C) 2003--2014 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
index 64a113973880e2f11e4b157aba24b6b368b5469b..d323ad3b4235f27f2eff9332b33e4eca7e720ebb 100644 (file)
@@ -1,6 +1,6 @@
 ;;;; This file is part of LilyPond, the GNU music typesetter.
 ;;;;
-;;;; Copyright (C) 2003--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+;;;; Copyright (C) 2003--2014 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
index e673555d932b1c715fe1660b18fd6b1ea8d04e3f..4c7d6b303529aec9e974b88738d3b140545fe657 100644 (file)
@@ -1,6 +1,6 @@
 ;;;; This file is part of LilyPond, the GNU music typesetter.
 ;;;;
-;;;; Copyright (C) 2000--2012 Jan Nieuwenhuizen <janneke@gnu.org>
+;;;; Copyright (C) 2000--2014 Jan Nieuwenhuizen <janneke@gnu.org>
 ;;;;
 ;;;; LilyPond is free software: you can redistribute it and/or modify
 ;;;; it under the terms of the GNU General Public License as published by
index 71892bde65e5d1a0eab09f7f1db2d3813d2e3e59..3e31f660e4e7e10fdd3a6a40cf14f3dce7d0b3a8 100644 (file)
@@ -1,6 +1,6 @@
 ;;; modal-transforms.scm --- Modal transposition, inversion, and retrograde.
 
-;; Copyright (C) 2011--2012 Ellis & Grant, Inc.
+;; Copyright (C) 2011--2014 Ellis & Grant, Inc.
 
 ;; Author: Michael Ellis <michael.f.ellis@gmail.com>
 
index 383b7f3f6defb7e85373397b08b7b1000aaec08c..ba567229e794f8c4a82ef9079a0981d04d3fc20a 100644 (file)
@@ -1,6 +1,6 @@
 ;;;; This file is part of LilyPond, the GNU music typesetter.
 ;;;;
-;;;; Copyright (C) 1998--2012 Jan Nieuwenhuizen <janneke@gnu.org>
+;;;; Copyright (C) 1998--2014 Jan Nieuwenhuizen <janneke@gnu.org>
 ;;;;                 Han-Wen Nienhuys <hanwen@xs4all.nl>
 ;;;;
 ;;;; LilyPond is free software: you can redistribute it and/or modify
@@ -20,6 +20,7 @@
 (use-modules (scm safe-utility-defs))
 
 (use-modules (ice-9 optargs))
+(use-modules (srfi srfi-11))
 
 ;;; ly:music-property with setter
 ;;; (ly:music-property my-music 'elements)
@@ -157,6 +158,8 @@ For instance,
   "Generate an expression that, once evaluated, may return an object
 equivalent to @var{obj}, that is, for a music expression, a
 @code{(make-music ...)} form."
+  (define (if-nonzero num)
+    (if (zero? num) '() (list num)))
   (cond (;; markup expression
          (markup? obj)
          (markup-expression->make-markup obj))
@@ -172,20 +175,28 @@ equivalent to @var{obj}, that is, for a music expression, a
                                  (ly:music-mutable-properties obj)))))
         (;; moment
          (ly:moment? obj)
-         `(ly:make-moment ,(ly:moment-main-numerator obj)
-                          ,(ly:moment-main-denominator obj)
-                          ,(ly:moment-grace-numerator obj)
-                          ,(ly:moment-grace-denominator obj)))
+         `(ly:make-moment
+           ,@(let ((main (ly:moment-main obj))
+                   (grace (ly:moment-grace obj)))
+               (cond ((zero? grace) (list main))
+                     ((negative? grace) (list main grace))
+                     (else ;;positive grace requires 4-arg form
+                      (list (numerator main)
+                            (denominator main)
+                            (numerator grace)
+                            (denominator grace)))))))
         (;; note duration
          (ly:duration? obj)
          `(ly:make-duration ,(ly:duration-log obj)
-                            ,(ly:duration-dot-count obj)
-                            ,(ly:duration-scale obj)))
+                            ,@(if (= (ly:duration-scale obj) 1)
+                                  (if-nonzero (ly:duration-dot-count obj))
+                                  (list (ly:duration-dot-count obj)
+                                        (ly:duration-scale obj)))))
         (;; note pitch
          (ly:pitch? obj)
          `(ly:make-pitch ,(ly:pitch-octave obj)
                          ,(ly:pitch-notename obj)
-                         ,(ly:pitch-alteration obj)))
+                         ,@(if-nonzero (ly:pitch-alteration obj))))
         (;; scheme procedure
          (procedure? obj)
          (or (procedure-name obj) obj))
@@ -242,18 +253,23 @@ The number of dots in the shifted music may not be less than zero."
                     (max 0 (+ dot (ly:duration-dot-count d)))
                     cp)))
           (set! (ly:music-property music 'duration) nd)))
+    ;clear cached length, since it's no longer valid
+    (set! (ly:music-property music 'length) '())
     music))
 
 (define-public (shift-duration-log music shift dot)
   (music-map (lambda (x) (shift-one-duration-log x shift dot))
              music))
 
-(define-public (make-repeat name times main alts)
-  "Create a repeat music expression, with all properties initialized
-properly."
+(define-public (tremolo::get-music-list tremolo)
+  "Given a tremolo repeat, return a list of music to engrave for it.
+This will be a stretched copy of its body, plus a TremoloEvent or
+TremoloSpanEvent.
+
+This is called only by Chord_tremolo_iterator."
   (define (first-note-duration music)
-    "Finds the duration of the first NoteEvent by searching depth-first
-through MUSIC."
+    "Finds the duration of the first NoteEvent by searching
+depth-first through MUSIC."
     ;; NoteEvent or a non-expanded chord-repetition
     ;; We just take anything that actually sports an announced duration.
     (if (ly:duration? (ly:music-property music 'duration))
@@ -266,46 +282,72 @@ through MUSIC."
                  (if (ly:duration? dur)
                      dur
                      (loop (cdr elts))))))))
-
-  (let ((talts (if (< times (length alts))
-                   (begin
-                     (ly:warning (_ "More alternatives than repeats.  Junking excess alternatives"))
-                     (take alts times))
-                   alts))
-        (r (make-repeated-music name)))
-    (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 (and (equal? name "tremolo")
-             (pair? (extract-named-music main '(EventChord NoteEvent))))
-        ;; This works for single-note and multi-note tremolos!
-        (let* ((children (if (music-is-of-type? main 'sequential-music)
-                             ;; \repeat tremolo n { ... }
-                             (length (extract-named-music main '(EventChord
-                                                                 NoteEvent)))
-                             ;; \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
+  (let* ((times (ly:music-property tremolo 'repeat-count))
+         (body (ly:music-property tremolo 'element))
+         (children (if (music-is-of-type? body 'sequential-music)
+                       ;; \repeat tremolo n { ... }
+                       (length (extract-named-music body '(EventChord
+                                                           NoteEvent)))
+                       ;; \repeat tremolo n c4
+                       1))
+         (tremolo-type (if (positive? children)
+                           (let* ((note-duration (first-note-duration body))
+                                  (duration-log (if (ly:duration? note-duration)
+                                                    (ly:duration-log note-duration)
+                                                    1)))
+                             (ash 1 duration-log))
+                           '()))
+         (stretched (ly:music-deep-copy body)))
+    (if (positive? children)
+        ;; # of dots is equal to the 1 in bitwise representation (minus 1)!
+        (let* ((dots (1- (logcount (* times children))))
+               ;; The remaining missing multiplier 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)
-                                 (ly:duration-log note-duration)
-                                 1))
-               (tremolo-type (ash 1 duration-log)))
-          (set! (ly:music-property r 'tremolo-type) tremolo-type)
+               (shift (- (ly:intlog2 (floor mult)))))
           (if (not (and (integer? mult) (= (logcount mult) 1)))
               (ly:music-warning
-               main
+               body
                (ly:format (_ "invalid tremolo repeat count: ~a") times)))
-          ;; Adjust the time of the notes
-          (ly:music-compress r (ly:make-moment 1 children))
+          ;; Make each note take the full duration
+          (ly:music-compress stretched (ly:make-moment 1 children))
           ;; Adjust the displayed note durations
-          (shift-duration-log r shift dots))
-        r)))
+          (shift-duration-log stretched shift dots)))
+    ;; Return the stretched body plus a tremolo event
+    (if (= children 1)
+        (list (make-music 'TremoloEvent
+                          'repeat-count times
+                          'tremolo-type tremolo-type
+                          'origin (ly:music-property tremolo 'origin))
+              stretched)
+        (list (make-music 'TremoloSpanEvent
+                          'span-direction START
+                          'repeat-count times
+                          'tremolo-type tremolo-type
+                          'origin (ly:music-property tremolo 'origin))
+              stretched
+              (make-music 'TremoloSpanEvent
+                          'span-direction STOP
+                          'origin (ly:music-property tremolo 'origin))))))
+
+(define-public (make-repeat name times main alts)
+  "Create a repeat music expression, with all properties initialized
+properly."
+  (let ((type (or (assoc-get name '(("volta" . VoltaRepeatedMusic)
+                                    ("unfold" . UnfoldedRepeatedMusic)
+                                    ("percent" . PercentRepeatedMusic)
+                                    ("tremolo" . TremoloRepeatedMusic)))
+                  (begin (ly:warning (_ "unknown repeat type `~S': must be volta, unfold, percent, or tremolo") name)
+                         'VoltaRepeatedMusic)))
+        (talts (if (< times (length alts))
+                   (begin
+                     (ly:warning (_ "More alternatives than repeats.  Junking excess alternatives"))
+                     (take alts times))
+                   alts)))
+    (make-music type
+                'element main
+                'repeat-count (max times 1)
+                'elements talts)))
 
 (define (calc-repeat-slash-count music)
   "Given the child-list @var{music} in @code{PercentRepeatMusic},
@@ -340,40 +382,10 @@ beats to be distinguished."
 
 (define-public (unfold-repeats music)
   "Replace all repeats with unfolded repeats."
-
   (let ((es (ly:music-property music 'elements))
         (e (ly:music-property music 'element)))
-
     (if (music-is-of-type? music 'repeated-music)
-        (let* ((props (ly:music-mutable-properties music))
-               (old-name (ly:music-property music 'name))
-               (flattened (flatten-alist props)))
-          (set! music (apply make-music (cons 'UnfoldedRepeatedMusic
-                                              flattened)))
-
-          (if (and (equal? old-name 'TremoloRepeatedMusic)
-                   (pair? (extract-named-music e '(EventChord NoteEvent))))
-              ;; This works for single-note and multi-note tremolos!
-              (let* ((children (if (music-is-of-type? e 'sequential-music)
-                                   ;; \repeat tremolo n { ... }
-                                   (length (extract-named-music e '(EventChord
-                                                                    NoteEvent)))
-                                   ;; \repeat tremolo n c4
-                                   1))
-                     (times (ly:music-property music 'repeat-count))
-
-                     ;; # 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)))))
-
-                ;; Adjust the time of the notes
-                (ly:music-compress music (ly:make-moment children 1))
-                ;; Adjust the displayed note durations
-                (shift-duration-log music (- shift) (- dots))))))
-
+        (set! music (make-music 'UnfoldedRepeatedMusic music)))
     (if (pair? es)
         (set! (ly:music-property music 'elements)
               (map unfold-repeats es)))
@@ -382,6 +394,26 @@ beats to be distinguished."
               (unfold-repeats e)))
     music))
 
+(define-public (unfold-repeats-fully music)
+  "Unfolds repeats and expands the resulting @code{unfolded-repeated-music}."
+  (map-some-music
+   (lambda (m)
+     (and (music-is-of-type? m 'unfolded-repeated-music)
+          (make-sequential-music
+           (ly:music-deep-copy
+            (let ((n (ly:music-property m 'repeat-count))
+                  (alts (ly:music-property m 'elements))
+                  (body (ly:music-property m 'element)))
+              (cond ((<= n 0) '())
+                    ((null? alts) (make-list n body))
+                    (else
+                     (concatenate
+                      (zip (make-list n body)
+                           (append! (make-list (max 0 (- n (length alts)))
+                                               (car alts))
+                                    alts))))))))))
+   (unfold-repeats music)))
+
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;; property setting music objs.
 
@@ -614,9 +646,10 @@ in @var{grob}."
   (make-music 'PropertyUnset
               'symbol sym))
 
-(define-safe-public (make-articulation name)
-  (make-music 'ArticulationEvent
-              'articulation-type name))
+(define-safe-public (make-articulation name . properties)
+  (apply make-music 'ArticulationEvent
+         'articulation-type name
+         properties))
 
 (define-public (make-lyric-event string duration)
   (make-music 'LyricEvent
@@ -728,7 +761,8 @@ duration is replaced with the specified @var{duration}."
         (set! (ly:music-property repeat-chord 'articulations)
               (append!
                (set-origin! (ly:music-deep-copy arts))
-               (ly:music-property repeat-chord 'articulations))))))
+               (ly:music-property repeat-chord 'articulations)))))
+  repeat-chord)
 
 
 (define-public (expand-repeat-chords! event-types music)
@@ -747,8 +781,7 @@ respective predecessor chord."
                 last-chord))
            (last-chord
             (set! (ly:music-property music 'duration) '())
-            (copy-repeat-chord last-chord music chord-repeat event-types)
-            music)
+            (copy-repeat-chord last-chord music chord-repeat event-types))
            (else
             (ly:music-warning music (_ "Bad chord repetition"))
             #f)))
@@ -757,6 +790,73 @@ respective predecessor chord."
                 (ly:music-property music 'elements)))))
   music)
 
+;;; This does _not_ copy any articulations.  Rationale: one main
+;;; incentive for pitch-repeating durations is after ties, such that
+;;; 4~2~8. can stand in for a 15/16 note in \partial 4 position.  In
+;;; this use case, any repeated articulations will be a nuisance.
+;;;
+;;; String assignments in TabStaff might seem like a worthwhile
+;;; exception, but they would be better tackled by the respective
+;;; engravers themselves (see issue 3662).
+;;;
+;;; Repeating chords as well seems problematic for things like
+;;; \score {
+;;;   <<
+;;;     \new Staff { c4 c c <c e> }
+;;;     \new RhythmicStaff { 4 4 4 4 }
+;;;   >>
+;;; }
+;;;
+;;; However, because of MIDI it is not advisable to use RhythmicStaff
+;;; without any initial pitch/drum-type.  For music functions taking
+;;; pure rhythms as an argument, the running of expand-repeat-notes!
+;;; at scorification time is irrelevant: at that point of time, the
+;;; music function has already run.
+
+(define-public (expand-repeat-notes! music)
+  "Walks through @var{music} and gives pitchless notes (not having a
+pitch in code{pitch} or a drum type in @code{drum-type}) the pitch(es)
+from the predecessor note/chord if available."
+  (let ((last-pitch #f))
+    (map-some-music
+     (lambda (m)
+       (define (set-and-ret last)
+         (set! last-pitch last)
+         m)
+       (cond
+        ((music-is-of-type? m 'event-chord)
+         (set-and-ret m))
+        ((music-is-of-type? m 'note-event)
+         (cond
+          ((or (ly:music-property m 'pitch #f)
+               (ly:music-property m 'drum-type #f))
+           => set-and-ret)
+          ;; ok, naked rhythm.  Go through the various cases of
+          ;; last-pitch
+          ;; nothing available: just keep as-is
+          ((not last-pitch) m)
+          ((ly:pitch? last-pitch)
+           (set! (ly:music-property m 'pitch) last-pitch)
+           m)
+          ((symbol? last-pitch)
+           (set! (ly:music-property m 'drum-type) last-pitch)
+           m)
+          ;; Ok, this is the big bad one: the reference is a chord.
+          ;; For now, we use the repeat chord logic.  That's not
+          ;; really efficient as cleaning out all articulations is
+          ;; quite simpler than what copy-repeat-chord does.
+          (else
+           (copy-repeat-chord last-pitch
+                              (make-music 'EventChord
+                                          'elements
+                                          (ly:music-property m 'articulations)
+                                          'origin
+                                          (ly:music-property m 'origin))
+                              (ly:music-property m 'duration)
+                              '(rhythmic-event)))))
+        (else #f)))
+     music)))
+
 ;;; splitting chords into voices.
 (define (voicify-list lst number)
   "Make a list of Musics.
@@ -1255,12 +1355,13 @@ then revert skipTypesetting."
      (else music))))
 
 
-(define-public toplevel-music-functions
+(define-session-public toplevel-music-functions
   (list
    (lambda (music parser) (expand-repeat-chords!
                            (cons 'rhythmic-event
                                  (ly:parser-lookup parser '$chord-repeat-events))
                            music))
+   (lambda (music parser) (expand-repeat-notes! music))
    (lambda (music parser) (voicify-music music))
    (lambda (x parser) (music-map music-check-error x))
    (lambda (x parser) (music-map precompute-music-length x))
@@ -1328,22 +1429,25 @@ Returns @code{#f} or the reason for the invalidation, a symbol."
          (car alteration-def))
         (else 0)))
 
-(define (check-pitch-against-signature context pitch barnum laziness octaveness)
+(define (check-pitch-against-signature context pitch barnum laziness octaveness all-naturals)
   "Checks the need for an accidental and a @q{restore} accidental against
-@code{localKeySignature}.  The @var{laziness} is the number of measures
+@code{localAlterations} and @code{keyAlterations}.
+The @var{laziness} is the number of measures
 for which reminder accidentals are used (i.e., if @var{laziness} is zero,
 only cancel accidentals in the same measure; if @var{laziness} is three,
 we cancel accidentals up to three measures after they first appear.
 @var{octaveness} is either @code{'same-octave} or @code{'any-octave} and
-specifies whether accidentals should be canceled in different octaves."
+specifies whether accidentals should be canceled in different octaves.
+If @var{all-naturals} is ##t, notes that do not occur in @code{keyAlterations}
+also get an accidental."
   (let* ((ignore-octave (cond ((equal? octaveness 'any-octave) #t)
                               ((equal? octaveness 'same-octave) #f)
                               (else
                                (ly:warning (_ "Unknown octaveness type: ~S ") octaveness)
                                (ly:warning (_ "Defaulting to 'any-octave."))
                                #t)))
-         (key-sig (ly:context-property context 'keySignature))
-         (local-key-sig (ly:context-property context 'localKeySignature))
+         (key (ly:context-property context 'keyAlterations))
+         (local (ly:context-property context 'localAlterations))
          (notename (ly:pitch-notename pitch))
          (octave (ly:pitch-octave pitch))
          (pitch-handle (cons octave notename))
@@ -1351,17 +1455,17 @@ specifies whether accidentals should be canceled in different octaves."
          (need-accidental #f)
          (previous-alteration #f)
          (from-other-octaves #f)
-         (from-same-octave (assoc-get pitch-handle local-key-sig))
-         (from-key-sig (or (assoc-get notename local-key-sig)
+         (from-same-octave (assoc-get pitch-handle local))
+         (from-key-sig (or (assoc-get notename local)
 
-                           ;; If no key signature match is found from localKeySignature, we may have a custom
+                           ;; If no notename match is found from localAlterations, we may have a custom
                            ;; type with octave-specific entries of the form ((octave . pitch) alteration)
                            ;; instead of (pitch . alteration).  Since this type cannot coexist with entries in
-                           ;; localKeySignature, try extracting from keySignature instead.
-                           (assoc-get pitch-handle key-sig))))
+                           ;; localAlterations, try extracting from keyAlterations instead.
+                           (assoc-get pitch-handle key))))
 
-    ;; loop through localKeySignature to search for a notename match from other octaves
-    (let loop ((l local-key-sig))
+    ;; loop through localAlterations to search for a notename match from other octaves
+    (let loop ((l local))
       (if (pair? l)
           (let ((entry (car l)))
             (if (and (pair? (car entry))
@@ -1393,7 +1497,7 @@ specifies whether accidentals should be canceled in different octaves."
         (let* ((prev-alt (extract-alteration previous-alteration))
                (this-alt (ly:pitch-alteration pitch)))
 
-          (if (not (= this-alt prev-alt))
+          (if (or (and all-naturals (eq? #f previous-alteration)) (not (= this-alt prev-alt)))
               (begin
                 (set! need-accidental #t)
                 (if (and (not (= this-alt 0))
@@ -1420,10 +1524,16 @@ is, to the end of current measure.  A positive integer means that the
 accidental lasts over that many bar lines.  @w{@code{-1}} is `forget
 immediately', that is, only look at key signature.  @code{#t} is `forever'."
 
-  (check-pitch-against-signature context pitch barnum laziness octaveness))
+  (check-pitch-against-signature context pitch barnum laziness octaveness #f))
+
+(define-public ((make-accidental-dodecaphonic-rule octaveness laziness) context pitch barnum measurepos)
+  "Variation on function make-accidental-rule that creates an dodecaphonic
+accidental rule."
+
+  (check-pitch-against-signature context pitch barnum laziness octaveness #t))
 
 (define (key-entry-notename entry)
-  "Return the pitch of an @var{entry} in @code{localKeySignature}.
+  "Return the pitch of an @var{entry} in @code{localAlterations}.
 The @samp{car} of the entry is either of the form @code{notename} or
 of the form @code{(octave . notename)}.  The latter form is used for special
 key signatures or to indicate an explicit accidental.
@@ -1437,25 +1547,25 @@ an accidental in music."
       (car entry)))
 
 (define (key-entry-octave entry)
-  "Return the octave of an entry in @code{localKeySignature}
+  "Return the octave of an entry in @code{localAlterations}
 or @code{#f} if the entry does not have an octave.
 See @code{key-entry-notename} for details."
   (and (pair? (car entry)) (caar entry)))
 
 (define (key-entry-bar-number entry)
-  "Return the bar number of an entry in @code{localKeySignature}
+  "Return the bar number of an entry in @code{localAlterations}
 or @code {#f} if the entry does not have a bar number.
 See @code{key-entry-notename} for details."
   (and (pair? (cdr entry)) (caddr entry)))
 
 (define (key-entry-measure-position entry)
-  "Return the measure position of an entry in @code{localKeySignature}
+  "Return the measure position of an entry in @code{localAlterations}
 or @code {#f} if the entry does not have a measure position.
 See @code{key-entry-notename} for details."
   (and (pair? (cdr entry)) (cdddr entry)))
 
 (define (key-entry-alteration entry)
-  "Return the alteration of an entry in localKeySignature.
+  "Return the alteration of an entry in localAlterations
 
 For convenience, returns @code{0} if entry is @code{#f}."
   (if entry
@@ -1488,7 +1598,7 @@ If no matching entry is found, @var{#f} is returned."
 key signature @emph{and} does not directly follow a note on the same
 staff line.  This rule should not be used alone because it does neither
 look at bar lines nor different accidentals at the same note name."
-  (let* ((keysig (ly:context-property context 'localKeySignature))
+  (let* ((keysig (ly:context-property context 'localAlterations))
          (entry (find-pitch-entry keysig pitch #t #t)))
     (if (not entry)
         (cons #f #f)
@@ -1500,17 +1610,36 @@ look at bar lines nor different accidentals at the same note name."
           (cons #f (not (or (equal? acc key-acc)
                             (and (equal? entrybn barnum) (equal? entrymp measurepos)))))))))
 
+(define-public (dodecaphonic-no-repeat-rule context pitch barnum measurepos)
+  "An accidental rule that typesets an accidental before every
+note (just as in the dodecaphonic accidental style) @emph{except} if
+the note is immediately preceded by a note with the same pitch. This
+is a common accidental style in contemporary notation."
+   (let* ((keysig (ly:context-property context 'localKeySignature))
+          (entry (find-pitch-entry keysig pitch #t #t)))
+     (if (not entry)
+          (cons #f #t)
+         (let* ((entrymp (key-entry-measure-position entry))
+                (entrybn (key-entry-bar-number entry)))
+           (cons #f
+             (not
+              (and (equal? entrybn barnum) (equal? entrymp measurepos))))))))
+
 (define-public (teaching-accidental-rule context pitch barnum measurepos)
   "An accidental rule that typesets a cautionary accidental if it is
 included in the key signature @emph{and} does not directly follow a note
 on the same staff line."
-  (let* ((keysig (ly:context-property context 'localKeySignature))
+  (let* ((keysig (ly:context-property context 'localAlterations))
          (entry (find-pitch-entry keysig pitch #t #t)))
     (if (not entry)
         (cons #f #f)
-        (let* ((entrymp (key-entry-measure-position entry))
+        (let* ((global-entry (find-pitch-entry keysig pitch #f #f))
+               (key-acc (key-entry-alteration global-entry))
+               (acc (ly:pitch-alteration pitch))
+               (entrymp (key-entry-measure-position entry))
                (entrybn (key-entry-bar-number entry)))
-          (cons #f (not (and (equal? entrybn barnum) (equal? entrymp measurepos))))))))
+          (cons #f (not (or (equal? acc key-acc)
+                            (and (equal? entrybn barnum) (equal? entrymp measurepos)))))))))
 
 (define-public (set-accidentals-properties extra-natural
                                            auto-accs auto-cauts
@@ -1610,6 +1739,22 @@ as a context."
                                   `(Staff ,(lambda (c p bn mp) '(#f . #t)))
                                   '()
                                   context))
+     ;; As in dodecaphonic style with the exception that immediately
+     ;; repeated notes (in the same voice) don't get an accidental
+     ((equal? style 'dodecaphonic-no-repeat)
+      (set-accidentals-properties #f
+                                  `(Staff ,(make-accidental-rule 'same-octave 0)
+                                          ,dodecaphonic-no-repeat-rule)
+                                          '()
+                                          context))
+     ;; Variety of the dodecaphonic style. Each note gets an accidental,
+     ;; except notes that were already handled in the same measure.
+     ((equal? style 'dodecaphonic-first)
+      (set-accidentals-properties #f
+                                  `(Staff ,(make-accidental-dodecaphonic-rule 'same-octave 0))
+                                  '()
+                                  context))
+
      ;; Multivoice accidentals to be read both by musicians playing one voice
      ;; and musicians playing all voices.
      ;; Accidentals are typeset for each voice, but they ARE canceled across voices.
@@ -1665,8 +1810,8 @@ as a context."
                                           ,teaching-accidental-rule)
                                   context))
 
-     ;; do not set localKeySignature when a note alterated differently from
-     ;; localKeySignature is found.
+     ;; do not set localAlterations when a note alterated differently from
+     ;; localAlterations is found.
      ;; Causes accidentals to be printed at every note instead of
      ;; remembered for the duration of a measure.
      ;; accidentals not being remembered, causing accidentals always to
@@ -1691,15 +1836,15 @@ as a context."
 (define-public (invalidate-alterations context)
   "Invalidate alterations in @var{context}.
 
-Elements of @code{'localKeySignature} corresponding to local
+Elements of @code{'localAlterations} corresponding to local
 alterations of the key signature have the form
 @code{'((octave . notename) . (alter barnum . measurepos))}.
 Replace them with a version where @code{alter} is set to @code{'clef}
 to force a repetition of accidentals.
 
 Entries that conform with the current key signature are not invalidated."
-  (let* ((keysig (ly:context-property context 'keySignature)))
-    (set! (ly:context-property context 'localKeySignature)
+  (let* ((keysig (ly:context-property context 'keyAlterations)))
+    (set! (ly:context-property context 'localAlterations)
           (map-in-order
            (lambda (entry)
              (let* ((localalt (key-entry-alteration entry)))
@@ -1715,7 +1860,7 @@ Entries that conform with the current key signature are not invalidated."
                             #t #t))))
                    entry
                    (cons (car entry) (cons 'clef (cddr entry))))))
-           (ly:context-property context 'localKeySignature)))))
+           (ly:context-property context 'localAlterations)))))
 
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 
@@ -1879,38 +2024,111 @@ yourself."
   (map (lambda (x) (ly:music-property x 'pitch))
        (event-chord-notes event-chord)))
 
-(defmacro-public make-relative (pitches last-pitch music)
-  "The list of pitch-carrying variables in @var{pitches} is used as a
-sequence for creating relativable music from @var{music}.
-The variables in @var{pitches} are, when considered inside of
-@code{\\relative}, all considered to be specifications to the preceding
-variable.  The first variable is relative to the preceding musical
-context, and @var{last-pitch} specifies the pitch passed as relative
-base onto the following musical context."
+(define-public (event-chord-reduce music)
+  "Reduces event chords in @var{music} to their first note event,
+retaining only the chord articulations.  Returns the modified music."
+  (map-some-music
+   (lambda (m)
+     (and (music-is-of-type? m 'event-chord)
+          (let*-values (((notes arts) (partition
+                                       (lambda (mus)
+                                         (music-is-of-type? mus 'rhythmic-event))
+                                       (ly:music-property m 'elements)))
+                        ((dur) (ly:music-property m 'duration))
+                        ((full-arts) (append arts
+                                             (ly:music-property m 'articulations)))
+                        ((first-note) (and (pair? notes) (car notes))))
+            (cond (first-note
+                   (set! (ly:music-property first-note 'articulations)
+                         full-arts)
+                   first-note)
+                  ((ly:duration? dur)
+                   ;; A repeat chord. Produce an unpitched note.
+                   (make-music 'NoteEvent
+                               'duration dur
+                               'articulations full-arts))
+                  (else
+                   (ly:music-error m (_ "Missing duration"))
+                   (make-music 'NoteEvent
+                               'duration (ly:make-duration 2 0 0)
+                               'articulations full-arts))))))
+   music))
+
+
+(defmacro-public make-relative (variables reference music)
+  "The list of pitch or music variables in @var{variables} is used as
+a sequence for creating relativable music from @var{music}.
+
+When the constructed music is used outside of @code{\\relative}, it
+just reflects plugging in the @var{variables} into @var{music}.
+
+The action inside of @code{\\relative}, however, is determined by
+first relativizing the surrogate @var{reference} with the variables
+plugged in and then using the variables relativized as a side effect
+of relativizing @var{reference} for evaluating @var{music}.
+
+Since pitches don't have the object identity required for tracing the
+effect of the reference call, they are replaced @emph{only} for the
+purpose of evaluating @var{reference} with simple pitched note events.
+
+The surrogate @var{reference} expression has to be written with that
+in mind.  In addition, it must @emph{not} contain @emph{copies} of
+music that is supposed to be relativized but rather the
+@emph{originals}.  This @emph{includes} the pitch expressions.  As a
+rule, inside of @code{#@{@dots{}#@}} variables must @emph{only} be
+introduced using @code{#}, never via the copying construct @code{$}.
+The reference expression will usually just be a sequential or chord
+expression naming all variables in sequence, implying that following
+music will be relativized according to the resulting pitch of the last
+or first variable, respectively.
+
+Since the usual purpose is to create more complex music from general
+arguments and since music expression parts must not occur more than
+once, one @emph{does} generally need to use copying operators in the
+@emph{replacement} expression @var{music} when using an argument more
+than once there.  Using an argument more than once in @var{reference},
+in contrast, does not make sense.
+
+There is another fine point to mind: @var{music} must @emph{only}
+contain freshly constructed elements or copied constructs.  This will
+be the case anyway for regular LilyPond code inside of
+@code{#@{@dots{}#@}}, but any other elements (apart from the
+@var{variables} themselves which are already copied) must be created
+or copied as well.
+
+The reason is that it is usually permitted to change music in-place as
+long as one does a @var{ly:music-deep-copy} on it, and such a copy of
+the whole resulting expression will @emph{not} be able to copy
+variables/values inside of closures where the information for
+relativization is being stored.
+"
 
   ;; pitch and music generator might be stored instead in music
   ;; properties, and it might make sense to create a music type of its
   ;; own for this kind of construct rather than using
   ;; RelativeOctaveMusic
-  (define ((make-relative::to-relative-callback pitches p->m p->p) music pitch)
-    (let* ((chord (make-event-chord
-                   (map
-                    (lambda (p)
-                      (make-music 'NoteEvent
-                                  'pitch p))
-                    pitches)))
-           (pitchout (begin
-                       (ly:make-music-relative! chord pitch)
-                       (event-chord-pitches chord))))
-      (set! (ly:music-property music 'element)
-            (apply p->m pitchout))
-      (apply p->p pitchout)))
+  (define ((make-relative::to-relative-callback variables music-call ref-call)
+           music pitch)
+    (let* ((ref-vars (map (lambda (v)
+                            (if (ly:pitch? v)
+                                (make-music 'NoteEvent 'pitch v)
+                                (ly:music-deep-copy v)))
+                          variables))
+           (after-pitch (ly:make-music-relative! (apply ref-call ref-vars) pitch))
+           (actual-vars (map (lambda (v r)
+                               (if (ly:pitch? v)
+                                   (ly:music-property r 'pitch)
+                                   r))
+                             variables ref-vars))
+           (rel-music (apply music-call actual-vars)))
+      (set! (ly:music-property music 'element) rel-music)
+      after-pitch))
   `(make-music 'RelativeOctaveMusic
                'to-relative-callback
                (,make-relative::to-relative-callback
-                (list ,@pitches)
-                (lambda ,pitches ,music)
-                (lambda ,pitches ,last-pitch))
+                (list ,@variables)
+                (lambda ,variables ,music)
+                (lambda ,variables ,reference))
                'element ,music))
 
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
index 89d20b95509febf0f89ce443f0bd26282f9d5c29..776e618e37f1b6823c2f5524cef24fa86d817ebb 100644 (file)
@@ -1,6 +1,6 @@
 ;;;; This file is part of LilyPond, the GNU music typesetter.
 ;;;;
-;;;; Copyright (C) 1998--2012 Jan Nieuwenhuizen <janneke@gnu.org>
+;;;; Copyright (C) 1998--2014 Jan Nieuwenhuizen <janneke@gnu.org>
 ;;;; Han-Wen Nienhuys <hanwen@xs4all.nl>
 ;;;;
 ;;;; LilyPond is free software: you can redistribute it and/or modify
index 813211f060d175833ba0b0cb45e72ae16dbb4b22..7327f12beb5d5463222ce8006133ea2a9889250f 100644 (file)
@@ -1,6 +1,6 @@
 ;;;; This file is part of LilyPond, the GNU music typesetter.
 ;;;;
-;;;; Copyright (C) 1998--2012 Jan Nieuwenhuizen <janneke@gnu.org>
+;;;; Copyright (C) 1998--2014 Jan Nieuwenhuizen <janneke@gnu.org>
 ;;;;                 Han-Wen Nienhuys <hanwen@xs4all.nl>
 ;;;;
 ;;;; LilyPond is free software: you can redistribute it and/or modify
index cb9f598d3f0b71cc7ca261a77f17abd2c63df87e..1ddb276d31ea471211169efaa565f0980ba36041 100644 (file)
@@ -1,6 +1,6 @@
 ;;;; This file is part of LilyPond, the GNU music typesetter.
 ;;;;
-;;;; Copyright (C) 2002--2012 Jan Nieuwenhuizen <janneke@gnu.org>
+;;;; Copyright (C) 2002--2014 Jan Nieuwenhuizen <janneke@gnu.org>
 ;;;;                Patrick McCarty <pnorcks@gmail.com>
 ;;;;
 ;;;; LilyPond is free software: you can redistribute it and/or modify
   (string-append "<!-- " s " -->\n"))
 
 (define-public (entity entity string . attributes-alist)
-  (if (equal? string "")
+  (if (string-null? string)
       (apply eoc entity attributes-alist)
       (string-append
-       (apply eo (cons entity attributes-alist)) string (ec entity))))
+       (apply eo entity attributes-alist) string (ec entity))))
 
 (define (offset->point o)
   (ly:format "~4f ~4f" (car o) (- (cdr o))))
@@ -83,7 +83,7 @@
   (define (helper lst)
     (if (null? lst)
         '()
-        (cons (format #f "~S ~S" (car lst) (- (cadr lst)))
+        (cons (ly:format "~4f ~4f" (car lst) (- (cadr lst)))
               (helper (cddr lst)))))
 
   (string-join (helper lst) " "))
    '(fill . "currentColor")))
 
 (define (setcolor r g b)
-  (format #f "<g color=\"rgb(~a%, ~a%, ~a%)\">\n"
+  (ly:format "<g color=\"rgb(~4f%, ~4f%, ~4f%)\">\n"
           (* 100 r) (* 100 g) (* 100 b)))
 
 ;; rotate around given point
index f6bb29d701be0c331fadf51fe6b4410a570de06d..8fa1f0e10e9f7e0188ed172e7a678e93886893c5 100644 (file)
@@ -1,6 +1,6 @@
 ;;;; This file is part of LilyPond, the GNU music typesetter.
 ;;;;
-;;;; Copyright (C) 2006--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+;;;; Copyright (C) 2006--2014 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
 (define (page-translate-systems page)
   (for-each
 
-   (lambda (sys-off)
-     (let*
-         ((sys (car sys-off))
-          (off (cadr sys-off)))
+   (lambda (sys off)
+     (if (not (number? (ly:prob-property sys 'Y-offset)))
+         (ly:prob-set-property! sys 'Y-offset off)))
 
-       (if (not (number? (ly:prob-property sys 'Y-offset)))
-           (ly:prob-set-property! sys 'Y-offset off))))
-
-   (zip (page-property page 'lines)
-        (page-property page 'configuration))))
+   (page-property page 'lines)
+   (page-property page 'configuration)))
 
 (define (annotate-top-space first-system layout header-stencil stencil)
   (let* ((top-margin (ly:output-def-lookup layout 'top-margin))
index e75440b968256bc77157f739178568f424dbb78c..97d70d75b3571af7ccd49c6e8df53dcd06516dcc 100644 (file)
@@ -1,6 +1,6 @@
 ;;;; This file is part of LilyPond, the GNU music typesetter.
 ;;;;
-;;;; Copyright (C) 2006--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+;;;; Copyright (C) 2006--2014 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
index 454371fa34b935ee37ba28fc9af9c15c049c2ff4..8f6839ab35dbf92c64598061c801811ec3374fb3 100644 (file)
@@ -1,6 +1,6 @@
 ;;;; This file is part of LilyPond, the GNU music typesetter.
 ;;;;
-;;;; Copyright (C) 2004--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+;;;; Copyright (C) 2004--2014 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
index 6ba1261ca726846bf4093a9f11fc748d21e66766..6d45dd5376f4ed13c3cbde71518818797ffd3ad1 100644 (file)
@@ -1,6 +1,6 @@
 ;;;; This file is part of LilyPond, the GNU music typesetter.
 ;;;;
-;;;; Copyright (C) 2004--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+;;;; Copyright (C) 2004--2014 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
     ("violin" . ("clefs.G" -2 0))
     ("G" . ("clefs.G" -2 0))
     ("G2" . ("clefs.G" -2 0))
+    ("GG" . ("clefs.GG" -2 0))
+    ("tenorG" . ("clefs.tenorG" -2 0))
     ("french" . ("clefs.G" -4 0))
     ("soprano" . ("clefs.C" -4 0))
     ("mezzosoprano" . ("clefs.C" -2 0))
     ("alto" . ("clefs.C" 0 0))
     ("C" . ("clefs.C" 0 0))
+    ("varC" . ("clefs.varC" 0 0))
+    ("altovarC" . ("clefs.varC" 0 0))
     ("tenor" . ("clefs.C" 2 0))
+    ("tenorvarC" . ("clefs.varC" 2 0))
     ("baritone" . ("clefs.C" 4 0))
+    ("baritonevarC" . ("clefs.varC" 4 0))
     ("varbaritone" . ("clefs.F" 0 0))
+    ("baritonevarF" . ("clefs.F" 0 0))
     ("bass" . ("clefs.F" 2 0))
     ("F" . ("clefs.F" 2 0))
     ("subbass" . ("clefs.F" 4 0))
     ("percussion" . ("clefs.percussion" 0 0))
+    ("varpercussion" . ("clefs.varpercussion" 0 0))
     ("tab" . ("clefs.tab" 0 0))
 
     ;; should move mensural stuff to separate file?
 ;; that symbol"
 (define c0-pitch-alist
   '(("clefs.G" . -4)
+    ("clefs.GG" . 3)
+    ("clefs.tenorG" . 3)
     ("clefs.C" . 0)
+    ("clefs.varC" . 0)
     ("clefs.F" . 4)
     ("clefs.percussion" . 0)
+    ("clefs.varpercussion" . 0)
     ("clefs.tab" . 0 )
     ("clefs.vaticana.do" . 0)
     ("clefs.vaticana.fa" . 4)
index 7d72a25e8769959e422b591ee06e3603d9eac906..96b7ef2885e206b8bc396093991796e1f9c7c408 100644 (file)
@@ -1,6 +1,6 @@
 ;;;; This file is part of LilyPond, the GNU music typesetter.
 ;;;;
-;;;; Copyright (C) 2004--2012  Nicolas Sceaux  <nicolas.sceaux@free.fr>
+;;;; Copyright (C) 2004--2014  Nicolas Sceaux  <nicolas.sceaux@free.fr>
 ;;;;           Jan Nieuwenhuizen <janneke@gnu.org>
 ;;;;
 ;;;; LilyPond is free software: you can redistribute it and/or modify
index 4e3e4b66031c178316ecb7a340fe0f32600842b6..dd3152cbb7125bfd025e2a85cefdd95f4fa73b5f 100644 (file)
@@ -1,6 +1,6 @@
 ;;;; This file is part of LilyPond, the GNU music typesetter.
 ;;;;
-;;;; Copyright (C) 2004--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+;;;; Copyright (C) 2004--2014 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
@@ -198,6 +198,13 @@ Voice-state objects
 
   (helper 0 '()))
 
+(define recording-group-functions
+  ;;Selected parts from @var{toplevel-music-functions} not requiring @code{parser}.
+  (list
+   (lambda (music) (expand-repeat-chords! '(rhythmic-event) music))
+   expand-repeat-notes!))
+
+
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 (define-public (recording-group-emulate music odef)
   "Interpret @var{music} according to @var{odef}, but store all events
@@ -240,7 +247,10 @@ LilyPond version 2.8 and earlier."
     (ly:add-listener new-context-listener
                      (ly:context-events-below global) 'AnnounceNewContext)
     (ly:add-listener mom-listener (ly:context-event-source global) 'Prepare)
-    (ly:interpret-music-expression (make-non-relative-music music) global)
+    (ly:interpret-music-expression
+     (make-non-relative-music
+      (fold (lambda (x m) (x m)) music recording-group-functions))
+     global)
     context-list))
 
 (define-public (make-part-combine-music parser music-list direction)
index 5140ae6e91093e0a7f8a92ba94a76b7bcba8330e..ed72e252b516c75aa6a1eca7406e5f7257094214 100644 (file)
@@ -1,6 +1,6 @@
 ;;;; This file is part of LilyPond, the GNU music typesetter.
 ;;;;
-;;;; Copyright (C) 2008--2012 Carl D. Sorensen <c_sorensen@byu.edu>
+;;;; Copyright (C) 2008--2014 Carl D. 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
index 948e56e145a5a4ea7a12f5e988c49cc2ef848afd..1b3df3f1e62ef8382ff16313ca8c34c50a92394f 100644 (file)
@@ -1,6 +1,6 @@
 ;;;; This file is part of LilyPond, the GNU music typesetter.
 ;;;;
-;;;; Copyright (C) 2005--2012 Jan Nieuwenhuizen <janneke@gnu.org>
+;;;; Copyright (C) 2005--2014 Jan Nieuwenhuizen <janneke@gnu.org>
 ;;;;
 ;;;; LilyPond is free software: you can redistribute it and/or modify
 ;;;; it under the terms of the GNU General Public License as published by
index 25209e5a0b698e412ac53220851b0f12d7a6adb0..5e4c185010a3a5a3f1524a4b8bae84c180cef500 100644 (file)
@@ -1,6 +1,6 @@
 ;;;; This file is part of LilyPond, the GNU music typesetter.
 ;;;;
-;;;; Copyright (C) 2004--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+;;;; Copyright (C) 2004--2014 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
index 057639d7faba03c56158ad864d5f41ff4f061dd8..0c699fbbbc1a92f8530940e4604af73725760bf8 100644 (file)
@@ -1,6 +1,6 @@
 ;;;; This file is part of LilyPond, the GNU music typesetter.
 ;;;;
-;;;; Copyright (C) 1998--2012 Jan Nieuwenhuizen <janneke@gnu.org>
+;;;; Copyright (C) 1998--2014 Jan Nieuwenhuizen <janneke@gnu.org>
 ;;;; Han-Wen Nienhuys <hanwen@xs4all.nl>
 ;;;;
 ;;;; LilyPond is free software: you can redistribute it and/or modify
index 6564d5f2d4ce6b32bf18f1769e3d93be4c80b2a3..6cfecbe89c791720d39581b28be827ea2a17decd 100644 (file)
@@ -1,6 +1,6 @@
 ;;;; This file is part of LilyPond, the GNU music typesetter.
 ;;;;
-;;;; Copyright (C) 2000--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+;;;; Copyright (C) 2000--2014 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
index 0889414cbc0af970a8bb0e38f67be41f419f4de1..d09b07e64b45aa7a4795e474f18dfb327d47b4ee 100644 (file)
@@ -1,6 +1,6 @@
 ;;;; This file is part of LilyPond, the GNU music typesetter.
 ;;;;
-;;;; Copyright (C) 2013 Mike Solomon <mike@mikesolomon.org>
+;;;; Copyright (C) 2013--2014 Mike Solomon <mike@mikesolomon.org>
 ;;;;
 ;;;; LilyPond is free software: you can redistribute it and/or modify
 ;;;; it under the terms of the GNU General Public License as published by
index ee44d43878da2c23aa8a71312f3b4eb7e50bbac5..c66988674dfbf65eb2bacaac5fa805250b1d52e8 100644 (file)
@@ -1,6 +1,6 @@
 ;;;; This file is part of LilyPond, the GNU music typesetter.
 ;;;;
-;;;; Copyright (C) 1998--2012 Jan Nieuwenhuizen <janneke@gnu.org>
+;;;; Copyright (C) 1998--2014 Jan Nieuwenhuizen <janneke@gnu.org>
 ;;;;                 Han-Wen Nienhuys <hanwen@xs4all.nl>
 ;;;;
 ;;;; LilyPond is free software: you can redistribute it and/or modify
index a457087b15913aaced436bf96942c702853e7bd3..db5ff186c37d659a863e9cb0d77e65a0d764c61d 100644 (file)
@@ -1,6 +1,6 @@
 ;;;; This file is part of LilyPond, the GNU music typesetter.
 ;;;;
-;;;; Copyright (C) 2003--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+;;;; Copyright (C) 2003--2014 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
@@ -159,7 +159,7 @@ the more angular the shape of the parenthesis."
       upper-end-point
       ;; Step 1: move to lower end point.
       lower-end-point)
-     line-width
+     (* 2 half-thickness)
      (interval-widen x-extent (/ line-width 2))
      (interval-widen y-extent (/ line-width 2)))))
 
@@ -434,59 +434,120 @@ then reduce using @var{min-max}:
              (append (list origin)
                      (reverse (cdr (reverse pointlist)))) pointlist))))
 
-(define-public (make-connected-path-stencil pointlist thickness
-                                            x-scale y-scale connect fill)
-  "Make a connected path described by the list @var{pointlist}, with
-thickness @var{thickness}, and scaled by @var{x-scale} in the X direction
-and @var{y-scale} in the Y direction.  @var{connect} and @var{fill} are
-boolean arguments that specify if the path should be connected or filled,
-respectively."
-
-  ;; paths using this routine are designed to begin at point '(0 . 0)
-  (let* ((origin (list 0 0))
-         (boundlist (path-min-max origin pointlist))
-         ;; modify pointlist to scale the coordinates
-         (path (map (lambda (x)
-                      (apply
-                       (if (= 6 (length x))
-                           (lambda (x1 x2 x3 x4 x5 x6)
-                             (list 'curveto
-                                   (* x1 x-scale)
-                                   (* x2 y-scale)
-                                   (* x3 x-scale)
-                                   (* x4 y-scale)
-                                   (* x5 x-scale)
-                                   (* x6 y-scale)))
-                           (lambda (x1 x2)
-                             (list 'lineto
-                                   (* x1 x-scale)
-                                   (* x2 y-scale))))
-                       x))
-                    pointlist))
-         ;; a path must begin with a `moveto'
-         (prepend-origin (cons (cons 'moveto origin) path))
-         ;; if this path is connected, add closepath to the end
-         (final-path (if connect
-                         (append prepend-origin (list '(closepath)))
-                         prepend-origin))
-         (command-list (concatenate final-path)))
+(define-public (make-path-stencil path thickness x-scale y-scale fill)
+  "Make a stencil based on the path described by the list @var{path},
+with thickness @var{thickness}, and scaled by @var{x-scale} in the X
+direction and @var{y-scale} in the Y direction.  @var{fill} is a boolean
+argument that specifies if the path should be filled.  Valid path
+commands are: moveto rmoveto lineto rlineto curveto rcurveto closepath,
+and their standard SVG single letter equivalents: M m L l C c Z z."
+
+  (define (convert-path path origin previous-point)
+    "Recursive function to standardize command names and
+convert any relative path expressions (in @var{path}) to absolute
+values.  Returns a list of lists.  @var{origin} is a pair of x and y
+coordinates for the origin point of the path (used for closepath and
+reset by moveto commands).  @var{previous-point} is a pair of x and y
+coordinates for the previous point in the path."
+    (if (pair? path)
+        (let*
+         ((head-raw (car path))
+          (rest (cdr path))
+          (head (cond
+                 ((memq head-raw '(rmoveto M m)) 'moveto)
+                 ((memq head-raw '(rlineto L l)) 'lineto)
+                 ((memq head-raw '(rcurveto C c)) 'curveto)
+                 ((memq head-raw '(Z z)) 'closepath)
+                 (else head-raw)))
+          (arity (cond
+                  ((memq head '(lineto moveto)) 2)
+                  ((eq? head 'curveto) 6)
+                  (else 0)))
+          (coordinates-raw (take rest arity))
+          (absolute? (if (memq head-raw
+                           '(rmoveto m rlineto l rcurveto c)) #f #t))
+          (coordinates (if absolute?
+                           coordinates-raw
+                           ;; convert relative coordinates to absolute by
+                           ;; adding them to previous point values
+                           (map (lambda (c n)
+                                  (if (even? n)
+                                      (+ c (car previous-point))
+                                      (+ c (cdr previous-point))))
+                             coordinates-raw
+                             (iota arity))))
+          (new-point (if (eq? head 'closepath)
+                         origin
+                         (cons
+                          (list-ref coordinates (- arity 2))
+                          (list-ref coordinates (- arity 1)))))
+          (new-origin (if (eq? head 'moveto)
+                          new-point
+                          origin)))
+         (cons (cons head coordinates)
+           (convert-path (drop rest arity) new-origin new-point)))
+        '()))
+
+  (let* ((path-absolute (convert-path path (cons 0 0) (cons 0 0)))
+         ;; scale coordinates
+         (path-scaled (if (and (= 1 x-scale) (= 1 y-scale))
+                          path-absolute
+                          (map (lambda (path-unit)
+                                 (map (lambda (c n)
+                                        (cond
+                                         ((= 0 n) c)
+                                         ((odd? n) (* c x-scale))
+                                         (else (* c y-scale))))
+                                   path-unit
+                                   (iota (length path-unit))))
+                            path-absolute)))
+         ;; a path must begin with a 'moveto'
+         (path-final (if (eq? 'moveto (car (car path-scaled)))
+                         path-scaled
+                         (append (list (list 'moveto 0 0)) path-scaled)))
+         ;; remove all commands in order to calculate bounds
+         (path-headless (map cdr (delete (list 'closepath) path-final)))
+         (bound-list (path-min-max
+                      (car path-headless)
+                      (cdr path-headless))))
     (ly:make-stencil
      `(path ,thickness
-            `(,@',command-list)
-            'round
-            'round
-            ,(if fill #t #f))
+        `(,@',(concatenate path-final))
+        'round
+        'round
+        ,(if fill #t #f))
      (coord-translate
       ((if (< x-scale 0) reverse-interval identity)
-       (cons (* x-scale (list-ref boundlist 0))
-             (* x-scale (list-ref boundlist 1))))
+       (cons
+        (list-ref bound-list 0)
+        (list-ref bound-list 1)))
       `(,(/ thickness -2) . ,(/ thickness 2)))
      (coord-translate
       ((if (< y-scale 0) reverse-interval identity)
-       (cons (* y-scale (list-ref boundlist 2))
-             (* y-scale (list-ref boundlist 3))))
+       (cons
+        (list-ref bound-list 2)
+        (list-ref bound-list 3)))
       `(,(/ thickness -2) . ,(/ thickness 2))))))
 
+(define-public (make-connected-path-stencil pointlist thickness
+                                            x-scale y-scale connect fill)
+  "Make a connected path described by the list @var{pointlist}, beginning
+at point '(0 . 0), with thickness @var{thickness}, and scaled by
+@var{x-scale} in the X direction and @var{y-scale} in the Y direction.
+@var{connect} and @var{fill} are boolean arguments that specify if the
+path should be connected or filled, respectively."
+  (make-path-stencil
+   (concatenate
+    (append
+     (map (lambda (path-unit)
+            (case (length path-unit)
+              ((2) (append (list 'lineto) path-unit))
+              ((6) (append (list 'curveto) path-unit))))
+       pointlist)
+     ;; if this path is connected, add closepath to the end
+     (if connect (list '(closepath)) '())))
+   thickness x-scale y-scale fill))
+
 (define-public (make-ellipse-stencil x-radius y-radius thickness fill)
   "Make an ellipse of x@tie{}radius @var{x-radius}, y@tie{}radius
 @code{y-radius}, and thickness @var{thickness} with fill defined by
index e32d712e19ae97986b84422a2e99b2fa8dd5fe22..668bf2faa3a1b390bc13f2552859fac18cbf1b9b 100644 (file)
@@ -1,6 +1,6 @@
 ;;;; This file is part of LilyPond, the GNU music typesetter.
 ;;;;
-;;;; Copyright (C) 2009--2012 Marc Hohl <marc@hohlart.de>
+;;;; Copyright (C) 2009--2014 Marc Hohl <marc@hohlart.de>
 ;;;;
 ;;;; LilyPond is free software: you can redistribute it and/or modify
 ;;;; it under the terms of the GNU General Public License as published by
   (let ((style (ly:grob-property grob 'style)))
 
     (case style
-      ((cross) "2cross"))))
+      ((cross) "2cross")
+      ((slash) "2slash")
+      (else #f))))
 
 ;; ensure we only call note head callback when
-;; 'style = 'cross
+;; style is set to a known value
 (define-public (tab-note-head::whiteout-if-style-set grob)
   (let ((style (ly:grob-property grob 'style)))
 
-    (if (and (symbol? style)
-             (eq? style 'cross))
-        (stencil-whiteout (ly:note-head::print grob))
-        (tab-note-head::print grob))))
+    (case style
+      ((cross slash) (stencil-whiteout (ly:note-head::print grob)))
+      (else (tab-note-head::print grob)))))
 
 ;; definitions for the "moderntab" clef:
 ;; the "moderntab" clef will be added to the list of known clefs,
index 14541059120cca6c3b574717e4cfab1eff135fb4..2b993cc7b30698ecac26f4836db573622cd29e75 100644 (file)
@@ -1,6 +1,6 @@
 ;;;; This file is part of LilyPond, the GNU music typesetter.
 ;;;;
-;;;; Copyright (C) 2011--2012 Bertrand Bordage <bordage.bertrand@gmail.com>
+;;;; Copyright (C) 2011--2014 Bertrand Bordage <bordage.bertrand@gmail.com>
 ;;;;
 ;;;; LilyPond is free software: you can redistribute it and/or modify
 ;;;; it under the terms of the GNU General Public License as published by
index 82e22fe59197e97ae601849beccbcafa7e495626..902a68706726d28944d80fc27a262866124261db 100644 (file)
@@ -1,6 +1,6 @@
 ;;;; This file is part of LilyPond, the GNU music typesetter.
 ;;;;
-;;;; Copyright (C) 2009--2012 Carl Sorensen <c_sorensen@byu.edu>
+;;;; Copyright (C) 2009--2014 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
@@ -26,7 +26,7 @@
 ;;; time signature.  Each default-properties set can contain the
 ;;; following entries:
 ;;;
-;;;   (baseMoment . (numerator . denominator))
+;;;   (baseMoment . (/ numerator denominator))
 ;;;   (beatStructure . structure-list)
 ;;;   (beamExceptions . (alist of beam exceptions that don't follow beats))
 ;;;
@@ -37,7 +37,7 @@
 ;;;
 ;;;   grouping-rules is an alist containing (beam-type . grouping-list) entries
 ;;;
-;;;     beam-type is (numerator . denominator)
+;;;     beam-type is the length as a rational number
 ;;;     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,
 ;;;
 ;;;     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))
+;;;     (1/8 . (3 3 2))
 ;;;     will cause all primary beams to be broken at 3/8, 6/8, and 8/8.
 ;;;
-;;;     ((1 . 32) . (16 8 4 4))
+;;;     (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.
 ;;;
+;;;     Tuplets are referenced using their actual (scaled) length, so
+;;;     a 3/2 tuplet of the 1/8 kind would get exceptions looked up
+;;;     under 1/12.
+;;;
 ;;; 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)
+;;;   baseMoment gets the value (/ 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.
-;;;
-;;;       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))))))))
+     ((beamExceptions . ((end . ((1/32 . (8 8 8 8))))))))
 
     ;; in 2/4, 2/8 and 2/16 time:
     ;;   use defaults, so no entries are necessary
@@ -80,7 +79,7 @@
     ;;   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))))))))
+     ((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
     ;;   in order to avoid beaming every beam type for the entire measure, we set
     ;;   triplets back to every beat.
     ((3 . 4) .
-     ((beamExceptions . ((end . (((1 . 8) . (6))            ;1/8 note whole measure
-                                 ((1 . 12) . (3 3 3)))))))) ;Anything shorter by beat
+     ((beamExceptions . ((end . ((1/8 . (6))            ;1/8 note whole measure
+                                 (1/12 . (3 3 3)))))))) ;Anything shorter by beat
 
     ;; in 3 8  time:
     ;;   beam entire measure together
-    ((3 . 8) . ((beamExceptions . ((end . (((1 . 8) . (3))))))))
+    ((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))))))))
+     ((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
     ;;         ly/engraver-init.ly where the default time signature is set
     ;;         are set
     ((4 . 4) .
-     ((beamExceptions . ((end . (((1 . 8) . (4 4))  ; 1/8 notes half measure
-                                 ((1 . 12) . (3 3 3 3)))))))) ;Anything shorter by beat
+     ((beamExceptions . ((end . ((1/8 . (4 4))  ; 1/8 notes half measure
+                                 (1/12 . (3 3 3 3)))))))) ;Anything shorter by beat
 
     ;; in 4/8 time:
     ;;   combine beats 1 and 2, so beam in 2
     ;; 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))))))))
+     ((beamExceptions . ((end .  ((1/16 . (4 4 4 4 4 4))))))))
 
     ;; in 6 8 time:
     ;;   use defaults, so no entries 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))))))))
+     ((beamExceptions . ((end . ((1/32 . (8 8 8 8 8 8 8 8))))))))
 
     ;; in 9 8 time
     ;;   use defaults, so no entries 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))))))))
+     ((beamExceptions . ((end . ((1/32 . (8 8 8 8 8 8 8 8 8 8 8 8))))))))
 
     ;; in 12 8 time:
     ;;   use defaults, so no entries necessary
index b5f8b1bb8a64218a5d3e4dbbdb186a5a1100d986..8e6ae7b7bb703b98533df4b6796eee23c56a9ce4 100644 (file)
@@ -1,6 +1,6 @@
 ;;;; This file is part of LilyPond, the GNU music typesetter.
 ;;;;
-;;;; Copyright (C) 2004--2012 Jan Nieuwenhuizen <janneke@gnu.org>
+;;;; Copyright (C) 2004--2014 Jan Nieuwenhuizen <janneke@gnu.org>
 ;;;;          Han-Wen Nienhuys <hanwen@xs4all.nl>
 ;;;;
 ;;;; LilyPond is free software: you can redistribute it and/or modify
index 2407fe3766239939a0c33d162eae75c7900a472e..0e21d7eacf9947ce48f151dcfbdf8f3a666c6b71 100644 (file)
@@ -1,6 +1,6 @@
 ;;;; This file is part of LilyPond, the GNU music typesetter.
 ;;;;
-;;;; Copyright (C) 2003--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+;;;; Copyright (C) 2003--2014 Han-Wen Nienhuys <hanwen@xs4all.nl>
 ;;;;                 Jan Nieuwenhuizen <janneke@gnu.org>
 ;;;;
 ;;;; LilyPond is free software: you can redistribute it and/or modify
index fa3426ff0a42658aeb5a0d1640fe24234096149b..4479d3ae1b24f51e87671fccdc99cf100f889715 100644 (file)
@@ -1,6 +1,6 @@
 ;;;; This file is part of LilyPond, the GNU music typesetter.
 ;;;;
-;;;; (c) 1998--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+;;;; (c) 1998--2014 Han-Wen Nienhuys <hanwen@xs4all.nl>
 ;;;;                 Jan Nieuwenhuizen <janneke@gnu.org>
 ;;;;
 ;;;; LilyPond is free software: you can redistribute it and/or modify
index f3d65b90c2747ca6b7f1c09525ab64546b1bca2f..5e7221c6630a9e320b003d2d550ec970539aae63 100644 (file)
@@ -1,6 +1,6 @@
 ;;;; This file is part of LilyPond, the GNU music typesetter.
 ;;;;
-;;;; Copyright (C) 2005--2012 Bernard Hurley <bernard@fong-hurley.org.uk>
+;;;; Copyright (C) 2005--2014 Bernard Hurley <bernard@fong-hurley.org.uk>
 ;;;;
 ;;;; LilyPond is free software: you can redistribute it and/or modify
 ;;;; it under the terms of the GNU General Public License as published by
index 6987ee1f2f32cd49b765a07fef19f681dbab4c2a..41334b36d5f8db4e591045603c9cd62b627de779 100755 (executable)
@@ -450,7 +450,7 @@ typedef struct _t_ligature
 typedef std::map < AFM_Ligature const *, int > Bar;
 
  /**
- Copyright (C) 1997--2012 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+ Copyright (C) 1997--2014 Han-Wen Nienhuys <hanwen@cs.uu.nl>
  */
  
 /*      ||
index a734269ed8a89ef97abac31e5bb728beab6944e2..5e8dc3a0c9999c4eccd2727bcb25e7935a76abee 100755 (executable)
@@ -1,7 +1,7 @@
 #!/usr/bin/wish
 
 # GUI interface for common LilyPond git repository commands
-# Copyright 2009--2012 by Johannes Schindelin and Carl Sorensen
+# Copyright 2009--2014 by Johannes Schindelin and Carl Sorensen
 #
 package require Tk
 
index b5afdfd6393706ae63d154ded570d2dcc696ca6c..7f40b63fb83bd3aa5f8e2d5c2ab1a1813fd1f135 100755 (executable)
@@ -13,10 +13,8 @@ if [ -z $BUILD_DIR ]; then
 fi
 
 ### make sure convert-ly is up-to-date
-touch python/convertrules.py
-touch scripts/convert-ly.py
 cd $BUILD_DIR
-make
+make pythonmodules
 cd $TOP_SRC_DIR
 
 ### update manuals
index dafb50c0ef4392a7fa13f1aae527ce72acd17be2..0bd4168230b2b76ea31b95850ab9edf64a8a67f0 100644 (file)
@@ -6,25 +6,26 @@ import os
 
 (options, files) = \
  getopt.getopt (sys.argv[1:],
-        '',
-        ['dir='])
-
+                '',
+                ['dir=', 'design-size='])
 
+design_size = 0
 outdir = ''
 for opt in options:
     o = opt[0]
     a = opt[1]
     if o == '--dir':
         outdir = a
+    elif o == '--design-size':
+        design_size = int(a)
     else:
         print o
         raise getopt.error
 
-# Ugh
-for design_size in [11,13,14,16,18,20,23,26]:
-    name = 'Emmentaler'
-    filename = name.lower ()
-    script = '''#!@FONTFORGE@
+        
+name = 'Emmentaler'
+filename = name.lower ()
+script = '''#!@FONTFORGE@
 
 New();
 
@@ -80,29 +81,23 @@ Generate("%(filename)s-%(design_size)d.svg");
 Generate("%(filename)s-%(design_size)d.woff");
 ''' % vars()
 
-    basename = '%s-%d' % (filename, design_size)
-    path = os.path.join (outdir, basename + '.pe')
-    open (path, 'w').write (script)
-
-    subfonts = ['feta%(design_size)d',
-          'parmesan%(design_size)d',
-          'feta-alphabet%(design_size)d']
+basename = '%s-%d' % (filename, design_size)
+path = os.path.join (outdir, basename + '.genpe')
+open (path, 'w').write (script)
 
-    ns = []
-    for s in subfonts:
-        ns.append ('%s' % (s % vars()))
+subfonts = ['feta%(design_size)d',
+            'feta-noteheads%(design_size)d',
+            'feta-flags%(design_size)d',
+            'parmesan%(design_size)d',
+            'parmesan-noteheads%(design_size)d',
+            'feta-alphabet%(design_size)d']
 
-    subfonts_str = ' '.join (ns)
+ns = []
+for s in subfonts:
+    ns.append ('%s' % (s % vars()))
 
-    open (os.path.join (outdir, '%(filename)s-%(design_size)d.subfonts' % vars()), 'w').write (subfonts_str)
+subfonts_str = ' '.join (ns)
 
-    path = os.path.join (outdir, '%s-%d.dep' % (filename, design_size))
-
-    deps = r'''%(filename)s-%(design_size)d.otf: $(outdir)/feta%(design_size)d.pfa \
- $(outdir)/parmesan%(design_size)d.pfa  \
- $(outdir)/feta-alphabet%(design_size)d.pfa feta%(design_size)d.otf-table \
- $(outdir)/feta-alphabet%(design_size)d.pfa feta%(design_size)d.otf-gtable
-''' % vars()
-    open (path, 'w').write (deps)
+open (os.path.join (outdir, '%(filename)s-%(design_size)d.subfonts' % vars()), 'w').write (subfonts_str)
 
-    open (os.path.join (outdir, basename + '.fontname'), 'w').write ("%s-%d" % (name, design_size))
+open (os.path.join (outdir, basename + '.fontname'), 'w').write ("%s-%d" % (name, design_size))
index 764c113f7634f4cbbea86dc6e74ba3f6901afe3d..222551f06fcd217c3951c28a7cc2b0f96995342c 100644 (file)
@@ -2,7 +2,7 @@
 
 # This file is part of LilyPond, the GNU music typesetter.
 #
-# Copyright (C) 2009--2012 Jan Nieuwenhuizen <janneke@gnu.org>
+# Copyright (C) 2009--2014 Jan Nieuwenhuizen <janneke@gnu.org>
 #
 # LilyPond is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
index f191d0aa8fcc3a0941e01f8c4f829d5cd90a8e8f..6d86b6be7e2c93ec7d7acfe2fa73d14cd542e3e2 100644 (file)
@@ -4,7 +4,7 @@
 
 # This file is part of LilyPond, the GNU music typesetter.
 #
-# Copyright (C) 1997--2012 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+# Copyright (C) 1997--2014 Han-Wen Nienhuys <hanwen@cs.uu.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
@@ -264,6 +264,6 @@ for filenm in files:
     open (global_lisp_nm, 'w').write (global_lisp_table (g))
     if depfile_nm:
         open (depfile_nm, 'wb').write (get_deps (deps,
-                                                 [base + '.log', base + '.dvi', base + '.pfa',
+                                                 [base + '.log', base + '.dvi',
                                                   depfile_nm,
                                                   base + '.pfb']))
index 72e5825f04842d9587f9bcf6f87d35ebb8df9dcb..11d5163583dd6cccdbbe1f52105492b418747037 100755 (executable)
@@ -1,7 +1,7 @@
 #! /usr/bin/python
 
 '''
-    Copyright (C) 2008--2012 Jan Nieuwenhuizen <janneke@gnu.org>
+    Copyright (C) 2008--2014 Jan Nieuwenhuizen <janneke@gnu.org>
 
     This program is free software; you can redistribute it and/or
     modify it under the terms of the GNU General Public License as
index 641d763713c979c06dfe0621e19959303765403d..21c0b1bcafa087b2c42ae044c88a7c511f33e9a7 100644 (file)
@@ -5,7 +5,7 @@
 
 # This file is part of LilyPond, the GNU music typesetter.
 #
-# Copyright (C) 1998--2012  Han-Wen Nienhuys <hanwen@xs4all.nl>
+# Copyright (C) 1998--2014  Han-Wen Nienhuys <hanwen@xs4all.nl>
 #                 Jan Nieuwenhuizen <janneke@gnu.org>
 #
 # LilyPond is free software: you can redistribute it and/or modify
@@ -76,7 +76,7 @@ def warranty ():
 
 %s
 %s
-''' % ( _ ('Copyright (c) %s by') % '2001--2012',
+''' % ( _ ('Copyright (c) %s by') % '2001--2014',
         ' '.join (authors),
         _ ('Distributed under terms of the GNU General Public License.'),
         _ ('It comes with NO WARRANTY.')))
@@ -292,17 +292,18 @@ def do_one_file (infile_name):
             # Note that last_change can be set even if the result is
             # the same if two conversion rules cancelled out
             if result == input:
-                # check the y in x.y.z  (minor version number)
-                previous_stable = (last[0], 2*(last[1]/2), 0)
-                if ((last[0:2] != from_version[0:2]) and
-                    (previous_stable > from_version)):
-                    # previous stable version
-                    last = previous_stable
-                else:
-                    # make no (actual) change to the version number
-                    last = from_version
+                # make no (actual) change to the version number
+                last = from_version
             else:
                 last = last_change
+                # If the last update was to an unstable version
+                # number, and the final update target is no longer in
+                # the same unstable series, we update to the stable
+                # series following the unstable version.
+                if last[1]%2: # unstable
+                    next_stable = (last[0], last[1]+1, 0)
+                    if next_stable <= to_version:
+                        last = next_stable
 
         newversion = r'\version "%s"' % tup_to_str (last)
         if lilypond_version_re.search (result):
index bb61108383b95b7e1fe57104ccc550af9d175114..171f5b226cc48c444e255633b4feba086d6fcc67 100644 (file)
@@ -1188,7 +1188,7 @@ def warranty ():
 
 %s
 %s
-''' % ( _ ('Copyright (c) %s by') % '2001--2012',
+''' % ( _ ('Copyright (c) %s by') % '2001--2014',
         '\n  '.join (authors),
         _ ('Distributed under terms of the GNU General Public License.'),
         _ ('It comes with NO WARRANTY.')))
index 498682ef26bad2902abc22f1e4e4090e200567cd..7198b48753bdfa31de2b94dc57b7bd8a23f3ea52 100644 (file)
@@ -1,6 +1,6 @@
 #!@TARGET_PYTHON@
 
-# Copyright (C) 2006--2012 Brailcom, o.p.s.
+# Copyright (C) 2006--2014 Brailcom, o.p.s.
 #
 # Author: Milan Zamazal <pdm@brailcom.org>
 #
index 8dea1fc1a795623d446582a690a4c625f9918f18..9cdd14742b76e1dda97211f351f818fdc8d15921 100644 (file)
@@ -112,7 +112,7 @@ def warranty ():
 
 %s
 %s
-''' % ( _ ('Copyright (c) %s by') % '2001--2012',
+''' % ( _ ('Copyright (c) %s by') % '2001--2014',
         '\n  '.join (authors),
         _ ("Distributed under terms of the GNU General Public License."),
         _ ("It comes with NO WARRANTY.")))
index 49800c067fb3f01f9b17117b547b118603fb646e..ff3efbdf26ac6a1e6de81490f457d3d9105d2d01 100644 (file)
@@ -2,7 +2,7 @@
 !#
 ;;;; lilypond-invoke-editor.scm -- Invoke an editor in file:line:column mode
 
-;;;; Copyright (C) 2005--2012 Jan Nieuwenhuizen <janneke@gnu.org>
+;;;; Copyright (C) 2005--2014 Jan Nieuwenhuizen <janneke@gnu.org>
 
 ;;;; This file is part of LilyPond, the GNU music typesetter.
 ;;;;
index 70e2df2a9b46a281d81797550e67e98654c74c17..047937b9c502bc03956ce7b6b6c7ad635e96be09 100644 (file)
@@ -1,6 +1,6 @@
 #!@TARGET_PYTHON@
 
-# Copyright (c) 2006--2012 Brailcom, o.p.s.
+# Copyright (c) 2006--2014 Brailcom, o.p.s.
 #
 # Author: Milan Zamazal <pdm@brailcom.org>
 #
index bf9f09f26e7f6b64a3549c4cd34bbd32974d2e1f..79351bbfa2c1817b8fde62871471b18afff34bce 100644 (file)
@@ -4,7 +4,7 @@
 
 # This file is part of LilyPond, the GNU music typesetter.
 #
-# Copyright (C) 1998--2012  Han-Wen Nienhuys <hanwen@xs4all.nl>
+# Copyright (C) 1998--2014  Han-Wen Nienhuys <hanwen@xs4all.nl>
 #                           Jan Nieuwenhuizen <janneke@gnu.org>
 #
 # LilyPond is free software: you can redistribute it and/or modify
@@ -78,7 +78,7 @@ def warranty ():
 
 %s
 %s
-''' % ( _ ('Copyright (c) %s by') % '1998--2012',
+''' % ( _ ('Copyright (c) %s by') % '1998--2014',
         '\n  '.join (authors),
         _ ('Distributed under terms of the GNU General Public License.'),
         _ ('It comes with NO WARRANTY.')))
index ec827b5d3992ebabe4648ea973aff6d1ac8e1fac..e6a6807440a30a3a630e7d57001f7d87af226966 100644 (file)
@@ -2573,7 +2573,7 @@ If the given filename is -, musicxml2ly reads from the command line.
 
     p.version = ('''%prog (LilyPond) @TOPLEVEL_VERSION@\n\n'''
 +
-_ ("""Copyright (c) 2005--2012 by
+_ ("""Copyright (c) 2005--2014 by
     Han-Wen Nienhuys <hanwen@xs4all.nl>,
     Jan Nieuwenhuizen <janneke@gnu.org> and
     Reinhold Kainhofer <reinhold@kainhofer.com>
index d2950ed0cdfd372cc2ef8d657dbed3fb9555bf1a..785be9ef6f4ee1e1ba84e1db581facab63aef0d8 100644 (file)
@@ -6,6 +6,8 @@ endef
 
 $(foreach a, $(MODULE_LIBS), $(eval $(call MODULE_LIB_template,$(a))))
 
-$(EXECUTABLE): $(outdir)/config.hh $(O_FILES) $(outdir)/version.hh $(MODULE_LIBS:%=%/$(outdir)/library.a)
+$(O_FILES): $(outdir)/config.hh
+
+$(EXECUTABLE): $(O_FILES) $(outdir)/version.hh $(MODULE_LIBS:%=%/$(outdir)/library.a)
        $(foreach a, $(MODULE_LIBS), $(MAKE) -C $(a) && ) true
        $(LD) -o $@ $(O_FILES) $(LOADLIBES) $(ALL_LDFLAGS)
index b0fc521e931334a8f4c25867658fe183df7c4b7c..fb75166e1ba61c35d0b1ad7e51237df30567bcfb 100644 (file)
@@ -1,9 +1,7 @@
-top-build-dir = $(shell cd $(depth) && pwd)
-build-dir = $(shell cd . && pwd)
-tree-dir = $(subst $(top-build-dir),,$(build-dir))
-
-absdir = $(shell cd $(1) ; pwd)
+top-build-dir := $(realpath $(depth) )
+build-dir := $(realpath  . )
 
+tree-dir = $(subst $(top-build-dir),,$(build-dir))
 
 ifneq ($(configure-srcdir),.)
 srcdir-build = 1
@@ -15,7 +13,7 @@ else
 src-depth = $(configure-srcdir)
 endif
 
-top-src-dir := $(shell cd $(src-depth); pwd)
+top-src-dir := $(realpath $(src-depth))
 
 ifndef srcdir-build
 src-dir = .
@@ -46,10 +44,6 @@ DEPTH = $(depth)/$(package-depth)
 INSTALLPY=$(buildscript-dir)/install -c
 INSTALL=$(INSTALLPY)
 
-group-dir = $(shell cd $(DEPTH);pwd)/..
-patch-dir = $(group-dir)/patches
-rpm-sources = $(release-dir)
-rpm-build = $(group-dir)/RedHat/BUILD
 package-icon = $(outdir)/$(package)-icon.xpm
 
 ifneq ($(strip $(MY_PATCH_LEVEL)),)
index 6c176bac5e7b0995cf33ee66ed452cb4e2bc802a..9e2f042128d0fd8a6d00ae6a6698d7f7b14fb2af 100644 (file)
@@ -23,6 +23,7 @@ endif
 
 ifeq ($(strip $(CROSS)),no)
 $(outdir)/%.1: $(outdir)/% $(buildscript-dir)/help2man
+       echo $(buildscript-dir)/help2man
        $(HELP2MAN_COMMAND)
 else
 # When cross building, some manpages will not build because the
index 942c4f01df369ce397b4fa02d302b253bba66a89..18b1066e2b91542e4c6feb1ce0a879de19952c4a 100644 (file)
@@ -1,5 +1,7 @@
 
-$(LIBRARY): $(outdir)/config.hh $(O_FILES)
+$(O_FILES): $(outdir)/config.hh
+
+$(LIBRARY): $(O_FILES)
        $(AR) $(ARFLAGS) $@ $(O_FILES)
 # thanks to Nelson Beebe for this trick.
        $(RANLIB) $@ || $(AR) ts $@ || true
index 5be005a1985dc7e998a0d85df79b40c48f4784fe..1db797468fbcd034afc444970f5de8386d9ac406 100644 (file)
@@ -23,7 +23,9 @@ $(outdir)/%.pfb: %.mf $(outdir)/mf2pt1.mem $(outdir)/%.log
        && ( cd $$TMP \
                && ln -s ../mf2pt1.mem . \
                && ln -s ../../mf2pt1.mp . \
-               && MFINPUTS=$(abs-src-dir):..:: $(buildscript-dir)/mf2pt1 $(MF2PT1_OPTIONS) $< $(METAFONT_QUIET)) \
+               && MFINPUTS=$(abs-src-dir):..:: \
+                  FONTFORGE=$(FONTFORGE) \
+                  $(buildscript-dir)/mf2pt1 $(MF2PT1_OPTIONS) $< $(METAFONT_QUIET)) \
        && mv $$TMP/*pfb $(outdir); \
        rm -rf $$TMP
 
index 73f35a53ed68cd0490ccaa367b5f58fe83739492..1e50a183f53e912a9edcb64764177b8c9f8980e9 100644 (file)
@@ -34,5 +34,6 @@ $(foreach f, $(shell test -f $(1) && sed -ne "/^[[:space:]]*input[[:space:]]/s/^
 )
 
 # Find dependencies for the target $@, based on the metafont source file $<,
-# and write the dependencies to a .dep file.
-DO_MF_DEP = ( echo ./$@: $(call scan-mf,$<) > $(basename $@).dep ) &&
+# and write the dependencies to a .dep file. We cannot strip the extension of $@,
+# because we have multiple rules generating .dep files.
+DO_MF_DEP = ( echo ./$@: $(call scan-mf,$<) > $@.dep ) &&
index 8a0dd76053f51e8a7ef98f4e9b289a7e24c45218..0fcedbeafdae112d7348d10615e687bb075f6702 100644 (file)
@@ -9,7 +9,7 @@ XGETTEXT_OPTIONS = \
        --package-name=$(package) \
        --package-version=$(VERSION)
 
-sed-header = \# Translation of LilyPond\n\# Copyright \(C\) 1998--2012 Han-Wen Nienhuys, Jan Nieuwenhuizen.\n\# This file is distributed under the same license as the LilyPond package.
+sed-header = \# Translation of LilyPond\n\# Copyright \(C\) 1998--2014 Han-Wen Nienhuys, Jan Nieuwenhuizen.\n\# This file is distributed under the same license as the LilyPond package.
 sed-content = "Content-Type: text\/plain; charset=UTF-8\\n"
 
 ####
index 62b2db26d2c21453af070a1114333cc774438d72..3c80a08de486fef456990af8e6e8528a74880429 100644 (file)
@@ -1,4 +1,5 @@
 
+$(O_FILES): $(outdir)/config.hh
 
-$(SHARED_LIBRARY): $(outdir)/config.hh $(LO_FILES)
+$(SHARED_LIBRARY): $(LO_FILES)
        $(LD) $(SHARED_FLAGS) -o $@ $(LO_FILES) $(ALL_LDFLAGS)
index d733dbbe69c10920ec1f094f12e160892b8cabab..e10e83c7d8fbdee9b4bc110de4d961d7bdd9caf6 100644 (file)
@@ -6,6 +6,6 @@ endef
 
 $(foreach a, $(MODULE_LIBS), $(eval $(call MODULE_LIB_template,$(a))))
 
-$(TEST_EXECUTABLE): $(outdir)/config.hh $(TEST_O_FILES) $(TEST_MODULE_LIBS:%=%/$(outdir)/library.a)
+$(TEST_EXECUTABLE): $(TEST_O_FILES) $(TEST_MODULE_LIBS:%=%/$(outdir)/library.a)
        $(foreach a, $(TEST_MODULE_LIBS), $(MAKE) -C $(a) && ) true
        $(LD) -o $@ $(TEST_O_FILES) $(TEST_LOADLIBES) $(ALL_LDFLAGS)
index 015028fc9bdc51207266db1bcbf4c92b8ac9e117..c822c43f016863c1292acbe3e08b09c3b022a5bf 100644 (file)
@@ -1,7 +1,5 @@
 " LilyPond filetype plugin
 " Language:     LilyPond (ft=ly)
-" Maintainer:   Heikki Junes <hjunes@cc.hut.fi>
-" Last Change:  2010 Jul 26
 "
 " Installed As:        vim/ftplugin/lilypond.vim
 " Uses Generated File: vim/syntax/lilypond-words.vim
@@ -25,8 +23,8 @@ map <buffer> <F4> :w<Return>:se makeprg=lilypond\ \"%<\"<Return>:make<Return>:!t
 " <F5>  save & make
 map <buffer> <F5> :w<Return>:se makeprg=lilypond\ \"%<\"<Return>:make<Return>
 "
-" <F6>  view ps with ghostview
-map <buffer> <F6> :!gv --watch "%<.ps" &<Return>
+" <F6>  view pdf with ghostview
+map <buffer> <F6> :!gv --watch "%<.pdf" &<Return>
 "
 " <F7>  prev error
 map <buffer> <F7> :cp<Return>